@forgecharts/sdk 1.5.36 → 1.5.38

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.
@@ -183,6 +183,26 @@ export declare class ChartRuntimeResolver {
183
183
  * debug panels, or passing state to React context in one call.
184
184
  */
185
185
  getCapabilities(): ChartCapabilities;
186
+ /**
187
+ * Apply the user's Kit package to capability resolution.
188
+ *
189
+ * Pass the `features` map from `GET /api/packages/me` verbatim — snake_case
190
+ * Kit keys are translated here. Pass null to clear (e.g. on sign-out), which
191
+ * restores licence-only behaviour.
192
+ *
193
+ * This can only ever narrow: a package cannot grant a capability the
194
+ * deployment licence withholds. Both resolvers below consult the licence
195
+ * regardless of what the package says.
196
+ */
197
+ setUserPackageFeatures(kitFlags: Readonly<Record<string, boolean>> | null): void;
198
+ /** The resolved capability flags from the user's package, for diagnostics. */
199
+ getUserPackageFeatures(): Readonly<Record<string, boolean>> | null;
200
+ /**
201
+ * True when a package has been applied. Useful for telling "this user has no
202
+ * package" apart from "package gating is not in use", which otherwise look
203
+ * identical from the outside.
204
+ */
205
+ hasUserPackage(): boolean;
186
206
  }
