@jinn-network/client 0.1.0 → 0.1.1-canary.351ad49e

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 (293) hide show
  1. package/CONTRIBUTING.md +123 -0
  2. package/README.md +202 -26
  3. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +15 -0
  4. package/dist/adapters/claim-registry/abi.d.ts +127 -0
  5. package/dist/adapters/claim-registry/abi.js +93 -0
  6. package/dist/adapters/claim-registry/abi.js.map +1 -0
  7. package/dist/adapters/claim-registry/client.d.ts +89 -0
  8. package/dist/adapters/claim-registry/client.js +205 -0
  9. package/dist/adapters/claim-registry/client.js.map +1 -0
  10. package/dist/adapters/mech/adapter.d.ts +2 -0
  11. package/dist/adapters/mech/adapter.js +110 -41
  12. package/dist/adapters/mech/adapter.js.map +1 -1
  13. package/dist/adapters/mech/contracts.d.ts +2 -0
  14. package/dist/adapters/mech/contracts.js +32 -7
  15. package/dist/adapters/mech/contracts.js.map +1 -1
  16. package/dist/adapters/mech/ipfs.d.ts +8 -0
  17. package/dist/adapters/mech/ipfs.js +12 -0
  18. package/dist/adapters/mech/ipfs.js.map +1 -1
  19. package/dist/adapters/mech/types.d.ts +20 -46
  20. package/dist/adapters/mech/types.js +16 -35
  21. package/dist/adapters/mech/types.js.map +1 -1
  22. package/dist/api/gather-status.js +33 -1
  23. package/dist/api/gather-status.js.map +1 -1
  24. package/dist/api/portfolio-v0-build.d.ts +81 -0
  25. package/dist/api/portfolio-v0-build.js +141 -0
  26. package/dist/api/portfolio-v0-build.js.map +1 -0
  27. package/dist/api/portfolio-v0-doctor.d.ts +37 -0
  28. package/dist/api/portfolio-v0-doctor.js +123 -0
  29. package/dist/api/portfolio-v0-doctor.js.map +1 -0
  30. package/dist/api/rewards-build.js +1 -1
  31. package/dist/api/rewards-build.js.map +1 -1
  32. package/dist/api/server.js +12 -0
  33. package/dist/api/server.js.map +1 -1
  34. package/dist/api/status-build.d.ts +8 -0
  35. package/dist/api/status-build.js +1 -0
  36. package/dist/api/status-build.js.map +1 -1
  37. package/dist/api/status-rollup-build.d.ts +4 -0
  38. package/dist/api/status-rollup-build.js +4 -0
  39. package/dist/api/status-rollup-build.js.map +1 -1
  40. package/dist/bin/jinn-mcp.d.ts +14 -0
  41. package/dist/bin/jinn-mcp.js +19 -0
  42. package/dist/bin/jinn-mcp.js.map +1 -0
  43. package/dist/build-meta.json +1 -1
  44. package/dist/cli/commands/auth.d.ts +3 -0
  45. package/dist/cli/commands/auth.js +236 -0
  46. package/dist/cli/commands/auth.js.map +1 -0
  47. package/dist/cli/commands/bootstrap.js +1 -0
  48. package/dist/cli/commands/bootstrap.js.map +1 -1
  49. package/dist/cli/commands/doctor.js +153 -15
  50. package/dist/cli/commands/doctor.js.map +1 -1
  51. package/dist/cli/commands/fund-requirements.js +69 -1
  52. package/dist/cli/commands/fund-requirements.js.map +1 -1
  53. package/dist/cli/commands/history.js +1 -0
  54. package/dist/cli/commands/history.js.map +1 -1
  55. package/dist/cli/commands/init.js +31 -7
  56. package/dist/cli/commands/init.js.map +1 -1
  57. package/dist/cli/commands/keys-backup.js +149 -15
  58. package/dist/cli/commands/keys-backup.js.map +1 -1
  59. package/dist/cli/commands/logs.js +28 -13
  60. package/dist/cli/commands/logs.js.map +1 -1
  61. package/dist/cli/commands/plugin-install.d.ts +3 -0
  62. package/dist/cli/commands/plugin-install.js +799 -0
  63. package/dist/cli/commands/plugin-install.js.map +1 -0
  64. package/dist/cli/commands/quickstart.d.ts +3 -0
  65. package/dist/cli/commands/quickstart.js +292 -0
  66. package/dist/cli/commands/quickstart.js.map +1 -0
  67. package/dist/cli/commands/rewards.js +27 -1
  68. package/dist/cli/commands/rewards.js.map +1 -1
  69. package/dist/cli/commands/run.js +6 -0
  70. package/dist/cli/commands/run.js.map +1 -1
  71. package/dist/cli/commands/stop.js +1 -0
  72. package/dist/cli/commands/stop.js.map +1 -1
  73. package/dist/cli/commands/submit-intent.js +79 -5
  74. package/dist/cli/commands/submit-intent.js.map +1 -1
  75. package/dist/cli/commands/update.d.ts +3 -0
  76. package/dist/cli/commands/update.js +154 -0
  77. package/dist/cli/commands/update.js.map +1 -0
  78. package/dist/cli/commands/version.js +15 -1
  79. package/dist/cli/commands/version.js.map +1 -1
  80. package/dist/cli/deployment-digest.js +20 -4
  81. package/dist/cli/deployment-digest.js.map +1 -1
  82. package/dist/cli/index.js +8 -0
  83. package/dist/cli/index.js.map +1 -1
  84. package/dist/cli/password.d.ts +28 -1
  85. package/dist/cli/password.js +59 -10
  86. package/dist/cli/password.js.map +1 -1
  87. package/dist/config.d.ts +110 -7
  88. package/dist/config.js +38 -5
  89. package/dist/config.js.map +1 -1
  90. package/dist/daemon/balance-topup-loop.d.ts +40 -0
  91. package/dist/daemon/balance-topup-loop.js +96 -0
  92. package/dist/daemon/balance-topup-loop.js.map +1 -0
  93. package/dist/daemon/daemon.d.ts +37 -0
  94. package/dist/daemon/daemon.js +98 -1
  95. package/dist/daemon/daemon.js.map +1 -1
  96. package/dist/dashboard/index.html +500 -0
  97. package/dist/earning/bootstrap.d.ts +3 -1
  98. package/dist/earning/bootstrap.js +138 -17
  99. package/dist/earning/bootstrap.js.map +1 -1
  100. package/dist/earning/contracts.d.ts +24 -0
  101. package/dist/earning/contracts.js +20 -1
  102. package/dist/earning/contracts.js.map +1 -1
  103. package/dist/earning/faucet.d.ts +15 -0
  104. package/dist/earning/faucet.js +64 -0
  105. package/dist/earning/faucet.js.map +1 -0
  106. package/dist/earning/jinn-rewards.d.ts +9 -0
  107. package/dist/earning/jinn-rewards.js +7 -0
  108. package/dist/earning/jinn-rewards.js.map +1 -1
  109. package/dist/earning/store.d.ts +5 -0
  110. package/dist/earning/store.js +7 -3
  111. package/dist/earning/store.js.map +1 -1
  112. package/dist/errors/unauthorized-account.d.ts +10 -0
  113. package/dist/errors/unauthorized-account.js +14 -0
  114. package/dist/errors/unauthorized-account.js.map +1 -0
  115. package/dist/main.js +138 -1
  116. package/dist/main.js.map +1 -1
  117. package/dist/mcp/operator-server.d.ts +34 -0
  118. package/dist/mcp/operator-server.js +219 -0
  119. package/dist/mcp/operator-server.js.map +1 -0
  120. package/dist/operator-errors.js +11 -0
  121. package/dist/operator-errors.js.map +1 -1
  122. package/dist/preflight/claude-auth.d.ts +68 -0
  123. package/dist/preflight/claude-auth.js +171 -0
  124. package/dist/preflight/claude-auth.js.map +1 -0
  125. package/dist/restorer/engine/canonical-json.d.ts +18 -0
  126. package/dist/restorer/engine/canonical-json.js +59 -0
  127. package/dist/restorer/engine/canonical-json.js.map +1 -0
  128. package/dist/restorer/engine/claim.d.ts +69 -0
  129. package/dist/restorer/engine/claim.js +104 -0
  130. package/dist/restorer/engine/claim.js.map +1 -0
  131. package/dist/restorer/engine/delivery.d.ts +52 -0
  132. package/dist/restorer/engine/delivery.js +63 -0
  133. package/dist/restorer/engine/delivery.js.map +1 -0
  134. package/dist/restorer/engine/engine.d.ts +203 -0
  135. package/dist/restorer/engine/engine.js +658 -0
  136. package/dist/restorer/engine/engine.js.map +1 -0
  137. package/dist/restorer/engine/manifest-assembly.d.ts +67 -0
  138. package/dist/restorer/engine/manifest-assembly.js +79 -0
  139. package/dist/restorer/engine/manifest-assembly.js.map +1 -0
  140. package/dist/restorer/engine/packaging.d.ts +87 -0
  141. package/dist/restorer/engine/packaging.js +350 -0
  142. package/dist/restorer/engine/packaging.js.map +1 -0
  143. package/dist/restorer/engine/persistence.d.ts +170 -0
  144. package/dist/restorer/engine/persistence.js +381 -0
  145. package/dist/restorer/engine/persistence.js.map +1 -0
  146. package/dist/restorer/engine/recovery.d.ts +22 -0
  147. package/dist/restorer/engine/recovery.js +24 -0
  148. package/dist/restorer/engine/recovery.js.map +1 -0
  149. package/dist/restorer/engine/registry.d.ts +62 -0
  150. package/dist/restorer/engine/registry.js +73 -0
  151. package/dist/restorer/engine/registry.js.map +1 -0
  152. package/dist/restorer/engine/signing.d.ts +30 -0
  153. package/dist/restorer/engine/signing.js +39 -0
  154. package/dist/restorer/engine/signing.js.map +1 -0
  155. package/dist/restorer/engine/state.d.ts +42 -0
  156. package/dist/restorer/engine/state.js +87 -0
  157. package/dist/restorer/engine/state.js.map +1 -0
  158. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.d.ts +64 -0
  159. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js +96 -0
  160. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
  161. package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +88 -0
  162. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +560 -0
  163. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -0
  164. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +137 -0
  165. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js +865 -0
  166. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
  167. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.d.ts +74 -0
  168. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js +74 -0
  169. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
  170. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +97 -0
  171. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +226 -0
  172. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
  173. package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +43 -0
  174. package/dist/restorer/impls/claude-mcp-prediction/index.js +230 -0
  175. package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -0
  176. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.d.ts +38 -0
  177. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js +135 -0
  178. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
  179. package/dist/restorer/impls/claude-mcp-prediction/prompt.d.ts +8 -0
  180. package/dist/restorer/impls/claude-mcp-prediction/prompt.js +54 -0
  181. package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +1 -0
  182. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +36 -0
  183. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +137 -0
  184. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
  185. package/dist/restorer/impls/claude-mcp-prediction/types.d.ts +82 -0
  186. package/dist/restorer/impls/claude-mcp-prediction/types.js +6 -0
  187. package/dist/restorer/impls/claude-mcp-prediction/types.js.map +1 -0
  188. package/dist/restorer/impls/legacy-claude/index.d.ts +42 -0
  189. package/dist/restorer/impls/legacy-claude/index.js +60 -0
  190. package/dist/restorer/impls/legacy-claude/index.js.map +1 -0
  191. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +68 -0
  192. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js +117 -0
  193. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
  194. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.d.ts +49 -0
  195. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js +91 -0
  196. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
  197. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.d.ts +78 -0
  198. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js +274 -0
  199. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
  200. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +23 -0
  201. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js +49 -0
  202. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
  203. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.d.ts +25 -0
  204. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js +44 -0
  205. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
  206. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.d.ts +17 -0
  207. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js +43 -0
  208. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
  209. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +43 -0
  210. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +431 -0
  211. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -0
  212. package/dist/restorer/impls/portfolio-v0-evaluator/score.d.ts +21 -0
  213. package/dist/restorer/impls/portfolio-v0-evaluator/score.js +32 -0
  214. package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +1 -0
  215. package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +32 -0
  216. package/dist/restorer/impls/portfolio-v0-evaluator/types.js +8 -0
  217. package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +1 -0
  218. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +26 -0
  219. package/dist/restorer/impls/prediction-v0-baseline/index.js +82 -0
  220. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -0
  221. package/dist/restorer/impls/prediction-v0-baseline/strategy.d.ts +8 -0
  222. package/dist/restorer/impls/prediction-v0-baseline/strategy.js +41 -0
  223. package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +1 -0
  224. package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +7 -0
  225. package/dist/restorer/impls/prediction-v0-baseline/types.js +2 -0
  226. package/dist/restorer/impls/prediction-v0-baseline/types.js.map +1 -0
  227. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.d.ts +20 -0
  228. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js +66 -0
  229. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
  230. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.d.ts +9 -0
  231. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js +23 -0
  232. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
  233. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.d.ts +3 -0
  234. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js +13 -0
  235. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
  236. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +7 -0
  237. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +74 -0
  238. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
  239. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.d.ts +5 -0
  240. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js +20 -0
  241. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
  242. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +33 -0
  243. package/dist/restorer/impls/prediction-v0-evaluator/index.js +179 -0
  244. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -0
  245. package/dist/restorer/impls/prediction-v0-evaluator/score.d.ts +8 -0
  246. package/dist/restorer/impls/prediction-v0-evaluator/score.js +15 -0
  247. package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +1 -0
  248. package/dist/restorer/impls/prediction-v0-evaluator/types.d.ts +7 -0
  249. package/dist/restorer/impls/prediction-v0-evaluator/types.js +2 -0
  250. package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +1 -0
  251. package/dist/restorer/types.d.ts +62 -0
  252. package/dist/restorer/types.js +7 -0
  253. package/dist/restorer/types.js.map +1 -0
  254. package/dist/runner/claude.js +15 -0
  255. package/dist/runner/claude.js.map +1 -1
  256. package/dist/store/store.d.ts +3 -1
  257. package/dist/store/store.js +8 -0
  258. package/dist/store/store.js.map +1 -1
  259. package/dist/tx-retry.js +11 -1
  260. package/dist/tx-retry.js.map +1 -1
  261. package/dist/types/desired-state.d.ts +53 -0
  262. package/dist/types/desired-state.js +20 -0
  263. package/dist/types/desired-state.js.map +1 -1
  264. package/dist/types/index.d.ts +3 -1
  265. package/dist/types/index.js +3 -1
  266. package/dist/types/index.js.map +1 -1
  267. package/dist/types/portfolio.d.ts +1000 -0
  268. package/dist/types/portfolio.js +168 -0
  269. package/dist/types/portfolio.js.map +1 -0
  270. package/dist/types/prediction.d.ts +751 -0
  271. package/dist/types/prediction.js +128 -0
  272. package/dist/types/prediction.js.map +1 -0
  273. package/dist/venues/chainlink/client.d.ts +99 -0
  274. package/dist/venues/chainlink/client.js +130 -0
  275. package/dist/venues/chainlink/client.js.map +1 -0
  276. package/dist/venues/chainlink/feeds.d.ts +8 -0
  277. package/dist/venues/chainlink/feeds.js +9 -0
  278. package/dist/venues/chainlink/feeds.js.map +1 -0
  279. package/dist/venues/hyperliquid/account-value.d.ts +30 -0
  280. package/dist/venues/hyperliquid/account-value.js +30 -0
  281. package/dist/venues/hyperliquid/account-value.js.map +1 -0
  282. package/dist/venues/hyperliquid/client.d.ts +63 -0
  283. package/dist/venues/hyperliquid/client.js +135 -0
  284. package/dist/venues/hyperliquid/client.js.map +1 -0
  285. package/dist/venues/hyperliquid/grid.d.ts +36 -0
  286. package/dist/venues/hyperliquid/grid.js +61 -0
  287. package/dist/venues/hyperliquid/grid.js.map +1 -0
  288. package/dist/venues/hyperliquid/types.d.ts +81 -0
  289. package/dist/venues/hyperliquid/types.js +8 -0
  290. package/dist/venues/hyperliquid/types.js.map +1 -0
  291. package/docker-compose.yml +44 -0
  292. package/package.json +21 -3
  293. package/skills/jinn-operator/SKILL.md +213 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-install.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin-install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandModule } from '../command.js';
