@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.
Files changed (93) hide show
  1. package/dist/{abis-4HWN2E3H.js → abis-KP7M4IPM.js} +4 -2
  2. package/dist/addresses-YDPUPGWQ.js +45 -0
  3. package/dist/{agent-AETROOEW.js → agent-6IRZUPFT.js} +10 -10
  4. package/dist/{agent-AETROOEW.js.map → agent-6IRZUPFT.js.map} +1 -1
  5. package/dist/{chat-JSSTSE4K.js → chat-G5M3OK6M.js} +37 -36
  6. package/dist/chat-G5M3OK6M.js.map +1 -0
  7. package/dist/{chunk-IL43IMOC.js → chunk-3NMJ4LUL.js} +23 -18
  8. package/dist/chunk-3NMJ4LUL.js.map +1 -0
  9. package/dist/{chunk-UBAX22KA.js → chunk-52U76TRE.js} +4 -4
  10. package/dist/chunk-52U76TRE.js.map +1 -0
  11. package/dist/{chunk-W2ZUPR3W.js → chunk-5DWB5Y7G.js} +9 -9
  12. package/dist/chunk-5DWB5Y7G.js.map +1 -0
  13. package/dist/{chunk-YZHZSBES.js → chunk-BQMOE4FJ.js} +144 -37
  14. package/dist/chunk-BQMOE4FJ.js.map +1 -0
  15. package/dist/{chunk-VYF2TXPX.js → chunk-D4SPHYXA.js} +6 -6
  16. package/dist/{chunk-UCQEEF3Z.js → chunk-FOAX5PGR.js} +6 -6
  17. package/dist/chunk-FOAX5PGR.js.map +1 -0
  18. package/dist/chunk-FOS47623.js +127 -0
  19. package/dist/chunk-FOS47623.js.map +1 -0
  20. package/dist/{chunk-2W4KGGPU.js → chunk-GSC7PVEO.js} +27 -27
  21. package/dist/chunk-GSC7PVEO.js.map +1 -0
  22. package/dist/chunk-HYUUR6SC.js +111 -0
  23. package/dist/chunk-HYUUR6SC.js.map +1 -0
  24. package/dist/{chunk-RO26TXXE.js → chunk-NWY2U753.js} +2 -2
  25. package/dist/chunk-RAITRCM7.js +308 -0
  26. package/dist/chunk-RAITRCM7.js.map +1 -0
  27. package/dist/{chunk-A6TOJEUD.js → chunk-S6XA7PK4.js} +124 -128
  28. package/dist/chunk-S6XA7PK4.js.map +1 -0
  29. package/dist/{chunk-O4G3SBCI.js → chunk-UUHWD7Y3.js} +109 -129
  30. package/dist/chunk-UUHWD7Y3.js.map +1 -0
  31. package/dist/{chunk-YJSCIQUZ.js → chunk-WECQ6NVS.js} +6 -6
  32. package/dist/chunk-WECQ6NVS.js.map +1 -0
  33. package/dist/{chunk-RHRLYVKM.js → chunk-ZYXFKVYF.js} +25 -12
  34. package/dist/chunk-ZYXFKVYF.js.map +1 -0
  35. package/dist/{client-KBBFAMEI.js → client-QN6SA76M.js} +4 -4
  36. package/dist/{config-REASKDIK.js → config-FAQO37S7.js} +10 -10
  37. package/dist/{cron-EOULYO3R.js → cron-QMLRWDJG.js} +19 -17
  38. package/dist/cron-QMLRWDJG.js.map +1 -0
  39. package/dist/{eas-K4ZBACYN.js → eas-HM2AUOEY.js} +7 -7
  40. package/dist/{governor-2CDSMSG7.js → governor-RRBTDGDX.js} +17 -13
  41. package/dist/index.js +2026 -1222
  42. package/dist/index.js.map +1 -1
  43. package/dist/{ipfs-FAYWUCS2.js → ipfs-VGWTUORE.js} +2 -2
  44. package/dist/{network-3ZU7UBDU.js → network-L6JKNYOJ.js} +7 -7
  45. package/dist/{price-LCTECRQP.js → price-AJ4JMHCT.js} +6 -6
  46. package/dist/{research-FUQOQWKK.js → research-6VEEPEPP.js} +22 -22
  47. package/dist/research-6VEEPEPP.js.map +1 -0
  48. package/dist/research-7Z6SFPPX.js +14 -0
  49. package/dist/{session-FJB2RV2X.js → session-PURMITWE.js} +28 -28
  50. package/dist/session-PURMITWE.js.map +1 -0
  51. package/dist/{session-XAW5UIXP.js → session-XBQY7SBJ.js} +2 -2
  52. package/dist/{trade-U7H5IFH6.js → trade-YTGLGCRQ.js} +34 -34
  53. package/dist/trade-YTGLGCRQ.js.map +1 -0
  54. package/dist/vault-NIPA5JV4.js +54 -0
  55. package/dist/vault-NIPA5JV4.js.map +1 -0
  56. package/dist/{xmtp-6NJ4PW6L.js → xmtp-M32JSE4I.js} +13 -12
  57. package/dist/xmtp-M32JSE4I.js.map +1 -0
  58. package/package.json +4 -3
  59. package/dist/addresses-J2LMGUCT.js +0 -35
  60. package/dist/chat-JSSTSE4K.js.map +0 -1
  61. package/dist/chunk-2LRC7I33.js +0 -186
  62. package/dist/chunk-2LRC7I33.js.map +0 -1
  63. package/dist/chunk-2W4KGGPU.js.map +0 -1
  64. package/dist/chunk-A6TOJEUD.js.map +0 -1
  65. package/dist/chunk-GWMTAW6A.js +0 -494
  66. package/dist/chunk-GWMTAW6A.js.map +0 -1
  67. package/dist/chunk-IL43IMOC.js.map +0 -1
  68. package/dist/chunk-O4G3SBCI.js.map +0 -1
  69. package/dist/chunk-RHRLYVKM.js.map +0 -1
  70. package/dist/chunk-UBAX22KA.js.map +0 -1
  71. package/dist/chunk-UCQEEF3Z.js.map +0 -1
  72. package/dist/chunk-W2ZUPR3W.js.map +0 -1
  73. package/dist/chunk-YJSCIQUZ.js.map +0 -1
  74. package/dist/chunk-YZHZSBES.js.map +0 -1
  75. package/dist/cron-EOULYO3R.js.map +0 -1
  76. package/dist/research-FUQOQWKK.js.map +0 -1
  77. package/dist/research-XEXTHDT3.js +0 -14
  78. package/dist/session-FJB2RV2X.js.map +0 -1
  79. package/dist/trade-U7H5IFH6.js.map +0 -1
  80. package/dist/xmtp-6NJ4PW6L.js.map +0 -1
  81. /package/dist/{abis-4HWN2E3H.js.map → abis-KP7M4IPM.js.map} +0 -0
  82. /package/dist/{addresses-J2LMGUCT.js.map → addresses-YDPUPGWQ.js.map} +0 -0
  83. /package/dist/{chunk-VYF2TXPX.js.map → chunk-D4SPHYXA.js.map} +0 -0
  84. /package/dist/{chunk-RO26TXXE.js.map → chunk-NWY2U753.js.map} +0 -0
  85. /package/dist/{client-KBBFAMEI.js.map → client-QN6SA76M.js.map} +0 -0
  86. /package/dist/{config-REASKDIK.js.map → config-FAQO37S7.js.map} +0 -0
  87. /package/dist/{eas-K4ZBACYN.js.map → eas-HM2AUOEY.js.map} +0 -0
  88. /package/dist/{governor-2CDSMSG7.js.map → governor-RRBTDGDX.js.map} +0 -0
  89. /package/dist/{ipfs-FAYWUCS2.js.map → ipfs-VGWTUORE.js.map} +0 -0
  90. /package/dist/{network-3ZU7UBDU.js.map → network-L6JKNYOJ.js.map} +0 -0
  91. /package/dist/{price-LCTECRQP.js.map → price-AJ4JMHCT.js.map} +0 -0
  92. /package/dist/{research-XEXTHDT3.js.map → research-7Z6SFPPX.js.map} +0 -0
  93. /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-YJSCIQUZ.js";
