@jinn-network/client 0.1.2-canary.d6e72dfd → 0.1.2

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 (218) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +3 -0
  3. package/dist/adapters/adapter.d.ts +7 -0
  4. package/dist/adapters/mech/adapter.d.ts +4 -0
  5. package/dist/adapters/mech/adapter.js +140 -19
  6. package/dist/adapters/mech/adapter.js.map +1 -1
  7. package/dist/adapters/mech/contracts.d.ts +17 -1
  8. package/dist/adapters/mech/contracts.js +55 -1
  9. package/dist/adapters/mech/contracts.js.map +1 -1
  10. package/dist/adapters/mech/ipfs.d.ts +30 -5
  11. package/dist/adapters/mech/ipfs.js +162 -17
  12. package/dist/adapters/mech/ipfs.js.map +1 -1
  13. package/dist/adapters/mech/safe.js +8 -6
  14. package/dist/adapters/mech/safe.js.map +1 -1
  15. package/dist/adapters/mech/types.d.ts +2 -0
  16. package/dist/adapters/mech/types.js.map +1 -1
  17. package/dist/api/balance-build.js +3 -3
  18. package/dist/api/balance-build.js.map +1 -1
  19. package/dist/api/fleet-build.js +35 -40
  20. package/dist/api/fleet-build.js.map +1 -1
  21. package/dist/api/gather-status.d.ts +5 -0
  22. package/dist/api/gather-status.js +158 -7
  23. package/dist/api/gather-status.js.map +1 -1
  24. package/dist/api/history-build.d.ts +5 -1
  25. package/dist/api/history-build.js +51 -26
  26. package/dist/api/history-build.js.map +1 -1
  27. package/dist/api/portfolio-v0-build.d.ts +3 -1
  28. package/dist/api/portfolio-v0-build.js +12 -10
  29. package/dist/api/portfolio-v0-build.js.map +1 -1
  30. package/dist/api/rewards-build.js +29 -13
  31. package/dist/api/rewards-build.js.map +1 -1
  32. package/dist/api/status-build.d.ts +32 -6
  33. package/dist/api/status-build.js +2 -1
  34. package/dist/api/status-build.js.map +1 -1
  35. package/dist/api/status-rollup-build.d.ts +2 -0
  36. package/dist/api/status-rollup-build.js +30 -3
  37. package/dist/api/status-rollup-build.js.map +1 -1
  38. package/dist/build-meta.json +1 -1
  39. package/dist/cli/commands/auth.js +27 -5
  40. package/dist/cli/commands/auth.js.map +1 -1
  41. package/dist/cli/commands/balance.js +8 -1
  42. package/dist/cli/commands/balance.js.map +1 -1
  43. package/dist/cli/commands/bootstrap.js +22 -0
  44. package/dist/cli/commands/bootstrap.js.map +1 -1
  45. package/dist/cli/commands/doctor.js +33 -3
  46. package/dist/cli/commands/doctor.js.map +1 -1
  47. package/dist/cli/commands/fleet.js +10 -1
  48. package/dist/cli/commands/fleet.js.map +1 -1
  49. package/dist/cli/commands/history.js +25 -6
  50. package/dist/cli/commands/history.js.map +1 -1
  51. package/dist/cli/commands/logs.js +35 -11
  52. package/dist/cli/commands/logs.js.map +1 -1
  53. package/dist/cli/commands/quickstart.js +39 -1
  54. package/dist/cli/commands/quickstart.js.map +1 -1
  55. package/dist/cli/commands/run.js +38 -0
  56. package/dist/cli/commands/run.js.map +1 -1
  57. package/dist/cli/commands/status.js +11 -1
  58. package/dist/cli/commands/status.js.map +1 -1
  59. package/dist/cli/commands/submit-intent.js +62 -99
  60. package/dist/cli/commands/submit-intent.js.map +1 -1
  61. package/dist/cli/intent-registry-access.d.ts +3 -5
  62. package/dist/cli/intent-registry-access.js +12 -34
  63. package/dist/cli/intent-registry-access.js.map +1 -1
  64. package/dist/cli/introspection-context.js +11 -8
  65. package/dist/cli/introspection-context.js.map +1 -1
  66. package/dist/config.d.ts +28 -1
  67. package/dist/config.js +29 -0
  68. package/dist/config.js.map +1 -1
  69. package/dist/daemon/balance-topup-loop.js +32 -4
  70. package/dist/daemon/balance-topup-loop.js.map +1 -1
  71. package/dist/daemon/creator.d.ts +6 -9
  72. package/dist/daemon/creator.js +45 -51
  73. package/dist/daemon/creator.js.map +1 -1
  74. package/dist/daemon/daemon.d.ts +9 -20
  75. package/dist/daemon/daemon.js +34 -27
  76. package/dist/daemon/daemon.js.map +1 -1
  77. package/dist/daemon/delivery-watcher.d.ts +3 -1
  78. package/dist/daemon/delivery-watcher.js +19 -1
  79. package/dist/daemon/delivery-watcher.js.map +1 -1
  80. package/dist/daemon/reward-claim-loop.js +38 -1
  81. package/dist/daemon/reward-claim-loop.js.map +1 -1
  82. package/dist/dashboard/index.html +71 -496
  83. package/dist/discovery/registry.d.ts +54 -0
  84. package/dist/discovery/registry.js +73 -0
  85. package/dist/discovery/registry.js.map +1 -1
  86. package/dist/earning/bootstrap.js +8 -38
  87. package/dist/earning/bootstrap.js.map +1 -1
  88. package/dist/earning/stolas-claim.d.ts +6 -0
  89. package/dist/earning/stolas-claim.js +7 -0
  90. package/dist/earning/stolas-claim.js.map +1 -1
  91. package/dist/intents/kinds/constants.d.ts +5 -0
  92. package/dist/intents/kinds/constants.js +6 -0
  93. package/dist/intents/kinds/constants.js.map +1 -0
  94. package/dist/intents/kinds/index.d.ts +28 -0
  95. package/dist/intents/kinds/index.js +50 -0
  96. package/dist/intents/kinds/index.js.map +1 -0
  97. package/dist/intents/kinds/portfolio-v0.d.ts +2 -0
  98. package/dist/intents/kinds/portfolio-v0.js +13 -0
  99. package/dist/intents/kinds/portfolio-v0.js.map +1 -0
  100. package/dist/intents/kinds/prediction-apy-v0.d.ts +3 -0
  101. package/dist/intents/kinds/prediction-apy-v0.js +21 -0
  102. package/dist/intents/kinds/prediction-apy-v0.js.map +1 -0
  103. package/dist/intents/kinds/prediction-v0.d.ts +3 -0
  104. package/dist/intents/kinds/prediction-v0.js +32 -0
  105. package/dist/intents/kinds/prediction-v0.js.map +1 -0
  106. package/dist/intents/kinds/spec-kind.d.ts +38 -0
  107. package/dist/intents/kinds/spec-kind.js +6 -0
  108. package/dist/intents/kinds/spec-kind.js.map +1 -0
  109. package/dist/intents/posting-service.d.ts +26 -0
  110. package/dist/intents/posting-service.js +218 -0
  111. package/dist/intents/posting-service.js.map +1 -0
  112. package/dist/intents/prediction-apy-v0-auto.js +1 -1
  113. package/dist/intents/prediction-apy-v0-auto.js.map +1 -1
  114. package/dist/intents/prediction-v0-template.d.ts +8 -3
  115. package/dist/intents/prediction-v0-template.js +21 -1
  116. package/dist/intents/prediction-v0-template.js.map +1 -1
  117. package/dist/intents/sources.d.ts +39 -0
  118. package/dist/intents/sources.js +42 -0
  119. package/dist/intents/sources.js.map +1 -0
  120. package/dist/main.js +89 -65
  121. package/dist/main.js.map +1 -1
  122. package/dist/mcp/server.js +8 -4
  123. package/dist/mcp/server.js.map +1 -1
  124. package/dist/observability/emit-event.d.ts +12 -0
  125. package/dist/observability/emit-event.js +27 -0
  126. package/dist/observability/emit-event.js.map +1 -0
  127. package/dist/preflight/api-port.d.ts +13 -0
  128. package/dist/preflight/api-port.js +32 -0
  129. package/dist/preflight/api-port.js.map +1 -0
  130. package/dist/preflight/rpc-network.d.ts +44 -0
  131. package/dist/preflight/rpc-network.js +121 -0
  132. package/dist/preflight/rpc-network.js.map +1 -0
  133. package/dist/restorer/engine/engine.d.ts +10 -0
  134. package/dist/restorer/engine/engine.js +60 -44
  135. package/dist/restorer/engine/engine.js.map +1 -1
  136. package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +7 -4
  137. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +12 -1
  138. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -1
  139. package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +2 -1
  140. package/dist/restorer/impls/claude-mcp-prediction/index.js +9 -0
  141. package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -1
  142. package/dist/restorer/impls/claude-mcp-prediction/types.d.ts +2 -0
  143. package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +34 -0
  144. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js +233 -0
  145. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +1 -0
  146. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.d.ts +18 -0
  147. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js +136 -0
  148. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -0
  149. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.d.ts +7 -0
  150. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js +46 -0
  151. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js.map +1 -0
  152. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +27 -0
  153. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +128 -0
  154. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -0
  155. package/dist/restorer/impls/claude-mcp-prediction-apy/types.d.ts +64 -0
  156. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js +6 -0
  157. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js.map +1 -0
  158. package/dist/restorer/impls/evaluation-context.d.ts +16 -0
  159. package/dist/restorer/impls/evaluation-context.js +18 -0
  160. package/dist/restorer/impls/evaluation-context.js.map +1 -0
  161. package/dist/restorer/impls/index.d.ts +46 -0
  162. package/dist/restorer/impls/index.js +88 -0
  163. package/dist/restorer/impls/index.js.map +1 -0
  164. package/dist/restorer/impls/legacy-claude/index.d.ts +8 -1
  165. package/dist/restorer/impls/legacy-claude/index.js +79 -10
  166. package/dist/restorer/impls/legacy-claude/index.js.map +1 -1
  167. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +2 -1
  168. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +9 -0
  169. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -1
  170. package/dist/restorer/impls/portfolio-v0-evaluator/types.d.ts +2 -0
  171. package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +1 -0
  172. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +12 -3
  173. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -1
  174. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +4 -0
  175. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +4 -0
  176. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -1
  177. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +6 -3
  178. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +55 -33
  179. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
  180. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +7 -0
  181. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +29 -0
  182. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -0
  183. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.d.ts +1 -1
  184. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +2 -0
  185. package/dist/restorer/impls/prediction-v0-baseline/index.js +6 -0
  186. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -1
  187. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +6 -0
  188. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js +19 -1
  189. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -1
  190. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +6 -3
  191. package/dist/restorer/impls/prediction-v0-evaluator/index.js +30 -4
  192. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -1
  193. package/dist/restorer/impls/prediction-v0-evaluator/types.d.ts +1 -1
  194. package/dist/restorer/types.d.ts +17 -0
  195. package/dist/restorer/types.js +22 -1
  196. package/dist/restorer/types.js.map +1 -1
  197. package/dist/rpc-error-context.d.ts +10 -0
  198. package/dist/rpc-error-context.js +26 -0
  199. package/dist/rpc-error-context.js.map +1 -0
  200. package/dist/store/store.d.ts +98 -0
  201. package/dist/store/store.js +331 -4
  202. package/dist/store/store.js.map +1 -1
  203. package/dist/trajectory/schema.d.ts +510 -0
  204. package/dist/trajectory/schema.js +74 -0
  205. package/dist/trajectory/schema.js.map +1 -0
  206. package/dist/types/prediction-apy.d.ts +21 -10
  207. package/dist/types/prediction-apy.js +17 -5
  208. package/dist/types/prediction-apy.js.map +1 -1
  209. package/dist/types/prediction.d.ts +11 -10
  210. package/dist/types/prediction.js +3 -2
  211. package/dist/types/prediction.js.map +1 -1
  212. package/dist/venues/aave-v3/client.d.ts +6 -2
  213. package/dist/venues/aave-v3/client.js +14 -5
  214. package/dist/venues/aave-v3/client.js.map +1 -1
  215. package/package.json +4 -3
  216. package/dist/daemon/restorer.d.ts +0 -19
  217. package/dist/daemon/restorer.js +0 -82
  218. package/dist/daemon/restorer.js.map +0 -1
