@mistweaverco/kulala-core 0.1.5 → 0.18.0
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/cli.js +232 -0
- package/dist/index.d.ts +2 -33
- package/dist/index.js +236 -14763
- package/dist/lib/downloader/index.d.ts +15 -0
- package/dist/lib/kulala-core/index.d.ts +17 -0
- package/dist/lib/kulala-core/types.d.ts +142 -0
- package/package.json +15 -22
- package/LICENSE +0 -21
- package/README.md +0 -84
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -58
- package/dist/lib/auth/oauth2/acquisition.d.ts +0 -39
- package/dist/lib/auth/oauth2/acquisition.d.ts.map +0 -1
- package/dist/lib/auth/oauth2/browser-flow.d.ts +0 -62
- package/dist/lib/auth/oauth2/browser-flow.d.ts.map +0 -1
- package/dist/lib/auth/oauth2/config.d.ts +0 -17
- package/dist/lib/auth/oauth2/config.d.ts.map +0 -1
- package/dist/lib/auth/oauth2/continuation.d.ts +0 -10
- package/dist/lib/auth/oauth2/continuation.d.ts.map +0 -1
- package/dist/lib/auth/oauth2/manager.d.ts +0 -21
- package/dist/lib/auth/oauth2/manager.d.ts.map +0 -1
- package/dist/lib/auth/oauth2/prompt-error.d.ts +0 -10
- package/dist/lib/auth/oauth2/prompt-error.d.ts.map +0 -1
- package/dist/lib/auth/oauth2/prompt-helper.d.ts +0 -16
- package/dist/lib/auth/oauth2/prompt-helper.d.ts.map +0 -1
- package/dist/lib/auth/oauth2/types.d.ts +0 -60
- package/dist/lib/auth/oauth2/types.d.ts.map +0 -1
- package/dist/lib/helpers/index.d.ts +0 -2
- package/dist/lib/helpers/index.d.ts.map +0 -1
- package/dist/lib/parser/at-variables.d.ts +0 -17
- package/dist/lib/parser/at-variables.d.ts.map +0 -1
- package/dist/lib/parser/body.d.ts +0 -5
- package/dist/lib/parser/body.d.ts.map +0 -1
- package/dist/lib/parser/comment.d.ts +0 -3
- package/dist/lib/parser/comment.d.ts.map +0 -1
- package/dist/lib/parser/directive.d.ts +0 -15
- package/dist/lib/parser/directive.d.ts.map +0 -1
- package/dist/lib/parser/header.d.ts +0 -4
- package/dist/lib/parser/header.d.ts.map +0 -1
- package/dist/lib/parser/index.d.ts +0 -6
- package/dist/lib/parser/index.d.ts.map +0 -1
- package/dist/lib/parser/lib/helpers/index.d.ts +0 -10
- package/dist/lib/parser/lib/helpers/index.d.ts.map +0 -1
- package/dist/lib/parser/operator.d.ts +0 -4
- package/dist/lib/parser/operator.d.ts.map +0 -1
- package/dist/lib/parser/parser.d.ts +0 -3
- package/dist/lib/parser/parser.d.ts.map +0 -1
- package/dist/lib/parser/request.d.ts +0 -10
- package/dist/lib/parser/request.d.ts.map +0 -1
- package/dist/lib/parser/script.d.ts +0 -8
- package/dist/lib/parser/script.d.ts.map +0 -1
- package/dist/lib/parser/types/block.d.ts +0 -31
- package/dist/lib/parser/types/block.d.ts.map +0 -1
- package/dist/lib/parser/types/body.d.ts +0 -41
- package/dist/lib/parser/types/body.d.ts.map +0 -1
- package/dist/lib/parser/types/comment.d.ts +0 -6
- package/dist/lib/parser/types/comment.d.ts.map +0 -1
- package/dist/lib/parser/types/directive.d.ts +0 -13
- package/dist/lib/parser/types/directive.d.ts.map +0 -1
- package/dist/lib/parser/types/document.d.ts +0 -17
- package/dist/lib/parser/types/document.d.ts.map +0 -1
- package/dist/lib/parser/types/error.d.ts +0 -7
- package/dist/lib/parser/types/error.d.ts.map +0 -1
- package/dist/lib/parser/types/header.d.ts +0 -5
- package/dist/lib/parser/types/header.d.ts.map +0 -1
- package/dist/lib/parser/types/index.d.ts +0 -4
- package/dist/lib/parser/types/index.d.ts.map +0 -1
- package/dist/lib/parser/types/operator.d.ts +0 -10
- package/dist/lib/parser/types/operator.d.ts.map +0 -1
- package/dist/lib/parser/types/parser.d.ts +0 -6
- package/dist/lib/parser/types/parser.d.ts.map +0 -1
- package/dist/lib/parser/types/request.d.ts +0 -44
- package/dist/lib/parser/types/request.d.ts.map +0 -1
- package/dist/lib/parser/types/script.d.ts +0 -13
- package/dist/lib/parser/types/script.d.ts.map +0 -1
- package/dist/lib/parser/types/session.d.ts +0 -27
- package/dist/lib/parser/types/session.d.ts.map +0 -1
- package/dist/lib/parser/types/stdinparsed.d.ts +0 -31
- package/dist/lib/parser/types/stdinparsed.d.ts.map +0 -1
- package/dist/lib/parser/types/variable.d.ts +0 -4
- package/dist/lib/parser/types/variable.d.ts.map +0 -1
- package/dist/lib/persistence/cookie-store.d.ts +0 -13
- package/dist/lib/persistence/cookie-store.d.ts.map +0 -1
- package/dist/lib/persistence/data-dir.d.ts +0 -12
- package/dist/lib/persistence/data-dir.d.ts.map +0 -1
- package/dist/lib/persistence/db.d.ts +0 -44
- package/dist/lib/persistence/db.d.ts.map +0 -1
- package/dist/lib/persistence/document-store.d.ts +0 -15
- package/dist/lib/persistence/document-store.d.ts.map +0 -1
- package/dist/lib/persistence/encrypted-store.d.ts +0 -17
- package/dist/lib/persistence/encrypted-store.d.ts.map +0 -1
- package/dist/lib/persistence/history-store.d.ts +0 -26
- package/dist/lib/persistence/history-store.d.ts.map +0 -1
- package/dist/lib/persistence/index.d.ts +0 -26
- package/dist/lib/persistence/index.d.ts.map +0 -1
- package/dist/lib/persistence/keychain.d.ts +0 -24
- package/dist/lib/persistence/keychain.d.ts.map +0 -1
- package/dist/lib/persistence/prompt-store.d.ts +0 -31
- package/dist/lib/persistence/prompt-store.d.ts.map +0 -1
- package/dist/lib/persistence/replay-store.d.ts +0 -19
- package/dist/lib/persistence/replay-store.d.ts.map +0 -1
- package/dist/lib/persistence/variable-store.d.ts +0 -34
- package/dist/lib/persistence/variable-store.d.ts.map +0 -1
- package/dist/lib/runner/block.d.ts +0 -7
- package/dist/lib/runner/block.d.ts.map +0 -1
- package/dist/lib/runner/body.d.ts +0 -30
- package/dist/lib/runner/body.d.ts.map +0 -1
- package/dist/lib/runner/curl-transport.d.ts +0 -3
- package/dist/lib/runner/curl-transport.d.ts.map +0 -1
- package/dist/lib/runner/doRequest.d.ts +0 -5
- package/dist/lib/runner/doRequest.d.ts.map +0 -1
- package/dist/lib/runner/embedded-curl.d.ts +0 -2
- package/dist/lib/runner/embedded-curl.d.ts.map +0 -1
- package/dist/lib/runner/headers.d.ts +0 -14
- package/dist/lib/runner/headers.d.ts.map +0 -1
- package/dist/lib/runner/http-client.d.ts +0 -61
- package/dist/lib/runner/http-client.d.ts.map +0 -1
- package/dist/lib/runner/http-transport.d.ts +0 -5
- package/dist/lib/runner/http-transport.d.ts.map +0 -1
- package/dist/lib/runner/index.d.ts +0 -10
- package/dist/lib/runner/index.d.ts.map +0 -1
- package/dist/lib/runner/scripts.d.ts +0 -14
- package/dist/lib/runner/scripts.d.ts.map +0 -1
- package/dist/lib/runner/types.d.ts +0 -91
- package/dist/lib/runner/types.d.ts.map +0 -1
- package/dist/lib/variables/env-files.d.ts +0 -17
- package/dist/lib/variables/env-files.d.ts.map +0 -1
- package/dist/lib/variables/flatten-json.d.ts +0 -7
- package/dist/lib/variables/flatten-json.d.ts.map +0 -1
- package/dist/lib/variables/index.d.ts +0 -22
- package/dist/lib/variables/index.d.ts.map +0 -1
- package/dist/lib/variables/kuba.d.ts +0 -15
- package/dist/lib/variables/kuba.d.ts.map +0 -1
- package/dist/lib/variables/magic.d.ts +0 -7
- package/dist/lib/variables/magic.d.ts.map +0 -1
- package/dist/lib/variables/request-vars.d.ts +0 -25
- package/dist/lib/variables/request-vars.d.ts.map +0 -1
- package/dist/lib/variables/resolve.d.ts +0 -16
- package/dist/lib/variables/resolve.d.ts.map +0 -1
- package/dist/lib/variables/stable-id.d.ts +0 -6
- package/dist/lib/variables/stable-id.d.ts.map +0 -1
- package/dist/lib/variables/substitute.d.ts +0 -28
- package/dist/lib/variables/substitute.d.ts.map +0 -1
- package/scripts/ensure-vendored-curl.ts +0 -223
- package/scripts/generate-vendored-curl.ts +0 -108
package/dist/cli.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/cli.ts
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
|
|
6
|
+
// src/lib/downloader/index.ts
|
|
7
|
+
import fs from "node:fs";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
import { chmodSync, createWriteStream } from "node:fs";
|
|
11
|
+
import { pipeline } from "node:stream/promises";
|
|
12
|
+
|
|
13
|
+
// src/versions/backend.ts
|
|
14
|
+
var KULALA_CORE_VERSION = "0.18.0";
|
|
15
|
+
|
|
16
|
+
// src/lib/downloader/index.ts
|
|
17
|
+
var PACKAGE_ROOT = path.dirname(fileURLToPath(import.meta.url));
|
|
18
|
+
var BINARY_NAME = "kulala-core";
|
|
19
|
+
var DOWNLOAD_URL = "https://github.com/mistweaverco/kulala-core/releases/download/v%s/%s";
|
|
20
|
+
function platform() {
|
|
21
|
+
const os = process.platform === "darwin" ? "darwin" : process.platform === "win32" ? "windows" : "linux";
|
|
22
|
+
const arch = process.arch;
|
|
23
|
+
let archName = arch;
|
|
24
|
+
if (arch === "x64") {
|
|
25
|
+
archName = "x86_64";
|
|
26
|
+
} else if (arch === "arm64") {
|
|
27
|
+
archName = os === "darwin" ? "arm64" : "aarch64";
|
|
28
|
+
}
|
|
29
|
+
return `${os}-${archName}`;
|
|
30
|
+
}
|
|
31
|
+
function getBinDir() {
|
|
32
|
+
return path.join(PACKAGE_ROOT, "bin");
|
|
33
|
+
}
|
|
34
|
+
function getReleaseBinName() {
|
|
35
|
+
const name = `${BINARY_NAME}-${platform()}`;
|
|
36
|
+
return process.platform === "win32" ? `${name}.exe` : name;
|
|
37
|
+
}
|
|
38
|
+
function getBinName() {
|
|
39
|
+
return process.platform === "win32" ? `${BINARY_NAME}.exe` : BINARY_NAME;
|
|
40
|
+
}
|
|
41
|
+
function getBinPath() {
|
|
42
|
+
return path.join(getBinDir(), getBinName());
|
|
43
|
+
}
|
|
44
|
+
function getVersionPath() {
|
|
45
|
+
return path.join(getBinDir(), "version.txt");
|
|
46
|
+
}
|
|
47
|
+
function getLocalDevBinaryPath() {
|
|
48
|
+
const candidates = [
|
|
49
|
+
path.join(PACKAGE_ROOT, "..", "core", "dist", "kulala-core"),
|
|
50
|
+
path.join(PACKAGE_ROOT, "..", "..", "core", "dist", "kulala-core")
|
|
51
|
+
];
|
|
52
|
+
for (const candidate of candidates) {
|
|
53
|
+
if (fs.existsSync(candidate)) {
|
|
54
|
+
return candidate;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function binaryExists() {
|
|
60
|
+
return fs.existsSync(getBinPath());
|
|
61
|
+
}
|
|
62
|
+
function getInstalledVersion() {
|
|
63
|
+
const versionPath = getVersionPath();
|
|
64
|
+
if (!fs.existsSync(versionPath)) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return fs.readFileSync(versionPath, "utf-8").trim();
|
|
68
|
+
}
|
|
69
|
+
function versionMatches() {
|
|
70
|
+
const installed = getInstalledVersion();
|
|
71
|
+
return installed === KULALA_CORE_VERSION;
|
|
72
|
+
}
|
|
73
|
+
function makeExecutable(filePath) {
|
|
74
|
+
if (process.platform !== "win32") {
|
|
75
|
+
chmodSync(filePath, 493);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
var SPINNER_FRAMES = [
|
|
79
|
+
"⠋",
|
|
80
|
+
"⠙",
|
|
81
|
+
"⠹",
|
|
82
|
+
"⠸",
|
|
83
|
+
"⠼",
|
|
84
|
+
"⠴",
|
|
85
|
+
"⠦",
|
|
86
|
+
"⠧",
|
|
87
|
+
"⠇",
|
|
88
|
+
"⠏"
|
|
89
|
+
];
|
|
90
|
+
function isInteractiveTerminal() {
|
|
91
|
+
return process.stderr.isTTY === true;
|
|
92
|
+
}
|
|
93
|
+
function createDownloadProgress() {
|
|
94
|
+
let timer;
|
|
95
|
+
let frame = 0;
|
|
96
|
+
let message = "";
|
|
97
|
+
const clearLine = () => {
|
|
98
|
+
if (timer) {
|
|
99
|
+
clearInterval(timer);
|
|
100
|
+
timer = undefined;
|
|
101
|
+
}
|
|
102
|
+
if (isInteractiveTerminal()) {
|
|
103
|
+
process.stderr.write("\r\x1B[K");
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
start(msg) {
|
|
108
|
+
message = msg;
|
|
109
|
+
if (!isInteractiveTerminal()) {
|
|
110
|
+
console.error(message);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const render = () => {
|
|
114
|
+
process.stderr.write(`\r${SPINNER_FRAMES[frame]} ${message}`);
|
|
115
|
+
frame = (frame + 1) % SPINNER_FRAMES.length;
|
|
116
|
+
};
|
|
117
|
+
render();
|
|
118
|
+
timer = setInterval(render, 80);
|
|
119
|
+
},
|
|
120
|
+
succeed(msg) {
|
|
121
|
+
clearLine();
|
|
122
|
+
console.error(msg);
|
|
123
|
+
},
|
|
124
|
+
fail() {
|
|
125
|
+
clearLine();
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async function downloadFile(url, outputPath) {
|
|
130
|
+
const response = await fetch(url);
|
|
131
|
+
if (!response.ok || !response.body) {
|
|
132
|
+
throw new Error(`Failed to download kulala-core from ${url}: ${response.status} ${response.statusText}`);
|
|
133
|
+
}
|
|
134
|
+
await pipeline(response.body, createWriteStream(outputPath));
|
|
135
|
+
}
|
|
136
|
+
function removeStaleBinary() {
|
|
137
|
+
if (!binaryExists()) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
fs.unlinkSync(getBinPath());
|
|
141
|
+
const versionPath = getVersionPath();
|
|
142
|
+
if (fs.existsSync(versionPath)) {
|
|
143
|
+
fs.unlinkSync(versionPath);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async function installBackend() {
|
|
147
|
+
const binDir = getBinDir();
|
|
148
|
+
fs.mkdirSync(binDir, { recursive: true });
|
|
149
|
+
const releaseName = getReleaseBinName();
|
|
150
|
+
const url = DOWNLOAD_URL.replace("%s", KULALA_CORE_VERSION).replace("%s", releaseName);
|
|
151
|
+
const downloadPath = path.join(binDir, `${releaseName}.download`);
|
|
152
|
+
const binPath = getBinPath();
|
|
153
|
+
const progress = createDownloadProgress();
|
|
154
|
+
progress.start(`Downloading kulala-core v${KULALA_CORE_VERSION}...`);
|
|
155
|
+
try {
|
|
156
|
+
await downloadFile(url, downloadPath);
|
|
157
|
+
makeExecutable(downloadPath);
|
|
158
|
+
fs.renameSync(downloadPath, binPath);
|
|
159
|
+
fs.writeFileSync(getVersionPath(), KULALA_CORE_VERSION, "utf-8");
|
|
160
|
+
progress.succeed(`Installed kulala-core to ${binPath}`);
|
|
161
|
+
} catch (error) {
|
|
162
|
+
progress.fail();
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
async function tryInstallBackend() {
|
|
167
|
+
const fromEnv = process.env.KULALA_CORE_PATH;
|
|
168
|
+
if (fromEnv && fromEnv.length > 0) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (getLocalDevBinaryPath()) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (binaryExists() && versionMatches()) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (binaryExists()) {
|
|
178
|
+
removeStaleBinary();
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
await installBackend();
|
|
182
|
+
} catch (error) {
|
|
183
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
184
|
+
console.error(`Warning: failed to download kulala-core during install: ${message}`);
|
|
185
|
+
console.error("@mistweaverco/kulala-core will attempt to download it on first use instead.");
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function ensureInstalled() {
|
|
189
|
+
const fromEnv = process.env.KULALA_CORE_PATH;
|
|
190
|
+
if (fromEnv && fromEnv.length > 0) {
|
|
191
|
+
if (!fs.existsSync(fromEnv)) {
|
|
192
|
+
throw new Error(`KULALA_CORE_PATH does not exist: ${fromEnv}`);
|
|
193
|
+
}
|
|
194
|
+
return fromEnv;
|
|
195
|
+
}
|
|
196
|
+
const localDevBinary = getLocalDevBinaryPath();
|
|
197
|
+
if (localDevBinary) {
|
|
198
|
+
return localDevBinary;
|
|
199
|
+
}
|
|
200
|
+
if (binaryExists() && versionMatches()) {
|
|
201
|
+
return getBinPath();
|
|
202
|
+
}
|
|
203
|
+
if (binaryExists()) {
|
|
204
|
+
removeStaleBinary();
|
|
205
|
+
}
|
|
206
|
+
await installBackend();
|
|
207
|
+
return getBinPath();
|
|
208
|
+
}
|
|
209
|
+
var downloader = {
|
|
210
|
+
ensureInstalled,
|
|
211
|
+
getBinPath,
|
|
212
|
+
installBackend,
|
|
213
|
+
tryInstallBackend
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// src/cli.ts
|
|
217
|
+
async function main() {
|
|
218
|
+
const executable = await downloader.ensureInstalled();
|
|
219
|
+
const result = spawnSync(executable, process.argv.slice(2), {
|
|
220
|
+
stdio: "inherit",
|
|
221
|
+
env: process.env
|
|
222
|
+
});
|
|
223
|
+
if (result.error) {
|
|
224
|
+
throw result.error;
|
|
225
|
+
}
|
|
226
|
+
process.exit(result.status ?? 1);
|
|
227
|
+
}
|
|
228
|
+
main().catch((error) => {
|
|
229
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
230
|
+
console.error(message);
|
|
231
|
+
process.exit(1);
|
|
232
|
+
});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,33 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export type { KulalaDocument } from "./lib/parser/types";
|
|
4
|
-
export type { KulalaStdinParsed } from "./lib/parser/types/stdinparsed";
|
|
5
|
-
export type { KulalaRunOptions } from "./lib/runner";
|
|
6
|
-
export type { KulalaRequestErrorResponse, KulalaRequestSuccessResponse, KulalaResponseWrapper, } from "./lib/runner";
|
|
7
|
-
import type { KulalaStdinActionRunLimit } from "./lib/parser/types/stdinparsed";
|
|
8
|
-
import type { KulalaResponseWrapper, KulalaRunOptions } from "./lib/runner";
|
|
9
|
-
import type { KulalaDocument } from "./lib/parser/types";
|
|
10
|
-
export declare const kulalaCore: {
|
|
11
|
-
readonly parser: import("./lib/parser/types").KulalaParser;
|
|
12
|
-
readonly runner: {
|
|
13
|
-
run: (doc: KulalaDocument, limit?: KulalaStdinActionRunLimit[], options?: KulalaRunOptions) => Promise<void>;
|
|
14
|
-
};
|
|
15
|
-
readonly parse: (input: {
|
|
16
|
-
content: string;
|
|
17
|
-
filepath?: string;
|
|
18
|
-
}) => Promise<KulalaDocument>;
|
|
19
|
-
readonly validate: (input: {
|
|
20
|
-
content: string;
|
|
21
|
-
filepath?: string;
|
|
22
|
-
}) => Promise<KulalaDocument>;
|
|
23
|
-
readonly run: (input: {
|
|
24
|
-
content: string;
|
|
25
|
-
filepath?: string;
|
|
26
|
-
env?: string;
|
|
27
|
-
limit?: KulalaStdinActionRunLimit[];
|
|
28
|
-
}) => Promise<{
|
|
29
|
-
doc: KulalaDocument;
|
|
30
|
-
response: KulalaResponseWrapper;
|
|
31
|
-
}>;
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=index.d.ts.map
|
|
1
|
+
export { kulalaCore } from "./lib/kulala-core";
|
|
2
|
+
export type { InvokeOptions, KulalaDocument, KulalaFormatInput, KulalaHttpFormatResult, KulalaParseInput, KulalaRequestErrorResponse, KulalaRequestSuccessResponse, KulalaResponseItem, KulalaResponseWrapper, KulalaRunInput, RunLimit, } from "./lib/kulala-core";
|