@hblues419/agent-dashboard-core 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/handlers.d.ts +13 -0
- package/dist/handlers.js +292 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/onchainos.d.ts +18 -0
- package/dist/onchainos.js +59 -0
- package/dist/onchainos.js.map +1 -0
- package/dist/openclaw.d.ts +36 -0
- package/dist/openclaw.js +161 -0
- package/dist/openclaw.js.map +1 -0
- package/dist/skills.d.ts +28 -0
- package/dist/skills.js +121 -0
- package/dist/skills.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { OnchainosClient, OnchainosResponse } from "./onchainos.js";
|
|
2
|
+
import type { OpenClawClient } from "./openclaw.js";
|
|
3
|
+
import type { SkillsScanner } from "./skills.js";
|
|
4
|
+
export interface HandlerContext {
|
|
5
|
+
oc: OnchainosClient;
|
|
6
|
+
openclaw?: OpenClawClient;
|
|
7
|
+
skills: SkillsScanner;
|
|
8
|
+
defaultChain: string;
|
|
9
|
+
}
|
|
10
|
+
type Handler = (ctx: HandlerContext, params: Record<string, any>) => Promise<OnchainosResponse>;
|
|
11
|
+
export declare const handlers: Record<string, Handler>;
|
|
12
|
+
export declare function dispatch(ctx: HandlerContext, method: string, params: Record<string, any>): Promise<OnchainosResponse>;
|
|
13
|
+
export {};
|
package/dist/handlers.js
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
function fail(msg) {
|
|
2
|
+
return { ok: false, error: { message: msg } };
|
|
3
|
+
}
|
|
4
|
+
const DEFAULT_CHAINS = "ethereum,base,bsc,polygon,arbitrum,optimism,solana,xlayer";
|
|
5
|
+
export const handlers = {
|
|
6
|
+
// Auth
|
|
7
|
+
"wallet.status": async (ctx) => ctx.oc.run(["wallet", "status"]),
|
|
8
|
+
"wallet.login": async (ctx, p) => {
|
|
9
|
+
if (!p.email)
|
|
10
|
+
return fail("email required");
|
|
11
|
+
return ctx.oc.run(["wallet", "login", p.email]);
|
|
12
|
+
},
|
|
13
|
+
"wallet.verify": async (ctx, p) => {
|
|
14
|
+
if (!p.code)
|
|
15
|
+
return fail("code required");
|
|
16
|
+
return ctx.oc.run(["wallet", "verify", p.code]);
|
|
17
|
+
},
|
|
18
|
+
"wallet.logout": async (ctx) => ctx.oc.run(["wallet", "logout"]),
|
|
19
|
+
// Wallet
|
|
20
|
+
"wallet.addresses": async (ctx) => ctx.oc.run(["wallet", "addresses"]),
|
|
21
|
+
"wallet.chains": async (ctx) => ctx.oc.run(["wallet", "chains"]),
|
|
22
|
+
"portfolio.chains": async (ctx) => ctx.oc.run(["portfolio", "chains"]),
|
|
23
|
+
// Portfolio
|
|
24
|
+
"portfolio.overview": async (ctx, p) => {
|
|
25
|
+
if (!p.address)
|
|
26
|
+
return fail("address required");
|
|
27
|
+
return ctx.oc.run(["portfolio", "total-value", "--address", p.address, "--chains", p.chains ?? DEFAULT_CHAINS]);
|
|
28
|
+
},
|
|
29
|
+
"portfolio.tokens": async (ctx, p) => {
|
|
30
|
+
if (!p.address)
|
|
31
|
+
return fail("address required");
|
|
32
|
+
return ctx.oc.run(["portfolio", "all-balances", "--address", p.address, "--chains", p.chains ?? DEFAULT_CHAINS]);
|
|
33
|
+
},
|
|
34
|
+
"portfolio.tokenBalances": async (ctx, p) => {
|
|
35
|
+
if (!p.address || !p.tokens)
|
|
36
|
+
return fail("address and tokens required");
|
|
37
|
+
return ctx.oc.run(["portfolio", "token-balances", "--address", p.address, "--tokens", p.tokens]);
|
|
38
|
+
},
|
|
39
|
+
"portfolio.tokenPrice": async (ctx, p) => {
|
|
40
|
+
if (!p.address)
|
|
41
|
+
return fail("address required");
|
|
42
|
+
return ctx.oc.run(["market", "price", "--chain", p.chain ?? ctx.defaultChain, "--address", p.address]);
|
|
43
|
+
},
|
|
44
|
+
// History
|
|
45
|
+
"wallet.history": async (ctx, p) => {
|
|
46
|
+
const args = ["wallet", "history"];
|
|
47
|
+
if (p.chain)
|
|
48
|
+
args.push("--chain", p.chain);
|
|
49
|
+
if (p.limit)
|
|
50
|
+
args.push("--limit", String(p.limit));
|
|
51
|
+
if (p.page)
|
|
52
|
+
args.push("--page-num", String(p.page));
|
|
53
|
+
if (p.address)
|
|
54
|
+
args.push("--address", p.address);
|
|
55
|
+
return ctx.oc.run(args);
|
|
56
|
+
},
|
|
57
|
+
"wallet.transaction": async (ctx, p) => {
|
|
58
|
+
if (!p.id)
|
|
59
|
+
return fail("id required");
|
|
60
|
+
const kind = p.kind ?? "order";
|
|
61
|
+
const flag = kind === "tx" ? "--tx-hash" : kind === "uop" ? "--uop-hash" : "--order-id";
|
|
62
|
+
const args = ["wallet", "history", flag, p.id];
|
|
63
|
+
if (p.chain)
|
|
64
|
+
args.push("--chain", p.chain);
|
|
65
|
+
return ctx.oc.run(args);
|
|
66
|
+
},
|
|
67
|
+
// PnL
|
|
68
|
+
"pnl.overview": async (ctx, p) => {
|
|
69
|
+
if (!p.address)
|
|
70
|
+
return fail("address required");
|
|
71
|
+
const args = ["market", "portfolio-overview", "--address", p.address, "--chain", p.chain ?? ctx.defaultChain];
|
|
72
|
+
if (p.timeFrame)
|
|
73
|
+
args.push("--time-frame", p.timeFrame);
|
|
74
|
+
return ctx.oc.run(args);
|
|
75
|
+
},
|
|
76
|
+
"pnl.tokens": async (ctx, p) => {
|
|
77
|
+
if (!p.address)
|
|
78
|
+
return fail("address required");
|
|
79
|
+
return ctx.oc.run(["market", "portfolio-recent-pnl", "--address", p.address, "--chain", p.chain ?? ctx.defaultChain]);
|
|
80
|
+
},
|
|
81
|
+
"pnl.history": async (ctx, p) => {
|
|
82
|
+
if (!p.address)
|
|
83
|
+
return fail("address required");
|
|
84
|
+
return ctx.oc.run(["market", "portfolio-dex-history", "--address", p.address, "--chain", p.chain ?? ctx.defaultChain]);
|
|
85
|
+
},
|
|
86
|
+
// Swap
|
|
87
|
+
"swap.chains": async (ctx) => ctx.oc.run(["swap", "chains"]),
|
|
88
|
+
"swap.quote": async (ctx, p) => {
|
|
89
|
+
if (!p.from || !p.to || !p.chain || (!p.readableAmount && !p.amount))
|
|
90
|
+
return fail("from, to, chain, amount required");
|
|
91
|
+
const args = ["swap", "quote", "--from", p.from, "--to", p.to, "--chain", p.chain];
|
|
92
|
+
if (p.readableAmount)
|
|
93
|
+
args.push("--readable-amount", String(p.readableAmount));
|
|
94
|
+
else
|
|
95
|
+
args.push("--amount", String(p.amount));
|
|
96
|
+
if (p.swapMode)
|
|
97
|
+
args.push("--swap-mode", p.swapMode);
|
|
98
|
+
return ctx.oc.run(args);
|
|
99
|
+
},
|
|
100
|
+
"swap.execute": async (ctx, p) => {
|
|
101
|
+
if (!p.from || !p.to || !p.chain || !p.wallet || (!p.readableAmount && !p.amount))
|
|
102
|
+
return fail("from, to, chain, wallet, amount required");
|
|
103
|
+
const args = ["swap", "execute", "--from", p.from, "--to", p.to, "--chain", p.chain, "--wallet", p.wallet];
|
|
104
|
+
if (p.readableAmount)
|
|
105
|
+
args.push("--readable-amount", String(p.readableAmount));
|
|
106
|
+
else
|
|
107
|
+
args.push("--amount", String(p.amount));
|
|
108
|
+
if (p.slippage != null)
|
|
109
|
+
args.push("--slippage", String(p.slippage));
|
|
110
|
+
if (p.gasLevel)
|
|
111
|
+
args.push("--gas-level", p.gasLevel);
|
|
112
|
+
if (p.swapMode)
|
|
113
|
+
args.push("--swap-mode", p.swapMode);
|
|
114
|
+
if (p.gasTokenAddress)
|
|
115
|
+
args.push("--gas-token-address", p.gasTokenAddress);
|
|
116
|
+
if (p.relayerId)
|
|
117
|
+
args.push("--relayer-id", String(p.relayerId));
|
|
118
|
+
if (p.mevProtection)
|
|
119
|
+
args.push("--mev-protection");
|
|
120
|
+
return ctx.oc.run(args, { timeoutMs: 180_000 });
|
|
121
|
+
},
|
|
122
|
+
"swap.liquidity": async (ctx, p) => {
|
|
123
|
+
if (!p.chain)
|
|
124
|
+
return fail("chain required");
|
|
125
|
+
return ctx.oc.run(["swap", "liquidity", "--chain", p.chain]);
|
|
126
|
+
},
|
|
127
|
+
// Send
|
|
128
|
+
"wallet.send": async (ctx, p) => {
|
|
129
|
+
if (!p.recipient || !p.chain || (!p.readableAmount && !p.amount))
|
|
130
|
+
return fail("recipient, chain, amount required");
|
|
131
|
+
const args = ["wallet", "send", "--recipient", p.recipient, "--chain", p.chain];
|
|
132
|
+
if (p.readableAmount)
|
|
133
|
+
args.push("--readable-amount", String(p.readableAmount));
|
|
134
|
+
else
|
|
135
|
+
args.push("--amt", String(p.amount));
|
|
136
|
+
if (p.contractToken)
|
|
137
|
+
args.push("--contract-token", p.contractToken);
|
|
138
|
+
if (p.from)
|
|
139
|
+
args.push("--from", p.from);
|
|
140
|
+
if (p.gasTokenAddress)
|
|
141
|
+
args.push("--gas-token-address", p.gasTokenAddress);
|
|
142
|
+
if (p.relayerId)
|
|
143
|
+
args.push("--relayer-id", String(p.relayerId));
|
|
144
|
+
if (p.force)
|
|
145
|
+
args.push("--force");
|
|
146
|
+
return ctx.oc.run(args, { timeoutMs: 180_000 });
|
|
147
|
+
},
|
|
148
|
+
// Bridge
|
|
149
|
+
"bridge.bridges": async (ctx, p) => {
|
|
150
|
+
const args = ["cross-chain", "bridges"];
|
|
151
|
+
if (p.fromChain)
|
|
152
|
+
args.push("--from-chain", p.fromChain);
|
|
153
|
+
if (p.toChain)
|
|
154
|
+
args.push("--to-chain", p.toChain);
|
|
155
|
+
return ctx.oc.run(args);
|
|
156
|
+
},
|
|
157
|
+
"bridge.tokens": async (ctx, p) => {
|
|
158
|
+
const args = ["cross-chain", "tokens"];
|
|
159
|
+
if (p.fromChain)
|
|
160
|
+
args.push("--from-chain", p.fromChain);
|
|
161
|
+
if (p.toChain)
|
|
162
|
+
args.push("--to-chain", p.toChain);
|
|
163
|
+
return ctx.oc.run(args);
|
|
164
|
+
},
|
|
165
|
+
"bridge.quote": async (ctx, p) => {
|
|
166
|
+
if (!p.fromChain || !p.toChain || !p.from || !p.to || (!p.readableAmount && !p.amount))
|
|
167
|
+
return fail("fromChain, toChain, from, to, amount required");
|
|
168
|
+
const args = ["cross-chain", "quote", "--from-chain", p.fromChain, "--to-chain", p.toChain, "--from", p.from, "--to", p.to];
|
|
169
|
+
if (p.readableAmount)
|
|
170
|
+
args.push("--readable-amount", String(p.readableAmount));
|
|
171
|
+
else
|
|
172
|
+
args.push("--amount", String(p.amount));
|
|
173
|
+
if (p.slippage != null)
|
|
174
|
+
args.push("--slippage", String(p.slippage));
|
|
175
|
+
return ctx.oc.run(args);
|
|
176
|
+
},
|
|
177
|
+
"bridge.execute": async (ctx, p) => {
|
|
178
|
+
if (!p.fromChain || !p.toChain || !p.from || !p.to || !p.wallet || (!p.readableAmount && !p.amount))
|
|
179
|
+
return fail("fromChain, toChain, from, to, wallet, amount required");
|
|
180
|
+
const args = ["cross-chain", "execute", "--from-chain", p.fromChain, "--to-chain", p.toChain, "--from", p.from, "--to", p.to, "--wallet", p.wallet];
|
|
181
|
+
if (p.readableAmount)
|
|
182
|
+
args.push("--readable-amount", String(p.readableAmount));
|
|
183
|
+
else
|
|
184
|
+
args.push("--amount", String(p.amount));
|
|
185
|
+
if (p.slippage != null)
|
|
186
|
+
args.push("--slippage", String(p.slippage));
|
|
187
|
+
if (p.bridgeId)
|
|
188
|
+
args.push("--bridge-id", String(p.bridgeId));
|
|
189
|
+
if (p.receiveAddress)
|
|
190
|
+
args.push("--receive-address", p.receiveAddress);
|
|
191
|
+
return ctx.oc.run(args, { timeoutMs: 240_000 });
|
|
192
|
+
},
|
|
193
|
+
"bridge.status": async (ctx, p) => {
|
|
194
|
+
if (!p.hash)
|
|
195
|
+
return fail("hash required");
|
|
196
|
+
return ctx.oc.run(["cross-chain", "status", "--tx-hash", p.hash]);
|
|
197
|
+
},
|
|
198
|
+
// Security
|
|
199
|
+
"security.approvals": async (ctx, p) => {
|
|
200
|
+
if (!p.address)
|
|
201
|
+
return fail("address required");
|
|
202
|
+
const args = ["security", "approvals", "--address", p.address];
|
|
203
|
+
if (p.chain)
|
|
204
|
+
args.push("--chain", p.chain);
|
|
205
|
+
if (p.limit)
|
|
206
|
+
args.push("--limit", String(p.limit));
|
|
207
|
+
if (p.cursor)
|
|
208
|
+
args.push("--cursor", p.cursor);
|
|
209
|
+
return ctx.oc.run(args);
|
|
210
|
+
},
|
|
211
|
+
"security.tokenScan": async (ctx, p) => {
|
|
212
|
+
const args = ["security", "token-scan"];
|
|
213
|
+
if (p.tokens)
|
|
214
|
+
args.push("--tokens", p.tokens);
|
|
215
|
+
else if (p.address)
|
|
216
|
+
args.push("--address", p.address);
|
|
217
|
+
return ctx.oc.run(args);
|
|
218
|
+
},
|
|
219
|
+
"security.revoke": async (ctx, p) => {
|
|
220
|
+
if (!p.token || !p.chain || !p.inputData)
|
|
221
|
+
return fail("token, chain, inputData required");
|
|
222
|
+
const args = ["wallet", "contract-call", "--to", p.token, "--chain", p.chain, "--input-data", p.inputData];
|
|
223
|
+
if (p.gasTokenAddress)
|
|
224
|
+
args.push("--gas-token-address", p.gasTokenAddress);
|
|
225
|
+
if (p.relayerId)
|
|
226
|
+
args.push("--relayer-id", String(p.relayerId));
|
|
227
|
+
return ctx.oc.run(args, { timeoutMs: 180_000 });
|
|
228
|
+
},
|
|
229
|
+
// Settings
|
|
230
|
+
"settings.gasStation": async (ctx, p) => ctx.oc.run(["wallet", "gas-station", "status", "--chain", p.chain ?? ctx.defaultChain]),
|
|
231
|
+
"settings.gasStationEnable": async (ctx, p) => ctx.oc.run(["wallet", "gas-station", "enable", "--chain", p.chain ?? ctx.defaultChain]),
|
|
232
|
+
"settings.gasStationDisable": async (ctx, p) => ctx.oc.run(["wallet", "gas-station", "disable", "--chain", p.chain ?? ctx.defaultChain]),
|
|
233
|
+
"settings.gasStationDefaultToken": async (ctx, p) => {
|
|
234
|
+
if (!p.chain || !p.gasTokenAddress)
|
|
235
|
+
return fail("chain, gasTokenAddress required");
|
|
236
|
+
return ctx.oc.run(["wallet", "gas-station", "update-default-token", "--chain", p.chain, "--gas-token-address", p.gasTokenAddress]);
|
|
237
|
+
},
|
|
238
|
+
// Skills
|
|
239
|
+
"skills.list": async (ctx) => ({ ok: true, data: ctx.skills.scan() }),
|
|
240
|
+
"skills.get": async (ctx, p) => {
|
|
241
|
+
if (!p.name)
|
|
242
|
+
return fail("name required");
|
|
243
|
+
const skill = ctx.skills.getSkill(p.name);
|
|
244
|
+
if (!skill)
|
|
245
|
+
return fail("Skill not found");
|
|
246
|
+
return { ok: true, data: skill };
|
|
247
|
+
},
|
|
248
|
+
"agent.info": async (ctx) => {
|
|
249
|
+
const info = ctx.skills.scan();
|
|
250
|
+
return { ok: true, data: { platform: info.platform, skillDirs: info.skillDirs, installedCount: info.installedCount, lockedCount: info.lockedCount, openclawAvailable: !!ctx.openclaw } };
|
|
251
|
+
},
|
|
252
|
+
"agent.message": async (ctx, p) => {
|
|
253
|
+
if (!ctx.openclaw)
|
|
254
|
+
return fail("OpenClaw is not configured on this daemon");
|
|
255
|
+
if (!p.message)
|
|
256
|
+
return fail("message required");
|
|
257
|
+
return ctx.openclaw.message({
|
|
258
|
+
message: String(p.message),
|
|
259
|
+
agent: typeof p.agent === "string" ? p.agent : undefined,
|
|
260
|
+
sessionId: typeof p.sessionId === "string" ? p.sessionId : undefined,
|
|
261
|
+
to: typeof p.to === "string" ? p.to : undefined,
|
|
262
|
+
model: typeof p.model === "string" ? p.model : undefined,
|
|
263
|
+
thinking: typeof p.thinking === "string" ? p.thinking : undefined,
|
|
264
|
+
verbose: typeof p.verbose === "string" ? p.verbose : undefined,
|
|
265
|
+
channel: typeof p.channel === "string" ? p.channel : undefined,
|
|
266
|
+
replyTo: typeof p.replyTo === "string" ? p.replyTo : undefined,
|
|
267
|
+
replyChannel: typeof p.replyChannel === "string" ? p.replyChannel : undefined,
|
|
268
|
+
replyAccount: typeof p.replyAccount === "string" ? p.replyAccount : undefined,
|
|
269
|
+
timeoutSeconds: parseOptionalNumber(p.timeoutSeconds),
|
|
270
|
+
deliver: Boolean(p.deliver),
|
|
271
|
+
local: p.local == null ? undefined : Boolean(p.local),
|
|
272
|
+
});
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
export async function dispatch(ctx, method, params) {
|
|
276
|
+
const handler = handlers[method];
|
|
277
|
+
if (!handler)
|
|
278
|
+
return fail(`Unknown method: ${method}`);
|
|
279
|
+
try {
|
|
280
|
+
return await handler(ctx, params);
|
|
281
|
+
}
|
|
282
|
+
catch (e) {
|
|
283
|
+
return fail(e.message);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function parseOptionalNumber(value) {
|
|
287
|
+
if (value == null)
|
|
288
|
+
return undefined;
|
|
289
|
+
const n = Number(value);
|
|
290
|
+
return Number.isFinite(n) ? n : undefined;
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface OnchainosResponse<T = any> {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
data?: T;
|
|
4
|
+
error?: {
|
|
5
|
+
code?: string;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
notifications?: any[];
|
|
9
|
+
}
|
|
10
|
+
export interface RunOptions {
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class OnchainosClient {
|
|
14
|
+
private binPath;
|
|
15
|
+
constructor(binPath: string);
|
|
16
|
+
run<T = any>(args: string[], opts?: RunOptions): Promise<OnchainosResponse<T>>;
|
|
17
|
+
}
|
|
18
|
+
export declare function runOnchainos<T = any>(binPath: string, args: string[], opts?: RunOptions): Promise<OnchainosResponse<T>>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
export class OnchainosClient {
|
|
3
|
+
binPath;
|
|
4
|
+
constructor(binPath) {
|
|
5
|
+
this.binPath = binPath;
|
|
6
|
+
}
|
|
7
|
+
async run(args, opts = {}) {
|
|
8
|
+
try {
|
|
9
|
+
const { stdout } = await execa(this.binPath, args, {
|
|
10
|
+
timeout: opts.timeoutMs ?? 60_000,
|
|
11
|
+
reject: false,
|
|
12
|
+
env: { ...process.env, NO_COLOR: "1" },
|
|
13
|
+
});
|
|
14
|
+
const trimmed = stdout.trim();
|
|
15
|
+
if (!trimmed) {
|
|
16
|
+
return { ok: false, error: { message: "Empty response from onchainos" } };
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
return JSON.parse(trimmed);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
const last = extractLastJson(trimmed);
|
|
23
|
+
if (last)
|
|
24
|
+
return last;
|
|
25
|
+
return { ok: false, error: { message: `Non-JSON output: ${trimmed.slice(0, 500)}` } };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
return { ok: false, error: { message: e.message } };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function runOnchainos(binPath, args, opts = {}) {
|
|
34
|
+
return new OnchainosClient(binPath).run(args, opts);
|
|
35
|
+
}
|
|
36
|
+
function extractLastJson(s) {
|
|
37
|
+
let depth = 0, start = -1, lastValid = null;
|
|
38
|
+
for (let i = 0; i < s.length; i++) {
|
|
39
|
+
if (s[i] === "{") {
|
|
40
|
+
if (depth === 0)
|
|
41
|
+
start = i;
|
|
42
|
+
depth++;
|
|
43
|
+
}
|
|
44
|
+
else if (s[i] === "}") {
|
|
45
|
+
depth--;
|
|
46
|
+
if (depth === 0 && start >= 0) {
|
|
47
|
+
const c = s.slice(start, i + 1);
|
|
48
|
+
try {
|
|
49
|
+
JSON.parse(c);
|
|
50
|
+
lastValid = c;
|
|
51
|
+
}
|
|
52
|
+
catch { }
|
|
53
|
+
start = -1;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return lastValid ? JSON.parse(lastValid) : null;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=onchainos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onchainos.js","sourceRoot":"","sources":["../src/onchainos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAa9B,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEvC,KAAK,CAAC,GAAG,CAAU,IAAc,EAAE,OAAmB,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;gBACjD,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM;gBACjC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;aACvC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE,EAAE,CAAC;YAC5E,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;YACxF,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAG,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,IAAc,EACd,OAAmB,EAAE;IAErB,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,GAAkB,IAAI,CAAC;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAAC,IAAI,KAAK,KAAK,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;YAAC,KAAK,EAAE,CAAC;QAAC,CAAC;aACrD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACtB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC;oBAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAC,SAAS,GAAG,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAC9C,KAAK,GAAG,CAAC,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { OnchainosResponse } from "./onchainos.js";
|
|
2
|
+
export interface OpenClawDefaults {
|
|
3
|
+
agent?: string;
|
|
4
|
+
sessionId?: string;
|
|
5
|
+
to?: string;
|
|
6
|
+
local?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface OpenClawMessageParams extends OpenClawDefaults {
|
|
9
|
+
message: string;
|
|
10
|
+
model?: string;
|
|
11
|
+
thinking?: string;
|
|
12
|
+
verbose?: string;
|
|
13
|
+
channel?: string;
|
|
14
|
+
replyTo?: string;
|
|
15
|
+
replyChannel?: string;
|
|
16
|
+
replyAccount?: string;
|
|
17
|
+
deliver?: boolean;
|
|
18
|
+
timeoutSeconds?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface NormalizedOpenClawResponse {
|
|
21
|
+
text: string;
|
|
22
|
+
payloads: any[];
|
|
23
|
+
meta?: any;
|
|
24
|
+
deliveryStatus?: any;
|
|
25
|
+
runId?: string;
|
|
26
|
+
raw: any;
|
|
27
|
+
}
|
|
28
|
+
export interface OpenClawRunOptions {
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
}
|
|
31
|
+
export declare class OpenClawClient {
|
|
32
|
+
private binPath;
|
|
33
|
+
private defaults;
|
|
34
|
+
constructor(binPath: string, defaults?: OpenClawDefaults);
|
|
35
|
+
message(params: OpenClawMessageParams, opts?: OpenClawRunOptions): Promise<OnchainosResponse<NormalizedOpenClawResponse>>;
|
|
36
|
+
}
|
package/dist/openclaw.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
export class OpenClawClient {
|
|
3
|
+
binPath;
|
|
4
|
+
defaults;
|
|
5
|
+
constructor(binPath, defaults = {}) {
|
|
6
|
+
this.binPath = binPath;
|
|
7
|
+
this.defaults = defaults;
|
|
8
|
+
}
|
|
9
|
+
async message(params, opts = {}) {
|
|
10
|
+
const merged = { ...this.defaults, ...stripUndefined(params) };
|
|
11
|
+
const args = buildAgentArgs(merged);
|
|
12
|
+
try {
|
|
13
|
+
const { stdout, stderr, exitCode } = await execa(this.binPath, args, {
|
|
14
|
+
timeout: opts.timeoutMs ?? ((params.timeoutSeconds ?? 600) + 30) * 1000,
|
|
15
|
+
reject: false,
|
|
16
|
+
env: { ...process.env, NO_COLOR: "1" },
|
|
17
|
+
});
|
|
18
|
+
const trimmed = stdout.trim();
|
|
19
|
+
if (!trimmed) {
|
|
20
|
+
return {
|
|
21
|
+
ok: false,
|
|
22
|
+
error: {
|
|
23
|
+
message: stderr.trim() || `OpenClaw exited with code ${exitCode} and no JSON output`,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const parsed = parseJsonOutput(trimmed);
|
|
28
|
+
if (!parsed) {
|
|
29
|
+
return { ok: false, error: { message: `Non-JSON output from OpenClaw: ${trimmed.slice(0, 500)}` } };
|
|
30
|
+
}
|
|
31
|
+
return normalizeOpenClawResponse(parsed);
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return { ok: false, error: { message: e.message } };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function stripUndefined(value) {
|
|
39
|
+
return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined));
|
|
40
|
+
}
|
|
41
|
+
function buildAgentArgs(params) {
|
|
42
|
+
if (!params.message) {
|
|
43
|
+
throw new Error("message required");
|
|
44
|
+
}
|
|
45
|
+
if (!params.agent && !params.sessionId && !params.to) {
|
|
46
|
+
throw new Error("agent, sessionId, or to required for OpenClaw agent message");
|
|
47
|
+
}
|
|
48
|
+
const args = ["agent", "--message", params.message, "--json"];
|
|
49
|
+
if (params.agent)
|
|
50
|
+
args.push("--agent", params.agent);
|
|
51
|
+
if (params.sessionId)
|
|
52
|
+
args.push("--session-id", params.sessionId);
|
|
53
|
+
if (params.to)
|
|
54
|
+
args.push("--to", params.to);
|
|
55
|
+
if (params.model)
|
|
56
|
+
args.push("--model", params.model);
|
|
57
|
+
if (params.thinking)
|
|
58
|
+
args.push("--thinking", params.thinking);
|
|
59
|
+
if (params.verbose)
|
|
60
|
+
args.push("--verbose", params.verbose);
|
|
61
|
+
if (params.channel)
|
|
62
|
+
args.push("--channel", params.channel);
|
|
63
|
+
if (params.replyTo)
|
|
64
|
+
args.push("--reply-to", params.replyTo);
|
|
65
|
+
if (params.replyChannel)
|
|
66
|
+
args.push("--reply-channel", params.replyChannel);
|
|
67
|
+
if (params.replyAccount)
|
|
68
|
+
args.push("--reply-account", params.replyAccount);
|
|
69
|
+
if (params.timeoutSeconds != null)
|
|
70
|
+
args.push("--timeout", String(params.timeoutSeconds));
|
|
71
|
+
if (params.deliver)
|
|
72
|
+
args.push("--deliver");
|
|
73
|
+
if (params.local)
|
|
74
|
+
args.push("--local");
|
|
75
|
+
return args;
|
|
76
|
+
}
|
|
77
|
+
function normalizeOpenClawResponse(raw) {
|
|
78
|
+
if (raw?.ok === false) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
error: {
|
|
82
|
+
message: raw.error?.message ?? raw.error ?? "OpenClaw agent message failed",
|
|
83
|
+
code: raw.error?.code,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const result = raw?.result ?? raw;
|
|
88
|
+
const payloadContainer = raw?.payload ?? result?.payload ?? result;
|
|
89
|
+
const payloads = Array.isArray(payloadContainer?.payloads)
|
|
90
|
+
? payloadContainer.payloads
|
|
91
|
+
: Array.isArray(result?.payloads)
|
|
92
|
+
? result.payloads
|
|
93
|
+
: [];
|
|
94
|
+
return {
|
|
95
|
+
ok: true,
|
|
96
|
+
data: {
|
|
97
|
+
text: extractText(payloads),
|
|
98
|
+
payloads,
|
|
99
|
+
meta: raw?.meta ?? result?.meta ?? payloadContainer?.meta,
|
|
100
|
+
deliveryStatus: raw?.deliveryStatus ?? result?.deliveryStatus ?? payloadContainer?.deliveryStatus,
|
|
101
|
+
runId: payloadContainer?.runId ?? result?.runId ?? raw?.runId,
|
|
102
|
+
raw,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function extractText(payloads) {
|
|
107
|
+
return payloads
|
|
108
|
+
.map((payload) => (typeof payload?.text === "string" ? payload.text : ""))
|
|
109
|
+
.filter(Boolean)
|
|
110
|
+
.join("\n");
|
|
111
|
+
}
|
|
112
|
+
function parseJsonOutput(s) {
|
|
113
|
+
try {
|
|
114
|
+
return JSON.parse(s);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return extractLastJson(s);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function extractLastJson(s) {
|
|
121
|
+
let depth = 0;
|
|
122
|
+
let start = -1;
|
|
123
|
+
let inString = false;
|
|
124
|
+
let escaped = false;
|
|
125
|
+
let lastValid = null;
|
|
126
|
+
for (let i = 0; i < s.length; i++) {
|
|
127
|
+
const c = s[i];
|
|
128
|
+
if (inString) {
|
|
129
|
+
escaped = c === "\\" && !escaped;
|
|
130
|
+
if (c === "\"" && !escaped)
|
|
131
|
+
inString = false;
|
|
132
|
+
if (c !== "\\")
|
|
133
|
+
escaped = false;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (c === "\"") {
|
|
137
|
+
inString = true;
|
|
138
|
+
}
|
|
139
|
+
else if (c === "{") {
|
|
140
|
+
if (depth === 0)
|
|
141
|
+
start = i;
|
|
142
|
+
depth++;
|
|
143
|
+
}
|
|
144
|
+
else if (c === "}") {
|
|
145
|
+
depth--;
|
|
146
|
+
if (depth === 0 && start >= 0) {
|
|
147
|
+
const candidate = s.slice(start, i + 1);
|
|
148
|
+
try {
|
|
149
|
+
JSON.parse(candidate);
|
|
150
|
+
lastValid = candidate;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// Keep scanning for a later complete object.
|
|
154
|
+
}
|
|
155
|
+
start = -1;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return lastValid ? JSON.parse(lastValid) : null;
|
|
160
|
+
}
|
|
161
|
+
//# 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/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface SkillMeta {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
source: string;
|
|
5
|
+
sourceType: string;
|
|
6
|
+
skillPath: string;
|
|
7
|
+
computedHash: string;
|
|
8
|
+
installed: boolean;
|
|
9
|
+
installDir: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface AgentInfo {
|
|
12
|
+
platform: string;
|
|
13
|
+
skillDirs: {
|
|
14
|
+
path: string;
|
|
15
|
+
exists: boolean;
|
|
16
|
+
}[];
|
|
17
|
+
installedCount: number;
|
|
18
|
+
lockedCount: number;
|
|
19
|
+
skills: SkillMeta[];
|
|
20
|
+
}
|
|
21
|
+
export declare class SkillsScanner {
|
|
22
|
+
private lockPath;
|
|
23
|
+
private skillDirs;
|
|
24
|
+
constructor(lockPath?: string, skillDirs?: string[]);
|
|
25
|
+
private loadLock;
|
|
26
|
+
scan(): AgentInfo;
|
|
27
|
+
getSkill(name: string): SkillMeta | null;
|
|
28
|
+
}
|
package/dist/skills.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, existsSync, statSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
const SKILL_DIRS = [
|
|
5
|
+
join(homedir(), ".openclaw", "onchainos-skills"),
|
|
6
|
+
join(homedir(), ".claude", "skills"),
|
|
7
|
+
join(homedir(), ".codex", "onchainos-skills"),
|
|
8
|
+
join(homedir(), ".opencode", "onchainos-skills"),
|
|
9
|
+
join(homedir(), ".cursor", "onchainos-skills"),
|
|
10
|
+
];
|
|
11
|
+
function parseSkillMd(filePath) {
|
|
12
|
+
try {
|
|
13
|
+
const raw = readFileSync(filePath, "utf8");
|
|
14
|
+
const fmMatch = raw.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
15
|
+
if (!fmMatch) {
|
|
16
|
+
const titleMatch = raw.match(/^#\s+(.+)/m);
|
|
17
|
+
return { name: titleMatch?.[1]?.trim(), description: undefined };
|
|
18
|
+
}
|
|
19
|
+
const fm = fmMatch[1];
|
|
20
|
+
const name = fm.match(/^name:\s*(.+)$/m)?.[1]?.trim();
|
|
21
|
+
const desc = fm.match(/^description:\s*(.+)$/m)?.[1]?.trim();
|
|
22
|
+
return { name, description: desc };
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function scanDir(dir) {
|
|
29
|
+
const found = new Map();
|
|
30
|
+
if (!existsSync(dir))
|
|
31
|
+
return found;
|
|
32
|
+
try {
|
|
33
|
+
for (const entry of readdirSync(dir)) {
|
|
34
|
+
const full = join(dir, entry);
|
|
35
|
+
if (!statSync(full).isDirectory())
|
|
36
|
+
continue;
|
|
37
|
+
const skillMd = join(full, "SKILL.md");
|
|
38
|
+
if (existsSync(skillMd)) {
|
|
39
|
+
found.set(entry, full);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// permission error or similar
|
|
45
|
+
}
|
|
46
|
+
return found;
|
|
47
|
+
}
|
|
48
|
+
export class SkillsScanner {
|
|
49
|
+
lockPath;
|
|
50
|
+
skillDirs;
|
|
51
|
+
constructor(lockPath, skillDirs) {
|
|
52
|
+
this.lockPath = lockPath ?? null;
|
|
53
|
+
this.skillDirs = skillDirs ?? SKILL_DIRS;
|
|
54
|
+
}
|
|
55
|
+
loadLock() {
|
|
56
|
+
if (!this.lockPath || !existsSync(this.lockPath))
|
|
57
|
+
return null;
|
|
58
|
+
try {
|
|
59
|
+
return JSON.parse(readFileSync(this.lockPath, "utf8"));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
scan() {
|
|
66
|
+
const lock = this.loadLock();
|
|
67
|
+
const dirStatus = this.skillDirs.map((p) => ({ path: p, exists: existsSync(p) }));
|
|
68
|
+
const installedSkills = new Map();
|
|
69
|
+
for (const dir of this.skillDirs) {
|
|
70
|
+
for (const [name, fullPath] of scanDir(dir)) {
|
|
71
|
+
if (!installedSkills.has(name)) {
|
|
72
|
+
installedSkills.set(name, { dir, skillMd: join(fullPath, "SKILL.md") });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const allNames = new Set([
|
|
77
|
+
...Object.keys(lock?.skills ?? {}),
|
|
78
|
+
...installedSkills.keys(),
|
|
79
|
+
]);
|
|
80
|
+
const skills = [];
|
|
81
|
+
for (const name of allNames) {
|
|
82
|
+
const lockEntry = lock?.skills?.[name];
|
|
83
|
+
const installed = installedSkills.get(name);
|
|
84
|
+
const md = installed ? parseSkillMd(installed.skillMd) : undefined;
|
|
85
|
+
skills.push({
|
|
86
|
+
name: md?.name ?? name,
|
|
87
|
+
description: md?.description ?? "",
|
|
88
|
+
source: lockEntry?.source ?? "local",
|
|
89
|
+
sourceType: lockEntry?.sourceType ?? "filesystem",
|
|
90
|
+
skillPath: lockEntry?.skillPath ?? "",
|
|
91
|
+
computedHash: lockEntry?.computedHash ?? "",
|
|
92
|
+
installed: !!installed,
|
|
93
|
+
installDir: installed?.dir ?? null,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
97
|
+
return {
|
|
98
|
+
platform: detectPlatform(),
|
|
99
|
+
skillDirs: dirStatus,
|
|
100
|
+
installedCount: installedSkills.size,
|
|
101
|
+
lockedCount: Object.keys(lock?.skills ?? {}).length,
|
|
102
|
+
skills,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
getSkill(name) {
|
|
106
|
+
const info = this.scan();
|
|
107
|
+
return info.skills.find((s) => s.name === name) ?? null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function detectPlatform() {
|
|
111
|
+
if (existsSync(join(homedir(), ".openclaw")))
|
|
112
|
+
return "openclaw";
|
|
113
|
+
if (existsSync(join(homedir(), ".claude")))
|
|
114
|
+
return "claude-code";
|
|
115
|
+
if (existsSync(join(homedir(), ".codex")))
|
|
116
|
+
return "codex";
|
|
117
|
+
if (existsSync(join(homedir(), ".cursor")))
|
|
118
|
+
return "cursor";
|
|
119
|
+
return "unknown";
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hblues419/agent-dashboard-core",
|
|
3
|
+
"publishConfig": {
|
|
4
|
+
"access": "public"
|
|
5
|
+
},
|
|
6
|
+
"version": "0.1.0",
|
|
7
|
+
"description": "Shared core utilities for Agent Dashboard packages.",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"execa": "^9.5.1"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^22.10.1",
|
|
26
|
+
"typescript": "^5.7.2"
|
|
27
|
+
},
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=18"
|
|
30
|
+
}
|
|
31
|
+
}
|