@curless/shopify-storefront 0.5.0 → 0.6.2

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=listed-pages.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listed-pages.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/listed-pages.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ // The listed app's merchant-facing pages.
2
+ //
3
+ // These went out wrong once, in the way that is hardest to notice from the
4
+ // code: the server ran the SINGLE-shop status page for an app that has no shop,
5
+ // so the address Shopify opens after an install said "This store is not
6
+ // connected yet · Connect " — an empty shop name, behind a link that answered
7
+ // 400. What is pinned here is therefore what the pages SAY, not that they
8
+ // render: that the connected page names the MERCHANT's store rather than our
9
+ // product, and that it carries the connector address, which is the only thing
10
+ // on it a merchant can act on.
11
+ import { describe, expect, test } from 'vitest';
12
+ import { connectPage, connectedPage, connectorUrl, listedLandingPage, } from '../listed-pages.js';
13
+ const ctx = {
14
+ appUrl: 'https://storefront.curless.ai',
15
+ productName: 'Curless Storefront',
16
+ };
17
+ const snap = (over = {}) => ({
18
+ products: [{ handle: 'a' }, { handle: 'b' }],
19
+ loadedAt: new Date('2026-09-10T12:34:56Z'),
20
+ discounts: [],
21
+ ...over,
22
+ });
23
+ describe('connectorUrl', () => {
24
+ test('is the shop-scoped MCP path under the app URL', () => {
25
+ expect(connectorUrl(ctx, 'curless-demo.myshopify.com')).toBe('https://storefront.curless.ai/s/curless-demo.myshopify.com/mcp');
26
+ });
27
+ test('a trailing slash on the app URL does not double up', () => {
28
+ expect(connectorUrl({ ...ctx, appUrl: 'https://storefront.curless.ai/' }, 'x.myshopify.com')).toBe('https://storefront.curless.ai/s/x.myshopify.com/mcp');
29
+ });
30
+ test('lowercases the shop — the path resolver keys on it', () => {
31
+ expect(connectorUrl(ctx, 'Curless-Demo.MyShopify.com')).toContain('/s/curless-demo.myshopify.com/mcp');
32
+ });
33
+ });
34
+ describe('connectedPage', () => {
35
+ const html = connectedPage(ctx, 'curless-demo.myshopify.com', snap());
36
+ test('names the MERCHANT store, not our product', () => {
37
+ expect(html).toContain('curless-demo.myshopify.com');
38
+ // The bug this replaces: the callback congratulated the merchant on
39
+ // "Curless Storefront is connected" — our own name, on their install.
40
+ expect(html).not.toContain('Curless Storefront is connected');
41
+ });
42
+ test('carries the connector address — the one thing the merchant must copy', () => {
43
+ expect(html).toContain('https://storefront.curless.ai/s/curless-demo.myshopify.com/mcp');
44
+ });
45
+ test('reports the catalogue that was actually read', () => {
46
+ expect(html).toContain('2 products readable');
47
+ expect(html).toContain('2026-09-10 12:34');
48
+ });
49
+ test('a store whose last sync failed is told so, and still gets the address', () => {
50
+ const failed = connectedPage(ctx, 'x.myshopify.com', snap({ lastError: 'HTTP 401' }));
51
+ expect(failed).toContain('HTTP 401');
52
+ expect(failed).toContain('/s/x.myshopify.com/mcp');
53
+ });
54
+ test('a catalogue that has never loaded says nothing about when it synced', () => {
55
+ expect(connectedPage(ctx, 'x.myshopify.com', snap({ products: [], loadedAt: null }))).not.toContain('last synced');
56
+ });
57
+ });
58
+ describe('connectPage', () => {
59
+ test('offers the install for THAT shop', () => {
60
+ expect(connectPage('curless-demo.myshopify.com')).toContain('href="/auth/install?shop=curless-demo.myshopify.com"');
61
+ });
62
+ test('is not the empty-shop page that shipped', () => {
63
+ // The regression, exactly: a button reading "Connect " with nothing after it.
64
+ expect(connectPage('curless-demo.myshopify.com')).not.toContain('Connect </a>');
65
+ });
66
+ test('a shop with markup in it cannot break out of the link or the text', () => {
67
+ const html = connectPage('evil".myshopify.com');
68
+ expect(html).not.toContain('evil".myshopify.com');
69
+ expect(html).toContain('evil&quot;.myshopify.com');
70
+ expect(html).toContain('shop=evil%22.myshopify.com');
71
+ });
72
+ });
73
+ describe('listedLandingPage', () => {
74
+ const html = listedLandingPage(ctx);
75
+ test('says what the app is without naming any merchant', () => {
76
+ expect(html).toContain('Curless Storefront');
77
+ expect(html).not.toContain('myshopify.com');
78
+ });
79
+ test('links the four pages a reviewer looks for', () => {
80
+ for (const href of ['/docs', '/privacy', '/terms', '/security']) {
81
+ expect(html).toContain(`href="${href}"`);
82
+ }
83
+ });
84
+ test('says it is read-only, which is the listing claim', () => {
85
+ expect(html).toContain('read-only');
86
+ });
87
+ });
88
+ //# sourceMappingURL=listed-pages.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listed-pages.test.js","sourceRoot":"","sources":["../../src/__tests__/listed-pages.test.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  // which is exactly why they need tests rather than a careful reading.
4
4
  import { createHmac } from 'node:crypto';
5
5
  import { describe, expect, test, vi } from 'vitest';