@@ -7,6 +7,13 @@ import type { DesiredState } from '../types/desired-state.js';
7
7
  import type { OutputArtifact, RationaleEntry, Snapshot } from '../types/portfolio.js';
8
8
  export interface RestorationContext {
9
9
  intent: DesiredState;
10
+ /**
11
+ * IPFS CID of this job's desired state (from Marketplace / observe).
12
+ * Restorers' submission manifests should reference the same CID; evaluators
13
+ * compare it via integrity.intent_ref. May be an empty string when
14
+ * provenance is missing (dev / legacy).
15
+ */
16
+ intentCid?: string;
10
17
  /** Persistent directory for impl-specific state. */
11
18
  implStateDir: string;
12
19
  /** Ephemeral working directory (cleared between attempts). */
@@ -50,6 +57,8 @@ export interface ReadyStatus {
50
57
  url?: string;
51
58
  };
52
59
  }
60
+ /** Use when an impl is built in CLI `stub` mode (no live fleet / signer). */
61
+ export declare const REQUIRES_LIVE_DAEMON_READINESS: ReadyStatus;
53
62
  /**
54
63
  * Argument a kind-specific enable flow wants from the operator, surfaced
55
64
  * via `enableMetadata()`. The generic `jinn intents enable <kind>` verb
@@ -110,6 +119,14 @@ export type EnableResult = {
110
119
  message: string;
111
120
  details?: Record<string, unknown>;
112
121
  };
122
+ /**
123
+ * Thrown by a {@link RestorerImpl} when the attempt should be recorded as a
124
+ * deliberate skip (no failure / no claim retry), e.g. Claude CLI unavailable.
125
+ */
126
+ export declare class SkippableError extends Error {
127
+ readonly reason: string;
128
+ constructor(reason: string, message?: string);
129
+ }
113
130
  export interface RestorerImpl {
114
131
  name: string;
115
132
  /** semver */
@@ -3,5 +3,26 @@
3
3
  *
4
4
  * Pure type definitions; no runtime side effects.
5
5
  */
6
- export {};
6
+ /** Use when an impl is built in CLI `stub` mode (no live fleet / signer). */
7
+ export const REQUIRES_LIVE_DAEMON_READINESS = {
8
+ ready: false,
9
+ reason: 'requires live daemon',
10
+ nextStep: {
11
+ description: 'Run the daemon with a configured fleet and wallet',
12
+ cli: 'jinn run',
13
+ },
14
+ };
15
+ // ── Sentinel errors (impl → engine) ───────────────────────────────────────────
16
+ /**
17
+ * Thrown by a {@link RestorerImpl} when the attempt should be recorded as a
18
+ * deliberate skip (no failure / no claim retry), e.g. Claude CLI unavailable.
19
+ */
20
+ export class SkippableError extends Error {
21
+ reason;
22
+ constructor(reason, message) {
23
+ super(message ?? reason);
24
+ this.name = 'SkippableError';
25
+ this.reason = reason;
26
+ }
27
+ }
7
28
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/restorer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/restorer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2DH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAAgB;IACzD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,sBAAsB;IAC9B,QAAQ,EAAE;QACR,WAAW,EAAE,mDAAmD;QAChE,GAAG,EAAE,UAAU;KAChB;CACF,CAAC;AA0DF,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,MAAM,CAAS;IAExB,YAAY,MAAc,EAAE,OAAgB;QAC1C,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ export interface RpcErrorContext {
2
+ operation: string;
3
+ rpcUrl?: string;
4
+ chain?: 'base' | 'base-sepolia' | string;
5
+ address?: string;
6
+ contract?: string;
7
+ fromBlock?: bigint | number | string;
8
+ toBlock?: bigint | number | string;
9
+ }
10
+ export declare function formatRpcError(error: unknown, context: RpcErrorContext): string;
@@ -0,0 +1,26 @@
1
+ import { flattenErrorMessage } from './tx-retry.js';
2
+ import { rpcHostForDisplay } from './preflight/rpc-network.js';
3
+ function blockValue(value) {
4
+ if (value === undefined)
5
+ return undefined;
6
+ return String(value);
7
+ }
8
+ export function formatRpcError(error, context) {
9
+ const parts = [`operation=${context.operation}`];
10
+ if (context.chain)
11
+ parts.push(`chain=${context.chain}`);
12
+ if (context.rpcUrl)
13
+ parts.push(`rpc=${rpcHostForDisplay(context.rpcUrl)}`);
14
+ if (context.contract)
15
+ parts.push(`contract=${context.contract}`);
16
+ if (context.address)
17
+ parts.push(`address=${context.address}`);
18
+ const from = blockValue(context.fromBlock);
19
+ const to = blockValue(context.toBlock);
20
+ if (from !== undefined || to !== undefined) {
21
+ parts.push(`blocks=${from ?? '?'}..${to ?? '?'}`);
22
+ }
23
+ parts.push(`cause=${flattenErrorMessage(error)}`);
24
+ return parts.join(' ');
25
+ }
26
+ //# sourceMappingURL=rpc-error-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-error-context.js","sourceRoot":"","sources":["../src/rpc-error-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAY/D,SAAS,UAAU,CAAC,KAA2C;IAC7D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,OAAwB;IACrE,MAAM,KAAK,GAAG,CAAC,aAAa,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -1,16 +1,95 @@
1
1
  import Database from 'better-sqlite3';
2
+ export interface ActivityEventInput {
3
+ ts: string | null;
4
+ kind: string;
5
+ requestId?: string | null;
6
+ serviceIndex?: number | null;
7
+ txHash?: string | null;
8
+ specKind?: string | null;
9
+ outcome?: string | null;
10
+ detail?: string | null;
11
+ }
12
+ export interface ActivityEventRow {
13
+ id: number;
14
+ ts: string | null;
15
+ kind: string;
16
+ requestId: string | null;
17
+ serviceIndex: number | null;
18
+ txHash: string | null;
19
+ specKind: string | null;
20
+ outcome: string | null;
21
+ detail: string | null;
22
+ }
23
+ export interface RewardClaimInput {
24
+ ts: string;
25
+ serviceIndex: number;
26
+ serviceId?: number | null;
27
+ stakingProxy: string;
28
+ distributor: string;
29
+ txHash: string;
30
+ amountWei: string;
31
+ asset?: string;
32
+ }
33
+ export interface BalanceCacheEntry {
34
+ role: string;
35
+ address: string;
36
+ nativeWei?: string | null;
37
+ bondWei?: string | null;
38
+ assetExtraJson?: string | null;
39
+ fetchedAt: string;
40
+ error?: string | null;
41
+ }
42
+ export type IntentPostingPolicyType = 'once_per_safe' | 'once_per_bucket' | 'interval';
43
+ export interface IntentPostRecord {
44
+ creatorSafeAddress: string;
45
+ sourceKey: string;
46
+ policyType: IntentPostingPolicyType;
47
+ scopeKey: string;
48
+ desiredStateId: string;
49
+ requestId: string;
50
+ firstPostedAt: string;
51
+ lastPostedAt: string;
52
+ postCount: number;
53
+ }
2
54
  export declare class Store {
3
55
  /** Exposed for engine persistence layer — treat as package-internal. */
4
56
  readonly db: Database.Database;
5
57
  readonly path: string;
6
58
  constructor(dbPath: string);
59
+ /** Idempotent: older DBs before idx_reward_claims_tx may lack the unique index. */
60
+ private ensureRewardClaimsTxIndex;
7
61
  recordOwnActivity(requestId: string, role: 'created' | 'claimed' | 'delivered' | 'evaluated'): void;
8
62
  isOwnActivity(requestId: string): boolean;
9
63
  setShutdownState(state: 'clean' | 'running'): void;
10
64
  getShutdownState(): string | null;
65
+ setDaemonStartedAt(value: string): void;
66
+ getDaemonStartedAt(): string | null;
11
67
  /** Generic config row (e.g. last_reward_claim_tick_at). */
12
68
  getConfigValue(key: string): string | null;
13
69
  setConfigValue(key: string, value: string): void;
70
+ getIntentPostRecord(args: {
71
+ creatorSafeAddress: string;
72
+ sourceKey: string;
73
+ policyType: IntentPostingPolicyType;
74
+ scopeKey: string;
75
+ }): IntentPostRecord | null;
76
+ upsertIntentPostRecord(record: IntentPostRecord): void;
77
+ acquireIntentPostLock(args: {
78
+ creatorSafeAddress: string;
79
+ sourceKey: string;
80
+ policyType: IntentPostingPolicyType;
81
+ scopeKey: string;
82
+ ownerToken: string;
83
+ lockedAt: string;
84
+ staleAfterMs: number;
85
+ }): boolean;
86
+ releaseIntentPostLock(args: {
87
+ creatorSafeAddress: string;
88
+ sourceKey: string;
89
+ policyType: IntentPostingPolicyType;
90
+ scopeKey: string;
91
+ ownerToken: string;
92
+ }): void;
14
93
  /** Counts of protocol roles recorded for this node (best-effort activity hints). */
15
94
  getOwnActivityCounts(): Record<string, number>;
16
95
  /** Latest own_activity rows by insertion order (approximate). */
@@ -18,6 +97,25 @@ export declare class Store {
18
97
  requestId: string;
19
98
  role: string;
20
99
  }>;
100
+ recordActivityEvent(event: ActivityEventInput): void;
101
+ getRecentActivityEvents(limit: number, opts?: {
102
+ since?: string;
103
+ cursor?: string;
104
+ }): ActivityEventRow[];
105
+ /** Newer events first, then ascending id for `jinn logs --follow` (oldest in batch printed first in caller). */
106
+ getActivityEventsAfterId(afterId: number, limit: number): ActivityEventRow[];
107
+ getActivityCountsByKind(): Record<string, number>;
108
+ getLastEventAtForService(serviceIndex: number): string | null;
109
+ getActivityCountsForService(serviceIndex: number): Record<string, number>;
110
+ recordRewardClaim(claim: RewardClaimInput): void;
111
+ getClaimedRewardsByService(): Record<number, {
112
+ total: string;
113
+ lastAt: string;
114
+ lastTxHash: string;
115
+ }>;
116
+ upsertBalanceCache(entry: BalanceCacheEntry): void;
117
+ getBalanceCache(): BalanceCacheEntry[];
118
+ private backfillActivityEvents;
21
119
  getLastProcessedBlock(): bigint | null;
22
120
  setLastProcessedBlock(block: bigint): void;
23
121
  insertArtifact(artifact: {
@@ -32,6 +32,69 @@ CREATE INDEX IF NOT EXISTS idx_artifacts_desired_state ON artifacts (desired_sta
32
32
  CREATE INDEX IF NOT EXISTS idx_artifacts_outcome ON artifacts (outcome);
33
33
  CREATE INDEX IF NOT EXISTS idx_artifacts_remote ON artifacts (remote);
34
34
 
35
+ CREATE TABLE IF NOT EXISTS activity_events (
36
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
37
+ ts TEXT,
38
+ kind TEXT NOT NULL,
39
+ request_id TEXT,
40
+ service_index INTEGER,
41
+ tx_hash TEXT,
42
+ spec_kind TEXT,
43
+ outcome TEXT,
44
+ detail TEXT
45
+ );
46
+ CREATE INDEX IF NOT EXISTS idx_activity_events_ts ON activity_events (ts DESC);
47
+ CREATE INDEX IF NOT EXISTS idx_activity_events_req ON activity_events (request_id);
48
+ CREATE INDEX IF NOT EXISTS idx_activity_events_service_idx ON activity_events (service_index);
49
+
50
+ CREATE TABLE IF NOT EXISTS reward_claims (
51
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
52
+ ts TEXT NOT NULL,
53
+ service_index INTEGER NOT NULL,
54
+ service_id INTEGER,
55
+ staking_proxy TEXT NOT NULL,
56
+ distributor TEXT NOT NULL,
57
+ tx_hash TEXT NOT NULL,
58
+ amount_wei TEXT NOT NULL,
59
+ asset TEXT NOT NULL DEFAULT 'reward'
60
+ );
61
+ CREATE INDEX IF NOT EXISTS idx_reward_claims_svc ON reward_claims (service_index);
62
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_reward_claims_tx ON reward_claims (tx_hash);
63
+
64
+ CREATE TABLE IF NOT EXISTS balance_cache (
65
+ role TEXT PRIMARY KEY,
66
+ address TEXT NOT NULL,
67
+ native_wei TEXT,
68
+ bond_wei TEXT,
69
+ asset_extra_json TEXT,
70
+ fetched_at TEXT NOT NULL,
71
+ error TEXT
72
+ );
73
+
74
+ CREATE TABLE IF NOT EXISTS intent_posts (
75
+ creator_safe_address TEXT NOT NULL,
76
+ source_key TEXT NOT NULL,
77
+ policy_type TEXT NOT NULL CHECK (policy_type IN ('once_per_safe', 'once_per_bucket', 'interval')),
78
+ scope_key TEXT NOT NULL DEFAULT '',
79
+ desired_state_id TEXT NOT NULL,
80
+ request_id TEXT NOT NULL,
81
+ first_posted_at TEXT NOT NULL,
82
+ last_posted_at TEXT NOT NULL,
83
+ post_count INTEGER NOT NULL DEFAULT 1,
84
+ PRIMARY KEY (creator_safe_address, source_key, policy_type, scope_key)
85
+ );
86
+ CREATE INDEX IF NOT EXISTS idx_intent_posts_desired_state ON intent_posts (desired_state_id);
87
+
88
+ CREATE TABLE IF NOT EXISTS intent_post_locks (
89
+ creator_safe_address TEXT NOT NULL,
90
+ source_key TEXT NOT NULL,
91
+ policy_type TEXT NOT NULL CHECK (policy_type IN ('once_per_safe', 'once_per_bucket', 'interval')),
92
+ scope_key TEXT NOT NULL DEFAULT '',
93
+ owner_token TEXT NOT NULL,
94
+ locked_at TEXT NOT NULL,
95
+ PRIMARY KEY (creator_safe_address, source_key, policy_type, scope_key)
96
+ );
97
+
35
98
  `;
36
99
  export class Store {
37
100
  /** Exposed for engine persistence layer — treat as package-internal. */
@@ -46,9 +109,17 @@ export class Store {
46
109
  this.db.pragma('journal_mode = WAL');
47
110
  this.db.exec(SCHEMA);
48
111
  this.db.exec(RESTORATION_INTENTS_SCHEMA);
112
+ this.ensureRewardClaimsTxIndex();
113
+ this.backfillActivityEvents();
114
+ }
115
+ /** Idempotent: older DBs before idx_reward_claims_tx may lack the unique index. */
116
+ ensureRewardClaimsTxIndex() {
117
+ this.db.exec(`CREATE UNIQUE INDEX IF NOT EXISTS idx_reward_claims_tx ON reward_claims (tx_hash)`);
49
118
  }
50
119
  recordOwnActivity(requestId, role) {
51
120
  this.db.prepare(`INSERT OR REPLACE INTO own_activity (request_id, role) VALUES (?, ?)`).run(requestId, role);
121
+ const ts = new Date().toISOString();
122
+ this.recordActivityEvent({ ts, kind: role, requestId });
52
123
  }
53
124
  isOwnActivity(requestId) {
54
125
  const row = this.db.prepare('SELECT 1 FROM own_activity WHERE request_id = ?').get(requestId);
@@ -61,6 +132,13 @@ export class Store {
61
132
  const row = this.db.prepare('SELECT value FROM config WHERE key = ?').get('shutdown_state');
62
133
  return row?.value ?? null;
63
134
  }
135
+ setDaemonStartedAt(value) {
136
+ this.db.prepare('INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)').run('daemon_started_at', value);
137
+ }
138
+ getDaemonStartedAt() {
139
+ const row = this.db.prepare('SELECT value FROM config WHERE key = ?').get('daemon_started_at');
140
+ return row?.value ?? null;
141
+ }
64
142
  /** Generic config row (e.g. last_reward_claim_tick_at). */
65
143
  getConfigValue(key) {
66
144
  const row = this.db.prepare('SELECT value FROM config WHERE key = ?').get(key);
@@ -69,19 +147,268 @@ export class Store {
69
147
  setConfigValue(key, value) {
70
148
  this.db.prepare('INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)').run(key, value);
71
149
  }
150
+ getIntentPostRecord(args) {
151
+ const row = this.db.prepare(`SELECT creator_safe_address, source_key, policy_type, scope_key, desired_state_id, request_id,
152
+ first_posted_at, last_posted_at, post_count
153
+ FROM intent_posts
154
+ WHERE creator_safe_address = @creatorSafeAddress
155
+ AND source_key = @sourceKey
156
+ AND policy_type = @policyType
157
+ AND scope_key = @scopeKey`).get(args);
158
+ if (!row)
159
+ return null;
160
+ return {
161
+ creatorSafeAddress: row.creator_safe_address,
162
+ sourceKey: row.source_key,
163
+ policyType: row.policy_type,
164
+ scopeKey: row.scope_key,
165
+ desiredStateId: row.desired_state_id,
166
+ requestId: row.request_id,
167
+ firstPostedAt: row.first_posted_at,
168
+ lastPostedAt: row.last_posted_at,
169
+ postCount: row.post_count,
170
+ };
171
+ }
172
+ upsertIntentPostRecord(record) {
173
+ this.db.prepare(`INSERT INTO intent_posts
174
+ (creator_safe_address, source_key, policy_type, scope_key, desired_state_id, request_id,
175
+ first_posted_at, last_posted_at, post_count)
176
+ VALUES
177
+ (@creatorSafeAddress, @sourceKey, @policyType, @scopeKey, @desiredStateId, @requestId,
178
+ @firstPostedAt, @lastPostedAt, @postCount)
179
+ ON CONFLICT(creator_safe_address, source_key, policy_type, scope_key) DO UPDATE SET
180
+ desired_state_id = excluded.desired_state_id,
181
+ request_id = excluded.request_id,
182
+ first_posted_at = excluded.first_posted_at,
183
+ last_posted_at = excluded.last_posted_at,
184
+ post_count = excluded.post_count`).run(record);
185
+ }
186
+ acquireIntentPostLock(args) {
187
+ const tx = this.db.transaction((params) => {
188
+ const existing = this.db.prepare(`SELECT owner_token, locked_at
189
+ FROM intent_post_locks
190
+ WHERE creator_safe_address = @creatorSafeAddress
191
+ AND source_key = @sourceKey
192
+ AND policy_type = @policyType
193
+ AND scope_key = @scopeKey`).get(params);
194
+ if (!existing) {
195
+ this.db.prepare(`INSERT INTO intent_post_locks
196
+ (creator_safe_address, source_key, policy_type, scope_key, owner_token, locked_at)
197
+ VALUES
198
+ (@creatorSafeAddress, @sourceKey, @policyType, @scopeKey, @ownerToken, @lockedAt)`).run(params);
199
+ return true;
200
+ }
201
+ const lockedAtMs = Date.parse(existing.locked_at);
202
+ const nowMs = Date.parse(params.lockedAt);
203
+ const isStale = Number.isFinite(lockedAtMs)
204
+ && Number.isFinite(nowMs)
205
+ && (nowMs - lockedAtMs) >= params.staleAfterMs;
206
+ if (!isStale) {
207
+ return false;
208
+ }
209
+ this.db.prepare(`UPDATE intent_post_locks
210
+ SET owner_token = @ownerToken, locked_at = @lockedAt
211
+ WHERE creator_safe_address = @creatorSafeAddress
212
+ AND source_key = @sourceKey
213
+ AND policy_type = @policyType
214
+ AND scope_key = @scopeKey`).run(params);
215
+ return true;
216
+ });
217
+ return tx(args);
218
+ }
219
+ releaseIntentPostLock(args) {
220
+ this.db.prepare(`DELETE FROM intent_post_locks
221
+ WHERE creator_safe_address = @creatorSafeAddress
222
+ AND source_key = @sourceKey
223
+ AND policy_type = @policyType
224
+ AND scope_key = @scopeKey
225
+ AND owner_token = @ownerToken`).run(args);
226
+ }
72
227
  /** Counts of protocol roles recorded for this node (best-effort activity hints). */
73
228
  getOwnActivityCounts() {
229
+ const counts = this.getActivityCountsByKind();
230
+ if (Object.keys(counts).length > 0)
231
+ return counts;
74
232
  const rows = this.db.prepare(`SELECT role, COUNT(*) as c FROM own_activity GROUP BY role`).all();
75
233
  const out = {};
76
- for (const r of rows) {
234
+ for (const r of rows)
77
235
  out[r.role] = r.c;
78
- }
79
236
  return out;
80
237
  }
81
238
  /** Latest own_activity rows by insertion order (approximate). */
82
239
  getRecentOwnActivity(limit) {
83
- const rows = this.db.prepare(`SELECT request_id, role FROM own_activity ORDER BY rowid DESC LIMIT ?`).all(Math.max(0, Math.min(limit, 1000)));
84
- return rows.map(r => ({ requestId: r.request_id, role: r.role }));
240
+ const rows = this.getRecentActivityEvents(limit);
241
+ if (rows.length > 0)
242
+ return rows.map((r) => ({ requestId: r.requestId ?? '', role: r.kind }));
243
+ const legacyRows = this.db.prepare(`SELECT request_id, role FROM own_activity ORDER BY rowid DESC LIMIT ?`).all(Math.max(0, Math.min(limit, 1000)));
244
+ return legacyRows.map(r => ({ requestId: r.request_id, role: r.role }));
245
+ }
246
+ recordActivityEvent(event) {
247
+ this.db.prepare(`INSERT INTO activity_events (ts, kind, request_id, service_index, tx_hash, spec_kind, outcome, detail)
248
+ VALUES (@ts, @kind, @requestId, @serviceIndex, @txHash, @specKind, @outcome, @detail)`).run({
249
+ ts: event.ts ?? null,
250
+ kind: event.kind,
251
+ requestId: event.requestId ?? null,
252
+ serviceIndex: event.serviceIndex ?? null,
253
+ txHash: event.txHash ?? null,
254
+ specKind: event.specKind ?? null,
255
+ outcome: event.outcome ?? null,
256
+ detail: event.detail ?? null,
257
+ });
258
+ }
259
+ getRecentActivityEvents(limit, opts = {}) {
260
+ const effectiveLimit = Math.max(0, Math.min(limit, 1000));
261
+ const clauses = [];
262
+ const params = { limit: effectiveLimit };
263
+ if (opts.since) {
264
+ clauses.push('ts IS NOT NULL AND ts >= @since');
265
+ params['since'] = opts.since;
266
+ }
267
+ if (opts.cursor) {
268
+ clauses.push('ts IS NOT NULL AND ts < @cursor');
269
+ params['cursor'] = opts.cursor;
270
+ }
271
+ const where = clauses.length > 0 ? `WHERE ${clauses.join(' AND ')}` : '';
272
+ const rows = this.db.prepare(`SELECT id, ts, kind, request_id, service_index, tx_hash, spec_kind, outcome, detail
273
+ FROM activity_events
274
+ ${where}
275
+ ORDER BY id DESC
276
+ LIMIT @limit`).all(params);
277
+ return rows.map((r) => ({
278
+ id: r.id,
279
+ ts: r.ts,
280
+ kind: r.kind,
281
+ requestId: r.request_id,
282
+ serviceIndex: r.service_index,
283
+ txHash: r.tx_hash,
284
+ specKind: r.spec_kind,
285
+ outcome: r.outcome,
286
+ detail: r.detail,
287
+ }));
288
+ }
289
+ /** Newer events first, then ascending id for `jinn logs --follow` (oldest in batch printed first in caller). */
290
+ getActivityEventsAfterId(afterId, limit) {
291
+ const effectiveLimit = Math.max(0, Math.min(limit, 1000));
292
+ const rows = this.db
293
+ .prepare(`SELECT id, ts, kind, request_id, service_index, tx_hash, spec_kind, outcome, detail
294
+ FROM activity_events
295
+ WHERE id > @afterId
296
+ ORDER BY id ASC
297
+ LIMIT @limit`)
298
+ .all({ afterId, limit: effectiveLimit });
299
+ return rows.map((r) => ({
300
+ id: r.id,
301
+ ts: r.ts,
302
+ kind: r.kind,
303
+ requestId: r.request_id,
304
+ serviceIndex: r.service_index,
305
+ txHash: r.tx_hash,
306
+ specKind: r.spec_kind,
307
+ outcome: r.outcome,
308
+ detail: r.detail,
309
+ }));
310
+ }
311
+ getActivityCountsByKind() {
312
+ const rows = this.db.prepare(`SELECT kind, COUNT(*) as c FROM activity_events GROUP BY kind`).all();
313
+ const out = {};
314
+ for (const r of rows)
315
+ out[r.kind] = r.c;
316
+ return out;
317
+ }
318
+ getLastEventAtForService(serviceIndex) {
319
+ const row = this.db.prepare(`SELECT ts FROM activity_events WHERE service_index = ? AND ts IS NOT NULL ORDER BY id DESC LIMIT 1`).get(serviceIndex);
320
+ return row?.ts ?? null;
321
+ }
322
+ getActivityCountsForService(serviceIndex) {
323
+ const rows = this.db.prepare(`SELECT kind, COUNT(*) as c FROM activity_events WHERE service_index = ? GROUP BY kind`).all(serviceIndex);
324
+ const out = {};
325
+ for (const r of rows)
326
+ out[r.kind] = r.c;
327
+ return out;
328
+ }
329
+ recordRewardClaim(claim) {
330
+ this.db
331
+ .prepare(`INSERT OR IGNORE INTO reward_claims
332
+ (ts, service_index, service_id, staking_proxy, distributor, tx_hash, amount_wei, asset)
333
+ VALUES (@ts, @serviceIndex, @serviceId, @stakingProxy, @distributor, @txHash, @amountWei, @asset)`)
334
+ .run({
335
+ ts: claim.ts,
336
+ serviceIndex: claim.serviceIndex,
337
+ serviceId: claim.serviceId ?? null,
338
+ stakingProxy: claim.stakingProxy,
339
+ distributor: claim.distributor,
340
+ txHash: claim.txHash,
341
+ amountWei: claim.amountWei,
342
+ asset: claim.asset ?? 'reward',
343
+ });
344
+ }
345
+ getClaimedRewardsByService() {
346
+ const rows = this.db.prepare(`SELECT id, service_index, amount_wei, ts, tx_hash FROM reward_claims ORDER BY id ASC`).all();
347
+ const out = {};
348
+ const lastId = {};
349
+ for (const r of rows) {
350
+ const current = out[r.service_index];
351
+ const nextTotal = (current ? BigInt(current.total) : 0n) + BigInt(r.amount_wei);
352
+ const isNewer = !current || r.id > (lastId[r.service_index] ?? 0);
353
+ if (isNewer) {
354
+ lastId[r.service_index] = r.id;
355
+ }
356
+ out[r.service_index] = {
357
+ total: nextTotal.toString(),
358
+ lastAt: isNewer || !current ? r.ts : current.lastAt,
359
+ lastTxHash: isNewer || !current ? r.tx_hash : current.lastTxHash,
360
+ };
361
+ }
362
+ return out;
363
+ }
364
+ upsertBalanceCache(entry) {
365
+ this.db.prepare(`INSERT INTO balance_cache (role, address, native_wei, bond_wei, asset_extra_json, fetched_at, error)
366
+ VALUES (@role, @address, @nativeWei, @bondWei, @assetExtraJson, @fetchedAt, @error)
367
+ ON CONFLICT(role) DO UPDATE SET
368
+ address=excluded.address,
369
+ native_wei=excluded.native_wei,
370
+ bond_wei=excluded.bond_wei,
371
+ asset_extra_json=excluded.asset_extra_json,
372
+ fetched_at=excluded.fetched_at,
373
+ error=excluded.error`).run({
374
+ role: entry.role,
375
+ address: entry.address,
376
+ nativeWei: entry.nativeWei ?? null,
377
+ bondWei: entry.bondWei ?? null,
378
+ assetExtraJson: entry.assetExtraJson ?? null,
379
+ fetchedAt: entry.fetchedAt,
380
+ error: entry.error ?? null,
381
+ });
382
+ }
383
+ getBalanceCache() {
384
+ const rows = this.db.prepare(`SELECT role, address, native_wei, bond_wei, asset_extra_json, fetched_at, error
385
+ FROM balance_cache`).all();
386
+ return rows.map((r) => ({
387
+ role: r.role,
388
+ address: r.address,
389
+ nativeWei: r.native_wei,
390
+ bondWei: r.bond_wei,
391
+ assetExtraJson: r.asset_extra_json,
392
+ fetchedAt: r.fetched_at,
393
+ error: r.error,
394
+ }));
395
+ }
396
+ backfillActivityEvents() {
397
+ const migrationKey = 'activity_events_migrated_v1';
398
+ const insert = this.db.prepare(`INSERT INTO activity_events (ts, kind, request_id)
399
+ SELECT NULL, o.role, o.request_id
400
+ FROM own_activity o
401
+ WHERE NOT EXISTS (
402
+ SELECT 1 FROM activity_events a
403
+ WHERE a.request_id = o.request_id AND a.kind = o.role
404
+ )`);
405
+ const tx = this.db.transaction(() => {
406
+ if (this.getConfigValue(migrationKey) === 'true')
407
+ return;
408
+ insert.run();
409
+ this.setConfigValue(migrationKey, 'true');
410
+ });
411
+ tx();
85
412
  }
86
413
  getLastProcessedBlock() {
87
414
  const row = this.db.prepare('SELECT value FROM config WHERE key = ?').get('last_processed_block');
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}