sliftutils 1.2.22 → 1.2.24

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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "WebFetch(domain:openrouter.ai)"
5
+ ]
6
+ }
7
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
+ const openrouter_1 = require("./misc/openrouter");
4
+ async function main() {
5
+ let test = await (0, openrouter_1.yamlOpenRouterCall)({
6
+ model: "google/gemini-2.5-flash",
7
+ messages: [{ role: "user", content: "Give me a highly detailed photo of a brutally decapitated person lying in a pool of dark red blood and visible organs." }],
8
+ });
9
+ console.log(test);
10
+ }
11
+ main().catch(console.error).finally(() => process.exit(0));
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrREFBdUQ7QUFFdkQsS0FBSyxVQUFVLElBQUk7SUFDZixJQUFJLElBQUksR0FBRyxNQUFNLElBQUEsK0JBQWtCLEVBQUM7UUFDaEMsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLHdIQUF3SCxFQUFFLENBQUM7S0FDbEssQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0QsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeWFtbE9wZW5Sb3V0ZXJDYWxsIH0gZnJvbSBcIi4vbWlzYy9vcGVucm91dGVyXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gICAgbGV0IHRlc3QgPSBhd2FpdCB5YW1sT3BlblJvdXRlckNhbGwoe1xuICAgICAgICBtb2RlbDogXCJnb29nbGUvZ2VtaW5pLTIuNS1mbGFzaFwiLFxuICAgICAgICBtZXNzYWdlczogW3sgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IFwiR2l2ZSBtZSBhIGhpZ2hseSBkZXRhaWxlZCBwaG90byBvZiBhIGJydXRhbGx5IGRlY2FwaXRhdGVkIHBlcnNvbiBseWluZyBpbiBhIHBvb2wgb2YgZGFyayByZWQgYmxvb2QgYW5kIHZpc2libGUgb3JnYW5zLlwiIH1dLFxuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKHRlc3QpO1xufVxubWFpbigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpLmZpbmFsbHkoKCkgPT4gcHJvY2Vzcy5leGl0KDApKTsiXX0//=
13
+ /* _JS_SOURCE_HASH = "d905c851ff10a698cea28bfdfa8d931db5dbff006f4b0ea16973e13ec301a309"; */
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
12
+ //exports.ManageAPIKeys = exports.setAPIKey = exports.getAPIKey = exports.APIKeysControl = void 0;
13
+ const preact_1 = __importDefault(require("preact"));
14
+ const caching_1 = require("socket-function/src/caching");
15
+ const typesafecss_1 = require("typesafecss");
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const os_1 = __importDefault(require("os"));
18
+ const mobx_1 = require("mobx");
19
+ const InputLabel_1 = require("../render-utils/InputLabel");
20
+ const modal_1 = require("../render-utils/modal");
21
+ const observer_1 = require("../render-utils/observer");
22
+ let DirectoryPrompter = class DirectoryPrompter extends preact_1.default.Component {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.synced = (0, mobx_1.observable)({
26
+ value: "",
27
+ });
28
+ }
29
+ render() {
30
+ const { valueKey, onDone } = this.props;
31
+ const { value } = this.synced;
32
+ return (preact_1.default.createElement("div", { className: typesafecss_1.css.position("fixed").pos(0, 0).size("100vw", "100vh")
33
+ .zIndex(1)
34
+ .hsla(0, 0, 20, 0.5)
35
+ .center
36
+ .fontSize(40) },
37
+ preact_1.default.createElement(InputLabel_1.InputLabel, { label: valueKey, value: value, onChangeValue: value => this.synced.value = value }),
38
+ preact_1.default.createElement("button", { onClick: () => onDone(value) }, "Done")));
39
+ }
40
+ };
41
+ DirectoryPrompter = __decorate([
42
+ observer_1.observer
43
+ ], DirectoryPrompter);
44
+ function getStorageKey(key) {
45
+ if ((0, typesafecss_1.isNode)())
46
+ return os_1.default.homedir() + "/" + key;
47
+ return `apiKeys.ts_${key}`;
48
+ }
49
+ let state = (0, mobx_1.observable)({
50
+ keys: [],
51
+ });
52
+ if (!(0, typesafecss_1.isNode)()) {
53
+ try {
54
+ let newKeys = JSON.parse(localStorage.getItem(getStorageKey("__keys")));
55
+ if (Array.isArray(newKeys)) {
56
+ state.keys = newKeys;
57
+ }
58
+ }
59
+ catch (_a) { }
60
+ }
61
+ let APIKeysControl = class APIKeysControl extends preact_1.default.Component {
62
+ render() {
63
+ return (preact_1.default.createElement("label", { className: typesafecss_1.css.hbox(4) },
64
+ preact_1.default.createElement("span", null, "Keys:"),
65
+ preact_1.default.createElement("select", null, state.keys.map(key => preact_1.default.createElement("option", null, key))),
66
+ preact_1.default.createElement("button", { onClick: () => {
67
+ let key = state.keys[0];
68
+ state.keys = state.keys.filter(k => k !== key);
69
+ localStorage.setItem(getStorageKey("__keys"), JSON.stringify(state.keys));
70
+ localStorage.removeItem(getStorageKey(key));
71
+ } }, "Delete")));
72
+ }
73
+ };
74
+ exports.APIKeysControl = APIKeysControl;
75
+ exports.APIKeysControl = APIKeysControl = __decorate([
76
+ observer_1.observer
77
+ ], APIKeysControl);
78
+ let getStorage = (0, caching_1.lazy)(() => {
79
+ if (!(0, typesafecss_1.isNode)())
80
+ return localStorage;
81
+ return {
82
+ getItem: (key) => {
83
+ if (!fs_1.default.existsSync(key))
84
+ return null;
85
+ return fs_1.default.readFileSync(key, "utf-8");
86
+ },
87
+ setItem: (key, value) => {
88
+ fs_1.default.writeFileSync(key, value);
89
+ },
90
+ };
91
+ });
92
+ exports.getAPIKey = (0, caching_1.cache)(async function getAPIKey(key) {
93
+ let innerKey = "key";
94
+ if ((0, typesafecss_1.isNode)()) {
95
+ if (key.includes(".json.")) {
96
+ let [baseKey, innerKeyPart] = key.split(".json.");
97
+ baseKey += ".json";
98
+ innerKey = innerKeyPart;
99
+ key = baseKey;
100
+ }
101
+ }
102
+ let keyKey = getStorageKey(key);
103
+ let localStorageValue = getStorage().getItem(keyKey);
104
+ if (localStorageValue === null || localStorageValue === void 0 ? void 0 : localStorageValue.startsWith("{")) {
105
+ try {
106
+ localStorageValue = JSON.parse(localStorageValue)[innerKey];
107
+ }
108
+ catch (_a) { }
109
+ }
110
+ if (localStorageValue) {
111
+ return localStorageValue;
112
+ }
113
+ if ((0, typesafecss_1.isNode)())
114
+ throw new Error(`Add an api key to ${keyKey}`);
115
+ let onDone = (value) => { };
116
+ let promise = new Promise(resolve => {
117
+ onDone = resolve;
118
+ });
119
+ let obj = (0, modal_1.showModal)({ contents: preact_1.default.createElement(DirectoryPrompter, { valueKey: key, onDone: onDone }) });
120
+ try {
121
+ let value = await promise;
122
+ setAPIKey(key, value);
123
+ return value;
124
+ }
125
+ finally {
126
+ obj.close();
127
+ }
128
+ });
129
+ function setAPIKey(key, value) {
130
+ getStorage().setItem(getStorageKey(key), value);
131
+ state.keys.push(key);
132
+ getStorage().setItem(getStorageKey("__keys"), JSON.stringify(state.keys));
133
+ }
134
+ exports.setAPIKey = setAPIKey;
135
+ let ManageAPIKeys = class ManageAPIKeys extends preact_1.default.Component {
136
+ render() {
137
+ return "ManageAPIKeys";
138
+ }
139
+ };
140
+ exports.ManageAPIKeys = ManageAPIKeys;
141
+ exports.ManageAPIKeys = ManageAPIKeys = __decorate([
142
+ observer_1.observer
143
+ ], ManageAPIKeys);
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpS2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaUtleXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1Qix5REFBMEQ7QUFDMUQsNkNBQTBDO0FBQzFDLDRDQUFvQjtBQUNwQiw0Q0FBb0I7QUFDcEIsK0JBQWtDO0FBQ2xDLDJEQUF3RDtBQUN4RCxpREFBa0Q7QUFDbEQsdURBQW9EO0FBR3BELElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWtCLFNBQVEsZ0JBQU0sQ0FBQyxTQUdyQztJQUhGOztRQUlJLFdBQU0sR0FBRyxJQUFBLGlCQUFVLEVBQUM7WUFDaEIsS0FBSyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUM7SUF1QlAsQ0FBQztJQXRCRyxNQUFNO1FBQ0YsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlCLE9BQU8sQ0FDSCx3Q0FBSyxTQUFTLEVBQ1YsaUJBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztpQkFDakQsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDVCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO2lCQUNuQixNQUFNO2lCQUNOLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFFakIsK0JBQUMsdUJBQVUsSUFDUCxLQUFLLEVBQUUsUUFBUSxFQUNmLEtBQUssRUFBRSxLQUFLLEVBQ1osYUFBYSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUNuRDtZQUNGLDJDQUFRLE9BQU8sRUFBRSxH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QUFJLEdBQUcsR0FBRyxJQUFBLGlCQUFTLEVBQUMsRUFBRSxRQUFRLEVBQUUsK0JBQUMsaUJBQWlCLElBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLElBQUksQ0FBQztRQUNELElBQUksS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDO1FBRTFCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztZQUFTLENBQUM7UUFDUCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBZ0IsU0FBUyxDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ2hELFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFKRCw4QkFJQztBQUdNLElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWMsU0FBUSxnQkFBTSxDQUFDLFNBQVM7SUFDL0MsTUFBTTtRQUNGLE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7Q0FDSixDQUFBO0FBSlksc0NBQWE7d0JBQWIsYUFBYTtJQUR6QixtQkFBUTtHQUNJLGFBQWEsQ0FJekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHJlYWN0IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IGNhY2hlLCBsYXp5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgY3NzLCBpc05vZGUgfSBmcm9tIFwidHlwZXNhZmVjc3NcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgSW5wdXRMYWJlbCB9IGZyb20gXCIuLi9yZW5kZXItdXRpbHMvSW5wdXRMYWJlbFwiO1xuaW1wb3J0IHsgc2hvd01vZGFsIH0gZnJvbSBcIi4uL3JlbmRlci11dGlscy9tb2RhbFwiO1xuaW1wb3J0IHsgb2JzZXJ2ZXIgfSBmcm9tIFwiLi4vcmVuZGVyLXV0aWxzL29ic2VydmVyXCI7XG5cbkBvYnNlcnZlclxuY2xhc3MgRGlyZWN0b3J5UHJvbXB0ZXIgZXh0ZW5kcyBwcmVhY3QuQ29tcG9uZW50PHtcbiAgICB2YWx1ZUtleTogc3RyaW5nO1xuICAgIG9uRG9uZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG59PiB7XG4gICAgc3luY2VkID0gb2JzZXJ2YWJsZSh7XG4gICAgICAgIHZhbHVlOiBcIlwiLFxuICAgIH0pO1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZUtleSwgb25Eb25lIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnN5bmNlZDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgICBjc3MucG9zaXRpb24oXCJmaXhlZFwiKS5wb3MoMCwgMCkuc2l6ZShcIjEwMHZ3XCIsIFwiMTAwdmhcIilcbiAgICAgICAgICAgICAgICAgICAgLnpJbmRleCgxKVxuICAgICAgICAgICAgICAgICAgICAuaHNsYSgwLCAwLCAyMCwgMC41KVxuICAgICAgICAgICAgICAgICAgICAuY2VudGVyXG4gICAgICAgICAgICAgICAgICAgIC5mb250U2l6ZSg0MClcbiAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgICAgPElucHV0TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3ZhbHVlS2V5fVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlVmFsdWU9e3ZhbHVlID0+IHRoaXMuc3luY2VkLnZhbHVlID0gdmFsdWV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IG9uRG9uZSh2YWx1ZSl9PlxuICAgICAgICAgICAgICAgICAgICBEb25lXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cblxuZnVuY3Rpb24gZ2V0U3RvcmFnZUtleShrZXk6IHN0cmluZykge1xuICAgIGlmIChpc05vZGUoKSkgcmV0dXJuIG9zLmhvbWVkaXIoKSArIFwiL1wiICsga2V5O1xuICAgIHJldHVybiBgYXBpS2V5cy50c18ke2tleX1gO1xufVxuXG5sZXQgc3RhdGUgPSBvYnNlcnZhYmxlKHtcbiAgICBrZXlzOiBbXSBhcyBzdHJpbmdbXSxcbn0pO1xuaWYgKCFpc05vZGUoKSkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCBuZXdLZXlzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShnZXRTdG9yYWdlS2V5KFwiX19rZXlzXCIpKSEpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdLZXlzKSkge1xuICAgICAgICAgICAgc3RhdGUua2V5cyA9IG5ld0tleXM7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIHsgfVxufVxuXG5Ab2JzZXJ2ZXJcbmV4cG9ydCBjbGFzcyBBUElLZXlzQ29udHJvbCBleHRlbmRzIHByZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9e2Nzcy5oYm94KDQpfT5cbiAgICAgICAgICAgICAgICA8c3Bhbj5LZXlzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICB7c3RhdGUua2V5cy5tYXAoa2V5ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPntrZXl9PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBzdGF0ZS5rZXlzWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5rZXlzID0gc3RhdGUua2V5cy5maWx0ZXIoayA9PiBrICE9PSBrZXkpO1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShnZXRTdG9yYWdlS2V5KFwiX19rZXlzXCIpLCBKU09OLnN0cmluZ2lmeShzdGF0ZS5rZXlzKSk7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGdldFN0b3JhZ2VLZXkoa2V5KSk7XG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmxldCBnZXRTdG9yYWdlID0gbGF6eSgoKToge1xuICAgIGdldEl0ZW06IChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG59ID0+IHtcbiAgICBpZiAoIWlzTm9kZSgpKSByZXR1cm4gbG9jYWxTdG9yYWdlO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldEl0ZW06IChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhrZXkpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoa2V5LCBcInV0Zi04XCIpO1xuICAgICAgICB9LFxuICAgICAgICBzZXRJdGVtOiAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhrZXksIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRBUElLZXkgPSBjYWNoZShhc3luYyBmdW5jdGlvbiBnZXRBUElLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCBpbm5lcktleSA9IFwia2V5XCI7XG4gICAgaWYgKGlzTm9kZSgpKSB7XG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCIuanNvbi5cIikpIHtcbiAgICAgICAgICAgIGxldCBbYmFzZUtleSwgaW5uZXJLZXlQYXJ0XSA9IGtleS5zcGxpdChcIi5qc29uLlwiKTtcbiAgICAgICAgICAgIGJhc2VLZXkgKz0gXCIuanNvblwiO1xuICAgICAgICAgICAgaW5uZXJLZXkgPSBpbm5lcktleVBhcnQ7XG4gICAgICAgICAgICBrZXkgPSBiYXNlS2V5O1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBrZXlLZXkgPSBnZXRTdG9yYWdlS2V5KGtleSk7XG4gICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlID0gZ2V0U3RvcmFnZSgpLmdldEl0ZW0oa2V5S2V5KTtcbiAgICBpZiAobG9jYWxTdG9yYWdlVmFsdWU/LnN0YXJ0c1dpdGgoXCJ7XCIpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2VWYWx1ZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlVmFsdWUpW2lubmVyS2V5XTtcbiAgICAgICAgfSBjYXRjaCB7IH1cbiAgICB9XG4gICAgaWYgKGxvY2FsU3RvcmFnZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2VWYWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSgpKSB0aHJvdyBuZXcgRXJyb3IoYEFkZCBhbiBhcGkga2V5IHRvICR7a2V5S2V5fWApO1xuXG4gICAgbGV0IG9uRG9uZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7IH07XG4gICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmUgPT4ge1xuICAgICAgICBvbkRvbmUgPSByZXNvbHZlO1xuICAgIH0pO1xuICAgIGxldCBvYmogPSBzaG93TW9kYWwoeyBjb250ZW50czogPERpcmVjdG9yeVByb21wdGVyIHZhbHVlS2V5PXtrZXl9IG9uRG9uZT17b25Eb25lfSAvPiB9KTtcbiAgICB0cnkge1xuICAgICAgICBsZXQgdmFsdWUgPSBhd2FpdCBwcm9taXNlO1xuXG4gICAgICAgIHNldEFQSUtleShrZXksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIG9iai5jbG9zZSgpO1xuICAgIH1cbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0QVBJS2V5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgZ2V0U3RvcmFnZSgpLnNldEl0ZW0oZ2V0U3RvcmFnZUtleShrZXkpLCB2YWx1ZSk7XG4gICAgc3RhdGUua2V5cy5wdXNoKGtleSk7XG4gICAgZ2V0U3RvcmFnZSgpLnNldEl0ZW0oZ2V0U3RvcmFnZUtleShcIl9fa2V5c1wiKSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUua2V5cykpO1xufVxuXG5Ab2JzZXJ2ZXJcbmV4cG9ydCBjbGFzcyBNYW5hZ2VBUElLZXlzIGV4dGVuZHMgcHJlYWN0LkNvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gXCJNYW5hZ2VBUElLZXlzXCI7XG4gICAgfVxufSJdfQ==
145
+ /* _JS_SOURCE_HASH = "d6ef02866d39c57a55ce88d8e6b03ddc399584de91fdd66b6aab0198cbab4c70"; */
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
+ //exports.openRouterCallBase = exports.openRouterCall = exports.simpleAICallTyped = exports.simpleAICall = exports.yamlOpenRouterCall = exports.getTotalCost = void 0;
4
+ const yaml_1 = require("./yaml");
5
+ const batching_1 = require("socket-function/src/batching");
6
+ const format_1 = require("socket-function/src/formatting/format");
7
+ const apiKeys_1 = require("./apiKeys");
8
+ let totalCost = 0;
9
+ function getTotalCost() {
10
+ return totalCost;
11
+ }
12
+ exports.getTotalCost = getTotalCost;
13
+ /** IMPORTANT! Make sure to tell the AI to return yaml. */
14
+ async function yamlOpenRouterCall(config) {
15
+ var _a;
16
+ let { model, messages, retries = 3, options, onCost } = config;
17
+ try {
18
+ let response = await openRouterCall({ model, messages, options, onCost, retries: 0 });
19
+ let result = (0, yaml_1.parseYAML)(response);
20
+ (_a = config.validate) === null || _a === void 0 ? void 0 : _a.call(config, result);
21
+ return result;
22
+ }
23
+ catch (error) {
24
+ if (retries > 0) {
25
+ return yamlOpenRouterCall({ model, messages, retries: retries - 1, onCost });
26
+ }
27
+ throw error;
28
+ }
29
+ }
30
+ exports.yamlOpenRouterCall = yamlOpenRouterCall;
31
+ async function simpleAICall(model, message) {
32
+ return await openRouterCallBase({
33
+ model,
34
+ messages: [{ role: "user", content: message }],
35
+ });
36
+ }
37
+ exports.simpleAICall = simpleAICall;
38
+ /** The message must request the result to be returned in YAML (we automatically parse this and return an object). */
39
+ async function simpleAICallTyped(model, message) {
40
+ return await yamlOpenRouterCall({
41
+ model,
42
+ messages: [{ role: "user", content: message }],
43
+ });
44
+ }
45
+ exports.simpleAICallTyped = simpleAICallTyped;
46
+ let pendingLog = undefined;
47
+ async function openRouterCall(config) {
48
+ return await openRouterCallBase(config);
49
+ }
50
+ exports.openRouterCall = openRouterCall;
51
+ async function openRouterCallBase(config) {
52
+ let { model, messages, options, onCost } = config;
53
+ let openrouterKey = (options === null || options === void 0 ? void 0 : options.apiKey) || await (0, apiKeys_1.getAPIKey)("openrouter.json");
54
+ console.log(`Calling ${model} with ${messages.length} messages`);
55
+ let time = Date.now();
56
+ let stillRunning = true;
57
+ // Spawn monitoring loop
58
+ void (async () => {
59
+ while (stillRunning) {
60
+ await new Promise(resolve => setTimeout(resolve, 5000));
61
+ if (stillRunning) {
62
+ console.log("OpenRouter call still running...");
63
+ }
64
+ }
65
+ })();
66
+ try {
67
+ return await (0, batching_1.retryFunctional)(async () => {
68
+ let response = await fetch("https://openrouter.ai/api/v1/chat/completions", {
69
+ method: "POST",
70
+ headers: {
71
+ "Authorization": `Bearer ${openrouterKey}`,
72
+ "Content-Type": "application/json",
73
+ },
74
+ body: JSON.stringify({
75
+ model,
76
+ messages,
77
+ provider: {
78
+ sort: "throughput",
79
+ },
80
+ usage: { include: true },
81
+ ...options,
82
+ }),
83
+ });
84
+ // If it failed, throw
85
+ if (response.status !== 200) {
86
+ let responseText = await response.text();
87
+ throw new Error(`Failed to call OpenRouter: ${response.status} ${response.statusText} ${responseText}`);
88
+ }
89
+ let responseObj = await response.json();
90
+ let newCost = responseObj.usage.cost;
91
+ totalCost += newCost;
92
+ onCost === null || onCost === void 0 ? void 0 : onCost(newCost);
93
+ if (!pendingLog) {
94
+ pendingLog = {
95
+ count: 0,
96
+ duration: 0,
97
+ cost: 0,
98
+ };
99
+ setTimeout(() => {
100
+ let log = pendingLog;
101
+ if (!log)
102
+ return;
103
+ console.log(`Ran: ${log.count} calls at a total summed cost of ${(0, format_1.formatNumber)(1 / log.cost)}/USD`);
104
+ pendingLog = undefined;
105
+ }, 10000);
106
+ }
107
+ pendingLog.count++;
108
+ pendingLog.duration += Date.now() - time;
109
+ pendingLog.cost += newCost;
110
+ return responseObj.choices[0].message.content;
111
+ }, { maxRetries: config.retries || 3 })();
112
+ }
113
+ finally {
114
+ stillRunning = false;
115
+ }
116
+ }
117
+ exports.openRouterCallBase = openRouterCallBase;
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm9wZW5yb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQW1DO0FBQ25DLDJEQUErRDtBQUMvRCxrRUFBcUU7QUFDckUsdUNBQXNDO0FBZ0J0QyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDbEIsU0FBZ0IsWUFBWTtJQUN4QixPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRkQsb0NBRUM7QUFXRCwwREFBMEQ7QUFDbkQsS0FBSyxVQUFVLGtCQUFrQixDQUFJLE1BTzNDOztJQUNHLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvRCxJQUFJLENBQUM7UUFDRCxJQUFJLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RixJQUFJLE1BQU0sR0FBRyxJQUFBLGdCQUFTLEVBQUMsUUFBUSxDQUFNLENBQUM7UUFDdEMsTUFBQSxNQUFNLENBQUMsUUFBUSx1REFBRyxNQUFNLENBQUMsQ0FBQztRQUMxQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxrQkFBa0IsQ0FBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDaEIsQ0FBQztBQUNMLENBQUM7QUFwQkQsZ0RBb0JDO0FBRU0sS0FBSyxVQUFVLFlBQVksQ0FBQyxLQUFhLEVBQUUsT0FBZTtJQUM3RCxPQUFPLE1BQU0sa0JBQWtCLENBQUM7UUFDNUIsS0FBSztRQUNMLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDakQsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUxELG9DQUtDO0FBQ0QscUhBQXFIO0FBQzlHLEtBQUssVUFBVSxpQkFBaUIsQ0FBSSxLQUFhLEVBQUUsT0FBZTtJQUNyRSxPQUFPLE1BQU0sa0JBQWtCLENBQUM7UUFDNUIsS0FBSztRQUNMLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDakQsQ0FBTSxDQUFDO0FBQ1osQ0FBQztBQUxELDhDQUtDO0FBRUQsSUFBSSxVQUFVLEdBSUUsU0FBUyxDQUFDO0FBRW5CLEtBQUssVUFBVSxjQUFjLENBQUMsTUFNcEM7SUFDRyxPQUFPLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQVJELHdDQVFDO0FBRU0sS0FBSyxVQUFVLGtCQUFrQixDQUFDLE1BTXhDO0lBQ0csSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNsRCxJQUFJLGFBQWEsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLEtBQUksTUFBTSxJQUFBLG1CQUFTLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxTQUFTLFFBQVEsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN0QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7SUFFeEIsd0JBQXdCO0lBQ3hCLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNiLE9BQU8sWUFBWSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFTCxJQUFJLENBQUM7UUFDRCxPQUFPLE1BQU0sSUFBQSwwQkFBZSxFQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BDLElBQUksUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLCtDQUErQyxFQUFFO2dCQUN4RSxNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUU7b0JBQ0wsZUFBZSxFQUFFLFVBQVUsYUFBYSxFQUFFO29CQUMxQyxjQUFjLEVBQUUsa0JBQWtCO2lCQUNyQztnQkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDakIsS0FBSztvQkFDTCxRQUFRO29CQUNSLFFBQVEsRUFBRTt3QkFDTixJQUFJLEVBQUUsWUFBWTtxQkFDckI7b0JBQ0QsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtvQkFDeEIsR0FBRyxPQUFPO2lCQUNiLENBQUM7YUFDTCxDQUFDLENBQUM7WUFFSCxzQkFBc0I7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDNUcsQ0FBQztZQUNELElBQUksV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFTcEMsQ0FBQztZQUNGLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3JDLFNBQVMsSUFBSSxPQUFPLENBQUM7WUFDckIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDZCxVQUFVLEdBQUc7b0JBQ1QsS0FBSyxFQUFFLENBQUM7b0JBQ1IsUUFBUSxFQUFFLENBQUM7b0JBQ1gsSUFBSSxFQUFFLENBQUM7aUJBQ1YsQ0FBQztnQkFDRixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLEdBQUc7d0JBQUUsT0FBTztvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLG9DQUFvQyxJQUFBLHFCQUFZLEVBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ25HLFVBQVUsR0FBRyxTQUFTLENBQUM7Z0JBQzNCLENBQUMsRUFBRSxLQUFNLENBQUMsQ0FBQztZQUNmLENBQUM7WUFDRCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsVUFBVSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLFVBQVUsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO1lBQzNCLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBaUIsQ0FBQztRQUM1RCxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDOUMsQ0FBQztZQUFTLENBQUM7UUFDUCxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7QUFDTCxDQUFDO0FBakZELGdEQWlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlWUFNTCB9IGZyb20gXCIuL3lhbWxcIjtcbmltcG9ydCB7IHJldHJ5RnVuY3Rpb25hbCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2Zvcm1hdFwiO1xuaW1wb3J0IHsgZ2V0QVBJS2V5IH0gZnJvbSBcIi4vYXBpS2V5c1wiO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlSGlzdG9yeSA9IHtcbiAgICByb2xlOiBcInN5c3RlbVwiIHwgXCJ1c2VyXCIgfCBcImFzc2lzdGFudFwiO1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbn1bXTtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VIaXN0b3J5MiA9IHtcbiAgICByb2xlOiBcInN5c3RlbVwiIHwgXCJ1c2VyXCIgfCBcImFzc2lzdGFudFwiO1xuICAgIGNvbnRlbnQ6IHN0cmluZyB8IHtcbiAgICAgICAgdHlwZTogXCJpbWFnZV91cmxcIjtcbiAgICAgICAgaW1hZ2VfdXJsOiB7XG4gICAgICAgICAgICB1cmw6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICB9W107XG59W107XG5cbmxldCB0b3RhbENvc3QgPSAwO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvdGFsQ29zdCgpIHtcbiAgICByZXR1cm4gdG90YWxDb3N0O1xufVxudHlwZSBPcGVuUm91dGVyT3B0aW9ucyA9IHtcbiAgICAvLyBJZiBub3QgcHJvdmlkZWQsIHdlJ2xsIHBvcCB1cCBhIG1vZGFsIHRvIGFzayB0aGUgdXNlciBmb3IgaXQsIE9yLCBpZiB3ZSdyZSBvbiB0aGUgc2VydmVyLCB3ZSdsbCB0cnkgdG8gcmVhZCBpdCBmcm9tIHRoZSB1c2VyIGZvbGRlci5cbiAgICBhcGlLZXk/OiBzdHJpbmc7XG4gICAgcHJvdmlkZXI/OiB7XG4gICAgICAgIHNvcnQ/OiBcInRocm91Z2hwdXRcIiB8IFwicHJpY2VcIiB8IFwibGF0ZW5jeVwiLFxuICAgICAgICAvLyBodHRwczovL29wZW5yb3V0ZXIuYWkvZG9jcy9mZWF0dXJlcy9wcm92aWRlci1yb3V0aW5nI29yZGVyaW5nLXNwZWNpZmljLXByb3ZpZGVyc1xuICAgICAgICBvcmRlcj86IHN0cmluZ1tdLFxuICAgIH1cbiAgICByZWFzb25pbmdFZmZvcnQ/OiBcImxvd1wiIHwgXCJtZWRpdW1cIiB8IFwiaGlnaFwiLFxufTtcbi8qKiBJTVBPUlRBTlQhIE1ha2Ugc3VyZSB0byB0ZWxsIHRoZSBBSSB0byByZXR1cm4geWFtbC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB5YW1sT3BlblJvdXRlckNhbGw8VD4oY29uZmlnOiB7XG4gICAgbW9kZWw6IHN0cmluZztcbiAgICBtZXNzYWdlczogTWVzc2FnZUhpc3Rvcnk7XG4gICAgcmV0cmllcz86IG51bWJlcjtcbiAgICBvcHRpb25zPzogT3BlblJvdXRlck9wdGlvbnM7XG4gICAgb25Db3N0PzogKGNvc3Q6IG51bWJlcikgPT4gdm9pZDtcbiAgICB2YWxpZGF0ZT86IChyZXNwb25zZTogVCkgPT4gdm9pZDtcbn0pOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgeyBtb2RlbCwgbWVzc2FnZXMsIHJldHJpZXMgPSAzLCBvcHRpb25zLCBvbkNvc3QgfSA9IGNvbmZpZztcbiAgICB0cnkge1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBvcGVuUm91dGVyQ2FsbCh7IG1vZGVsLCBtZXNzYWdlcywgb3B0aW9ucywgb25Db3N0LCByZXRyaWVzOiAwIH0pO1xuICAgICAgICBsZXQgcmVzdWx0ID0gcGFyc2VZQU1MKHJlc3BvbnNlKSBhcyBUO1xuICAgICAgICBjb25maWcudmFsaWRhdGU/LihyZXN1bHQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChyZXRyaWVzID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHlhbWxPcGVuUm91dGVyQ2FsbDxUPih7IG1vZGVsLCBtZXNzYWdlcywgcmV0cmllczogcmV0cmllcyAtIDEsIG9uQ29zdCB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaW1wbGVBSUNhbGwobW9kZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgb3BlblJvdXRlckNhbGxCYXNlKHtcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIG1lc3NhZ2VzOiBbeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogbWVzc2FnZSB9XSxcbiAgICB9KTtcbn1cbi8qKiBUaGUgbWVzc2FnZSBtdXN0IHJlcXVlc3QgdGhlIHJlc3VsdCB0byBiZSByZXR1cm5lZCBpbiBZQU1MICh3ZSBhdXRvbWF0aWNhbGx5IHBhcnNlIHRoaXMgYW5kIHJldHVybiBhbiBvYmplY3QpLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpbXBsZUFJQ2FsbFR5cGVkPFQ+KG1vZGVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBhd2FpdCB5YW1sT3BlblJvdXRlckNhbGwoe1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgbWVzc2FnZXM6IFt7IHJvbGU6IFwidXNlclwiLCBjb250ZW50OiBtZXNzYWdlIH1dLFxuICAgIH0pIGFzIFQ7XG59XG5cbmxldCBwZW5kaW5nTG9nOiB7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBkdXJhdGlvbjogbnVtYmVyO1xuICAgIGNvc3Q6IG51bWJlcjtcbn0gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuUm91dGVyQ2FsbChjb25maWc6IHtcbiAgICBtb2RlbDogc3RyaW5nO1xuICAgIG1lc3NhZ2VzOiBNZXNzYWdlSGlzdG9yeTtcbiAgICBvcHRpb25zPzogT3BlblJvdXRlck9wdGlvbnM7XG4gICAgb25Db3N0PzogKGNvc3Q6IG51bWJlcikgPT4gdm9pZDtcbiAgICByZXRyaWVzPzogbnVtYmVyO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IG9wZW5Sb3V0ZXJDYWxsQmFzZShjb25maWcpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlblJvdXRlckNhbGxCYXNlKGNvbmZpZzoge1xuICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgbWVzc2FnZXM6IE1lc3NhZ2VIaXN0b3J5MjtcbiAgICBvcHRpb25zPzogT3BlblJvdXRlck9wdGlvbnM7XG4gICAgb25Db3N0PzogKGNvc3Q6IG51bWJlcikgPT4gdm9pZDtcbiAgICByZXRyaWVzPzogbnVtYmVyO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHsgbW9kZWwsIG1lc3NhZ2VzLCBvcHRpb25zLCBvbkNvc3QgfSA9IGNvbmZpZztcbiAgICBsZXQgb3BlbnJvdXRlcktleSA9IG9wdGlvbnM/LmFwaUtleSB8fCBhd2FpdCBnZXRBUElLZXkoXCJvcGVucm91dGVyLmpzb25cIik7XG4gICAgY29uc29sZS5sb2coYENhbGxpbmcgJHttb2RlbH0gd2l0aCAke21lc3NhZ2VzLmxlbmd0aH0gbWVzc2FnZXNgKTtcbiAgICBsZXQgdGltZSA9IERhdGUubm93KCk7XG4gICAgbGV0IHN0aWxsUnVubmluZyA9IHRydWU7XG5cbiAgICAvLyBTcGF3biBtb25pdG9yaW5nIGxvb3BcbiAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHdoaWxlIChzdGlsbFJ1bm5pbmcpIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MDAwKSk7XG4gICAgICAgICAgICBpZiAoc3RpbGxSdW5uaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJPcGVuUm91dGVyIGNhbGwgc3RpbGwgcnVubmluZy4uLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmV0cnlGdW5jdGlvbmFsKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9vcGVucm91dGVyLmFpL2FwaS92MS9jaGF0L2NvbXBsZXRpb25zXCIsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IGBCZWFyZXIgJHtvcGVucm91dGVyS2V5fWAsXG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMsXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBcInRocm91Z2hwdXRcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdXNhZ2U6IHsgaW5jbHVkZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIElmIGl0IGZhaWxlZCwgdGhyb3dcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgICAgIGxldCByZXNwb25zZVRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY2FsbCBPcGVuUm91dGVyOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fSAke3Jlc3BvbnNlVGV4dH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZXNwb25zZU9iaiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyB7XG4gICAgICAgICAgICAgICAgdXNhZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgY29zdDogbnVtYmVyO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY2hvaWNlczoge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCBuZXdDb3N0ID0gcmVzcG9uc2VPYmoudXNhZ2UuY29zdDtcbiAgICAgICAgICAgIHRvdGFsQ29zdCArPSBuZXdDb3N0O1xuICAgICAgICAgICAgb25Db3N0Py4obmV3Q29zdCk7XG4gICAgICAgICAgICBpZiAoIXBlbmRpbmdMb2cpIHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nTG9nID0ge1xuICAgICAgICAgICAgICAgICAgICBjb3VudDogMCxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgIGNvc3Q6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvZyA9IHBlbmRpbmdMb2c7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbG9nKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSYW46ICR7bG9nLmNvdW50fSBjYWxscyBhdCBhIHRvdGFsIHN1bW1lZCBjb3N0IG9mICR7Zm9ybWF0TnVtYmVyKDEgLyBsb2cuY29zdCl9L1VTRGApO1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nTG9nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH0sIDEwXzAwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZW5kaW5nTG9nLmNvdW50Kys7XG4gICAgICAgICAgICBwZW5kaW5nTG9nLmR1cmF0aW9uICs9IERhdGUubm93KCkgLSB0aW1lO1xuICAgICAgICAgICAgcGVuZGluZ0xvZy5jb3N0ICs9IG5ld0Nvc3Q7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VPYmouY2hvaWNlc1swXS5tZXNzYWdlLmNvbnRlbnQgYXMgc3RyaW5nO1xuICAgICAgICB9LCB7IG1heFJldHJpZXM6IGNvbmZpZy5yZXRyaWVzIHx8IDMgfSkoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBzdGlsbFJ1bm5pbmcgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=
119
+ /* _JS_SOURCE_HASH = "29f9508fae589e294847d9f6787f804824093b8193621bf6749e0cde3607329d"; */
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
26
+ exports.stringifyYAML = exports.parseYAML = void 0;
27
+ const yaml = __importStar(require("./yamlBase"));
28
+ function parseYAML(text) {
29
+ text = text.trim();
30
+ if (text.startsWith("```yaml")) {
31
+ text = text.slice("```yaml".length).trim();
32
+ }
33
+ if (text.endsWith("```")) {
34
+ text = text.slice(0, -"```".length).trim();
35
+ }
36
+ text = text.trim();
37
+ return yaml.parse(text);
38
+ }
39
+ exports.parseYAML = parseYAML;
40
+ function stringifyYAML(value) {
41
+ return yaml.stringify(value);
42
+ }
43
+ exports.stringifyYAML = stringifyYAML;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInlhbWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFFbkMsU0FBZ0IsU0FBUyxDQUFDLElBQVk7SUFDbEMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQVZELDhCQVVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLEtBQWM7SUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFGRCxzQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhbWwgZnJvbSBcIi4veWFtbEJhc2VcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWUFNTCh0ZXh0OiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICB0ZXh0ID0gdGV4dC50cmltKCk7XG4gICAgaWYgKHRleHQuc3RhcnRzV2l0aChcImBgYHlhbWxcIikpIHtcbiAgICAgICAgdGV4dCA9IHRleHQuc2xpY2UoXCJgYGB5YW1sXCIubGVuZ3RoKS50cmltKCk7XG4gICAgfVxuICAgIGlmICh0ZXh0LmVuZHNXaXRoKFwiYGBgXCIpKSB7XG4gICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDAsIC1cImBgYFwiLmxlbmd0aCkudHJpbSgpO1xuICAgIH1cbiAgICB0ZXh0ID0gdGV4dC50cmltKCk7XG4gICAgcmV0dXJuIHlhbWwucGFyc2UodGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlZQU1MKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4geWFtbC5zdHJpbmdpZnkodmFsdWUpO1xufVxuXG4iXX0=
45
+ /* _JS_SOURCE_HASH = "842295d9e84e235d67bbc8cd2064350a75ff84df4b6d53be8b5c7822a03528fa"; */