@redocly/replay 0.23.0-next.0 → 0.23.0-next.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.
@@ -1,5 +1,5 @@
1
- import { s as h, r as i, e as x } from "./replay-index-C609Ibh9.js";
2
- import { d as j, a as b, j as d } from "./replay-index-C609Ibh9.js";
1
+ import { s as h, r as i, e as x } from "./replay-index-BUQKXz2B.js";
2
+ import { d as j, a as b, j as d } from "./replay-index-BUQKXz2B.js";
3
3
  async function u(n, e) {
4
4
  const t = h(), l = await i(n), c = await i(e), o = l.replace(new RegExp(`^${t}+`), "").split(t).filter(Boolean), r = c.replace(new RegExp(`^${t}+`), "").split(t).filter(Boolean), m = Math.min(o.length, r.length);
5
5
  let s = 0;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-Dg03U1So.js");async function u(r,n){const t=e.sep(),l=await e.resolve(r),c=await e.resolve(n),a=l.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),i=c.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),m=Math.min(a.length,i.length);let s=0;for(let o=0;o<m&&a[o]===i[o];o++)s++;const p=a.slice(s).map(()=>".."),f=i.slice(s);return[...p,...f].join(t)}async function g(r){const n=await e.extname(r);return n?`.${n}`:""}exports.dirname=e.dirname;exports.isAbsolute=e.isAbsolute;exports.join=e.join;exports.resolve=e.resolve;exports.extname=g;exports.relative=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-02jfHA1h.js");async function u(r,n){const t=e.sep(),l=await e.resolve(r),c=await e.resolve(n),a=l.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),i=c.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),m=Math.min(a.length,i.length);let s=0;for(let o=0;o<m&&a[o]===i[o];o++)s++;const p=a.slice(s).map(()=>".."),f=i.slice(s);return[...p,...f].join(t)}async function g(r){const n=await e.extname(r);return n?`.${n}`:""}exports.dirname=e.dirname;exports.isAbsolute=e.isAbsolute;exports.join=e.join;exports.resolve=e.resolve;exports.extname=g;exports.relative=u;
package/dist/replay.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-Dg03U1So.js"),t=require("./replay-oauth2-redirect-handler-Bqw5UUvl.js");exports.EmbeddedReplay=e.EmbeddedReplay;exports.Modal=e.Modal;exports.Replay=e.Replay;exports.ReplayOverlay=e.ReplayOverlay;Object.defineProperty(exports,"SpanStatusCode",{enumerable:!0,get:()=>e.SpanStatusCode});exports.TelemetryClient=e.TelemetryClient;exports.applyThemeToDOM=e.applyThemeToDOM;exports.getCurrentTheme=e.getCurrentTheme;exports.resolveTheme=e.resolveTheme;exports.useTelemetry=e.useTelemetry;exports.useTelemetryClient=e.useTelemetryClient;exports.OAuth2Error=t.OAuth2Error;exports.handleOAuth2Redirect=t.handleOAuth2Redirect;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-02jfHA1h.js"),t=require("./replay-oauth2-redirect-handler-Bqw5UUvl.js");exports.AgentLoop=e.AgentLoop;exports.AiPanelContext=e.AiPanelContext;exports.EmbeddedReplay=e.EmbeddedReplay;exports.Modal=e.Modal;exports.Replay=e.Replay;exports.ReplayOverlay=e.ReplayOverlay;Object.defineProperty(exports,"SpanStatusCode",{enumerable:!0,get:()=>e.SpanStatusCode});exports.TelemetryClient=e.TelemetryClient;exports.applyThemeToDOM=e.applyThemeToDOM;exports.getCurrentTheme=e.getCurrentTheme;exports.resolveTheme=e.resolveTheme;exports.useAiPanel=e.useAiPanel;exports.useTelemetry=e.useTelemetry;exports.useTelemetryClient=e.useTelemetryClient;exports.OAuth2Error=t.OAuth2Error;exports.handleOAuth2Redirect=t.handleOAuth2Redirect;
package/dist/replay.d.ts CHANGED
@@ -1,10 +1,55 @@
1
+ import { AgentCallParameters } from 'ai';
1
2
  import { AsyncApiReplay } from '@redocly/replay-asyncapi-sdk';
3
+ import { Context } from 'react';
4
+ import { GenerateTextResult } from 'ai';
2
5
  import { ImmutableObject } from '@redocly/hookstate-core';
