@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.
@@ -50158,7 +50158,52 @@ ${observationText}
50158
50158
  const MSG_TOOL_CALL = "next-sdk:tool-call";
50159
50159
  const MSG_TOOL_RESPONSE = "next-sdk:tool-response";
50160
50160
  const MSG_PAGE_READY = "next-sdk:page-ready";
50161
+ const MSG_PAGE_LEAVE = "next-sdk:page-leave";
50162
+ const MSG_REMOTER_READY = "next-sdk:remoter-ready";
50163
+ const MSG_ROUTE_STATE_INITIAL = "next-sdk:route-state-initial";
50161
50164
  const activePages = /* @__PURE__ */ new Map();
50165
+ const broadcastTargets = /* @__PURE__ */ new Set();
50166
+ function initBroadcastTargets() {
50167
+ if (typeof window !== "undefined") {
50168
+ broadcastTargets.add(window);
50169
+ }
50170
+ }
50171
+ initBroadcastTargets();
50172
+ function broadcastRouteChange(type2, route) {
50173
+ const msg = { type: type2, route };
50174
+ const origin = window.location.origin || "*";
50175
+ broadcastTargets.forEach((target) => {
50176
+ try {
50177
+ target.postMessage(msg, origin);
50178
+ } catch {
50179
+ }
50180
+ });
50181
+ }
50182
+ function setupIframeRemoterBridge() {
50183
+ if (typeof window === "undefined") return;
50184
+ window.addEventListener("message", (event) => {
50185
+ if (event.data?.type !== MSG_REMOTER_READY || !event.source) return;
50186
+ const target = event.source;
50187
+ broadcastTargets.add(target);
50188
+ const payload = {
50189
+ type: MSG_ROUTE_STATE_INITIAL,
50190
+ toolRouteMap: Array.from(toolRouteMap.entries()),
50191
+ activeRoutes: Array.from(activePages.keys())
50192
+ };
50193
+ try {
50194
+ target.postMessage(payload, window.location.origin || "*");
50195
+ } catch {
50196
+ }
50197
+ });
50198
+ }
50199
+ setupIframeRemoterBridge();
50200
+ const toolRouteMap = /* @__PURE__ */ new Map();
50201
+ function getToolRouteMap() {
50202
+ return toolRouteMap;
50203
+ }
50204
+ function getActiveRoutes() {
50205
+ return new Set(activePages.keys());
50206
+ }
50162
50207
  let _navigator = null;
50163
50208
  function setNavigator(fn) {
50164
50209
  _navigator = fn;
@@ -50230,11 +50275,13 @@ function withPageTools(server) {
50230
50275
  get(target, prop, receiver) {
50231
50276
  if (prop === "registerTool") {
50232
50277
  return (name16, config2, handlerOrRoute) => {
50278
+ const rawRegister = target.registerTool.bind(target);
50233
50279
  if (typeof handlerOrRoute === "function") {
50234
- return target.registerTool(name16, config2, handlerOrRoute);
50280
+ return rawRegister(name16, config2, handlerOrRoute);
50235
50281
  }
50236
50282
  const { route, timeout } = handlerOrRoute;
50237
- return target.registerTool(name16, config2, buildPageHandler(name16, route, timeout));
50283
+ toolRouteMap.set(name16, route);
50284
+ return rawRegister(name16, config2, buildPageHandler(name16, route, timeout));
50238
50285
  };
50239
50286
  }
50240
50287
  return Reflect.get(target, prop, receiver);
@@ -50242,10 +50289,11 @@ function withPageTools(server) {
50242
50289
  });
50243
50290
  }
50244
50291
  function registerPageTool(options) {
50245
- const { handlers } = options;
50246
- const route = window.location.pathname;
50292
+ const { route: routeOption, handlers } = options;
50293
+ const normalizeRoute = (value) => value.replace(/\/+$/, "") || "/";
50294
+ const route = normalizeRoute(routeOption ?? window.location.pathname);
50247
50295
  const handleMessage = async (event) => {
50248
- if (event.source !== window || event.data?.type !== MSG_TOOL_CALL || event.data?.route !== route || !(event.data.toolName in handlers)) {
50296
+ if (event.source !== window || event.data?.type !== MSG_TOOL_CALL || normalizeRoute(String(event.data?.route ?? "")) !== route || !(event.data.toolName in handlers)) {
50249
50297
  return;
50250
50298
  }
50251
50299
  const { callId, toolName, input } = event.data;
@@ -50265,10 +50313,11 @@ function registerPageTool(options) {
50265
50313
  };
50266
50314
  activePages.set(route, true);
50267
50315
  window.addEventListener("message", handleMessage);
50268
- window.postMessage({ type: MSG_PAGE_READY, route }, window.location.origin || "*");
50316
+ broadcastRouteChange(MSG_PAGE_READY, route);
50269
50317
  return () => {
50270
50318
  activePages.delete(route);
50271
50319
  window.removeEventListener("message", handleMessage);
50320
+ broadcastRouteChange(MSG_PAGE_LEAVE, route);
50272
50321
  };
50273
50322
  }
50274
50323
  const MAIN_SKILL_PATH_REG = /^\.\/[^/]+\/SKILL\.md$/;
@@ -50371,6 +50420,9 @@ export {
50371
50420
  ExtensionClientTransport,
50372
50421
  ExtensionPageServerTransport,
50373
50422
  InMemoryTransport,
50423
+ MSG_PAGE_LEAVE,
50424
+ MSG_REMOTER_READY,
50425
+ MSG_ROUTE_STATE_INITIAL,
50374
50426
  QrCode,
50375
50427
  ResourceTemplate,
50376
50428
  UriTemplate,
@@ -50386,12 +50438,14 @@ export {
50386
50438
  createStreamableHTTPClientTransport,
50387
50439
  formatSkillsForSystemPrompt,
50388
50440
  getAISDKTools,
50441
+ getActiveRoutes,
50389
50442
  getDisplayName,
50390
50443
  getMainSkillPathByName,
50391
50444
  getMainSkillPaths,
50392
50445
  getSkillMdContent,
50393
50446
  getSkillMdPaths,
50394
50447
  getSkillOverviews,
50448
+ getToolRouteMap,
50395
50449
  isMcpClient,
50396
50450
  isMcpServer,
50397
50451
  isMessageChannelClientTransport,