@jinn-network/client 0.1.7 → 0.1.8
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/README.md +67 -1
- package/dist/adapters/mech/adapter.d.ts +19 -1
- package/dist/adapters/mech/adapter.js +130 -14
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +22 -1
- package/dist/adapters/mech/contracts.js +34 -24
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/safe.d.ts +1 -1
- package/dist/adapters/mech/safe.js +5 -3
- package/dist/adapters/mech/safe.js.map +1 -1
- package/dist/adapters/mech/types.d.ts +6 -1
- package/dist/adapters/mech/types.js.map +1 -1
- package/dist/agent/operator-claude.js +8 -0
- package/dist/agent/operator-claude.js.map +1 -1
- package/dist/api/activity-events-endpoint.d.ts +14 -0
- package/dist/api/activity-events-endpoint.js +59 -0
- package/dist/api/activity-events-endpoint.js.map +1 -0
- package/dist/api/bootstrap-endpoint.d.ts +1 -2
- package/dist/api/bootstrap-endpoint.js +42 -24
- package/dist/api/bootstrap-endpoint.js.map +1 -1
- package/dist/api/codex-doctor-endpoint.d.ts +22 -5
- package/dist/api/codex-doctor-endpoint.js +136 -17
- package/dist/api/codex-doctor-endpoint.js.map +1 -1
- package/dist/api/debug-report-endpoint.d.ts +27 -0
- package/dist/api/debug-report-endpoint.js +157 -0
- package/dist/api/debug-report-endpoint.js.map +1 -0
- package/dist/api/gather-status.d.ts +33 -0
- package/dist/api/gather-status.js +211 -26
- package/dist/api/gather-status.js.map +1 -1
- package/dist/api/hermes-doctor-endpoint.d.ts +15 -7
- package/dist/api/hermes-doctor-endpoint.js +56 -19
- package/dist/api/hermes-doctor-endpoint.js.map +1 -1
- package/dist/api/launcher-status.d.ts +4 -2
- package/dist/api/launcher-status.js +11 -10
- package/dist/api/launcher-status.js.map +1 -1
- package/dist/api/launcher-tasks.d.ts +1 -1
- package/dist/api/launcher-tasks.js +12 -8
- package/dist/api/launcher-tasks.js.map +1 -1
- package/dist/api/operator-artifacts-endpoint.js +73 -6
- package/dist/api/operator-artifacts-endpoint.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +7 -1
- package/dist/api/portfolio-v0-build.js +6 -2
- package/dist/api/portfolio-v0-build.js.map +1 -1
- package/dist/api/prediction-v1-build.d.ts +6 -0
- package/dist/api/prediction-v1-build.js +3 -1
- package/dist/api/prediction-v1-build.js.map +1 -1
- package/dist/api/server.d.ts +17 -0
- package/dist/api/server.js +40 -1
- package/dist/api/server.js.map +1 -1
- package/dist/api/setup-endpoints.d.ts +0 -9
- package/dist/api/setup-endpoints.js +11 -153
- package/dist/api/setup-endpoints.js.map +1 -1
- package/dist/api/solvernets-endpoints.js +30 -63
- package/dist/api/solvernets-endpoints.js.map +1 -1
- package/dist/api/status-build.d.ts +115 -2
- package/dist/api/status-build.js +47 -11
- package/dist/api/status-build.js.map +1 -1
- package/dist/api/status-harness-rollup.d.ts +35 -0
- package/dist/api/status-harness-rollup.js +45 -0
- package/dist/api/status-harness-rollup.js.map +1 -0
- package/dist/api/task-runs-build.d.ts +8 -0
- package/dist/api/task-runs-build.js +5 -1
- package/dist/api/task-runs-build.js.map +1 -1
- package/dist/build-info.json +4 -4
- package/dist/build-meta.json +1 -1
- package/dist/captures/live-publisher.js +24 -4
- package/dist/captures/live-publisher.js.map +1 -1
- package/dist/captures/publish.d.ts +1 -1
- package/dist/chain-read-errors.d.ts +12 -0
- package/dist/chain-read-errors.js +26 -1
- package/dist/chain-read-errors.js.map +1 -1
- package/dist/cli/commands/codedigest-revert-check.d.ts +33 -0
- package/dist/cli/commands/codedigest-revert-check.js +249 -0
- package/dist/cli/commands/codedigest-revert-check.js.map +1 -0
- package/dist/cli/commands/solver-nets.d.ts +1 -0
- package/dist/cli/commands/solver-nets.js +177 -22
- package/dist/cli/commands/solver-nets.js.map +1 -1
- package/dist/cli/commands/solver-plugins-block.d.ts +33 -0
- package/dist/cli/commands/solver-plugins-block.js +118 -0
- package/dist/cli/commands/solver-plugins-block.js.map +1 -0
- package/dist/cli/commands/solver-plugins-feedback.d.ts +72 -0
- package/dist/cli/commands/solver-plugins-feedback.js +262 -0
- package/dist/cli/commands/solver-plugins-feedback.js.map +1 -0
- package/dist/cli/commands/solver-plugins-read.d.ts +54 -0
- package/dist/cli/commands/solver-plugins-read.js +259 -0
- package/dist/cli/commands/solver-plugins-read.js.map +1 -0
- package/dist/cli/commands/solver-plugins.d.ts +35 -0
- package/dist/cli/commands/solver-plugins.js +399 -2
- package/dist/cli/commands/solver-plugins.js.map +1 -1
- package/dist/cli/commands/tasks.js +15 -2
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/task-native-readiness.d.ts +7 -0
- package/dist/cli/task-native-readiness.js +7 -5
- package/dist/cli/task-native-readiness.js.map +1 -1
- package/dist/config.d.ts +183 -232
- package/dist/config.js +232 -107
- package/dist/config.js.map +1 -1
- package/dist/daemon/ai-units-gate.d.ts +54 -0
- package/dist/daemon/ai-units-gate.js +82 -0
- package/dist/daemon/ai-units-gate.js.map +1 -0
- package/dist/daemon/creator.js +13 -0
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +10 -0
- package/dist/daemon/daemon.js +203 -30
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/gate-logger.d.ts +9 -0
- package/dist/daemon/gate-logger.js +2 -0
- package/dist/daemon/gate-logger.js.map +1 -0
- package/dist/daemon/jinn-claim-loop.js +22 -4
- package/dist/daemon/jinn-claim-loop.js.map +1 -1
- package/dist/daemon/readiness-gate.d.ts +1 -4
- package/dist/daemon/readiness-gate.js.map +1 -1
- package/dist/daemon/spend-cap-gate.d.ts +40 -0
- package/dist/daemon/spend-cap-gate.js +46 -0
- package/dist/daemon/spend-cap-gate.js.map +1 -0
- package/dist/dashboard/assets/index-CzKxvMcU.css +32 -0
- package/dist/dashboard/assets/index-yVemxHot.js +351 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/discovery/http.js +328 -1
- package/dist/discovery/http.js.map +1 -1
- package/dist/discovery/onchain.js +42 -4
- package/dist/discovery/onchain.js.map +1 -1
- package/dist/discovery/types.d.ts +129 -0
- package/dist/discovery/types.js.map +1 -1
- package/dist/discovery/with-fallback.js +27 -0
- package/dist/discovery/with-fallback.js.map +1 -1
- package/dist/earning/bootstrap.d.ts +8 -3
- package/dist/earning/bootstrap.js +36 -13
- package/dist/earning/bootstrap.js.map +1 -1
- package/dist/earning/safe-adapter.js +23 -11
- package/dist/earning/safe-adapter.js.map +1 -1
- package/dist/earning/types.d.ts +6 -6
- package/dist/earning/viem-clients.d.ts +11 -4
- package/dist/earning/viem-clients.js +14 -5
- package/dist/earning/viem-clients.js.map +1 -1
- package/dist/erc8004/identity.d.ts +19 -3
- package/dist/erc8004/identity.js +38 -11
- package/dist/erc8004/identity.js.map +1 -1
- package/dist/erc8004/index.d.ts +1 -1
- package/dist/erc8004/index.js.map +1 -1
- package/dist/events/types.d.ts +2 -2
- package/dist/harnesses/cost-estimates.d.ts +10 -31
- package/dist/harnesses/cost-estimates.js +11 -43
- package/dist/harnesses/cost-estimates.js.map +1 -1
- package/dist/harnesses/engine/engine.d.ts +28 -4
- package/dist/harnesses/engine/engine.js +103 -17
- package/dist/harnesses/engine/engine.js.map +1 -1
- package/dist/harnesses/engine/persistence.d.ts +21 -4
- package/dist/harnesses/engine/persistence.js +43 -6
- package/dist/harnesses/engine/persistence.js.map +1 -1
- package/dist/harnesses/engine/state.d.ts +9 -0
- package/dist/harnesses/engine/state.js +23 -10
- package/dist/harnesses/engine/state.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/bootstrap.js +4 -2
- package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/config-builder.d.ts +1 -1
- package/dist/harnesses/impls/hermes-agent/config-builder.js +4 -2
- package/dist/harnesses/impls/hermes-agent/config-builder.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/harness.d.ts +14 -0
- package/dist/harnesses/impls/hermes-agent/harness.js +16 -2
- package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
- package/dist/harnesses/impls/hermes-agent/prompt.d.ts +6 -6
- package/dist/harnesses/impls/hermes-agent/prompt.js +6 -6
- package/dist/harnesses/impls/learner/adapters/claude-code.d.ts +17 -0
- package/dist/harnesses/impls/learner/adapters/claude-code.js +113 -14
- package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
- package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +9 -0
- package/dist/harnesses/impls/learner/adapters/codex-code.js +30 -8
- package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
- package/dist/harnesses/impls/learner/harness.d.ts +24 -0
- package/dist/harnesses/impls/learner/harness.js +27 -3
- package/dist/harnesses/impls/learner/harness.js.map +1 -1
- package/dist/harnesses/impls/learner/harvest.d.ts +1 -1
- package/dist/harnesses/impls/learner/harvest.js +23 -5
- package/dist/harnesses/impls/learner/harvest.js.map +1 -1
- package/dist/harnesses/impls/learner/restoration-patch.d.ts +2 -2
- package/dist/harnesses/impls/learner/restoration-patch.js +25 -6
- package/dist/harnesses/impls/learner/restoration-patch.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +21 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.d.ts +74 -5
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js +103 -32
- package/dist/harnesses/impls/swe-rebench-v2-evaluator/hf-fetcher.js.map +1 -1
- package/dist/harnesses/readiness-registry.d.ts +7 -0
- package/dist/harnesses/readiness-registry.js +9 -0
- package/dist/harnesses/readiness-registry.js.map +1 -1
- package/dist/learner/revert-decision.d.ts +59 -0
- package/dist/learner/revert-decision.js +53 -0
- package/dist/learner/revert-decision.js.map +1 -0
- package/dist/learner/revert-stats.d.ts +24 -0
- package/dist/learner/revert-stats.js +44 -0
- package/dist/learner/revert-stats.js.map +1 -0
- package/dist/main.js +177 -104
- package/dist/main.js.map +1 -1
- package/dist/mcp/get-codedigest-reward.d.ts +13 -0
- package/dist/mcp/get-codedigest-reward.js +23 -0
- package/dist/mcp/get-codedigest-reward.js.map +1 -0
- package/dist/mcp/server.js +23 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/observability/debug-report-assemble.d.ts +43 -0
- package/dist/observability/debug-report-assemble.js +80 -0
- package/dist/observability/debug-report-assemble.js.map +1 -0
- package/dist/observability/emit-event.d.ts +9 -2
- package/dist/observability/emit-event.js +36 -2
- package/dist/observability/emit-event.js.map +1 -1
- package/dist/observability/file-logger.d.ts +69 -0
- package/dist/observability/file-logger.js +177 -0
- package/dist/observability/file-logger.js.map +1 -0
- package/dist/observability/redact-secrets.d.ts +65 -0
- package/dist/observability/redact-secrets.js +300 -0
- package/dist/observability/redact-secrets.js.map +1 -0
- package/dist/observability/tar.d.ts +30 -0
- package/dist/observability/tar.js +102 -0
- package/dist/observability/tar.js.map +1 -0
- package/dist/plugins/learner/skills/learn/consolidator-prompt.md +18 -1
- package/dist/plugins/learner/skills/learn/promoter-prompt.md +72 -1
- package/dist/preflight/pidfile-liveness.d.ts +44 -0
- package/dist/preflight/pidfile-liveness.js +103 -0
- package/dist/preflight/pidfile-liveness.js.map +1 -0
- package/dist/preflight/rpc-network.d.ts +40 -0
- package/dist/preflight/rpc-network.js +67 -1
- package/dist/preflight/rpc-network.js.map +1 -1
- package/dist/rpc/transport.d.ts +109 -0
- package/dist/rpc/transport.js +220 -0
- package/dist/rpc/transport.js.map +1 -0
- package/dist/scripts/donation-consumption-acceptance.js +7 -28
- package/dist/scripts/donation-consumption-acceptance.js.map +1 -1
- package/dist/scripts/swe-rebench-v2-pytest-missing.json +16 -0
- package/dist/solver-nets/prediction-operator-ux.d.ts +1 -2
- package/dist/solver-nets/prediction-operator-ux.js +56 -53
- package/dist/solver-nets/prediction-operator-ux.js.map +1 -1
- package/dist/solver-nets/registry.d.ts +19 -1
- package/dist/solver-nets/registry.js +37 -24
- package/dist/solver-nets/registry.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-pool.d.ts +9 -2
- package/dist/solver-types/_swe-rebench-v2-pool.js +15 -20
- package/dist/solver-types/_swe-rebench-v2-pool.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-state.d.ts +15 -0
- package/dist/solver-types/_swe-rebench-v2-state.js +19 -0
- package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
- package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +116 -2
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js +296 -21
- package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2-auto.d.ts +20 -11
- package/dist/solver-types/swe-rebench-v2-auto.js +64 -19
- package/dist/solver-types/swe-rebench-v2-auto.js.map +1 -1
- package/dist/solver-types/swe-rebench-v2.d.ts +8 -2
- package/dist/solver-types/swe-rebench-v2.js +127 -11
- package/dist/solver-types/swe-rebench-v2.js.map +1 -1
- package/dist/solvernets/daemon-init.d.ts +1 -1
- package/dist/solvernets/daemon-init.js +19 -4
- package/dist/solvernets/daemon-init.js.map +1 -1
- package/dist/solvernets/launched-record-dispatcher.d.ts +4 -0
- package/dist/solvernets/launched-record-dispatcher.js +10 -4
- package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
- package/dist/solvernets/registry-client-erc8004.js +11 -0
- package/dist/solvernets/registry-client-erc8004.js.map +1 -1
- package/dist/solvernets/store.d.ts +2 -2
- package/dist/spend/ai-units-config.d.ts +39 -0
- package/dist/spend/ai-units-config.js +28 -0
- package/dist/spend/ai-units-config.js.map +1 -0
- package/dist/spend/ai-units.d.ts +89 -0
- package/dist/spend/ai-units.js +156 -0
- package/dist/spend/ai-units.js.map +1 -0
- package/dist/spend/cost-surface-status.d.ts +12 -0
- package/dist/spend/cost-surface-status.js +24 -0
- package/dist/spend/cost-surface-status.js.map +1 -0
- package/dist/spend/credential.d.ts +39 -0
- package/dist/spend/credential.js +71 -0
- package/dist/spend/credential.js.map +1 -0
- package/dist/spend/daemon-config.d.ts +13 -0
- package/dist/spend/daemon-config.js +24 -0
- package/dist/spend/daemon-config.js.map +1 -0
- package/dist/spend/pricing.d.ts +16 -0
- package/dist/spend/pricing.js +26 -0
- package/dist/spend/pricing.js.map +1 -0
- package/dist/spend/record.d.ts +13 -0
- package/dist/spend/record.js +36 -0
- package/dist/spend/record.js.map +1 -0
- package/dist/spend/usage.d.ts +27 -0
- package/dist/spend/usage.js +113 -0
- package/dist/spend/usage.js.map +1 -0
- package/dist/store/store.d.ts +101 -0
- package/dist/store/store.js +304 -4
- package/dist/store/store.js.map +1 -1
- package/dist/trajectory/transcript-parsers/codex-session.d.ts +12 -6
- package/dist/trajectory/transcript-parsers/codex-session.js +114 -13
- package/dist/trajectory/transcript-parsers/codex-session.js.map +1 -1
- package/dist/trajectory/transcript-parsers/types.d.ts +8 -8
- package/dist/trajectory/transcript-session-dirs.d.ts +18 -0
- package/dist/trajectory/transcript-session-dirs.js +85 -0
- package/dist/trajectory/transcript-session-dirs.js.map +1 -0
- package/dist/trajectory/transcript-watcher.d.ts +20 -1
- package/dist/trajectory/transcript-watcher.js +108 -32
- package/dist/trajectory/transcript-watcher.js.map +1 -1
- package/dist/tx-retry.d.ts +25 -0
- package/dist/tx-retry.js +95 -7
- package/dist/tx-retry.js.map +1 -1
- package/dist/types/payloads/portfolio-v0.d.ts +3 -3
- package/dist/types/payloads/prediction-apy-v0.d.ts +3 -3
- package/dist/types/payloads/prediction-v0.d.ts +12 -12
- package/package.json +11 -3
- package/plugins/learner/skills/learn/consolidator-prompt.md +18 -1
- package/plugins/learner/skills/learn/promoter-prompt.md +72 -1
- package/plugins/swe-rebench-v2-diffmin/README.md +10 -9
- package/plugins/swe-rebench-v2-diffmin/jinn.plugin.json +1 -1
- package/plugins/swe-rebench-v2-diffmin/skills/diffmin/SKILL.md +15 -10
- package/plugins/swe-rebench-v2-diffmin/skills/test-map/SKILL.md +10 -12
- package/plugins/swe-rebench-v2-runtime/.claude-plugin/plugin.json +1 -1
- package/plugins/swe-rebench-v2-runtime/.codex-plugin/plugin.json +3 -3
- package/plugins/swe-rebench-v2-runtime/README.md +6 -6
- package/plugins/swe-rebench-v2-runtime/jinn.plugin.json +2 -3
- package/plugins/swe-rebench-v2-runtime/skills/task/SKILL.md +81 -0
- package/dist/dashboard/assets/index-BUlE8F3Y.js +0 -330
- package/dist/dashboard/assets/index-blqc7eqq.css +0 -32
- package/plugins/swe-rebench-v2-runtime/skills/orient/SKILL.md +0 -29
- package/plugins/swe-rebench-v2-runtime/skills/plan/SKILL.md +0 -53
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `jinn solver-plugins {list-feedback, discover, status}` — read verbs.
|
|
3
|
+
*
|
|
4
|
+
* None of the read verbs resolve the keystore password. They use the same
|
|
5
|
+
* `discoveryApiFactory` the daemon uses, plus a read-only
|
|
6
|
+
* `ReputationRegistryClient` (`password: undefined` → `walletClient`
|
|
7
|
+
* unbuilt → reads work, writes throw).
|
|
8
|
+
*
|
|
9
|
+
* Output envelopes mirror the write-verb convention (`verb` field +
|
|
10
|
+
* structured payload). Failure modes:
|
|
11
|
+
* - `agentid_unresolvable` (list-feedback only — `status` reports
|
|
12
|
+
* `{ status: 'not_published' }` instead, since "no record" is the
|
|
13
|
+
* answer to a status read).
|
|
14
|
+
* - `discovery_unavailable` (factory throws `DiscoveryUnavailableError`).
|
|
15
|
+
* - `config_load_failed`.
|
|
16
|
+
*/
|
|
17
|
+
import type { Address } from 'viem';
|
|
18
|
+
import type { CommandContext } from '../command.js';
|
|
19
|
+
import type { SolverPluginsDeps } from './solver-plugins.js';
|
|
20
|
+
export interface StatusOptions {
|
|
21
|
+
pluginCid: string;
|
|
22
|
+
configPath: string | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface DiscoverOptions {
|
|
25
|
+
solverType: string | undefined;
|
|
26
|
+
builderAgentId: string | undefined;
|
|
27
|
+
includeRevoked: boolean | undefined;
|
|
28
|
+
limit: number | undefined;
|
|
29
|
+
configPath: string | undefined;
|
|
30
|
+
}
|
|
31
|
+
export interface ListFeedbackOptions {
|
|
32
|
+
pluginCid: string;
|
|
33
|
+
client: Address | undefined;
|
|
34
|
+
includeRevoked: boolean;
|
|
35
|
+
configPath: string | undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* `discover` lists published plug-in rows directly from the indexer. The
|
|
39
|
+
* `PluginPublication` row already carries name/version/supports/builderAgentId,
|
|
40
|
+
* so no IPFS payload dereference is required — `ipfsFetch` is held on
|
|
41
|
+
* SolverPluginsDeps for symmetry / future use but this handler does not
|
|
42
|
+
* consume it (a plan refinement vs. the design note's "missing IPFS config"
|
|
43
|
+
* failure mode; that mode does not apply because the discovery row is
|
|
44
|
+
* self-describing).
|
|
45
|
+
*/
|
|
46
|
+
export declare function discoverHandler(ctx: CommandContext, opts: DiscoverOptions, deps: SolverPluginsDeps): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* `status` composes the publication row (or the absence of one) with the
|
|
49
|
+
* read-only `ReputationRegistry.getSummary` and the operator-local
|
|
50
|
+
* `solverPlugins.blockedCids` flag. A missing publication is a valid answer
|
|
51
|
+
* (`{ status: 'not_published' }`, exit 0), not an error.
|
|
52
|
+
*/
|
|
53
|
+
export declare function statusHandler(ctx: CommandContext, opts: StatusOptions, deps: SolverPluginsDeps): Promise<void>;
|
|
54
|
+
export declare function listFeedbackHandler(ctx: CommandContext, opts: ListFeedbackOptions, deps: SolverPluginsDeps): Promise<void>;
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `jinn solver-plugins {list-feedback, discover, status}` — read verbs.
|
|
3
|
+
*
|
|
4
|
+
* None of the read verbs resolve the keystore password. They use the same
|
|
5
|
+
* `discoveryApiFactory` the daemon uses, plus a read-only
|
|
6
|
+
* `ReputationRegistryClient` (`password: undefined` → `walletClient`
|
|
7
|
+
* unbuilt → reads work, writes throw).
|
|
8
|
+
*
|
|
9
|
+
* Output envelopes mirror the write-verb convention (`verb` field +
|
|
10
|
+
* structured payload). Failure modes:
|
|
11
|
+
* - `agentid_unresolvable` (list-feedback only — `status` reports
|
|
12
|
+
* `{ status: 'not_published' }` instead, since "no record" is the
|
|
13
|
+
* answer to a status read).
|
|
14
|
+
* - `discovery_unavailable` (factory throws `DiscoveryUnavailableError`).
|
|
15
|
+
* - `config_load_failed`.
|
|
16
|
+
*/
|
|
17
|
+
import { writeJson } from './solver-plugins.js';
|
|
18
|
+
import { getReputationRegistryAddress } from '../../erc8004/addresses.js';
|
|
19
|
+
import { DiscoveryUnavailableError } from '../../discovery/types.js';
|
|
20
|
+
/**
|
|
21
|
+
* Load the operator config, emitting a `config_load_failed` envelope and
|
|
22
|
+
* exiting on failure. Returns `null` only after `ctx.exit` has been called.
|
|
23
|
+
*/
|
|
24
|
+
function loadConfigOrEmit(ctx, configPath, deps) {
|
|
25
|
+
try {
|
|
26
|
+
return deps.loadConfig(configPath);
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
writeJson(ctx, {
|
|
30
|
+
error: { code: 'config_load_failed', message: err instanceof Error ? err.message : String(err) },
|
|
31
|
+
});
|
|
32
|
+
ctx.exit(1);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function emitDiscoveryUnavailable(ctx, config, err) {
|
|
37
|
+
writeJson(ctx, {
|
|
38
|
+
error: {
|
|
39
|
+
code: 'discovery_unavailable',
|
|
40
|
+
message: `Indexer unavailable (mode=${config.discovery?.mode ?? 'onchain'}${config.discovery?.url ? `, url=${config.discovery.url}` : ''}): ${err.message}`,
|
|
41
|
+
details: {
|
|
42
|
+
mode: config.discovery?.mode ?? 'onchain',
|
|
43
|
+
...(config.discovery?.url ? { url: config.discovery.url } : {}),
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
ctx.exit(1);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* `discover` lists published plug-in rows directly from the indexer. The
|
|
51
|
+
* `PluginPublication` row already carries name/version/supports/builderAgentId,
|
|
52
|
+
* so no IPFS payload dereference is required — `ipfsFetch` is held on
|
|
53
|
+
* SolverPluginsDeps for symmetry / future use but this handler does not
|
|
54
|
+
* consume it (a plan refinement vs. the design note's "missing IPFS config"
|
|
55
|
+
* failure mode; that mode does not apply because the discovery row is
|
|
56
|
+
* self-describing).
|
|
57
|
+
*/
|
|
58
|
+
export async function discoverHandler(ctx, opts, deps) {
|
|
59
|
+
const config = loadConfigOrEmit(ctx, opts.configPath, deps);
|
|
60
|
+
if (!config)
|
|
61
|
+
return;
|
|
62
|
+
try {
|
|
63
|
+
const api = deps.discoveryApiFactory(config);
|
|
64
|
+
const plugins = await api.listPluginPublications({
|
|
65
|
+
...(opts.solverType ? { solverType: opts.solverType } : {}),
|
|
66
|
+
...(opts.builderAgentId ? { builderAgentId: opts.builderAgentId } : {}),
|
|
67
|
+
...(opts.includeRevoked !== undefined ? { includeRevoked: opts.includeRevoked } : {}),
|
|
68
|
+
...(opts.limit !== undefined ? { limit: opts.limit } : {}),
|
|
69
|
+
});
|
|
70
|
+
writeJson(ctx, {
|
|
71
|
+
verb: 'solver-plugins discover',
|
|
72
|
+
plugins: plugins.map((p) => ({
|
|
73
|
+
cid: p.cid,
|
|
74
|
+
builderAgentId: p.builderAgentId,
|
|
75
|
+
name: p.name,
|
|
76
|
+
version: p.version,
|
|
77
|
+
supports: p.supports,
|
|
78
|
+
publishedAt: p.publishedAt,
|
|
79
|
+
revoked: p.revoked,
|
|
80
|
+
...(p.revokedReason ? { revokedReason: p.revokedReason } : {}),
|
|
81
|
+
pluginSha256: p.pluginSha256,
|
|
82
|
+
})),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
if (err instanceof DiscoveryUnavailableError) {
|
|
87
|
+
emitDiscoveryUnavailable(ctx, config, err);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* `status` composes the publication row (or the absence of one) with the
|
|
95
|
+
* read-only `ReputationRegistry.getSummary` and the operator-local
|
|
96
|
+
* `solverPlugins.blockedCids` flag. A missing publication is a valid answer
|
|
97
|
+
* (`{ status: 'not_published' }`, exit 0), not an error.
|
|
98
|
+
*/
|
|
99
|
+
export async function statusHandler(ctx, opts, deps) {
|
|
100
|
+
const config = loadConfigOrEmit(ctx, opts.configPath, deps);
|
|
101
|
+
if (!config)
|
|
102
|
+
return;
|
|
103
|
+
const locallyBlocked = config.solverPlugins?.blockedCids?.includes(opts.pluginCid) ?? false;
|
|
104
|
+
let row;
|
|
105
|
+
try {
|
|
106
|
+
const api = deps.discoveryApiFactory(config);
|
|
107
|
+
const rows = await api.listPluginPublications({});
|
|
108
|
+
row = rows.find((r) => r.cid === opts.pluginCid);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
if (err instanceof DiscoveryUnavailableError) {
|
|
112
|
+
emitDiscoveryUnavailable(ctx, config, err);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
throw err;
|
|
116
|
+
}
|
|
117
|
+
if (!row) {
|
|
118
|
+
writeJson(ctx, {
|
|
119
|
+
verb: 'solver-plugins status',
|
|
120
|
+
pluginCid: opts.pluginCid,
|
|
121
|
+
status: 'not_published',
|
|
122
|
+
locallyBlocked,
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (row.revoked) {
|
|
127
|
+
writeJson(ctx, {
|
|
128
|
+
verb: 'solver-plugins status',
|
|
129
|
+
pluginCid: opts.pluginCid,
|
|
130
|
+
status: 'revoked',
|
|
131
|
+
publication: {
|
|
132
|
+
cid: row.cid,
|
|
133
|
+
builderAgentId: row.builderAgentId,
|
|
134
|
+
name: row.name,
|
|
135
|
+
version: row.version,
|
|
136
|
+
supports: row.supports,
|
|
137
|
+
publishedAt: row.publishedAt,
|
|
138
|
+
pluginSha256: row.pluginSha256,
|
|
139
|
+
},
|
|
140
|
+
...(row.revokedReason ? { revokedReason: row.revokedReason } : {}),
|
|
141
|
+
locallyBlocked,
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Active publication: also try to summarise reputation. Empty client list →
|
|
146
|
+
// no summary (getSummary reverts on empty input by design).
|
|
147
|
+
const chainId = config.network === 'testnet' ? 84532 : 8453;
|
|
148
|
+
const reputationRegistryAddress = getReputationRegistryAddress(chainId);
|
|
149
|
+
let summarySerialised = null;
|
|
150
|
+
if (reputationRegistryAddress) {
|
|
151
|
+
const client = deps.reputationClientFactory({
|
|
152
|
+
reputationRegistryAddress,
|
|
153
|
+
safeAddress: undefined,
|
|
154
|
+
rpcUrl: config.rpcUrl,
|
|
155
|
+
network: config.network === 'testnet' ? 'base-sepolia' : 'base',
|
|
156
|
+
earningDir: config.earningDir,
|
|
157
|
+
password: undefined,
|
|
158
|
+
});
|
|
159
|
+
const builderAgentId = BigInt(row.builderAgentId);
|
|
160
|
+
const clients = await client.getClients(builderAgentId);
|
|
161
|
+
if (clients.length > 0) {
|
|
162
|
+
const summary = await client.getSummary(builderAgentId, { clientAddresses: clients });
|
|
163
|
+
summarySerialised = {
|
|
164
|
+
count: summary.count.toString(),
|
|
165
|
+
summaryValue: summary.summaryValue.toString(),
|
|
166
|
+
summaryValueDecimals: summary.summaryValueDecimals,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
writeJson(ctx, {
|
|
171
|
+
verb: 'solver-plugins status',
|
|
172
|
+
pluginCid: opts.pluginCid,
|
|
173
|
+
status: 'published',
|
|
174
|
+
publication: {
|
|
175
|
+
cid: row.cid,
|
|
176
|
+
builderAgentId: row.builderAgentId,
|
|
177
|
+
name: row.name,
|
|
178
|
+
version: row.version,
|
|
179
|
+
supports: row.supports,
|
|
180
|
+
publishedAt: row.publishedAt,
|
|
181
|
+
pluginSha256: row.pluginSha256,
|
|
182
|
+
},
|
|
183
|
+
summary: summarySerialised,
|
|
184
|
+
locallyBlocked,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
export async function listFeedbackHandler(ctx, opts, deps) {
|
|
188
|
+
const config = loadConfigOrEmit(ctx, opts.configPath, deps);
|
|
189
|
+
if (!config)
|
|
190
|
+
return;
|
|
191
|
+
let builderAgentIdStr;
|
|
192
|
+
try {
|
|
193
|
+
const api = deps.discoveryApiFactory(config);
|
|
194
|
+
const rows = await api.listPluginPublications({});
|
|
195
|
+
builderAgentIdStr = rows.find((r) => r.cid === opts.pluginCid)?.builderAgentId;
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
if (err instanceof DiscoveryUnavailableError) {
|
|
199
|
+
emitDiscoveryUnavailable(ctx, config, err);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
throw err;
|
|
203
|
+
}
|
|
204
|
+
if (!builderAgentIdStr) {
|
|
205
|
+
writeJson(ctx, {
|
|
206
|
+
error: {
|
|
207
|
+
code: 'agentid_unresolvable',
|
|
208
|
+
message: `No plug-in publication record found for cid ${opts.pluginCid} (discovery mode=${config.discovery?.mode ?? 'onchain'}).`,
|
|
209
|
+
details: { mode: config.discovery?.mode ?? 'onchain' },
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
ctx.exit(1);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const chainId = config.network === 'testnet' ? 84532 : 8453;
|
|
216
|
+
const reputationRegistryAddress = getReputationRegistryAddress(chainId);
|
|
217
|
+
if (!reputationRegistryAddress) {
|
|
218
|
+
writeJson(ctx, {
|
|
219
|
+
error: {
|
|
220
|
+
code: 'config_load_failed',
|
|
221
|
+
message: `No ReputationRegistry address known for chainId ${chainId}.`,
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
ctx.exit(1);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
// Read-only client — no Safe needed (Safe routing is for writes).
|
|
228
|
+
const client = deps.reputationClientFactory({
|
|
229
|
+
reputationRegistryAddress,
|
|
230
|
+
safeAddress: undefined,
|
|
231
|
+
rpcUrl: config.rpcUrl,
|
|
232
|
+
network: config.network === 'testnet' ? 'base-sepolia' : 'base',
|
|
233
|
+
earningDir: config.earningDir,
|
|
234
|
+
password: undefined,
|
|
235
|
+
});
|
|
236
|
+
const builderAgentId = BigInt(builderAgentIdStr);
|
|
237
|
+
const records = await client.readAllFeedback(builderAgentId, {
|
|
238
|
+
...(opts.client ? { clientAddresses: [opts.client] } : {}),
|
|
239
|
+
includeRevoked: opts.includeRevoked,
|
|
240
|
+
});
|
|
241
|
+
// Marshal BigInts to strings for JSON-safe output.
|
|
242
|
+
const serialised = records.map((r) => ({
|
|
243
|
+
agentId: r.agentId.toString(),
|
|
244
|
+
client: r.client,
|
|
245
|
+
feedbackIndex: r.feedbackIndex.toString(),
|
|
246
|
+
score: r.score.toString(),
|
|
247
|
+
scoreDecimals: r.scoreDecimals,
|
|
248
|
+
tag1: r.tag1,
|
|
249
|
+
tag2: r.tag2,
|
|
250
|
+
revoked: r.revoked,
|
|
251
|
+
}));
|
|
252
|
+
writeJson(ctx, {
|
|
253
|
+
verb: 'solver-plugins list-feedback',
|
|
254
|
+
pluginCid: opts.pluginCid,
|
|
255
|
+
targetAgentId: builderAgentIdStr,
|
|
256
|
+
records: serialised,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=solver-plugins-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solver-plugins-read.js","sourceRoot":"","sources":["../../../src/cli/commands/solver-plugins-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,11 @@ import { loadConfig as defaultLoadConfig } from '../../config.js';
|
|
|
16
16
|
import { FleetBootstrapper } from '../../earning/bootstrap.js';
|
|
17
17
|
import { PluginRegistryPublisher } from '../../erc8004/plugin-registry.js';
|
|
18
18
|
import { pinFileToIpfs as defaultPinFileToIpfs } from '../../adapters/mech/ipfs-pinfile.js';
|
|
19
|
+
import { fetchFromIpfs as defaultFetchFromIpfs } from '../../adapters/mech/ipfs.js';
|
|
19
20
|
import { resolveCliPassword as defaultResolveCliPassword } from '../password.js';
|
|
20
21
|
import { type JinnOnchainNetwork } from '../../earning/viem-clients.js';
|
|
22
|
+
import { ReputationRegistryClient } from '../../erc8004/reputation.js';
|
|
23
|
+
import type { DiscoveryAPI } from '../../discovery/types.js';
|
|
21
24
|
export declare function writeJson(ctx: CommandContext, value: unknown): void;
|
|
22
25
|
/**
|
|
23
26
|
* Args passed to `publisherFactory`.
|
|
@@ -37,6 +40,33 @@ export interface PublisherFactoryArgs {
|
|
|
37
40
|
earningDir: string;
|
|
38
41
|
password: string;
|
|
39
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Args passed to `reputationClientFactory`.
|
|
45
|
+
*
|
|
46
|
+
* When `password === undefined`, the factory builds a read-only client: reads
|
|
47
|
+
* work, writes throw the canonical `walletClient required` error from
|
|
48
|
+
* `ReputationRegistryClient`. The read-only path is what `list-feedback`,
|
|
49
|
+
* `status`, and (indirectly) `discover` consume — none of them require a
|
|
50
|
+
* keystore password.
|
|
51
|
+
*/
|
|
52
|
+
export interface ReputationClientFactoryArgs {
|
|
53
|
+
reputationRegistryAddress: Address;
|
|
54
|
+
safeAddress: Address | undefined;
|
|
55
|
+
rpcUrl: string;
|
|
56
|
+
network: JinnOnchainNetwork;
|
|
57
|
+
earningDir: string;
|
|
58
|
+
password: string | undefined;
|
|
59
|
+
}
|
|
60
|
+
export type ReputationClientHandle = Pick<ReputationRegistryClient, 'giveFeedback' | 'respondToFeedback' | 'revokeFeedback' | 'readAllFeedback' | 'getSummary' | 'getClients'>;
|
|
61
|
+
/**
|
|
62
|
+
* Filesystem shim consumed by `block`'s local-config write. Held on the deps
|
|
63
|
+
* bag so tests can inject read/write failure modes without monkey-patching
|
|
64
|
+
* `fs`. Production wires the real fs-backed implementations.
|
|
65
|
+
*/
|
|
66
|
+
export interface ConfigFileIo {
|
|
67
|
+
readConfigFile: (configPath: string) => Record<string, unknown>;
|
|
68
|
+
writeConfigFile: (configPath: string, value: Record<string, unknown>) => void;
|
|
69
|
+
}
|
|
40
70
|
export interface SolverPluginsDeps extends BaseCommandDeps {
|
|
41
71
|
bootstrapperFactory: (cfg: ReturnType<typeof defaultLoadConfig>) => Pick<FleetBootstrapper, 'ensureStage1'>;
|
|
42
72
|
pinFileToIpfs: typeof defaultPinFileToIpfs;
|
|
@@ -44,6 +74,11 @@ export interface SolverPluginsDeps extends BaseCommandDeps {
|
|
|
44
74
|
publish: PluginRegistryPublisher['publish'];
|
|
45
75
|
revoke: PluginRegistryPublisher['revoke'];
|
|
46
76
|
};
|
|
77
|
+
reputationClientFactory: (args: ReputationClientFactoryArgs) => ReputationClientHandle;
|
|
78
|
+
discoveryApiFactory: (cfg: ReturnType<typeof defaultLoadConfig>) => DiscoveryAPI;
|
|
79
|
+
ipfsFetch: typeof defaultFetchFromIpfs;
|
|
80
|
+
readConfigFile: ConfigFileIo['readConfigFile'];
|
|
81
|
+
writeConfigFile: ConfigFileIo['writeConfigFile'];
|
|
47
82
|
resolveCliPassword: typeof defaultResolveCliPassword;
|
|
48
83
|
now: () => number;
|
|
49
84
|
}
|