@somewhere-tech/cli 0.29.1 → 0.30.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.
Files changed (45) hide show
  1. package/dist/commands/auth.js +50 -4
  2. package/dist/commands/auth.js.map +1 -1
  3. package/dist/commands/browser.js +115 -16
  4. package/dist/commands/browser.js.map +1 -1
  5. package/dist/commands/check.js +7 -0
  6. package/dist/commands/check.js.map +1 -1
  7. package/dist/commands/deploy.js +82 -6
  8. package/dist/commands/deploy.js.map +1 -1
  9. package/dist/commands/dev.js +64 -7
  10. package/dist/commands/dev.js.map +1 -1
  11. package/dist/commands/docs.js +139 -7
  12. package/dist/commands/docs.js.map +1 -1
  13. package/dist/commands/errors.js +29 -6
  14. package/dist/commands/errors.js.map +1 -1
  15. package/dist/commands/status.js +89 -4
  16. package/dist/commands/status.js.map +1 -1
  17. package/dist/lib/client.js +59 -4
  18. package/dist/lib/client.js.map +1 -1
  19. package/dist/lib/config.js +18 -0
  20. package/dist/lib/config.js.map +1 -1
  21. package/dist/lib/files.js +57 -6
  22. package/dist/lib/files.js.map +1 -1
  23. package/dist/lib/output.js +4 -2
  24. package/dist/lib/output.js.map +1 -1
  25. package/dist/lib/publish-surface.js +94 -0
  26. package/dist/lib/publish-surface.js.map +1 -0
  27. package/dist/local/browser-run.js +321 -0
  28. package/dist/local/browser-run.js.map +1 -0
  29. package/dist/local/chrome.js +320 -0
  30. package/dist/local/chrome.js.map +1 -0
  31. package/dist/local/compiler.js +67 -12
  32. package/dist/local/compiler.js.map +1 -1
  33. package/dist/local/runtime.js +72 -2
  34. package/dist/local/runtime.js.map +1 -1
  35. package/dist/local/telemetry-filter.js +120 -0
  36. package/dist/local/telemetry-filter.js.map +1 -0
  37. package/npm-shrinkwrap.json +2 -2
  38. package/package.json +2 -2
  39. package/runtime/VENDOR.json +4 -3
  40. package/runtime/browser-probes.mjs +6 -0
  41. package/runtime/compiler/VENDOR.json +40 -3
  42. package/runtime/compiler/compile-core.cjs +18 -0
  43. package/runtime/compiler/typed-functions.cjs +31 -1
  44. package/runtime/platform-context.mjs +241 -23
  45. package/runtime/sw-init.mjs +1 -1