14
- import "./chunk-2LRC7I33.js";
15
- import "./chunk-2W4KGGPU.js";
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-KBBFAMEI.js.map
29
+ //# sourceMappingURL=client-QN6SA76M.js.map
@@ -1,5 +1,5 @@
1
1
  import {
2
- addSyndicate,
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
- getPrimarySyndicate,
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
- setPrimarySyndicate,
26
+ setPrimaryFund,
27
27
  setPrivateKey,
28
28
  setUniswapApiKey,
29
29
  setVeniceApiKey
30
- } from "./chunk-2W4KGGPU.js";
30
+ } from "./chunk-GSC7PVEO.js";
31
31
  export {
32
- addSyndicate,
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
- getPrimarySyndicate,
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
- setPrimarySyndicate,
56
+ setPrimaryFund,
57
57
  setPrivateKey,
58
58
  setUniswapApiKey,
59
59
  setVeniceApiKey
60
60
  };
61
- //# sourceMappingURL=config-REASKDIK.js.map
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 = testnet ? " --chain base-sepolia" : "";
26
- const envPrefix = testnet ? "ENABLE_TESTNET=true " : "";
25
+ const chainFlag = "";
26
+ const envPrefix = "";
27
+ void testnet;
27
28
  return [
28
- `You are a sherwood syndicate member. Your syndicate: ${subdomain}.sherwoodagent.eth`,
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: syndicate, messages[], events[], meta{}.",
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 syndicate member \u2014 discuss strategies, share opinions, ask questions",
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 = testnet ? " --chain base-sepolia" : "";
52
- const envPrefix = testnet ? "ENABLE_TESTNET=true " : "";
52
+ const chainFlag = "";
53
+ const envPrefix = "";
54
+ void testnet;
53
55
  return [
54
- "You are reporting syndicate activity to your human operator.",
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: syndicate, messages[], events[], meta{}.",
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 syndicate",
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 registerSyndicateCrons(subdomain, testnet, notifyTo) {
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 unregisterSyndicateCrons(subdomain, testnet) {
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 getSyndicateCronStatus(subdomain, testnet) {
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
- getSyndicateCronStatus,
209
+ getFundCronStatus,
208
210
  isOpenClaw,
209
- registerSyndicateCrons,
210
- unregisterSyndicateCrons
211
+ registerFundCrons,
212
+ unregisterFundCrons
211
213
  };
212
- //# sourceMappingURL=cron-EOULYO3R.js.map
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-UCQEEF3Z.js";
21
- import "./chunk-GWMTAW6A.js";
22
- import "./chunk-YJSCIQUZ.js";
23
- import "./chunk-2LRC7I33.js";
24
- import "./chunk-2W4KGGPU.js";
25
- import "./chunk-YZHZSBES.js";
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-K4ZBACYN.js.map
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
- getGovernorAddress,
16
+ getGovernorOf,
15
17
  getGovernorParams,
16
18
  getProposal,
17
19
  getProposalState,
18
- getRegisteredVaults,
20
+ getProtocolConfigAddress,
19
21
  getSettlementCalls,
20
22
  getVoteWeight,
21
23
  hasVoted,
22
- isRegisteredVault,
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-A6TOJEUD.js";
38
- import "./chunk-GWMTAW6A.js";
39
- import "./chunk-YJSCIQUZ.js";
40
- import "./chunk-2LRC7I33.js";
41
- import "./chunk-2W4KGGPU.js";
42
- import "./chunk-YZHZSBES.js";
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
- getGovernorAddress,
60
+ getGovernorOf,
57
61
  getGovernorParams,
58
62
  getProposal,
59
63
  getProposalState,
60
- getRegisteredVaults,
64
+ getProtocolConfigAddress,
61
65
  getSettlementCalls,
62
66
  getVoteWeight,
63
67
  hasVoted,
64
- isRegisteredVault,
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-2CDSMSG7.js.map
84
+ //# sourceMappingURL=governor-RRBTDGDX.js.map