6
- import { exchangeCode, installUrl, isShopDomain, makeState, verifyCallbackHmac, verifyState, } from '../oauth.js';
6
+ import { exchangeCode, installUrl, isShopDomain, makeState, refreshAccessToken, verifyCallbackHmac, verifyState, } from '../oauth.js';
7
7
  const CONFIG = {
8
8
  clientId: 'cid',
9
9
  clientSecret: 'shhh',
@@ -108,5 +108,54 @@ describe('code exchange', () => {
108
108
  await expect(exchangeCode(CONFIG, 'bad', f)).rejects.toThrow(/HTTP 400/);
109
109
  await expect(exchangeCode(CONFIG, 'bad', f)).rejects.not.toThrow(/reflected/);
110
110
  });
111
+ test('posts to the SHOP in the config, not to some default', async () => {
112
+ const f = vi.fn(async () => new Response(JSON.stringify({ access_token: 'shpat_x', scope: 'read_products' }), {
113
+ status: 200,
114
+ headers: { 'content-type': 'application/json' },
115
+ }));
116
+ await exchangeCode({ ...CONFIG, shopDomain: 'other.myshopify.com' }, 'code', f);
117
+ expect(vi.mocked(f).mock.calls[0]?.[0]).toBe('https://other.myshopify.com/admin/oauth/access_token');
118
+ });
119
+ });
120
+ // ⚠️ THE LISTED APP HAS NO SHOP OF ITS OWN — its module-level config holds `''`,
121
+ // because the shop is a property of the REQUEST, not of the config. Every call
122
+ // site therefore has to spread the real shop in, and on 2026-09-10 the callback
123
+ // did not: it built `https:///admin/oauth/access_token`, undici answered
124
+ // `fetch failed`, and a real install died looking exactly like a network fault.
125
+ // An hour went into DNS and container egress before anyone looked at the host.
126
+ //
127
+ // These are the tests that would have caught it. Note that NONE of the 27 that
128
+ // existed did: every one of them passed a config with a shop already in it.
129
+ describe('an empty shop is refused out loud, not fetched', () => {
130
+ const NO_SHOP = { ...CONFIG, shopDomain: '' };
131
+ test('exchangeCode throws before it fetches anything', async () => {
132
+ const f = vi.fn();
133
+ await expect(exchangeCode(NO_SHOP, 'code', f)).rejects.toThrow(/no shop to talk to/);
134
+ // The point of failing early: nothing was sent to `https:///…`.
135
+ expect(vi.mocked(f)).not.toHaveBeenCalled();
136
+ });
137
+ test('refreshAccessToken throws before it fetches anything', async () => {
138
+ const f = vi.fn();
139
+ await expect(refreshAccessToken(NO_SHOP, 'rt', f)).rejects.toThrow(/no shop to talk to/);
140
+ expect(vi.mocked(f)).not.toHaveBeenCalled();
141
+ });
142
+ test('installUrl throws rather than returning https:///admin/oauth/authorize', () => {
143
+ expect(() => installUrl(NO_SHOP, 'st.at')).toThrow(/no shop to talk to/);
144
+ });
145
+ test('the error names the empty value, so the log says what is missing', async () => {
146
+ await expect(exchangeCode(NO_SHOP, 'code')).rejects.toThrow(/shopDomain is ""/);
147
+ });
148
+ test('a lookalike host is refused by the same door', async () => {
149
+ const evil = { ...CONFIG, shopDomain: 'shop.myshopify.com.evil.com' };
150
+ await expect(exchangeCode(evil, 'code')).rejects.toThrow(/no shop to talk to/);
151
+ });
152
+ test('spreading the request shop over the listed config is what works', async () => {
153
+ const f = vi.fn(async () => new Response(JSON.stringify({ access_token: 'shpat_x', scope: 'read_products' }), {
154
+ status: 200,
155
+ headers: { 'content-type': 'application/json' },
156
+ }));
157
+ await exchangeCode({ ...NO_SHOP, shopDomain: 'curless-demo.myshopify.com' }, 'code', f);
158
+ expect(vi.mocked(f).mock.calls[0]?.[0]).toBe('https://curless-demo.myshopify.com/admin/oauth/access_token');
159
+ });
111
160
  });
112
161
  //# sourceMappingURL=oauth.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.test.js","sourceRoot":"","sources":["../../src/__tests__/oauth.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.test.js","sourceRoot":"","sources":["../../src/__tests__/oauth.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,22 @@
1
1
  import { describe, expect, test } from 'vitest';
2
2
  import { resolveStorefront } from '../config.js';
3
3
  import { explainNoTenant, multiShopResolver, singleShopResolver } from '../tenant.js';
4
- // The fakes are typed against the reader slices the resolvers declare, so a
5
- // required member added to either store fails HERE, at compile time, instead of
6
- // compiling fine and throwing once the suite runs.
7
- const fakeCatalog = (tag) => ({ tag });
4
+ const fakeCatalog = (tag, opts = {}) => {
5
+ const snap = { products: [], loadedAt: opts.loaded ? new Date() : null };
6
+ return {
7
+ tag,
8
+ get current() {
9
+ return snap;
10
+ },
11
+ refresh: async () => {
12
+ opts.refreshes?.push(tag);
13
+ if (opts.loadTakes)
14
+ await new Promise((r) => setTimeout(r, opts.loadTakes));
15
+ snap.products = [{ handle: 'loaded-by-the-wait' }];
16
+ snap.loadedAt = new Date();
17
+ },
18
+ };
19
+ };
8
20
  const token = (shopDomain = 'rqxbft-fw.myshopify.com') => ({
9
21
  shopDomain,
10
22
  accessToken: 'x',
@@ -19,22 +31,23 @@ const single = (opts) => singleShopResolver({
19
31
  urls: { appUrl: 'https://shopify.curless.ai/moody' },
20
32
  legal: {},
21
33
  }),
22
- catalog: fakeCatalog('single'),
34
+ catalog: fakeCatalog('single', { loaded: true }),
23
35
  tokens: { get: async () => (opts.installed ? token() : null) },
24
36
  });