@@ -21,9 +21,11 @@ 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';
28
+ import { installTelemetryFilter } from './telemetry-filter.js';
27
29
  function packageRoot() {
28
30
  // dist/local/runtime.js → package root is two levels up.
29
31
  return join(dirname(fileURLToPath(import.meta.url)), '..', '..');
@@ -33,11 +35,37 @@ let contextModule = null;
33
35
  export async function loadVendoredRuntime() {
34
36
  if (contextModule)
35
37
  return contextModule;
38
+ // The vendored runtime instruments itself for the platform's telemetry sink,
39
+ // which does not exist on this machine — so its output would land in the
40
+ // developer's terminal instead. Filter it here, at the one place the runtime
41
+ // enters the process (tsk_eef0a0ef).
42
+ installTelemetryFilter();
36
43
  const root = packageRoot();
37
44
  await import(pathToFileURL(join(root, 'runtime', 'sw-init.mjs')).href);
38
45
  contextModule = (await import(pathToFileURL(join(root, 'runtime', 'platform-context.mjs')).href));
39
46
  return contextModule;
40
47
  }
48
+ /**
49
+ * One row of GET /db/scopes. `intent` is what the platform PROVED about the
50
+ * table — user-owned, shared, server-only, or membership-joined — and it is
51
+ * what the structured query API (`sw.db.from` and friends) asks for before it
52
+ * will compose any SQL. Reading only `owner_column` and dropping the intent is
53
+ * why a `shared()` table came back locally as "this table has no declared
54
+ * intent" while working perfectly on the same deployed project
55
+ * (tsk_a21bc829).
56
+ */
57
+ /**
58
+ * Env values the platform provides for a project, resolved for a local run.
59
+ *
60
+ * Anything named here is NOT the developer's to supply, so it must never be
61
+ * reported as a value they forgot. Keep this to keys the platform genuinely
62
+ * writes on their behalf — a key the developer owns belongs in their .env, and
63
+ * silently inventing a value for one would be worse than the warning.
64
+ */
65
+ export function platformProvidedEnv(ctx) {
66
+ const appUrl = ctx.localOrigin ?? fallbackProjectServingUrl({ subdomain: ctx.subdomain ?? null });
67
+ return appUrl ? { APP_URL: appUrl } : {};
68
+ }
41
69
  /** Walk the project dir and return every function-routable source file. */
42
70
  export function collectFunctionFiles(cwd) {
43
71
  const out = [];
@@ -68,7 +96,7 @@ export function collectFunctionFiles(cwd) {
68
96
  * Fetch everything the runtime needs from the platform (project info, env
69
97
  * key list, table scopes), merge local env values, and compile routes.
70
98
  */
71
- export async function prepareLocalProject(client, token, projectId, cwd) {
99
+ export async function prepareLocalProject(client, token, projectId, cwd, opts = {}) {
72
100
  const [project, envResult, scopesResult] = await Promise.all([
73
101
  client.call('GET', `/projects/${encodeURIComponent(projectId)}`),
74
102
  client.call('GET', '/env', undefined, {
@@ -91,10 +119,35 @@ export async function prepareLocalProject(client, token, projectId, cwd) {
91
119
  if (!(key in values))
92
120
  values[key] = value;
93
121
  }
122
+ // Keys the PLATFORM sets, not the developer. APP_URL is written by deploy
123
+ // and holds wherever the app is being served; the developer never authored
124
+ // it, so reporting it back as one of THEIR missing values sent a first-time
125
+ // user off to write a .env entry for a variable that is not theirs, and
126
+ // devalued every real warning beside it (tsk_6a2a09bc5d).
127
+ //
128
+ // Locally the answer is knowable: the app is being served right here. Fill it
129
+ // with the local origin when there is one, and otherwise with the project's
130
+ // public URL — which is what the platform fills it with, and what run_code
131
+ // already does for the same key.
132
+ for (const [key, value] of Object.entries(platformProvidedEnv({ localOrigin: opts.localOrigin, subdomain: project.subdomain }))) {
133
+ if (remoteKeys.includes(key) && !(key in values))
134
+ values[key] = value;
135
+ }
94
136
  const missingEnvKeys = remoteKeys.filter((k) => !(k in values));
137
+ // The scope bake, mirroring what deploy bakes into a function bundle. Two
138
+ // maps, and the runtime treats a disagreement between them as a bad bundle:
139
+ // PROJECT_SCOPES carries an owner column ONLY for a user-owned table, and
140
+ // every entry in it must have a matching `scoped` intent.
95
141
  const scopes = {};
142
+ const intents = {};
96
143
  for (const s of scopesResult.scopes ?? []) {
97
- scopes[s.table.toLowerCase()] = s.owner_column;
144
+ const table = s.table.toLowerCase();
145
+ const intent = s.intent ?? (s.owner_column ? 'scoped' : undefined);
146
+ if (!intent)
147
+ continue;
148
+ intents[table] = intent;
149
+ if (intent === 'scoped' && s.owner_column)
150
+ scopes[table] = s.owner_column;
98
151
  }
99
152
  // Mirror of the deploy pipeline's bindings (buildFunctionBundle), minus
100
153
  // PROJECT_DB — its absence selects the runtime's REST db path, which is
@@ -108,6 +161,17 @@ export async function prepareLocalProject(client, token, projectId, cwd) {
108
161
  PROJECT_SCOPES: JSON.stringify(scopes),
109
162
  PROJECT_ENV: 'dev',
110
163
  };
164
+ // Baked only when there is something to say, exactly like the deploy bundle:
165
+ // an absent binding is the runtime's own "nothing declared" default, and
166
+ // baking an empty map instead would be a different statement.
167
+ if (Object.keys(intents).length > 0) {
168
+ bindings.PROJECT_TABLE_INTENTS = JSON.stringify(intents);
169
+ }
170
+ // Who owns a row on a signed-out request. Baked only for 'visitor', matching
171
+ // deploy — an absent binding reads as 'authenticated'.
172
+ if (scopesResult.owner_identity_mode === 'visitor') {
173
+ bindings.PROJECT_OWNER_IDENTITY_MODE = 'visitor';
174
+ }
111
175
  const files = collectFunctionFiles(cwd);
112
176
  const routes = compileRoutes(files);
113
177
  return {
@@ -118,6 +182,12 @@ export async function prepareLocalProject(client, token, projectId, cwd) {
118
182
  missingEnvKeys,
119
183
  localEnvKeys: Object.keys(values),
120
184
  routes,
185
+ localDevDbAllowed: typeof project.local_dev_db_allowed === 'boolean'
186
+ ? project.local_dev_db_allowed
187
+ : null,
188
+ localDevDbPlans: Array.isArray(project.local_dev_db_required_plans)
189
+ ? project.local_dev_db_required_plans.filter((p) => typeof p === 'string')
190
+ : [],
121
191
  };
122
192
  }
123
193
  /** 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":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Keep the platform's own telemetry out of the developer's terminal
3
+ * (tsk_eef0a0ef).
4
+ *
5
+ * `somewhere dev` runs the DEPLOYED function runtime, vendored verbatim. That
6
+ * runtime instruments itself for the platform's telemetry sink: it writes a
7
+ * `SW_QUERY` line per database call, a `SW_DB_*` timing blob when a call is
8
+ * slow or first-touch, and a warning when its background flush of query
9
+ * observations is refused. In the deployed worker those lines go to the
10
+ * platform's log pipeline. Locally there is no pipeline — they land in the
11
+ * developer's terminal, next to their own console.log:
12
+ *
13
+ * [SW_QUERY_OBSERVATIONS] deferred flush failed: HTTP 403
14
+ * [SW_DB_FIRST_TOUCH] {"event":"SW_DB_FIRST_TOUCH","execution_path":"rest",
15
+ * "database_region":"WNAM","edge_region":null,…}
16
+ *
17
+ * Two things wrong with that, and this module fixes both without touching the
18
+ * vendored file (it is hash-guarded; a hand-edit is a failing build, and a
19
+ * local fork of the runtime is the divergence the whole loop exists to remove).
20
+ *
21
+ * 1. THE 403 IS NOT THE DEVELOPER'S. The observation channel is ours, it is
22
+ * entitlement-gated, and a plan without the entitlement is refused by
23
+ * design. Nothing in the app is wrong and nothing the developer can do
24
+ * changes it — but an agent reading the terminal treats a repeated
25
+ * "failed: HTTP 403" as a symptom of the code it just wrote.
26
+ * 2. IT LEAKS OUR PLUMBING. `execution_path`, `database_region`, `edge_region`,
27
+ * "activation, placement, transport, queueing, binding" — internal database
28
+ * mechanics, rendered as raw JSON into a customer's terminal.
29
+ *
30
+ * WHAT IS NOT SUPPRESSED: anything the developer's own code prints, every
31
+ * error the runtime raises, and every failure of a call they made. Only the
32
+ * background telemetry channel is quiet, and only by default —
33
+ * `SOMEWHERE_DEV_TELEMETRY=1` prints every line through untouched, so the
34
+ * channel stays inspectable when we are the ones debugging it.
35
+ */
36
+ /** Set this to any non-empty value other than `0`/`false` to see the raw lines. */
37
+ export const TELEMETRY_ENV = 'SOMEWHERE_DEV_TELEMETRY';
38
+ export function telemetryVisible(env = process.env) {
39
+ const raw = env[TELEMETRY_ENV];
40
+ if (raw === undefined)
41
+ return false;
42
+ const value = raw.trim().toLowerCase();
43
+ return value !== '' && value !== '0' && value !== 'false' && value !== 'no';
44
+ }
45
+ /**
46
+ * Is this console call the vendored runtime reporting to the platform, rather
47
+ * than the app reporting to its developer?
48
+ *
49
+ * Matched by SHAPE, never by an enumerated list of event names — a list goes
50
+ * stale on the next re-vendor and the leak comes back silently. The runtime
51
+ * emits exactly three shapes, and each is self-identifying:
52
+ *
53
+ * a. `[<EVENT>] <json>` where the JSON's own `event` field equals <EVENT>
54
+ * and starts with `SW_`. That pairing is what makes it ours; a developer
55
+ * logging a string that merely begins with `[SW_` does not produce it.
56
+ * b. `[SW_QUERY_OBSERVATIONS] …` — the background flush channel, whose only
57
+ * output is the failure of a request the developer did not make.
58
+ * c. a bare JSON object whose `event` starts with `SW_` (the per-query
59
+ * `SW_QUERY` line, emitted with no prefix at all).
60
+ */
61
+ export function isPlatformTelemetry(args) {
62
+ if (args.length === 0)
63
+ return false;
64
+ const first = args[0];
65
+ if (typeof first !== 'string')
66
+ return false;
67
+ const line = first.trimStart();
68
+ // (b) the observation channel — its own name is the whole signal.
69
+ if (line.startsWith('[SW_QUERY_OBSERVATIONS]'))
70
+ return true;
71
+ // (a) `[EVENT] {json}` where the JSON agrees it is that event.
72
+ const prefixed = /^\[(SW_[A-Z0-9_]+)\]\s*(\{[\s\S]*)$/.exec(line);
73
+ if (prefixed)
74
+ return eventNameOf(prefixed[2]) === prefixed[1];
75
+ // (c) a bare telemetry object.
76
+ if (line.startsWith('{')) {
77
+ const event = eventNameOf(line);
78
+ return event !== null && event.startsWith('SW_');
79
+ }
80
+ return false;
81
+ }
82
+ function eventNameOf(json) {
83
+ try {
84
+ const parsed = JSON.parse(json);
85
+ if (!parsed || typeof parsed !== 'object')
86
+ return null;
87
+ const event = parsed.event;
88
+ return typeof event === 'string' ? event : null;
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ let installed = false;
95
+ /**
96
+ * Filter the platform's telemetry out of console.log / warn / error for the
97
+ * rest of this process. Idempotent, and a no-op when the developer asked to
98
+ * see it. Returns a restore function — the tests use it; the CLI does not,
99
+ * because the local loop owns the process for its whole life.
100
+ */
101
+ export function installTelemetryFilter(env = process.env) {
102
+ if (installed || telemetryVisible(env))
103
+ return () => { };
104
+ installed = true;
105
+ const methods = ['log', 'warn', 'error'];
106
+ const original = methods.map((m) => [m, console[m]]);
107
+ for (const [method, fn] of original) {
108
+ console[method] = (...args) => {
109
+ if (isPlatformTelemetry(args))
110
+ return;
111
+ fn(...args);
112
+ };
113
+ }
114
+ return () => {
115
+ for (const [method, fn] of original)
116
+ console[method] = fn;
117
+ installed = false;
118
+ };
119
+ }
120
+ //# sourceMappingURL=telemetry-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-filter.js","sourceRoot":"","sources":["../../src/local/telemetry-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEvD,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAE/B,kEAAkE;IAClE,IAAI,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5D,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,QAAQ;QAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9D,+BAA+B;IAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvD,MAAM,KAAK,GAAI,MAA8B,CAAC,KAAK,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACzE,IAAI,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACxD,SAAS,GAAG,IAAI,CAAC;IACjB,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAU,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACvC,IAAI,mBAAmB,CAAC,IAAI,CAAC;gBAAE,OAAO;YACtC,EAAE,CAAC,GAAI,IAAW,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC1D,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@somewhere-tech/cli",
3
- "version": "0.29.1",
3
+ "version": "0.30.1",
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.1",
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.1",
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": {
@@ -17,11 +17,48 @@
17
17
  "react19": {
18
18
  "react": "19.2.7",
19
19
  "react-dom": "19.2.7"
20
+ },
21
+ "baked": {
22
+ "autoprefixer": "10.4.20",
23
+ "buffer": "6.0.3",
24
+ "crypto-browserify": "3.12.1",
25
+ "esbuild": "0.24.0",
26
+ "events": "3.3.0",
27
+ "path-browserify": "1.0.1",
28
+ "postcss": "8.4.47",
29
+ "process": "0.11.10",
30
+ "semver": "7.8.2",
31
+ "stream-browserify": "3.0.0",
32
+ "tailwindcss": "3.4.14",
33
+ "typescript": "5.6.3",
34
+ "util": "0.12.5",
35
+ "react": "18.3.1",
36
+ "react-dom": "18.3.1",
37
+ "react-router-dom": "6.30.4",
38
+ "@tanstack/react-query": "5.101.0",
39
+ "zustand": "5.0.14",
40
+ "immer": "10.2.0",
41
+ "react-hook-form": "7.77.0",
42
+ "@hookform/resolvers": "3.10.0",
43
+ "zod": "3.25.76",
44
+ "axios": "1.17.0",
45
+ "date-fns": "3.6.0",
46
+ "dayjs": "1.11.21",
47
+ "lodash": "4.18.1",
48
+ "lodash-es": "4.18.1",
49
+ "uuid": "11.1.1",
50
+ "clsx": "2.1.1",
51
+ "tailwind-merge": "2.6.1",
52
+ "class-variance-authority": "0.7.1",
53
+ "lucide-react": "0.468.0",
54
+ "framer-motion": "11.18.2",
55
+ "recharts": "2.15.4",
56
+ "sonner": "1.7.4"
20
57
  }
21
58
  },
22
59
  "files": {
23
- "compile-core.cjs": "96468eac244fc2f176b1222babb15391d104710e19a6ac3a8ca9f761e8bfc54c",
60
+ "compile-core.cjs": "06a7c02dacc5fc41ab602ec60eac14d988307b8a7019c62b49be72fafe664f65",
24
61
  "graph-contract.cjs": "aaeebc34f486ee5f639444de5757accfc283de641e631908ccd8d8c688bfb5c0",
25
- "typed-functions.cjs": "3e96aff7daad4ccbb67907f79e7cbac42cef2397a18431776495c377b604ab8a"
62
+ "typed-functions.cjs": "5c0b499015dcdf755ca72dab04a80afce0891e782f835547592faec802c63be6"
26
63
  }
27
64
  }
@@ -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,