6
+ import { InferToolInput } from 'ai';
7
+ import { InferToolOutput } from 'ai';
3
8
  import { JSX } from 'react/jsx-runtime';
4
9
  import { NamedExoticComponent } from 'react';
5
10
  import { ReactElement } from 'react';
6
11
  import { SpanStatusCode } from '@opentelemetry/api';
12
+ import { StreamTextResult } from 'ai';
13
+ import { SystemModelMessage } from 'ai';
7
14
  import { Context as TelemetryContext } from '@opentelemetry/api';
15
+ import { Tool } from 'ai';
16
+ import { ToolExecuteFunction } from 'ai';
17
+ import { ToolLoopAgentOnFinishCallback } from 'ai';
18
+ import { ToolLoopAgentOnStepFinishCallback } from 'ai';
19
+ import { ToolLoopAgentSettings } from 'ai';
20
+
21
+ export declare class AgentLoop {
22
+ private readonly toolLoopAgent;
23
+ private readonly maxHistoryMessages;
24
+ private readonly maxHistoryChars;
25
+ constructor(config: AgentRuntimeConfig);
26
+ stream(options: AgentLoopMethodParameters): Promise<StreamTextResult<ReplayToolSet, never>>;
27
+ generate(options: AgentLoopMethodParameters): Promise<GenerateTextResult<ReplayToolSet, never>>;
28
+ private prepareOptions;
29
+ }
30
+
31
+ declare type AgentLoopMethodParameters = AgentCallParameters<never, ReplayToolSet>;
32
+
33
+ declare type AgentRuntimeConfig = {
34
+ model: Model;
35
+ context: SystemModelMessage[];
36
+ maxSteps?: number;
37
+ maxOutputTokens?: ToolLoopAgentConfig['maxOutputTokens'];
38
+ maxRetries?: ToolLoopAgentConfig['maxRetries'];
39
+ onStepFinish?: ToolLoopAgentOnStepFinishCallback<ReplayToolSet>;
40
+ onFinish?: ToolLoopAgentOnFinishCallback<ReplayToolSet>;
41
+ maxHistoryMessages?: number;
42
+ maxHistoryChars?: number;
43
+ toolRegistry: ToolRegistry;
44
+ };
45
+
46
+ export declare const AiPanelContext: Context<AiPanelContextValue>;
47
+
48
+ export declare type AiPanelContextValue = {
49
+ isOpen: boolean;
50
+ openPanel: () => void;
51
+ closePanel: () => void;
52
+ };
8
53
 
