@somewhere-tech/cli 0.29.1 → 0.30.0

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.
@@ -21,6 +21,7 @@ import { readdirSync } from 'node:fs';
21
21
  import { dirname, join, relative } from 'node:path';
22
22
  import { fileURLToPath, pathToFileURL } from 'node:url';
23
23
  import { IGNORE } from '../lib/files.js';
24
+ import { fallbackProjectServingUrl } from '../lib/project-urls.js';
24
25
  import { compileRoutes, matchRoute } from './router.js';
25
26
  import { entryUrl } from './loader.js';
26
27
  import { loadLocalEnv } from './envfile.js';
@@ -38,6 +39,27 @@ export async function loadVendoredRuntime() {
38
39
  contextModule = (await import(pathToFileURL(join(root, 'runtime', 'platform-context.mjs')).href));
39
40
  return contextModule;
40
41
  }
42
+ /**
43
+ * One row of GET /db/scopes. `intent` is what the platform PROVED about the
44
+ * table — user-owned, shared, server-only, or membership-joined — and it is
45
+ * what the structured query API (`sw.db.from` and friends) asks for before it
46
+ * will compose any SQL. Reading only `owner_column` and dropping the intent is
47
+ * why a `shared()` table came back locally as "this table has no declared
48
+ * intent" while working perfectly on the same deployed project
49
+ * (tsk_a21bc829).
50
+ */
51
+ /**
52
+ * Env values the platform provides for a project, resolved for a local run.
53
+ *
54
+ * Anything named here is NOT the developer's to supply, so it must never be
55
+ * reported as a value they forgot. Keep this to keys the platform genuinely
56
+ * writes on their behalf — a key the developer owns belongs in their .env, and
57
+ * silently inventing a value for one would be worse than the warning.
58
+ */
59
+ export function platformProvidedEnv(ctx) {
60
+ const appUrl = ctx.localOrigin ?? fallbackProjectServingUrl({ subdomain: ctx.subdomain ?? null });
61
+ return appUrl ? { APP_URL: appUrl } : {};
62
+ }
41
63
  /** Walk the project dir and return every function-routable source file. */