2
+ declare const command: CommandModule;
3
+ export default command;
@@ -0,0 +1,292 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import { parseArgs } from 'node:util';
6
+ import { COMMON_FLAGS } from '../command.js';
7
+ import { emitEnvelope } from '../../errors/envelope.js';
8
+ import { loadConfig } from '../../config.js';
9
+ import initCommand from './init.js';
10
+ import bootstrapCommand from './bootstrap.js';
11
+ import doctorCommand from './doctor.js';
12
+ // StringWriter to capture sub-command output
13
+ class StringWriter {
14
+ chunks = [];
15
+ write(s) { this.chunks.push(s); return true; }
16
+ toString() { return this.chunks.join(''); }
17
+ }
18
+ async function run(ctx) {
19
+ let parsed;
20
+ try {
21
+ parsed = parseArgs({
22
+ args: ctx.argv,
23
+ options: {
24
+ ...COMMON_FLAGS,
25
+ 'no-daemon': { type: 'boolean', default: false },
26
+ },
27
+ allowPositionals: false,
28
+ });
29
+ }
30
+ catch (err) {
31
+ emitEnvelope({
32
+ code: 'invalid_invocation',
33
+ message: err instanceof Error ? err.message : String(err),
34
+ exampleCli: 'jinn quickstart',
35
+ details: { field: 'flags' },
36
+ }, { writer: ctx.writer, exit: ctx.exit });
37
+ return;
38
+ }
39
+ const noDaemon = parsed.values['no-daemon'];
40
+ const configPath = typeof parsed.values.config === 'string' && parsed.values.config.length > 0
41
+ ? parsed.values.config
42
+ : undefined;
43
+ const jinnDir = join(ctx.env['HOME'] ?? homedir(), '.jinn-client');
44
+ const passwordFilePath = join(jinnDir, 'keystore-password');
45
+ const bootstrapArgv = ['--json', ...(configPath ? ['--config', configPath] : [])];
46
+ // ── Step 1: Resolve or generate password ──
47
+ let password;
48
+ let passwordGenerated = false;
49
+ if (ctx.env['JINN_PASSWORD']) {
50
+ password = ctx.env['JINN_PASSWORD'];
51
+ console.error('[quickstart] Using password from JINN_PASSWORD environment variable.');
52
+ }
53
+ else if (existsSync(passwordFilePath)) {
54
+ password = readFileSync(passwordFilePath, 'utf-8').trim();
55
+ console.error('[quickstart] Using existing auto-generated password.');
56
+ }
57
+ else {
58
+ password = randomBytes(32).toString('hex');
59
+ mkdirSync(jinnDir, { recursive: true, mode: 0o700 });
60
+ writeFileSync(passwordFilePath, password + '\n', { mode: 0o600 });
61
+ passwordGenerated = true;
62
+ console.error('[quickstart] Generated keystore password.');
63
+ }
64
+ const subEnv = { ...ctx.env, JINN_PASSWORD: password };
65
+ // ── Step 1.5: Doctor preflight ──
66
+ // Run doctor before touching any wallet state so blocking problems (missing
67
+ // Claude binary, unreachable RPC, broken deployment) surface as the first
68
+ // error the operator sees — not an opaque bootstrap failure eight steps in.
69
+ console.error('[quickstart] Running preflight checks...');
70
+ const doctorWriter = new StringWriter();
71
+ await doctorCommand.run({
72
+ argv: ['--json', ...(configPath ? ['--config', configPath] : [])],
73
+ stdoutIsTty: false,
74
+ writer: doctorWriter,
75
+ exit: () => { },
76
+ env: subEnv,
77
+ });
78
+ let doctorPayload = null;
79
+ try {
80
+ doctorPayload = JSON.parse(doctorWriter.toString().trim());
81
+ }
82
+ catch { /* doctor output malformed — proceed and let bootstrap fail loudly */ }
83
+ if (doctorPayload && !doctorPayload.ok) {
84
+ const blocking = doctorPayload.checks.filter((c) => !c.ok);
85
+ // portfolio.v0 impl-state checks are advisory for a fresh operator who
86
+ // hasn't submitted an HL intent yet — don't block quickstart on them.
87
+ const realBlockers = blocking.filter((c) => !c.name.startsWith('portfolio_') && !c.name.startsWith('hl_'));
88
+ if (realBlockers.length > 0) {
89
+ console.error('[quickstart] Preflight failed. Fix the following and re-run:');
90
+ for (const c of realBlockers) {
91
+ console.error(` - ${c.name}: ${c.detail}`);
92
+ if (c.remedy)
93
+ console.error(` remedy: ${c.remedy}`);
94
+ }
95
+ ctx.exit(11);
96
+ return;
97
+ }
98
+ }
99
+ console.error('[quickstart] Preflight OK.');
100
+ // ── Step 2: Init (idempotent) ──
101
+ console.error('[quickstart] Initializing wallet...');
102
+ const initWriter = new StringWriter();
103
+ let initExitCode = null;
104
+ await initCommand.run({
105
+ argv: ['--json'],
106
+ stdoutIsTty: false,
107
+ writer: initWriter,
108
+ exit: (code) => { initExitCode = code; },
109
+ env: subEnv,
110
+ });
111
+ if (initExitCode !== null && initExitCode !== 0) {
112
+ console.error('[quickstart] Init failed.');
113
+ ctx.writer.write(initWriter.toString());
114
+ ctx.exit(initExitCode);
115
+ return;
116
+ }
117
+ // Parse master address from init output
118
+ let masterAddress = '';
119
+ try {
120
+ const initResult = JSON.parse(initWriter.toString().trim());
121
+ masterAddress = initResult.master ?? '';
122
+ }
123
+ catch { /* non-fatal */ }
124
+ console.error(`[quickstart] Wallet ready. Master: ${masterAddress || '(see init output)'}`);
125
+ // ── Step 3: Bootstrap (with retry for funding gates) ──
126
+ const MAX_BOOTSTRAP_ATTEMPTS = 3;
127
+ let bootstrapSuccess = false;
128
+ for (let attempt = 1; attempt <= MAX_BOOTSTRAP_ATTEMPTS; attempt++) {
129
+ console.error(`[quickstart] Running bootstrap (attempt ${attempt}/${MAX_BOOTSTRAP_ATTEMPTS})...`);
130
+ const bsWriter = new StringWriter();
131
+ let bsExitCode = null;
132
+ await bootstrapCommand.run({
133
+ argv: bootstrapArgv,
134
+ stdoutIsTty: false,
135
+ writer: bsWriter,
136
+ exit: (code) => { bsExitCode = code; },
137
+ env: subEnv,
138
+ });
139
+ if (bsExitCode === null || bsExitCode === 0) {
140
+ bootstrapSuccess = true;
141
+ console.error('[quickstart] Bootstrap complete.');
142
+ break;
143
+ }
144
+ // Exit code 10 = funding_required — the faucet integration in bootstrap.ts
145
+ // will have already attempted auto-funding. If we're here, manual funding is needed.
146
+ if (bsExitCode === 10) {
147
+ const bsOutput = bsWriter.toString().trim();
148
+ console.error('[quickstart] Funding required. Waiting for manual funding...');
149
+ try {
150
+ const envelope = JSON.parse(bsOutput);
151
+ if (envelope.details?.address) {
152
+ console.error(` Address: ${envelope.details.address}`);
153
+ }
154
+ if (envelope.hint) {
155
+ console.error(` ${envelope.hint}`);
156
+ }
157
+ }
158
+ catch { /* non-fatal */ }
159
+ console.error(' Faucet: https://portal.cdp.coinbase.com/products/faucet');
160
+ console.error(' Polling every 15s for funding...');
161
+ // Poll until funded or timeout (30 min)
162
+ const pollInterval = 15_000;
163
+ const maxPolls = 120;
164
+ let funded = false;
165
+ for (let i = 0; i < maxPolls; i++) {
166
+ await new Promise(r => setTimeout(r, pollInterval));
167
+ // Re-attempt bootstrap to check if funding arrived
168
+ const checkWriter = new StringWriter();
169
+ let checkExit = null;
170
+ await bootstrapCommand.run({
171
+ argv: bootstrapArgv,
172
+ stdoutIsTty: false,
173
+ writer: checkWriter,
174
+ exit: (code) => { checkExit = code; },
175
+ env: { ...subEnv, JINN_DISABLE_TESTNET_FAUCET: '1' },
176
+ });
177
+ if (checkExit === null || checkExit === 0) {
178
+ funded = true;
179
+ bootstrapSuccess = true;
180
+ console.error('[quickstart] Funding received. Bootstrap complete.');
181
+ break;
182
+ }
183
+ if (checkExit !== 10) {
184
+ // Different error — relay and exit
185
+ console.error('[quickstart] Bootstrap failed with unexpected error.');
186
+ ctx.writer.write(checkWriter.toString());
187
+ ctx.exit(checkExit ?? 50);
188
+ return;
189
+ }
190
+ if ((i + 1) % 4 === 0) {
191
+ console.error(` Still waiting... (${Math.round((i + 1) * pollInterval / 60000)} min elapsed)`);
192
+ }
193
+ }
194
+ if (funded)
195
+ break;
196
+ console.error('[quickstart] Timeout waiting for funding (30 min). Run `jinn quickstart` again after funding.');
197
+ ctx.exit(10);
198
+ return;
199
+ }
200
+ // Other exit codes — fatal
201
+ console.error('[quickstart] Bootstrap failed.');
202
+ ctx.writer.write(bsWriter.toString());
203
+ ctx.exit(bsExitCode);
204
+ return;
205
+ }
206
+ if (!bootstrapSuccess) {
207
+ console.error('[quickstart] Bootstrap did not complete after retries.');
208
+ ctx.exit(50);
209
+ return;
210
+ }
211
+ // ── Step 4: Print summary ──
212
+ const apiPort = String(loadConfig(configPath).apiPort);
213
+ const keystoreFile = join(jinnDir, 'earning', 'master_keystore.json');
214
+ console.error('');
215
+ if (passwordGenerated) {
216
+ const bar = '━'.repeat(64);
217
+ console.error(bar);
218
+ console.error('Your Jinn wallet has been created.');
219
+ console.error('');
220
+ console.error(` Master address: ${masterAddress || '(run `jinn version` to read)'}`);
221
+ console.error(` Keystore: ${keystoreFile}`);
222
+ console.error(` Password: ${passwordFilePath}`);
223
+ console.error(` Dashboard: http://127.0.0.1:${apiPort}`);
224
+ console.error('');
225
+ console.error('Back up your mnemonic NOW to somewhere off this machine:');
226
+ console.error(' jinn keys backup --output /path/to/secure/location.txt');
227
+ console.error('');
228
+ console.error('TESTER TIER — treat this wallet as hot.');
229
+ console.error(' The password file sits next to the encrypted keystore, so anyone');
230
+ console.error(' with shell access to this machine can decrypt it. Keep funds to');
231
+ console.error(' the gas + rewards minimum; use a hardware wallet for anything else.');
232
+ console.error('');
233
+ console.error('To rotate the password: JINN_NEW_PASSWORD=<new> jinn keys change-password');
234
+ console.error(bar);
235
+ }
236
+ else {
237
+ console.error('Quickstart complete!');
238
+ console.error(` Dashboard: http://127.0.0.1:${apiPort}`);
239
+ }
240
+ console.error('');
241
+ if (noDaemon) {
242
+ ctx.writer.write(JSON.stringify({
243
+ schemaVersion: 1,
244
+ generatedAt: new Date().toISOString(),
245
+ verb: 'quickstart',
246
+ status: 'ready',
247
+ masterAddress,
248
+ dashboardUrl: `http://127.0.0.1:${apiPort}`,
249
+ passwordFile: passwordGenerated ? passwordFilePath : undefined,
250
+ }) + '\n');
251
+ return;
252
+ }
253
+ // ── Step 5: Start daemon (foreground) ──
254
+ console.error('Starting daemon...');
255
+ // Route console to stderr for daemon (same as run command does)
256
+ const stderrWriter = (line) => {
257
+ process.stderr.write(line.endsWith('\n') ? line : `${line}\n`);
258
+ };
259
+ console.log = (...args) => stderrWriter(args.map(String).join(' '));
260
+ console.info = (...args) => stderrWriter(args.map(String).join(' '));
261
+ console.warn = (...args) => stderrWriter(args.map(String).join(' '));
262
+ console.error = (...args) => stderrWriter(args.map(String).join(' '));
263
+ // Set password in process env so main.ts can read it
264
+ process.env['JINN_PASSWORD'] = password;
265
+ const { main } = await import('../../main.js');
266
+ const payload = await main();
267
+ ctx.writer.write(JSON.stringify(payload) + '\n');
268
+ }
269
+ const command = {
270
+ name: 'quickstart',
271
+ summary: 'Zero-to-running in one command: init, fund, bootstrap, run',
272
+ helpText: `Usage: jinn quickstart [--no-daemon] [--config <path>]
273
+
274
+ One command to go from nothing to a running Jinn daemon:
275
+ 1. Generate a keystore password (or use JINN_PASSWORD)
276
+ 2. Create the master wallet
277
+ 3. Fund via faucet (automatic on testnet if CDP SDK available)
278
+ 4. Bootstrap the fleet state machine
279
+ 5. Start the daemon
280
+
281
+ Idempotent. Re-running after partial completion resumes from
282
+ wherever it left off.
283
+
284
+ Examples:
285
+ jinn quickstart
286
+ jinn quickstart --no-daemon
287
+ JINN_PASSWORD=mysecret jinn quickstart
288
+ `,
289
+ run,
290
+ };
291
+ export default command;
292
+ //# sourceMappingURL=quickstart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/cli/commands/quickstart.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,34 @@
1
1
  import { parseArgs } from 'node:util';