9
54
  declare type ApiPath = {
10
55
  path: string;
@@ -56,8 +101,37 @@ declare type ClientCredentialsOAuthFlowsObject = {
56
101
 
57
102
  declare type ConvertOperationFunction = (path: string, method: string, openAPI: any) => OpenAPIOperation_2 | undefined;
58
103
 
104
+ declare const definitions: {
105
+ run_request: Tool< {}, {
106
+ error: {
107
+ message: string;
108
+ details?: unknown;
109
+ };
110
+ isError: true;
111
+ data?: undefined;
112
+ } | {
113
+ isError: false;
114
+ data?: unknown;
115
+ error?: undefined;
116
+ }>;
117
+ };
118
+
59
119
  export declare function EmbeddedReplay(props: ReplayAppProps): JSX.Element;
60
120
 
121
+ declare type EndpointModel = {
122
+ provider: EndpointProvider;
123
+ baseUrl: string;
124
+ accessToken: string;
125
+ };
126
+
127
+ declare type EndpointProvider = 'reunite';
128
+
129
+ declare type GeminiModel = {
130
+ provider: 'gemini';
131
+ modelId: 'gemini-2.5-flash' | 'gemini-3-flash-preview';
132
+ apiKey: string;
133
+ };
134
+
61
135
  export declare function getCurrentTheme(): ResolvedTheme;
62
136
 
63
137
  declare type GetOperationURLFunction = (operationId?: string) => string | undefined;
@@ -71,6 +145,7 @@ declare type ImplicitOAuthFlowsObject = {
71
145
 
72
146
  declare type InputSettings = {
73
147
  corsProxyUrl?: string;
148
+ credentialOrigin?: string;
74
149
  disableCollectionsTab?: boolean;
75
150
  disableDraft?: boolean;
76
151
  oAuth2RedirectURI?: string | null;
@@ -87,6 +162,7 @@ declare type InputSettings = {
87
162
  onRequestReset?: () => void;
88
163
  telemetry?: TelemetryConfig;
89
164
  hideOtherSecuritySchemes?: boolean;
165
+ layout?: ReplayLayout;
90
166
  aiEnabled?: boolean;
91
167
  };
92
168
 
@@ -125,6 +201,8 @@ declare type ModalProps = {
125
201
  topOffset?: number;
126
202
  };
127
203
 
204
+ declare type Model = GeminiModel | EndpointModel;
205
+
128
206
  export declare class OAuth2Error extends Error {
129
207
  readonly error?: string;
130
208
  readonly error_description?: string;
@@ -639,9 +717,12 @@ declare type ReplayAppProps = {
639
717
  activeOperationPointer?: string;
640
718
  api?: OpenAPIDefinition;
641
719
  settings: InputSettings;
720
+ onLoad?: () => void;
642
721
  renderProjectSelect?: () => React.ReactNode;
643
722
  };
644
723
 
724
+ declare type ReplayLayout = 'default' | 'overlay' | 'preview';
725
+
645
726
  export declare type ReplayOnChangeParams = {
646
727
  operations: ChangedOperation[];
647
728
  activeMimeName?: string;
@@ -655,10 +736,33 @@ export declare function ReplayOverlay(props: ReplayOverlayProps): JSX.Element;
655
736
 
656
737
  declare type ReplayOverlayProps = {
657
738
  onClose: () => void;
658
- onLoad?: () => void;
659
739
  onRequestChange?: (props: ReplayOnChangeParams) => void;
660
740
  } & ReplayAppProps;
661
741
 
742
+ declare type ReplayTool<T extends ReplayToolNames> = Tool<ReplayToolInput<T>, ReplayToolOutput<T>> & {
743
+ execute: ReplayToolExecutor<T>;
744
+ };
745
+
746
+ declare type ReplayToolDefinition<T extends ReplayToolNames> = ReplayToolDefinitions[T];
747
+
748
+ declare type ReplayToolDefinitions = typeof definitions;
749
+
750
+ declare type ReplayToolExecutor<T extends ReplayToolNames> = ToolExecuteFunction<ReplayToolInput<T>, ReplayToolOutput<T>>;
751
+
752
+ declare type ReplayToolExecutorMap<T extends ReplayToolNames = ReplayToolNames> = Partial<{
753
+ [K in T]: ReplayToolExecutor<K>;
754
+ }>;
755
+
756
+ declare type ReplayToolInput<T extends ReplayToolNames> = InferToolInput<ReplayToolDefinition<T>>;
757
+
758
+ declare type ReplayToolNames = keyof ReplayToolDefinitions;
759
+
760
+ declare type ReplayToolOutput<T extends ReplayToolNames> = InferToolOutput<ReplayToolDefinition<T>>;
761
+
762
+ declare type ReplayToolSet<T extends ReplayToolNames = ReplayToolNames> = {
763
+ [K in T]: ReplayTool<K>;
764
+ };
765
+
662
766
  export declare type ResolvedTheme = 'light' | 'dark';
663
767
 
664
768
  export declare function resolveTheme(theme: Theme): ResolvedTheme;
@@ -746,7 +850,23 @@ export declare type TelemetryMethods = {
746
850
 
747
851
  export declare type Theme = 'light' | 'dark' | 'auto';
748
852
 
749
- declare type TracerName = 'try-it' | 'replay-openapi' | 'desktop';
853
+ declare type ToolLoopAgentConfig = ToolLoopAgentSettings<never, ReplayToolSet, never>;
854
+
855
+ declare class ToolRegistry {
856
+ private readonly executors;
857
+ private readonly definitions;
858
+ register<T extends ReplayToolNames>(name: T, executor: ReplayToolExecutor<T>): void;
859
+ registerMany<T extends ReplayToolNames>(executors: ReplayToolExecutorMap<T>): void;
860
+ get<T extends ReplayToolNames>(name: T): ReplayTool<T>;
861
+ list(): ReplayToolSet;
862
+ private buildTool;
863
+ getToolSet(): ReplayToolSet;
864
+ private assignBuiltTool;
865
+ }
866
+
867
+ declare type TracerName = 'try-it' | 'replay-openapi' | 'desktop' | 'reunite-tab';
868
+
869
+ export declare function useAiPanel(): AiPanelContextValue;
750
870
 
751
871
  export declare function useTelemetry(): TelemetryMethods;
752
872
 
package/dist/replay.js CHANGED
@@ -1,17 +1,20 @@
1
- import { E as s, M as r, R as t, w as l, S as m, T as o, y, z as p, x as T, B as d, C as h } from "./replay-index-C609Ibh9.js";
2
- import { O as n, h as C } from "./replay-oauth2-redirect-handler-CqKZB3aV.js";
1
+ import { G as s, D as t, E as l, M as r, R as o, w as m, S as n, T as p, y, z as T, x as d, F as h, B as u, C } from "./replay-index-BUQKXz2B.js";
2
+ import { O as A, h as O } from "./replay-oauth2-redirect-handler-CqKZB3aV.js";
3
3
  export {
4
- s as EmbeddedReplay,
4
+ s as AgentLoop,
5
+ t as AiPanelContext,
6
+ l as EmbeddedReplay,
5
7
  r as Modal,
6
- n as OAuth2Error,
7
- t as Replay,
8
- l as ReplayOverlay,
9
- m as SpanStatusCode,
10
- o as TelemetryClient,
8
+ A as OAuth2Error,
9
+ o as Replay,
10
+ m as ReplayOverlay,
11
+ n as SpanStatusCode,
12
+ p as TelemetryClient,
11
13
  y as applyThemeToDOM,
12
- p as getCurrentTheme,
13
- C as handleOAuth2Redirect,
14
- T as resolveTheme,
15
- d as useTelemetry,
16
- h as useTelemetryClient
14
+ T as getCurrentTheme,
15
+ O as handleOAuth2Redirect,
16
+ d as resolveTheme,
17
+ h as useAiPanel,
18
+ u as useTelemetry,
19
+ C as useTelemetryClient
17
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/replay",
3
- "version": "0.23.0-next.0",
3
+ "version": "0.23.0-next.2",
4
4
  "type": "module",
5
5
  "main": "./dist/replay.cjs",
6
6
  "module": "./dist/replay.js",
@@ -20,11 +20,11 @@
20
20
  "react-dom": "^19.2.4",
21
21
  "react-router-dom": "^6.30.3",
22
22
  "styled-components": "^5.3.11",
23
- "@redocly/theme": "0.64.0-next.0"
23
+ "@redocly/theme": "0.64.0-next.2"
24
24
  },
25
25
  "dependencies": {
26
- "@ai-sdk/provider": "3.0.0",
27
26
  "@ai-sdk/google": "3.0.1",
27
+ "@ai-sdk/provider": "3.0.0",
28
28
  "@codemirror/autocomplete": "^6.15.0",
29
29
  "@codemirror/lang-html": "^6.4.7",
30
30
  "@codemirror/lang-java": "^6.0.2",
@@ -47,8 +47,8 @@
47
47
  "@opentelemetry/api": "1.9.0",
48
48
  "@redocly/hookstate-core": "^4.2.1",
49
49
  "@redocly/hookstate-devtools": "^4.2.0",
50
- "@redocly/openapi-core": "2.20.5",
51
- "@redocly/respect-core": "2.20.5",
50
+ "@redocly/openapi-core": "2.24.0",
51
+ "@redocly/respect-core": "2.24.0",
52
52
  "@redocly/vscode-json-languageservice": "^3.4.9",
53
53
  "@tauri-apps/api": "2.4.1",
54
54
  "@tauri-apps/plugin-dialog": "2.0.0-rc.1",
@@ -58,7 +58,9 @@
58
58
  "@uiw/react-codemirror": "^4.21.20",
59
59
  "ai": "6.0.111",
60
60
  "dayjs": "^1.11.7",
61
+ "drizzle-orm": "^0.36.4",
61
62
  "fast-xml-parser": "5.4.1",
63
+ "idb": "^8.0.2",
62
64
  "js-yaml": "4.1.1",
63
65
  "json-pointer": "^0.6.2",
64
66
  "json-schema-typed": "^8.0.1",
@@ -70,9 +72,8 @@
70
72
  "react-resizable-panels": "^3.0.6",
71
73
  "react-select": "5.10.1",
72
74
  "shellwords": "^1.1.1",
75
+ "ulid": "^2.3.0",
73
76
  "usehooks-ts": "^3.1.1",
74
- "drizzle-orm": "^0.36.4",
75
- "idb": "^8.0.2",
76
77
  "zod": "^3.25.76"
77
78
  },
78
79
  "devDependencies": {