@jinn-network/client 0.1.2 → 0.1.3-canary.2d6b2676
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/CONTRIBUTING.md +8 -2
- package/README.md +68 -42
- package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +36 -0
- package/deployments/deployment-jinn-mvi-l1-sepolia.json +36 -0
- package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +12 -0
- package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
- package/deployments/deployment-stolas-l2-baseSepolia-fast.json +1 -1
- package/dist/adapters/adapter.d.ts +7 -7
- package/dist/adapters/claim-registry/client.d.ts +9 -0
- package/dist/adapters/claim-registry/client.js +22 -2
- package/dist/adapters/claim-registry/client.js.map +1 -1
- package/dist/adapters/local/adapter.d.ts +4 -4
- package/dist/adapters/local/adapter.js +10 -10
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/mech/adapter.d.ts +8 -6
- package/dist/adapters/mech/adapter.js +159 -95
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +8 -6
- package/dist/adapters/mech/contracts.js +119 -15
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/ipfs.d.ts +66 -12
- package/dist/adapters/mech/ipfs.js +165 -30
- package/dist/adapters/mech/ipfs.js.map +1 -1
- package/dist/adapters/mech/safe-revert.d.ts +39 -0
- package/dist/adapters/mech/safe-revert.js +130 -0
- package/dist/adapters/mech/safe-revert.js.map +1 -0
- package/dist/adapters/mech/safe.js +48 -22
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/types.d.ts +8 -0
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/agent/agent-ws.d.ts +55 -0
- package/dist/agent/agent-ws.js +288 -0
- package/dist/agent/agent-ws.js.map +1 -0
- package/dist/agent/auto-mode-detect.d.ts +6 -0
- package/dist/agent/auto-mode-detect.js +44 -0
- package/dist/agent/auto-mode-detect.js.map +1 -0
- package/dist/agent/operator-claude.d.ts +22 -0
- package/dist/agent/operator-claude.js +130 -0
- package/dist/agent/operator-claude.js.map +1 -0
- package/dist/api/admin-endpoint.d.ts +12 -0
- package/dist/api/admin-endpoint.js +71 -0
- package/dist/api/admin-endpoint.js.map +1 -0
- package/dist/api/bootstrap-endpoint.d.ts +16 -0
- package/dist/api/bootstrap-endpoint.js +78 -0
- package/dist/api/bootstrap-endpoint.js.map +1 -0
- package/dist/api/events-endpoint.d.ts +9 -0
- package/dist/api/events-endpoint.js +46 -0
- package/dist/api/events-endpoint.js.map +1 -0
- package/dist/api/fleet-build.d.ts +1 -1
- package/dist/api/fleet-build.js +17 -8
- package/dist/api/fleet-build.js.map +1 -1
- package/dist/api/gather-status.js +6 -2
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/handshake.d.ts +17 -0
- package/dist/api/handshake.js +28 -0
- package/dist/api/handshake.js.map +1 -0
- package/dist/api/history-build.d.ts +2 -2
- package/dist/api/history-build.js +3 -3
- package/dist/api/history-build.js.map +1 -1
- package/dist/api/peers.js +21 -6
- package/dist/api/peers.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +16 -10
- package/dist/api/portfolio-v0-build.js +36 -31
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/portfolio-v0-doctor.js +1 -1
- package/dist/api/portfolio-v0-doctor.js.map +1 -1
- package/dist/api/rewards-build.js +3 -8
- package/dist/api/rewards-build.js.map +1 -1
- package/dist/api/server.d.ts +55 -1
- package/dist/api/server.js +243 -17
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +34 -0
- package/dist/api/setup-endpoints.js +188 -0
- package/dist/api/setup-endpoints.js.map +1 -0
- package/dist/api/status-build.d.ts +10 -2
- package/dist/api/status-build.js +44 -9
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/status-rollup-build.d.ts +46 -1
- package/dist/api/status-rollup-build.js +168 -5
- package/dist/api/status-rollup-build.js.map +1 -1
- package/dist/api/ui-token.d.ts +5 -0
- package/dist/api/ui-token.js +36 -0
- package/dist/api/ui-token.js.map +1 -0
- package/dist/build-info.d.ts +32 -0
- package/dist/build-info.js +69 -0
- package/dist/build-info.js.map +1 -0
- package/dist/build-info.json +6 -0
- package/dist/build-meta.json +1 -1
- package/dist/cli/command.d.ts +9 -0
- package/dist/cli/commands/balance.d.ts +7 -0
- package/dist/cli/commands/balance.js +38 -32
- package/dist/cli/commands/balance.js.map +1 -1
- package/dist/cli/commands/bootstrap.d.ts +13 -1
- package/dist/cli/commands/bootstrap.js +150 -132
- package/dist/cli/commands/bootstrap.js.map +1 -1
- package/dist/cli/commands/claim-rewards.js +14 -2
- package/dist/cli/commands/claim-rewards.js.map +1 -1
- package/dist/cli/commands/conformance.d.ts +12 -0
- package/dist/cli/commands/conformance.js +140 -0
- package/dist/cli/commands/conformance.js.map +1 -0
- package/dist/cli/commands/create.d.ts +22 -0
- package/dist/cli/commands/create.js +226 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +34 -1
- package/dist/cli/commands/doctor.js +138 -123
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/fleet-scale.d.ts +19 -1
- package/dist/cli/commands/fleet-scale.js +379 -361
- package/dist/cli/commands/fleet-scale.js.map +1 -1
- package/dist/cli/commands/fleet.d.ts +7 -0
- package/dist/cli/commands/fleet.js +39 -33
- package/dist/cli/commands/fleet.js.map +1 -1
- package/dist/cli/commands/fund-requirements.d.ts +14 -1
- package/dist/cli/commands/fund-requirements.js +183 -174
- package/dist/cli/commands/fund-requirements.js.map +1 -1
- package/dist/cli/commands/harnesses.d.ts +18 -0
- package/dist/cli/commands/harnesses.js +208 -0
- package/dist/cli/commands/harnesses.js.map +1 -0
- package/dist/cli/commands/history.d.ts +10 -1
- package/dist/cli/commands/history.js +68 -59
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/init.js +4 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/integrations.d.ts +13 -0
- package/dist/cli/commands/{plugin-install.js → integrations.js} +240 -33
- package/dist/cli/commands/integrations.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +6 -1
- package/dist/cli/commands/logs.js +77 -70
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/migrate-agent-id.d.ts +26 -0
- package/dist/cli/commands/migrate-agent-id.js +165 -0
- package/dist/cli/commands/migrate-agent-id.js.map +1 -0
- package/dist/cli/commands/quickstart.d.ts +51 -1
- package/dist/cli/commands/quickstart.js +514 -296
- package/dist/cli/commands/quickstart.js.map +1 -1
- package/dist/cli/commands/rewards.d.ts +7 -0
- package/dist/cli/commands/rewards.js +46 -40
- package/dist/cli/commands/rewards.js.map +1 -1
- package/dist/cli/commands/run.d.ts +14 -1
- package/dist/cli/commands/run.js +233 -91
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/solver-nets.js +207 -0
- package/dist/cli/commands/solver-nets.js.map +1 -0
- package/dist/cli/commands/solver-plugins.d.ts +9 -0
- package/dist/cli/commands/solver-plugins.js +184 -0
- package/dist/cli/commands/solver-plugins.js.map +1 -0
- package/dist/cli/commands/status.d.ts +10 -0
- package/dist/cli/commands/status.js +97 -34
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/tasks.js +365 -0
- package/dist/cli/commands/tasks.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +3 -0
- package/dist/cli/commands/ui.js +45 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/update.d.ts +5 -0
- package/dist/cli/commands/update.js +110 -105
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/version.js +3 -1
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/withdraw.d.ts +21 -1
- package/dist/cli/commands/withdraw.js +175 -159
- package/dist/cli/commands/withdraw.js.map +1 -1
- package/dist/cli/execution-context.d.ts +1 -1
- package/dist/cli/execution-context.js +4 -3
- package/dist/cli/execution-context.js.map +1 -1
- package/dist/cli/help.js +8 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +24 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/open-browser.d.ts +1 -0
- package/dist/cli/open-browser.js +18 -0
- package/dist/cli/open-browser.js.map +1 -0
- package/dist/cli/password.d.ts +3 -3
- package/dist/cli/password.js +6 -6
- package/dist/cli/password.js.map +1 -1
- package/dist/config.d.ts +1232 -53
- package/dist/config.js +558 -24
- package/dist/config.js.map +1 -1
- package/dist/conformance/checks/artifacts.d.ts +37 -0
- package/dist/conformance/checks/artifacts.js +110 -0
- package/dist/conformance/checks/artifacts.js.map +1 -0
- package/dist/conformance/checks/envelope-schema.d.ts +17 -0
- package/dist/conformance/checks/envelope-schema.js +36 -0
- package/dist/conformance/checks/envelope-schema.js.map +1 -0
- package/dist/conformance/checks/hash-signature.d.ts +26 -0
- package/dist/conformance/checks/hash-signature.js +70 -0
- package/dist/conformance/checks/hash-signature.js.map +1 -0
- package/dist/conformance/checks/payload.d.ts +19 -0
- package/dist/conformance/checks/payload.js +52 -0
- package/dist/conformance/checks/payload.js.map +1 -0
- package/dist/conformance/checks/secret-scrub.d.ts +33 -0
- package/dist/conformance/checks/secret-scrub.js +118 -0
- package/dist/conformance/checks/secret-scrub.js.map +1 -0
- package/dist/conformance/checks/source-runtime.d.ts +43 -0
- package/dist/conformance/checks/source-runtime.js +68 -0
- package/dist/conformance/checks/source-runtime.js.map +1 -0
- package/dist/conformance/checks/source-static.d.ts +61 -0
- package/dist/conformance/checks/source-static.js +311 -0
- package/dist/conformance/checks/source-static.js.map +1 -0
- package/dist/conformance/checks/trajectory-chain.d.ts +18 -0
- package/dist/conformance/checks/trajectory-chain.js +51 -0
- package/dist/conformance/checks/trajectory-chain.js.map +1 -0
- package/dist/conformance/checks/trajectory-profile.d.ts +17 -0
- package/dist/conformance/checks/trajectory-profile.js +51 -0
- package/dist/conformance/checks/trajectory-profile.js.map +1 -0
- package/dist/conformance/checks/trajectory-schema.d.ts +20 -0
- package/dist/conformance/checks/trajectory-schema.js +40 -0
- package/dist/conformance/checks/trajectory-schema.js.map +1 -0
- package/dist/conformance/checks/verdict.d.ts +44 -0
- package/dist/conformance/checks/verdict.js +122 -0
- package/dist/conformance/checks/verdict.js.map +1 -0
- package/dist/conformance/harness.d.ts +32 -0
- package/dist/conformance/harness.js +227 -0
- package/dist/conformance/harness.js.map +1 -0
- package/dist/conformance/types.d.ts +88 -0
- package/dist/conformance/types.js +31 -0
- package/dist/conformance/types.js.map +1 -0
- package/dist/corpus/acquire.d.ts +37 -0
- package/dist/corpus/acquire.js +155 -0
- package/dist/corpus/acquire.js.map +1 -0
- package/dist/corpus/cache.d.ts +14 -0
- package/dist/corpus/cache.js +18 -0
- package/dist/corpus/cache.js.map +1 -0
- package/dist/corpus/fetch.d.ts +9 -0
- package/dist/corpus/fetch.js +24 -0
- package/dist/corpus/fetch.js.map +1 -0
- package/dist/corpus/index.d.ts +16 -0
- package/dist/corpus/index.js +78 -0
- package/dist/corpus/index.js.map +1 -0
- package/dist/corpus/query.d.ts +17 -0
- package/dist/corpus/query.js +108 -0
- package/dist/corpus/query.js.map +1 -0
- package/dist/corpus/route-resolver.d.ts +16 -0
- package/dist/corpus/route-resolver.js +20 -0
- package/dist/corpus/route-resolver.js.map +1 -0
- package/dist/corpus/types.d.ts +108 -0
- package/dist/corpus/types.js +50 -0
- package/dist/corpus/types.js.map +1 -0
- package/dist/daemon/balance-topup-loop.js +2 -1
- package/dist/daemon/balance-topup-loop.js.map +1 -1
- package/dist/daemon/creator.d.ts +5 -5
- package/dist/daemon/creator.js +8 -11
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +84 -29
- package/dist/daemon/daemon.js +181 -63
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.js +34 -4
- package/dist/daemon/delivery-watcher.js.map +1 -1
- package/dist/daemon/jinn-claim-loop-canonical.d.ts +207 -0
- package/dist/daemon/jinn-claim-loop-canonical.js +296 -0
- package/dist/daemon/jinn-claim-loop-canonical.js.map +1 -0
- package/dist/daemon/jinn-claim-loop-mock.d.ts +61 -0
- package/dist/daemon/jinn-claim-loop-mock.js +122 -0
- package/dist/daemon/jinn-claim-loop-mock.js.map +1 -0
- package/dist/daemon/jinn-claim-loop.d.ts +123 -0
- package/dist/daemon/jinn-claim-loop.js +256 -0
- package/dist/daemon/jinn-claim-loop.js.map +1 -0
- package/dist/daemon/reward-claim-loop.d.ts +2 -0
- package/dist/daemon/reward-claim-loop.js +32 -27
- package/dist/daemon/reward-claim-loop.js.map +1 -1
- package/dist/dashboard/assets/index-Bxlk5qpa.js +68 -0
- package/dist/dashboard/assets/index-DQ3u_vP5.css +32 -0
- package/dist/dashboard/index.html +18 -74
- package/dist/earning/agent-wallet-binding.d.ts +133 -0
- package/dist/earning/agent-wallet-binding.js +202 -0
- package/dist/earning/agent-wallet-binding.js.map +1 -0
- package/dist/earning/bootstrap.d.ts +64 -0
- package/dist/earning/bootstrap.js +325 -32
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/contracts.d.ts +323 -0
- package/dist/earning/contracts.js +276 -0
- package/dist/earning/contracts.js.map +1 -1
- package/dist/earning/evidence-simhash.d.ts +1 -1
- package/dist/earning/funding-plan.d.ts +90 -0
- package/dist/earning/funding-plan.js +203 -0
- package/dist/earning/funding-plan.js.map +1 -0
- package/dist/earning/migrate-agent-id.d.ts +130 -0
- package/dist/earning/migrate-agent-id.js +257 -0
- package/dist/earning/migrate-agent-id.js.map +1 -0
- package/dist/earning/orphan-sweep.d.ts +14 -0
- package/dist/earning/orphan-sweep.js +63 -2
- package/dist/earning/orphan-sweep.js.map +1 -1
- package/dist/earning/reconcile.d.ts +2 -0
- package/dist/earning/reconcile.js +30 -0
- package/dist/earning/reconcile.js.map +1 -1
- package/dist/earning/stolas-claim.d.ts +86 -6
- package/dist/earning/stolas-claim.js +123 -9
- package/dist/earning/stolas-claim.js.map +1 -1
- package/dist/earning/store.d.ts +39 -0
- package/dist/earning/store.js +72 -1
- package/dist/earning/store.js.map +1 -1
- package/dist/earning/testnet-setup-migration.d.ts +32 -0
- package/dist/earning/testnet-setup-migration.js +214 -0
- package/dist/earning/testnet-setup-migration.js.map +1 -0
- package/dist/earning/types.d.ts +53 -9
- package/dist/earning/types.js +51 -2
- package/dist/earning/types.js.map +1 -1
- package/dist/earning/viem-clients.d.ts +20 -0
- package/dist/earning/viem-clients.js +32 -1
- package/dist/earning/viem-clients.js.map +1 -1
- package/dist/erc8004/abis.d.ts +381 -0
- package/dist/erc8004/abis.js +238 -0
- package/dist/erc8004/abis.js.map +1 -0
- package/dist/erc8004/addresses.d.ts +40 -0
- package/dist/erc8004/addresses.js +64 -0
- package/dist/erc8004/addresses.js.map +1 -0
- package/dist/erc8004/identity.d.ts +202 -0
- package/dist/erc8004/identity.js +305 -0
- package/dist/erc8004/identity.js.map +1 -0
- package/dist/erc8004/index.d.ts +13 -0
- package/dist/erc8004/index.js +20 -0
- package/dist/erc8004/index.js.map +1 -0
- package/dist/erc8004/reputation.d.ts +349 -0
- package/dist/erc8004/reputation.js +464 -0
- package/dist/erc8004/reputation.js.map +1 -0
- package/dist/erc8004/subgraph.d.ts +46 -0
- package/dist/erc8004/subgraph.js +37 -0
- package/dist/erc8004/subgraph.js.map +1 -0
- package/dist/erc8004/validation.d.ts +145 -0
- package/dist/erc8004/validation.js +219 -0
- package/dist/erc8004/validation.js.map +1 -0
- package/dist/errors/persisted-bootstrap-error.d.ts +4 -0
- package/dist/errors/persisted-bootstrap-error.js +50 -0
- package/dist/errors/persisted-bootstrap-error.js.map +1 -0
- package/dist/events/emitter.d.ts +12 -0
- package/dist/events/emitter.js +23 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/ring-buffer.d.ts +25 -0
- package/dist/events/ring-buffer.js +46 -0
- package/dist/events/ring-buffer.js.map +1 -0
- package/dist/events/types.d.ts +42 -0
- package/dist/events/types.js +28 -0
- package/dist/events/types.js.map +1 -0
- package/dist/harnesses/capability/index.d.ts +82 -0
- package/dist/harnesses/capability/index.js +12 -0
- package/dist/harnesses/capability/index.js.map +1 -0
- package/dist/harnesses/capability/scoped-rpc.d.ts +12 -0
- package/dist/harnesses/capability/scoped-rpc.js +34 -0
- package/dist/harnesses/capability/scoped-rpc.js.map +1 -0
- package/dist/harnesses/capability/scoped-secrets.d.ts +8 -0
- package/dist/harnesses/capability/scoped-secrets.js +10 -0
- package/dist/harnesses/capability/scoped-secrets.js.map +1 -0
- package/dist/harnesses/capability/scoped-signer.d.ts +46 -0
- package/dist/harnesses/capability/scoped-signer.js +73 -0
- package/dist/harnesses/capability/scoped-signer.js.map +1 -0
- package/dist/harnesses/engine/canonical-json.d.ts +1 -0
- package/dist/harnesses/engine/canonical-json.js +66 -0
- package/dist/harnesses/engine/canonical-json.js.map +1 -0
- package/dist/{restorer → harnesses}/engine/claim.d.ts +7 -7
- package/dist/{restorer → harnesses}/engine/claim.js +14 -7
- package/dist/harnesses/engine/claim.js.map +1 -0
- package/dist/{restorer → harnesses}/engine/delivery.d.ts +3 -1
- package/dist/{restorer → harnesses}/engine/delivery.js +8 -8
- package/dist/harnesses/engine/delivery.js.map +1 -0
- package/dist/harnesses/engine/engine.d.ts +341 -0
- package/dist/harnesses/engine/engine.js +1203 -0
- package/dist/harnesses/engine/engine.js.map +1 -0
- package/dist/harnesses/engine/envelope-assembly.d.ts +72 -0
- package/dist/harnesses/engine/envelope-assembly.js +60 -0
- package/dist/harnesses/engine/envelope-assembly.js.map +1 -0
- package/dist/harnesses/engine/packaging.d.ts +87 -0
- package/dist/{restorer → harnesses}/engine/packaging.js +83 -57
- package/dist/harnesses/engine/packaging.js.map +1 -0
- package/dist/harnesses/engine/persistence.d.ts +172 -0
- package/dist/{restorer → harnesses}/engine/persistence.js +78 -71
- package/dist/harnesses/engine/persistence.js.map +1 -0
- package/dist/harnesses/engine/recovery.d.ts +22 -0
- package/dist/{restorer → harnesses}/engine/recovery.js +5 -5
- package/dist/harnesses/engine/recovery.js.map +1 -0
- package/dist/harnesses/engine/registry.d.ts +53 -0
- package/dist/harnesses/engine/registry.js +62 -0
- package/dist/harnesses/engine/registry.js.map +1 -0
- package/dist/{restorer → harnesses}/engine/signing.d.ts +1 -1
- package/dist/{restorer → harnesses}/engine/signing.js +1 -1
- package/dist/harnesses/engine/signing.js.map +1 -0
- package/dist/{restorer → harnesses}/engine/state.d.ts +8 -8
- package/dist/{restorer → harnesses}/engine/state.js +23 -23
- package/dist/harnesses/engine/state.js.map +1 -0
- package/dist/harnesses/engine/validate-manifest.d.ts +23 -0
- package/dist/harnesses/engine/validate-manifest.js +49 -0
- package/dist/harnesses/engine/validate-manifest.js.map +1 -0
- package/dist/harnesses/engine/verification-stub.d.ts +18 -0
- package/dist/harnesses/engine/verification-stub.js +18 -0
- package/dist/harnesses/engine/verification-stub.js.map +1 -0
- package/dist/harnesses/external-impls/index.d.ts +3 -0
- package/dist/harnesses/external-impls/index.js +2 -0
- package/dist/harnesses/external-impls/index.js.map +1 -0
- package/dist/harnesses/external-impls/loader.d.ts +50 -0
- package/dist/harnesses/external-impls/loader.js +139 -0
- package/dist/harnesses/external-impls/loader.js.map +1 -0
- package/dist/harnesses/external-impls/package-hash.d.ts +26 -0
- package/dist/harnesses/external-impls/package-hash.js +102 -0
- package/dist/harnesses/external-impls/package-hash.js.map +1 -0
- package/dist/harnesses/external-impls/types.d.ts +42 -0
- package/dist/harnesses/external-impls/types.js +10 -0
- package/dist/harnesses/external-impls/types.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.d.ts +38 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js +159 -0
- package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/harness.d.ts +22 -0
- package/dist/harnesses/impls/claude-code-learner/harness.js +44 -0
- package/dist/harnesses/impls/claude-code-learner/harness.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.d.ts +19 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.js +146 -0
- package/dist/harnesses/impls/claude-code-learner/harvest.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/index.d.ts +14 -0
- package/dist/harnesses/impls/claude-code-learner/index.js +13 -0
- package/dist/harnesses/impls/claude-code-learner/index.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/plugin-path.d.ts +14 -0
- package/dist/harnesses/impls/claude-code-learner/plugin-path.js +30 -0
- package/dist/harnesses/impls/claude-code-learner/plugin-path.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.d.ts +19 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +111 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.d.ts +22 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js +35 -0
- package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js.map +1 -0
- package/dist/harnesses/impls/claude-code-learner/types.d.ts +102 -0
- package/dist/harnesses/impls/claude-code-learner/types.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/api-wallet.d.ts +1 -1
- package/dist/harnesses/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/index.d.ts +16 -14
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/index.js +62 -61
- package/dist/harnesses/impls/claude-mcp-hyperliquid/index.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +7 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/session-orchestrator.js +38 -0
- package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/index.d.ts +11 -11
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/index.js +26 -16
- package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/mcp-tools.js +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/prompt.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/prompt.js +5 -5
- package/dist/harnesses/impls/claude-mcp-prediction/prompt.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/session-orchestrator.d.ts +9 -2
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +21 -0
- package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/types.d.ts +3 -3
- package/dist/harnesses/impls/claude-mcp-prediction/types.js +6 -0
- package/dist/harnesses/impls/claude-mcp-prediction/types.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.d.ts +36 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/index.js +22 -15
- package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/mcp-tools.js +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.d.ts +7 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/prompt.js +5 -5
- package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +10 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +19 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/types.d.ts +1 -1
- package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js +6 -0
- package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js.map +1 -0
- package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.d.ts +84 -0
- package/dist/{restorer/impls/claude-mcp-prediction/session-orchestrator.js → harnesses/impls/claude-mcp-shared/single-session-orchestrator.js} +85 -16
- package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.js.map +1 -0
- package/dist/harnesses/impls/evaluation-context.d.ts +23 -0
- package/dist/harnesses/impls/evaluation-context.js +25 -0
- package/dist/harnesses/impls/evaluation-context.js.map +1 -0
- package/dist/harnesses/impls/index.d.ts +74 -0
- package/dist/{restorer → harnesses}/impls/index.js +32 -7
- package/dist/harnesses/impls/index.js.map +1 -0
- package/dist/harnesses/impls/legacy-claude/index.d.ts +66 -0
- package/dist/{restorer → harnesses}/impls/legacy-claude/index.js +47 -19
- package/dist/harnesses/impls/legacy-claude/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/canonical-metrics.js +2 -2
- package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/consistency.d.ts +1 -1
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/consistency.js +1 -1
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/eligibility.js +2 -2
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/integrity.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/integrity.js +2 -2
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/spec.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/spec.js +2 -2
- package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +44 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/index.js +217 -88
- package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/portfolio-v0-evaluator/score.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/types.d.ts +1 -1
- package/dist/harnesses/impls/portfolio-v0-evaluator/types.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/index.d.ts +10 -8
- package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/index.js +15 -8
- package/dist/harnesses/impls/prediction-apy-v0-baseline/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-baseline/types.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +6 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js +11 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/index.d.ts +9 -9
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +346 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +16 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js +22 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
- package/dist/harnesses/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-baseline/index.d.ts +33 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/index.js +25 -16
- package/dist/harnesses/impls/prediction-v0-baseline/index.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/strategy.d.ts +2 -2
- package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/strategy.js +2 -2
- package/dist/harnesses/impls/prediction-v0-baseline/strategy.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-baseline/types.d.ts +7 -0
- package/dist/harnesses/impls/prediction-v0-baseline/types.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/canonical-metrics.d.ts +2 -2
- package/dist/harnesses/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/eligibility.d.ts +1 -1
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.d.ts +15 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/integrity.js +12 -12
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/spec.d.ts +2 -2
- package/dist/harnesses/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
- package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/index.d.ts +10 -10
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js +342 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/score.js.map +1 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/types.js +2 -0
- package/dist/harnesses/impls/prediction-v0-evaluator/types.js.map +1 -0
- package/dist/harnesses/manifest/index.d.ts +3 -0
- package/dist/harnesses/manifest/index.js +3 -0
- package/dist/harnesses/manifest/index.js.map +1 -0
- package/dist/harnesses/manifest/load.d.ts +7 -0
- package/dist/harnesses/manifest/load.js +49 -0
- package/dist/harnesses/manifest/load.js.map +1 -0
- package/dist/harnesses/manifest/types.d.ts +75 -0
- package/dist/harnesses/manifest/types.js +8 -0
- package/dist/harnesses/manifest/types.js.map +1 -0
- package/dist/harnesses/manifest/verify.d.ts +15 -0
- package/dist/harnesses/manifest/verify.js +53 -0
- package/dist/harnesses/manifest/verify.js.map +1 -0
- package/dist/harnesses/types.d.ts +263 -0
- package/dist/{restorer → harnesses}/types.js +3 -3
- package/dist/harnesses/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/main.d.ts +5 -2
- package/dist/main.js +793 -96
- package/dist/main.js.map +1 -1
- package/dist/mcp/acquire-artifact.d.ts +39 -0
- package/dist/mcp/acquire-artifact.js +163 -0
- package/dist/mcp/acquire-artifact.js.map +1 -0
- package/dist/mcp/operator-server.d.ts +21 -4
- package/dist/mcp/operator-server.js +505 -30
- package/dist/mcp/operator-server.js.map +1 -1
- package/dist/mcp/search-artifacts.d.ts +31 -0
- package/dist/mcp/search-artifacts.js +40 -0
- package/dist/mcp/search-artifacts.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -4
- package/dist/mcp/server.js +110 -64
- package/dist/mcp/server.js.map +1 -1
- package/dist/observability/emit-event.d.ts +2 -2
- package/dist/observability/emit-event.js +2 -2
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/operator-errors.js +4 -5
- package/dist/operator-errors.js.map +1 -1
- package/dist/plugins/digest.d.ts +1 -0
- package/dist/plugins/digest.js +28 -0
- package/dist/plugins/digest.js.map +1 -0
- package/dist/plugins/index.d.ts +6 -0
- package/dist/plugins/index.js +6 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/manifest.d.ts +7 -0
- package/dist/plugins/manifest.js +22 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/registry.d.ts +9 -0
- package/dist/plugins/registry.js +24 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/resolvers.d.ts +2 -0
- package/dist/plugins/resolvers.js +87 -0
- package/dist/plugins/resolvers.js.map +1 -0
- package/dist/plugins/types.d.ts +39 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/validator.d.ts +3 -0
- package/dist/plugins/validator.js +44 -0
- package/dist/plugins/validator.js.map +1 -0
- package/dist/preflight/claude-auth.d.ts +11 -11
- package/dist/preflight/claude-auth.js +18 -32
- package/dist/preflight/claude-auth.js.map +1 -1
- package/dist/runner/claude.d.ts +3 -3
- package/dist/runner/claude.js +62 -26
- package/dist/runner/claude.js.map +1 -1
- package/dist/runner/runner.d.ts +29 -2
- package/dist/runner/simple.d.ts +2 -2
- package/dist/runner/simple.js +2 -2
- package/dist/runner/simple.js.map +1 -1
- package/dist/scripts/fix-node-pty.mjs +62 -0
- package/dist/setup-mode.d.ts +34 -0
- package/dist/setup-mode.js +49 -0
- package/dist/setup-mode.js.map +1 -0
- package/dist/solver-nets/registry.d.ts +33 -0
- package/dist/solver-nets/registry.js +66 -0
- package/dist/solver-nets/registry.js.map +1 -0
- package/dist/solver-types/constants.js.map +1 -0
- package/dist/solver-types/index.d.ts +38 -0
- package/dist/solver-types/index.js +57 -0
- package/dist/solver-types/index.js.map +1 -0
- package/dist/solver-types/learner-loop-test.d.ts +2 -0
- package/dist/solver-types/learner-loop-test.js +39 -0
- package/dist/solver-types/learner-loop-test.js.map +1 -0
- package/dist/solver-types/portfolio-v0.d.ts +2 -0
- package/dist/solver-types/portfolio-v0.js +13 -0
- package/dist/solver-types/portfolio-v0.js.map +1 -0
- package/dist/solver-types/prediction-apy-v0-auto.d.ts +21 -0
- package/dist/solver-types/prediction-apy-v0-auto.js +80 -0
- package/dist/solver-types/prediction-apy-v0-auto.js.map +1 -0
- package/dist/{intents → solver-types}/prediction-apy-v0-template.d.ts +2 -2
- package/dist/{intents → solver-types}/prediction-apy-v0-template.js +2 -2
- package/dist/solver-types/prediction-apy-v0-template.js.map +1 -0
- package/dist/solver-types/prediction-apy-v0.d.ts +3 -0
- package/dist/solver-types/prediction-apy-v0.js +25 -0
- package/dist/solver-types/prediction-apy-v0.js.map +1 -0
- package/dist/{intents → solver-types}/prediction-v0-auto.d.ts +17 -7
- package/dist/{intents → solver-types}/prediction-v0-auto.js +41 -8
- package/dist/solver-types/prediction-v0-auto.js.map +1 -0
- package/dist/{intents → solver-types}/prediction-v0-template.d.ts +9 -9
- package/dist/{intents → solver-types}/prediction-v0-template.js +10 -10
- package/dist/solver-types/prediction-v0-template.js.map +1 -0
- package/dist/solver-types/prediction-v0.d.ts +3 -0
- package/dist/{intents/kinds → solver-types}/prediction-v0.js +11 -6
- package/dist/solver-types/prediction-v0.js.map +1 -0
- package/dist/solver-types/solver-type.d.ts +55 -0
- package/dist/solver-types/solver-type.js +6 -0
- package/dist/solver-types/solver-type.js.map +1 -0
- package/dist/store/store.d.ts +97 -21
- package/dist/store/store.js +228 -45
- package/dist/store/store.js.map +1 -1
- package/dist/tasks/posting-service.d.ts +22 -0
- package/dist/tasks/posting-service.js +143 -0
- package/dist/tasks/posting-service.js.map +1 -0
- package/dist/tasks/signing.d.ts +4 -0
- package/dist/tasks/signing.js +18 -0
- package/dist/tasks/signing.js.map +1 -0
- package/dist/tasks/sources.d.ts +46 -0
- package/dist/tasks/sources.js +42 -0
- package/dist/tasks/sources.js.map +1 -0
- package/dist/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
- package/dist/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
- package/dist/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
- package/dist/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/dist/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
- package/dist/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
- package/dist/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/dist/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/dist/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
- package/dist/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
- package/dist/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
- package/dist/templates/harnesses/evaluator/README.md.tmpl +36 -0
- package/dist/templates/harnesses/evaluator/gitignore.tmpl +3 -0
- package/dist/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/harnesses/evaluator/package.json.tmpl +26 -0
- package/dist/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
- package/dist/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
- package/dist/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
- package/dist/templates/harnesses/forecaster/README.md.tmpl +25 -0
- package/dist/templates/harnesses/forecaster/gitignore.tmpl +5 -0
- package/dist/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/harnesses/forecaster/package.json.tmpl +26 -0
- package/dist/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
- package/dist/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
- package/dist/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
- package/dist/trajectory/collector.d.ts +49 -0
- package/dist/trajectory/collector.js +86 -0
- package/dist/trajectory/collector.js.map +1 -0
- package/dist/trajectory/emit.d.ts +27 -0
- package/dist/trajectory/emit.js +40 -0
- package/dist/trajectory/emit.js.map +1 -0
- package/dist/trajectory/hash-chain.d.ts +18 -0
- package/dist/trajectory/hash-chain.js +23 -0
- package/dist/trajectory/hash-chain.js.map +1 -0
- package/dist/trajectory/index.d.ts +22 -0
- package/dist/trajectory/index.js +23 -0
- package/dist/trajectory/index.js.map +1 -0
- package/dist/trajectory/schema.d.ts +14 -14
- package/dist/trajectory/secret-scrub.d.ts +32 -0
- package/dist/trajectory/secret-scrub.js +51 -0
- package/dist/trajectory/secret-scrub.js.map +1 -0
- package/dist/trajectory/span-profile.d.ts +27 -0
- package/dist/trajectory/span-profile.js +51 -0
- package/dist/trajectory/span-profile.js.map +1 -0
- package/dist/trajectory/wrappers/http.d.ts +37 -0
- package/dist/trajectory/wrappers/http.js +85 -0
- package/dist/trajectory/wrappers/http.js.map +1 -0
- package/dist/trajectory/wrappers/mcp.d.ts +17 -0
- package/dist/trajectory/wrappers/mcp.js +58 -0
- package/dist/trajectory/wrappers/mcp.js.map +1 -0
- package/dist/trajectory/wrappers/subprocess.d.ts +32 -0
- package/dist/trajectory/wrappers/subprocess.js +70 -0
- package/dist/trajectory/wrappers/subprocess.js.map +1 -0
- package/dist/tx-retry.js +23 -9
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/envelope.d.ts +1619 -0
- package/dist/types/envelope.js +121 -0
- package/dist/types/envelope.js.map +1 -0
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.js +4 -4
- package/dist/types/index.js.map +1 -1
- package/dist/types/payloads/index.d.ts +11 -0
- package/dist/types/payloads/index.js +46 -0
- package/dist/types/payloads/index.js.map +1 -0
- package/dist/types/payloads/portfolio-v0.d.ts +481 -0
- package/dist/types/payloads/portfolio-v0.js +94 -0
- package/dist/types/payloads/portfolio-v0.js.map +1 -0
- package/dist/types/payloads/prediction-apy-v0.d.ts +231 -0
- package/dist/types/payloads/prediction-apy-v0.js +63 -0
- package/dist/types/payloads/prediction-apy-v0.js.map +1 -0
- package/dist/types/payloads/prediction-v0.d.ts +262 -0
- package/dist/types/payloads/prediction-v0.js +73 -0
- package/dist/types/payloads/prediction-v0.js.map +1 -0
- package/dist/types/portfolio.d.ts +31 -698
- package/dist/types/portfolio.js +20 -110
- package/dist/types/portfolio.js.map +1 -1
- package/dist/types/prediction-apy.d.ts +26 -366
- package/dist/types/prediction-apy.js +12 -68
- package/dist/types/prediction-apy.js.map +1 -1
- package/dist/types/prediction.d.ts +40 -416
- package/dist/types/prediction.js +9 -83
- package/dist/types/prediction.js.map +1 -1
- package/dist/types/task-document.d.ts +498 -0
- package/dist/types/task-document.js +69 -0
- package/dist/types/task-document.js.map +1 -0
- package/dist/types/task.d.ts +455 -0
- package/dist/types/task.js +58 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/window.d.ts +12 -0
- package/dist/types/window.js +6 -0
- package/dist/types/window.js.map +1 -0
- package/dist/util/path-safety.d.ts +21 -0
- package/dist/util/path-safety.js +28 -0
- package/dist/util/path-safety.js.map +1 -0
- package/dist/util/redact-rpc-urls.d.ts +5 -0
- package/dist/util/redact-rpc-urls.js +9 -0
- package/dist/util/redact-rpc-urls.js.map +1 -0
- package/dist/venues/hyperliquid/account-value.d.ts +1 -1
- package/dist/venues/hyperliquid/account-value.js +1 -1
- package/dist/x402/acquire.d.ts +14 -3
- package/dist/x402/acquire.js +28 -11
- package/dist/x402/acquire.js.map +1 -1
- package/dist/x402/handler.d.ts +15 -3
- package/dist/x402/handler.js +67 -24
- package/dist/x402/handler.js.map +1 -1
- package/package.json +38 -13
- package/plugins/claude-code-learner/.claude-plugin/plugin.json +9 -0
- package/plugins/claude-code-learner/AGENTS.md +30 -0
- package/plugins/claude-code-learner/CLAUDE.md +31 -0
- package/plugins/claude-code-learner/README.md +58 -0
- package/plugins/claude-code-learner/agents/analyst.md +69 -0
- package/plugins/claude-code-learner/agents/consolidator.md +95 -0
- package/plugins/claude-code-learner/agents/explorer.md +54 -0
- package/plugins/claude-code-learner/agents/planner.md +88 -0
- package/plugins/claude-code-learner/agents/promoter.md +114 -0
- package/plugins/claude-code-learner/agents/step-worker.md +48 -0
- package/plugins/claude-code-learner/agents/strategist.md +86 -0
- package/plugins/claude-code-learner/hooks/hooks.json +16 -0
- package/plugins/claude-code-learner/hooks/session-start +38 -0
- package/plugins/claude-code-learner/skills/coordinator/SKILL.md +111 -0
- package/plugins/claude-code-learner/skills/debrief/SKILL.md +63 -0
- package/plugins/claude-code-learner/skills/execute/SKILL.md +87 -0
- package/plugins/claude-code-learner/skills/improve/SKILL.md +53 -0
- package/plugins/claude-code-learner/skills/memory-consolidation/SKILL.md +49 -0
- package/plugins/claude-code-learner/skills/orient/SKILL.md +71 -0
- package/plugins/claude-code-learner/skills/plan/SKILL.md +50 -0
- package/plugins/claude-code-learner/skills/strategize/SKILL.md +53 -0
- package/plugins/jinn-prediction-plugin/.claude-plugin/plugin.json +89 -0
- package/plugins/jinn-prediction-plugin/mcp/polymarket-server.mjs +2 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v0-solution.schema.json +12 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v0-task.schema.json +25 -0
- package/plugins/jinn-prediction-plugin/schemas/prediction-v0-verdict.schema.json +11 -0
- package/plugins/jinn-prediction-plugin/skills/base-rate-forecasting/SKILL.md +3 -0
- package/plugins/jinn-prediction-plugin/skills/calibration/SKILL.md +3 -0
- package/skills/jinn-operator/SKILL.md +120 -101
- package/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
- package/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
- package/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
- package/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
- package/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
- package/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
- package/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
- package/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
- package/templates/harnesses/evaluator/README.md.tmpl +36 -0
- package/templates/harnesses/evaluator/gitignore.tmpl +3 -0
- package/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
- package/templates/harnesses/evaluator/package.json.tmpl +26 -0
- package/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
- package/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
- package/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
- package/templates/harnesses/forecaster/README.md.tmpl +25 -0
- package/templates/harnesses/forecaster/gitignore.tmpl +5 -0
- package/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
- package/templates/harnesses/forecaster/package.json.tmpl +26 -0
- package/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
- package/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
- package/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
- package/dist/bin/jinn-mcp.d.ts +0 -2
- package/dist/bin/jinn-mcp.js +0 -10
- package/dist/bin/jinn-mcp.js.map +0 -1
- package/dist/cli/commands/intents.d.ts +0 -17
- package/dist/cli/commands/intents.js +0 -489
- package/dist/cli/commands/intents.js.map +0 -1
- package/dist/cli/commands/plugin-install.js.map +0 -1
- package/dist/cli/commands/submit-intent.js +0 -245
- package/dist/cli/commands/submit-intent.js.map +0 -1
- package/dist/cli/intent-registry-access.d.ts +0 -62
- package/dist/cli/intent-registry-access.js +0 -165
- package/dist/cli/intent-registry-access.js.map +0 -1
- package/dist/discovery/registry.d.ts +0 -97
- package/dist/discovery/registry.js +0 -177
- package/dist/discovery/registry.js.map +0 -1
- package/dist/discovery/subgraph.d.ts +0 -37
- package/dist/discovery/subgraph.js +0 -87
- package/dist/discovery/subgraph.js.map +0 -1
- package/dist/intents/kinds/constants.js.map +0 -1
- package/dist/intents/kinds/index.d.ts +0 -28
- package/dist/intents/kinds/index.js +0 -50
- package/dist/intents/kinds/index.js.map +0 -1
- package/dist/intents/kinds/portfolio-v0.d.ts +0 -2
- package/dist/intents/kinds/portfolio-v0.js +0 -13
- package/dist/intents/kinds/portfolio-v0.js.map +0 -1
- package/dist/intents/kinds/prediction-apy-v0.d.ts +0 -3
- package/dist/intents/kinds/prediction-apy-v0.js +0 -21
- package/dist/intents/kinds/prediction-apy-v0.js.map +0 -1
- package/dist/intents/kinds/prediction-v0.d.ts +0 -3
- package/dist/intents/kinds/prediction-v0.js.map +0 -1
- package/dist/intents/kinds/spec-kind.d.ts +0 -38
- package/dist/intents/kinds/spec-kind.js +0 -6
- package/dist/intents/kinds/spec-kind.js.map +0 -1
- package/dist/intents/posting-service.d.ts +0 -26
- package/dist/intents/posting-service.js +0 -218
- package/dist/intents/posting-service.js.map +0 -1
- package/dist/intents/prediction-apy-v0-auto.d.ts +0 -11
- package/dist/intents/prediction-apy-v0-auto.js +0 -46
- package/dist/intents/prediction-apy-v0-auto.js.map +0 -1
- package/dist/intents/prediction-apy-v0-template.js.map +0 -1
- package/dist/intents/prediction-v0-auto.js.map +0 -1
- package/dist/intents/prediction-v0-template.js.map +0 -1
- package/dist/intents/sources.d.ts +0 -39
- package/dist/intents/sources.js +0 -42
- package/dist/intents/sources.js.map +0 -1
- package/dist/restorer/engine/canonical-json.d.ts +0 -18
- package/dist/restorer/engine/canonical-json.js +0 -59
- package/dist/restorer/engine/canonical-json.js.map +0 -1
- package/dist/restorer/engine/claim.js.map +0 -1
- package/dist/restorer/engine/delivery.js.map +0 -1
- package/dist/restorer/engine/engine.d.ts +0 -213
- package/dist/restorer/engine/engine.js +0 -769
- package/dist/restorer/engine/engine.js.map +0 -1
- package/dist/restorer/engine/manifest-assembly.d.ts +0 -67
- package/dist/restorer/engine/manifest-assembly.js +0 -79
- package/dist/restorer/engine/manifest-assembly.js.map +0 -1
- package/dist/restorer/engine/packaging.d.ts +0 -87
- package/dist/restorer/engine/packaging.js.map +0 -1
- package/dist/restorer/engine/persistence.d.ts +0 -170
- package/dist/restorer/engine/persistence.js.map +0 -1
- package/dist/restorer/engine/recovery.d.ts +0 -22
- package/dist/restorer/engine/recovery.js.map +0 -1
- package/dist/restorer/engine/registry.d.ts +0 -62
- package/dist/restorer/engine/registry.js +0 -73
- package/dist/restorer/engine/registry.js.map +0 -1
- package/dist/restorer/engine/signing.js.map +0 -1
- package/dist/restorer/engine/state.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/index.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction/types.js +0 -6
- package/dist/restorer/impls/claude-mcp-prediction/types.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +0 -34
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.d.ts +0 -7
- package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +0 -128
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +0 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/types.js +0 -6
- package/dist/restorer/impls/claude-mcp-prediction-apy/types.js.map +0 -1
- package/dist/restorer/impls/evaluation-context.d.ts +0 -16
- package/dist/restorer/impls/evaluation-context.js +0 -18
- package/dist/restorer/impls/evaluation-context.js.map +0 -1
- package/dist/restorer/impls/index.d.ts +0 -46
- package/dist/restorer/impls/index.js.map +0 -1
- package/dist/restorer/impls/legacy-claude/index.d.ts +0 -52
- package/dist/restorer/impls/legacy-claude/index.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +0 -44
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +0 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +0 -6
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +0 -11
- package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +0 -208
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +0 -7
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +0 -29
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +0 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +0 -31
- package/dist/restorer/impls/prediction-v0-baseline/index.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +0 -7
- package/dist/restorer/impls/prediction-v0-baseline/types.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +0 -13
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/index.js +0 -234
- package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +0 -1
- package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +0 -1
- package/dist/restorer/types.d.ts +0 -194
- package/dist/restorer/types.js.map +0 -1
- package/dist/types/desired-state.d.ts +0 -94
- package/dist/types/desired-state.js +0 -36
- package/dist/types/desired-state.js.map +0 -1
- /package/dist/cli/commands/{plugin-install.d.ts → solver-nets.d.ts} +0 -0
- /package/dist/cli/commands/{submit-intent.d.ts → tasks.d.ts} +0 -0
- /package/dist/{restorer/impls/prediction-apy-v0-baseline → harnesses/impls/claude-code-learner}/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/api-wallet.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.js +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/mcp-tools.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/mcp-tools.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.js +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.js +0 -0
- /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/types.d.ts +0 -0
- /package/dist/{restorer/impls/prediction-apy-v0-evaluator → harnesses/impls/prediction-apy-v0-baseline}/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/types.d.ts +0 -0
- /package/dist/{restorer/impls/prediction-v0-baseline → harnesses/impls/prediction-apy-v0-evaluator}/types.js +0 -0
- /package/dist/{restorer/impls/prediction-v0-evaluator → harnesses/impls/prediction-v0-baseline}/types.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/canonical-metrics.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/availability.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/availability.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/eligibility.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/spec.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.d.ts +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.js +0 -0
- /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/types.d.ts +0 -0
- /package/dist/{intents/kinds → solver-types}/constants.d.ts +0 -0
- /package/dist/{intents/kinds → solver-types}/constants.js +0 -0
|
@@ -2,32 +2,46 @@
|
|
|
2
2
|
* Operator-level MCP server for jinn-client.
|
|
3
3
|
*
|
|
4
4
|
* Exposes tools that let an external agent (e.g. Claude Desktop) manage a jinn
|
|
5
|
-
* fleet: read status, bootstrap, submit
|
|
5
|
+
* fleet: read status, bootstrap, submit Tasks, start/stop the daemon.
|
|
6
6
|
*
|
|
7
|
-
* Entry
|
|
7
|
+
* Entry point: `jinn mcp` command.
|
|
8
8
|
*
|
|
9
9
|
* Design: wraps CLI command modules directly (Option B from the research doc).
|
|
10
10
|
* Each command already accepts an injectable { writer, exit } context, so we
|
|
11
11
|
* capture stdout into a string buffer and return it as the MCP tool response.
|
|
12
|
+
*
|
|
13
|
+
* Mutating tools (`jinn_init`, `jinn_bootstrap`, `jinn_tasks_submit`,
|
|
14
|
+
* `jinn_start_daemon`, `jinn_stop_daemon`) require an explicit `confirm: true`
|
|
15
|
+
* parameter in the tool call. Without `confirm: true` the tool returns a
|
|
16
|
+
* structured `mcp_preview` envelope describing what would happen and the exact
|
|
17
|
+
* follow-up tool call needed to execute (audit finding W2 / `jinn-mono-964.2`).
|
|
12
18
|
*/
|
|
13
19
|
import { spawn } from 'node:child_process';
|
|
14
20
|
import { existsSync, readFileSync, unlinkSync } from 'node:fs';
|
|
21
|
+
import { homedir } from 'node:os';
|
|
15
22
|
import { join } from 'node:path';
|
|
16
23
|
import { fileURLToPath } from 'node:url';
|
|
17
24
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
18
25
|
import { z } from 'zod';
|
|
19
26
|
// ── Read-only command imports ───────────────────────────────────────────────
|
|
20
|
-
import
|
|
27
|
+
import defaultInitCommand from '../cli/commands/init.js';
|
|
28
|
+
import authCommand from '../cli/commands/auth.js';
|
|
21
29
|
import doctorCommand from '../cli/commands/doctor.js';
|
|
22
30
|
import fundRequirementsCommand from '../cli/commands/fund-requirements.js';
|
|
23
31
|
import statusCommand from '../cli/commands/status.js';
|
|
24
32
|
import fleetCommand from '../cli/commands/fleet.js';
|
|
25
33
|
import balanceCommand from '../cli/commands/balance.js';
|
|
26
34
|
import historyCommand from '../cli/commands/history.js';
|
|
35
|
+
import logsCommand from '../cli/commands/logs.js';
|
|
36
|
+
import rewardsCommand from '../cli/commands/rewards.js';
|
|
37
|
+
import solverNetsCommand from '../cli/commands/solver-nets.js';
|
|
27
38
|
// ── Write (mutating) command imports ────────────────────────────────────────
|
|
28
39
|
import bootstrapCommand from '../cli/commands/bootstrap.js';
|
|
29
|
-
import
|
|
30
|
-
import
|
|
40
|
+
import tasksCommand from '../cli/commands/tasks.js';
|
|
41
|
+
import defaultStopCommand from '../cli/commands/stop.js';
|
|
42
|
+
import claimRewardsCommand from '../cli/commands/claim-rewards.js';
|
|
43
|
+
import defaultRunCommand from '../cli/commands/run.js';
|
|
44
|
+
import updateCommand from '../cli/commands/update.js';
|
|
31
45
|
/**
|
|
32
46
|
* Run a CLI CommandModule in-process, capturing its stdout output as a string.
|
|
33
47
|
*
|
|
@@ -69,6 +83,29 @@ async function runToolCommand(command, argv, env) {
|
|
|
69
83
|
};
|
|
70
84
|
}
|
|
71
85
|
}
|
|
86
|
+
function buildPreviewEnvelope(args) {
|
|
87
|
+
const followUpArgs = {
|
|
88
|
+
...(args.callerArgs ?? {}),
|
|
89
|
+
confirm: true,
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
schemaVersion: 1,
|
|
93
|
+
status: 'preview',
|
|
94
|
+
tool: args.tool,
|
|
95
|
+
description: args.description,
|
|
96
|
+
effects: args.effects,
|
|
97
|
+
followUp: {
|
|
98
|
+
tool: args.tool,
|
|
99
|
+
arguments: followUpArgs,
|
|
100
|
+
},
|
|
101
|
+
hint: `This MCP tool mutates state. Re-invoke '${args.tool}' with confirm: true to execute. Returned without performing any action.`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function previewResponse(envelope) {
|
|
105
|
+
return {
|
|
106
|
+
content: [{ type: 'text', text: JSON.stringify(envelope) }],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
72
109
|
function sleep(ms) {
|
|
73
110
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
74
111
|
}
|
|
@@ -139,8 +176,9 @@ export async function startDetachedDaemon(env) {
|
|
|
139
176
|
}
|
|
140
177
|
return { ok: true, payload: { pid: startResult.pid, status: startResult.status } };
|
|
141
178
|
}
|
|
142
|
-
export async function stopDetachedDaemon(env) {
|
|
143
|
-
const
|
|
179
|
+
export async function stopDetachedDaemon(env, deps = {}) {
|
|
180
|
+
const stop = deps.stopCommand ?? defaultStopCommand;
|
|
181
|
+
const result = await runCommandResult(stop, ['--json'], env);
|
|
144
182
|
if (result.exitCode === null || result.exitCode === 0) {
|
|
145
183
|
return { ok: true, payload: JSON.parse(result.text) };
|
|
146
184
|
}
|
|
@@ -149,20 +187,60 @@ export async function stopDetachedDaemon(env) {
|
|
|
149
187
|
}
|
|
150
188
|
return { ok: false, payload: result.text };
|
|
151
189
|
}
|
|
152
|
-
// ──
|
|
153
|
-
|
|
190
|
+
// ── Live-state helpers (HTTP calls into the running daemon) ─────────────────
|
|
191
|
+
//
|
|
192
|
+
// The 5 live-state tools below talk to the daemon's HTTP API on the same
|
|
193
|
+
// machine (JINN_API_PORT, default 7331). The protected routes (/v1/events/*,
|
|
194
|
+
// /v1/bootstrap, /api/admin/*) are gated by `requireUiToken`. The MCP server
|
|
195
|
+
// is a child process spawned by the embedded claude session, so it does not
|
|
196
|
+
// have the SPA's cookie. It authenticates by reading the UI token from disk
|
|
197
|
+
// and sending it as the `x-jinn-ui-token` header (the same middleware accepts
|
|
198
|
+
// both forms — see api/handshake.ts).
|
|
199
|
+
function uiTokenFromDisk() {
|
|
200
|
+
const path = join(homedir(), '.jinn-client', 'ui-token');
|
|
201
|
+
if (!existsSync(path))
|
|
202
|
+
return null;
|
|
203
|
+
try {
|
|
204
|
+
return readFileSync(path, 'utf-8').trim();
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function authHeaders() {
|
|
211
|
+
const t = uiTokenFromDisk();
|
|
212
|
+
return t ? { 'x-jinn-ui-token': t } : {};
|
|
213
|
+
}
|
|
214
|
+
function apiPort() {
|
|
215
|
+
return Number(process.env['JINN_API_PORT'] ?? 7331);
|
|
216
|
+
}
|
|
217
|
+
export function createOperatorServer(deps = {}) {
|
|
218
|
+
const initCommand = deps.initCommand ?? defaultInitCommand;
|
|
219
|
+
const stopCommand = deps.stopCommand ?? defaultStopCommand;
|
|
220
|
+
const runCommand = deps.runCommand ?? defaultRunCommand;
|
|
221
|
+
const bootstrapCmd = deps.bootstrapCommand ?? bootstrapCommand;
|
|
222
|
+
const tasksCmd = deps.tasksCommand ?? tasksCommand;
|
|
154
223
|
const server = new McpServer({
|
|
155
224
|
name: 'jinn-operator',
|
|
156
225
|
version: '0.1.0',
|
|
157
226
|
});
|
|
158
227
|
// ━━ Read-only tools ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
159
|
-
server.tool('
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
server.tool('
|
|
228
|
+
server.tool('jinn_auth', [
|
|
229
|
+
'Read-only: check Claude authentication status and the resolved runtime mode (bare/docker-compose/container).',
|
|
230
|
+
'Does NOT attempt login — it only probes and reports. Use this as the first call to verify the agent path is ready.',
|
|
231
|
+
'Returns authenticated:true + context + email on success; returns an error envelope if not authenticated.',
|
|
232
|
+
'Fast (<1s).',
|
|
233
|
+
].join(' '), {}, async () => runToolCommand(authCommand, ['--json', '--mode', 'bare'], process.env));
|
|
234
|
+
server.tool('jinn_doctor', 'Preflight checks: node version, claude binary, keystore, deployment config. Read-only. Fast (<5s).', {}, async () => runToolCommand(doctorCommand, ['--json'], process.env));
|
|
235
|
+
server.tool('jinn_fund_requirements', [
|
|
236
|
+
'Read-only: list addresses and amounts that need funding before bootstrap can advance.',
|
|
237
|
+
'Note: the underlying command may hydrate wallet state as a side effect of checking funding.',
|
|
238
|
+
'Returns an array of funding gaps; empty array means all funded.',
|
|
239
|
+
].join(' '), {}, async () => runToolCommand(fundRequirementsCommand, ['--json'], process.env));
|
|
240
|
+
server.tool('jinn_status', 'Daemon liveness and fleet health roll-up. Read-only. Poll this to monitor progress. Fast (<2s).', {}, async () => runToolCommand(statusCommand, ['--json'], process.env));
|
|
241
|
+
server.tool('jinn_fleet', 'Per-service fleet detail: wallets, staking status, activity counts. Read-only. Fast (<5s).', {}, async () => runToolCommand(fleetCommand, ['--json'], process.env));
|
|
242
|
+
server.tool('jinn_balance', 'Flat per-wallet balance map across master and service wallets. Read-only. Requires RPC. Fast (<5s).', {}, async () => runToolCommand(balanceCommand, ['--json'], process.env));
|
|
243
|
+
server.tool('jinn_history', 'Recent protocol activity: tasks, claims, deliveries, evaluations, rewards. Read-only from local DB. Fast (<2s).', {
|
|
166
244
|
limit: z.number().optional().default(50).describe('Max results (default 50)'),
|
|
167
245
|
since: z.string().optional().describe('Only return events after this ISO-8601 timestamp'),
|
|
168
246
|
}, async ({ limit, since }) => {
|
|
@@ -171,21 +249,256 @@ export function createOperatorServer() {
|
|
|
171
249
|
argv.push('--since', since);
|
|
172
250
|
return runToolCommand(historyCommand, argv, process.env);
|
|
173
251
|
});
|
|
252
|
+
server.tool('jinn_logs', [
|
|
253
|
+
'Recent activity event log from the local SQLite store.',
|
|
254
|
+
'Read-only. Fast (<2s). Returns events with ts, level, component, msg fields.',
|
|
255
|
+
'Call with limit=100 for monitoring; increase for deeper history.',
|
|
256
|
+
].join(' '), {
|
|
257
|
+
limit: z.number().optional().default(100).describe('Max events to return (default 100, max 1000)'),
|
|
258
|
+
}, async ({ limit }) => {
|
|
259
|
+
const argv = ['--json', '--limit', String(limit)];
|
|
260
|
+
return runToolCommand(logsCommand, argv, process.env);
|
|
261
|
+
});
|
|
262
|
+
server.tool('jinn_rewards', [
|
|
263
|
+
'Pending and claimed reward balances per staked service.',
|
|
264
|
+
'Read-only. Requires RPC access. Fast (<5s).',
|
|
265
|
+
'Returns per-service pending/claimed amounts and next checkpoint time.',
|
|
266
|
+
].join(' '), {}, async () => runToolCommand(rewardsCommand, ['--json'], process.env));
|
|
267
|
+
server.tool('jinn_solver_nets_list', 'List configured SolverNets with their enabled state. Read-only. Fast (<2s).', {}, async () => runToolCommand(solverNetsCommand, ['list', '--json'], process.env));
|
|
268
|
+
server.tool('jinn_solver_nets_show', 'Detailed status for one SolverNet. Read-only. Fast (<2s).', {
|
|
269
|
+
name: z.string().describe('SolverNet name, e.g. prediction'),
|
|
270
|
+
}, async ({ name }) => runToolCommand(solverNetsCommand, ['show', name, '--json'], process.env));
|
|
271
|
+
server.tool('jinn_solver_nets_enable', [
|
|
272
|
+
'MUTATING: Enable a SolverNet. Idempotent.',
|
|
273
|
+
'Optionally selects the restoration Harness for that SolverNet.',
|
|
274
|
+
].join(' '), {
|
|
275
|
+
name: z.string().describe('SolverNet name, e.g. prediction'),
|
|
276
|
+
harness: z.string().optional().describe('Optional Harness name to select for restoration Tasks'),
|
|
277
|
+
}, async ({ name, harness }) => {
|
|
278
|
+
const argv = ['enable', name, '--json'];
|
|
279
|
+
if (harness)
|
|
280
|
+
argv.push('--harness', harness);
|
|
281
|
+
return runToolCommand(solverNetsCommand, argv, process.env);
|
|
282
|
+
});
|
|
283
|
+
server.tool('jinn_solver_nets_disable', 'MUTATING: Disable a SolverNet. Writes config. Idempotent. Fast (<1s).', {
|
|
284
|
+
name: z.string().describe('SolverNet name'),
|
|
285
|
+
}, async ({ name }) => runToolCommand(solverNetsCommand, ['disable', name, '--json'], process.env));
|
|
174
286
|
// ━━ Write (mutating) tools ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
287
|
+
//
|
|
288
|
+
// Every tool in this section requires `confirm: true` to mutate state.
|
|
289
|
+
// Without `confirm: true` the tool returns a stable `mcp_preview` envelope
|
|
290
|
+
// describing the planned effects and the exact follow-up tool call to
|
|
291
|
+
// perform the action. This is the agent-visible counterpart of CLI
|
|
292
|
+
// `--dry-run` / `--yes`. See audit finding W2 (jinn-mono-964.2).
|
|
293
|
+
server.tool('jinn_init', [
|
|
294
|
+
'MUTATING. Create the master wallet and write the encrypted keystore.',
|
|
295
|
+
'Idempotent: re-runs return the existing master address.',
|
|
296
|
+
'Requires confirm: true; default is preview (no filesystem write).',
|
|
297
|
+
].join(' '), {
|
|
298
|
+
confirm: z
|
|
299
|
+
.boolean()
|
|
300
|
+
.optional()
|
|
301
|
+
.default(false)
|
|
302
|
+
.describe('Must be true to actually create the keystore. Default false returns a preview.'),
|
|
303
|
+
}, async ({ confirm }) => {
|
|
304
|
+
if (!confirm) {
|
|
305
|
+
return previewResponse(buildPreviewEnvelope({
|
|
306
|
+
tool: 'jinn_init',
|
|
307
|
+
description: 'Would generate (or load, if present) the master wallet mnemonic and write an encrypted keystore using JINN_PASSWORD.',
|
|
308
|
+
effects: [
|
|
309
|
+
'Writes encrypted mnemonic keystore under the configured earning directory if absent.',
|
|
310
|
+
'Writes master_address into the fleet-state JSON.',
|
|
311
|
+
'Reads JINN_PASSWORD (or --password-fd) from the daemon environment.',
|
|
312
|
+
],
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
return runToolCommand(initCommand, ['--json'], process.env);
|
|
316
|
+
});
|
|
317
|
+
server.tool('jinn_run', [
|
|
318
|
+
'MUTATING: Run the Jinn daemon end-to-end. Initializes the keystore (if missing),',
|
|
319
|
+
'bootstraps the fleet (with funding poll), and starts the daemon loops.',
|
|
320
|
+
'Idempotent — safe to call repeatedly; resumes from the last completed step.',
|
|
321
|
+
'Long-running: can take up to 30 minutes if funding is required.',
|
|
322
|
+
'Returns a progress stream via --json-progress; poll jinn_status to monitor after this returns.',
|
|
323
|
+
'Use no_daemon=true to exit after bootstrap (useful for CI or when the daemon is managed separately).',
|
|
324
|
+
'Requires confirm: true; default is preview (no mutation).',
|
|
325
|
+
].join(' '), {
|
|
326
|
+
confirm: z
|
|
327
|
+
.boolean()
|
|
328
|
+
.optional()
|
|
329
|
+
.default(false)
|
|
330
|
+
.describe('Must be true to actually start the run flow. Default false returns a preview.'),
|
|
331
|
+
no_daemon: z.boolean().optional().default(false).describe('Stop after bootstrap; do not start the daemon'),
|
|
332
|
+
funding_timeout: z
|
|
333
|
+
.string()
|
|
334
|
+
.optional()
|
|
335
|
+
.describe("Bound the wait when the wallet needs funding. Accepts '30s', '15m', '1h', or 'none'."),
|
|
336
|
+
}, async ({ confirm, no_daemon, funding_timeout }) => {
|
|
337
|
+
if (!confirm) {
|
|
338
|
+
return previewResponse(buildPreviewEnvelope({
|
|
339
|
+
tool: 'jinn_run',
|
|
340
|
+
description: 'Would init the keystore (if missing), bootstrap the fleet, and start the daemon loops end-to-end.',
|
|
341
|
+
effects: [
|
|
342
|
+
'May write the encrypted keystore and an auto-generated keystore-password file.',
|
|
343
|
+
'Advances the bootstrap state machine: Safe deployment, OLAS service registration, staking, mech.',
|
|
344
|
+
'May post on-chain transactions and request testnet faucet funds.',
|
|
345
|
+
'Starts long-lived daemon loops unless no_daemon=true.',
|
|
346
|
+
],
|
|
347
|
+
callerArgs: {
|
|
348
|
+
...(no_daemon ? { no_daemon: true } : {}),
|
|
349
|
+
...(funding_timeout ? { funding_timeout } : {}),
|
|
350
|
+
},
|
|
351
|
+
}));
|
|
352
|
+
}
|
|
353
|
+
const argv = ['--json', '--json-progress'];
|
|
354
|
+
if (no_daemon)
|
|
355
|
+
argv.push('--no-daemon');
|
|
356
|
+
if (funding_timeout)
|
|
357
|
+
argv.push('--funding-timeout', funding_timeout);
|
|
358
|
+
return runToolCommand(runCommand, argv, process.env);
|
|
359
|
+
});
|
|
360
|
+
server.tool('jinn_bootstrap', [
|
|
361
|
+
'MUTATING. Advance the fleet state machine. Idempotent.',
|
|
362
|
+
'May take several minutes; can post on-chain transactions and request testnet faucet funds.',
|
|
363
|
+
'Returns funding_required if a wallet needs ETH.',
|
|
364
|
+
'Requires confirm: true; default is preview (no chain or filesystem mutation).',
|
|
365
|
+
].join(' '), {
|
|
366
|
+
confirm: z
|
|
367
|
+
.boolean()
|
|
368
|
+
.optional()
|
|
369
|
+
.default(false)
|
|
370
|
+
.describe('Must be true to actually run the bootstrap state machine. Default false returns a preview.'),
|
|
371
|
+
}, async ({ confirm }) => {
|
|
372
|
+
if (!confirm) {
|
|
373
|
+
return previewResponse(buildPreviewEnvelope({
|
|
374
|
+
tool: 'jinn_bootstrap',
|
|
375
|
+
description: 'Would advance the fleet bootstrap state machine from its current step toward a complete, runnable state.',
|
|
376
|
+
effects: [
|
|
377
|
+
'May deploy/activate Safes and OLAS services on-chain (gas-paying).',
|
|
378
|
+
'May request testnet faucet funds.',
|
|
379
|
+
'May update local fleet-state JSON and keystore files.',
|
|
380
|
+
],
|
|
381
|
+
}));
|
|
382
|
+
}
|
|
383
|
+
return runToolCommand(bootstrapCmd, ['--json'], process.env);
|
|
384
|
+
});
|
|
385
|
+
server.tool('jinn_tasks_submit', [
|
|
386
|
+
'MUTATING. Post a Task to the protocol.',
|
|
387
|
+
'Idempotent by id. Sends an on-chain transaction and pays gas when confirmed.',
|
|
388
|
+
'Requires confirm: true; default is preview (uses CLI --dry-run, no on-chain action).',
|
|
389
|
+
].join(' '), {
|
|
390
|
+
id: z.string().describe('Unique Task identifier'),
|
|
391
|
+
description: z.string().describe('Human-readable Task description'),
|
|
392
|
+
solver_net: z.string().optional().default('prediction').describe('SolverNet name, default prediction'),
|
|
393
|
+
confirm: z
|
|
394
|
+
.boolean()
|
|
395
|
+
.optional()
|
|
396
|
+
.default(false)
|
|
397
|
+
.describe('Must be true to actually submit on-chain. Default false returns a preview using --dry-run.'),
|
|
398
|
+
}, async ({ id, description, solver_net, confirm }) => {
|
|
399
|
+
const argv = ['submit', '--id', id, '--description', description, '--solver-net', solver_net, '--json'];
|
|
400
|
+
if (!confirm) {
|
|
183
401
|
argv.push('--dry-run');
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
402
|
+
// Run the underlying command in --dry-run so the preview includes the
|
|
403
|
+
// CLI's own plan output, then wrap it in our MCP preview envelope by
|
|
404
|
+
// reusing the dry-run JSON payload as the description body.
|
|
405
|
+
const result = await runCommandResult(tasksCmd, argv, process.env);
|
|
406
|
+
const envelope = buildPreviewEnvelope({
|
|
407
|
+
tool: 'jinn_tasks_submit',
|
|
408
|
+
description: `Would post Task '${id}' on-chain using the configured creator Safe.`,
|
|
409
|
+
effects: [
|
|
410
|
+
'Posts a SignedTaskV1 to IPFS via the configured registry.',
|
|
411
|
+
'Calls JinnRouter.createRestorationJob (gas-paying transaction).',
|
|
412
|
+
'Idempotent by --id from the same creator Safe.',
|
|
413
|
+
],
|
|
414
|
+
callerArgs: { id, description, solver_net },
|
|
415
|
+
});
|
|
416
|
+
const merged = {
|
|
417
|
+
...envelope,
|
|
418
|
+
cliDryRun: safeJsonParse(result.text),
|
|
419
|
+
};
|
|
420
|
+
return {
|
|
421
|
+
content: [{ type: 'text', text: JSON.stringify(merged) }],
|
|
422
|
+
...(result.exitCode !== null && result.exitCode !== 0
|
|
423
|
+
? { isError: true }
|
|
424
|
+
: {}),
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
argv.push('--yes');
|
|
428
|
+
return runToolCommand(tasksCmd, argv, process.env);
|
|
429
|
+
});
|
|
430
|
+
server.tool('jinn_claim_rewards', [
|
|
431
|
+
'MUTATING. Pull pending protocol rewards to the fleet multisigs.',
|
|
432
|
+
'Idempotent: zero-delta exits 0.',
|
|
433
|
+
'Requires confirm: true; default is preview (uses CLI --dry-run, no on-chain action).',
|
|
434
|
+
].join(' '), {
|
|
435
|
+
confirm: z
|
|
436
|
+
.boolean()
|
|
437
|
+
.optional()
|
|
438
|
+
.default(false)
|
|
439
|
+
.describe('Must be true to actually claim on-chain. Default false returns a preview using --dry-run.'),
|
|
440
|
+
}, async ({ confirm }) => {
|
|
441
|
+
if (!confirm) {
|
|
442
|
+
const result = await runCommandResult(claimRewardsCommand, ['--dry-run', '--json'], process.env);
|
|
443
|
+
const envelope = buildPreviewEnvelope({
|
|
444
|
+
tool: 'jinn_claim_rewards',
|
|
445
|
+
description: 'Would pull pending protocol rewards to the fleet multisigs.',
|
|
446
|
+
effects: [
|
|
447
|
+
'Submits claim transactions on-chain (gas-paying).',
|
|
448
|
+
'No-op if there are no pending rewards.',
|
|
449
|
+
],
|
|
450
|
+
});
|
|
451
|
+
const merged = {
|
|
452
|
+
...envelope,
|
|
453
|
+
cliDryRun: safeJsonParse(result.text),
|
|
454
|
+
};
|
|
455
|
+
return {
|
|
456
|
+
content: [{ type: 'text', text: JSON.stringify(merged) }],
|
|
457
|
+
...(result.exitCode !== null && result.exitCode !== 0
|
|
458
|
+
? { isError: true }
|
|
459
|
+
: {}),
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
return runToolCommand(claimRewardsCommand, ['--yes', '--json'], process.env);
|
|
463
|
+
});
|
|
464
|
+
server.tool('jinn_update', [
|
|
465
|
+
'MUTATING: Update the client package and refresh host integrations.',
|
|
466
|
+
'Step 1: npm update -g @jinn-network/client',
|
|
467
|
+
'Step 2: jinn integrations install (refreshes skills in all configured AI tools).',
|
|
468
|
+
'May take 1-2 minutes. Use skip_npm=true to only refresh integrations with the current version.',
|
|
469
|
+
].join(' '), {
|
|
470
|
+
skip_npm: z.boolean().optional().default(false).describe('Skip the npm update step'),
|
|
471
|
+
skip_plugins: z.boolean().optional().default(false).describe('Skip the integrations refresh step'),
|
|
472
|
+
}, async ({ skip_npm, skip_plugins }) => {
|
|
473
|
+
const argv = ['--json'];
|
|
474
|
+
if (skip_npm)
|
|
475
|
+
argv.push('--skip-npm');
|
|
476
|
+
if (skip_plugins)
|
|
477
|
+
argv.push('--skip-plugins');
|
|
478
|
+
return runToolCommand(updateCommand, argv, process.env);
|
|
187
479
|
});
|
|
188
|
-
server.tool('jinn_start_daemon',
|
|
480
|
+
server.tool('jinn_start_daemon', [
|
|
481
|
+
'MUTATING. Start the jinn daemon as a detached background process.',
|
|
482
|
+
'Spawns a long-lived child process and writes a pidfile.',
|
|
483
|
+
'Requires confirm: true; default is preview (does not spawn a process).',
|
|
484
|
+
].join(' '), {
|
|
485
|
+
confirm: z
|
|
486
|
+
.boolean()
|
|
487
|
+
.optional()
|
|
488
|
+
.default(false)
|
|
489
|
+
.describe('Must be true to actually start the daemon. Default false returns a preview.'),
|
|
490
|
+
}, async ({ confirm }) => {
|
|
491
|
+
if (!confirm) {
|
|
492
|
+
return previewResponse(buildPreviewEnvelope({
|
|
493
|
+
tool: 'jinn_start_daemon',
|
|
494
|
+
description: 'Would spawn the jinn daemon as a detached child process running `jinn run`.',
|
|
495
|
+
effects: [
|
|
496
|
+
'Spawns a detached node child process.',
|
|
497
|
+
'Writes a pidfile under the earning directory.',
|
|
498
|
+
'Daemon will poll RPC, post and claim deliveries, and may pay gas.',
|
|
499
|
+
],
|
|
500
|
+
}));
|
|
501
|
+
}
|
|
189
502
|
const result = await startDetachedDaemon(process.env);
|
|
190
503
|
if (!result.ok) {
|
|
191
504
|
return {
|
|
@@ -207,13 +520,175 @@ export function createOperatorServer() {
|
|
|
207
520
|
],
|
|
208
521
|
};
|
|
209
522
|
});
|
|
210
|
-
server.tool('jinn_stop_daemon',
|
|
211
|
-
|
|
523
|
+
server.tool('jinn_stop_daemon', [
|
|
524
|
+
'MUTATING. Stop the running jinn daemon.',
|
|
525
|
+
'Idempotent: returns success even if already stopped.',
|
|
526
|
+
'Requires confirm: true; default is preview (does not signal any process).',
|
|
527
|
+
].join(' '), {
|
|
528
|
+
confirm: z
|
|
529
|
+
.boolean()
|
|
530
|
+
.optional()
|
|
531
|
+
.default(false)
|
|
532
|
+
.describe('Must be true to actually stop the daemon. Default false returns a preview.'),
|
|
533
|
+
}, async ({ confirm }) => {
|
|
534
|
+
if (!confirm) {
|
|
535
|
+
return previewResponse(buildPreviewEnvelope({
|
|
536
|
+
tool: 'jinn_stop_daemon',
|
|
537
|
+
description: 'Would send a stop signal to the running jinn daemon, if any.',
|
|
538
|
+
effects: [
|
|
539
|
+
'Reads the daemon pidfile under the earning directory.',
|
|
540
|
+
'Sends SIGTERM to the daemon process.',
|
|
541
|
+
'Removes the pidfile on graceful exit.',
|
|
542
|
+
],
|
|
543
|
+
}));
|
|
544
|
+
}
|
|
545
|
+
const result = await stopDetachedDaemon(process.env, { stopCommand });
|
|
212
546
|
if (result.ok) {
|
|
213
547
|
return { content: [{ type: 'text', text: JSON.stringify(result.payload) }] };
|
|
214
548
|
}
|
|
215
549
|
return { content: [{ type: 'text', text: result.payload }], isError: true };
|
|
216
550
|
});
|
|
551
|
+
// ━━ Live-state tools (HTTP into the running daemon) ━━━━━━━━━━━━━━━━━━━━━━
|
|
552
|
+
//
|
|
553
|
+
// Unlike the read-only and write tools above, which run CLI command modules
|
|
554
|
+
// in-process, these tools call the daemon's HTTP API directly. They require
|
|
555
|
+
// the daemon to be running. Auth uses the UI token loaded from
|
|
556
|
+
// ~/.jinn-client/ui-token sent in the `x-jinn-ui-token` header.
|
|
557
|
+
server.tool('activity_list', 'List recent structured daemon events. Filter by kinds: intent, reward, fleet, system, error, log.', {
|
|
558
|
+
kinds: z.array(z.enum(['intent', 'reward', 'fleet', 'system', 'error', 'log'])).optional(),
|
|
559
|
+
limit: z.number().int().min(1).max(500).optional(),
|
|
560
|
+
}, async ({ kinds, limit }) => {
|
|
561
|
+
const port = apiPort();
|
|
562
|
+
const q = new URLSearchParams();
|
|
563
|
+
if (kinds && kinds.length > 0)
|
|
564
|
+
q.set('kinds', kinds.join(','));
|
|
565
|
+
if (limit !== undefined)
|
|
566
|
+
q.set('limit', String(limit));
|
|
567
|
+
const url = `http://127.0.0.1:${port}/v1/events/recent?${q.toString()}`;
|
|
568
|
+
try {
|
|
569
|
+
const res = await fetch(url, { headers: authHeaders() });
|
|
570
|
+
const body = (await res.json());
|
|
571
|
+
return { content: [{ type: 'text', text: JSON.stringify(body) }] };
|
|
572
|
+
}
|
|
573
|
+
catch (err) {
|
|
574
|
+
return {
|
|
575
|
+
content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }],
|
|
576
|
+
isError: true,
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
});
|
|
580
|
+
server.tool('bootstrap_state', 'Get the current bootstrap state machine: mode (setup|running|uninitialized), current step, services, master address, chain.', {}, async () => {
|
|
581
|
+
const port = apiPort();
|
|
582
|
+
try {
|
|
583
|
+
const res = await fetch(`http://127.0.0.1:${port}/v1/bootstrap`, { headers: authHeaders() });
|
|
584
|
+
const body = await res.json();
|
|
585
|
+
return { content: [{ type: 'text', text: JSON.stringify(body) }] };
|
|
586
|
+
}
|
|
587
|
+
catch (err) {
|
|
588
|
+
return {
|
|
589
|
+
content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }],
|
|
590
|
+
isError: true,
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
});
|
|
594
|
+
server.tool('daemon_restart', 'Request a daemon restart. Requires confirm=true. The daemon will shut down gracefully and the process will exit; the supervising shell or systemd unit must restart it.', { confirm: z.boolean().optional() }, async ({ confirm }) => {
|
|
595
|
+
if (!confirm) {
|
|
596
|
+
return {
|
|
597
|
+
content: [
|
|
598
|
+
{
|
|
599
|
+
type: 'text',
|
|
600
|
+
text: JSON.stringify({
|
|
601
|
+
preview: 'would request daemon shutdown',
|
|
602
|
+
confirm_with: 'daemon_restart with confirm=true',
|
|
603
|
+
}),
|
|
604
|
+
},
|
|
605
|
+
],
|
|
606
|
+
};
|
|
607
|
+
}
|
|
608
|
+
const port = apiPort();
|
|
609
|
+
try {
|
|
610
|
+
const res = await fetch(`http://127.0.0.1:${port}/api/admin/restart`, {
|
|
611
|
+
method: 'POST',
|
|
612
|
+
headers: authHeaders(),
|
|
613
|
+
});
|
|
614
|
+
const body = await res.json();
|
|
615
|
+
return { content: [{ type: 'text', text: JSON.stringify(body) }] };
|
|
616
|
+
}
|
|
617
|
+
catch (err) {
|
|
618
|
+
return {
|
|
619
|
+
content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }],
|
|
620
|
+
isError: true,
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
server.tool('loop_pause', 'Pause a daemon loop by name (creator | engine_watcher | engine_tick | delivery_watcher | reward_claim | balance_topup | jinn_claim | peer_sync). NOTE: stubbed in v1-Slim; returns not_implemented.', {
|
|
625
|
+
loop: z.string(),
|
|
626
|
+
confirm: z.boolean().optional(),
|
|
627
|
+
}, async ({ loop, confirm }) => {
|
|
628
|
+
if (!confirm) {
|
|
629
|
+
return {
|
|
630
|
+
content: [
|
|
631
|
+
{
|
|
632
|
+
type: 'text',
|
|
633
|
+
text: JSON.stringify({
|
|
634
|
+
preview: `would pause loop=${loop}`,
|
|
635
|
+
confirm_with: `loop_pause with confirm=true and loop=${loop}`,
|
|
636
|
+
}),
|
|
637
|
+
},
|
|
638
|
+
],
|
|
639
|
+
};
|
|
640
|
+
}
|
|
641
|
+
const port = apiPort();
|
|
642
|
+
try {
|
|
643
|
+
const res = await fetch(`http://127.0.0.1:${port}/api/admin/loop/${encodeURIComponent(loop)}/pause`, { method: 'POST', headers: authHeaders() });
|
|
644
|
+
const body = await res.json();
|
|
645
|
+
return { content: [{ type: 'text', text: JSON.stringify(body) }] };
|
|
646
|
+
}
|
|
647
|
+
catch (err) {
|
|
648
|
+
return {
|
|
649
|
+
content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }],
|
|
650
|
+
isError: true,
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
});
|
|
654
|
+
server.tool('loop_resume', 'Resume a previously-paused daemon loop. NOTE: stubbed in v1-Slim; returns not_implemented.', {
|
|
655
|
+
loop: z.string(),
|
|
656
|
+
confirm: z.boolean().optional(),
|
|
657
|
+
}, async ({ loop, confirm }) => {
|
|
658
|
+
if (!confirm) {
|
|
659
|
+
return {
|
|
660
|
+
content: [
|
|
661
|
+
{
|
|
662
|
+
type: 'text',
|
|
663
|
+
text: JSON.stringify({
|
|
664
|
+
preview: `would resume loop=${loop}`,
|
|
665
|
+
confirm_with: `loop_resume with confirm=true and loop=${loop}`,
|
|
666
|
+
}),
|
|
667
|
+
},
|
|
668
|
+
],
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
const port = apiPort();
|
|
672
|
+
try {
|
|
673
|
+
const res = await fetch(`http://127.0.0.1:${port}/api/admin/loop/${encodeURIComponent(loop)}/resume`, { method: 'POST', headers: authHeaders() });
|
|
674
|
+
const body = await res.json();
|
|
675
|
+
return { content: [{ type: 'text', text: JSON.stringify(body) }] };
|
|
676
|
+
}
|
|
677
|
+
catch (err) {
|
|
678
|
+
return {
|
|
679
|
+
content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }],
|
|
680
|
+
isError: true,
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
});
|
|
217
684
|
return server;
|
|
218
685
|
}
|
|
686
|
+
function safeJsonParse(text) {
|
|
687
|
+
try {
|
|
688
|
+
return JSON.parse(text);
|
|
689
|
+
}
|
|
690
|
+
catch {
|
|
691
|
+
return text;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
219
694
|
//# sourceMappingURL=operator-server.js.map
|