@sherwoodagent/cli 0.65.2 → 0.72.3
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/{abis-4HWN2E3H.js → abis-KP7M4IPM.js} +4 -2
- package/dist/addresses-YDPUPGWQ.js +45 -0
- package/dist/{agent-AETROOEW.js → agent-6IRZUPFT.js} +10 -10
- package/dist/{agent-AETROOEW.js.map → agent-6IRZUPFT.js.map} +1 -1
- package/dist/{chat-JSSTSE4K.js → chat-G5M3OK6M.js} +37 -36
- package/dist/chat-G5M3OK6M.js.map +1 -0
- package/dist/{chunk-IL43IMOC.js → chunk-3NMJ4LUL.js} +23 -18
- package/dist/chunk-3NMJ4LUL.js.map +1 -0
- package/dist/{chunk-UBAX22KA.js → chunk-52U76TRE.js} +4 -4
- package/dist/chunk-52U76TRE.js.map +1 -0
- package/dist/{chunk-W2ZUPR3W.js → chunk-5DWB5Y7G.js} +9 -9
- package/dist/chunk-5DWB5Y7G.js.map +1 -0
- package/dist/{chunk-YZHZSBES.js → chunk-BQMOE4FJ.js} +144 -37
- package/dist/chunk-BQMOE4FJ.js.map +1 -0
- package/dist/{chunk-VYF2TXPX.js → chunk-D4SPHYXA.js} +6 -6
- package/dist/{chunk-UCQEEF3Z.js → chunk-FOAX5PGR.js} +6 -6
- package/dist/chunk-FOAX5PGR.js.map +1 -0
- package/dist/chunk-FOS47623.js +127 -0
- package/dist/chunk-FOS47623.js.map +1 -0
- package/dist/{chunk-2W4KGGPU.js → chunk-GSC7PVEO.js} +27 -27
- package/dist/chunk-GSC7PVEO.js.map +1 -0
- package/dist/chunk-HYUUR6SC.js +111 -0
- package/dist/chunk-HYUUR6SC.js.map +1 -0
- package/dist/{chunk-RO26TXXE.js → chunk-NWY2U753.js} +2 -2
- package/dist/chunk-RAITRCM7.js +308 -0
- package/dist/chunk-RAITRCM7.js.map +1 -0
- package/dist/{chunk-A6TOJEUD.js → chunk-S6XA7PK4.js} +124 -128
- package/dist/chunk-S6XA7PK4.js.map +1 -0
- package/dist/{chunk-O4G3SBCI.js → chunk-UUHWD7Y3.js} +109 -129
- package/dist/chunk-UUHWD7Y3.js.map +1 -0
- package/dist/{chunk-YJSCIQUZ.js → chunk-WECQ6NVS.js} +6 -6
- package/dist/chunk-WECQ6NVS.js.map +1 -0
- package/dist/{chunk-RHRLYVKM.js → chunk-ZYXFKVYF.js} +25 -12
- package/dist/chunk-ZYXFKVYF.js.map +1 -0
- package/dist/{client-KBBFAMEI.js → client-QN6SA76M.js} +4 -4
- package/dist/{config-REASKDIK.js → config-FAQO37S7.js} +10 -10
- package/dist/{cron-EOULYO3R.js → cron-QMLRWDJG.js} +19 -17
- package/dist/cron-QMLRWDJG.js.map +1 -0
- package/dist/{eas-K4ZBACYN.js → eas-HM2AUOEY.js} +7 -7
- package/dist/{governor-2CDSMSG7.js → governor-RRBTDGDX.js} +17 -13
- package/dist/index.js +2026 -1222
- package/dist/index.js.map +1 -1
- package/dist/{ipfs-FAYWUCS2.js → ipfs-VGWTUORE.js} +2 -2
- package/dist/{network-3ZU7UBDU.js → network-L6JKNYOJ.js} +7 -7
- package/dist/{price-LCTECRQP.js → price-AJ4JMHCT.js} +6 -6
- package/dist/{research-FUQOQWKK.js → research-6VEEPEPP.js} +22 -22
- package/dist/research-6VEEPEPP.js.map +1 -0
- package/dist/research-7Z6SFPPX.js +14 -0
- package/dist/{session-FJB2RV2X.js → session-PURMITWE.js} +28 -28
- package/dist/session-PURMITWE.js.map +1 -0
- package/dist/{session-XAW5UIXP.js → session-XBQY7SBJ.js} +2 -2
- package/dist/{trade-U7H5IFH6.js → trade-YTGLGCRQ.js} +34 -34
- package/dist/trade-YTGLGCRQ.js.map +1 -0
- package/dist/vault-NIPA5JV4.js +54 -0
- package/dist/vault-NIPA5JV4.js.map +1 -0
- package/dist/{xmtp-6NJ4PW6L.js → xmtp-M32JSE4I.js} +13 -12
- package/dist/xmtp-M32JSE4I.js.map +1 -0
- package/package.json +4 -3
- package/dist/addresses-J2LMGUCT.js +0 -35
- package/dist/chat-JSSTSE4K.js.map +0 -1
- package/dist/chunk-2LRC7I33.js +0 -186
- package/dist/chunk-2LRC7I33.js.map +0 -1
- package/dist/chunk-2W4KGGPU.js.map +0 -1
- package/dist/chunk-A6TOJEUD.js.map +0 -1
- package/dist/chunk-GWMTAW6A.js +0 -494
- package/dist/chunk-GWMTAW6A.js.map +0 -1
- package/dist/chunk-IL43IMOC.js.map +0 -1
- package/dist/chunk-O4G3SBCI.js.map +0 -1
- package/dist/chunk-RHRLYVKM.js.map +0 -1
- package/dist/chunk-UBAX22KA.js.map +0 -1
- package/dist/chunk-UCQEEF3Z.js.map +0 -1
- package/dist/chunk-W2ZUPR3W.js.map +0 -1
- package/dist/chunk-YJSCIQUZ.js.map +0 -1
- package/dist/chunk-YZHZSBES.js.map +0 -1
- package/dist/cron-EOULYO3R.js.map +0 -1
- package/dist/research-FUQOQWKK.js.map +0 -1
- package/dist/research-XEXTHDT3.js +0 -14
- package/dist/session-FJB2RV2X.js.map +0 -1
- package/dist/trade-U7H5IFH6.js.map +0 -1
- package/dist/xmtp-6NJ4PW6L.js.map +0 -1
- /package/dist/{abis-4HWN2E3H.js.map → abis-KP7M4IPM.js.map} +0 -0
- /package/dist/{addresses-J2LMGUCT.js.map → addresses-YDPUPGWQ.js.map} +0 -0
- /package/dist/{chunk-VYF2TXPX.js.map → chunk-D4SPHYXA.js.map} +0 -0
- /package/dist/{chunk-RO26TXXE.js.map → chunk-NWY2U753.js.map} +0 -0
- /package/dist/{client-KBBFAMEI.js.map → client-QN6SA76M.js.map} +0 -0
- /package/dist/{config-REASKDIK.js.map → config-FAQO37S7.js.map} +0 -0
- /package/dist/{eas-K4ZBACYN.js.map → eas-HM2AUOEY.js.map} +0 -0
- /package/dist/{governor-2CDSMSG7.js.map → governor-RRBTDGDX.js.map} +0 -0
- /package/dist/{ipfs-FAYWUCS2.js.map → ipfs-VGWTUORE.js.map} +0 -0
- /package/dist/{network-3ZU7UBDU.js.map → network-L6JKNYOJ.js.map} +0 -0
- /package/dist/{price-LCTECRQP.js.map → price-AJ4JMHCT.js.map} +0 -0
- /package/dist/{research-XEXTHDT3.js.map → research-7Z6SFPPX.js.map} +0 -0
- /package/dist/{session-XAW5UIXP.js.map → session-XBQY7SBJ.js.map} +0 -0
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
unstickWallet,
|
|
11
11
|
waitForReceipt,
|
|
12
12
|
writeContractWithRetry
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-WECQ6NVS.js";
|
|
14
|
+
import "./chunk-HYUUR6SC.js";
|
|
15
|
+
import "./chunk-GSC7PVEO.js";
|
|
16
16
|
export {
|
|
17
17
|
detectStuckNonce,
|
|
18
18
|
estimateFeesWithBuffer,
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
waitForReceipt,
|
|
27
27
|
writeContractWithRetry
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=client-
|
|
29
|
+
//# sourceMappingURL=client-QN6SA76M.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
addFund,
|
|
3
3
|
cacheGroupId,
|
|
4
4
|
cacheSwapRoute,
|
|
5
5
|
clearSwapRoutes,
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
getCachedSwapRoute,
|
|
10
10
|
getChainContracts,
|
|
11
11
|
getConfigRpcUrl,
|
|
12
|
+
getFunds,
|
|
12
13
|
getNotifyTo,
|
|
13
|
-
|
|
14
|
+
getPrimaryFund,
|
|
14
15
|
getPrivateKey,
|
|
15
|
-
getSyndicates,
|
|
16
16
|
getUniswapApiKey,
|
|
17
17
|
getVeniceApiKey,
|
|
18
18
|
invalidateCachedGroupId,
|
|
@@ -23,13 +23,13 @@ import {
|
|
|
23
23
|
setChainContract,
|
|
24
24
|
setConfigRpcUrl,
|
|
25
25
|
setNotifyTo,
|
|
26
|
-
|
|
26
|
+
setPrimaryFund,
|
|
27
27
|
setPrivateKey,
|
|
28
28
|
setUniswapApiKey,
|
|
29
29
|
setVeniceApiKey
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-GSC7PVEO.js";
|
|
31
31
|
export {
|
|
32
|
-
|
|
32
|
+
addFund,
|
|
33
33
|
cacheGroupId,
|
|
34
34
|
cacheSwapRoute,
|
|
35
35
|
clearSwapRoutes,
|
|
@@ -39,10 +39,10 @@ export {
|
|
|
39
39
|
getCachedSwapRoute,
|
|
40
40
|
getChainContracts,
|
|
41
41
|
getConfigRpcUrl,
|
|
42
|
+
getFunds,
|
|
42
43
|
getNotifyTo,
|
|
43
|
-
|
|
44
|
+
getPrimaryFund,
|
|
44
45
|
getPrivateKey,
|
|
45
|
-
getSyndicates,
|
|
46
46
|
getUniswapApiKey,
|
|
47
47
|
getVeniceApiKey,
|
|
48
48
|
invalidateCachedGroupId,
|
|
@@ -53,9 +53,9 @@ export {
|
|
|
53
53
|
setChainContract,
|
|
54
54
|
setConfigRpcUrl,
|
|
55
55
|
setNotifyTo,
|
|
56
|
-
|
|
56
|
+
setPrimaryFund,
|
|
57
57
|
setPrivateKey,
|
|
58
58
|
setUniswapApiKey,
|
|
59
59
|
setVeniceApiKey
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=config-
|
|
61
|
+
//# sourceMappingURL=config-FAQO37S7.js.map
|
|
@@ -22,13 +22,14 @@ function summaryCronName(subdomain, testnet) {
|
|
|
22
22
|
return `${cronName(subdomain, testnet)}-summary`;
|
|
23
23
|
}
|
|
24
24
|
function silentPrompt(subdomain, testnet) {
|
|
25
|
-
const chainFlag =
|
|
26
|
-
const envPrefix =
|
|
25
|
+
const chainFlag = "";
|
|
26
|
+
const envPrefix = "";
|
|
27
|
+
void testnet;
|
|
27
28
|
return [
|
|
28
|
-
`You are a sherwood
|
|
29
|
+
`You are a sherwood fund member. Your fund: ${subdomain}.sherwoodagent.eth`,
|
|
29
30
|
"",
|
|
30
31
|
`Step 1: Run \`${envPrefix}sherwood session check ${subdomain}${chainFlag}\``,
|
|
31
|
-
"Step 2: Parse the JSON output. The output is a single JSON object with fields:
|
|
32
|
+
"Step 2: Parse the JSON output. The output is a single JSON object with fields: fund, messages[], events[], meta{}.",
|
|
32
33
|
" - If the command fails or returns an error, reply HEARTBEAT_ERROR with the error message.",
|
|
33
34
|
" - If meta.newMessages === 0 and meta.newEvents === 0, you may still be pending approval.",
|
|
34
35
|
" Check: `" + envPrefix + "sherwood vault info" + chainFlag + "`",
|
|
@@ -41,21 +42,22 @@ function silentPrompt(subdomain, testnet) {
|
|
|
41
42
|
" If nothing happened, reply HEARTBEAT_OK",
|
|
42
43
|
"",
|
|
43
44
|
"Rules:",
|
|
44
|
-
"- Be a real
|
|
45
|
+
"- Be a real fund member \u2014 discuss strategies, share opinions, ask questions",
|
|
45
46
|
"- Keep responses concise and on-topic",
|
|
46
47
|
"- Do NOT alert your human unless something requires their approval (or you were just approved)",
|
|
47
48
|
`- You can use \`sherwood research\` commands if you need data to back up your response`
|
|
48
49
|
].join("\n");
|
|
49
50
|
}
|
|
50
51
|
function summaryPrompt(subdomain, testnet) {
|
|
51
|
-
const chainFlag =
|
|
52
|
-
const envPrefix =
|
|
52
|
+
const chainFlag = "";
|
|
53
|
+
const envPrefix = "";
|
|
54
|
+
void testnet;
|
|
53
55
|
return [
|
|
54
|
-
"You are reporting
|
|
56
|
+
"You are reporting fund activity to your human operator.",
|
|
55
57
|
"",
|
|
56
58
|
`Run: \`${envPrefix}sherwood session check ${subdomain}${chainFlag}\``,
|
|
57
59
|
"",
|
|
58
|
-
"The output is a single JSON object with fields:
|
|
60
|
+
"The output is a single JSON object with fields: fund, messages[], events[], meta{}.",
|
|
59
61
|
"If the command fails, report the error to your human.",
|
|
60
62
|
"",
|
|
61
63
|
"If there was activity (messages, events, proposals) since last check:",
|
|
@@ -67,7 +69,7 @@ function summaryPrompt(subdomain, testnet) {
|
|
|
67
69
|
"",
|
|
68
70
|
"Only escalate (flag as urgent) if:",
|
|
69
71
|
"- A proposal needs human sign-off",
|
|
70
|
-
"- An agent left the
|
|
72
|
+
"- An agent left the fund",
|
|
71
73
|
"- Risk alert or health factor warning",
|
|
72
74
|
"- Human was directly asked for input"
|
|
73
75
|
].join("\n");
|
|
@@ -104,7 +106,7 @@ function listCronDetails() {
|
|
|
104
106
|
return [];
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
|
-
function
|
|
109
|
+
function registerFundCrons(subdomain, testnet, notifyTo) {
|
|
108
110
|
if (!isOpenClaw()) {
|
|
109
111
|
return { registered: false, isOpenClaw: false, cronNames: [] };
|
|
110
112
|
}
|
|
@@ -175,7 +177,7 @@ function registerSyndicateCrons(subdomain, testnet, notifyTo) {
|
|
|
175
177
|
cronNames: created
|
|
176
178
|
};
|
|
177
179
|
}
|
|
178
|
-
function
|
|
180
|
+
function unregisterFundCrons(subdomain, testnet) {
|
|
179
181
|
if (!isOpenClaw()) {
|
|
180
182
|
return { removed: false, isOpenClaw: false };
|
|
181
183
|
}
|
|
@@ -194,7 +196,7 @@ function unregisterSyndicateCrons(subdomain, testnet) {
|
|
|
194
196
|
}
|
|
195
197
|
return { removed, isOpenClaw: true };
|
|
196
198
|
}
|
|
197
|
-
function
|
|
199
|
+
function getFundCronStatus(subdomain, testnet) {
|
|
198
200
|
if (!isOpenClaw()) {
|
|
199
201
|
return { isOpenClaw: false, crons: [] };
|
|
200
202
|
}
|
|
@@ -204,9 +206,9 @@ function getSyndicateCronStatus(subdomain, testnet) {
|
|
|
204
206
|
return { isOpenClaw: true, crons: matching };
|
|
205
207
|
}
|
|
206
208
|
export {
|
|
207
|
-
|
|
209
|
+
getFundCronStatus,
|
|
208
210
|
isOpenClaw,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
+
registerFundCrons,
|
|
212
|
+
unregisterFundCrons
|
|
211
213
|
};
|
|
212
|
-
//# sourceMappingURL=cron-
|
|
214
|
+
//# sourceMappingURL=cron-QMLRWDJG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/cron.ts"],"sourcesContent":["/**\n * OpenClaw cron integration — auto-register participation crons for fund agents.\n *\n * When an agent creates or joins a fund, the CLI registers two cron jobs:\n * 1. Silent check (every 15m) — processes messages/events, responds autonomously\n * 2. Human summary (every 1h) — brief activity report delivered to the human's channel\n *\n * Non-OpenClaw agents skip silently — the caller prints guidance instead.\n */\n\nimport { execFileSync } from \"node:child_process\";\n\n// ── OpenClaw detection (cached per process) ──\n\nlet _isOpenClaw: boolean | null = null;\n\nexport function isOpenClaw(): boolean {\n if (_isOpenClaw !== null) return _isOpenClaw;\n try {\n execFileSync(\"openclaw\", [\"cron\", \"list\"], {\n encoding: \"utf8\",\n timeout: 10_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n _isOpenClaw = true;\n } catch {\n _isOpenClaw = false;\n }\n return _isOpenClaw;\n}\n\n// ── Types ──\n\nexport interface CronResult {\n registered: boolean;\n isOpenClaw: boolean;\n cronNames: string[];\n}\n\nexport interface CronStatus {\n isOpenClaw: boolean;\n crons: { name: string; every: string; lastRun?: string }[];\n}\n\n// ── Cron naming ──\n\nfunction cronName(subdomain: string, testnet: boolean): string {\n return `sherwood-${subdomain}${testnet ? \"-testnet\" : \"\"}`;\n}\n\nfunction summaryCronName(subdomain: string, testnet: boolean): string {\n return `${cronName(subdomain, testnet)}-summary`;\n}\n\n// ── Prompts ──\n\nfunction silentPrompt(subdomain: string, testnet: boolean): string {\n // Current deployment target (robinhood-testnet) is the ungated CLI default,\n // so cron commands need no explicit --chain flag or env gate.\n const chainFlag = \"\";\n const envPrefix = \"\";\n void testnet;\n return [\n `You are a sherwood fund member. Your fund: ${subdomain}.sherwoodagent.eth`,\n \"\",\n `Step 1: Run \\`${envPrefix}sherwood session check ${subdomain}${chainFlag}\\``,\n \"Step 2: Parse the JSON output. The output is a single JSON object with fields: fund, messages[], events[], meta{}.\",\n \" - If the command fails or returns an error, reply HEARTBEAT_ERROR with the error message.\",\n \" - If meta.newMessages === 0 and meta.newEvents === 0, you may still be pending approval.\",\n \" Check: `\" + envPrefix + \"sherwood vault info\" + chainFlag + \"`\",\n \" If your wallet is not listed as a registered agent, you are still pending. Reply HEARTBEAT_OK.\",\n \" If you ARE registered but this is your first time seeing it, alert your human that you've been approved and are now active.\",\n \" - If there are new messages from OTHER agents, respond thoughtfully via:\",\n ` \\`${envPrefix}sherwood chat ${subdomain} send \"<response>\"${chainFlag}\\``,\n \" - If there are on-chain events (proposals, votes, settlements), acknowledge them in chat if relevant.\",\n \"Step 3: If you responded to anything, summarize what you did (for your own session log).\",\n \" If nothing happened, reply HEARTBEAT_OK\",\n \"\",\n \"Rules:\",\n \"- Be a real fund member — discuss strategies, share opinions, ask questions\",\n \"- Keep responses concise and on-topic\",\n \"- Do NOT alert your human unless something requires their approval (or you were just approved)\",\n `- You can use \\`sherwood research\\` commands if you need data to back up your response`,\n ].join(\"\\n\");\n}\n\nfunction summaryPrompt(subdomain: string, testnet: boolean): string {\n // Current deployment target (robinhood-testnet) is the ungated CLI default,\n // so cron commands need no explicit --chain flag or env gate.\n const chainFlag = \"\";\n const envPrefix = \"\";\n void testnet;\n return [\n \"You are reporting fund activity to your human operator.\",\n \"\",\n `Run: \\`${envPrefix}sherwood session check ${subdomain}${chainFlag}\\``,\n \"\",\n \"The output is a single JSON object with fields: fund, messages[], events[], meta{}.\",\n \"If the command fails, report the error to your human.\",\n \"\",\n \"If there was activity (messages, events, proposals) since last check:\",\n \" Send a brief summary — who said what, any decisions made, any actions you took.\",\n \" Keep it to 3-5 lines max.\",\n \"\",\n \"If there was no activity:\",\n \" Reply HEARTBEAT_OK\",\n \"\",\n \"Only escalate (flag as urgent) if:\",\n \"- A proposal needs human sign-off\",\n \"- An agent left the fund\",\n \"- Risk alert or health factor warning\",\n \"- Human was directly asked for input\",\n ].join(\"\\n\");\n}\n\n// ── Helpers ──\n\n/** Parse `openclaw cron list --json` and return job names. */\nfunction listCronNames(): string[] {\n try {\n const raw = execFileSync(\"openclaw\", [\"cron\", \"list\", \"--json\"], {\n encoding: \"utf8\",\n timeout: 10_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n const parsed = JSON.parse(raw);\n const jobs: { name: string }[] = parsed.jobs || parsed || [];\n return jobs.map((j) => j.name);\n } catch {\n return [];\n }\n}\n\n/** Parse `openclaw cron list --json` with full details for status display. */\nfunction listCronDetails(): { name: string; every: string; lastRun?: string }[] {\n try {\n const raw = execFileSync(\"openclaw\", [\"cron\", \"list\", \"--json\"], {\n encoding: \"utf8\",\n timeout: 10_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n const parsed = JSON.parse(raw);\n const jobs: { name: string; every?: string; interval?: string; lastRun?: string }[] =\n parsed.jobs || parsed || [];\n return jobs.map((j) => ({\n name: j.name,\n every: j.every || j.interval || \"unknown\",\n lastRun: j.lastRun,\n }));\n } catch {\n return [];\n }\n}\n\n// ── Public API ──\n\nexport function registerFundCrons(\n subdomain: string,\n testnet: boolean,\n notifyTo?: string,\n): CronResult {\n if (!isOpenClaw()) {\n return { registered: false, isOpenClaw: false, cronNames: [] };\n }\n\n const checkName = cronName(subdomain, testnet);\n const summaryName = summaryCronName(subdomain, testnet);\n const existing = listCronNames();\n const created: string[] = [];\n\n // Cron 1: Silent participation check (every 15m)\n if (!existing.includes(checkName)) {\n try {\n execFileSync(\"openclaw\", [\n \"cron\", \"create\",\n \"--name\", checkName,\n \"--every\", \"15m\",\n \"--session\", \"isolated\",\n \"--timeout-seconds\", \"120\",\n \"--no-deliver\",\n \"--message\", silentPrompt(subdomain, testnet),\n ], {\n encoding: \"utf8\",\n timeout: 30_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n created.push(checkName);\n } catch (err) {\n console.warn(`Could not create silent cron: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n // Cron 2: Human summary (every 1h)\n if (!existing.includes(summaryName)) {\n try {\n const args = [\n \"cron\", \"create\",\n \"--name\", summaryName,\n \"--every\", \"1h\",\n \"--session\", \"isolated\",\n \"--timeout-seconds\", \"90\",\n \"--announce\",\n ];\n\n // Use explicit destination if configured, otherwise auto-route via --channel last\n if (notifyTo) {\n args.push(\"--to\", notifyTo);\n } else {\n args.push(\"--channel\", \"last\");\n }\n\n args.push(\"--message\", summaryPrompt(subdomain, testnet));\n\n execFileSync(\"openclaw\", args, {\n encoding: \"utf8\",\n timeout: 30_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n created.push(summaryName);\n } catch (err) {\n console.warn(`Could not create summary cron: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n return {\n registered: created.length > 0,\n isOpenClaw: true,\n cronNames: created,\n };\n}\n\nexport function unregisterFundCrons(\n subdomain: string,\n testnet: boolean,\n): { removed: boolean; isOpenClaw: boolean } {\n if (!isOpenClaw()) {\n return { removed: false, isOpenClaw: false };\n }\n\n const names = [cronName(subdomain, testnet), summaryCronName(subdomain, testnet)];\n let removed = false;\n\n for (const name of names) {\n try {\n execFileSync(\"openclaw\", [\"cron\", \"remove\", \"--name\", name], {\n encoding: \"utf8\",\n timeout: 10_000,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n removed = true;\n } catch {\n // Cron may not exist — that's fine\n }\n }\n\n return { removed, isOpenClaw: true };\n}\n\nexport function getFundCronStatus(\n subdomain: string,\n testnet: boolean,\n): CronStatus {\n if (!isOpenClaw()) {\n return { isOpenClaw: false, crons: [] };\n }\n\n const prefix = cronName(subdomain, testnet);\n const all = listCronDetails();\n const matching = all.filter((c) => c.name.startsWith(prefix));\n\n return { isOpenClaw: true, crons: matching };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -17,12 +17,12 @@ import {
|
|
|
17
17
|
revokeAttestation,
|
|
18
18
|
revokeJoinRequest,
|
|
19
19
|
stripReferrerPrefix
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-FOAX5PGR.js";
|
|
21
|
+
import "./chunk-RAITRCM7.js";
|
|
22
|
+
import "./chunk-WECQ6NVS.js";
|
|
23
|
+
import "./chunk-HYUUR6SC.js";
|
|
24
|
+
import "./chunk-GSC7PVEO.js";
|
|
25
|
+
import "./chunk-BQMOE4FJ.js";
|
|
26
26
|
export {
|
|
27
27
|
createApproval,
|
|
28
28
|
createJoinRequest,
|
|
@@ -43,4 +43,4 @@ export {
|
|
|
43
43
|
revokeJoinRequest,
|
|
44
44
|
stripReferrerPrefix
|
|
45
45
|
};
|
|
46
|
-
//# sourceMappingURL=eas-
|
|
46
|
+
//# sourceMappingURL=eas-HM2AUOEY.js.map
|
|
@@ -3,23 +3,25 @@ import {
|
|
|
3
3
|
PROPOSAL_STATES,
|
|
4
4
|
VOTE_TYPE,
|
|
5
5
|
cancelProposal,
|
|
6
|
+
classifyReview,
|
|
6
7
|
detectStrategyAdapter,
|
|
7
8
|
emergencyCancel,
|
|
8
9
|
emergencySettle,
|
|
10
|
+
evaluateExecuteGate,
|
|
9
11
|
executeProposal,
|
|
10
12
|
getActiveProposal,
|
|
11
13
|
getCapitalSnapshot,
|
|
12
14
|
getCooldownEnd,
|
|
13
15
|
getExecuteCalls,
|
|
14
|
-
|
|
16
|
+
getGovernorOf,
|
|
15
17
|
getGovernorParams,
|
|
16
18
|
getProposal,
|
|
17
19
|
getProposalState,
|
|
18
|
-
|
|
20
|
+
getProtocolConfigAddress,
|
|
19
21
|
getSettlementCalls,
|
|
20
22
|
getVoteWeight,
|
|
21
23
|
hasVoted,
|
|
22
|
-
|
|
24
|
+
openProposalCount,
|
|
23
25
|
parseDuration,
|
|
24
26
|
parseProposalIdFromLogs,
|
|
25
27
|
proposalCount,
|
|
@@ -34,34 +36,36 @@ import {
|
|
|
34
36
|
settleProposal,
|
|
35
37
|
vetoProposal,
|
|
36
38
|
vote
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
42
|
-
import "./chunk-
|
|
39
|
+
} from "./chunk-S6XA7PK4.js";
|
|
40
|
+
import "./chunk-RAITRCM7.js";
|
|
41
|
+
import "./chunk-WECQ6NVS.js";
|
|
42
|
+
import "./chunk-HYUUR6SC.js";
|
|
43
|
+
import "./chunk-GSC7PVEO.js";
|
|
44
|
+
import "./chunk-BQMOE4FJ.js";
|
|
43
45
|
export {
|
|
44
46
|
PROPOSAL_STATE,
|
|
45
47
|
PROPOSAL_STATES,
|
|
46
48
|
VOTE_TYPE,
|
|
47
49
|
cancelProposal,
|
|
50
|
+
classifyReview,
|
|
48
51
|
detectStrategyAdapter,
|
|
49
52
|
emergencyCancel,
|
|
50
53
|
emergencySettle,
|
|
54
|
+
evaluateExecuteGate,
|
|
51
55
|
executeProposal,
|
|
52
56
|
getActiveProposal,
|
|
53
57
|
getCapitalSnapshot,
|
|
54
58
|
getCooldownEnd,
|
|
55
59
|
getExecuteCalls,
|
|
56
|
-
|
|
60
|
+
getGovernorOf,
|
|
57
61
|
getGovernorParams,
|
|
58
62
|
getProposal,
|
|
59
63
|
getProposalState,
|
|
60
|
-
|
|
64
|
+
getProtocolConfigAddress,
|
|
61
65
|
getSettlementCalls,
|
|
62
66
|
getVoteWeight,
|
|
63
67
|
hasVoted,
|
|
64
|
-
|
|
68
|
+
openProposalCount,
|
|
65
69
|
parseDuration,
|
|
66
70
|
parseProposalIdFromLogs,
|
|
67
71
|
proposalCount,
|
|
@@ -77,4 +81,4 @@ export {
|
|
|
77
81
|
vetoProposal,
|
|
78
82
|
vote
|
|
79
83
|
};
|
|
80
|
-
//# sourceMappingURL=governor-
|
|
84
|
+
//# sourceMappingURL=governor-RRBTDGDX.js.map
|