@jinn-network/client 0.1.2 → 0.1.3-canary.262e5cda
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 +38 -14
- 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 +2 -2
- 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 +2 -2
- package/dist/adapters/local/adapter.js +8 -8
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/mech/adapter.d.ts +3 -4
- package/dist/adapters/mech/adapter.js +86 -50
- package/dist/adapters/mech/adapter.js.map +1 -1
- package/dist/adapters/mech/contracts.d.ts +6 -4
- package/dist/adapters/mech/contracts.js +118 -14
- package/dist/adapters/mech/contracts.js.map +1 -1
- package/dist/adapters/mech/ipfs.d.ts +61 -6
- package/dist/adapters/mech/ipfs.js +159 -26
- 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 +47 -21
- 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 +5 -1
- 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/peers.js +20 -5
- package/dist/api/peers.js.map +1 -1
- package/dist/api/portfolio-v0-build.d.ts +6 -0
- package/dist/api/portfolio-v0-build.js +6 -1
- package/dist/api/portfolio-v0-build.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 +54 -0
- package/dist/api/server.js +239 -13
- 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 +9 -1
- 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 +36 -0
- package/dist/cli/commands/create.js +374 -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 +136 -121
- 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/history.d.ts +10 -1
- package/dist/cli/commands/history.js +66 -57
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/impls.d.ts +18 -0
- package/dist/cli/commands/impls.js +208 -0
- package/dist/cli/commands/impls.js.map +1 -0
- package/dist/cli/commands/init.js +4 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/intents.js +13 -9
- package/dist/cli/commands/intents.js.map +1 -1
- 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/plug-ins.d.ts +34 -0
- package/dist/cli/commands/plug-ins.js +282 -0
- package/dist/cli/commands/plug-ins.js.map +1 -0
- package/dist/cli/commands/plugin-install.d.ts +10 -0
- package/dist/cli/commands/plugin-install.js +226 -14
- package/dist/cli/commands/plugin-install.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 +232 -90
- package/dist/cli/commands/run.js.map +1 -1
- 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/submit-intent.js +33 -6
- package/dist/cli/commands/submit-intent.js.map +1 -1
- 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 +102 -97
- 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 +2 -1
- package/dist/cli/execution-context.js.map +1 -1
- package/dist/cli/help.js +7 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.js +18 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/intent-registry-access.d.ts +33 -1
- package/dist/cli/intent-registry-access.js +40 -2
- package/dist/cli/intent-registry-access.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 +5 -5
- package/dist/cli/password.js.map +1 -1
- package/dist/config.d.ts +883 -11
- package/dist/config.js +435 -4
- 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 +228 -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 +107 -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 +2 -2
- package/dist/daemon/creator.js +2 -2
- package/dist/daemon/creator.js.map +1 -1
- package/dist/daemon/daemon.d.ts +70 -15
- package/dist/daemon/daemon.js +159 -41
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/delivery-watcher.js +31 -1
- 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/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/index.d.ts +1 -1
- package/dist/intents/kinds/index.d.ts +10 -0
- package/dist/intents/kinds/index.js +7 -0
- package/dist/intents/kinds/index.js.map +1 -1
- package/dist/intents/kinds/learner-loop-test.d.ts +2 -0
- package/dist/intents/kinds/learner-loop-test.js +39 -0
- package/dist/intents/kinds/learner-loop-test.js.map +1 -0
- package/dist/intents/kinds/prediction-apy-v0.js +5 -1
- package/dist/intents/kinds/prediction-apy-v0.js.map +1 -1
- package/dist/intents/kinds/prediction-v0.js +5 -0
- package/dist/intents/kinds/prediction-v0.js.map +1 -1
- package/dist/intents/kinds/spec-kind.d.ts +18 -1
- package/dist/intents/posting-service.d.ts +3 -5
- package/dist/intents/posting-service.js +16 -50
- package/dist/intents/posting-service.js.map +1 -1
- package/dist/intents/prediction-apy-v0-auto.d.ts +12 -2
- package/dist/intents/prediction-apy-v0-auto.js +27 -2
- package/dist/intents/prediction-apy-v0-auto.js.map +1 -1
- package/dist/intents/prediction-v0-auto.d.ts +14 -4
- package/dist/intents/prediction-v0-auto.js +29 -5
- package/dist/intents/prediction-v0-auto.js.map +1 -1
- package/dist/intents/signing.d.ts +13 -0
- package/dist/intents/signing.js +27 -0
- package/dist/intents/signing.js.map +1 -0
- package/dist/intents/sources.d.ts +12 -5
- package/dist/intents/sources.js +11 -11
- package/dist/intents/sources.js.map +1 -1
- package/dist/main.d.ts +5 -2
- package/dist/main.js +792 -66
- 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 +20 -3
- package/dist/mcp/operator-server.js +500 -25
- 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.js +103 -58
- package/dist/mcp/server.js.map +1 -1
- package/dist/observability/emit-event.d.ts +1 -1
- 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/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/restorer/capability/index.d.ts +82 -0
- package/dist/restorer/capability/index.js +12 -0
- package/dist/restorer/capability/index.js.map +1 -0
- package/dist/restorer/capability/scoped-rpc.d.ts +12 -0
- package/dist/restorer/capability/scoped-rpc.js +34 -0
- package/dist/restorer/capability/scoped-rpc.js.map +1 -0
- package/dist/restorer/capability/scoped-secrets.d.ts +8 -0
- package/dist/restorer/capability/scoped-secrets.js +10 -0
- package/dist/restorer/capability/scoped-secrets.js.map +1 -0
- package/dist/restorer/capability/scoped-signer.d.ts +46 -0
- package/dist/restorer/capability/scoped-signer.js +73 -0
- package/dist/restorer/capability/scoped-signer.js.map +1 -0
- package/dist/restorer/engine/canonical-json.d.ts +0 -17
- package/dist/restorer/engine/canonical-json.js +56 -49
- package/dist/restorer/engine/canonical-json.js.map +1 -1
- package/dist/restorer/engine/claim.js +8 -1
- package/dist/restorer/engine/claim.js.map +1 -1
- package/dist/restorer/engine/delivery.d.ts +2 -0
- package/dist/restorer/engine/delivery.js +2 -2
- package/dist/restorer/engine/delivery.js.map +1 -1
- package/dist/restorer/engine/engine.d.ts +143 -26
- package/dist/restorer/engine/engine.js +485 -104
- package/dist/restorer/engine/engine.js.map +1 -1
- package/dist/restorer/engine/envelope-assembly.d.ts +65 -0
- package/dist/restorer/engine/envelope-assembly.js +60 -0
- package/dist/restorer/engine/envelope-assembly.js.map +1 -0
- package/dist/restorer/engine/packaging.d.ts +30 -30
- package/dist/restorer/engine/packaging.js +73 -47
- package/dist/restorer/engine/packaging.js.map +1 -1
- package/dist/restorer/engine/persistence.d.ts +7 -7
- package/dist/restorer/engine/persistence.js +4 -4
- package/dist/restorer/engine/persistence.js.map +1 -1
- package/dist/restorer/engine/registry.d.ts +24 -13
- package/dist/restorer/engine/registry.js +16 -13
- package/dist/restorer/engine/registry.js.map +1 -1
- package/dist/restorer/engine/validate-manifest.d.ts +23 -0
- package/dist/restorer/engine/validate-manifest.js +49 -0
- package/dist/restorer/engine/validate-manifest.js.map +1 -0
- package/dist/restorer/engine/verification-stub.d.ts +18 -0
- package/dist/restorer/engine/verification-stub.js +18 -0
- package/dist/restorer/engine/verification-stub.js.map +1 -0
- package/dist/restorer/external-impls/index.d.ts +3 -0
- package/dist/restorer/external-impls/index.js +2 -0
- package/dist/restorer/external-impls/index.js.map +1 -0
- package/dist/restorer/external-impls/loader.d.ts +49 -0
- package/dist/restorer/external-impls/loader.js +138 -0
- package/dist/restorer/external-impls/loader.js.map +1 -0
- package/dist/restorer/external-impls/package-hash.d.ts +26 -0
- package/dist/restorer/external-impls/package-hash.js +102 -0
- package/dist/restorer/external-impls/package-hash.js.map +1 -0
- package/dist/restorer/external-impls/types.d.ts +42 -0
- package/dist/restorer/external-impls/types.js +10 -0
- package/dist/restorer/external-impls/types.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/adapters/claude-code.d.ts +38 -0
- package/dist/restorer/impls/claude-code-learner/adapters/claude-code.js +200 -0
- package/dist/restorer/impls/claude-code-learner/adapters/claude-code.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/harvest.d.ts +19 -0
- package/dist/restorer/impls/claude-code-learner/harvest.js +146 -0
- package/dist/restorer/impls/claude-code-learner/harvest.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/index.d.ts +15 -0
- package/dist/restorer/impls/claude-code-learner/index.js +14 -0
- package/dist/restorer/impls/claude-code-learner/index.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/mcp-config.d.ts +48 -0
- package/dist/restorer/impls/claude-code-learner/mcp-config.js +52 -0
- package/dist/restorer/impls/claude-code-learner/mcp-config.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/plugin-path.d.ts +14 -0
- package/dist/restorer/impls/claude-code-learner/plugin-path.js +30 -0
- package/dist/restorer/impls/claude-code-learner/plugin-path.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/restorer.d.ts +38 -0
- package/dist/restorer/impls/claude-code-learner/restorer.js +73 -0
- package/dist/restorer/impls/claude-code-learner/restorer.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.d.ts +19 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +111 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.d.ts +22 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.js +35 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.d.ts +20 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.js +34 -0
- package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/types.d.ts +99 -0
- package/dist/restorer/impls/claude-code-learner/types.js +2 -0
- package/dist/restorer/impls/claude-code-learner/types.js.map +1 -0
- package/dist/restorer/impls/claude-code-learner/wrapper.d.ts +49 -0
- package/dist/restorer/impls/claude-code-learner/wrapper.js +144 -0
- package/dist/restorer/impls/claude-code-learner/wrapper.js.map +1 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +2 -2
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +2 -2
- package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +7 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +38 -0
- package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +2 -2
- package/dist/restorer/impls/claude-mcp-prediction/index.js +12 -2
- package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +9 -2
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +9 -125
- package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +2 -2
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.js +9 -2
- package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +10 -0
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +10 -119
- package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
- package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.d.ts +84 -0
- package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.js +206 -0
- package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.js.map +1 -0
- package/dist/restorer/impls/evaluation-context.d.ts +11 -4
- package/dist/restorer/impls/evaluation-context.js +9 -2
- package/dist/restorer/impls/evaluation-context.js.map +1 -1
- package/dist/restorer/impls/index.d.ts +46 -1
- package/dist/restorer/impls/index.js +38 -0
- package/dist/restorer/impls/index.js.map +1 -1
- package/dist/restorer/impls/legacy-claude/index.d.ts +13 -1
- package/dist/restorer/impls/legacy-claude/index.js +2 -0
- package/dist/restorer/impls/legacy-claude/index.js.map +1 -1
- package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +4 -4
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js +184 -55
- package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +1 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +8 -1
- package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +3 -3
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +153 -15
- package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +14 -5
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +16 -23
- package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -1
- package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +1 -1
- package/dist/restorer/impls/prediction-v0-baseline/index.js +16 -7
- package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -1
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +5 -3
- package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -1
- package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +2 -2
- package/dist/restorer/impls/prediction-v0-evaluator/index.js +175 -67
- package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -1
- package/dist/restorer/manifest/index.d.ts +3 -0
- package/dist/restorer/manifest/index.js +3 -0
- package/dist/restorer/manifest/index.js.map +1 -0
- package/dist/restorer/manifest/load.d.ts +7 -0
- package/dist/restorer/manifest/load.js +49 -0
- package/dist/restorer/manifest/load.js.map +1 -0
- package/dist/restorer/manifest/types.d.ts +75 -0
- package/dist/restorer/manifest/types.js +8 -0
- package/dist/restorer/manifest/types.js.map +1 -0
- package/dist/restorer/manifest/verify.d.ts +15 -0
- package/dist/restorer/manifest/verify.js +53 -0
- package/dist/restorer/manifest/verify.js.map +1 -0
- package/dist/restorer/plug-ins/index.d.ts +14 -0
- package/dist/restorer/plug-ins/index.js +11 -0
- package/dist/restorer/plug-ins/index.js.map +1 -0
- package/dist/restorer/plug-ins/loader.d.ts +27 -0
- package/dist/restorer/plug-ins/loader.js +101 -0
- package/dist/restorer/plug-ins/loader.js.map +1 -0
- package/dist/restorer/plug-ins/manifest.d.ts +7 -0
- package/dist/restorer/plug-ins/manifest.js +97 -0
- package/dist/restorer/plug-ins/manifest.js.map +1 -0
- package/dist/restorer/plug-ins/registry.d.ts +24 -0
- package/dist/restorer/plug-ins/registry.js +17 -0
- package/dist/restorer/plug-ins/registry.js.map +1 -0
- package/dist/restorer/plug-ins/serialise.d.ts +29 -0
- package/dist/restorer/plug-ins/serialise.js +29 -0
- package/dist/restorer/plug-ins/serialise.js.map +1 -0
- package/dist/restorer/plug-ins/types.d.ts +77 -0
- package/dist/restorer/plug-ins/types.js +10 -0
- package/dist/restorer/plug-ins/types.js.map +1 -0
- package/dist/restorer/types.d.ts +66 -11
- package/dist/restorer/types.js.map +1 -1
- package/dist/runner/claude.d.ts +3 -3
- package/dist/runner/claude.js +57 -21
- 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/store/store.d.ts +79 -3
- package/dist/store/store.js +189 -6
- package/dist/store/store.js.map +1 -1
- package/dist/templates/plug-in/hook/README.md.tmpl +24 -0
- package/dist/templates/plug-in/hook/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/hook/hooks/event.sh.tmpl +15 -0
- package/dist/templates/plug-in/hook/jinn-plugin.json.tmpl +16 -0
- package/dist/templates/plug-in/hook/package.json.tmpl +14 -0
- package/dist/templates/plug-in/hook/test/manifest.test.ts.tmpl +21 -0
- package/dist/templates/plug-in/mcp-tool/README.md.tmpl +26 -0
- package/dist/templates/plug-in/mcp-tool/gitignore.tmpl +4 -0
- package/dist/templates/plug-in/mcp-tool/jinn-plugin.json.tmpl +16 -0
- package/dist/templates/plug-in/mcp-tool/package.json.tmpl +19 -0
- package/dist/templates/plug-in/mcp-tool/src/server.ts.tmpl +17 -0
- package/dist/templates/plug-in/mcp-tool/test/server.test.ts.tmpl +18 -0
- package/dist/templates/plug-in/memory-backend/README.md.tmpl +33 -0
- package/dist/templates/plug-in/memory-backend/gitignore.tmpl +4 -0
- package/dist/templates/plug-in/memory-backend/jinn-plugin.json.tmpl +16 -0
- package/dist/templates/plug-in/memory-backend/package.json.tmpl +19 -0
- package/dist/templates/plug-in/memory-backend/src/server.ts.tmpl +23 -0
- package/dist/templates/plug-in/memory-backend/test/server.test.ts.tmpl +17 -0
- package/dist/templates/plug-in/phase-agent-override/README.md.tmpl +30 -0
- package/dist/templates/plug-in/phase-agent-override/agents/agent.md.tmpl +26 -0
- package/dist/templates/plug-in/phase-agent-override/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/phase-agent-override/jinn-plugin.json.tmpl +17 -0
- package/dist/templates/plug-in/phase-agent-override/package.json.tmpl +14 -0
- package/dist/templates/plug-in/phase-agent-override/test/manifest.test.ts.tmpl +24 -0
- package/dist/templates/plug-in/skill-bundle/.claude-plugin/plugin.json.tmpl +5 -0
- package/dist/templates/plug-in/skill-bundle/README.md.tmpl +28 -0
- package/dist/templates/plug-in/skill-bundle/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/skill-bundle/jinn-plugin.json.tmpl +15 -0
- package/dist/templates/plug-in/skill-bundle/package.json.tmpl +14 -0
- package/dist/templates/plug-in/skill-bundle/skills/example/SKILL.md.tmpl +14 -0
- package/dist/templates/plug-in/skill-bundle/test/manifest.test.ts.tmpl +21 -0
- package/dist/templates/plug-in/topic-explorer/README.md.tmpl +24 -0
- package/dist/templates/plug-in/topic-explorer/agents/explorer.md.tmpl +26 -0
- package/dist/templates/plug-in/topic-explorer/gitignore.tmpl +3 -0
- package/dist/templates/plug-in/topic-explorer/jinn-plugin.json.tmpl +17 -0
- package/dist/templates/plug-in/topic-explorer/package.json.tmpl +14 -0
- package/dist/templates/plug-in/topic-explorer/test/manifest.test.ts.tmpl +22 -0
- package/dist/templates/restorer/alternative-harness/README.md.tmpl +44 -0
- package/dist/templates/restorer/alternative-harness/gitignore.tmpl +3 -0
- package/dist/templates/restorer/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/restorer/alternative-harness/package.json.tmpl +26 -0
- package/dist/templates/restorer/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/dist/templates/restorer/alternative-harness/src/harness.ts.tmpl +31 -0
- package/dist/templates/restorer/alternative-harness/src/index.ts.tmpl +44 -0
- package/dist/templates/restorer/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/dist/templates/restorer/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/dist/templates/restorer/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/dist/templates/restorer/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/dist/templates/restorer/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/dist/templates/restorer/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/dist/templates/restorer/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/dist/templates/restorer/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/dist/templates/restorer/alternative-harness/test/coordinator.test.ts.tmpl +52 -0
- package/dist/templates/restorer/alternative-harness/test/unit.test.ts.tmpl +54 -0
- package/dist/templates/restorer/alternative-harness/tsconfig.json.tmpl +16 -0
- package/dist/templates/restorer/evaluator/README.md.tmpl +36 -0
- package/dist/templates/restorer/evaluator/gitignore.tmpl +3 -0
- package/dist/templates/restorer/evaluator/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/restorer/evaluator/package.json.tmpl +26 -0
- package/dist/templates/restorer/evaluator/src/index.ts.tmpl +35 -0
- package/dist/templates/restorer/evaluator/test/unit.test.ts.tmpl +48 -0
- package/dist/templates/restorer/evaluator/tsconfig.json.tmpl +16 -0
- package/dist/templates/restorer/forecaster/README.md.tmpl +25 -0
- package/dist/templates/restorer/forecaster/gitignore.tmpl +5 -0
- package/dist/templates/restorer/forecaster/jinn.manifest.json.tmpl +22 -0
- package/dist/templates/restorer/forecaster/package.json.tmpl +26 -0
- package/dist/templates/restorer/forecaster/src/index.ts.tmpl +33 -0
- package/dist/templates/restorer/forecaster/test/unit.test.ts.tmpl +41 -0
- package/dist/templates/restorer/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/desired-state.d.ts +211 -21
- package/dist/types/desired-state.js +26 -15
- package/dist/types/desired-state.js.map +1 -1
- package/dist/types/envelope.d.ts +1473 -0
- package/dist/types/envelope.js +114 -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/intent.d.ts +276 -0
- package/dist/types/intent.js +74 -0
- package/dist/types/intent.js.map +1 -0
- 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 +23 -685
- package/dist/types/portfolio.js +16 -106
- package/dist/types/portfolio.js.map +1 -1
- package/dist/types/prediction-apy.d.ts +9 -344
- package/dist/types/prediction-apy.js +9 -65
- package/dist/types/prediction-apy.js.map +1 -1
- package/dist/types/prediction.d.ts +25 -396
- package/dist/types/prediction.js +5 -79
- package/dist/types/prediction.js.map +1 -1
- 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 +22 -0
- package/dist/util/path-safety.js +29 -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/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 +36 -11
- 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 +49 -0
- package/plugins/claude-code-learner/skills/coordinator/SKILL.md +131 -0
- package/plugins/claude-code-learner/skills/debrief/SKILL.md +71 -0
- package/plugins/claude-code-learner/skills/execute/SKILL.md +91 -0
- package/plugins/claude-code-learner/skills/improve/SKILL.md +57 -0
- package/plugins/claude-code-learner/skills/memory-consolidation/SKILL.md +57 -0
- package/plugins/claude-code-learner/skills/orient/SKILL.md +82 -0
- package/plugins/claude-code-learner/skills/plan/SKILL.md +54 -0
- package/plugins/claude-code-learner/skills/strategize/SKILL.md +63 -0
- package/skills/jinn-operator/SKILL.md +84 -35
- package/templates/plug-in/hook/README.md.tmpl +24 -0
- package/templates/plug-in/hook/gitignore.tmpl +3 -0
- package/templates/plug-in/hook/hooks/event.sh.tmpl +15 -0
- package/templates/plug-in/hook/jinn-plugin.json.tmpl +16 -0
- package/templates/plug-in/hook/package.json.tmpl +14 -0
- package/templates/plug-in/hook/test/manifest.test.ts.tmpl +21 -0
- package/templates/plug-in/mcp-tool/README.md.tmpl +26 -0
- package/templates/plug-in/mcp-tool/gitignore.tmpl +4 -0
- package/templates/plug-in/mcp-tool/jinn-plugin.json.tmpl +16 -0
- package/templates/plug-in/mcp-tool/package.json.tmpl +19 -0
- package/templates/plug-in/mcp-tool/src/server.ts.tmpl +17 -0
- package/templates/plug-in/mcp-tool/test/server.test.ts.tmpl +18 -0
- package/templates/plug-in/memory-backend/README.md.tmpl +33 -0
- package/templates/plug-in/memory-backend/gitignore.tmpl +4 -0
- package/templates/plug-in/memory-backend/jinn-plugin.json.tmpl +16 -0
- package/templates/plug-in/memory-backend/package.json.tmpl +19 -0
- package/templates/plug-in/memory-backend/src/server.ts.tmpl +23 -0
- package/templates/plug-in/memory-backend/test/server.test.ts.tmpl +17 -0
- package/templates/plug-in/phase-agent-override/README.md.tmpl +30 -0
- package/templates/plug-in/phase-agent-override/agents/agent.md.tmpl +26 -0
- package/templates/plug-in/phase-agent-override/gitignore.tmpl +3 -0
- package/templates/plug-in/phase-agent-override/jinn-plugin.json.tmpl +17 -0
- package/templates/plug-in/phase-agent-override/package.json.tmpl +14 -0
- package/templates/plug-in/phase-agent-override/test/manifest.test.ts.tmpl +24 -0
- package/templates/plug-in/skill-bundle/.claude-plugin/plugin.json.tmpl +5 -0
- package/templates/plug-in/skill-bundle/README.md.tmpl +28 -0
- package/templates/plug-in/skill-bundle/gitignore.tmpl +3 -0
- package/templates/plug-in/skill-bundle/jinn-plugin.json.tmpl +15 -0
- package/templates/plug-in/skill-bundle/package.json.tmpl +14 -0
- package/templates/plug-in/skill-bundle/skills/example/SKILL.md.tmpl +14 -0
- package/templates/plug-in/skill-bundle/test/manifest.test.ts.tmpl +21 -0
- package/templates/plug-in/topic-explorer/README.md.tmpl +24 -0
- package/templates/plug-in/topic-explorer/agents/explorer.md.tmpl +26 -0
- package/templates/plug-in/topic-explorer/gitignore.tmpl +3 -0
- package/templates/plug-in/topic-explorer/jinn-plugin.json.tmpl +17 -0
- package/templates/plug-in/topic-explorer/package.json.tmpl +14 -0
- package/templates/plug-in/topic-explorer/test/manifest.test.ts.tmpl +22 -0
- package/templates/restorer/alternative-harness/README.md.tmpl +44 -0
- package/templates/restorer/alternative-harness/gitignore.tmpl +3 -0
- package/templates/restorer/alternative-harness/jinn.manifest.json.tmpl +22 -0
- package/templates/restorer/alternative-harness/package.json.tmpl +26 -0
- package/templates/restorer/alternative-harness/src/coordinator.ts.tmpl +50 -0
- package/templates/restorer/alternative-harness/src/harness.ts.tmpl +31 -0
- package/templates/restorer/alternative-harness/src/index.ts.tmpl +44 -0
- package/templates/restorer/alternative-harness/src/mock-harness.ts.tmpl +41 -0
- package/templates/restorer/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
- package/templates/restorer/alternative-harness/src/phases/execute.ts.tmpl +33 -0
- package/templates/restorer/alternative-harness/src/phases/improve.ts.tmpl +31 -0
- package/templates/restorer/alternative-harness/src/phases/memory.ts.tmpl +31 -0
- package/templates/restorer/alternative-harness/src/phases/orient.ts.tmpl +21 -0
- package/templates/restorer/alternative-harness/src/phases/plan.ts.tmpl +25 -0
- package/templates/restorer/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
- package/templates/restorer/alternative-harness/test/coordinator.test.ts.tmpl +52 -0
- package/templates/restorer/alternative-harness/test/unit.test.ts.tmpl +54 -0
- package/templates/restorer/alternative-harness/tsconfig.json.tmpl +16 -0
- package/templates/restorer/evaluator/README.md.tmpl +36 -0
- package/templates/restorer/evaluator/gitignore.tmpl +3 -0
- package/templates/restorer/evaluator/jinn.manifest.json.tmpl +22 -0
- package/templates/restorer/evaluator/package.json.tmpl +26 -0
- package/templates/restorer/evaluator/src/index.ts.tmpl +35 -0
- package/templates/restorer/evaluator/test/unit.test.ts.tmpl +48 -0
- package/templates/restorer/evaluator/tsconfig.json.tmpl +16 -0
- package/templates/restorer/forecaster/README.md.tmpl +25 -0
- package/templates/restorer/forecaster/gitignore.tmpl +5 -0
- package/templates/restorer/forecaster/jinn.manifest.json.tmpl +22 -0
- package/templates/restorer/forecaster/package.json.tmpl +26 -0
- package/templates/restorer/forecaster/src/index.ts.tmpl +33 -0
- package/templates/restorer/forecaster/test/unit.test.ts.tmpl +41 -0
- package/templates/restorer/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/quickstart.js +0 -330
- package/dist/cli/commands/quickstart.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/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/cli/commands/{quickstart.d.ts → ui.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/restorer/external-impls/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic recursive package-content hash for `manifest.package.hash`
|
|
3
|
+
* verification. Walks the package directory in sorted order, hashes each
|
|
4
|
+
* file's `relPath + "\0" + contents`, and folds the per-file digests into
|
|
5
|
+
* a rolling sha256 to produce a single hex digest the daemon can compare
|
|
6
|
+
* against the manifest's claimed `sha256:<64hex>`.
|
|
7
|
+
*
|
|
8
|
+
* Exclusions mirror `walkArtifacts` / `createWorkdirTarball` in
|
|
9
|
+
* `engine/packaging.ts`: `node_modules/`, `.git/`, `test/`, dotfiles,
|
|
10
|
+
* symlinks. Absolute paths and symlinks short-circuit (we never follow
|
|
11
|
+
* them) — the publisher must produce a pure tree of regular files.
|
|
12
|
+
*
|
|
13
|
+
* The relative path is normalised to forward-slash form before hashing so
|
|
14
|
+
* the digest is stable across Linux / macOS / Windows publishers.
|
|
15
|
+
*/
|
|
16
|
+
import type { JinnManifest } from '../manifest/index.js';
|
|
17
|
+
/**
|
|
18
|
+
* Compute the deterministic package-content sha256 for `packageDir`.
|
|
19
|
+
* Returned as `sha256:<64hex>` to match the manifest field shape.
|
|
20
|
+
*/
|
|
21
|
+
export declare function computePackageHash(packageDir: string): `sha256:${string}`;
|
|
22
|
+
/**
|
|
23
|
+
* Verify the package directory matches `manifest.package.hash`.
|
|
24
|
+
* Returns true iff the recomputed digest matches exactly.
|
|
25
|
+
*/
|
|
26
|
+
export declare function verifyPackageHash(packageDir: string, manifest: JinnManifest): Promise<boolean>;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic recursive package-content hash for `manifest.package.hash`
|
|
3
|
+
* verification. Walks the package directory in sorted order, hashes each
|
|
4
|
+
* file's `relPath + "\0" + contents`, and folds the per-file digests into
|
|
5
|
+
* a rolling sha256 to produce a single hex digest the daemon can compare
|
|
6
|
+
* against the manifest's claimed `sha256:<64hex>`.
|
|
7
|
+
*
|
|
8
|
+
* Exclusions mirror `walkArtifacts` / `createWorkdirTarball` in
|
|
9
|
+
* `engine/packaging.ts`: `node_modules/`, `.git/`, `test/`, dotfiles,
|
|
10
|
+
* symlinks. Absolute paths and symlinks short-circuit (we never follow
|
|
11
|
+
* them) — the publisher must produce a pure tree of regular files.
|
|
12
|
+
*
|
|
13
|
+
* The relative path is normalised to forward-slash form before hashing so
|
|
14
|
+
* the digest is stable across Linux / macOS / Windows publishers.
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from 'node:crypto';
|
|
17
|
+
import { readFileSync, readdirSync, lstatSync } from 'node:fs';
|
|
18
|
+
import { join, relative, sep } from 'node:path';
|
|
19
|
+
const EXCLUDED_DIRS = new Set(['node_modules', '.git', 'test']);
|
|
20
|
+
function shouldSkip(name) {
|
|
21
|
+
if (name.startsWith('.'))
|
|
22
|
+
return true; // dotfiles + .git, .DS_Store, etc.
|
|
23
|
+
if (EXCLUDED_DIRS.has(name))
|
|
24
|
+
return true;
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
function collectFiles(packageDir, current, out) {
|
|
28
|
+
let entries;
|
|
29
|
+
try {
|
|
30
|
+
entries = readdirSync(current);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
entries.sort();
|
|
36
|
+
for (const name of entries) {
|
|
37
|
+
if (shouldSkip(name))
|
|
38
|
+
continue;
|
|
39
|
+
const full = join(current, name);
|
|
40
|
+
let st;
|
|
41
|
+
try {
|
|
42
|
+
st = lstatSync(full);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// Refuse to follow symlinks — the package-hash contract is a tree
|
|
48
|
+
// of regular files anchored at packageDir.
|
|
49
|
+
if (st.isSymbolicLink())
|
|
50
|
+
continue;
|
|
51
|
+
if (st.isDirectory()) {
|
|
52
|
+
collectFiles(packageDir, full, out);
|
|
53
|
+
}
|
|
54
|
+
else if (st.isFile()) {
|
|
55
|
+
// Always exclude the manifest itself: its hash field is a
|
|
56
|
+
// commitment to the rest of the package (and the signature
|
|
57
|
+
// makes it tamper-evident on its own).
|
|
58
|
+
const rel = relative(packageDir, full);
|
|
59
|
+
if (rel === 'jinn.manifest.json')
|
|
60
|
+
continue;
|
|
61
|
+
out.push(full);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Compute the deterministic package-content sha256 for `packageDir`.
|
|
67
|
+
* Returned as `sha256:<64hex>` to match the manifest field shape.
|
|
68
|
+
*/
|
|
69
|
+
export function computePackageHash(packageDir) {
|
|
70
|
+
const files = [];
|
|
71
|
+
collectFiles(packageDir, packageDir, files);
|
|
72
|
+
// collectFiles produces sorted-per-directory order; normalise to a
|
|
73
|
+
// single global sort over POSIX-form relative paths so the digest is
|
|
74
|
+
// platform-stable.
|
|
75
|
+
const ordered = files
|
|
76
|
+
.map((abs) => ({
|
|
77
|
+
abs,
|
|
78
|
+
rel: relative(packageDir, abs).split(sep).join('/'),
|
|
79
|
+
}))
|
|
80
|
+
.sort((a, b) => (a.rel < b.rel ? -1 : a.rel > b.rel ? 1 : 0));
|
|
81
|
+
const rolling = createHash('sha256');
|
|
82
|
+
for (const { abs, rel } of ordered) {
|
|
83
|
+
const contents = readFileSync(abs);
|
|
84
|
+
const perFile = createHash('sha256')
|
|
85
|
+
.update(rel)
|
|
86
|
+
.update(Buffer.from([0]))
|
|
87
|
+
.update(contents)
|
|
88
|
+
.digest();
|
|
89
|
+
rolling.update(perFile);
|
|
90
|
+
}
|
|
91
|
+
return `sha256:${rolling.digest('hex')}`;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Verify the package directory matches `manifest.package.hash`.
|
|
95
|
+
* Returns true iff the recomputed digest matches exactly.
|
|
96
|
+
*/
|
|
97
|
+
export async function verifyPackageHash(packageDir, manifest) {
|
|
98
|
+
const expected = manifest.package.hash;
|
|
99
|
+
const actual = computePackageHash(packageDir);
|
|
100
|
+
return actual === expected;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=package-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-hash.js","sourceRoot":"","sources":["../../../src/restorer/external-impls/package-hash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config types for operator-declared external impls. The loader and
|
|
3
|
+
* future config parsing both consume these. Kept in a self-contained
|
|
4
|
+
* module so daemon config wiring can adopt them without pulling in
|
|
5
|
+
* loader internals.
|
|
6
|
+
*
|
|
7
|
+
* Spec: `spec/2026-05-registry-discovery.md` §4.
|
|
8
|
+
*/
|
|
9
|
+
export interface ExternalImplEntry {
|
|
10
|
+
/** MUST equal the manifest's `name`. */
|
|
11
|
+
name: string;
|
|
12
|
+
/**
|
|
13
|
+
* Pointer to the manifest source. Reserved for future ipfs:// /
|
|
14
|
+
* https:// fetching; currently the loader expects a local
|
|
15
|
+
* directory path (see `entry`).
|
|
16
|
+
*/
|
|
17
|
+
package?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Local path the loader uses to find both `jinn.manifest.json` and
|
|
20
|
+
* the entry module. Typically points to a node_modules directory
|
|
21
|
+
* (e.g. `node_modules/@example/forecaster`).
|
|
22
|
+
*/
|
|
23
|
+
entry: string;
|
|
24
|
+
/**
|
|
25
|
+
* Optional operator-pinned version. When set, the loader rejects
|
|
26
|
+
* the impl if `manifest.version` does not match this string exactly.
|
|
27
|
+
* Lets operators pin a specific package version in config without
|
|
28
|
+
* relying on `node_modules/` discipline.
|
|
29
|
+
*/
|
|
30
|
+
version?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface SignerTrust {
|
|
33
|
+
alg: 'ed25519';
|
|
34
|
+
publicKey: string;
|
|
35
|
+
label?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface RestorersConfig {
|
|
38
|
+
/** Names of in-repo or external impls to suppress for this fleet. */
|
|
39
|
+
disabled?: readonly string[];
|
|
40
|
+
/** Operator-supplied external impls. */
|
|
41
|
+
externalImpls?: readonly ExternalImplEntry[];
|
|
42
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config types for operator-declared external impls. The loader and
|
|
3
|
+
* future config parsing both consume these. Kept in a self-contained
|
|
4
|
+
* module so daemon config wiring can adopt them without pulling in
|
|
5
|
+
* loader internals.
|
|
6
|
+
*
|
|
7
|
+
* Spec: `spec/2026-05-registry-discovery.md` §4.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/restorer/external-impls/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import type { HarnessAdapter, IntentSessionInputs } from '../types.js';
|
|
3
|
+
export interface ClaudeCodeHarnessAdapterConfig {
|
|
4
|
+
/** Path to the `claude` executable. Default: 'claude' (from PATH). */
|
|
5
|
+
claudePath?: string;
|
|
6
|
+
/** Optional model override (e.g. 'claude-sonnet-4-6'). */
|
|
7
|
+
claudeModel?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Plugin install directory for Claude Code. Defaults to
|
|
10
|
+
* `~/.claude/plugins/`. The adapter copies (or symlinks) the plugin
|
|
11
|
+
* into this directory before spawning.
|
|
12
|
+
*/
|
|
13
|
+
pluginInstallDir?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Override spawn for testing. When provided, called instead of
|
|
16
|
+
* node:child_process.spawn so tests can inject a fake child process.
|
|
17
|
+
*/
|
|
18
|
+
_spawnFn?: typeof spawn;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Real Claude Code adapter. Spawns the `claude` CLI with the plugin
|
|
22
|
+
* loaded via Claude Code's plugin install directory, sets IMPL_STATE_DIR
|
|
23
|
+
* so the session-start hook fires correctly, and hands the coordinator
|
|
24
|
+
* an initial prompt with intent context.
|
|
25
|
+
*
|
|
26
|
+
* Output collection is delegated to the shim's harvester — this adapter
|
|
27
|
+
* only owns the spawn lifecycle.
|
|
28
|
+
*/
|
|
29
|
+
export declare class ClaudeCodeHarnessAdapter implements HarnessAdapter {
|
|
30
|
+
readonly name = "claude-code";
|
|
31
|
+
readonly allowsHarnessSelfModification = false;
|
|
32
|
+
private readonly claudePath;
|
|
33
|
+
private readonly claudeModel;
|
|
34
|
+
private readonly pluginInstallDir;
|
|
35
|
+
private readonly spawnFn;
|
|
36
|
+
constructor(config?: ClaudeCodeHarnessAdapterConfig);
|
|
37
|
+
runIntent(inputs: IntentSessionInputs, pluginRoot: string): Promise<void>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { mergeMcpConfig, mergeMemoryBackendsIntoMcpConfig, pluginDirsForSession, } from '../mcp-config.js';
|
|
6
|
+
/**
|
|
7
|
+
* Allowlist of env vars that propagate to the spawned Claude session.
|
|
8
|
+
* We deliberately limit this to avoid leaking unrelated credentials
|
|
9
|
+
* into the agent process.
|
|
10
|
+
*
|
|
11
|
+
* Mirror of the canonical allowlist in client/src/runner/claude.ts.
|
|
12
|
+
* Hard-won from prior auth/runtime issues — keep in sync with that file.
|
|
13
|
+
*/
|
|
14
|
+
const ENV_ALLOWLIST = [
|
|
15
|
+
'PATH',
|
|
16
|
+
'HOME',
|
|
17
|
+
'USER',
|
|
18
|
+
'SHELL',
|
|
19
|
+
'LANG',
|
|
20
|
+
'TERM',
|
|
21
|
+
'TMPDIR',
|
|
22
|
+
'XDG_CONFIG_HOME',
|
|
23
|
+
'XDG_DATA_HOME',
|
|
24
|
+
'XDG_CACHE_HOME',
|
|
25
|
+
'NODE_PATH',
|
|
26
|
+
'NODE_OPTIONS',
|
|
27
|
+
'NPM_CONFIG_PREFIX',
|
|
28
|
+
// Claude Code auth — needed in Docker where keychain is unavailable.
|
|
29
|
+
// CLAUDE_CODE_OAUTH_TOKEN is the output of `claude setup-token` (subscription
|
|
30
|
+
// path, year-long validity); ANTHROPIC_API_KEY is the pay-per-request fallback.
|
|
31
|
+
// Both are Claude credentials, not Jinn operator secrets, so forwarding is
|
|
32
|
+
// scoped and intentional. Without these the spawned `claude -p …` fails with
|
|
33
|
+
// "Not logged in · Please run /login".
|
|
34
|
+
'CLAUDE_CODE_OAUTH_TOKEN',
|
|
35
|
+
'ANTHROPIC_API_KEY',
|
|
36
|
+
];
|
|
37
|
+
function buildAgentEnv(extra) {
|
|
38
|
+
const env = {};
|
|
39
|
+
for (const key of ENV_ALLOWLIST) {
|
|
40
|
+
if (process.env[key])
|
|
41
|
+
env[key] = process.env[key];
|
|
42
|
+
}
|
|
43
|
+
return { ...env, ...extra };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Construct the initial prompt that invokes the coordinator skill with
|
|
47
|
+
* the intent context.
|
|
48
|
+
*/
|
|
49
|
+
function buildInitialPrompt(inputs) {
|
|
50
|
+
return [
|
|
51
|
+
'You are running a Jinn restoration intent. Invoke the `claude-code-learner:coordinator` skill via the Skill tool to begin.',
|
|
52
|
+
'',
|
|
53
|
+
'Session inputs (refer to these when the coordinator skill or any phase asks for them):',
|
|
54
|
+
`- intent.id = ${inputs.intentId}`,
|
|
55
|
+
inputs.intentCid ? `- intent.cid = ${inputs.intentCid}` : '',
|
|
56
|
+
inputs.intentKind ? `- intent.kind = ${inputs.intentKind}` : '',
|
|
57
|
+
`- workingDir = ${inputs.workingDir}`,
|
|
58
|
+
`- implStateDir = ${inputs.implStateDir}`,
|
|
59
|
+
`- window.startTs = ${inputs.windowStartTs} (ms since epoch)`,
|
|
60
|
+
`- window.endTs = ${inputs.windowEndTs} (ms since epoch)`,
|
|
61
|
+
`- msUntilEndTs = ${inputs.msUntilEndTs}`,
|
|
62
|
+
inputs.intentBody
|
|
63
|
+
? `\nintent (full body):\n${JSON.stringify(inputs.intentBody, null, 2)}`
|
|
64
|
+
: '',
|
|
65
|
+
'',
|
|
66
|
+
'Run the phases specified by JINN_CLAUDE_CODE_LEARNER_PHASE_RANGE (defaults to all seven if unset) and return when complete.',
|
|
67
|
+
]
|
|
68
|
+
.filter((line) => line !== '')
|
|
69
|
+
.join('\n');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Real Claude Code adapter. Spawns the `claude` CLI with the plugin
|
|
73
|
+
* loaded via Claude Code's plugin install directory, sets IMPL_STATE_DIR
|
|
74
|
+
* so the session-start hook fires correctly, and hands the coordinator
|
|
75
|
+
* an initial prompt with intent context.
|
|
76
|
+
*
|
|
77
|
+
* Output collection is delegated to the shim's harvester — this adapter
|
|
78
|
+
* only owns the spawn lifecycle.
|
|
79
|
+
*/
|
|
80
|
+
export class ClaudeCodeHarnessAdapter {
|
|
81
|
+
name = 'claude-code';
|
|
82
|
+
allowsHarnessSelfModification = false;
|
|
83
|
+
claudePath;
|
|
84
|
+
claudeModel;
|
|
85
|
+
pluginInstallDir;
|
|
86
|
+
spawnFn;
|
|
87
|
+
constructor(config = {}) {
|
|
88
|
+
this.claudePath = config.claudePath ?? 'claude';
|
|
89
|
+
this.claudeModel = config.claudeModel;
|
|
90
|
+
this.pluginInstallDir = config.pluginInstallDir ?? join(homedir(), '.claude', 'plugins');
|
|
91
|
+
this.spawnFn = config._spawnFn ?? spawn;
|
|
92
|
+
}
|
|
93
|
+
async runIntent(inputs, pluginRoot) {
|
|
94
|
+
// Ensure the plugin install directory exists. The adapter does NOT
|
|
95
|
+
// copy the plugin — that's the operator's responsibility per the
|
|
96
|
+
// README. If the operator has not installed it, Claude Code will
|
|
97
|
+
// not find the coordinator skill and will fail; check for it here.
|
|
98
|
+
mkdirSync(this.pluginInstallDir, { recursive: true });
|
|
99
|
+
const prompt = buildInitialPrompt(inputs);
|
|
100
|
+
const args = ['-p', prompt];
|
|
101
|
+
if (this.claudeModel)
|
|
102
|
+
args.push('--model', this.claudeModel);
|
|
103
|
+
// Path 1 plug-in surface: when the shim has a slot registry, build
|
|
104
|
+
// the harness mcp-config (mcp-tool + memory-backend slots) and union
|
|
105
|
+
// the plug-in skill-bundle package roots with the bundled plugin
|
|
106
|
+
// root. See spec/2026-04-30-plug-in-surface.md §4 + plan tasks 9.5 / 10.2.
|
|
107
|
+
const registryJson = inputs.adapterEnv?.JINN_SLOT_REGISTRY_JSON;
|
|
108
|
+
let pluginDirs = [pluginRoot];
|
|
109
|
+
let mcpConfigPath;
|
|
110
|
+
if (registryJson) {
|
|
111
|
+
try {
|
|
112
|
+
const registry = JSON.parse(registryJson);
|
|
113
|
+
const baseline = { mcpServers: {} };
|
|
114
|
+
const withTools = mergeMcpConfig(baseline, registry.mcpTools.map((s) => ({
|
|
115
|
+
plugInName: s.plugInName,
|
|
116
|
+
plugInVersion: registry.learnerVersion,
|
|
117
|
+
packageRoot: s.packageRoot,
|
|
118
|
+
slot: s.slot,
|
|
119
|
+
})));
|
|
120
|
+
const withMemory = mergeMemoryBackendsIntoMcpConfig(withTools, registry.memoryBackends.map((s) => ({
|
|
121
|
+
plugInName: s.plugInName,
|
|
122
|
+
plugInVersion: registry.learnerVersion,
|
|
123
|
+
packageRoot: s.packageRoot,
|
|
124
|
+
slot: s.slot,
|
|
125
|
+
})));
|
|
126
|
+
if (Object.keys(withMemory.mcpServers).length > 0) {
|
|
127
|
+
mcpConfigPath = join(inputs.workingDir, '.coordinator', 'mcp.json');
|
|
128
|
+
mkdirSync(join(inputs.workingDir, '.coordinator'), { recursive: true });
|
|
129
|
+
writeFileSync(mcpConfigPath, JSON.stringify(withMemory, null, 2));
|
|
130
|
+
}
|
|
131
|
+
pluginDirs = pluginDirsForSession({ skillBundles: registry.skillBundles }, pluginRoot);
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
// Bad registry JSON should not abort the spawn — log and continue
|
|
135
|
+
// with the bundled plugin only.
|
|
136
|
+
// eslint-disable-next-line no-console
|
|
137
|
+
console.warn(`[claude-code-adapter] failed to apply slot registry: ${err.message}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (mcpConfigPath)
|
|
141
|
+
args.push('--mcp-config', mcpConfigPath);
|
|
142
|
+
for (const dir of pluginDirs)
|
|
143
|
+
args.push('--plugin-dir', dir);
|
|
144
|
+
const env = buildAgentEnv({
|
|
145
|
+
IMPL_STATE_DIR: inputs.implStateDir,
|
|
146
|
+
// Surfaced for the session-start hook so Path 1 plug-in slot
|
|
147
|
+
// registry can be materialised into workingDir/.coordinator/slots.json.
|
|
148
|
+
WORKING_DIR: inputs.workingDir,
|
|
149
|
+
JINN_WORKING_DIR: inputs.workingDir,
|
|
150
|
+
JINN_CLAUDE_CODE_LEARNER_PLUGIN_ROOT: pluginRoot,
|
|
151
|
+
...(inputs.adapterEnv ?? {}),
|
|
152
|
+
});
|
|
153
|
+
const spawnOpts = {
|
|
154
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
155
|
+
env,
|
|
156
|
+
cwd: inputs.workingDir,
|
|
157
|
+
};
|
|
158
|
+
return new Promise((resolve, reject) => {
|
|
159
|
+
const child = this.spawnFn(this.claudePath, args, spawnOpts);
|
|
160
|
+
// If the abort signal already fired before we got here (race), kill
|
|
161
|
+
// the child immediately. Without this, addEventListener below would
|
|
162
|
+
// never fire (signals only emit on transition to aborted, not when
|
|
163
|
+
// already aborted).
|
|
164
|
+
if (inputs.abort.aborted) {
|
|
165
|
+
if (!child.killed)
|
|
166
|
+
child.kill('SIGTERM');
|
|
167
|
+
}
|
|
168
|
+
// Window-end abort: kill child, reject.
|
|
169
|
+
const onAbort = () => {
|
|
170
|
+
if (!child.killed)
|
|
171
|
+
child.kill('SIGTERM');
|
|
172
|
+
};
|
|
173
|
+
inputs.abort.addEventListener('abort', onAbort);
|
|
174
|
+
let stderr = '';
|
|
175
|
+
child.stderr?.on('data', (d) => {
|
|
176
|
+
stderr += d.toString();
|
|
177
|
+
});
|
|
178
|
+
child.on('exit', (code, signal) => {
|
|
179
|
+
inputs.abort.removeEventListener('abort', onAbort);
|
|
180
|
+
if (code === 0) {
|
|
181
|
+
resolve();
|
|
182
|
+
}
|
|
183
|
+
else if (inputs.abort.aborted) {
|
|
184
|
+
// Window expired; resolve anyway so harvester can collect
|
|
185
|
+
// partial outputs. The shim's caller (engine) handles the
|
|
186
|
+
// abort signal separately.
|
|
187
|
+
resolve();
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
reject(new Error(`claude-code adapter: child exited with code=${code} signal=${signal}: ${stderr.slice(0, 500)}`));
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
child.on('error', (err) => {
|
|
194
|
+
inputs.abort.removeEventListener('abort', onAbort);
|
|
195
|
+
reject(err);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../../../src/restorer/impls/claude-code-learner/adapters/claude-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RestorationOutput } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Like safeReadJson but throws on missing file or invalid JSON.
|
|
4
|
+
* Used for required phase artifacts where a silent failure would allow an
|
|
5
|
+
* empty-looking success to propagate through the engine.
|
|
6
|
+
*/
|
|
7
|
+
export declare function requiredReadJson(path: string): Record<string, unknown>;
|
|
8
|
+
/**
|
|
9
|
+
* Construct RestorationOutput from the plugin's per-phase artifacts.
|
|
10
|
+
*
|
|
11
|
+
* Phase range (from phaseRange arg, JINN_CLAUDE_CODE_LEARNER_PHASE_RANGE env, or 'full'):
|
|
12
|
+
* full — all 7 phases required
|
|
13
|
+
* pre-execute — orient, strategize, plan required (phases 1–3)
|
|
14
|
+
* post-execute — debrief, improve, memory-consolidation required (phases 5–7)
|
|
15
|
+
*
|
|
16
|
+
* Required phase artifacts: hard-fail (throw) if missing or corrupt JSON.
|
|
17
|
+
* Optional phase artifacts (outside the required range): safeReadJson + warn on null.
|
|
18
|
+
*/
|
|
19
|
+
export declare function harvestOutput(workingDir: string, phaseRange?: string): RestorationOutput;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
const PHASE_ORDER = [
|
|
4
|
+
'orient',
|
|
5
|
+
'strategize',
|
|
6
|
+
'plan',
|
|
7
|
+
'execute',
|
|
8
|
+
'debrief',
|
|
9
|
+
'improve',
|
|
10
|
+
'memory-consolidation',
|
|
11
|
+
];
|
|
12
|
+
const PHASE_PRIMARY_ARTIFACT = {
|
|
13
|
+
orient: 'summary.json',
|
|
14
|
+
strategize: 'strategy.json',
|
|
15
|
+
plan: 'plan.json',
|
|
16
|
+
execute: 'summary.json',
|
|
17
|
+
debrief: 'analysis.json',
|
|
18
|
+
improve: 'summary.json',
|
|
19
|
+
'memory-consolidation': 'consolidation_record.json',
|
|
20
|
+
};
|
|
21
|
+
const REQUIRED_PHASES = {
|
|
22
|
+
full: [...PHASE_ORDER],
|
|
23
|
+
'pre-execute': ['orient', 'strategize', 'plan'],
|
|
24
|
+
'post-execute': ['debrief', 'improve', 'memory-consolidation'],
|
|
25
|
+
};
|
|
26
|
+
function safeReadJson(path) {
|
|
27
|
+
if (!existsSync(path))
|
|
28
|
+
return null;
|
|
29
|
+
try {
|
|
30
|
+
const text = readFileSync(path, 'utf8');
|
|
31
|
+
return JSON.parse(text);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Like safeReadJson but throws on missing file or invalid JSON.
|
|
39
|
+
* Used for required phase artifacts where a silent failure would allow an
|
|
40
|
+
* empty-looking success to propagate through the engine.
|
|
41
|
+
*/
|
|
42
|
+
export function requiredReadJson(path) {
|
|
43
|
+
if (!existsSync(path)) {
|
|
44
|
+
throw new Error(`Required artifact missing: ${path}`);
|
|
45
|
+
}
|
|
46
|
+
let text;
|
|
47
|
+
try {
|
|
48
|
+
text = readFileSync(path, 'utf8');
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
throw new Error(`Cannot read required artifact ${path}: ${err instanceof Error ? err.message : String(err)}`);
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
return JSON.parse(text);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
throw new Error(`Required artifact contains invalid JSON: ${path}: ${err instanceof Error ? err.message : String(err)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function detectCompletedPhases(workingDir) {
|
|
61
|
+
const completed = [];
|
|
62
|
+
for (const phase of PHASE_ORDER) {
|
|
63
|
+
const dir = join(workingDir, `.${phase}`);
|
|
64
|
+
if (!existsSync(dir))
|
|
65
|
+
continue;
|
|
66
|
+
try {
|
|
67
|
+
const stat = statSync(dir);
|
|
68
|
+
if (!stat.isDirectory())
|
|
69
|
+
continue;
|
|
70
|
+
const entries = readdirSync(dir);
|
|
71
|
+
if (entries.length > 0)
|
|
72
|
+
completed.push(phase);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Best-effort; ignore permission / IO errors.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return completed;
|
|
79
|
+
}
|
|
80
|
+
function resolvePhaseRange(override) {
|
|
81
|
+
const raw = override ?? process.env.JINN_CLAUDE_CODE_LEARNER_PHASE_RANGE ?? 'full';
|
|
82
|
+
if (raw === 'pre-execute' || raw === 'post-execute')
|
|
83
|
+
return raw;
|
|
84
|
+
return 'full';
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Construct RestorationOutput from the plugin's per-phase artifacts.
|
|
88
|
+
*
|
|
89
|
+
* Phase range (from phaseRange arg, JINN_CLAUDE_CODE_LEARNER_PHASE_RANGE env, or 'full'):
|
|
90
|
+
* full — all 7 phases required
|
|
91
|
+
* pre-execute — orient, strategize, plan required (phases 1–3)
|
|
92
|
+
* post-execute — debrief, improve, memory-consolidation required (phases 5–7)
|
|
93
|
+
*
|
|
94
|
+
* Required phase artifacts: hard-fail (throw) if missing or corrupt JSON.
|
|
95
|
+
* Optional phase artifacts (outside the required range): safeReadJson + warn on null.
|
|
96
|
+
*/
|
|
97
|
+
export function harvestOutput(workingDir, phaseRange) {
|
|
98
|
+
const range = resolvePhaseRange(phaseRange);
|
|
99
|
+
const requiredPhases = new Set(REQUIRED_PHASES[range]);
|
|
100
|
+
// Hard-fail on missing or corrupt primary artifacts for all required phases.
|
|
101
|
+
const validated = new Map();
|
|
102
|
+
for (const phase of REQUIRED_PHASES[range]) {
|
|
103
|
+
const path = join(workingDir, `.${phase}`, PHASE_PRIMARY_ARTIFACT[phase]);
|
|
104
|
+
validated.set(phase, requiredReadJson(path));
|
|
105
|
+
}
|
|
106
|
+
const phasesCompleted = detectCompletedPhases(workingDir);
|
|
107
|
+
const gating = { phasesCompleted };
|
|
108
|
+
// Read a phase's primary artifact for optional gating-field extraction.
|
|
109
|
+
// Required phases: use the already-validated result (no second read).
|
|
110
|
+
// Optional phases: safeReadJson + warn on null.
|
|
111
|
+
function readForGating(phase) {
|
|
112
|
+
if (requiredPhases.has(phase)) {
|
|
113
|
+
return validated.get(phase) ?? null;
|
|
114
|
+
}
|
|
115
|
+
const path = join(workingDir, `.${phase}`, PHASE_PRIMARY_ARTIFACT[phase]);
|
|
116
|
+
const data = safeReadJson(path);
|
|
117
|
+
if (data === null) {
|
|
118
|
+
console.warn(`[claude-code-learner] harvestOutput: optional artifact absent or corrupt — ${path}`);
|
|
119
|
+
}
|
|
120
|
+
return data;
|
|
121
|
+
}
|
|
122
|
+
const strategy = readForGating('strategize');
|
|
123
|
+
if (strategy && typeof strategy.timingPosture === 'string') {
|
|
124
|
+
gating.timingPosture = strategy.timingPosture;
|
|
125
|
+
}
|
|
126
|
+
const exec = readForGating('execute');
|
|
127
|
+
if (exec) {
|
|
128
|
+
if (typeof exec.returnReason === 'string')
|
|
129
|
+
gating.executeReturnReason = exec.returnReason;
|
|
130
|
+
if (Array.isArray(exec.stepsCompleted))
|
|
131
|
+
gating.executeStepsCompleted = exec.stepsCompleted.length;
|
|
132
|
+
if (Array.isArray(exec.stepsFailed))
|
|
133
|
+
gating.executeStepsFailed = exec.stepsFailed.length;
|
|
134
|
+
if (typeof exec.elapsedMs === 'number')
|
|
135
|
+
gating.executeElapsedMs = exec.elapsedMs;
|
|
136
|
+
}
|
|
137
|
+
const debrief = readForGating('debrief');
|
|
138
|
+
if (debrief && typeof debrief.successCriteriaMet === 'string') {
|
|
139
|
+
gating.debriefVerdict = debrief.successCriteriaMet;
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
venueRef: { name: 'claude-code-learner' },
|
|
143
|
+
gating,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=harvest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harvest.js","sourceRoot":"","sources":["../../../../src/restorer/impls/claude-code-learner/harvest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jinn-network/client claude-code-learner restorer impl.
|
|
3
|
+
*
|
|
4
|
+
* Bridges the engine's RestorerImpl interface to the claude-code-learner
|
|
5
|
+
* plugin shipped at client/plugins/claude-code-learner/.
|
|
6
|
+
*
|
|
7
|
+
* Spec: docs/superpowers/specs/2026-04-23-default-learning-restorer-design.md (v1.1)
|
|
8
|
+
*/
|
|
9
|
+
export type { HarnessAdapter, IntentSessionInputs, ClaudeCodeLearnerConfig, } from './types.js';
|
|
10
|
+
export { ClaudeCodeLearnerImpl } from './restorer.js';
|
|
11
|
+
export { resolvePluginRoot } from './plugin-path.js';
|
|
12
|
+
export { harvestOutput } from './harvest.js';
|
|
13
|
+
export { ClaudeCodeHarnessAdapter } from './adapters/claude-code.js';
|
|
14
|
+
export type { ClaudeCodeHarnessAdapterConfig } from './adapters/claude-code.js';
|
|
15
|
+
export { ClaudeCodeLearnerWrapper, type ClaudeCodeLearnerWrapperConfig } from './wrapper.js';
|