@ax-llm/ax 9.0.24 → 9.0.26

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.
Files changed (75) hide show
  1. package/ai/anthropic/api.d.ts +1 -1
  2. package/ai/azure-openai/api.d.ts +1 -1
  3. package/ai/cohere/api.d.ts +1 -1
  4. package/ai/deepseek/api.d.ts +1 -1
  5. package/ai/google-gemini/api.d.ts +1 -1
  6. package/ai/google-gemini/types.d.ts +1 -1
  7. package/ai/groq/api.d.ts +1 -1
  8. package/ai/huggingface/api.d.ts +1 -1
  9. package/ai/mistral/api.d.ts +1 -1
  10. package/ai/ollama/api.d.ts +1 -1
  11. package/ai/openai/api.d.ts +1 -1
  12. package/ai/together/api.d.ts +1 -1
  13. package/cjs/ai/anthropic/api.d.ts +1 -1
  14. package/cjs/ai/azure-openai/api.d.ts +1 -1
  15. package/cjs/ai/cohere/api.d.ts +1 -1
  16. package/cjs/ai/deepseek/api.d.ts +1 -1
  17. package/cjs/ai/google-gemini/api.d.ts +1 -1
  18. package/cjs/ai/google-gemini/types.d.ts +1 -1
  19. package/cjs/ai/groq/api.d.ts +1 -1
  20. package/cjs/ai/huggingface/api.d.ts +1 -1
  21. package/cjs/ai/mistral/api.d.ts +1 -1
  22. package/cjs/ai/ollama/api.d.ts +1 -1
  23. package/cjs/ai/openai/api.d.ts +1 -1
  24. package/cjs/ai/together/api.d.ts +1 -1
  25. package/cjs/dsp/functions.js.map +1 -0
  26. package/cjs/dsp/generate.d.ts +5 -2
  27. package/cjs/dsp/generate.js +12 -5
  28. package/cjs/dsp/generate.js.map +1 -1
  29. package/cjs/dsp/jsonschema.js.map +1 -0
  30. package/cjs/funcs/code.d.ts +10 -3
  31. package/cjs/funcs/code.js +50 -54
  32. package/cjs/funcs/code.js.map +1 -1
  33. package/cjs/funcs/docker.d.ts +101 -0
  34. package/cjs/funcs/docker.js +217 -0
  35. package/cjs/funcs/docker.js.map +1 -0
  36. package/cjs/funcs/embed.d.ts +16 -5
  37. package/cjs/funcs/embed.js +38 -29
  38. package/cjs/funcs/embed.js.map +1 -1
  39. package/cjs/funcs/index.d.ts +1 -1
  40. package/cjs/funcs/index.js +1 -1
  41. package/cjs/funcs/index.js.map +1 -1
  42. package/cjs/prompts/react.js +7 -2
  43. package/cjs/prompts/react.js.map +1 -1
  44. package/dsp/functions.js.map +1 -0
  45. package/dsp/generate.d.ts +5 -2
  46. package/dsp/generate.js +12 -5
  47. package/dsp/generate.js.map +1 -1
  48. package/dsp/jsonschema.js.map +1 -0
  49. package/funcs/code.d.ts +10 -3
  50. package/funcs/code.js +48 -52
  51. package/funcs/code.js.map +1 -1
  52. package/funcs/docker.d.ts +101 -0
  53. package/funcs/docker.js +213 -0
  54. package/funcs/docker.js.map +1 -0
  55. package/funcs/embed.d.ts +16 -5
  56. package/funcs/embed.js +36 -27
  57. package/funcs/embed.js.map +1 -1
  58. package/funcs/index.d.ts +1 -1
  59. package/funcs/index.js +1 -1
  60. package/funcs/index.js.map +1 -1
  61. package/package.json +1 -1
  62. package/prompts/react.js +7 -2
  63. package/prompts/react.js.map +1 -1
  64. package/cjs/funcs/functions.js.map +0 -1
  65. package/cjs/funcs/jsonschema.js.map +0 -1
  66. package/funcs/functions.js.map +0 -1
  67. package/funcs/jsonschema.js.map +0 -1
  68. /package/cjs/{funcs → dsp}/functions.d.ts +0 -0
  69. /package/cjs/{funcs → dsp}/functions.js +0 -0
  70. /package/cjs/{funcs → dsp}/jsonschema.d.ts +0 -0
  71. /package/cjs/{funcs → dsp}/jsonschema.js +0 -0
  72. /package/{funcs → dsp}/functions.d.ts +0 -0
  73. /package/{funcs → dsp}/functions.js +0 -0
  74. /package/{funcs → dsp}/jsonschema.d.ts +0 -0
  75. /package/{funcs → dsp}/jsonschema.js +0 -0