42
64
  export function collectFunctionFiles(cwd) {
43
65
  const out = [];
@@ -68,7 +90,7 @@ export function collectFunctionFiles(cwd) {
68
90
  * Fetch everything the runtime needs from the platform (project info, env
69
91
  * key list, table scopes), merge local env values, and compile routes.
70
92
  */
71
- export async function prepareLocalProject(client, token, projectId, cwd) {
93
+ export async function prepareLocalProject(client, token, projectId, cwd, opts = {}) {
72
94
  const [project, envResult, scopesResult] = await Promise.all([
73
95
  client.call('GET', `/projects/${encodeURIComponent(projectId)}`),
74
96
  client.call('GET', '/env', undefined, {
@@ -91,10 +113,35 @@ export async function prepareLocalProject(client, token, projectId, cwd) {
91
113
  if (!(key in values))
92
114
  values[key] = value;
93
115
  }
116
+ // Keys the PLATFORM sets, not the developer. APP_URL is written by deploy
117
+ // and holds wherever the app is being served; the developer never authored
118
+ // it, so reporting it back as one of THEIR missing values sent a first-time
119
+ // user off to write a .env entry for a variable that is not theirs, and
120
+ // devalued every real warning beside it (tsk_6a2a09bc5d).
121
+ //
122
+ // Locally the answer is knowable: the app is being served right here. Fill it
123
+ // with the local origin when there is one, and otherwise with the project's
124
+ // public URL — which is what the platform fills it with, and what run_code
125
+ // already does for the same key.
126
+ for (const [key, value] of Object.entries(platformProvidedEnv({ localOrigin: opts.localOrigin, subdomain: project.subdomain }))) {
127
+ if (remoteKeys.includes(key) && !(key in values))
128
+ values[key] = value;
129
+ }
94
130
  const missingEnvKeys = remoteKeys.filter((k) => !(k in values));
131
+ // The scope bake, mirroring what deploy bakes into a function bundle. Two
132
+ // maps, and the runtime treats a disagreement between them as a bad bundle:
133
+ // PROJECT_SCOPES carries an owner column ONLY for a user-owned table, and
134
+ // every entry in it must have a matching `scoped` intent.
95
135
  const scopes = {};
136
+ const intents = {};
96
137
  for (const s of scopesResult.scopes ?? []) {
97
- scopes[s.table.toLowerCase()] = s.owner_column;
138
+ const table = s.table.toLowerCase();
139
+ const intent = s.intent ?? (s.owner_column ? 'scoped' : undefined);
140
+ if (!intent)
141
+ continue;
142
+ intents[table] = intent;
143
+ if (intent === 'scoped' && s.owner_column)
144
+ scopes[table] = s.owner_column;
98
145
  }
99
146
  // Mirror of the deploy pipeline's bindings (buildFunctionBundle), minus
100
147
  // PROJECT_DB — its absence selects the runtime's REST db path, which is
@@ -108,6 +155,17 @@ export async function prepareLocalProject(client, token, projectId, cwd) {
108
155
  PROJECT_SCOPES: JSON.stringify(scopes),
109
156
  PROJECT_ENV: 'dev',
110
157
  };
158
+ // Baked only when there is something to say, exactly like the deploy bundle:
159
+ // an absent binding is the runtime's own "nothing declared" default, and
160
+ // baking an empty map instead would be a different statement.
161
+ if (Object.keys(intents).length > 0) {
162
+ bindings.PROJECT_TABLE_INTENTS = JSON.stringify(intents);
163
+ }
164
+ // Who owns a row on a signed-out request. Baked only for 'visitor', matching
165
+ // deploy — an absent binding reads as 'authenticated'.
166
+ if (scopesResult.owner_identity_mode === 'visitor') {
167
+ bindings.PROJECT_OWNER_IDENTITY_MODE = 'visitor';
168
+ }
111
169
  const files = collectFunctionFiles(cwd);
112
170
  const routes = compileRoutes(files);
113
171
  return {
@@ -118,6 +176,12 @@ export async function prepareLocalProject(client, token, projectId, cwd) {
118
176
  missingEnvKeys,
119
177
  localEnvKeys: Object.keys(values),
120
178
  routes,
179
+ localDevDbAllowed: typeof project.local_dev_db_allowed === 'boolean'
180
+ ? project.local_dev_db_allowed
181
+ : null,
182
+ localDevDbPlans: Array.isArray(project.local_dev_db_required_plans)
183
+ ? project.local_dev_db_required_plans.filter((p) => typeof p === 'string')
184
+ : [],
121
185
  };
122
186
  }
123
187
  /** Re-scan the directory and recompile routes (after add/remove of files). */
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/local/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/local/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAiB5C,SAAS,WAAW;IAClB,yDAAyD;IACzD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,IAAI,aAAa,GAAiC,IAAI,CAAC;AAEvD,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,aAAa,GAAG,CAAC,MAAM,MAAM,CAC3B,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAClE,CAA0B,CAAC;IAC5B,OAAO,aAAa,CAAC;AACvB,CAAC;AA6BD;;;;;;;;GAQG;AACH;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAwD;IAExD,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,yBAAyB,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC;IAClG,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAeD,2EAA2E;AAC3E,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,GAAG,GAA6C,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;QAC3B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAAE,SAAS;YAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS;YACvD,qEAAqE;YACrE,mEAAmE;YACnE,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAChF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiB,EACjB,KAAa,EACb,SAAiB,EACjB,GAAW,EACX,OAAiC,EAAE;IAEnC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,MAAM,CAAC,IAAI,CAMT,KAAK,EACL,aAAa,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAC7C;QACD,MAAM,CAAC,IAAI,CAA6C,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YAChF,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,MAAM;aACH,IAAI,CAAiB,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC/E,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAgB,EAAE,CAAmB,CAAC;KACjE,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC/C,CAAC;IACD,iFAAiF;IACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5C,CAAC;IACD,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,wEAAwE;IACxE,0DAA0D;IAC1D,EAAE;IACF,8EAA8E;IAC9E,4EAA4E;IAC5E,2EAA2E;IAC3E,iCAAiC;IACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACvC,mBAAmB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CACrF,EAAE,CAAC;QACF,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACxE,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAEhE,0EAA0E;IAC1E,4EAA4E;IAC5E,0EAA0E;IAC1E,0DAA0D;IAC1D,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QACxB,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;IAC5E,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,QAAQ,GAA4B;QACxC,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,MAAM,EAAE,8EAA8E;QAC5F,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAChC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACtC,WAAW,EAAE,KAAK;KACnB,CAAC;IACF,6EAA6E;IAC7E,yEAAyE;IACzE,8DAA8D;IAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,6EAA6E;IAC7E,uDAAuD;IACvD,IAAI,YAAY,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACnD,QAAQ,CAAC,2BAA2B,GAAG,SAAS,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG;QACH,QAAQ;QACR,cAAc;QACd,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,MAAM;QACN,iBAAiB,EAAE,OAAO,OAAO,CAAC,oBAAoB,KAAK,SAAS;YAClE,CAAC,CAAC,OAAO,CAAC,oBAAoB;YAC9B,CAAC,CAAC,IAAI;QACR,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;YACjE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YACvF,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,KAAwB;IACpD,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,+EAA+E;AAE/E,SAAS,YAAY,CACnB,MAA8B,EAC9B,WAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,OAAO,IAAI,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE;QAC9B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzE,IAAI,IAAI,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,yEAAyE;oBACrF,OAAO,IAAI,yEAAyE;oBACpF,gDAAgD,CACnD,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,CAAC,MAAM;YACZ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,wBAAwB,CAAC,MAAM,EAAE,IAAI;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;YACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YACpE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAuC,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAE/E,SAAS,SAAS,CAAC,MAAc,EAAE,IAAY,EAAE,OAAe;IAC9D,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;QACvE,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED,qFAAqF;AACrF,SAAS,oBAAoB,CAAC,QAAkB,EAAE,GAAoB;IACpE,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC;IACxC,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,MAAgB,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,OAAiB,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAgB,EAChB,KAAwB;IAExB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,4BAA4B,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC3F,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACH,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAA4B,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,QAAQ,EAAE,SAAS,CACjB,GAAG,EACH,sBAAsB,EACtB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC1F;YACD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,GAAG;SACX,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAE9B,CAAC;IACd,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,MAAM,GAAG,oBAAoB,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YACvG,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;YACvC,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;IAED,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC7D,IAAI,GAAoB,CAAC;IACzB,IAAI,CAAC;QACH,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,uEAAuE;QACvE,GAAG,CAAC,GAAG,GAAG,YAAY,CACpB,IAAI,CAAC,KAAK,CAAE,KAAK,CAAC,QAAQ,CAAC,QAAmB,IAAI,IAAI,CAA2B,EACjF,KAAK,CAAC,cAAc,CACrB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,QAAQ,EAAE,SAAS,CACjB,GAAG,EACH,sBAAsB,EACtB,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3F;YACD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,GAAG;SACX,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,QAAkB,CAAC;QACvB,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yEAAyE;QACzE,2EAA2E;QAC3E,OAAO;YACL,QAAQ,EAAE,SAAS,CACjB,GAAG,EACH,gBAAgB,EAChB,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9E;YACD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,GAAG;SACX,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@somewhere-tech/cli",
3
- "version": "0.29.1",
3
+ "version": "0.30.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@somewhere-tech/cli",
9
- "version": "0.29.1",
9
+ "version": "0.30.0",
10
10
  "bundleDependencies": [
11
11
  "@modelcontextprotocol/sdk",
12
12
  "chokidar",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@somewhere-tech/cli",
3
- "version": "0.29.1",
4
- "description": "CLI for somewhere.tech \u2014 auth, projects, deploy, pull, promote, db, logs, env, MCP bridge.",
3
+ "version": "0.30.0",
4
+ "description": "CLI for somewhere.tech auth, projects, deploy, pull, promote, db, logs, env, MCP bridge.",
5
5
  "keywords": [
6
6
  "somewhere",
7
7
  "somewhere.tech",
@@ -1,7 +1,8 @@
1
1
  {
2
- "commit": "3326a8d8",
2
+ "commit": "1bf981dd",
3
3
  "files": {
4
- "sw-init.mjs": "93dcb96860481b79683879ab0b6f37c7ffdc6f180f6cc956cffff267fba31e0f",
5
- "platform-context.mjs": "97f22ff9f1b367cece1b0248e7724ec747e98aab86a5a74af86681d3405aa3ea"
4
+ "sw-init.mjs": "352ebc523b769736f0ea1da0fa87d259553a35d472e0b779d862e4c85252071c",
5
+ "platform-context.mjs": "fe4dd3bd4fc3619e80d0da8d21df1e7146c416c154d8251d196bf32c007677a5",
6
+ "browser-probes.mjs": "3793cd63cb29e4f2fce3691f6cf41fe3855ef85454e7b55cd55cf086986fc26d"
6
7
  }
7
8
  }
@@ -0,0 +1,6 @@
1
+ // VENDORED from worker/src/utils/browser-test.ts (DOM_OUTLINE_SCRIPT) @ 1bf981dd
2
+ // — the exact runtime deployed functions run against. Do not edit by hand;
3
+ // re-sync with: node scripts/extract-runtime.mjs <monorepo>
4
+ export const MAX_OUTLINE_NODES = 200;
5
+
6
+ export const DOM_OUTLINE_SCRIPT = "(() => {\n const cssPath = (el) => {\n const parts = [];\n let node = el;\n let depth = 0;\n while (node && node.nodeType === 1 && depth < 4 && node.tagName.toLowerCase() !== 'body') {\n let sel = node.tagName.toLowerCase();\n if (node.id) { parts.unshift(sel + '#' + CSS.escape(node.id)); break; }\n const parent = node.parentNode;\n if (parent) {\n const sameTag = Array.from(parent.children).filter((c) => c.tagName === node.tagName);\n if (sameTag.length > 1) sel += ':nth-of-type(' + (sameTag.indexOf(node) + 1) + ')';\n }\n parts.unshift(sel);\n node = node.parentNode;\n depth++;\n }\n return parts.join(' > ');\n };\n const interactive = 'a,button,input,select,textarea,[role=button],[role=link],[role=tab],[onclick],[data-testid]';\n const seen = new Set();\n const outline = [];\n for (const el of Array.from(document.querySelectorAll(interactive))) {\n if (outline.length >= 200) break;\n if (seen.has(el)) continue;\n seen.add(el);\n const testid = el.getAttribute('data-testid') || '';\n const id = el.id || '';\n const name = el.getAttribute('name') || '';\n const aria = el.getAttribute('aria-label') || '';\n const text = ((el.innerText || el.value || el.getAttribute('placeholder') || '') + '').trim().slice(0, 80);\n let selector;\n if (testid) selector = '[data-testid=\"' + testid + '\"]';\n else if (id) selector = '#' + CSS.escape(id);\n else if (name) selector = el.tagName.toLowerCase() + '[name=\"' + name + '\"]';\n else selector = cssPath(el);\n outline.push({ tag: el.tagName.toLowerCase(), id, testid, name, aria, text, selector });\n }\n const testid_map = {};\n for (const el of Array.from(document.querySelectorAll('[data-testid]'))) {\n const t = el.getAttribute('data-testid');\n if (t && !(t in testid_map)) testid_map[t] = '[data-testid=\"' + t + '\"]';\n }\n return { outline, testid_map };\n})()";
@@ -1,5 +1,5 @@
1
1
  {
2
- "commit": "3326a8d8",
2
+ "commit": "1bf981dd",
3
3
  "esbuild": "0.24.0",
4
4
  "toolchain": {
5
5
  "base": {
@@ -20,8 +20,8 @@
20
20
  }
21
21
  },
22
22
  "files": {
23
- "compile-core.cjs": "96468eac244fc2f176b1222babb15391d104710e19a6ac3a8ca9f761e8bfc54c",
23
+ "compile-core.cjs": "06a7c02dacc5fc41ab602ec60eac14d988307b8a7019c62b49be72fafe664f65",
24
24
  "graph-contract.cjs": "aaeebc34f486ee5f639444de5757accfc283de641e631908ccd8d8c688bfb5c0",
25
- "typed-functions.cjs": "3e96aff7daad4ccbb67907f79e7cbac42cef2397a18431776495c377b604ab8a"
25
+ "typed-functions.cjs": "5c0b499015dcdf755ca72dab04a80afce0891e782f835547592faec802c63be6"
26
26
  }
27
27
  }
@@ -465,6 +465,8 @@ const TOOLCHAIN_DEPS = new Set(['react-scripts', 'react-app-rewired', 'craco', '
465
465
  * GRANDFATHER: the full resolvability chain (build root → IMAGE_NODE_MODULES →
466
466
  * REACT19_NODE_MODULES → NODE_POLYFILLS → node: prefix → relative/URL paths)
467
467
  * mirrors exactly what esbuild can resolve, so a working import NEVER warns.
468
+ * Platform-provided specifiers (PLATFORM_MODULE_ROOTS) are exempt on top of
469
+ * that: they are not npm packages, so no resolution chain would ever find them.
468
470
  */
469
471
 
470
472
  /**
@@ -497,6 +499,18 @@ function specRootPkg(spec) {
497
499
  : spec.split('/')[0];
498
500
  }
499
501
 
502
+ /**
503
+ * Root packages the PLATFORM provides — derived from typed-functions'
504
+ * PLATFORM_MODULES, which is also what builds the virtual-module resolver, so
505
+ * this can never drift into a stale hand list.
506
+ *
507
+ * These are not npm packages. Reporting one as "not in your package.json" told
508
+ * a developer that the `somewhere/db` import our own managed-schema docs handed
509
+ * them would fail to load in production, and the remediation it offered —
510
+ * `npm install somewhere` — installs an unrelated package (tsk_53badecfb7).
511
+ */
512
+ const PLATFORM_MODULE_ROOTS = new Set(typedFunctions.PLATFORM_MODULES.map(specRootPkg));
513
+
500
514
  /* ─── Dependency review (PR1, tsk_35befef9 / npm supply-chain) ────────────────
501
515
  * After deps are installed (with --ignore-scripts), walk the customer's RESOLVED
502
516
  * dependency tree and report what actually shipped: package count, lifecycle
@@ -979,6 +993,10 @@ function isBuildConfigFile(filePath) {
979
993
  // (aliases like `@/App` have no npm-style root package).
980
994
  if (isAliased(spec)) continue;
981
995
  const rootPkg = specRootPkg(spec);
996
+ // PROVIDED BY THE PLATFORM (`somewhere/db`, `somewhere:api`, …). Not npm
997
+ // packages, so "add it to your package.json" is wrong advice on code our
998
+ // own docs hand the developer (tsk_53badecfb7).
999
+ if (PLATFORM_MODULE_ROOTS.has(rootPkg)) continue;
982
1000
  // DECLARED in devDependencies. ensureDeps deliberately installs only
983
1001
  // `dependencies` (the build toolchain is the platform's job, not the
984
1002
  // app's), so a devDependency is never resolvable here — but it IS
@@ -6,7 +6,32 @@ const path = require('path');
6
6
 
7
7
  const SENTINEL = 'somewhere:v1';
8
8
  const MODULE_NAME = 'somewhere:api';
9
+ // Managed-schema helper surface, imported by db/schema.ts. That file is DATA
10
+ // the deploy reads statically — never executed, never bundled — so no resolver
11
+ // ever claims this specifier and, to anything that only asks "can esbuild
12
+ // resolve it", it can only ever look like a missing npm package.
13
+ const SCHEMA_MODULE_NAME = 'somewhere/db';
9
14
  const MANIFEST_PATH = '_internal/typed-functions.json';
15
+
16
+ /**
17
+ * PLATFORM_MODULES — the ONE enumeration of module specifiers the PLATFORM
18
+ * provides. These are not npm packages and must never be added to a customer's
19
+ * package.json: `npm install somewhere` installs an unrelated package off the
20
+ * public registry, or fails.
21
+ *
22
+ * Everything that needs to know "is this specifier ours?" reads THIS list, so
23
+ * there is no second hand-maintained copy to drift:
24
+ * - virtualApiPlugin below builds its esbuild onResolve filter from
25
+ * MODULE_NAME, so the resolver and this list cannot disagree;
26
+ * - the compiler's phantom-import scanner (compile-core.cjs) treats the root
27
+ * package of every entry here as provided, which is what stops the CLI
28
+ * telling a developer that our own documented `somewhere/db` import is a
29
+ * missing dependency (tsk_53badecfb7).
30
+ *
31
+ * Matching downstream is on the ROOT package, so `somewhere/<anything>` — every
32
+ * present and future subpath surface — is covered by the `somewhere/db` entry.
33
+ */
34
+ const PLATFORM_MODULES = Object.freeze([MODULE_NAME, SCHEMA_MODULE_NAME]);
10
35
  const AMBIENT_FILE = '__somewhere_typed_functions.d.ts';
11
36
  const CLIENT_FILE = '__somewhere_api.d.ts';
12
37
 
@@ -524,7 +549,10 @@ function virtualApiPlugin(esbuild) {
524
549
  return {
525
550
  name: 'somewhere-typed-api',
526
551
  setup(build) {
527
- build.onResolve({ filter: /^somewhere:api$/ }, () => ({ path: MODULE_NAME, namespace: 'somewhere-typed-api' }));
552
+ // Filter derived from MODULE_NAME so the resolver and PLATFORM_MODULES
553
+ // cannot drift apart.
554
+ const filter = new RegExp(`^${MODULE_NAME.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}$`);
555
+ build.onResolve({ filter }, () => ({ path: MODULE_NAME, namespace: 'somewhere-typed-api' }));
528
556
  build.onLoad({ filter: /.*/, namespace: 'somewhere-typed-api' }, () => ({ contents: RUNTIME_SOURCE, loader: 'js' }));
529
557
  },
530
558
  };
@@ -535,7 +563,9 @@ module.exports = {
535
563
  CLIENT_FILE,
536
564
  MANIFEST_PATH,
537
565
  MODULE_NAME,
566
+ PLATFORM_MODULES,
538
567
  RUNTIME_SOURCE,
568
+ SCHEMA_MODULE_NAME,
539
569
  SENTINEL,
540
570
  analyzeTypedFunctions,
541
571
  buildDeclaration,