25
- const multi = (installed) => {
37
+ const multi = (installed, opts = {}) => {
26
38
  const started = [];
39
+ const refreshes = [];
27
40
  const registry = {
28
41
  for: (s) => {
29
42
  started.push(s);
30
- return fakeCatalog(s);
43
+ return fakeCatalog(s, { loaded: !opts.cold, loadTakes: opts.loadTakes, refreshes });
31
44
  },
32
45
  };
33
46
  const tokens = {
34
47
  get: async (s) => (installed.includes(s) ? token(s) : null),
35
48
  };
36
- const resolve = multiShopResolver({ registry, tokens });
37
- return { resolve, started };
49
+ const resolve = multiShopResolver({ registry, tokens, coldStartWaitMs: 50 });
50
+ return { resolve, started, refreshes };
38
51
  };
39
52
  describe('branded deployment', () => {
40
53
  test('a request naming nothing gets the one shop it serves', async () => {
@@ -102,4 +115,54 @@ describe('what the buyer is told', () => {
102
115
  expect(explainNoTenant({ reason: 'not-installed', shop: 'a.myshopify.com' })).toMatch(/has not installed/i);
103
116
  });
104
117
  });
118
+ // ⚠️ THE FIRST QUESTION EVER ASKED OF A SHOP.
119
+ //
120
+ // `registry.for` creates the catalogue and starts its first load; the resolver
121
+ // used to hand that empty catalogue straight to the tool, which answered "the
122
+ // catalog is not loaded yet". Verified in production on 2026-09-10, one minute
123
+ // after a real install on the dev store: ask once, get the error card; ask
124
+ // again, get 15 products. A Shopify reviewer's step 4 is exactly that first ask.
125
+ describe('a catalogue that has never loaded', () => {
126
+ test('is waited for, so the first request answers with products', async () => {
127
+ const { resolve } = multi(['rqxbft-fw.myshopify.com'], { cold: true });
128
+ const r = await resolve('rqxbft-fw.myshopify.com');
129
+ expect(r.ok).toBe(true);
130
+ expect(r.ok && r.tenant.catalog.current.loadedAt).not.toBeNull();
131
+ expect(r.ok && r.tenant.catalog.current.products).toHaveLength(1);
132
+ });
133
+ test('a WARM catalogue is not refreshed on the way past', async () => {
134
+ const { resolve, refreshes } = multi(['rqxbft-fw.myshopify.com']);
135
+ await resolve('rqxbft-fw.myshopify.com');
136
+ expect(refreshes).toEqual([]);
137
+ });
138
+ test('the wait is BOUNDED — a load that hangs still answers', async () => {
139
+ // Nothing between the catalogue and Shopify sets a timeout, so an unbounded
140
+ // await here would hand a buyer's request to whatever Shopify does with it.
141
+ const { resolve } = multi(['rqxbft-fw.myshopify.com'], { cold: true, loadTakes: 5_000 });
142
+ const started = Date.now();
143
+ const r = await resolve('rqxbft-fw.myshopify.com');
144
+ expect(Date.now() - started).toBeLessThan(1_000);
145
+ // Answered anyway, with the empty snapshot — the old behaviour, but only
146
+ // after actually waiting for the load rather than instead of waiting.
147
+ expect(r.ok && r.tenant.catalog.current.loadedAt).toBeNull();
148
+ });
149
+ test('the branded resolver gets the same wait', async () => {
150
+ const refreshes = [];
151
+ const resolve = singleShopResolver({
152
+ store: resolveStorefront({
153
+ id: 'moody',
154
+ server: { name: 'moody', title: 'Moody' },
155
+ shopify: { mode: 'env', shopDomain: 'rqxbft-fw.myshopify.com' },
156
+ urls: { appUrl: 'https://shopify.curless.ai/moody' },
157
+ legal: {},
158
+ }),
159
+ catalog: fakeCatalog('cold', { refreshes }),
160
+ tokens: { get: async () => token() },
161
+ coldStartWaitMs: 50,
162
+ });
163
+ const r = await resolve();
164
+ expect(refreshes).toEqual(['cold']);
165
+ expect(r.ok && r.tenant.catalog.current.loadedAt).not.toBeNull();
166
+ });
167
+ });
105
168
  //# sourceMappingURL=tenant.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.test.js","sourceRoot":"","sources":["../../src/__tests__/tenant.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant.test.js","sourceRoot":"","sources":["../../src/__tests__/tenant.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ import { challengeFor } from './challenge.js';
55
55
  import { resolveStorefront } from './config.js';
56
56
  import { credentialsRejected, needsAuth } from './connection.js';
57
57
  import { docsPage, merchantTermsPage, privacyPage, securityPage, } from './legal.js';
58
+ import { connectPage, connectedPage, escapeHtml, listedLandingPage, } from './listed-pages.js';
58
59
  import { loadStorefrontConfig } from './load-config.js';
59
60
  import { MultiTokenStore, isStorableShop } from './multi-token-store.js';
60
61
  import { exchangeCode, installUrl, isShopDomain, makeState, verifyCallbackHmac, verifyState, } from './oauth.js';
@@ -271,6 +272,10 @@ const brandAsset = (rel) => {
271
272
  const ICON_PNG = brandAsset(STORE.config.server.iconFile);
272
273
  const LOGO_PNG = brandAsset(STORE.config.server.logoFile);
273
274
  const MULTI = STORE.config.shopify.mode === 'oauth-install';
275
+ // What the listed app's own pages say it is. Its `server.title` is OUR product's
276
+ // name — the branded deployments put a merchant's there, which is exactly the
277
+ // confusion the connected page must not repeat.
278
+ const LISTED = { appUrl: APP_URL, productName: MERCHANT_NAME };
274
279
  /**
275
280
  * The shop a request is about.
276
281
  *
@@ -484,6 +489,26 @@ app.get('/img', async (c) => {
484
489
  }
485
490
  });
486
491
  app.get('/healthz', async (c) => {
492
+ // ⚠️ The listed app has no single shop, and answering as if it did made this
493
+ // endpoint report `not-installed` with an empty shop domain forever — a health
494
+ // check that is wrong in precisely the state it exists to detect.
495
+ //
496
+ // What can actually be wrong here is a token that stopped renewing: this is
497
+ // the first deployment whose tokens expire, and a refresh that has been
498
+ // failing shows up as a deadline in the past long before a merchant notices
499
+ // their assistant has gone quiet.
500
+ if (MULTI) {
501
+ const shops = await multiTokens.list();
502
+ const now = Date.now();
503
+ const stale = shops.filter((t) => t.expiresAt !== undefined && Date.parse(t.expiresAt) < now).length;
504
+ return c.json({
505
+ status: stale > 0 ? 'degraded' : 'ok',
506
+ mode: 'listed',
507
+ shops: shops.length,
508
+ staleTokens: stale,
509
+ residentCatalogs: registry.size,
510
+ });
511
+ }
487
512
  const snap = catalog.current;
488
513
  const connected = (await shopifyConfig()) !== null;
489
514
  return c.json({
@@ -537,6 +562,44 @@ app.get('/', async (c) => {
537
562
  <p class="muted">No sign-in, and no payment happens here — checkout is on
538
563
  ${escapeHtml(MERCHANT_NAME)}' own page. <a href="/docs">What this connector can reach</a>.</p>`);
539
564
  }
565
+ // ⚠️ EVERYTHING BELOW ASSUMES ONE SHOP. `catalog`, `shopifyConfig()` and
566
+ // SHOP_DOMAIN are the branded deployment's single tenant. The listed app has
567
+ // no shop of its own, and running that code anyway is what put "Connect " —
568
+ // an empty shop name, behind a link that 400s — on the page a merchant lands
569
+ // on the moment they finish installing.
570
+ //
571
+ // Three states, decided by the shop in the query:
572
+ // • no shop — what this is. Nothing tenant-specific, and no list of
573
+ // who has installed it.
574
+ // • shop, no token — offer the install, and start it outright when the
575
+ // query is Shopify's own (HMAC and all), so a merchant
576
+ // who just clicked Install is not asked to click Connect.
577
+ // • shop + token — connected, and THE ADDRESS THEY NEED: nothing else in
578
+ // the product tells a merchant what to paste into
579
+ // ChatGPT or Claude.
580
+ if (MULTI) {
581
+ const named = (c.req.query('shop') ?? '').trim().toLowerCase();
582
+ if (!named)
583
+ return c.html(listedLandingPage(LISTED));
584
+ // The same allow-list the token store keys on. `shop` decides where the
585
+ // button below sends someone, so a lookalike domain must not reach it.
586
+ if (!isStorableShop(named))
587
+ return c.text('that is not a Shopify store domain', 400);
588
+ if (await multiTokens.get(named)) {
589
+ const cat = registry.for(named);
590
+ // First view after an install: the catalogue was created a moment ago and
591
+ // its boot fetch is still in flight. `refresh()` joins that one rather
592
+ // than starting a second, so this waits for the load instead of telling a
593
+ // merchant with a full store that it has no products.
594
+ if (cat.current.loadedAt === null)
595
+ await cat.refresh();
596
+ return c.html(connectedPage(LISTED, named, cat.current));
597
+ }
598
+ if (CLIENT_SECRET && verifyCallbackHmac(CLIENT_SECRET, new URL(c.req.url).search)) {
599
+ return c.redirect(installUrl({ ...oauth, shopDomain: named }, makeState(CLIENT_SECRET)));
600
+ }
601
+ return c.html(connectPage(named));
602
+ }
540
603
  const snap = catalog.current;
541
604
  const connected = (await shopifyConfig()) !== null;
542
605
  // Shopify sends the merchant HERE after a legacy-flow install, with ?shop=…
@@ -696,7 +759,14 @@ app.get('/auth/callback', async (c) => {
696
759
  if (!code)
697
760
  return c.text('missing code', 400);
698
761
  try {
699
- const { accessToken, scope, refreshToken, expiresAt } = await exchangeCode(oauth, code);
762
+ // ⚠️ THE SHOP COMES FROM THE CALLBACK, NOT FROM THE CONFIG. `oauth` carries
763
+ // the BRANDED deployment's single shop; the listed app's is `''`, because
764
+ // its shop is whoever is installing. Passing `oauth` here built
765
+ // `https:///admin/oauth/access_token` and every install on the listed app
766
+ // died with `fetch failed` — the install route already spreads the shop in,
767
+ // and this one, three hundred lines away, did not. `shopEndpoint` now
768
+ // refuses an empty shop out loud so the next one cannot be silent.
769
+ const { accessToken, scope, refreshToken, expiresAt } = await exchangeCode({ ...oauth, shopDomain: shop }, code);
700
770
  // Per-shop in the listed app, single-file in a branded one. The record is
701
771
  // the same; where it lands is the whole difference between serving one
702
772
  // merchant and serving many.
@@ -717,6 +787,16 @@ app.get('/auth/callback', async (c) => {
717
787
  await tokens.set(record);
718
788
  console.log(`[oauth] installed on ${shop} (scopes: ${scope})`);
719
789
  // The catalog is empty until now; fill it before the merchant looks.
790
+ //
791
+ // ⚠️ THE RIGHT ONE. `catalog` is the branded deployment's single tenant, and
792
+ // in the listed app it belongs to no shop at all — so an install refreshed
793
+ // nothing, and then told the merchant that "Curless Storefront is
794
+ // connected", which is OUR product's name rather than their store's.
795
+ if (MULTI) {
796
+ const cat = registry.for(shop);
797
+ await cat.refresh();
798
+ return c.html(connectedPage(LISTED, shop.toLowerCase(), cat.current));
799
+ }
720
800
  void catalog.refresh();
721
801
  return c.html(`<!doctype html><meta charset="utf-8"><link rel="icon" href="./icon.png"><title>Connected</title>
722
802
  <body style="font-family:system-ui;padding:40px;max-width:32rem">
@@ -750,18 +830,6 @@ app.get('/.well-known/openai-apps-challenge', (c) => {
750
830
  return c.notFound();
751
831
  return c.text(token);
752
832
  });
753
- // Anything interpolated into the page below comes from our own env, but escape
754
- // it anyway: the day one of these becomes merchant-supplied, the page should not
755
- // be the thing that has to be remembered.
756
- const escapeHtml = (s) => s.replace(/[&<>"']/g, (ch) => ch === '&'
757
- ? '&amp;'
758
- : ch === '<'
759
- ? '&lt;'
760
- : ch === '>'
761
- ? '&gt;'
762
- : ch === '"'
763
- ? '&quot;'
764
- : '&#39;');
765
833
  // The MCP Apps card. Declared on the tools AND on their results — a host reads
766
834
  // it from either — and served over resources/read. Version the URI: hosts cache
767
835
  // by it, and a stale card is worse than no card because it looks current.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { CatalogSnapshot } from './catalog.js';
2
+ export type ListedPageContext = {
3
+ /** Public base of the listed app, e.g. https://storefront.curless.ai */
4
+ appUrl: string;
5
+ /** What this connector calls ITSELF — our product, never a merchant. */
6
+ productName: string;
7
+ };
8
+ export declare const escapeHtml: (s: string) => string;
9
+ /** The address the merchant pastes into ChatGPT or Claude. Their shop is in it. */
10
+ export declare const connectorUrl: (ctx: ListedPageContext, shop: string) => string;
11
+ /** No shop is asking — say what this is, and nothing about who has installed it. */
12
+ export declare const listedLandingPage: (ctx: ListedPageContext) => string;
13
+ /** A shop that has not installed yet — the only page here that sends anyone anywhere. */
14
+ export declare const connectPage: (shop: string) => string;
15
+ /**
16
+ * A shop that has installed.
17
+ *
18
+ * ⚠️ The connector URL is the POINT of this page. An install otherwise ends with
19
+ * a merchant on a page congratulating them, holding nothing they can act on —
20
+ * nowhere else in the product does anything tell them what to paste into an
21
+ * assistant.
22
+ */
23
+ export declare const connectedPage: (ctx: ListedPageContext, shop: string, snap: CatalogSnapshot) => string;
24
+ //# sourceMappingURL=listed-pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listed-pages.d.ts","sourceRoot":"","sources":["../src/listed-pages.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,MAWpC,CAAC;AAkBJ,mFAAmF;AACnF,eAAO,MAAM,YAAY,GAAI,KAAK,iBAAiB,EAAE,MAAM,MAAM,KAAG,MACJ,CAAC;AAEjE,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,GAAI,KAAK,iBAAiB,KAAG,MAaxD,CAAC;AAEJ,yFAAyF;AACzF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAQxC,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,iBAAiB,EACtB,MAAM,MAAM,EACZ,MAAM,eAAe,KACpB,MAgBA,CAAC"}
@@ -0,0 +1,65 @@
1
+ // Nothing interpolated below is merchant-supplied today: the shop domain has
2
+ // already passed the *.myshopify.com allow-list by the time it reaches here.
3
+ // Escaped anyway — the day one of these comes from a store's own settings, the
4
+ // page should not be the thing that has to be remembered.
5
+ export const escapeHtml = (s) => s.replace(/[&<>"']/g, (ch) => ch === '&'
6
+ ? '&amp;'
7
+ : ch === '<'
8
+ ? '&lt;'
9
+ : ch === '>'
10
+ ? '&gt;'
11
+ : ch === '"'
12
+ ? '&quot;'
13
+ : '&#39;');
14
+ const PAGE_CSS = `body{font-family:system-ui,-apple-system,sans-serif;margin:0;padding:32px;
15
+ color:#1a1a1a;line-height:1.6;max-width:36rem}
16
+ h1{font-size:18px;margin:0 0 16px}
17
+ h2{font-size:15px;margin:28px 0 8px}
18
+ code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-size:13px;word-break:break-all}
19
+ .ok{color:#0a7d3f;font-weight:600}
20
+ .warn{color:#a15c00}
21
+ .muted{color:#6b7280;font-size:14px}
22
+ .btn{display:inline-block;background:#1a1a1a;color:#fff;text-decoration:none;
23
+ padding:10px 18px;border-radius:8px;font-weight:600}`;
24
+ const page = (title, body) => `<!doctype html><meta charset="utf-8"><link rel="icon" href="/icon.png"><title>${escapeHtml(title)}</title>
25
+ <style>${PAGE_CSS}</style>
26
+ ${body}`;
27
+ /** The address the merchant pastes into ChatGPT or Claude. Their shop is in it. */
28
+ export const connectorUrl = (ctx, shop) => `${ctx.appUrl.replace(/\/$/, '')}/s/${shop.toLowerCase()}/mcp`;
29
+ /** No shop is asking — say what this is, and nothing about who has installed it. */
30
+ export const listedLandingPage = (ctx) => page(ctx.productName, `<h1>${escapeHtml(ctx.productName)}</h1>
31
+ <p>This is the Curless connector for Shopify. Installed on a store, it lets an AI
32
+ assistant show that store's products and what is in stock, hand the shopper a link to
33
+ the store's own checkout, and look up an order for the person who placed it.</p>
34
+ <p>It is read-only. Nothing is written to the store, and no payment passes through here.</p>
35
+ <p class="muted">Merchants install it from the Shopify App Store. Without a store there is
36
+ nothing to use on this page.</p>
37
+ <p class="muted"><a href="/docs">What this connector can reach</a> ·
38
+ <a href="/privacy">Privacy</a> · <a href="/terms">Terms</a> ·
39
+ <a href="/security">Data protection</a></p>`);
40
+ /** A shop that has not installed yet — the only page here that sends anyone anywhere. */
41
+ export const connectPage = (shop) => page('Connect your store', `<h1>${escapeHtml(shop)}</h1>
42
+ <p>This store has not installed the connector yet.</p>
43
+ <p><a class="btn" href="/auth/install?shop=${encodeURIComponent(shop)}">Connect ${escapeHtml(shop)}</a></p>
44
+ <p class="muted">Grants read-only access to products, orders and discounts. Nothing is
45
+ written to your store, and no money passes through us.</p>`);
46
+ /**
47
+ * A shop that has installed.
48
+ *
49
+ * ⚠️ The connector URL is the POINT of this page. An install otherwise ends with
50
+ * a merchant on a page congratulating them, holding nothing they can act on —
51
+ * nowhere else in the product does anything tell them what to paste into an
52
+ * assistant.
53
+ */
54
+ export const connectedPage = (ctx, shop, snap) => page('Connected', `<h1>${escapeHtml(shop)}</h1>
55
+ <p class="ok">Connected.</p>
56
+ <p>${snap.products.length} products readable${snap.loadedAt
57
+ ? ` · last synced ${snap.loadedAt.toISOString().replace('T', ' ').slice(0, 16)} UTC`
58
+ : ''}.</p>
59
+ ${snap.lastError ? `<p class="warn">Last sync said: ${escapeHtml(snap.lastError)}</p>` : ''}
60
+ <h2>Add it to an assistant</h2>
61
+ <p>Paste this address into ChatGPT or Claude as a connector:</p>
62
+ <p><code>${escapeHtml(connectorUrl(ctx, shop))}</code></p>
63
+ <p class="muted">Shoppers reach your catalogue through it. Checkout still happens on your
64
+ own Shopify checkout — nothing here moves money.</p>`);
65
+ //# sourceMappingURL=listed-pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listed-pages.js","sourceRoot":"","sources":["../src/listed-pages.ts"],"names":[],"mappings":"AAuBA,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAC9C,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAC3B,EAAE,KAAK,GAAG;IACR,CAAC,CAAC,OAAO;IACT,CAAC,CAAC,EAAE,KAAK,GAAG;QACV,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,EAAE,KAAK,GAAG;YACV,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,EAAE,KAAK,GAAG;gBACV,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,OAAO,CAClB,CAAC;AAEJ,MAAM,QAAQ,GAAG;;;;;;;;;iEASgD,CAAC;AAElE,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,IAAY,EAAU,EAAE,CACnD,iFAAiF,UAAU,CAAC,KAAK,CAAC;cACtF,QAAQ;OACf,IAAI,EAAE,CAAC;AAEd,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAsB,EAAE,IAAY,EAAU,EAAE,CAC3E,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;AAEjE,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAsB,EAAU,EAAE,CAClE,IAAI,CACF,GAAG,CAAC,WAAW,EACf,OAAO,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;;;;;;;;;iDASW,CAC9C,CAAC;AAEJ,yFAAyF;AACzF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAClD,IAAI,CACF,oBAAoB,EACpB,OAAO,UAAU,CAAC,IAAI,CAAC;;kDAEuB,kBAAkB,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,IAAI,CAAC;;gEAEvC,CAC7D,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAsB,EACtB,IAAY,EACZ,IAAqB,EACb,EAAE,CACV,IAAI,CACF,WAAW,EACX,OAAO,UAAU,CAAC,IAAI,CAAC;;UAEjB,IAAI,CAAC,QAAQ,CAAC,MAAM,qBACvB,IAAI,CAAC,QAAQ;IACX,CAAC,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM;IACpF,CAAC,CAAC,EACN;OACE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAmC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;;gBAGhF,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;0DAEO,CACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAA6B,CAAC;AAe1E,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,MAAK,MAAmB,KAAG,MAIpE,CAAC;AAMF,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,MAAK,MAAmB,KAAG,OASrF,CAAC;AAKF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OA0BrE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,EAAE,OAAO,MAAM,KAAG,MAc/D,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0BF,eAAO,MAAM,YAAY,GACvB,QAAQ,WAAW,EACnB,MAAM,MAAM,EACZ,YAAW,OAAO,KAAa,EAC/B,MAAK,IAAiB,KACrB,OAAO,CAAC,aAAa,CA0BvB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,WAAW,EACnB,cAAc,MAAM,EACpB,YAAW,OAAO,KAAa,EAC/B,MAAK,IAAiB,KACrB,OAAO,CAAC,aAAa,CAavB,CAAC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAA6B,CAAC;AAwC1E,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,MAAK,MAAmB,KAAG,MAIpE,CAAC;AAMF,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,MAAK,MAAmB,KAAG,OASrF,CAAC;AAKF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OA0BrE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,EAAE,OAAO,MAAM,KAAG,MAe/D,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0BF,eAAO,MAAM,YAAY,GACvB,QAAQ,WAAW,EACnB,MAAM,MAAM,EACZ,YAAW,OAAO,KAAa,EAC/B,MAAK,IAAiB,KACrB,OAAO,CAAC,aAAa,CA0BvB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,WAAW,EACnB,cAAc,MAAM,EACpB,YAAW,OAAO,KAAa,EAC/B,MAAK,IAAiB,KACrB,OAAO,CAAC,aAAa,CAavB,CAAC"}
package/dist/oauth.js CHANGED
@@ -22,6 +22,28 @@ import { createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
22
22
  // domain here would send the merchant's authorisation somewhere else entirely.
23
23
  const SHOP_RE = /^[a-z0-9][a-z0-9-]*\.myshopify\.com$/i;
24
24
  export const isShopDomain = (shop) => SHOP_RE.test(shop);
25
+ /**
26
+ * The shop's OAuth endpoint — the ONE place these three calls learn where to go.
27
+ *
28
+ * ⚠️ IT THROWS ON AN EMPTY SHOP, and that is the whole point. `OauthConfig`
29
+ * carries a `shopDomain`, which for the LISTED app is not a property of the
30
+ * config at all: it has no shop of its own, and the shop is a property of the
31
+ * REQUEST. So its module-level config holds `''`, and every call site has to
32
+ * remember to spread the real shop in. The callback forgot, built
33
+ * `https:///admin/oauth/access_token`, and undici answered `fetch failed` —
34
+ * which reads as a network problem, sends you to check DNS and egress from
35
+ * inside the container, and says nothing whatsoever about the missing host.
36
+ * Verified in production on 2026-09-10: a real merchant's install died there.
37
+ *
38
+ * A thrown error naming the empty shop costs one line and turns that hour into
39
+ * a log line.
40
+ */
41
+ const shopEndpoint = (config, path) => {
42
+ if (!isShopDomain(config.shopDomain)) {
43
+ throw new Error(`shopify oauth: no shop to talk to (shopDomain is ${JSON.stringify(config.shopDomain)}) — a multi-tenant caller must pass the request's shop, e.g. { ...oauth, shopDomain }`);
44
+ }
45
+ return `https://${config.shopDomain}${path}`;
46
+ };
25
47
  const constantTimeEqual = (a, b) => {
26
48
  const ab = Buffer.from(a);
27
49
  const bb = Buffer.from(b);
@@ -85,6 +107,7 @@ export const verifyCallbackHmac = (secret, rawQuery) => {
85
107
  return constantTimeEqual(createHmac('sha256', secret).update(message).digest('hex'), hmac);
86
108
  };
87
109
  export const installUrl = (config, state) => {
110
+ const authorize = shopEndpoint(config, '/admin/oauth/authorize');
88
111
  const redirectUri = `${config.appUrl.replace(/\/$/, '')}/auth/callback`;
89
112
  const qs = new URLSearchParams({
90
113
  client_id: config.clientId,
@@ -97,7 +120,7 @@ export const installUrl = (config, state) => {
97
120
  // an agent reading the catalogue at 3am needs. `per-user` would tie it to a
98
121
  // merchant's session and die when they log out. Sending the key with an empty
99
122
  // value is neither, and not something the docs define.
100
- return `https://${config.shopDomain}/admin/oauth/authorize?${qs.toString()}`;
123
+ return `${authorize}?${qs.toString()}`;
101
124
  };
102
125
  const readToken = (body, now) => {
103
126
  if (!body.access_token)
@@ -116,7 +139,7 @@ const readToken = (body, now) => {
116
139
  };
117
140
  };
118
141
  export const exchangeCode = async (config, code, fetchImpl = fetch, now = new Date()) => {
119
- const res = await fetchImpl(`https://${config.shopDomain}/admin/oauth/access_token`, {
142
+ const res = await fetchImpl(shopEndpoint(config, '/admin/oauth/access_token'), {
120
143
  method: 'POST',
121
144
  headers: { 'content-type': 'application/json', accept: 'application/json' },
122
145
  body: JSON.stringify({
@@ -151,7 +174,7 @@ export const exchangeCode = async (config, code, fetchImpl = fetch, now = new Da
151
174
  * managed to persist; it is not a licence to keep using the old one.
152
175
  */
153
176
  export const refreshAccessToken = async (config, refreshToken, fetchImpl = fetch, now = new Date()) => {
154
- const res = await fetchImpl(`https://${config.shopDomain}/admin/oauth/access_token`, {
177
+ const res = await fetchImpl(shopEndpoint(config, '/admin/oauth/access_token'), {
155
178
  method: 'POST',
156
179
  headers: { 'content-type': 'application/json', accept: 'application/json' },
157
180
  body: JSON.stringify({
package/dist/oauth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
package/dist/tenant.d.ts CHANGED
@@ -40,11 +40,22 @@ export type SingleShopDeps = {
40
40
  store: ResolvedStorefront;
41
41
  catalog: Catalog;
42
42
  tokens: TokenReader;
43
+ /** Injected by tests; see COLD_START_WAIT_MS. */
44
+ coldStartWaitMs?: number;
43
45
  };
44
46
  export type MultiShopDeps = {
45
47
  registry: CatalogSource;
46
48
  tokens: MultiTokenReader;
49
+ coldStartWaitMs?: number;
47
50
  };
51
+ /**
52
+ * How long a request will wait for a catalogue that has NEVER loaded.
53
+ *
54
+ * ⚠️ BOUNDED, AND THAT IS NOT A DETAIL. Nothing between here and Shopify sets a
55
+ * timeout — not the adapter, not the catalogue — so awaiting a refresh outright
56
+ * would hand a buyer's request to whatever Shopify decides to do with it.
57
+ */
58
+ export declare const COLD_START_WAIT_MS = 5000;
48
59
  /**
49
60
  * The branded case. The shop is fixed, so a `shop` on the request is not a
50
61
  * question to answer — it is a claim to CHECK. A request naming a different
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,MAAM,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,QAAQ,GAChB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,GAAG,QAAQ,CAAC,CAAC;AAUnF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAClD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC5B,MAAM,cAAc,MACd,gBAAgB,MAAM,KAAG,OAAO,CAAC,UAAU,CAkBjD,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAC3B,MAAM,aAAa,MACb,gBAAgB,MAAM,KAAG,OAAO,CAAC,UAAU,CAcjD,CAAC;AAEJ,iEAAiE;AACjE,eAAO,MAAM,eAAe,GAAI,GAAG,QAAQ,KAAG,MAS7C,CAAC"}
1
+ {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,MAAM,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,QAAQ,GAChB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,GAAG,QAAQ,CAAC,CAAC;AAUnF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAClD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AAiCxC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC5B,MAAM,cAAc,MACd,gBAAgB,MAAM,KAAG,OAAO,CAAC,UAAU,CAkBjD,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAC3B,MAAM,aAAa,MACb,gBAAgB,MAAM,KAAG,OAAO,CAAC,UAAU,CAcjD,CAAC;AAEJ,iEAAiE;AACjE,eAAO,MAAM,eAAe,GAAI,GAAG,QAAQ,KAAG,MAS7C,CAAC"}
package/dist/tenant.js CHANGED
@@ -1,4 +1,45 @@
1
1
  import { isStorableShop } from './multi-token-store.js';
2
+ /**
3
+ * How long a request will wait for a catalogue that has NEVER loaded.
4
+ *
5
+ * ⚠️ BOUNDED, AND THAT IS NOT A DETAIL. Nothing between here and Shopify sets a
6
+ * timeout — not the adapter, not the catalogue — so awaiting a refresh outright
7
+ * would hand a buyer's request to whatever Shopify decides to do with it.
8
+ */
9
+ export const COLD_START_WAIT_MS = 5_000;
10
+ /**
11
+ * Wait for a cold catalogue's FIRST load, then answer with it either way.
12
+ *
13
+ * ⚠️ WITHOUT THIS, THE FIRST QUESTION EVER ASKED OF A SHOP IS ANSWERED WRONG.
14
+ * `registry.for` creates the catalogue and starts its first load; reading the
15
+ * snapshot in the same tick gets an empty one, and the buyer is told "the
16
+ * catalog is not loaded yet". Verified in production on 2026-09-10, one minute
17
+ * after a real install: ask once, get the error card; ask again, get 15
18
+ * products. That first question is exactly what a Shopify reviewer asks, and
19
+ * "try again in a moment" is what they would have written the rejection about.
20
+ *
21
+ * `refresh()` JOINS the load already in flight rather than starting a second —
22
+ * so this waits for the fetch that is happening anyway, and a warm catalogue
23
+ * does not wait at all. If the wait runs out, the refresh carries on in the
24
+ * background and the next request finds it done.
25
+ */
26
+ const warm = async (catalog, waitMs) => {
27
+ if (catalog.current.loadedAt !== null)
28
+ return catalog;
29
+ let timer;
30
+ await Promise.race([
31
+ catalog.refresh(),
32
+ new Promise((resolve) => {
33
+ timer = setTimeout(resolve, waitMs);
34
+ // Never hold the process open for a cold-start wait.
35
+ if (typeof timer.unref === 'function')
36
+ timer.unref();
37
+ }),
38
+ ]);
39
+ if (timer)
40
+ clearTimeout(timer);
41
+ return catalog;
42
+ };
2
43
  /**
3
44
  * The branded case. The shop is fixed, so a `shop` on the request is not a
4
45
  * question to answer — it is a claim to CHECK. A request naming a different
@@ -20,7 +61,7 @@ export const singleShopResolver = (deps) => async (requestedShop) => {
20
61
  ok: true,
21
62
  tenant: {
22
63
  shopDomain: configured,
23
- catalog: deps.catalog,
64
+ catalog: await warm(deps.catalog, deps.coldStartWaitMs ?? COLD_START_WAIT_MS),
24
65
  shopify: { shopDomain: configured, adminToken: stored.accessToken },
25
66
  },
26
67
  };
@@ -49,7 +90,7 @@ export const multiShopResolver = (deps) => async (requestedShop) => {
49
90
  ok: true,
50
91
  tenant: {
51
92
  shopDomain: shop,
52
- catalog: deps.registry.for(shop),
93
+ catalog: await warm(deps.registry.for(shop), deps.coldStartWaitMs ?? COLD_START_WAIT_MS),
53
94
  shopify: { shopDomain: shop, adminToken: stored.accessToken },
54
95
  },
55
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAgDxD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAC,IAAoB,EAAE,EAAE,CACzB,KAAK,EAAE,aAAsB,EAAuB,EAAE;IACpD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9E,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IACjE,CAAC;IACD,uEAAuE;IACvE,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC9E,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC7E,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE;YACN,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;SACpE;KACF,CAAC;AACJ,CAAC,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,IAAmB,EAAE,EAAE,CACxB,KAAK,EAAE,aAAsB,EAAuB,EAAE;IACpD,MAAM,IAAI,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACjE,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE;YACN,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE;SAC9D;KACF,CAAC;AACJ,CAAC,CAAC;AAEJ,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAW,EAAU,EAAE;IACrD,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,mFAAmF,CAAC;QAC7F,KAAK,UAAU;YACb,OAAO,GAAG,CAAC,CAAC,KAAK,wCAAwC,CAAC;QAC5D,KAAK,eAAe;YAClB,OAAO,GAAG,CAAC,CAAC,IAAI,kCAAkC,CAAC;IACvD,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curless/shopify-storefront",
3
- "version": "0.5.0",
3
+ "version": "0.6.2",
4
4
  "type": "module",
5
5
  "description": "One Shopify storefront MCP connector, driven by a config file. Identity, tool names, vocabulary and shop wiring come from a StorefrontConfig, so a second merchant is a JSON file rather than a fork of 3,400 lines.",
6
6
  "keywords": [