187
207
  export interface ChartCapabilities {
188
208
  mode: 'managed' | 'unmanaged';
@@ -1 +1 @@
1
- {"version":3,"file":"ChartRuntimeResolver.d.ts","sourceRoot":"","sources":["../../src/licensing/ChartRuntimeResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartRuntimeResolver.d.ts","sourceRoot":"","sources":["../../src/licensing/ChartRuntimeResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=packageGating.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageGating.test.d.ts","sourceRoot":"","sources":["../../../src/licensing/__tests__/packageGating.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Per-user package features — the second gate, below the deployment licence.
3
+ *
4
+ * Two independent things decide whether a user sees a chart feature:
5
+ *
6
+ * 1. The DEPLOYMENT LICENCE (productTier × deploymentMode) — what this
7
+ * installation is licensed to offer at all. Resolved by capabilityMatrix
8
+ * and owned by LicenseManager.
9
+ * 2. The USER'S KIT PACKAGE — which of those the individual user has paid
10
+ * for, from `users.package_id` → `package_features`, served by
11
+ * `GET /api/packages/me`.
12
+ *
13
+ * The composition is an intersection, and the direction matters: a package may
14
+ * only ever NARROW what the licence allows, never widen it. That mirrors the
15
+ * rule already stated for licence feature flags — "may only narrow below the
16
+ * ceiling, never elevate above it" — and it is what keeps package assignment
17
+ * from becoming a way to grant capabilities the deployment has not licensed.
18
+ *
19
+ * Vocabularies differ by design: the Kit's `features` table is snake_case and
20
+ * describes sellable units ('extended_drawing_tools'), while the SDK's
21
+ * capabilities are camelCase and describe runtime behaviour
22
+ * ('extendedDrawings'). This module is the only place the two meet.
23
+ */
24
+ /**
25
+ * Kit feature key → SDK capability name.
26
+ *
27
+ * ONLY capabilities appearing here are package-gated. That is deliberate: a
28
+ * package contains rows only for the features it grants, so an absent key means
29
+ * "not granted" — and if every SDK capability were gated by presence, the ones
30
+ * with no Kit equivalent (barReplay, sessionHours, continuousContracts…) would
31
+ * switch off the moment any package was assigned. Restricting gating to mapped
32
+ * capabilities keeps the licence in sole charge of everything else.
33
+ */
34
+ export declare const KIT_FEATURE_TO_CAPABILITY: Readonly<Record<string, string>>;
35
+ /**
36
+ * Kit features deliberately NOT mapped, and why. Documented rather than
37
+ * silently omitted, because "why doesn't my package flag do anything" is
38
+ * otherwise a hard question to answer.
39
+ *
40
+ * delayed_data — data delay is decided by the data_addon entitlement
41
+ * and enforced server-side in the feed, not by a chart
42
+ * capability. Gating it here would have no effect on
43
+ * what the runtime actually sends.
44
+ * ai_script_conversion — a narrower thing INSIDE the assistant, which is
45
+ * itself gated by `ai_agent` → `aiAgent`. Mapping it
46
+ * too would let one unticked box disable the whole
47
+ * assistant, far more than the label names.
48
+ *
49
+ * Four SDK capabilities have no Kit feature and are owned by the deployment
50
+ * licence alone: `managedTrading` and `unmanagedIngestion` are architectural
51
+ * properties of the deployment rather than per-user upsells, and
52
+ * `depthOfMarket` and `tradingPanel` are already gated by product tier — a
53
+ * package must not appear to sell them independently of the trading licence.
54
+ */
55
+ export declare const UNMAPPED_KIT_FEATURES: readonly string[];
56
+ /** SDK capabilities subject to package gating — the image of the map above. */
57
+ export declare const PACKAGE_GATED_CAPABILITIES: ReadonlySet<string>;
58
+ /**
59
+ * Convert `GET /api/packages/me`'s flat `{ feature_key: boolean }` into SDK
60
+ * capability names.
61
+ *
62
+ * A Kit key with no mapping is ignored rather than passed through: capability
63
+ * names are the SDK's vocabulary, and letting an unrecognised snake_case key
64
+ * reach the resolver would silently do nothing while looking like it worked.
65
+ */
66
+ export declare function toCapabilityFlags(kitFlags: Readonly<Record<string, boolean>>): Record<string, boolean>;
67
+ /**
68
+ * Does the user's package permit `capability`?
69
+ *
70
+ * Fails OPEN in the two cases that mean "no package opinion exists":
71
+ * - `flags` is null — nothing loaded. Hosts that never call
72
+ * `/api/packages/me`, and every deployment predating package gating, must
73
+ * behave exactly as before.
74
+ * - the capability is not package-gated — the licence alone decides.
75
+ *
76
+ * Failing open is safe here precisely because this is the SECOND gate: the
77
+ * licence has already been applied, so the worst case is that a user sees what
78
+ * their deployment is licensed for, which is the pre-existing behaviour.
79
+ */
80
+ export declare function packageAllows(flags: Readonly<Record<string, boolean>> | null, capability: string): boolean;
81
+ //# sourceMappingURL=packageFeatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageFeatures.d.ts","sourceRoot":"","sources":["../../src/licensing/packageFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqCtE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAE1D,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,EAC/C,UAAU,EAAE,MAAM,GACjB,OAAO,CAIT"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Apply the signed-in user's Kit package from `GET {apiUrl}/api/packages/me`.
3
+ *
4
+ * This is the SECOND gate. The deployment licence (useHostLicense) decides what
5
+ * the installation may offer at all; the package decides which of those the
6
+ * individual user has paid for. A package can only ever narrow the licence, so
7
+ * this hook cannot grant anything the deployment is not licensed for.
8
+ *
9
+ * Outcomes, and the distinction matters:
10
+ * package + features -> gating applies; unlisted gated capabilities are denied
11
+ * package: null -> the user has NO package. Left ungated (licence only).
12
+ * no apiUrl / error -> left ungated. An outage must not strip features from
13
+ * every user of the deployment.
14
+ *
15
+ * On `package: null` deliberately meaning "no gating" rather than "nothing
16
+ * allowed": every Kit predating package assignment has users with
17
+ * `package_id = NULL`, and denying every gated capability for them would strip
18
+ * indicators, multi-pane and drawing tools from working deployments on upgrade.
19
+ * Assigning a package is therefore what ACTIVATES gating for a user — which is
20
+ * also why hosts should assign one at provision time (see
21
+ * `packageSlug` on POST /api/auth/provision).
22
+ */
23
+ export declare function useUserPackage(apiUrl?: string, getAuthToken?: (() => string | Promise<string>) | undefined): void;
24
+ //# sourceMappingURL=useUserPackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUserPackage.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useUserPackage.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,GAC1D,IAAI,CAiDN"}
@@ -24,6 +24,7 @@ export { LicenseRequiredOverlay } from './canvas/LicenseRequiredOverlay';
24
24
  export type { LicenseRequiredOverlayProps } from './canvas/LicenseRequiredOverlay';
25
25
  export { useLicenseDataBlocked } from './hooks/useLicenseDataBlocked';
26
26
  export { useHostLicense } from './hooks/useHostLicense';
27
+ export { useUserPackage } from './hooks/useUserPackage';
27
28
  export { ChartWorkspace } from './workspace/ChartWorkspace';
28
29
  export type { ChartWorkspaceProps, TabItem, TradingSession } from './workspace/ChartWorkspace';
29
30
  export { useChartCapabilities } from './hooks/useChartCapabilities';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,YAAY,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3G,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC9D,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,QAAQ,GACT,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,YAAY,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3G,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC9D,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,QAAQ,GACT,MAAM,oBAAoB,CAAC"}
@@ -11040,6 +11040,58 @@ var LicenseManager = class _LicenseManager {
11040
11040
  }
11041
11041
  };
11042
11042
 
11043
+ // src/licensing/packageFeatures.ts
11044
+ var KIT_FEATURE_TO_CAPABILITY = {
11045
+ // charting
11046
+ drawing_tools: "drawingTools",
11047
+ extended_drawing_tools: "extendedDrawings",
11048
+ indicators: "indicators",
11049
+ multi_pane: "multiPane",
11050
+ chart_types: "chartTypes",
11051
+ bar_replay: "barReplay",
11052
+ custom_timeframes: "customTimeframes",
11053
+ overlays: "overlays",
11054
+ // data
11055
+ historical_data: "historicalData",
11056
+ realtime_data: "realtimeData",
11057
+ multiple_providers: "multipleProviders",
11058
+ data_export: "dataExport",
11059
+ continuous_contracts: "continuousContracts",
11060
+ session_hours: "sessionHours",
11061
+ // trading
11062
+ order_entry: "orderEntry",
11063
+ positions_overlay: "positionsOverlay",
11064
+ bracket_orders: "bracketOrders",
11065
+ trailing_stops: "trailingStops",
11066
+ draggable_orders: "draggableOrders",
11067
+ // scripting
11068
+ forgescript: "forgeScript",
11069
+ custom_indicators: "customIndicators",
11070
+ ai_agent: "aiAgent",
11071
+ // workspace
11072
+ saved_layouts: "savedLayouts",
11073
+ multiple_workspaces: "multipleWorkspaces",
11074
+ watchlists: "watchlists",
11075
+ alerts: "alerts",
11076
+ multi_chart_layout: "multiChartLayout"
11077
+ };
11078
+ var PACKAGE_GATED_CAPABILITIES = new Set(
11079
+ Object.values(KIT_FEATURE_TO_CAPABILITY)
11080
+ );
11081
+ function toCapabilityFlags(kitFlags) {
11082
+ const out = {};
11083
+ for (const [kitKey, enabled] of Object.entries(kitFlags)) {
11084
+ const capability = KIT_FEATURE_TO_CAPABILITY[kitKey];
11085
+ if (capability) out[capability] = enabled === true;
11086
+ }
11087
+ return out;
11088
+ }
11089
+ function packageAllows(flags, capability) {
11090
+ if (flags === null) return true;
11091
+ if (!PACKAGE_GATED_CAPABILITIES.has(capability)) return true;
11092
+ return flags[capability] === true;
11093
+ }
11094
+
11043
11095
  // src/licensing/ChartRuntimeResolver.ts
11044
11096
  var ChartRuntimeResolver = class _ChartRuntimeResolver {
11045
11097
  static instance = null;
@@ -11185,6 +11237,7 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
11185
11237
  #capabilityWithOverride(name) {
11186
11238
  const ceiling = this.lm.getCapabilities()[name];
11187
11239
  if (!ceiling) return false;
11240
+ if (!packageAllows(this.#userPackageFeatures, name)) return false;
11188
11241
  const explicit = this.lm.getFeatures()[name];
11189
11242
  return explicit === void 0 ? true : explicit === true;
11190
11243
  }
@@ -11410,10 +11463,44 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
11410
11463
  */
11411
11464
  #featureOrDefault(name, defaultValue) {
11412
11465
  if (this.lm.isLockedDown()) return false;
11466
+ if (!packageAllows(this.#userPackageFeatures, name)) return false;
11413
11467
  const features = this.lm.getFeatures();
11414
11468
  const flag = features[name];
11415
11469
  return flag === void 0 ? defaultValue : flag === true;
11416
11470
  }
11471
+ // ── Per-user package gating ─────────────────────────────────────────────────
11472
+ /**
11473
+ * Capability flags from the signed-in user's Kit package, or null when none
11474
+ * has been loaded. Null is the default and means "licence only", so every
11475
+ * deployment predating package gating behaves exactly as it did.
11476
+ */
11477
+ #userPackageFeatures = null;
11478
+ /**
11479
+ * Apply the user's Kit package to capability resolution.
11480
+ *
11481
+ * Pass the `features` map from `GET /api/packages/me` verbatim — snake_case
11482
+ * Kit keys are translated here. Pass null to clear (e.g. on sign-out), which
11483
+ * restores licence-only behaviour.
11484
+ *
11485
+ * This can only ever narrow: a package cannot grant a capability the
11486
+ * deployment licence withholds. Both resolvers below consult the licence
11487
+ * regardless of what the package says.
11488
+ */
11489
+ setUserPackageFeatures(kitFlags) {
11490
+ this.#userPackageFeatures = kitFlags === null ? null : toCapabilityFlags(kitFlags);
11491
+ }
11492
+ /** The resolved capability flags from the user's package, for diagnostics. */
11493
+ getUserPackageFeatures() {
11494
+ return this.#userPackageFeatures;
11495
+ }
11496
+ /**
11497
+ * True when a package has been applied. Useful for telling "this user has no
11498
+ * package" apart from "package gating is not in use", which otherwise look
11499
+ * identical from the outside.
11500
+ */
11501
+ hasUserPackage() {
11502
+ return this.#userPackageFeatures !== null;
11503
+ }
11417
11504
  };
11418
11505
  var resolver = () => ChartRuntimeResolver.getInstance();
11419
11506
  var canUseExtendedDrawings = () => resolver().canUseExtendedDrawings();
@@ -18040,6 +18127,52 @@ function useHostLicense(apiUrl, getAuthToken) {
18040
18127
  };
18041
18128
  }, [apiUrl, getAuthToken]);
18042
18129
  }
18130
+ function useUserPackage(apiUrl, getAuthToken) {
18131
+ useEffect(() => {
18132
+ const resolver3 = ChartRuntimeResolver.getInstance();
18133
+ if (!apiUrl || !getAuthToken) {
18134
+ resolver3.setUserPackageFeatures(null);
18135
+ return;
18136
+ }
18137
+ let cancelled = false;
18138
+ void (async () => {
18139
+ try {
18140
+ let token = "";
18141
+ try {
18142
+ token = await getAuthToken();
18143
+ } catch {
18144
+ if (!cancelled) resolver3.setUserPackageFeatures(null);
18145
+ return;
18146
+ }
18147
+ if (cancelled) return;
18148
+ if (!token) {
18149
+ resolver3.setUserPackageFeatures(null);
18150
+ return;
18151
+ }
18152
+ const res = await fetch(`${apiUrl.replace(/\/+$/, "")}/api/packages/me`, {
18153
+ headers: { Authorization: `Bearer ${token}` }
18154
+ });
18155
+ if (cancelled) return;
18156
+ if (!res.ok) {
18157
+ resolver3.setUserPackageFeatures(null);
18158
+ return;
18159
+ }
18160
+ const data = await res.json();
18161
+ if (cancelled) return;
18162
+ if (!data.package) {
18163
+ resolver3.setUserPackageFeatures(null);
18164
+ return;
18165
+ }
18166
+ resolver3.setUserPackageFeatures(data.features ?? {});
18167
+ } catch {
18168
+ if (!cancelled) resolver3.setUserPackageFeatures(null);
18169
+ }
18170
+ })();
18171
+ return () => {
18172
+ cancelled = true;
18173
+ };
18174
+ }, [apiUrl, getAuthToken]);
18175
+ }
18043
18176
  function LicenseRequiredOverlay({
18044
18177
  reason,
18045
18178
  onOpenLicenseSettings
@@ -22756,6 +22889,7 @@ var ChartCanvas = forwardRef(
22756
22889
  const capabilities = useChartCapabilities();
22757
22890
  const dataBlocked = useLicenseDataBlocked();
22758
22891
  useHostLicense(apiUrl, getAuthToken);
22892
+ useUserPackage(apiUrl, getAuthToken);
22759
22893
  const [indicators, setIndicators] = useState([]);
22760
22894
  const [totalHeight, setTotalHeight] = useState(600);
22761
22895
  const [activeTool, setActiveTool] = useState(initialActiveTool ?? "cursor");
@@ -26582,7 +26716,7 @@ function _guessFrontMonth(product, months) {
26582
26716
  }
26583
26717
 
26584
26718
  // src/version.ts
26585
- var FORGECHARTS_VERSION = "1.5.36" ;
26719
+ var FORGECHARTS_VERSION = "1.5.38" ;
26586
26720
  var TIMEZONE_OPTIONS = [
26587
26721
  { label: "UTC", value: "UTC" },
26588
26722
  { label: "Exchange", value: "exchange" },
@@ -31094,6 +31228,7 @@ function ChartWorkspace({
31094
31228
  const capabilities = useChartCapabilities();
31095
31229
  const dataBlocked = useLicenseDataBlocked();
31096
31230
  useHostLicense(hostApiUrl, getAuthToken);
31231
+ useUserPackage(hostApiUrl, getAuthToken);
31097
31232
  const autoTrading = tradingBridge !== void 0;
31098
31233
  const [autoOrderEntryOpen, setAutoOrderEntryOpen] = React11.useState(false);
31099
31234
  const [autoTradingPanelOpen, setAutoTradingPanelOpen] = React11.useState(false);
@@ -33351,6 +33486,6 @@ var CommandDispatcher = class {
33351
33486
  }
33352
33487
  };
33353
33488
 
33354
- export { AgentFAB, AgentProvider, AssistantPanel, ChartCanvas, ChartWorkspace, CommandDispatcher, LicenseRequiredOverlay, OrderTicket, VoiceInput, createTradingBridgeLogger, useAgent, useChartCapabilities, useHostLicense, useLicenseDataBlocked };
33489
+ export { AgentFAB, AgentProvider, AssistantPanel, ChartCanvas, ChartWorkspace, CommandDispatcher, LicenseRequiredOverlay, OrderTicket, VoiceInput, createTradingBridgeLogger, useAgent, useChartCapabilities, useHostLicense, useLicenseDataBlocked, useUserPackage };
33355
33490
  //# sourceMappingURL=index.js.map
33356
33491
  //# sourceMappingURL=index.js.map