@opentiny/next-sdk 0.2.6-beta.0 → 0.2.6-beta.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.
@@ -50551,7 +50551,52 @@ ${observationText}
50551
50551
  const MSG_TOOL_CALL = "next-sdk:tool-call";
50552
50552
  const MSG_TOOL_RESPONSE = "next-sdk:tool-response";
50553
50553
  const MSG_PAGE_READY = "next-sdk:page-ready";
50554
+ const MSG_PAGE_LEAVE = "next-sdk:page-leave";
50555
+ const MSG_REMOTER_READY = "next-sdk:remoter-ready";
50556
+ const MSG_ROUTE_STATE_INITIAL = "next-sdk:route-state-initial";
50554
50557
  const activePages = /* @__PURE__ */ new Map();
50558
+ const broadcastTargets = /* @__PURE__ */ new Set();
50559
+ function initBroadcastTargets() {
50560
+ if (typeof window !== "undefined") {
50561
+ broadcastTargets.add(window);
50562
+ }
50563
+ }
50564
+ initBroadcastTargets();
50565
+ function broadcastRouteChange(type2, route) {
50566
+ const msg = { type: type2, route };
50567
+ const origin = window.location.origin || "*";
50568
+ broadcastTargets.forEach((target) => {
50569
+ try {
50570
+ target.postMessage(msg, origin);
50571
+ } catch {
50572
+ }
50573
+ });
50574
+ }
50575
+ function setupIframeRemoterBridge() {
50576
+ if (typeof window === "undefined") return;
50577
+ window.addEventListener("message", (event) => {
50578
+ if (event.data?.type !== MSG_REMOTER_READY || !event.source) return;
50579
+ const target = event.source;
50580
+ broadcastTargets.add(target);
50581
+ const payload = {
50582
+ type: MSG_ROUTE_STATE_INITIAL,
50583
+ toolRouteMap: Array.from(toolRouteMap.entries()),
50584
+ activeRoutes: Array.from(activePages.keys())
50585
+ };
50586
+ try {
50587
+ target.postMessage(payload, window.location.origin || "*");
50588
+ } catch {
50589
+ }
50590
+ });
50591
+ }
50592
+ setupIframeRemoterBridge();
50593
+ const toolRouteMap = /* @__PURE__ */ new Map();
50594
+ function getToolRouteMap() {
50595
+ return toolRouteMap;
50596
+ }
50597
+ function getActiveRoutes() {
50598
+ return new Set(activePages.keys());
50599
+ }
50555
50600
  let _navigator = null;
50556
50601
  function setNavigator(fn) {
50557
50602
  _navigator = fn;
@@ -50623,11 +50668,13 @@ ${observationText}
50623
50668
  get(target, prop, receiver) {
50624
50669
  if (prop === "registerTool") {
50625
50670
  return (name16, config2, handlerOrRoute) => {
50671
+ const rawRegister = target.registerTool.bind(target);
50626
50672
  if (typeof handlerOrRoute === "function") {
50627
- return target.registerTool(name16, config2, handlerOrRoute);
50673
+ return rawRegister(name16, config2, handlerOrRoute);
50628
50674
  }
50629
50675
  const { route, timeout } = handlerOrRoute;
50630
- return target.registerTool(name16, config2, buildPageHandler(name16, route, timeout));
50676
+ toolRouteMap.set(name16, route);
50677
+ return rawRegister(name16, config2, buildPageHandler(name16, route, timeout));
50631
50678
  };
50632
50679
  }
50633
50680
  return Reflect.get(target, prop, receiver);
@@ -50635,10 +50682,11 @@ ${observationText}
50635
50682
  });
50636
50683
  }
50637
50684
  function registerPageTool(options) {
50638
- const { handlers } = options;
50639
- const route = window.location.pathname;
50685
+ const { route: routeOption, handlers } = options;
50686
+ const normalizeRoute = (value) => value.replace(/\/+$/, "") || "/";
50687
+ const route = normalizeRoute(routeOption ?? window.location.pathname);
50640
50688
  const handleMessage = async (event) => {
50641
- if (event.source !== window || event.data?.type !== MSG_TOOL_CALL || event.data?.route !== route || !(event.data.toolName in handlers)) {
50689
+ if (event.source !== window || event.data?.type !== MSG_TOOL_CALL || normalizeRoute(String(event.data?.route ?? "")) !== route || !(event.data.toolName in handlers)) {
50642
50690
  return;
50643
50691
  }
50644
50692
  const { callId, toolName, input } = event.data;
@@ -50658,10 +50706,11 @@ ${observationText}
50658
50706
  };
50659
50707
  activePages.set(route, true);
50660
50708
  window.addEventListener("message", handleMessage);
50661
- window.postMessage({ type: MSG_PAGE_READY, route }, window.location.origin || "*");
50709
+ broadcastRouteChange(MSG_PAGE_READY, route);
50662
50710
  return () => {
50663
50711
  activePages.delete(route);
50664
50712
  window.removeEventListener("message", handleMessage);
50713
+ broadcastRouteChange(MSG_PAGE_LEAVE, route);
50665
50714
  };
50666
50715
  }
50667
50716
  const MAIN_SKILL_PATH_REG = /^\.\/[^/]+\/SKILL\.md$/;
@@ -50763,6 +50812,9 @@ ${lines.join("\n")}
50763
50812
  exports2.ExtensionClientTransport = ExtensionClientTransport;
50764
50813
  exports2.ExtensionPageServerTransport = ExtensionPageServerTransport;
50765
50814
  exports2.InMemoryTransport = InMemoryTransport;
50815
+ exports2.MSG_PAGE_LEAVE = MSG_PAGE_LEAVE;
50816
+ exports2.MSG_REMOTER_READY = MSG_REMOTER_READY;
50817
+ exports2.MSG_ROUTE_STATE_INITIAL = MSG_ROUTE_STATE_INITIAL;
50766
50818
  exports2.QrCode = QrCode;
50767
50819
  exports2.ResourceTemplate = ResourceTemplate;
50768
50820
  exports2.UriTemplate = UriTemplate;
@@ -50778,12 +50830,14 @@ ${lines.join("\n")}
50778
50830
  exports2.createStreamableHTTPClientTransport = createStreamableHTTPClientTransport;
50779
50831
  exports2.formatSkillsForSystemPrompt = formatSkillsForSystemPrompt;
50780
50832
  exports2.getAISDKTools = getAISDKTools;
50833
+ exports2.getActiveRoutes = getActiveRoutes;
50781
50834
  exports2.getDisplayName = getDisplayName;
50782
50835
  exports2.getMainSkillPathByName = getMainSkillPathByName;
50783
50836
  exports2.getMainSkillPaths = getMainSkillPaths;
50784
50837
  exports2.getSkillMdContent = getSkillMdContent;
50785
50838
  exports2.getSkillMdPaths = getSkillMdPaths;
50786
50839
  exports2.getSkillOverviews = getSkillOverviews;
50840
+ exports2.getToolRouteMap = getToolRouteMap;
50787
50841
  exports2.isMcpClient = isMcpClient;
50788
50842
  exports2.isMcpServer = isMcpServer;
50789
50843
  exports2.isMessageChannelClientTransport = isMessageChannelClientTransport;