2
+ import { formatUnits } from 'viem';
2
3
  import { emitEnvelope } from '../../errors/envelope.js';
3
4
  import { emitResult } from '../output.js';
4
5
  import { gatherIntrospectionRaw } from '../introspection-context.js';
5
6
  import { assembleRewardsV1 } from '../../api/rewards-build.js';
7
+ function formatRewardAmount(wei) {
8
+ try {
9
+ // stOLAS / JINN / OLAS all use 18 decimals.
10
+ return `${formatUnits(BigInt(wei), 18)} stOLAS`;
11
+ }
12
+ catch {
13
+ return `${wei} wei`;
14
+ }
15
+ }
16
+ function humanRewards(payload) {
17
+ const lines = [];
18
+ if (payload.services.length === 0) {
19
+ lines.push('No services staked yet. Run `jinn bootstrap` to stake one.');
20
+ }
21
+ else {
22
+ const anyPending = payload.services.some((s) => s.pending !== '0');
23
+ lines.push(anyPending ? 'Pending rewards:' : 'Pending rewards: none yet.');
24
+ for (const s of payload.services) {
25
+ lines.push(` Service #${s.index}: ${formatRewardAmount(s.pending)} pending · ${formatRewardAmount(s.claimed)} claimed`);
26
+ }
27
+ }
28
+ lines.push(`Last claim tick: ${payload.lastClaimAt ?? 'never (daemon not yet run the claim loop)'}`);
29
+ lines.push(`Next checkpoint: ${payload.nextCheckpointAt ?? 'not reported by the staking contract'}`);
30
+ return lines.join('\n');
31
+ }
6
32
  async function run(ctx) {
7
33
  let parsed;
8
34
  try {
@@ -27,7 +53,7 @@ async function run(ctx) {
27
53
  }
28
54
  const raw = await gatherIntrospectionRaw({ argv: ctx.argv });
29
55
  const payload = assembleRewardsV1(raw);
30
- emitResult(payload, (v) => JSON.stringify(v, null, 2), {
56
+ emitResult(payload, (v) => humanRewards(v), {
31
57
  json: Boolean(parsed.values.json),
32
58
  human: Boolean(parsed.values.human),
33
59
  writer: ctx.writer,
@@ -1 +1 @@
1
- {"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../../src/cli/commands/rewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,KAAK,UAAU,GAAG,CAAC,GAAmB;IACpC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBACzC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3B;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CACV;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B,EACD,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CACvC,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACrD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACtC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,GAAkB;IAC7B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,gEAAgE;IACzE,QAAQ,EAAE;;;;;;;;;CASX;IACC,GAAG;CACJ,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"rewards.js","sourceRoot":"","sources":["../../../src/cli/commands/rewards.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,12 @@ Examples:
89
89
  jinn run
90
90
  jinn run --human
91
91
  printf '%s\n' secret | jinn run --password-fd 0
92
+
93
+ Failure example (funding gate):
94
+ $ jinn run
95
+ {"schemaVersion":1,"code":"funding_required","exitCode":10,...}
96
+ $ echo $?
97
+ 10
92
98
  `,
93
99
  run,
94
100
  };
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,SAAS,oBAAoB;IAC3B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAQ,EAAE;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,CAAC,GAAG,KAMT,CAAC;IACF,OAAO;QACL,iBAAiB;QACjB,QAAQ,CAAC,CAAC,GAAG,EAAE;QACf,YAAY,CAAC,CAAC,OAAO,EAAE;QACvB,yBAAyB,CAAC,CAAC,OAAO,YAAY;QAC9C,yBAAyB,CAAC,CAAC,YAAY,EAAE;QACzC,SAAS,CAAC,CAAC,WAAW,EAAE;KACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,GAAmB;IACpC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE;gBACP,GAAG,YAAY;aAChB;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CACV;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,IAAI,EAAE,4CAA4C;YAClD,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SAC3B,EACD,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CACvC,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,YAAY,CACV;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,yDAAyD;YAC/D,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kCAAkC,EAAE;SACtF,EACD,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CACvC,CAAC;QACF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACjD,IAAI,CAAE,MAAM,CAAC,MAAM,CAAC,KAAiB,EAAE,CAAC;QACtC,oBAAoB,EAAE,CAAC;IACzB,CAAC;IACD,0EAA0E;IAC1E,kDAAkD;IAClD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE;QACnC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACtC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,GAAkB;IAC7B,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,6DAA6D;IACtE,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBX;IACC,GAAG;CACJ,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -11,6 +11,7 @@ async function run(ctx) {
11
11
  options: {
12
12
  json: { type: 'boolean', default: false },
13
13
  human: { type: 'boolean', default: false },
14
+ config: { type: 'string' },
14
15
  },
15
16
  allowPositionals: false,
16
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,KAAK,UAAU,GAAG,CAAC,GAAmB;IACpC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBACzC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;aAC3C;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CACV;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,UAAU,EAAE,WAAW;YACvB,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B,EACD,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CACvC,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GACd,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,YAAY,CACV;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,kCAAkC;YAC3C,IAAI,EAAE,kGAAkG;YACxG,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE;SACxD,EACD,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CACvC,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IAED,UAAU,CACR;QACE,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,GAAG;QACH,MAAM;KACP,EACD,CAAC,CAAC,EAAE,EAAE;QACJ,MAAM,KAAK,GAAG,CAAqC,CAAC;QACpD,OAAO,KAAK,CAAC,MAAM;YACjB,CAAC,CAAC,8BAA8B,KAAK,CAAC,GAAG,GAAG;YAC5C,CAAC,CAAC,cAAc,KAAK,CAAC,GAAG,oBAAoB,CAAC;IAClD,CAAC,EACD;QACE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACtC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAkB;IAC7B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,sDAAsD;IAC/D,QAAQ,EAAE;;;;;;;;;CASX;IACC,GAAG;CACJ,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/cli/commands/stop.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
1
3
  import { parseArgs } from 'node:util';
2
4
  import { getAddress } from 'viem';
3
5
  import { COMMON_FLAGS } from '../command.js';
@@ -7,6 +9,7 @@ import { ensureConfirmed, emitDryRun } from '../action.js';
7
9
  import { gatherIntrospectionRaw } from '../introspection-context.js';
8
10
  import { createCliExecutionContext } from '../execution-context.js';
9
11
  import { isRecoverableTransactionError } from '../../tx-retry.js';
12
+ import { PredictionV0IntentSchema } from '../../types/prediction.js';
10
13
  function intentCacheKey(safe, intentId) {
11
14
  return `cli_intent:${getAddress(safe)}:${intentId}`;
12
15
  }
@@ -19,6 +22,7 @@ async function run(ctx) {
19
22
  ...COMMON_FLAGS,
20
23
  id: { type: 'string' },
21
24
  description: { type: 'string' },
25
+ 'spec-file': { type: 'string' },
22
26
  'dry-run': { type: 'boolean', default: false },
23
27
  yes: { type: 'boolean', default: false },
24
28
  },
@@ -56,14 +60,76 @@ async function run(ctx) {
56
60
  }
57
61
  const dryRun = parsed.values['dry-run'];
58
62
  const yes = parsed.values.yes;
63
+ // ── spec-file loading ───────────────────────────────────────────────────────
64
+ const specFilePath = parsed.values['spec-file'];
65
+ let specOverlay;
66
+ if (specFilePath) {
67
+ let raw;
68
+ try {
69
+ raw = JSON.parse(readFileSync(resolve(specFilePath), 'utf8'));
70
+ }
71
+ catch (err) {
72
+ emitEnvelope({
73
+ code: 'invalid_invocation',
74
+ message: `Could not read spec file: ${err instanceof Error ? err.message : String(err)}`,
75
+ exampleCli: 'jinn submit-intent --id my-1 --description "..." --spec-file fixtures/prediction-v0-intent.example.json --dry-run',
76
+ details: { field: 'spec-file' },
77
+ }, { writer: ctx.writer, exit: ctx.exit });
78
+ return;
79
+ }
80
+ const kind = raw['spec']?.kind;
81
+ if (kind === 'prediction.v0') {
82
+ const stub = { id: id, description: description, ...raw };
83
+ // If the fixture used zero as a now-relative template, fill in current time
84
+ if (stub.window?.startTs === 0) {
85
+ const now = Date.now();
86
+ stub.window.startTs = now;
87
+ stub.window.endTs = now + 3_600_000;
88
+ stub.spec.question.resolveTs = now + 3_600_000 + 900_000;
89
+ }
90
+ const parsedIntent = PredictionV0IntentSchema.safeParse(stub);
91
+ if (!parsedIntent.success) {
92
+ emitEnvelope({
93
+ code: 'invalid_invocation',
94
+ message: `Invalid prediction.v0 intent: ${parsedIntent.error.message}`,
95
+ exampleCli: 'jinn submit-intent --id my-1 --description "..." --spec-file fixtures/prediction-v0-intent.example.json --dry-run',
96
+ details: { field: 'spec-file' },
97
+ }, { writer: ctx.writer, exit: ctx.exit });
98
+ return;
99
+ }
100
+ specOverlay = {
101
+ window: parsedIntent.data.window,
102
+ spec: parsedIntent.data.spec,
103
+ eligibility: parsedIntent.data.eligibility,
104
+ };
105
+ }
106
+ else {
107
+ // Future kinds: pass through without validation
108
+ specOverlay = {
109
+ window: raw['window'],
110
+ spec: raw['spec'],
111
+ eligibility: raw['eligibility'],
112
+ };
113
+ }
114
+ }
59
115
  if (dryRun) {
60
116
  const raw = await gatherIntrospectionRaw({ argv: ctx.argv });
61
117
  const service = raw.fleet?.services.find(s => s.step === 'complete');
62
- const creatorMultisig = service?.safe_address ?? '0x';
118
+ if (!service?.safe_address) {
119
+ emitEnvelope({
120
+ code: 'bootstrap_incomplete',
121
+ message: 'No bootstrapped service available to submit intents from. Run `jinn bootstrap` first.',
122
+ hint: 'Run `jinn fund-requirements` to see outstanding funding, then `jinn bootstrap`.',
123
+ exampleCli: 'jinn bootstrap --human',
124
+ details: { field: 'fleet.services', expected: 'at least one service at step=complete' },
125
+ }, { writer: ctx.writer, exit: ctx.exit });
126
+ return;
127
+ }
128
+ const creatorMultisig = getAddress(service.safe_address);
63
129
  emitDryRun(ctx, {
64
130
  verb: 'submit-intent',
65
131
  description: `Would post intent '${id}' from ${creatorMultisig}`,
66
- plan: [{ id, description, creatorMultisig, asset: 'native', txCount: 1 }],
132
+ plan: [{ id, description, creatorMultisig, asset: 'native', txCount: 1, ...(specOverlay ? { spec: specOverlay.spec } : {}) }],
67
133
  });
68
134
  return;
69
135
  }
@@ -103,13 +169,15 @@ async function run(ctx) {
103
169
  const attemptNumber = 1;
104
170
  const attemptId = `${id}/${attemptNumber}`;
105
171
  try {
106
- const requestId = await adapter.postDesiredState({
172
+ const desiredState = {
107
173
  id,
108
174
  description,
109
175
  type: 'restoration',
110
176
  attemptId,
111
177
  attemptNumber,
112
- });
178
+ ...(specOverlay ?? {}),
179
+ };
180
+ const requestId = await adapter.postDesiredState(desiredState);
113
181
  jinnStore.recordOwnActivity(requestId, 'created');
114
182
  jinnStore.setConfigValue(cacheKey, requestId);
115
183
  emitResult({
@@ -154,14 +222,20 @@ async function run(ctx) {
154
222
  const command = {
155
223
  name: 'submit-intent',
156
224
  summary: 'Post a desired state (restoration job) to the protocol',
157
- helpText: `Usage: jinn submit-intent --id <id> --description <text> [--dry-run] [--yes] [--human]
225
+ helpText: `Usage: jinn submit-intent --id <id> --description <text> [--spec-file <path>] [--dry-run] [--yes] [--human]
158
226
 
159
227
  Idempotent: re-posting the same (--id) from the same creator Safe returns the
160
228
  cached request id (local SQLite) without sending a new transaction.
161
229
 
230
+ Options:
231
+ --spec-file <path> Path to a JSON file containing typed intent fields (window, spec, eligibility).
232
+ Supports prediction.v0 intents with full Zod validation.
233
+ If window.startTs is 0, timestamps are filled relative to now.
234
+
162
235
  Examples:
163
236
  jinn submit-intent --id health-check --description "The service is running" --dry-run
164
237
  jinn submit-intent --id health-check --description "The service is running" --yes
238
+ jinn submit-intent --id eth-pred-1 --description "ETH > 3500" --spec-file fixtures/prediction-v0-intent.example.json --dry-run
165
239
  `,
166
240
  run,
167
241
  };