@fayz-ai/sdk 0.9.0 → 0.10.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.
- package/README.md +2 -2
- package/dist/ai-builder.js +1 -1
- package/dist/{chunk-2YJXKDHO.js → chunk-6UZOXHGJ.js} +11 -6
- package/dist/chunk-6UZOXHGJ.js.map +1 -0
- package/dist/{chunk-V4GWI7WH.js → chunk-7UXTYT6I.js} +65 -4
- package/dist/chunk-7UXTYT6I.js.map +1 -0
- package/dist/{chunk-7XM4LONE.js → chunk-BJFMBVMP.js} +2 -2
- package/dist/chunk-BJFMBVMP.js.map +1 -0
- package/dist/chunk-HA5O3CW7.js +181 -0
- package/dist/chunk-HA5O3CW7.js.map +1 -0
- package/dist/chunk-KVMRRT3O.js +135 -0
- package/dist/chunk-KVMRRT3O.js.map +1 -0
- package/dist/deprecations.d.ts +98 -0
- package/dist/deprecations.d.ts.map +1 -0
- package/dist/deprecations.js +3 -0
- package/dist/deprecations.js.map +1 -0
- package/dist/deprecations.json +119 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/release-channels.js +1 -1
- package/dist/release-channels.json +103 -0
- package/dist/shop.d.ts +32 -0
- package/dist/shop.d.ts.map +1 -1
- package/dist/shop.js +2 -1
- package/dist/supported-surface.d.ts +8 -1
- package/dist/supported-surface.d.ts.map +1 -1
- package/dist/supported-surface.js +1 -1
- package/{src → dist}/supported-surface.json +5 -3
- package/dist/vite.d.ts +30 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +10 -2
- package/dist/vite.js.map +1 -1
- package/package.json +10 -17
- package/dist/chunk-2YJXKDHO.js.map +0 -1
- package/dist/chunk-7XM4LONE.js.map +0 -1
- package/dist/chunk-GQPVDQEB.js +0 -135
- package/dist/chunk-GQPVDQEB.js.map +0 -1
- package/dist/chunk-V4GWI7WH.js.map +0 -1
- package/src/agent.test.ts +0 -114
- package/src/agent.ts +0 -335
- package/src/ai-builder.ts +0 -115
- package/src/app-params.ts +0 -69
- package/src/client.test.ts +0 -176
- package/src/client.ts +0 -229
- package/src/index.ts +0 -94
- package/src/release-channels.json +0 -103
- package/src/release-channels.test.ts +0 -41
- package/src/release-channels.ts +0 -41
- package/src/runtime.test.ts +0 -123
- package/src/runtime.ts +0 -211
- package/src/shop.test.ts +0 -114
- package/src/shop.ts +0 -1118
- package/src/supported-surface.ts +0 -33
- package/src/types.ts +0 -67
- package/src/vite.ts +0 -121
package/dist/shop.d.ts
CHANGED
|
@@ -70,6 +70,10 @@ export declare class FayzShopError extends Error {
|
|
|
70
70
|
readonly responseBody?: unknown | undefined;
|
|
71
71
|
constructor(message: string, status: number, responseBody?: unknown | undefined);
|
|
72
72
|
}
|
|
73
|
+
/** The registry id this shim answers to. */
|
|
74
|
+
export declare const PRODUCT_METADATA_OVERLAY_DEPRECATION = "shop.provider.productMetadata";
|
|
75
|
+
/** Test seam — re-arms the once-per-session overlay deprecation warning. */
|
|
76
|
+
export declare function resetProductMetadataOverlayDeprecationWarning(): void;
|
|
73
77
|
declare function updateOrderPayload(input: {
|
|
74
78
|
status?: FayzShopOrderStatus;
|
|
75
79
|
financialStatus?: FayzShopFinancialStatus;
|
|
@@ -241,6 +245,32 @@ export declare function createFayzShopProvider(options: FayzShopProviderOptions)
|
|
|
241
245
|
deleteProduct(): Promise<never>;
|
|
242
246
|
uploadProductImage(): Promise<never>;
|
|
243
247
|
deleteProductImage(): Promise<never>;
|
|
248
|
+
/**
|
|
249
|
+
* Option axes + variants from the 0028 tables (spine M5) — the read that
|
|
250
|
+
* replaces the productMetadata overlay as the source of product options.
|
|
251
|
+
* Anon reads are already scoped by the storefront RLS (active variants of
|
|
252
|
+
* publicly readable products only).
|
|
253
|
+
*/
|
|
254
|
+
getProductVariants(productId: string): Promise<{
|
|
255
|
+
options: {
|
|
256
|
+
id: string;
|
|
257
|
+
name: string;
|
|
258
|
+
values: string[];
|
|
259
|
+
position: number;
|
|
260
|
+
}[];
|
|
261
|
+
variants: {
|
|
262
|
+
id: string;
|
|
263
|
+
productId: string;
|
|
264
|
+
options: Record<string, string>;
|
|
265
|
+
sku: string | null;
|
|
266
|
+
price: number | null;
|
|
267
|
+
compareAtPrice: number | null;
|
|
268
|
+
inventoryCount: number;
|
|
269
|
+
position: number;
|
|
270
|
+
status: "active" | "archived";
|
|
271
|
+
imageId: string | null;
|
|
272
|
+
}[];
|
|
273
|
+
}>;
|
|
244
274
|
listCategories(): Promise<{
|
|
245
275
|
id: string;
|
|
246
276
|
tenantId: string;
|
|
@@ -474,8 +504,10 @@ export declare function createFayzShopProvider(options: FayzShopProviderOptions)
|
|
|
474
504
|
label?: string;
|
|
475
505
|
};
|
|
476
506
|
paymentMethod?: "pix" | "credit_card" | "debit_card" | "boleto" | "cash" | "other";
|
|
507
|
+
metadata?: Record<string, unknown>;
|
|
477
508
|
items: Array<{
|
|
478
509
|
productId: string;
|
|
510
|
+
variantId?: string;
|
|
479
511
|
quantity: number;
|
|
480
512
|
optionsLabel?: string;
|
|
481
513
|
}>;
|
package/dist/shop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shop.d.ts","sourceRoot":"","sources":["../src/shop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shop.d.ts","sourceRoot":"","sources":["../src/shop.ts"],"names":[],"mappings":"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"}
|
package/dist/shop.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { FayzShopError, createFayzShopProvider, setShopAccessTokenResolver } from './chunk-
|
|
1
|
+
export { FayzShopError, PRODUCT_METADATA_OVERLAY_DEPRECATION, createFayzShopProvider, resetProductMetadataOverlayDeprecationWarning, setShopAccessTokenResolver } from './chunk-7UXTYT6I.js';
|
|
2
|
+
import './chunk-HA5O3CW7.js';
|
|
2
3
|
//# sourceMappingURL=shop.js.map
|
|
3
4
|
//# sourceMappingURL=shop.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type FayzPackageTier = 'stable';
|
|
1
|
+
export type FayzPackageTier = 'stable' | 'deprecated';
|
|
2
2
|
export interface FayzSupportedSurface {
|
|
3
3
|
surfaceVersion: number;
|
|
4
4
|
supported: Record<string, FayzPackageTier>;
|
|
@@ -15,5 +15,12 @@ export declare function getInternalPackages(): string[];
|
|
|
15
15
|
* Non-Fayz packages (no `@fayz-ai/` prefix) are out of scope and return true.
|
|
16
16
|
*/
|
|
17
17
|
export declare function isSupportedPackage(packageName: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* True when `packageName` is on the surface but scheduled for removal. Such a
|
|
20
|
+
* package still builds — `fayz doctor` reports it as a migration to do, not as
|
|
21
|
+
* a boundary violation. The replacement and removal version live in
|
|
22
|
+
* `deprecations.json`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isDeprecatedPackage(packageName: string): boolean;
|
|
18
25
|
export { surface as fayzSupportedSurface };
|
|
19
26
|
//# sourceMappingURL=supported-surface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supported-surface.d.ts","sourceRoot":"","sources":["../src/supported-surface.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"supported-surface.d.ts","sourceRoot":"","sources":["../src/supported-surface.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,YAAY,CAAA;AAErD,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,QAAA,MAAM,OAAO,EAAkC,oBAAoB,CAAA;AAEnE,uFAAuF;AACvF,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAG/D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { surface as fayzSupportedSurface, getInternalPackages, getSupportedPackages, isSupportedPackage } from './chunk-
|
|
1
|
+
export { surface as fayzSupportedSurface, getInternalPackages, getSupportedPackages, isDeprecatedPackage, isSupportedPackage } from './chunk-6UZOXHGJ.js';
|
|
2
2
|
//# sourceMappingURL=supported-surface.js.map
|
|
3
3
|
//# sourceMappingURL=supported-surface.js.map
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"surfaceVersion": 1,
|
|
3
|
-
"description": "Packages a generated Fayz app may depend on. fayz doctor warns on any app dependency outside this list. See docs/ARCHITECTURE.md (boundary model).",
|
|
3
|
+
"description": "Packages a generated Fayz app may depend on. fayz doctor warns on any app dependency outside this list. See docs/platform/ARCHITECTURE.md (boundary model).",
|
|
4
4
|
"tiers": {
|
|
5
|
-
"stable": "semver-tracked, supported public API"
|
|
5
|
+
"stable": "semver-tracked, supported public API",
|
|
6
|
+
"deprecated": "still resolves and still builds, but is scheduled for removal — see deprecations.json for the replacement and the removeIn version"
|
|
6
7
|
},
|
|
7
8
|
"supported": {
|
|
9
|
+
"@fayz-ai/admin": "stable",
|
|
8
10
|
"@fayz-ai/auth": "stable",
|
|
9
11
|
"@fayz-ai/core": "stable",
|
|
10
12
|
"@fayz-ai/courses": "stable",
|
|
11
13
|
"@fayz-ai/db": "stable",
|
|
12
14
|
"@fayz-ai/portal": "stable",
|
|
13
|
-
"@fayz-ai/saas": "
|
|
15
|
+
"@fayz-ai/saas": "deprecated",
|
|
14
16
|
"@fayz-ai/sdk": "stable",
|
|
15
17
|
"@fayz-ai/shop": "stable",
|
|
16
18
|
"@fayz-ai/storefront": "stable",
|
package/dist/vite.d.ts
CHANGED
|
@@ -8,7 +8,13 @@ export interface FayzViteOptions {
|
|
|
8
8
|
aliases?: Record<string, string>;
|
|
9
9
|
/** Extra Vite plugins, appended after @vitejs/plugin-react. */
|
|
10
10
|
plugins?: PluginOption[];
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* SDK source location, absolute or relative to the app root
|
|
13
|
+
* (default `../../fayz-sdk`).
|
|
14
|
+
*
|
|
15
|
+
* The `FAYZ_SDK_DIR` environment variable OVERRIDES this — see
|
|
16
|
+
* {@link resolveSdkDir}.
|
|
17
|
+
*/
|
|
12
18
|
sdkDir?: string;
|
|
13
19
|
/** App root directory (default process.cwd()). */
|
|
14
20
|
root?: string;
|
|
@@ -36,9 +42,32 @@ export interface FayzViteOptions {
|
|
|
36
42
|
* import { fayzVite } from '@fayz-ai/sdk/vite'
|
|
37
43
|
* export default defineConfig(fayzVite({ port: 5185, plugins: [react()] }))
|
|
38
44
|
*
|
|
45
|
+
* Where that local source is read from is {@link resolveSdkDir}: `FAYZ_SDK_DIR`
|
|
46
|
+
* beats the `sdkDir` option beats `../../fayz-sdk`.
|
|
47
|
+
*
|
|
39
48
|
* The app passes its own `@vitejs/plugin-react` so `@fayz-ai/sdk` carries no
|
|
40
49
|
* build-tool peer deps (which otherwise choke npm's peer resolution, since sdk
|
|
41
50
|
* sits in every dependency path).
|
|
42
51
|
*/
|
|
52
|
+
/** Env var that redirects local-source resolution to another SDK checkout. */
|
|
53
|
+
export declare const FAYZ_SDK_DIR_ENV = "FAYZ_SDK_DIR";
|
|
54
|
+
/**
|
|
55
|
+
* Where the local SDK source is, as an absolute path. Resolution order:
|
|
56
|
+
*
|
|
57
|
+
* 1. `FAYZ_SDK_DIR` (env) — wins, absolute or root-relative
|
|
58
|
+
* 2. `sdkDir` (option) — what the app's vite config declares
|
|
59
|
+
* 3. `../../fayz-sdk` — the sibling-checkout convention
|
|
60
|
+
*
|
|
61
|
+
* Env wins deliberately. `sdkDir` lives in the app's COMMITTED vite config, so
|
|
62
|
+
* without an override there was no way to build, dev or `fayz validate` a
|
|
63
|
+
* store against a different SDK tree (a worktree, a release branch) short of
|
|
64
|
+
* editing that committed file or dropping an untracked config shim next to it
|
|
65
|
+
* — which is exactly what the fleet ended up doing. An env var is the one
|
|
66
|
+
* knob a CLI flag and a container can both set without touching the repo.
|
|
67
|
+
*
|
|
68
|
+
* Exported so the CLI and the tests agree on the precedence by construction
|
|
69
|
+
* rather than by comment.
|
|
70
|
+
*/
|
|
71
|
+
export declare function resolveSdkDir(root: string, sdkDir?: string, env?: Record<string, string | undefined>): string;
|
|
43
72
|
export declare function fayzVite(opts?: FayzViteOptions): UserConfig;
|
|
44
73
|
//# sourceMappingURL=vite.d.ts.map
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAgB,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAgB,MAAM,MAAM,CAAA;AAiBlE,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;CAChC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,iBAAiB,CAAA;AAE9C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,CAGR;AAED,wBAAgB,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,UAAU,CA6D/D"}
|
package/dist/vite.js
CHANGED
|
@@ -3,10 +3,13 @@ import { resolve } from 'path';
|
|
|
3
3
|
|
|
4
4
|
// src/vite.ts
|
|
5
5
|
var SDK_PACKAGES = [
|
|
6
|
+
// 'saas' is the deprecated compat shim for 'admin' — kept so an app that has
|
|
7
|
+
// not migrated its imports still resolves in source mode (removed in 0.12.0).
|
|
6
8
|
"sdk",
|
|
7
9
|
"core",
|
|
8
10
|
"auth",
|
|
9
11
|
"ui",
|
|
12
|
+
"admin",
|
|
10
13
|
"saas",
|
|
11
14
|
"shop",
|
|
12
15
|
"storefront",
|
|
@@ -37,9 +40,14 @@ var SDK_PLUGINS = [
|
|
|
37
40
|
"tables",
|
|
38
41
|
"tasks"
|
|
39
42
|
];
|
|
43
|
+
var FAYZ_SDK_DIR_ENV = "FAYZ_SDK_DIR";
|
|
44
|
+
function resolveSdkDir(root, sdkDir, env = process.env) {
|
|
45
|
+
const fromEnv = env[FAYZ_SDK_DIR_ENV]?.trim();
|
|
46
|
+
return resolve(root, fromEnv || sdkDir || "../../fayz-sdk");
|
|
47
|
+
}
|
|
40
48
|
function fayzVite(opts = {}) {
|
|
41
49
|
const root = opts.root ?? process.cwd();
|
|
42
|
-
const fayzSdk =
|
|
50
|
+
const fayzSdk = resolveSdkDir(root, opts.sdkDir);
|
|
43
51
|
const wantLocal = process.env.FAYZ_SDK_SOURCE !== "published";
|
|
44
52
|
const localPresent = existsSync(resolve(fayzSdk, "packages/core/src/index.ts"));
|
|
45
53
|
const useLocal = wantLocal && localPresent;
|
|
@@ -94,6 +102,6 @@ function fayzVite(opts = {}) {
|
|
|
94
102
|
};
|
|
95
103
|
}
|
|
96
104
|
|
|
97
|
-
export { fayzVite };
|
|
105
|
+
export { FAYZ_SDK_DIR_ENV, fayzVite, resolveSdkDir };
|
|
98
106
|
//# sourceMappingURL=vite.js.map
|
|
99
107
|
//# sourceMappingURL=vite.js.map
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/vite.ts"],"names":[],"mappings":"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","file":"vite.js","sourcesContent":["import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport type { UserConfig, PluginOption, AliasOptions } from 'vite'\n\n// All publishable @fayz-ai/* packages (root src). Subpaths (e.g.\n// @fayz-ai/saas/ui, @fayz-ai/storefront/catalog) resolve automatically via\n// Vite's prefix alias matching — the shim files mirror the subpath under src/.\nconst SDK_PACKAGES = [\n 'sdk', 'core', 'auth', 'ui', 'saas', 'shop', 'storefront', 'portal', 'courses', 'db',\n] as const\n\nconst SDK_PLUGINS = [\n 'agenda', 'auth', 'automations', 'blog', 'conversations', 'courses', 'crm', 'dashboard',\n 'financial', 'forms', 'inventory', 'marketing', 'menu', 'orders', 'payments', 'reports',\n 'reputation', 'shop', 'sites', 'tables', 'tasks',\n] as const\n\nexport interface FayzViteOptions {\n /** Dev server port. */\n port?: number\n /** Fail instead of incrementing if the port is taken. */\n strictPort?: boolean\n /** Extra app-specific aliases, merged after the SDK aliases. */\n aliases?: Record<string, string>\n /** Extra Vite plugins, appended after @vitejs/plugin-react. */\n plugins?: PluginOption[]\n /** SDK source location relative to the app root (default ../../fayz-sdk). */\n sdkDir?: string\n /** App root directory (default process.cwd()). */\n root?: string\n /**\n * Extra Vite `server` config, merged over the SDK server defaults. The\n * preview-container contract (host/cors/allowedHosts/headers) is applied\n * first, so an override can add e.g. `proxy` without dropping it.\n */\n server?: UserConfig['server']\n /**\n * Extra Vite `resolve` config, merged over the SDK resolve defaults. The SDK\n * alias map / dedupe / conditions win for `@fayz-ai/*` local-source\n * resolution; any other resolve keys (and extra aliases) are merged in.\n */\n resolve?: UserConfig['resolve']\n}\n\n/**\n * Shared Vite config for Fayz dogfood apps. Resolves `@fayz-ai/*` from the local\n * SDK source when it is checked out next to the app AND `FAYZ_SDK_SOURCE` is not\n * `published`; otherwise from node_modules (the Fayz editor sandbox / published\n * npm). Apps no longer hand-maintain alias maps or the local-vs-npm guard.\n *\n * import { defineConfig } from 'vite'\n * import react from '@vitejs/plugin-react'\n * import { fayzVite } from '@fayz-ai/sdk/vite'\n * export default defineConfig(fayzVite({ port: 5185, plugins: [react()] }))\n *\n * The app passes its own `@vitejs/plugin-react` so `@fayz-ai/sdk` carries no\n * build-tool peer deps (which otherwise choke npm's peer resolution, since sdk\n * sits in every dependency path).\n */\nexport function fayzVite(opts: FayzViteOptions = {}): UserConfig {\n const root = opts.root ?? process.cwd()\n const fayzSdk = resolve(root, opts.sdkDir ?? '../../fayz-sdk')\n const wantLocal = process.env.FAYZ_SDK_SOURCE !== 'published'\n const localPresent = existsSync(resolve(fayzSdk, 'packages/core/src/index.ts'))\n const useLocal = wantLocal && localPresent\n\n const localAliases: Record<string, string> = {}\n if (useLocal) {\n for (const p of SDK_PACKAGES) localAliases[`@fayz-ai/${p}`] = resolve(fayzSdk, `packages/${p}/src`)\n for (const p of SDK_PLUGINS) localAliases[`@fayz-ai/plugin-${p}`] = resolve(fayzSdk, `plugins/plugin-${p}/src`)\n }\n\n // Pull SDK-owned resolve keys out of any caller override so they can't clobber\n // local-source @fayz-ai/* resolution; the rest of `resolve` is merged in.\n const { alias: userAlias, dedupe: userDedupe, conditions: _ignore, ...restResolve } =\n (opts.resolve ?? {}) as Exclude<UserConfig['resolve'], undefined>\n\n return {\n plugins: [...(opts.plugins ?? [])],\n envPrefix: ['VITE_', 'PUBLIC_'],\n resolve: {\n ...restResolve,\n alias: {\n '@': resolve(root, 'src'),\n ...localAliases,\n ...(opts.aliases ?? {}),\n ...((userAlias as Record<string, string> | undefined) ?? {}),\n } as AliasOptions,\n // lucide-react is a direct dep of both the app and every @fayz-ai/*\n // package; without dedupe a version skew installs two copies and esbuild\n // pre-bundles each barrel separately (~1,500 icon modules each).\n // Collapsing to one copy is the single biggest cut to the editor-container\n // optimize RAM/CPU spike. Only dedupe deps the *app* directly depends on\n // (so they're hoisted to its root node_modules) — deduping a transitive\n // like @tanstack/react-table makes Vite resolve it from the app root,\n // which fails in local-source mode and 500s the aliased UI source.\n dedupe: userDedupe ?? ['react', 'react-dom', 'zustand', 'lucide-react', 'react-router-dom', '@supabase/supabase-js', 'sonner'],\n conditions: useLocal ? ['source', 'browser', 'module', 'jsnext:main', 'jsnext'] : undefined,\n },\n optimizeDeps: { exclude: useLocal ? Object.keys(localAliases) : [] },\n // The preview-container runtime contract: Vite's host-check 403s any\n // non-local Host (browser iframe via Caddy, health probe via\n // host.docker.internal) unless allowedHosts is set. host/cors/headers keep\n // the proxied iframe + cross-origin asset fetches working. Owned here\n // because the app's vite.config has no literal `server: {` for the\n // container's text patchers to anchor on. Caller `server` merges last.\n server: {\n host: true,\n port: opts.port,\n strictPort: opts.strictPort,\n cors: true,\n allowedHosts: true,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Cross-Origin-Resource-Policy': 'cross-origin',\n },\n fs: { allow: [root, fayzSdk] },\n ...(opts.server ?? {}),\n },\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/vite.ts"],"names":[],"mappings":"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","file":"vite.js","sourcesContent":["import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport type { UserConfig, PluginOption, AliasOptions } from 'vite'\n\n// All publishable @fayz-ai/* packages (root src). Subpaths (e.g.\n// @fayz-ai/admin/ui, @fayz-ai/storefront/catalog) resolve automatically via\n// Vite's prefix alias matching — the shim files mirror the subpath under src/.\nconst SDK_PACKAGES = [\n // 'saas' is the deprecated compat shim for 'admin' — kept so an app that has\n // not migrated its imports still resolves in source mode (removed in 0.12.0).\n 'sdk', 'core', 'auth', 'ui', 'admin', 'saas', 'shop', 'storefront', 'portal', 'courses', 'db',\n] as const\n\nconst SDK_PLUGINS = [\n 'agenda', 'auth', 'automations', 'blog', 'conversations', 'courses', 'crm', 'dashboard',\n 'financial', 'forms', 'inventory', 'marketing', 'menu', 'orders', 'payments', 'reports',\n 'reputation', 'shop', 'sites', 'tables', 'tasks',\n] as const\n\nexport interface FayzViteOptions {\n /** Dev server port. */\n port?: number\n /** Fail instead of incrementing if the port is taken. */\n strictPort?: boolean\n /** Extra app-specific aliases, merged after the SDK aliases. */\n aliases?: Record<string, string>\n /** Extra Vite plugins, appended after @vitejs/plugin-react. */\n plugins?: PluginOption[]\n /**\n * SDK source location, absolute or relative to the app root\n * (default `../../fayz-sdk`).\n *\n * The `FAYZ_SDK_DIR` environment variable OVERRIDES this — see\n * {@link resolveSdkDir}.\n */\n sdkDir?: string\n /** App root directory (default process.cwd()). */\n root?: string\n /**\n * Extra Vite `server` config, merged over the SDK server defaults. The\n * preview-container contract (host/cors/allowedHosts/headers) is applied\n * first, so an override can add e.g. `proxy` without dropping it.\n */\n server?: UserConfig['server']\n /**\n * Extra Vite `resolve` config, merged over the SDK resolve defaults. The SDK\n * alias map / dedupe / conditions win for `@fayz-ai/*` local-source\n * resolution; any other resolve keys (and extra aliases) are merged in.\n */\n resolve?: UserConfig['resolve']\n}\n\n/**\n * Shared Vite config for Fayz dogfood apps. Resolves `@fayz-ai/*` from the local\n * SDK source when it is checked out next to the app AND `FAYZ_SDK_SOURCE` is not\n * `published`; otherwise from node_modules (the Fayz editor sandbox / published\n * npm). Apps no longer hand-maintain alias maps or the local-vs-npm guard.\n *\n * import { defineConfig } from 'vite'\n * import react from '@vitejs/plugin-react'\n * import { fayzVite } from '@fayz-ai/sdk/vite'\n * export default defineConfig(fayzVite({ port: 5185, plugins: [react()] }))\n *\n * Where that local source is read from is {@link resolveSdkDir}: `FAYZ_SDK_DIR`\n * beats the `sdkDir` option beats `../../fayz-sdk`.\n *\n * The app passes its own `@vitejs/plugin-react` so `@fayz-ai/sdk` carries no\n * build-tool peer deps (which otherwise choke npm's peer resolution, since sdk\n * sits in every dependency path).\n */\n/** Env var that redirects local-source resolution to another SDK checkout. */\nexport const FAYZ_SDK_DIR_ENV = 'FAYZ_SDK_DIR'\n\n/**\n * Where the local SDK source is, as an absolute path. Resolution order:\n *\n * 1. `FAYZ_SDK_DIR` (env) — wins, absolute or root-relative\n * 2. `sdkDir` (option) — what the app's vite config declares\n * 3. `../../fayz-sdk` — the sibling-checkout convention\n *\n * Env wins deliberately. `sdkDir` lives in the app's COMMITTED vite config, so\n * without an override there was no way to build, dev or `fayz validate` a\n * store against a different SDK tree (a worktree, a release branch) short of\n * editing that committed file or dropping an untracked config shim next to it\n * — which is exactly what the fleet ended up doing. An env var is the one\n * knob a CLI flag and a container can both set without touching the repo.\n *\n * Exported so the CLI and the tests agree on the precedence by construction\n * rather than by comment.\n */\nexport function resolveSdkDir(\n root: string,\n sdkDir?: string,\n env: Record<string, string | undefined> = process.env,\n): string {\n const fromEnv = env[FAYZ_SDK_DIR_ENV]?.trim()\n return resolve(root, fromEnv || sdkDir || '../../fayz-sdk')\n}\n\nexport function fayzVite(opts: FayzViteOptions = {}): UserConfig {\n const root = opts.root ?? process.cwd()\n const fayzSdk = resolveSdkDir(root, opts.sdkDir)\n const wantLocal = process.env.FAYZ_SDK_SOURCE !== 'published'\n const localPresent = existsSync(resolve(fayzSdk, 'packages/core/src/index.ts'))\n const useLocal = wantLocal && localPresent\n\n const localAliases: Record<string, string> = {}\n if (useLocal) {\n for (const p of SDK_PACKAGES) localAliases[`@fayz-ai/${p}`] = resolve(fayzSdk, `packages/${p}/src`)\n for (const p of SDK_PLUGINS) localAliases[`@fayz-ai/plugin-${p}`] = resolve(fayzSdk, `plugins/plugin-${p}/src`)\n }\n\n // Pull SDK-owned resolve keys out of any caller override so they can't clobber\n // local-source @fayz-ai/* resolution; the rest of `resolve` is merged in.\n const { alias: userAlias, dedupe: userDedupe, conditions: _ignore, ...restResolve } =\n (opts.resolve ?? {}) as Exclude<UserConfig['resolve'], undefined>\n\n return {\n plugins: [...(opts.plugins ?? [])],\n envPrefix: ['VITE_', 'PUBLIC_'],\n resolve: {\n ...restResolve,\n alias: {\n '@': resolve(root, 'src'),\n ...localAliases,\n ...(opts.aliases ?? {}),\n ...((userAlias as Record<string, string> | undefined) ?? {}),\n } as AliasOptions,\n // lucide-react is a direct dep of both the app and every @fayz-ai/*\n // package; without dedupe a version skew installs two copies and esbuild\n // pre-bundles each barrel separately (~1,500 icon modules each).\n // Collapsing to one copy is the single biggest cut to the editor-container\n // optimize RAM/CPU spike. Only dedupe deps the *app* directly depends on\n // (so they're hoisted to its root node_modules) — deduping a transitive\n // like @tanstack/react-table makes Vite resolve it from the app root,\n // which fails in local-source mode and 500s the aliased UI source.\n dedupe: userDedupe ?? ['react', 'react-dom', 'zustand', 'lucide-react', 'react-router-dom', '@supabase/supabase-js', 'sonner'],\n conditions: useLocal ? ['source', 'browser', 'module', 'jsnext:main', 'jsnext'] : undefined,\n },\n optimizeDeps: { exclude: useLocal ? Object.keys(localAliases) : [] },\n // The preview-container runtime contract: Vite's host-check 403s any\n // non-local Host (browser iframe via Caddy, health probe via\n // host.docker.internal) unless allowedHosts is set. host/cors/headers keep\n // the proxied iframe + cross-origin asset fetches working. Owned here\n // because the app's vite.config has no literal `server: {` for the\n // container's text patchers to anchor on. Caller `server` merges last.\n server: {\n host: true,\n port: opts.port,\n strictPort: opts.strictPort,\n cors: true,\n allowedHosts: true,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Cross-Origin-Resource-Policy': 'cross-origin',\n },\n fs: { allow: [root, fayzSdk] },\n ...(opts.server ?? {}),\n },\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"fayz": {
|
|
4
4
|
"status": "beta"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.10.1",
|
|
7
7
|
"description": "Fayz SDK — API client, app params, runtime broker helpers, and shared types for generated Fayz projects",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"sideEffects": false,
|
|
@@ -12,66 +12,59 @@
|
|
|
12
12
|
"types": "./dist/index.d.ts",
|
|
13
13
|
"exports": {
|
|
14
14
|
".": {
|
|
15
|
-
"source": "./src/index.ts",
|
|
16
15
|
"types": "./dist/index.d.ts",
|
|
17
16
|
"import": "./dist/index.js"
|
|
18
17
|
},
|
|
19
18
|
"./app-params": {
|
|
20
|
-
"source": "./src/app-params.ts",
|
|
21
19
|
"types": "./dist/app-params.d.ts",
|
|
22
20
|
"import": "./dist/app-params.js"
|
|
23
21
|
},
|
|
24
22
|
"./client": {
|
|
25
|
-
"source": "./src/client.ts",
|
|
26
23
|
"types": "./dist/client.d.ts",
|
|
27
24
|
"import": "./dist/client.js"
|
|
28
25
|
},
|
|
29
26
|
"./agent": {
|
|
30
|
-
"source": "./src/agent.ts",
|
|
31
27
|
"types": "./dist/agent.d.ts",
|
|
32
28
|
"import": "./dist/agent.js"
|
|
33
29
|
},
|
|
34
30
|
"./shop": {
|
|
35
|
-
"source": "./src/shop.ts",
|
|
36
31
|
"types": "./dist/shop.d.ts",
|
|
37
32
|
"import": "./dist/shop.js"
|
|
38
33
|
},
|
|
34
|
+
"./deprecations": {
|
|
35
|
+
"types": "./dist/deprecations.d.ts",
|
|
36
|
+
"import": "./dist/deprecations.js"
|
|
37
|
+
},
|
|
38
|
+
"./deprecations.json": "./dist/deprecations.json",
|
|
39
39
|
"./release-channels": {
|
|
40
|
-
"source": "./src/release-channels.ts",
|
|
41
40
|
"types": "./dist/release-channels.d.ts",
|
|
42
41
|
"import": "./dist/release-channels.js"
|
|
43
42
|
},
|
|
44
|
-
"./release-channels.json": "./
|
|
43
|
+
"./release-channels.json": "./dist/release-channels.json",
|
|
45
44
|
"./supported-surface": {
|
|
46
|
-
"source": "./src/supported-surface.ts",
|
|
47
45
|
"types": "./dist/supported-surface.d.ts",
|
|
48
46
|
"import": "./dist/supported-surface.js"
|
|
49
47
|
},
|
|
50
|
-
"./supported-surface.json": "./
|
|
48
|
+
"./supported-surface.json": "./dist/supported-surface.json",
|
|
51
49
|
"./ai-builder": {
|
|
52
|
-
"source": "./src/ai-builder.ts",
|
|
53
50
|
"types": "./dist/ai-builder.d.ts",
|
|
54
51
|
"import": "./dist/ai-builder.js"
|
|
55
52
|
},
|
|
56
53
|
"./runtime": {
|
|
57
|
-
"source": "./src/runtime.ts",
|
|
58
54
|
"types": "./dist/runtime.d.ts",
|
|
59
55
|
"import": "./dist/runtime.js"
|
|
60
56
|
},
|
|
61
57
|
"./types": {
|
|
62
|
-
"source": "./src/types.ts",
|
|
63
58
|
"types": "./dist/types.d.ts",
|
|
64
59
|
"import": "./dist/types.js"
|
|
65
60
|
},
|
|
66
61
|
"./vite": {
|
|
67
|
-
"source": "./src/vite.ts",
|
|
68
62
|
"types": "./dist/vite.d.ts",
|
|
69
63
|
"import": "./dist/vite.js"
|
|
70
64
|
}
|
|
71
65
|
},
|
|
72
66
|
"files": [
|
|
73
67
|
"dist",
|
|
74
|
-
"src",
|
|
75
68
|
"README.md"
|
|
76
69
|
],
|
|
77
70
|
"devDependencies": {
|
|
@@ -101,9 +94,9 @@
|
|
|
101
94
|
],
|
|
102
95
|
"peerDependencies": {},
|
|
103
96
|
"scripts": {
|
|
104
|
-
"build": "tsup && tsc --emitDeclarationOnly --declaration --declarationMap --noEmit false",
|
|
97
|
+
"build": "tsup && mkdir -p dist && cp src/deprecations.json src/release-channels.json src/supported-surface.json dist/ && tsc --emitDeclarationOnly --declaration --declarationMap --noEmit false",
|
|
105
98
|
"dev": "tsup --watch",
|
|
106
|
-
"typecheck": "tsc --noEmit",
|
|
99
|
+
"typecheck": "tsc --noEmit -p tsconfig.test.json",
|
|
107
100
|
"test": "vitest run",
|
|
108
101
|
"clean": "rm -rf dist"
|
|
109
102
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/supported-surface.json","../src/supported-surface.ts"],"names":[],"mappings":";AAAA,IAAA,yBAAA,GAAA;AAAA,EACE,cAAA,EAAkB,CAAA;AAAA,EAClB,WAAA,EAAe,oJAAA;AAAA,EACf,KAAA,EAAS;AAAA,IACP,MAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAa;AAAA,IACX,eAAA,EAAiB,QAAA;AAAA,IACjB,eAAA,EAAiB,QAAA;AAAA,IACjB,kBAAA,EAAoB,QAAA;AAAA,IACpB,aAAA,EAAe,QAAA;AAAA,IACf,iBAAA,EAAmB,QAAA;AAAA,IACnB,eAAA,EAAiB,QAAA;AAAA,IACjB,cAAA,EAAgB,QAAA;AAAA,IAChB,eAAA,EAAiB,QAAA;AAAA,IACjB,qBAAA,EAAuB,QAAA;AAAA,IACvB,aAAA,EAAe,QAAA;AAAA,IACf,wBAAA,EAA0B,QAAA;AAAA,IAC1B,6BAAA,EAA+B,QAAA;AAAA,IAC/B,+BAAA,EAAiC,QAAA;AAAA,IACjC,yBAAA,EAA2B,QAAA;AAAA,IAC3B,qBAAA,EAAuB,QAAA;AAAA,IACvB,2BAAA,EAA6B,QAAA;AAAA,IAC7B,2BAAA,EAA6B,QAAA;AAAA,IAC7B,uBAAA,EAAyB,QAAA;AAAA,IACzB,2BAAA,EAA6B,QAAA;AAAA,IAC7B,2BAAA,EAA6B,QAAA;AAAA,IAC7B,sBAAA,EAAwB,QAAA;AAAA,IACxB,wBAAA,EAA0B,QAAA;AAAA,IAC1B,yBAAA,EAA2B,QAAA;AAAA,IAC3B,4BAAA,EAA8B,QAAA;AAAA,IAC9B,sBAAA,EAAwB,QAAA;AAAA,IACxB,uBAAA,EAAyB,QAAA;AAAA,IACzB,wBAAA,EAA0B,QAAA;AAAA,IAC1B,uBAAA,EAAyB;AAAA,GAC3B;AAAA,EACA,QAAA,EAAY;AAAA,IACV;AAAA;AAEJ,CAAA;;;AC7BA,IAAM,OAAA,GAAU;AAGT,SAAS,oBAAA,GAAiC;AAC/C,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,SAAS,CAAA;AACtC;AAGO,SAAS,mBAAA,GAAgC;AAC9C,EAAA,OAAO,CAAC,GAAG,OAAA,CAAQ,QAAQ,CAAA;AAC7B;AAOO,SAAS,mBAAmB,WAAA,EAA8B;AAC/D,EAAA,IAAI,CAAC,WAAA,CAAY,UAAA,CAAW,WAAW,GAAG,OAAO,IAAA;AACjD,EAAA,OAAO,eAAe,OAAA,CAAQ,SAAA;AAChC","file":"chunk-2YJXKDHO.js","sourcesContent":["{\n \"surfaceVersion\": 1,\n \"description\": \"Packages a generated Fayz app may depend on. fayz doctor warns on any app dependency outside this list. See docs/ARCHITECTURE.md (boundary model).\",\n \"tiers\": {\n \"stable\": \"semver-tracked, supported public API\"\n },\n \"supported\": {\n \"@fayz-ai/auth\": \"stable\",\n \"@fayz-ai/core\": \"stable\",\n \"@fayz-ai/courses\": \"stable\",\n \"@fayz-ai/db\": \"stable\",\n \"@fayz-ai/portal\": \"stable\",\n \"@fayz-ai/saas\": \"stable\",\n \"@fayz-ai/sdk\": \"stable\",\n \"@fayz-ai/shop\": \"stable\",\n \"@fayz-ai/storefront\": \"stable\",\n \"@fayz-ai/ui\": \"stable\",\n \"@fayz-ai/plugin-agenda\": \"stable\",\n \"@fayz-ai/plugin-automations\": \"stable\",\n \"@fayz-ai/plugin-conversations\": \"stable\",\n \"@fayz-ai/plugin-courses\": \"stable\",\n \"@fayz-ai/plugin-crm\": \"stable\",\n \"@fayz-ai/plugin-dashboard\": \"stable\",\n \"@fayz-ai/plugin-financial\": \"stable\",\n \"@fayz-ai/plugin-forms\": \"stable\",\n \"@fayz-ai/plugin-inventory\": \"stable\",\n \"@fayz-ai/plugin-marketing\": \"stable\",\n \"@fayz-ai/plugin-menu\": \"stable\",\n \"@fayz-ai/plugin-orders\": \"stable\",\n \"@fayz-ai/plugin-reports\": \"stable\",\n \"@fayz-ai/plugin-reputation\": \"stable\",\n \"@fayz-ai/plugin-shop\": \"stable\",\n \"@fayz-ai/plugin-sites\": \"stable\",\n \"@fayz-ai/plugin-tables\": \"stable\",\n \"@fayz-ai/plugin-tasks\": \"stable\"\n },\n \"internal\": [\n \"@fayz-ai/app-runtime\"\n ]\n}\n","import supportedSurface from './supported-surface.json'\n\nexport type FayzPackageTier = 'stable'\n\nexport interface FayzSupportedSurface {\n surfaceVersion: number\n supported: Record<string, FayzPackageTier>\n internal: string[]\n}\n\nconst surface = supportedSurface as unknown as FayzSupportedSurface\n\n/** Every package a generated Fayz app is allowed to depend on (the public surface). */\nexport function getSupportedPackages(): string[] {\n return Object.keys(surface.supported)\n}\n\n/** Packages that exist but are NOT part of the public surface (deprecated/internal). */\nexport function getInternalPackages(): string[] {\n return [...surface.internal]\n}\n\n/**\n * True when `packageName` is part of the supported public surface. Used by\n * `fayz doctor` to warn (never fail) when an app depends on something off-surface.\n * Non-Fayz packages (no `@fayz-ai/` prefix) are out of scope and return true.\n */\nexport function isSupportedPackage(packageName: string): boolean {\n if (!packageName.startsWith('@fayz-ai/')) return true\n return packageName in surface.supported\n}\n\nexport { surface as fayzSupportedSurface }\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ai-builder.ts"],"names":[],"mappings":";AA4BO,IAAM,0BAAA,GAAsF;AAAA,EACjG,UAAA,EAAY;AAAA,IACV,EAAA,EAAI,UAAA;AAAA,IACJ,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,KAAA;AAAA,IACP,UAAA,EAAY,IAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,WAAA,EAAa,KAAA;AAAA,IACb,WAAA,EACE,iMAAA;AAAA,IACF,QAAA,EAAU;AAAA,MACR,qCAAA;AAAA,MACA,qDAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,EAAA,EAAI,eAAA;AAAA,IACJ,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,UAAA,EAAY,IAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,WAAA,EAAa,KAAA;AAAA,IACb,WAAA,EACE,4HAAA;AAAA,IACF,QAAA,EAAU;AAAA,MACR,+CAAA;AAAA,MACA,+BAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,mBAAA,EAAqB;AAAA,IACnB,EAAA,EAAI,mBAAA;AAAA,IACJ,KAAA,EAAO,mBAAA;AAAA,IACP,KAAA,EAAO,mBAAA;AAAA,IACP,UAAA,EAAY,SAAA;AAAA,IACZ,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,WAAA,EACE,+MAAA;AAAA,IACF,QAAA,EAAU;AAAA,MACR,kDAAA;AAAA,MACA,wCAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,4BAAA,EAA8B;AAAA,IAC5B,EAAA,EAAI,4BAAA;AAAA,IACJ,KAAA,EAAO,2BAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,IAAA;AAAA,IACX,WAAA,EAAa,IAAA;AAAA,IACb,WAAA,EACE,kIAAA;AAAA,IACF,QAAA,EAAU;AAAA,MACR,wCAAA;AAAA,MACA,gCAAA;AAAA,MACA;AAAA;AACF,GACF;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,EAAA,EAAI,gBAAA;AAAA,IACJ,KAAA,EAAO,kBAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,WAAA,EAAa,KAAA;AAAA,IACb,WAAA,EACE,iOAAA;AAAA,IACF,QAAA,EAAU;AAAA,MACR,0CAAA;AAAA,MACA,6CAAA;AAAA,MACA,+DAAA;AAAA,MACA;AAAA;AACF;AAEJ;AAEO,IAAM,+BAA+B,MAAA,CAAO,IAAA;AAAA,EACjD;AACF;AAGO,SAAS,sBAAsB,EAAA,EAAoC;AACxE,EAAA,OAAO,EAAA,KAAO,gBAAA;AAChB","file":"chunk-7XM4LONE.js","sourcesContent":["// The AI Builder request taxonomy — the contract the platform's request\n// classifier targets. The classifier itself lives in the `fayz` platform repo;\n// this is the canonical source of truth for the request classes and the\n// architecture layer each is allowed to touch (docs/ARCHITECTURE.md).\n\n/** Ownership layer a request may modify. */\nexport type FayzLayer = 'app' | 'plugin-config' | 'private-extension' | 'platform' | 'none'\n\nexport type AiBuilderRequestClass =\n | 'app-edit'\n | 'plugin-config'\n | 'private-extension'\n | 'platform-or-plugin-upgrade'\n | 'unsafe-blocked'\n\nexport interface AiBuilderRequestClassDef {\n id: AiBuilderRequestClass\n label: string\n /** Which ownership layer this class is allowed to modify. */\n layer: FayzLayer\n /** Who may perform it. */\n editableBy: 'ai' | 'partner' | 'fayz' | 'none'\n needsCode: boolean\n needsDeploy: boolean\n description: string\n examples: string[]\n}\n\nexport const AI_BUILDER_REQUEST_CLASSES: Record<AiBuilderRequestClass, AiBuilderRequestClassDef> = {\n 'app-edit': {\n id: 'app-edit',\n label: 'App edit',\n layer: 'app',\n editableBy: 'ai',\n needsCode: false,\n needsDeploy: false,\n description:\n 'Change the generated app: pages, routes, layout, theme, copy, blocks, slots. Manifest-level edits (ladder 1–4) need no code; custom components/pages (ladder 5–6) are app-owned code.',\n examples: [\n 'Change the brand color and headline',\n 'Add a new landing page with a hero and product grid',\n 'Reorder dashboard cards',\n ],\n },\n 'plugin-config': {\n id: 'plugin-config',\n label: 'Plugin config',\n layer: 'plugin-config',\n editableBy: 'ai',\n needsCode: false,\n needsDeploy: false,\n description:\n 'Configure an installed plugin as manifest data: enabled modules, fields, statuses, rules, feature flags, labels, currency.',\n examples: [\n 'Enable the reconciliation module in financial',\n 'Add a \"VIP\" status to clients',\n 'Turn on delivery pricing in the menu',\n ],\n },\n 'private-extension': {\n id: 'private-extension',\n label: 'Private extension',\n layer: 'private-extension',\n editableBy: 'partner',\n needsCode: true,\n needsDeploy: true,\n description:\n 'Add new business behaviour as an app-local plugin (own entities, data, migrations, AI tools, connectors). The sanctioned partner/Silvio path — scaffold with `fayz create plugin`. See CUSTOMIZATION.md.',\n examples: [\n 'Build a loyalty-points engine with its own table',\n 'Add a custom importer for a legacy ERP',\n 'Integrate a provider Fayz does not support yet (adapter)',\n ],\n },\n 'platform-or-plugin-upgrade': {\n id: 'platform-or-plugin-upgrade',\n label: 'Platform / plugin upgrade',\n layer: 'platform',\n editableBy: 'fayz',\n needsCode: true,\n needsDeploy: true,\n description:\n 'Change owned by Fayz: bump SDK/plugin versions, run manifest/DB migrations, evolve an engine. Not editable from a generated app.',\n examples: [\n 'Upgrade @fayz-ai/core across the fleet',\n 'Migrate manifests v2 → v3',\n 'Add a capability to an official plugin',\n ],\n },\n 'unsafe-blocked': {\n id: 'unsafe-blocked',\n label: 'Unsafe / blocked',\n layer: 'none',\n editableBy: 'none',\n needsCode: false,\n needsDeploy: false,\n description:\n 'Requests that would break the boundary and must be refused or rerouted: mutating SDK/runtime/plugin internals, forking an SDK page, importing a provider SDK directly into app code, or bypassing tenancy/permissions/security.',\n examples: [\n 'Edit the code inside @fayz-ai/plugin-crm',\n 'Copy an SDK page into the app and modify it',\n 'Call the Supabase client directly from a storefront component',\n 'Disable row-level security for a tenant',\n ],\n },\n}\n\nexport const AI_BUILDER_REQUEST_CLASS_IDS = Object.keys(\n AI_BUILDER_REQUEST_CLASSES,\n) as AiBuilderRequestClass[]\n\n/** True when a request class is permitted (anything but unsafe-blocked). */\nexport function isAllowedRequestClass(id: AiBuilderRequestClass): boolean {\n return id !== 'unsafe-blocked'\n}\n"]}
|
package/dist/chunk-GQPVDQEB.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
// src/release-channels.json
|
|
2
|
-
var release_channels_default = {
|
|
3
|
-
channels: {
|
|
4
|
-
stable: {
|
|
5
|
-
"@fayz-ai/sdk": "^0.9.0",
|
|
6
|
-
"@fayz-ai/core": "^0.9.0",
|
|
7
|
-
"@fayz-ai/auth": "^0.9.0",
|
|
8
|
-
"@fayz-ai/ui": "^0.9.0",
|
|
9
|
-
"@fayz-ai/saas": "^0.9.0",
|
|
10
|
-
"@fayz-ai/shop": "^0.9.0",
|
|
11
|
-
"@fayz-ai/storefront": "^0.9.0",
|
|
12
|
-
"@fayz-ai/portal": "^0.9.0",
|
|
13
|
-
"@fayz-ai/courses": "^0.9.0",
|
|
14
|
-
"@fayz-ai/db": "^0.9.0",
|
|
15
|
-
"@fayz-ai/plugin-agenda": "^0.9.0",
|
|
16
|
-
"@fayz-ai/plugin-auth": "^0.9.0",
|
|
17
|
-
"@fayz-ai/plugin-automations": "^0.9.0",
|
|
18
|
-
"@fayz-ai/plugin-blog": "^0.9.0",
|
|
19
|
-
"@fayz-ai/plugin-conversations": "^0.9.0",
|
|
20
|
-
"@fayz-ai/plugin-courses": "^0.9.0",
|
|
21
|
-
"@fayz-ai/plugin-crm": "^0.9.0",
|
|
22
|
-
"@fayz-ai/plugin-dashboard": "^0.9.0",
|
|
23
|
-
"@fayz-ai/plugin-financial": "^0.9.0",
|
|
24
|
-
"@fayz-ai/plugin-forms": "^0.9.0",
|
|
25
|
-
"@fayz-ai/plugin-inventory": "^0.9.0",
|
|
26
|
-
"@fayz-ai/plugin-marketing": "^0.9.0",
|
|
27
|
-
"@fayz-ai/plugin-menu": "^0.9.0",
|
|
28
|
-
"@fayz-ai/plugin-orders": "^0.9.0",
|
|
29
|
-
"@fayz-ai/plugin-payments": "^0.9.0",
|
|
30
|
-
"@fayz-ai/plugin-reports": "^0.9.0",
|
|
31
|
-
"@fayz-ai/plugin-reputation": "^0.9.0",
|
|
32
|
-
"@fayz-ai/plugin-shop": "^0.9.0",
|
|
33
|
-
"@fayz-ai/plugin-sites": "^0.9.0",
|
|
34
|
-
"@fayz-ai/plugin-tables": "^0.9.0",
|
|
35
|
-
"@fayz-ai/plugin-tasks": "^0.9.0"
|
|
36
|
-
},
|
|
37
|
-
latest: {
|
|
38
|
-
"@fayz-ai/sdk": "^0.9.0",
|
|
39
|
-
"@fayz-ai/core": "^0.9.0",
|
|
40
|
-
"@fayz-ai/auth": "^0.9.0",
|
|
41
|
-
"@fayz-ai/ui": "^0.9.0",
|
|
42
|
-
"@fayz-ai/saas": "^0.9.0",
|
|
43
|
-
"@fayz-ai/shop": "^0.9.0",
|
|
44
|
-
"@fayz-ai/storefront": "^0.9.0",
|
|
45
|
-
"@fayz-ai/portal": "^0.9.0",
|
|
46
|
-
"@fayz-ai/courses": "^0.9.0",
|
|
47
|
-
"@fayz-ai/db": "^0.9.0",
|
|
48
|
-
"@fayz-ai/plugin-agenda": "^0.9.0",
|
|
49
|
-
"@fayz-ai/plugin-auth": "^0.9.0",
|
|
50
|
-
"@fayz-ai/plugin-automations": "^0.9.0",
|
|
51
|
-
"@fayz-ai/plugin-blog": "^0.9.0",
|
|
52
|
-
"@fayz-ai/plugin-conversations": "^0.9.0",
|
|
53
|
-
"@fayz-ai/plugin-courses": "^0.9.0",
|
|
54
|
-
"@fayz-ai/plugin-crm": "^0.9.0",
|
|
55
|
-
"@fayz-ai/plugin-dashboard": "^0.9.0",
|
|
56
|
-
"@fayz-ai/plugin-financial": "^0.9.0",
|
|
57
|
-
"@fayz-ai/plugin-forms": "^0.9.0",
|
|
58
|
-
"@fayz-ai/plugin-inventory": "^0.9.0",
|
|
59
|
-
"@fayz-ai/plugin-marketing": "^0.9.0",
|
|
60
|
-
"@fayz-ai/plugin-menu": "^0.9.0",
|
|
61
|
-
"@fayz-ai/plugin-orders": "^0.9.0",
|
|
62
|
-
"@fayz-ai/plugin-payments": "^0.9.0",
|
|
63
|
-
"@fayz-ai/plugin-reports": "^0.9.0",
|
|
64
|
-
"@fayz-ai/plugin-reputation": "^0.9.0",
|
|
65
|
-
"@fayz-ai/plugin-shop": "^0.9.0",
|
|
66
|
-
"@fayz-ai/plugin-sites": "^0.9.0",
|
|
67
|
-
"@fayz-ai/plugin-tables": "^0.9.0",
|
|
68
|
-
"@fayz-ai/plugin-tasks": "^0.9.0"
|
|
69
|
-
},
|
|
70
|
-
preview: {
|
|
71
|
-
"@fayz-ai/sdk": "^0.9.0",
|
|
72
|
-
"@fayz-ai/core": "^0.9.0",
|
|
73
|
-
"@fayz-ai/auth": "^0.9.0",
|
|
74
|
-
"@fayz-ai/ui": "^0.9.0",
|
|
75
|
-
"@fayz-ai/saas": "^0.9.0",
|
|
76
|
-
"@fayz-ai/shop": "^0.9.0",
|
|
77
|
-
"@fayz-ai/storefront": "^0.9.0",
|
|
78
|
-
"@fayz-ai/portal": "^0.9.0",
|
|
79
|
-
"@fayz-ai/courses": "^0.9.0",
|
|
80
|
-
"@fayz-ai/db": "^0.9.0",
|
|
81
|
-
"@fayz-ai/plugin-agenda": "^0.9.0",
|
|
82
|
-
"@fayz-ai/plugin-auth": "^0.9.0",
|
|
83
|
-
"@fayz-ai/plugin-automations": "^0.9.0",
|
|
84
|
-
"@fayz-ai/plugin-blog": "^0.9.0",
|
|
85
|
-
"@fayz-ai/plugin-conversations": "^0.9.0",
|
|
86
|
-
"@fayz-ai/plugin-courses": "^0.9.0",
|
|
87
|
-
"@fayz-ai/plugin-crm": "^0.9.0",
|
|
88
|
-
"@fayz-ai/plugin-dashboard": "^0.9.0",
|
|
89
|
-
"@fayz-ai/plugin-financial": "^0.9.0",
|
|
90
|
-
"@fayz-ai/plugin-forms": "^0.9.0",
|
|
91
|
-
"@fayz-ai/plugin-inventory": "^0.9.0",
|
|
92
|
-
"@fayz-ai/plugin-marketing": "^0.9.0",
|
|
93
|
-
"@fayz-ai/plugin-menu": "^0.9.0",
|
|
94
|
-
"@fayz-ai/plugin-orders": "^0.9.0",
|
|
95
|
-
"@fayz-ai/plugin-payments": "^0.9.0",
|
|
96
|
-
"@fayz-ai/plugin-reports": "^0.9.0",
|
|
97
|
-
"@fayz-ai/plugin-reputation": "^0.9.0",
|
|
98
|
-
"@fayz-ai/plugin-shop": "^0.9.0",
|
|
99
|
-
"@fayz-ai/plugin-sites": "^0.9.0",
|
|
100
|
-
"@fayz-ai/plugin-tables": "^0.9.0",
|
|
101
|
-
"@fayz-ai/plugin-tasks": "^0.9.0"
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
// src/release-channels.ts
|
|
107
|
-
var releaseChannelPackages = release_channels_default.channels;
|
|
108
|
-
function buildVersionSet(channel) {
|
|
109
|
-
return {
|
|
110
|
-
channel,
|
|
111
|
-
packages: { ...releaseChannelPackages[channel] }
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
var fayzPackageVersionSets = {
|
|
115
|
-
stable: buildVersionSet("stable"),
|
|
116
|
-
latest: buildVersionSet("latest"),
|
|
117
|
-
preview: buildVersionSet("preview")
|
|
118
|
-
};
|
|
119
|
-
function resolveFayzPackageVersions(channel = "stable") {
|
|
120
|
-
return fayzPackageVersionSets[channel];
|
|
121
|
-
}
|
|
122
|
-
function resolveFayzPackageDependencies(channel = "stable") {
|
|
123
|
-
return { ...resolveFayzPackageVersions(channel).packages };
|
|
124
|
-
}
|
|
125
|
-
function resolveFayzPackageVersion(packageName, channel = "stable") {
|
|
126
|
-
const version = resolveFayzPackageVersions(channel).packages[packageName];
|
|
127
|
-
if (!version) {
|
|
128
|
-
throw new Error(`No Fayz package version configured for ${packageName} in ${channel} channel`);
|
|
129
|
-
}
|
|
130
|
-
return version;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export { fayzPackageVersionSets, resolveFayzPackageDependencies, resolveFayzPackageVersion, resolveFayzPackageVersions };
|
|
134
|
-
//# sourceMappingURL=chunk-GQPVDQEB.js.map
|
|
135
|
-
//# sourceMappingURL=chunk-GQPVDQEB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/release-channels.json","../src/release-channels.ts"],"names":[],"mappings":";AAAA,IAAA,wBAAA,GAAA;AAAA,EACE,QAAA,EAAY;AAAA,IACV,MAAA,EAAU;AAAA,MACR,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,aAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,qBAAA,EAAuB,QAAA;AAAA,MACvB,iBAAA,EAAmB,QAAA;AAAA,MACnB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,wBAAA,EAA0B,QAAA;AAAA,MAC1B,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+BAAA,EAAiC,QAAA;AAAA,MACjC,yBAAA,EAA2B,QAAA;AAAA,MAC3B,qBAAA,EAAuB,QAAA;AAAA,MACvB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,sBAAA,EAAwB,QAAA;AAAA,MACxB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,0BAAA,EAA4B,QAAA;AAAA,MAC5B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,4BAAA,EAA8B,QAAA;AAAA,MAC9B,sBAAA,EAAwB,QAAA;AAAA,MACxB,uBAAA,EAAyB,QAAA;AAAA,MACzB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,uBAAA,EAAyB;AAAA,KAC3B;AAAA,IACA,MAAA,EAAU;AAAA,MACR,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,aAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,qBAAA,EAAuB,QAAA;AAAA,MACvB,iBAAA,EAAmB,QAAA;AAAA,MACnB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,wBAAA,EAA0B,QAAA;AAAA,MAC1B,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+BAAA,EAAiC,QAAA;AAAA,MACjC,yBAAA,EAA2B,QAAA;AAAA,MAC3B,qBAAA,EAAuB,QAAA;AAAA,MACvB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,sBAAA,EAAwB,QAAA;AAAA,MACxB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,0BAAA,EAA4B,QAAA;AAAA,MAC5B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,4BAAA,EAA8B,QAAA;AAAA,MAC9B,sBAAA,EAAwB,QAAA;AAAA,MACxB,uBAAA,EAAyB,QAAA;AAAA,MACzB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,uBAAA,EAAyB;AAAA,KAC3B;AAAA,IACA,OAAA,EAAW;AAAA,MACT,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,aAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,qBAAA,EAAuB,QAAA;AAAA,MACvB,iBAAA,EAAmB,QAAA;AAAA,MACnB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,wBAAA,EAA0B,QAAA;AAAA,MAC1B,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+BAAA,EAAiC,QAAA;AAAA,MACjC,yBAAA,EAA2B,QAAA;AAAA,MAC3B,qBAAA,EAAuB,QAAA;AAAA,MACvB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,sBAAA,EAAwB,QAAA;AAAA,MACxB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,0BAAA,EAA4B,QAAA;AAAA,MAC5B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,4BAAA,EAA8B,QAAA;AAAA,MAC9B,sBAAA,EAAwB,QAAA;AAAA,MACxB,uBAAA,EAAyB,QAAA;AAAA,MACzB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,uBAAA,EAAyB;AAAA;AAC3B;AAEJ,CAAA;;;AC7FA,IAAM,yBAAyB,wBAAA,CAAgB,QAAA;AAE/C,SAAS,gBAAgB,OAAA,EAAoD;AAC3E,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,QAAA,EAAU,EAAE,GAAG,sBAAA,CAAuB,OAAO,CAAA;AAAE,GACjD;AACF;AAEO,IAAM,sBAAA,GAA4E;AAAA,EACvF,MAAA,EAAQ,gBAAgB,QAAQ,CAAA;AAAA,EAChC,MAAA,EAAQ,gBAAgB,QAAQ,CAAA;AAAA,EAChC,OAAA,EAAS,gBAAgB,SAAS;AACpC;AAEO,SAAS,0BAAA,CAA2B,UAA8B,QAAA,EAAiC;AACxG,EAAA,OAAO,uBAAuB,OAAO,CAAA;AACvC;AAEO,SAAS,8BAAA,CAA+B,UAA8B,QAAA,EAAkC;AAC7G,EAAA,OAAO,EAAE,GAAG,0BAAA,CAA2B,OAAO,EAAE,QAAA,EAAS;AAC3D;AAEO,SAAS,yBAAA,CAA0B,WAAA,EAAqB,OAAA,GAA8B,QAAA,EAAkB;AAC7G,EAAA,MAAM,OAAA,GAAU,0BAAA,CAA2B,OAAO,CAAA,CAAE,SAAS,WAAW,CAAA;AAExE,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uCAAA,EAA0C,WAAW,CAAA,IAAA,EAAO,OAAO,CAAA,QAAA,CAAU,CAAA;AAAA,EAC/F;AAEA,EAAA,OAAO,OAAA;AACT","file":"chunk-GQPVDQEB.js","sourcesContent":["{\n \"channels\": {\n \"stable\": {\n \"@fayz-ai/sdk\": \"^0.9.0\",\n \"@fayz-ai/core\": \"^0.9.0\",\n \"@fayz-ai/auth\": \"^0.9.0\",\n \"@fayz-ai/ui\": \"^0.9.0\",\n \"@fayz-ai/saas\": \"^0.9.0\",\n \"@fayz-ai/shop\": \"^0.9.0\",\n \"@fayz-ai/storefront\": \"^0.9.0\",\n \"@fayz-ai/portal\": \"^0.9.0\",\n \"@fayz-ai/courses\": \"^0.9.0\",\n \"@fayz-ai/db\": \"^0.9.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.9.0\",\n \"@fayz-ai/plugin-auth\": \"^0.9.0\",\n \"@fayz-ai/plugin-automations\": \"^0.9.0\",\n \"@fayz-ai/plugin-blog\": \"^0.9.0\",\n \"@fayz-ai/plugin-conversations\": \"^0.9.0\",\n \"@fayz-ai/plugin-courses\": \"^0.9.0\",\n \"@fayz-ai/plugin-crm\": \"^0.9.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.9.0\",\n \"@fayz-ai/plugin-financial\": \"^0.9.0\",\n \"@fayz-ai/plugin-forms\": \"^0.9.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.9.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.9.0\",\n \"@fayz-ai/plugin-menu\": \"^0.9.0\",\n \"@fayz-ai/plugin-orders\": \"^0.9.0\",\n \"@fayz-ai/plugin-payments\": \"^0.9.0\",\n \"@fayz-ai/plugin-reports\": \"^0.9.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.9.0\",\n \"@fayz-ai/plugin-shop\": \"^0.9.0\",\n \"@fayz-ai/plugin-sites\": \"^0.9.0\",\n \"@fayz-ai/plugin-tables\": \"^0.9.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.9.0\"\n },\n \"latest\": {\n \"@fayz-ai/sdk\": \"^0.9.0\",\n \"@fayz-ai/core\": \"^0.9.0\",\n \"@fayz-ai/auth\": \"^0.9.0\",\n \"@fayz-ai/ui\": \"^0.9.0\",\n \"@fayz-ai/saas\": \"^0.9.0\",\n \"@fayz-ai/shop\": \"^0.9.0\",\n \"@fayz-ai/storefront\": \"^0.9.0\",\n \"@fayz-ai/portal\": \"^0.9.0\",\n \"@fayz-ai/courses\": \"^0.9.0\",\n \"@fayz-ai/db\": \"^0.9.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.9.0\",\n \"@fayz-ai/plugin-auth\": \"^0.9.0\",\n \"@fayz-ai/plugin-automations\": \"^0.9.0\",\n \"@fayz-ai/plugin-blog\": \"^0.9.0\",\n \"@fayz-ai/plugin-conversations\": \"^0.9.0\",\n \"@fayz-ai/plugin-courses\": \"^0.9.0\",\n \"@fayz-ai/plugin-crm\": \"^0.9.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.9.0\",\n \"@fayz-ai/plugin-financial\": \"^0.9.0\",\n \"@fayz-ai/plugin-forms\": \"^0.9.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.9.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.9.0\",\n \"@fayz-ai/plugin-menu\": \"^0.9.0\",\n \"@fayz-ai/plugin-orders\": \"^0.9.0\",\n \"@fayz-ai/plugin-payments\": \"^0.9.0\",\n \"@fayz-ai/plugin-reports\": \"^0.9.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.9.0\",\n \"@fayz-ai/plugin-shop\": \"^0.9.0\",\n \"@fayz-ai/plugin-sites\": \"^0.9.0\",\n \"@fayz-ai/plugin-tables\": \"^0.9.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.9.0\"\n },\n \"preview\": {\n \"@fayz-ai/sdk\": \"^0.9.0\",\n \"@fayz-ai/core\": \"^0.9.0\",\n \"@fayz-ai/auth\": \"^0.9.0\",\n \"@fayz-ai/ui\": \"^0.9.0\",\n \"@fayz-ai/saas\": \"^0.9.0\",\n \"@fayz-ai/shop\": \"^0.9.0\",\n \"@fayz-ai/storefront\": \"^0.9.0\",\n \"@fayz-ai/portal\": \"^0.9.0\",\n \"@fayz-ai/courses\": \"^0.9.0\",\n \"@fayz-ai/db\": \"^0.9.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.9.0\",\n \"@fayz-ai/plugin-auth\": \"^0.9.0\",\n \"@fayz-ai/plugin-automations\": \"^0.9.0\",\n \"@fayz-ai/plugin-blog\": \"^0.9.0\",\n \"@fayz-ai/plugin-conversations\": \"^0.9.0\",\n \"@fayz-ai/plugin-courses\": \"^0.9.0\",\n \"@fayz-ai/plugin-crm\": \"^0.9.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.9.0\",\n \"@fayz-ai/plugin-financial\": \"^0.9.0\",\n \"@fayz-ai/plugin-forms\": \"^0.9.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.9.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.9.0\",\n \"@fayz-ai/plugin-menu\": \"^0.9.0\",\n \"@fayz-ai/plugin-orders\": \"^0.9.0\",\n \"@fayz-ai/plugin-payments\": \"^0.9.0\",\n \"@fayz-ai/plugin-reports\": \"^0.9.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.9.0\",\n \"@fayz-ai/plugin-shop\": \"^0.9.0\",\n \"@fayz-ai/plugin-sites\": \"^0.9.0\",\n \"@fayz-ai/plugin-tables\": \"^0.9.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.9.0\"\n }\n }\n}\n","import releaseChannels from './release-channels.json'\n\nexport type FayzPackageChannel = 'stable' | 'latest' | 'preview'\n\nexport interface FayzPackageVersionSet {\n channel: FayzPackageChannel\n packages: Record<string, string>\n}\n\nconst releaseChannelPackages = releaseChannels.channels as Record<FayzPackageChannel, Record<string, string>>\n\nfunction buildVersionSet(channel: FayzPackageChannel): FayzPackageVersionSet {\n return {\n channel,\n packages: { ...releaseChannelPackages[channel] },\n }\n}\n\nexport const fayzPackageVersionSets: Record<FayzPackageChannel, FayzPackageVersionSet> = {\n stable: buildVersionSet('stable'),\n latest: buildVersionSet('latest'),\n preview: buildVersionSet('preview'),\n}\n\nexport function resolveFayzPackageVersions(channel: FayzPackageChannel = 'stable'): FayzPackageVersionSet {\n return fayzPackageVersionSets[channel]\n}\n\nexport function resolveFayzPackageDependencies(channel: FayzPackageChannel = 'stable'): Record<string, string> {\n return { ...resolveFayzPackageVersions(channel).packages }\n}\n\nexport function resolveFayzPackageVersion(packageName: string, channel: FayzPackageChannel = 'stable'): string {\n const version = resolveFayzPackageVersions(channel).packages[packageName]\n\n if (!version) {\n throw new Error(`No Fayz package version configured for ${packageName} in ${channel} channel`)\n }\n\n return version\n}\n"]}
|