@fathippo/connect 0.1.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.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +239 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/openclaw.d.ts +13 -0
- package/dist/openclaw.d.ts.map +1 -0
- package/dist/openclaw.js +102 -0
- package/dist/openclaw.js.map +1 -0
- package/package.json +37 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAyPA,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EtE"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import { copyToClipboard, defaultInstallationName, ensureOpenClawAvailable, installOpenClawContextEngine, } from "./openclaw.js";
|
|
4
|
+
const CLI_VERSION = "0.1.0";
|
|
5
|
+
const DEFAULT_BASE_URL = "https://fathippo.ai/api";
|
|
6
|
+
const DEFAULT_POLL_INTERVAL_MS = 2000;
|
|
7
|
+
const DEFAULT_POLL_TIMEOUT_MS = 15 * 60 * 1000;
|
|
8
|
+
function printHelp() {
|
|
9
|
+
console.log(`Usage: npx @fathippo/connect openclaw [options]
|
|
10
|
+
|
|
11
|
+
Options:
|
|
12
|
+
--local Configure local-only mode
|
|
13
|
+
--api-key <key> Use an existing hosted API key
|
|
14
|
+
--namespace <name> Shared FatHippo namespace to attach
|
|
15
|
+
--base-url <url> FatHippo API base URL (default: ${DEFAULT_BASE_URL})
|
|
16
|
+
--installation-name <name>
|
|
17
|
+
Override the OpenClaw installation label
|
|
18
|
+
--no-restart Skip 'openclaw gateway restart'
|
|
19
|
+
--json Print the final result as JSON
|
|
20
|
+
--help Show this help`);
|
|
21
|
+
}
|
|
22
|
+
function expectValue(args, index, flag) {
|
|
23
|
+
const value = args[index + 1];
|
|
24
|
+
if (!value || value.startsWith("--")) {
|
|
25
|
+
throw new Error(`Missing value for ${flag}`);
|
|
26
|
+
}
|
|
27
|
+
return { value, nextIndex: index + 1 };
|
|
28
|
+
}
|
|
29
|
+
function parseArgs(argv) {
|
|
30
|
+
const command = argv[0];
|
|
31
|
+
if (command !== "openclaw") {
|
|
32
|
+
if (command === "--help" || command === "-h" || typeof command === "undefined") {
|
|
33
|
+
printHelp();
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Unknown command '${command}'. Only 'openclaw' is supported right now.`);
|
|
37
|
+
}
|
|
38
|
+
const options = {
|
|
39
|
+
baseUrl: DEFAULT_BASE_URL,
|
|
40
|
+
command: "openclaw",
|
|
41
|
+
installationName: defaultInstallationName(),
|
|
42
|
+
json: false,
|
|
43
|
+
local: false,
|
|
44
|
+
noRestart: false,
|
|
45
|
+
};
|
|
46
|
+
for (let index = 1; index < argv.length; index += 1) {
|
|
47
|
+
const arg = argv[index];
|
|
48
|
+
switch (arg) {
|
|
49
|
+
case "--help":
|
|
50
|
+
case "-h":
|
|
51
|
+
printHelp();
|
|
52
|
+
process.exit(0);
|
|
53
|
+
case "--local":
|
|
54
|
+
options.local = true;
|
|
55
|
+
break;
|
|
56
|
+
case "--json":
|
|
57
|
+
options.json = true;
|
|
58
|
+
break;
|
|
59
|
+
case "--no-restart":
|
|
60
|
+
options.noRestart = true;
|
|
61
|
+
break;
|
|
62
|
+
case "--api-key": {
|
|
63
|
+
const { value, nextIndex } = expectValue(argv, index, arg);
|
|
64
|
+
options.apiKey = value;
|
|
65
|
+
index = nextIndex;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case "--namespace": {
|
|
69
|
+
const { value, nextIndex } = expectValue(argv, index, arg);
|
|
70
|
+
options.namespace = value;
|
|
71
|
+
index = nextIndex;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case "--base-url": {
|
|
75
|
+
const { value, nextIndex } = expectValue(argv, index, arg);
|
|
76
|
+
options.baseUrl = value;
|
|
77
|
+
index = nextIndex;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case "--installation-name": {
|
|
81
|
+
const { value, nextIndex } = expectValue(argv, index, arg);
|
|
82
|
+
options.installationName = value;
|
|
83
|
+
index = nextIndex;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
default:
|
|
87
|
+
throw new Error(`Unknown flag '${arg}'. Use --help for usage.`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (options.local && options.apiKey) {
|
|
91
|
+
throw new Error("Use either --local or --api-key, not both.");
|
|
92
|
+
}
|
|
93
|
+
return options;
|
|
94
|
+
}
|
|
95
|
+
async function postJson(url, body) {
|
|
96
|
+
const response = await fetch(url, {
|
|
97
|
+
method: "POST",
|
|
98
|
+
headers: {
|
|
99
|
+
"Content-Type": "application/json",
|
|
100
|
+
},
|
|
101
|
+
body: JSON.stringify(body),
|
|
102
|
+
});
|
|
103
|
+
if (!response.ok) {
|
|
104
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
105
|
+
throw new Error(`Connect request failed (${response.status}): ${errorText}`);
|
|
106
|
+
}
|
|
107
|
+
return response.json();
|
|
108
|
+
}
|
|
109
|
+
async function getJson(url, token) {
|
|
110
|
+
const response = await fetch(url, {
|
|
111
|
+
headers: {
|
|
112
|
+
Authorization: `Bearer ${token}`,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
const text = await response.text().catch(() => "");
|
|
116
|
+
let body;
|
|
117
|
+
try {
|
|
118
|
+
body = (text ? JSON.parse(text) : {});
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
body = { error: text };
|
|
122
|
+
}
|
|
123
|
+
return { status: response.status, body };
|
|
124
|
+
}
|
|
125
|
+
function connectApiUrl(baseUrl, pathname) {
|
|
126
|
+
const url = new URL(baseUrl);
|
|
127
|
+
url.pathname = pathname;
|
|
128
|
+
url.search = "";
|
|
129
|
+
url.hash = "";
|
|
130
|
+
return url;
|
|
131
|
+
}
|
|
132
|
+
async function startHostedConnect(options) {
|
|
133
|
+
const startUrl = connectApiUrl(options.baseUrl, "/api/connect/openclaw/start");
|
|
134
|
+
return postJson(startUrl, {
|
|
135
|
+
arch: os.arch(),
|
|
136
|
+
cliVersion: CLI_VERSION,
|
|
137
|
+
installationName: options.installationName,
|
|
138
|
+
mode: "hosted",
|
|
139
|
+
namespaceHint: options.namespace,
|
|
140
|
+
platform: os.platform(),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function sleep(ms) {
|
|
144
|
+
return new Promise((resolve) => {
|
|
145
|
+
setTimeout(resolve, ms);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async function waitForAuthorization(options, start) {
|
|
149
|
+
const pollUrl = connectApiUrl(options.baseUrl, "/api/connect/openclaw/poll");
|
|
150
|
+
pollUrl.searchParams.set("connectId", start.connectId);
|
|
151
|
+
const startedAt = Date.now();
|
|
152
|
+
const intervalMs = Math.max(start.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS, 1000);
|
|
153
|
+
for (;;) {
|
|
154
|
+
const { status, body } = await getJson(pollUrl, start.pollToken);
|
|
155
|
+
if (status === 200 && body.status === "authorized") {
|
|
156
|
+
return body;
|
|
157
|
+
}
|
|
158
|
+
if (status === 202 && body.status === "pending") {
|
|
159
|
+
if (Date.now() - startedAt > DEFAULT_POLL_TIMEOUT_MS) {
|
|
160
|
+
throw new Error("Timed out waiting for browser authorization.");
|
|
161
|
+
}
|
|
162
|
+
await sleep(intervalMs);
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if ((status === 410 || status === 409) && (body.status === "expired" || body.status === "consumed")) {
|
|
166
|
+
throw new Error(body.error ?? `Connect session ${body.status}. Start a fresh install and try again.`);
|
|
167
|
+
}
|
|
168
|
+
const error = body.error;
|
|
169
|
+
throw new Error(error || `Unexpected authorization response (${status}).`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function printJson(payload) {
|
|
173
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
174
|
+
}
|
|
175
|
+
export async function main(argv = process.argv.slice(2)) {
|
|
176
|
+
const options = parseArgs(argv);
|
|
177
|
+
await ensureOpenClawAvailable();
|
|
178
|
+
if (options.local) {
|
|
179
|
+
await installOpenClawContextEngine({
|
|
180
|
+
mode: "local",
|
|
181
|
+
noRestart: options.noRestart,
|
|
182
|
+
});
|
|
183
|
+
if (options.json) {
|
|
184
|
+
printJson({
|
|
185
|
+
baseUrl: null,
|
|
186
|
+
installationId: null,
|
|
187
|
+
mode: "local",
|
|
188
|
+
namespace: null,
|
|
189
|
+
restarted: !options.noRestart,
|
|
190
|
+
});
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
console.log("FatHippo is connected to OpenClaw in local-only mode.");
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
let apiKey = options.apiKey?.trim();
|
|
197
|
+
let installationId = `oc_${crypto.randomUUID().replaceAll("-", "")}`;
|
|
198
|
+
let namespace = options.namespace?.trim() || null;
|
|
199
|
+
let baseUrl = options.baseUrl;
|
|
200
|
+
if (!apiKey) {
|
|
201
|
+
console.log("Checking OpenClaw...");
|
|
202
|
+
console.log("Creating secure login link...");
|
|
203
|
+
const start = await startHostedConnect(options);
|
|
204
|
+
const copied = await copyToClipboard(start.loginUrl);
|
|
205
|
+
console.log(copied ? "Link copied to your clipboard." : "Clipboard unavailable. Copy the link below manually.");
|
|
206
|
+
console.log("");
|
|
207
|
+
console.log("Finish login in your browser:");
|
|
208
|
+
console.log(start.loginUrl);
|
|
209
|
+
console.log("");
|
|
210
|
+
console.log(`Authorization code: ${start.userCode}`);
|
|
211
|
+
console.log("");
|
|
212
|
+
console.log("Waiting for authorization...");
|
|
213
|
+
const authorized = await waitForAuthorization(options, start);
|
|
214
|
+
apiKey = authorized.apiKey;
|
|
215
|
+
installationId = authorized.installationId;
|
|
216
|
+
namespace = authorized.namespace;
|
|
217
|
+
baseUrl = authorized.baseUrl || options.baseUrl;
|
|
218
|
+
}
|
|
219
|
+
await installOpenClawContextEngine({
|
|
220
|
+
apiKey,
|
|
221
|
+
baseUrl,
|
|
222
|
+
installationId,
|
|
223
|
+
mode: "hosted",
|
|
224
|
+
namespace: namespace ?? undefined,
|
|
225
|
+
noRestart: options.noRestart,
|
|
226
|
+
});
|
|
227
|
+
if (options.json) {
|
|
228
|
+
printJson({
|
|
229
|
+
baseUrl,
|
|
230
|
+
installationId,
|
|
231
|
+
mode: "hosted",
|
|
232
|
+
namespace,
|
|
233
|
+
restarted: !options.noRestart,
|
|
234
|
+
});
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
console.log(options.noRestart ? "FatHippo is configured for OpenClaw." : "FatHippo is connected to OpenClaw.");
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type OpenClawInstallOptions = {
|
|
2
|
+
mode: "hosted" | "local";
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
namespace?: string;
|
|
6
|
+
installationId?: string;
|
|
7
|
+
noRestart?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function ensureOpenClawAvailable(): Promise<void>;
|
|
10
|
+
export declare function defaultInstallationName(): string;
|
|
11
|
+
export declare function copyToClipboard(value: string): Promise<boolean>;
|
|
12
|
+
export declare function installOpenClawContextEngine(options: OpenClawInstallOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=openclaw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../src/openclaw.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AA0DF,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBrE;AAMD,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCjG"}
|
package/dist/openclaw.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
const OPENCLAW_BINARY = "openclaw";
|
|
4
|
+
const OPENCLAW_PLUGIN_ID = "fathippo-context-engine";
|
|
5
|
+
const OPENCLAW_PLUGIN_PACKAGE = "@fathippo/fathippo-context-engine";
|
|
6
|
+
function formatCommand(binary, args) {
|
|
7
|
+
return [binary, ...args].join(" ");
|
|
8
|
+
}
|
|
9
|
+
async function runCommand(binary, args, options = {}) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
const child = spawn(binary, args, {
|
|
12
|
+
stdio: "pipe",
|
|
13
|
+
env: process.env,
|
|
14
|
+
});
|
|
15
|
+
let stdout = "";
|
|
16
|
+
let stderr = "";
|
|
17
|
+
child.stdout.setEncoding("utf8");
|
|
18
|
+
child.stderr.setEncoding("utf8");
|
|
19
|
+
child.stdout.on("data", (chunk) => {
|
|
20
|
+
stdout += chunk;
|
|
21
|
+
});
|
|
22
|
+
child.stderr.on("data", (chunk) => {
|
|
23
|
+
stderr += chunk;
|
|
24
|
+
});
|
|
25
|
+
child.on("error", (error) => {
|
|
26
|
+
reject(new Error(`Failed to run '${formatCommand(binary, args)}': ${error.message}`));
|
|
27
|
+
});
|
|
28
|
+
child.on("close", (code) => {
|
|
29
|
+
if (code === 0) {
|
|
30
|
+
resolve({ stdout, stderr });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
reject(new Error(`Command failed (${code}): ${formatCommand(binary, args)}\n${stderr.trim() || stdout.trim() || "No output"}`));
|
|
34
|
+
});
|
|
35
|
+
if (typeof options.input === "string") {
|
|
36
|
+
child.stdin.write(options.input);
|
|
37
|
+
}
|
|
38
|
+
child.stdin.end();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async function runOpenClaw(args) {
|
|
42
|
+
await runCommand(OPENCLAW_BINARY, args);
|
|
43
|
+
}
|
|
44
|
+
export async function ensureOpenClawAvailable() {
|
|
45
|
+
await runOpenClaw(["--help"]);
|
|
46
|
+
}
|
|
47
|
+
export function defaultInstallationName() {
|
|
48
|
+
const hostname = os.hostname().replace(/[^a-zA-Z0-9-]/g, "-").slice(0, 48);
|
|
49
|
+
return `${hostname || "machine"}-openclaw`;
|
|
50
|
+
}
|
|
51
|
+
export async function copyToClipboard(value) {
|
|
52
|
+
const attempts = [];
|
|
53
|
+
if (process.platform === "darwin") {
|
|
54
|
+
attempts.push({ binary: "pbcopy", args: [], input: value });
|
|
55
|
+
}
|
|
56
|
+
else if (process.platform === "win32") {
|
|
57
|
+
attempts.push({ binary: "cmd", args: ["/c", "clip"], input: value });
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
attempts.push({ binary: "wl-copy", args: [], input: value }, { binary: "xclip", args: ["-selection", "clipboard"], input: value }, { binary: "xsel", args: ["--clipboard", "--input"], input: value });
|
|
61
|
+
}
|
|
62
|
+
for (const attempt of attempts) {
|
|
63
|
+
try {
|
|
64
|
+
await runCommand(attempt.binary, attempt.args, { input: attempt.input });
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Try the next clipboard provider.
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
async function setConfigValue(path, value) {
|
|
74
|
+
await runOpenClaw(["config", "set", path, value]);
|
|
75
|
+
}
|
|
76
|
+
export async function installOpenClawContextEngine(options) {
|
|
77
|
+
await runOpenClaw(["plugins", "install", OPENCLAW_PLUGIN_PACKAGE]);
|
|
78
|
+
await setConfigValue("plugins.slots.contextEngine", OPENCLAW_PLUGIN_ID);
|
|
79
|
+
await setConfigValue(`plugins.entries.${OPENCLAW_PLUGIN_ID}.config.mode`, options.mode);
|
|
80
|
+
if (options.mode === "hosted") {
|
|
81
|
+
if (!options.apiKey) {
|
|
82
|
+
throw new Error("Hosted OpenClaw install requires an API key.");
|
|
83
|
+
}
|
|
84
|
+
const baseUrl = options.baseUrl?.trim();
|
|
85
|
+
if (!baseUrl) {
|
|
86
|
+
throw new Error("Hosted OpenClaw install requires a base URL.");
|
|
87
|
+
}
|
|
88
|
+
await setConfigValue(`plugins.entries.${OPENCLAW_PLUGIN_ID}.config.apiKey`, options.apiKey);
|
|
89
|
+
await setConfigValue(`plugins.entries.${OPENCLAW_PLUGIN_ID}.config.baseUrl`, baseUrl);
|
|
90
|
+
await setConfigValue(`plugins.entries.${OPENCLAW_PLUGIN_ID}.config.injectCritical`, "true");
|
|
91
|
+
if (options.namespace?.trim()) {
|
|
92
|
+
await setConfigValue(`plugins.entries.${OPENCLAW_PLUGIN_ID}.config.namespace`, options.namespace.trim());
|
|
93
|
+
}
|
|
94
|
+
if (options.installationId?.trim()) {
|
|
95
|
+
await setConfigValue(`plugins.entries.${OPENCLAW_PLUGIN_ID}.config.installationId`, options.installationId.trim());
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (!options.noRestart) {
|
|
99
|
+
await runOpenClaw(["gateway", "restart"]);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=openclaw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../src/openclaw.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fathippo/connect",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "One-command installers for FatHippo integrations",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"fathippo-connect": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.json",
|
|
22
|
+
"dev": "tsc -p tsconfig.json --watch",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"fathippo",
|
|
27
|
+
"openclaw",
|
|
28
|
+
"installer",
|
|
29
|
+
"connect"
|
|
30
|
+
],
|
|
31
|
+
"author": "FatHippo",
|
|
32
|
+
"license": "Apache-2.0",
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^20.19.17",
|
|
35
|
+
"typescript": "^5.9.2"
|
|
36
|
+
}
|
|
37
|
+
}
|