@airtop/sdk 1.0.0-alpha2.10 → 1.0.0-alpha2.12
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.
- package/dist/index.cjs +106 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +49 -7
- package/dist/index.d.ts +49 -7
- package/dist/index.js +105 -7
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
@@ -9,7 +9,7 @@ var require_package = __commonJS({
|
|
9
9
|
module.exports = {
|
10
10
|
name: "@airtop/sdk",
|
11
11
|
description: "Airtop SDK for TypeScript",
|
12
|
-
version: "1.0.0-alpha2.
|
12
|
+
version: "1.0.0-alpha2.12",
|
13
13
|
type: "module",
|
14
14
|
main: "./dist/index.cjs",
|
15
15
|
module: "./dist/index.js",
|
@@ -47,7 +47,7 @@ var require_package = __commonJS({
|
|
47
47
|
},
|
48
48
|
dependencies: {
|
49
49
|
"@airtop/json-schema-adapter": "workspace:*",
|
50
|
-
"@airtop/core": "0.1.0-alpha.
|
50
|
+
"@airtop/core": "0.1.0-alpha.28",
|
51
51
|
"date-fns": "4.1.0",
|
52
52
|
loglayer: "6.3.3",
|
53
53
|
"serialize-error": "12.0.0",
|
@@ -107,6 +107,11 @@ var AirtopBase = class {
|
|
107
107
|
* @internal
|
108
108
|
*/
|
109
109
|
|
110
|
+
/**
|
111
|
+
* Instance for sending agent events
|
112
|
+
* @internal
|
113
|
+
*/
|
114
|
+
|
110
115
|
/**
|
111
116
|
* Creates a new instance of AirtopBase
|
112
117
|
* @param config - Configuration options for the SDK
|
@@ -117,6 +122,24 @@ var AirtopBase = class {
|
|
117
122
|
this.outputJsonAdapter = config.outputSchemaAdapter;
|
118
123
|
this.jobId = config.jobId;
|
119
124
|
}
|
125
|
+
/**
|
126
|
+
* Sets the publisher for sending agent events. Internal use only.
|
127
|
+
* @internal
|
128
|
+
*/
|
129
|
+
_setAgentEventPublisher(logger) {
|
130
|
+
this.agentEventPublisher = logger;
|
131
|
+
}
|
132
|
+
/**
|
133
|
+
* Sends a payload to the agent with the specified event name.
|
134
|
+
* @param eventName The name of the event
|
135
|
+
* @param payload The payload to send to the agent
|
136
|
+
* @internal
|
137
|
+
*/
|
138
|
+
_sendAgentPayload(eventName, payload) {
|
139
|
+
if (this.agentEventPublisher) {
|
140
|
+
this.agentEventPublisher.withMetadata(payload).info(eventName);
|
141
|
+
}
|
142
|
+
}
|
120
143
|
/**
|
121
144
|
* Returns the API key used by the SDK
|
122
145
|
* @returns API key string
|
@@ -241,13 +264,23 @@ var processLogMessage = (log, logLevel, ...args) => {
|
|
241
264
|
// src/session/AirtopSessionClient.ts
|
242
265
|
|
243
266
|
|
267
|
+
// src/types.ts
|
268
|
+
var AirtopError = class extends Error {
|
269
|
+
|
270
|
+
constructor(issues) {
|
271
|
+
const errorMessage = issues.map((issue) => issue.message).join("\n");
|
272
|
+
super(errorMessage);
|
273
|
+
this.issues = issues;
|
274
|
+
}
|
275
|
+
};
|
276
|
+
|
244
277
|
// src/window/AirtopWindowClient.ts
|
245
278
|
|
246
279
|
|
247
280
|
// src/async-utils.ts
|
248
281
|
|
249
282
|
var DEFAULT_TIMEOUT_SECONDS = 300;
|
250
|
-
var
|
283
|
+
var DEFAULT_POLLING_INTERVAL_MS = 500;
|
251
284
|
async function waitForRequestCompletion(client, requestId, requestOptions) {
|
252
285
|
const startTime = Date.now();
|
253
286
|
const timeoutMs = _datefns.secondsToMilliseconds.call(void 0, _optionalChain([requestOptions, 'optionalAccess', _5 => _5.timeoutInSeconds]) || DEFAULT_TIMEOUT_SECONDS);
|
@@ -259,7 +292,7 @@ async function waitForRequestCompletion(client, requestId, requestOptions) {
|
|
259
292
|
if (apiResponse.status === "error") {
|
260
293
|
throw new Error(apiResponse.error);
|
261
294
|
}
|
262
|
-
await new Promise((resolve) => setTimeout(resolve,
|
295
|
+
await new Promise((resolve) => setTimeout(resolve, DEFAULT_POLLING_INTERVAL_MS));
|
263
296
|
}
|
264
297
|
throw new Error("Waiting for request timed out");
|
265
298
|
}
|
@@ -482,6 +515,11 @@ var AirtopWindowClient = class extends AirtopBase {
|
|
482
515
|
},
|
483
516
|
this.resolveRequestOptions(requestOptions)
|
484
517
|
);
|
518
|
+
this._sendAgentPayload("LiveViewUrl", {
|
519
|
+
liveViewUrl: results.data.liveViewUrl,
|
520
|
+
windowId: this.windowId,
|
521
|
+
sessionId: this.sessionId
|
522
|
+
});
|
485
523
|
return new AirtopWindow(this.getCommonConfig(), this.sessionId, results);
|
486
524
|
}
|
487
525
|
/**
|
@@ -783,7 +821,7 @@ var AirtopWindowClient = class extends AirtopBase {
|
|
783
821
|
)
|
784
822
|
);
|
785
823
|
}
|
786
|
-
async
|
824
|
+
async findOnePrivate(prompt, config, requestOptions = {}) {
|
787
825
|
this.log.withMetadata({ prompt }).info("Executing LLM call");
|
788
826
|
const apiResponse = await withRequestCompletionPolling(
|
789
827
|
this.client,
|
@@ -801,15 +839,32 @@ var AirtopWindowClient = class extends AirtopBase {
|
|
801
839
|
}
|
802
840
|
)
|
803
841
|
);
|
842
|
+
if (apiResponse.errors.length > 0) {
|
843
|
+
throw new AirtopError(apiResponse.errors);
|
844
|
+
}
|
804
845
|
try {
|
846
|
+
if (!apiResponse.data.modelResponse) {
|
847
|
+
return null;
|
848
|
+
}
|
805
849
|
const nodeData = JSON.parse(apiResponse.data.modelResponse);
|
850
|
+
if (Object.keys(nodeData).length === 0) {
|
851
|
+
return null;
|
852
|
+
}
|
806
853
|
return new AirtopNode(this, nodeData);
|
807
854
|
} catch (error) {
|
808
855
|
this.log.withMetadata({ nodeDataStr: apiResponse.data.modelResponse }).withError(error).error("Error parsing node data");
|
809
856
|
throw error;
|
810
857
|
}
|
811
858
|
}
|
812
|
-
async
|
859
|
+
async findOne(prompt, config, requestOptions = {}) {
|
860
|
+
const configOverride = { ...config, optional: false };
|
861
|
+
return await this.findOnePrivate(prompt, configOverride, requestOptions);
|
862
|
+
}
|
863
|
+
async findOneOptional(prompt, config, requestOptions = {}) {
|
864
|
+
const configOverride = { ...config, optional: true };
|
865
|
+
return await this.findOnePrivate(prompt, configOverride, requestOptions);
|
866
|
+
}
|
867
|
+
async findManyPrivate(prompt, config, requestOptions = {}) {
|
813
868
|
this.log.withMetadata({ prompt }).info("Executing LLM call");
|
814
869
|
const apiResponse = await withRequestCompletionPolling(
|
815
870
|
this.client,
|
@@ -827,15 +882,32 @@ var AirtopWindowClient = class extends AirtopBase {
|
|
827
882
|
}
|
828
883
|
)
|
829
884
|
);
|
885
|
+
if (apiResponse.errors.length > 0) {
|
886
|
+
throw new AirtopError(apiResponse.errors);
|
887
|
+
}
|
830
888
|
const nodeHandles = apiResponse.data.modelResponse.split("___DELIM___");
|
831
889
|
return nodeHandles.map((nodeDataStr) => {
|
832
890
|
try {
|
891
|
+
if (!nodeDataStr) {
|
892
|
+
return null;
|
893
|
+
}
|
833
894
|
const nodeData = JSON.parse(nodeDataStr);
|
895
|
+
if (Object.keys(nodeData).length === 0) {
|
896
|
+
return null;
|
897
|
+
}
|
834
898
|
return new AirtopNode(this, nodeData);
|
835
899
|
} catch (error) {
|
836
900
|
this.log.withMetadata({ nodeDataStr }).withError(error).error("Error parsing node data");
|
837
901
|
}
|
838
|
-
});
|
902
|
+
}).filter((node) => !!node);
|
903
|
+
}
|
904
|
+
async findMany(prompt, config, requestOptions = {}) {
|
905
|
+
const configOverride = { ...config, optional: false };
|
906
|
+
return await this.findManyPrivate(prompt, configOverride, requestOptions);
|
907
|
+
}
|
908
|
+
async findManyOptional(prompt, config, requestOptions = {}) {
|
909
|
+
const configOverride = { ...config, optional: true };
|
910
|
+
return await this.findManyPrivate(prompt, configOverride, requestOptions);
|
839
911
|
}
|
840
912
|
async waitForPage(config, requestOptions = {}) {
|
841
913
|
return await withRequestCompletionPolling(
|
@@ -853,6 +925,23 @@ var AirtopWindowClient = class extends AirtopBase {
|
|
853
925
|
)
|
854
926
|
);
|
855
927
|
}
|
928
|
+
async navigate(direction, config, requestOptions = {}) {
|
929
|
+
return await withRequestCompletionPolling(
|
930
|
+
this.client,
|
931
|
+
() => this.client.windows.navigate(
|
932
|
+
this.getWindowId(),
|
933
|
+
{
|
934
|
+
direction,
|
935
|
+
sessionId: this.sessionId,
|
936
|
+
...config || {}
|
937
|
+
},
|
938
|
+
{
|
939
|
+
timeout: _datefns.secondsToMilliseconds.call(void 0, 600),
|
940
|
+
...this.resolveRequestOptions(requestOptions)
|
941
|
+
}
|
942
|
+
)
|
943
|
+
);
|
944
|
+
}
|
856
945
|
};
|
857
946
|
|
858
947
|
// src/window/AirtopWindow.ts
|
@@ -1289,6 +1378,13 @@ var AirtopClient = class extends AirtopBase {
|
|
1289
1378
|
}
|
1290
1379
|
};
|
1291
1380
|
|
1381
|
+
// src/window/AirtopWindowClient.types.ts
|
1382
|
+
var WindowNavigateDirection = /* @__PURE__ */ ((WindowNavigateDirection2) => {
|
1383
|
+
WindowNavigateDirection2["BACK"] = "backward";
|
1384
|
+
WindowNavigateDirection2["FORWARD"] = "forward";
|
1385
|
+
return WindowNavigateDirection2;
|
1386
|
+
})(WindowNavigateDirection || {});
|
1387
|
+
|
1292
1388
|
// src/plugin/AirtopPlugin.types.ts
|
1293
1389
|
var AirtopPluginAugmentationType = /* @__PURE__ */ ((AirtopPluginAugmentationType2) => {
|
1294
1390
|
AirtopPluginAugmentationType2["AirtopClient"] = "AirtopClient";
|
@@ -1428,5 +1524,7 @@ var AirtopMocks = class {
|
|
1428
1524
|
|
1429
1525
|
|
1430
1526
|
|
1431
|
-
|
1527
|
+
|
1528
|
+
|
1529
|
+
exports.AirtopBase = AirtopBase; exports.AirtopClient = AirtopClient; exports.AirtopError = AirtopError; exports.AirtopMocks = AirtopMocks; exports.AirtopNode = AirtopNode; exports.AirtopPluginAugmentationType = AirtopPluginAugmentationType; exports.AirtopSession = AirtopSession; exports.AirtopSessionClient = AirtopSessionClient; exports.AirtopWindow = AirtopWindow; exports.AirtopWindowClient = AirtopWindowClient; exports.AirtopWindowScreenshot = AirtopWindowScreenshot; exports.WindowNavigateDirection = WindowNavigateDirection; exports.registerAirtopPlugin = registerAirtopPlugin;
|
1432
1530
|
//# sourceMappingURL=index.cjs.map
|