package/funcs/code.d.ts CHANGED
@@ -1,9 +1,16 @@
1
- import type { AxFunction } from '../ai/index.js';
2
- export declare const axJSInterpreterFunction: (permissions?: readonly AxCodeInterpreterPermission[]) => AxFunction;
3
- export declare enum AxCodeInterpreterPermission {
1
+ import type { AxFunction } from '../ai/types.js';
2
+ export declare enum AxJSInterpreterPermission {
4
3
  FS = "node:fs",
5
4
  NET = "net",
6
5
  OS = "os",
7
6
  CRYPTO = "crypto",
8
7
  PROCESS = "process"
9
8
  }
9
+ export declare class AxJSInterpreter {
10
+ private permissions;
11
+ constructor({ permissions }?: Readonly<{
12
+ permissions?: readonly AxJSInterpreterPermission[];
13
+ }> | undefined);
14
+ private codeInterpreterJavascript;
15
+ toFunction(): AxFunction;
16
+ }
package/funcs/code.js CHANGED
@@ -5,59 +5,55 @@ import * as _fs from 'node:fs';
5
5
  import * as _os from 'os';
6
6
  import * as _process from 'process';
7
7
  import { runInNewContext } from 'vm';
8
- export const axJSInterpreterFunction = (permissions = []) => ({
9
- name: 'jsInterpreter',
10
- description: 'Run Javascript code',
11
- parameters: {
12
- type: 'object',
13
- properties: {
14
- code: {
15
- type: 'string',
16
- description: 'JS code with a return value in the end.'
17
- }
18
- },
19
- required: ['code']
20
- },
21
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
- func: ({ code }) => {
23
- return new Promise((resolve) => {
24
- resolve(codeInterpreterJavascript(code, permissions));
25
- });
8
+ export var AxJSInterpreterPermission;
9
+ (function (AxJSInterpreterPermission) {
10
+ AxJSInterpreterPermission["FS"] = "node:fs";
11
+ AxJSInterpreterPermission["NET"] = "net";
12
+ AxJSInterpreterPermission["OS"] = "os";
13
+ AxJSInterpreterPermission["CRYPTO"] = "crypto";
14
+ AxJSInterpreterPermission["PROCESS"] = "process";
15
+ })(AxJSInterpreterPermission || (AxJSInterpreterPermission = {}));
16
+ export class AxJSInterpreter {
17
+ permissions;
18
+ constructor({ permissions = [] } = {}) {
19
+ this.permissions = permissions ?? [];
26
20
  }
27
- });
28
- export var AxCodeInterpreterPermission;
29
- (function (AxCodeInterpreterPermission) {
30
- AxCodeInterpreterPermission["FS"] = "node:fs";
31
- AxCodeInterpreterPermission["NET"] = "net";
32
- AxCodeInterpreterPermission["OS"] = "os";
33
- AxCodeInterpreterPermission["CRYPTO"] = "crypto";
34
- AxCodeInterpreterPermission["PROCESS"] = "process";
35
- })(AxCodeInterpreterPermission || (AxCodeInterpreterPermission = {}));
36
- const codeInterpreterJavascript = (code, permissions = []
37
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
- ) => {
39
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
- const context = {
41
- // require: require,
42
- console: console
43
- };
44
- if (permissions.includes(AxCodeInterpreterPermission.FS)) {
45
- context.fs = _fs;
21
+ codeInterpreterJavascript(code) {
22
+ const context = { console };
23
+ if (this.permissions.includes(AxJSInterpreterPermission.FS)) {
24
+ context.fs = _fs;
25
+ }
26
+ if (this.permissions.includes(AxJSInterpreterPermission.NET)) {
27
+ context.http = _http;
28
+ context.https = _https;
29
+ }
30
+ if (this.permissions.includes(AxJSInterpreterPermission.OS)) {
31
+ context.os = _os;
32
+ }
33
+ if (this.permissions.includes(AxJSInterpreterPermission.CRYPTO)) {
34
+ context.crypto = _crypto;
35
+ }
36
+ if (this.permissions.includes(AxJSInterpreterPermission.PROCESS)) {
37
+ context.process = _process;
38
+ }
39
+ return runInNewContext(`(function() { ${code} })()`, context);
46
40
  }
47
- if (permissions.includes(AxCodeInterpreterPermission.NET)) {
48
- context.http = _http;
49
- context.https = _https;
41
+ toFunction() {
42
+ return {
43
+ name: 'javascriptInterpreter',
44
+ description: 'Use this function to run Javascript code and get any expected return value.',
45
+ parameters: {
46
+ type: 'object',
47
+ properties: {
48
+ code: {
49
+ type: 'string',
50
+ description: 'JS code with a return value in the end.'
51
+ }
52
+ },
53
+ required: ['code']
54
+ },
55
+ func: ({ code }) => this.codeInterpreterJavascript(code)
56
+ };
50
57
  }
51
- if (permissions.includes(AxCodeInterpreterPermission.OS)) {
52
- context.os = _os;
53
- }
54
- if (permissions.includes(AxCodeInterpreterPermission.CRYPTO)) {
55
- context.crypto = _crypto;
56
- }
57
- if (permissions.includes(AxCodeInterpreterPermission.PROCESS)) {
58
- context.process = _process;
59
- }
60
- // executing code within the sandbox
61
- return runInNewContext(`(function() { ${code} })()`, context);
62
- };
58
+ }
63
59
  //# sourceMappingURL=code.js.map
package/funcs/code.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"code.js","sourceRoot":"","sources":["../../funcs/code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,GAAG,MAAM,IAAI,CAAC;AAC1B,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAIrC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,cAAsD,EAAE,EAC5C,EAAE,CAAC,CAAC;IAChB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,qBAAqB;IAClC,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IAED,8DAA8D;IAC9D,IAAI,EAAE,CAAC,EAAE,IAAI,EAA8B,EAAgB,EAAE;QAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,OAAO,CAAC,yBAAyB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAN,IAAY,2BAMX;AAND,WAAY,2BAA2B;IACrC,6CAAc,CAAA;IACd,0CAAW,CAAA;IACX,wCAAS,CAAA;IACT,gDAAiB,CAAA;IACjB,kDAAmB,CAAA;AACrB,CAAC,EANW,2BAA2B,KAA3B,2BAA2B,QAMtC;AAED,MAAM,yBAAyB,GAAG,CAChC,IAAY,EACZ,cAAsD,EAAE;AACxD,8DAA8D;EACzD,EAAE;IACP,8DAA8D;IAC9D,MAAM,OAAO,GAA2B;QACtC,oBAAoB;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC;IAEF,IAAI,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;QACrB,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,oCAAoC;IACpC,OAAO,eAAe,CAAC,iBAAiB,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC,CAAC"}
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../../funcs/code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,GAAG,MAAM,IAAI,CAAC;AAC1B,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAIrC,MAAM,CAAN,IAAY,yBAMX;AAND,WAAY,yBAAyB;IACnC,2CAAc,CAAA;IACd,wCAAW,CAAA;IACX,sCAAS,CAAA;IACT,8CAAiB,CAAA;IACjB,gDAAmB,CAAA;AACrB,CAAC,EANW,yBAAyB,KAAzB,yBAAyB,QAMpC;AAED,MAAM,OAAO,eAAe;IAClB,WAAW,CAAuC;IAE1D,YAAY,EACV,WAAW,GAAG,EAAE,KAGF,EAAE;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,EAAE,CAAC;IACvC,CAAC;IAEO,yBAAyB,CAAC,IAAY;QAC5C,MAAM,OAAO,GAA+B,EAAE,OAAO,EAAE,CAAC;QAExD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,OAAO,eAAe,CAAC,iBAAiB,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,UAAU;QACf,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EACT,6EAA6E;YAC/E,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,yCAAyC;qBACvD;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;YAED,IAAI,EAAE,CAAC,EAAE,IAAI,EAA8B,EAAE,EAAE,CAC7C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;SACvC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,101 @@
1
+ import type { AxFunction } from '../ai/types.js';
2
+ export interface AxDockerContainer {
3
+ Id: string;
4
+ Names: string[];
5
+ Image: string;
6
+ ImageID: string;
7
+ Command: string;
8
+ Created: number;
9
+ State: {
10
+ Status: string;
11
+ Running: boolean;
12
+ Paused: boolean;
13
+ Restarting: boolean;
14
+ OOMKilled: boolean;
15
+ Dead: boolean;
16
+ Pid: number;
17
+ ExitCode: number;
18
+ Error: string;
19
+ StartedAt: Date;
20
+ FinishedAt: Date;
21
+ };
22
+ Status: string;
23
+ Ports: Array<{
24
+ IP: string;
25
+ PrivatePort: number;
26
+ PublicPort: number;
27
+ Type: string;
28
+ }>;
29
+ Labels: {
30
+ [key: string]: string;
31
+ };
32
+ SizeRw: number;
33
+ SizeRootFs: number;
34
+ HostConfig: {
35
+ NetworkMode: string;
36
+ };
37
+ NetworkSettings: {
38
+ Networks: {
39
+ [key: string]: {
40
+ IPAddress: string;
41
+ IPPrefixLen: number;
42
+ Gateway: string;
43
+ MacAddress: string;
44
+ };
45
+ };
46
+ };
47
+ Mounts: Array<{
48
+ Type: string;
49
+ Source: string;
50
+ Destination: string;
51
+ Mode: string;
52
+ RW: boolean;
53
+ Propagation: string;
54
+ }>;
55
+ }
56
+ export declare class AxDockerSession {
57
+ private readonly apiUrl;
58
+ private containerId;
59
+ constructor(apiUrl?: string);
60
+ pullImage(imageName: string): Promise<void>;
61
+ createContainer({ imageName, volumes, doNotPullImage, tag }: Readonly<{
62
+ imageName: string;
63
+ volumes?: Array<{
64
+ hostPath: string;
65
+ containerPath: string;
66
+ }>;
67
+ doNotPullImage?: boolean;
68
+ tag?: string;
69
+ }>): Promise<{
70
+ Id: string;
71
+ }>;
72
+ findOrCreateContainer({ imageName, volumes, doNotPullImage, tag }: Readonly<{
73
+ imageName: string;
74
+ volumes?: Array<{
75
+ hostPath: string;
76
+ containerPath: string;
77
+ }>;
78
+ doNotPullImage?: boolean;
79
+ tag: string;
80
+ }>): Promise<{
81
+ Id: string;
82
+ isNew: boolean;
83
+ }>;
84
+ startContainer(): Promise<void>;
85
+ connectToContainer(containerId: string): Promise<void>;
86
+ stopContainers({ tag, remove, timeout }: Readonly<{
87
+ tag?: string;
88
+ remove?: boolean;
89
+ timeout?: number;
90
+ }>): Promise<Array<{
91
+ Id: string;
92
+ Action: 'stopped' | 'removed';
93
+ }>>;
94
+ listContainers(all?: boolean): Promise<AxDockerContainer[]>;
95
+ getContainerLogs(): Promise<string>;
96
+ executeCommand(command: string): Promise<string>;
97
+ private getContainerInfo;
98
+ private waitForContainerToBeRunning;
99
+ private fetchDockerAPI;
100
+ toFunction(): AxFunction;
101
+ }
@@ -0,0 +1,213 @@
1
+ export class AxDockerSession {
2
+ apiUrl;
3
+ containerId = null;
4
+ constructor(apiUrl = 'http://localhost:2375') {
5
+ this.apiUrl = apiUrl;
6
+ }
7
+ async pullImage(imageName) {
8
+ const response = await this.fetchDockerAPI(`/images/create?fromImage=${encodeURIComponent(imageName)}`, {
9
+ method: 'POST'
10
+ });
11
+ if (!response.ok) {
12
+ throw new Error(`Failed to pull image: ${response.statusText}`);
13
+ }
14
+ // Wait for the pull to complete
15
+ await response.text();
16
+ }
17
+ async createContainer({ imageName, volumes = [], doNotPullImage, tag }) {
18
+ const binds = volumes.map((v) => `${v.hostPath}:${v.containerPath}`);
19
+ if (!doNotPullImage) {
20
+ await this.pullImage(imageName);
21
+ }
22
+ const containerConfig = {
23
+ Image: imageName,
24
+ Tty: true,
25
+ OpenStdin: false,
26
+ AttachStdin: false,
27
+ AttachStdout: false,
28
+ AttachStderr: false,
29
+ HostConfig: { Binds: binds },
30
+ Labels: {}
31
+ };
32
+ if (tag) {
33
+ containerConfig.Labels['com.example.tag'] = tag;
34
+ }
35
+ const response = await this.fetchDockerAPI(`/containers/create`, {
36
+ method: 'POST',
37
+ headers: { 'Content-Type': 'application/json' },
38
+ body: JSON.stringify(containerConfig)
39
+ });
40
+ if (!response.ok) {
41
+ throw new Error(`Failed to create container: ${response.statusText}`);
42
+ }
43
+ const data = (await response.json());
44
+ this.containerId = data.Id;
45
+ return data;
46
+ }
47
+ async findOrCreateContainer({ imageName, volumes = [], doNotPullImage, tag }) {
48
+ // First, try to find existing containers with the given tag
49
+ const existingContainers = await this.listContainers(true);
50
+ const matchingContainers = existingContainers.filter((container) => container.Labels && container.Labels['com.example.tag'] === tag);
51
+ if (matchingContainers && matchingContainers.length > 0) {
52
+ // Randomly select a container from the matching ones
53
+ const randomIndex = Math.floor(Math.random() * matchingContainers.length);
54
+ const selectedContainer = matchingContainers[randomIndex];
55
+ if (selectedContainer) {
56
+ // Connect to the selected container
57
+ await this.connectToContainer(selectedContainer.Id);
58
+ return { Id: selectedContainer.Id, isNew: false };
59
+ }
60
+ }
61
+ // If no container with the tag exists, create a new one
62
+ const newContainer = await this.createContainer({
63
+ imageName,
64
+ volumes,
65
+ doNotPullImage,
66
+ tag
67
+ });
68
+ return { Id: newContainer.Id, isNew: true };
69
+ }
70
+ async startContainer() {
71
+ if (!this.containerId) {
72
+ throw new Error('No container created or connected');
73
+ }
74
+ const response = await this.fetchDockerAPI(`/containers/${this.containerId}/start`, {
75
+ method: 'POST'
76
+ });
77
+ if (!response.ok) {
78
+ throw new Error(`Failed to start container: ${response.statusText}`);
79
+ }
80
+ }
81
+ async connectToContainer(containerId) {
82
+ const response = await this.fetchDockerAPI(`/containers/${containerId}/json`);
83
+ if (!response.ok) {
84
+ throw new Error(`Failed to connect to container: ${response.statusText}`);
85
+ }
86
+ this.containerId = containerId;
87
+ }
88
+ async stopContainers({ tag, remove, timeout = 10 }) {
89
+ const results = [];
90
+ // List all containers
91
+ const containers = await this.listContainers(true);
92
+ // Filter containers by tag if provided
93
+ const targetContainers = tag
94
+ ? containers.filter((container) => container.Labels['com.example.tag'] === tag)
95
+ : containers;
96
+ for (const container of targetContainers) {
97
+ // Stop the container if it's running
98
+ if (container.State.Status === 'running') {
99
+ const stopResponse = await this.fetchDockerAPI(`/containers/${container.Id}/stop?t=${timeout}`, { method: 'POST' });
100
+ if (!stopResponse.ok) {
101
+ console.warn(`Failed to stop container ${container.Id}: ${stopResponse.statusText}`);
102
+ continue;
103
+ }
104
+ results.push({ Id: container.Id, Action: 'stopped' });
105
+ }
106
+ // Remove the container if the remove flag is set
107
+ if (remove) {
108
+ const removeResponse = await this.fetchDockerAPI(`/containers/${container.Id}`, { method: 'DELETE' });
109
+ if (!removeResponse.ok) {
110
+ console.warn(`Failed to remove container ${container.Id}: ${removeResponse.statusText}`);
111
+ continue;
112
+ }
113
+ results.push({ Id: container.Id, Action: 'removed' });
114
+ }
115
+ }
116
+ return results;
117
+ }
118
+ async listContainers(all = false) {
119
+ const response = await this.fetchDockerAPI(`/containers/json?all=${all}`, {
120
+ method: 'GET'
121
+ });
122
+ return response.json();
123
+ }
124
+ async getContainerLogs() {
125
+ if (!this.containerId) {
126
+ throw new Error('No container created or connected');
127
+ }
128
+ const response = await this.fetchDockerAPI(`/containers/${this.containerId}/logs?stdout=true&stderr=true`, { method: 'GET' });
129
+ return response.text();
130
+ }
131
+ async executeCommand(command) {
132
+ console.log('Executing command:', command);
133
+ if (!this.containerId) {
134
+ throw new Error('No container created or connected');
135
+ }
136
+ // Check container state
137
+ const containerInfo = await this.getContainerInfo(this.containerId);
138
+ if (containerInfo.State.Status !== 'running') {
139
+ await this.startContainer();
140
+ // Wait for the container to be in the "running" state
141
+ await this.waitForContainerToBeRunning(this.containerId);
142
+ }
143
+ // Create exec instance
144
+ const createResponse = await this.fetchDockerAPI(`/containers/${this.containerId}/exec`, {
145
+ method: 'POST',
146
+ headers: { 'Content-Type': 'application/json' },
147
+ body: JSON.stringify({
148
+ Cmd: ['sh', '-c', command],
149
+ AttachStdout: true,
150
+ AttachStderr: true
151
+ })
152
+ });
153
+ if (!createResponse.ok) {
154
+ throw new Error(`Failed to create exec instance: ${createResponse.statusText}`);
155
+ }
156
+ const execData = (await createResponse.json());
157
+ // Start exec instance
158
+ const startResponse = await this.fetchDockerAPI(`/exec/${execData.Id}/start`, {
159
+ method: 'POST',
160
+ headers: { 'Content-Type': 'application/json' },
161
+ body: JSON.stringify({
162
+ Detach: false,
163
+ Tty: false
164
+ })
165
+ });
166
+ if (!startResponse.ok) {
167
+ throw new Error(`Failed to start exec instance: ${startResponse.statusText}`);
168
+ }
169
+ // Return the output
170
+ return await startResponse.text();
171
+ }
172
+ // Add these new methods to the class:
173
+ async getContainerInfo(containerId) {
174
+ const response = await this.fetchDockerAPI(`/containers/${containerId}/json`);
175
+ if (!response.ok) {
176
+ throw new Error(`Failed to get container info: ${response.statusText}`);
177
+ }
178
+ return response.json();
179
+ }
180
+ async waitForContainerToBeRunning(containerId, timeout = 30000) {
181
+ const startTime = Date.now();
182
+ while (Date.now() - startTime < timeout) {
183
+ const containerInfo = await this.getContainerInfo(containerId);
184
+ if (containerInfo.State.Status === 'running') {
185
+ return;
186
+ }
187
+ await new Promise((resolve) => setTimeout(resolve, 1000)); // Wait for 1 second before checking again
188
+ }
189
+ throw new Error('Timeout waiting for container to start');
190
+ }
191
+ async fetchDockerAPI(endpoint, options) {
192
+ const url = new URL(endpoint, this.apiUrl).toString();
193
+ return await fetch(url, options);
194
+ }
195
+ toFunction() {
196
+ return {
197
+ name: 'commandExecution',
198
+ description: 'Use this function to execute shell commands, scripts, and programs. This function enables interaction with the file system, running system utilities, and performing tasks that require a shell interface.',
199
+ parameters: {
200
+ type: 'object',
201
+ properties: {
202
+ command: {
203
+ type: 'string',
204
+ description: 'Shell command to execute. eg. `ls -l` or `echo "Hello, World!"`.'
205
+ }
206
+ },
207
+ required: ['command']
208
+ },
209
+ func: async ({ command }) => await this.executeCommand(command)
210
+ };
211
+ }
212
+ }
213
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../funcs/docker.ts"],"names":[],"mappings":"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"}
package/funcs/embed.d.ts CHANGED
@@ -1,6 +1,17 @@
1
1
  import type { AxAIService, AxAIServiceActionOptions, AxFunction } from '../ai/index.js';
2
- export declare const axEmbedAdapter: (ai: AxAIService, info: Readonly<{
3
- name: string;
4
- description: string;
5
- argumentDescription: string;
6
- }>, func: (args: readonly number[], extra?: Readonly<AxAIServiceActionOptions>) => Promise<any>) => AxFunction;
2
+ export declare class AxEmbeddingAdapter {
3
+ private aiService;
4
+ private info;
5
+ private func;
6
+ constructor({ ai, info, func }: Readonly<{
7
+ ai: AxAIService;
8
+ info: Readonly<{
9
+ name: string;
10
+ description: string;
11
+ argumentDescription: string;
12
+ }>;
13
+ func: (args: readonly number[], extra?: Readonly<AxAIServiceActionOptions>) => Promise<unknown>;
14
+ }>);
15
+ private embedAdapter;
16
+ toFunction(): AxFunction;
17
+ }
package/funcs/embed.js CHANGED
@@ -1,29 +1,38 @@
1
- export const axEmbedAdapter = (ai, info, func) => ({
2
- name: info.name,
3
- description: info.description,
4
- parameters: {
5
- type: 'object',
6
- properties: {
7
- text: {
8
- type: 'string',
9
- description: info.argumentDescription
10
- }
11
- },
12
- required: ['text']
13
- },
14
- func: ({ text }, extra
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- ) => {
17
- return new Promise((resolve) => {
18
- resolve(embedAdapter(ai, text, func, extra));
19
- });
1
+ export class AxEmbeddingAdapter {
2
+ aiService;
3
+ info;
4
+ func;
5
+ constructor({ ai, info, func }) {
6
+ this.aiService = ai;
7
+ this.info = info;
8
+ this.func = func;
20
9
  }
21
- });
22
- const embedAdapter = async (ai, text, func, extra
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- ) => {
25
- const embedRes = await ai.embed({ texts: [text] }, { sessionId: extra?.sessionId });
26
- const embeds = embedRes.embeddings.at(0);
27
- return func.length === 2 ? func(embeds, extra) : func(embeds);
28
- };
10
+ async embedAdapter(text, extra) {
11
+ const embedRes = await this.aiService.embed({ texts: [text] }, { sessionId: extra?.sessionId });
12
+ const embeds = embedRes.embeddings.at(0);
13
+ if (!embeds) {
14
+ throw new Error('Failed to embed text');
15
+ }
16
+ return this.func.length === 2
17
+ ? this.func(embeds, extra)
18
+ : this.func(embeds);
19
+ }
20
+ toFunction() {
21
+ return {
22
+ name: this.info.name,
23
+ description: this.info.description,
24
+ parameters: {
25
+ type: 'object',
26
+ properties: {
27
+ text: {
28
+ type: 'string',
29
+ description: this.info.argumentDescription
30
+ }
31
+ },
32
+ required: ['text']
33
+ },
34
+ func: ({ text }, options) => this.embedAdapter(text, options)
35
+ };
36
+ }
37
+ }
29
38
  //# sourceMappingURL=embed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../funcs/embed.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,EAAe,EACf,IAIE,EACF,IAIiB,EACL,EAAE,CAAC,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,IAAI,CAAC,mBAAmB;aACtC;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IAED,IAAI,EAAE,CACJ,EAAE,IAAI,EAA8B,EACpC,KAA0C;IAC1C,8DAA8D;MAChD,EAAE;QAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,KAAK,EACxB,EAAe,EACf,IAAY,EACZ,IAAuB,EACvB,KAA0C;AAC1C,8DAA8D;EAChD,EAAE;IAChB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAC7B,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EACjB,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAChC,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC,CAAC"}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../funcs/embed.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACrB,SAAS,CAAc;IACvB,IAAI,CAIV;IACM,IAAI,CAGU;IAEtB,YAAY,EACV,EAAE,EACF,IAAI,EACJ,IAAI,EAYJ;QACA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,IAAY,EACZ,KAA0C;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CACzC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EACjB,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAChC,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAEM,UAAU;QACf,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAClC,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB;qBAC3C;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;YACD,IAAI,EAAE,CAAC,EAAE,IAAI,EAA8B,EAAE,OAAO,EAAE,EAAE,CACtD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;SACnC,CAAC;IACJ,CAAC;CACF"}
package/funcs/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from './code.js';
2
2
  export * from './embed.js';
3
- export * from './functions.js';
3
+ export * from './docker.js';
package/funcs/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from './code.js';
2
2
  export * from './embed.js';
3
- export * from './functions.js';
3
+ export * from './docker.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../funcs/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../funcs/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ax-llm/ax",
3
- "version": "9.0.24",
3
+ "version": "9.0.26",
4
4
  "type": "module",
5
5
  "description": "The best library to work with LLMs",
6
6
  "repository": {
package/prompts/react.js CHANGED
@@ -5,8 +5,13 @@ export class AxReAct extends AxChainOfThought {
5
5
  if (!options?.functions || options.functions.length === 0) {
6
6
  throw new Error('No functions provided');
7
7
  }
8
- const functions = [...options.functions];
9
- const funcList = functions.map((f) => `'${f.name}'`).join(', ');
8
+ const fnNames = options.functions.map((f) => {
9
+ if ('toFunction' in f) {
10
+ return f.toFunction().name;
11
+ }
12
+ return f.name;
13
+ });
14
+ const funcList = fnNames.map((fname) => `'${fname}'`).join(', ');
10
15
  const sig = new AxSignature(signature);
11
16
  sig.setDescription(`Use the provided functions ${funcList} to complete the task and return the result if any.`);
12
17
  // sig.addInputField({
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../prompts/react.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,OAAO,OAGX,SAAQ,gBAAyB;IACjC,YACE,EAAe,EACf,SAAyC,EACzC,OAAoC;QAEpC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;QACvC,GAAG,CAAC,cAAc,CAChB,8BAA8B,QAAQ,qDAAqD,CAC5F,CAAC;QAEF,sBAAsB;QACtB,yBAAyB;QACzB,wDAAwD;QACxD,sBAAsB;QACtB,4CAA4C;QAC5C,MAAM;QAEN,GAAG,CAAC,eAAe,CACjB,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAC/D,CAAC;QAEF,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../prompts/react.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,OAAO,OAGX,SAAQ,gBAAyB;IACjC,YACE,EAAe,EACf,SAAyC,EACzC,OAAoC;QAEpC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;QACvC,GAAG,CAAC,cAAc,CAChB,8BAA8B,QAAQ,qDAAqD,CAC5F,CAAC;QAEF,sBAAsB;QACtB,yBAAyB;QACzB,wDAAwD;QACxD,sBAAsB;QACtB,4CAA4C;QAC5C,MAAM;QAEN,GAAG,CAAC,eAAe,CACjB,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAC/D,CAAC;QAEF,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../funcs/functions.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonschema.js","sourceRoot":"","sources":["../../../funcs/jsonschema.ts"],"names":[],"mappings":";;;AAEA,gEAAgE;AACzD,MAAM,kBAAkB,GAAG,CAChC,MAAsC,EAChC,EAAE;IACR,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,oBAAoB,GAAG,CAC3B,MAAsC,EACtC,OAAe,EAAE,EACX,EAAE;QACR,MAAM,UAAU,GAAG;YACjB,OAAO;YACP,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,MAAM;YACN,QAAQ;SACT,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,QAAQ,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClD,IACE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;gBACrC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAChC,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,gCAAgC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACpC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;wBACtD,SAAS;oBACX,CAAC;oBACD,oBAAoB,CAAC,KAAK,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC;AA5DW,QAAA,kBAAkB,sBA4D7B;AAEF,iBAAiB;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CE"}