@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":"index.js","sourceRoot":"","sources":["../../../src/restorer/plug-ins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load installed Path 1 plug-ins from operator config and assemble a
|
|
3
|
+
* normalised slot registry. Per-plug-in failures are recorded but never
|
|
4
|
+
* abort the load — daemon boot continues with the surviving registry.
|
|
5
|
+
*
|
|
6
|
+
* Collision policy (phase-agent-override): first-installed-wins on the
|
|
7
|
+
* `(phase, agent, scope.matchKinds)` key. A collision is recorded as an
|
|
8
|
+
* error and the second plug-in is DROPPED. The operator must explicitly
|
|
9
|
+
* remove the existing plug-in before installing the new one.
|
|
10
|
+
* See plan §"Cross-task conventions / Slot routing rule".
|
|
11
|
+
*/
|
|
12
|
+
import type { ExternalPlugInEntry } from './types.js';
|
|
13
|
+
import type { SlotRegistry } from './registry.js';
|
|
14
|
+
export interface LoadPlugInsArgs {
|
|
15
|
+
entries: readonly ExternalPlugInEntry[];
|
|
16
|
+
/** Version of the bundled claude-code-learner package. Used for compat checks. */
|
|
17
|
+
learnerVersion: string;
|
|
18
|
+
}
|
|
19
|
+
export interface LoadPlugInsResult {
|
|
20
|
+
registry: SlotRegistry;
|
|
21
|
+
errors: ReadonlyArray<{
|
|
22
|
+
plugInName: string;
|
|
23
|
+
reason: string;
|
|
24
|
+
}>;
|
|
25
|
+
warnings: ReadonlyArray<string>;
|
|
26
|
+
}
|
|
27
|
+
export declare function loadPlugIns({ entries, learnerVersion, }: LoadPlugInsArgs): Promise<LoadPlugInsResult>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load installed Path 1 plug-ins from operator config and assemble a
|
|
3
|
+
* normalised slot registry. Per-plug-in failures are recorded but never
|
|
4
|
+
* abort the load — daemon boot continues with the surviving registry.
|
|
5
|
+
*
|
|
6
|
+
* Collision policy (phase-agent-override): first-installed-wins on the
|
|
7
|
+
* `(phase, agent, scope.matchKinds)` key. A collision is recorded as an
|
|
8
|
+
* error and the second plug-in is DROPPED. The operator must explicitly
|
|
9
|
+
* remove the existing plug-in before installing the new one.
|
|
10
|
+
* See plan §"Cross-task conventions / Slot routing rule".
|
|
11
|
+
*/
|
|
12
|
+
import { resolve } from 'node:path';
|
|
13
|
+
import semver from 'semver';
|
|
14
|
+
import { loadPlugInManifest } from './manifest.js';
|
|
15
|
+
export async function loadPlugIns({ entries, learnerVersion, }) {
|
|
16
|
+
const errors = [];
|
|
17
|
+
const warnings = [];
|
|
18
|
+
const topicExplorers = [];
|
|
19
|
+
const mcpTools = [];
|
|
20
|
+
const skillBundles = [];
|
|
21
|
+
const memoryBackends = [];
|
|
22
|
+
const hooks = [];
|
|
23
|
+
// Track first-installed-wins collisions for phase-agent overrides.
|
|
24
|
+
const phaseAgentKeyed = new Map();
|
|
25
|
+
for (const entry of entries) {
|
|
26
|
+
let manifest;
|
|
27
|
+
try {
|
|
28
|
+
manifest = await loadPlugInManifest(entry.entry);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
errors.push({ plugInName: entry.name, reason: err.message });
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (manifest.name !== entry.name) {
|
|
35
|
+
errors.push({
|
|
36
|
+
plugInName: entry.name,
|
|
37
|
+
reason: `manifest name "${manifest.name}" mismatches config entry "${entry.name}"`,
|
|
38
|
+
});
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const range = manifest.compatibility.claudeCodeLearner;
|
|
42
|
+
if (!semver.satisfies(learnerVersion, range)) {
|
|
43
|
+
warnings.push(`plug-in ${manifest.name}@${manifest.version} compatibility ${range} out-of-range for claude-code-learner@${learnerVersion}; loading anyway, expected to break`);
|
|
44
|
+
}
|
|
45
|
+
const packageRoot = resolve(entry.entry);
|
|
46
|
+
for (const slot of manifest.slots) {
|
|
47
|
+
const provenance = {
|
|
48
|
+
plugInName: manifest.name,
|
|
49
|
+
plugInVersion: manifest.version,
|
|
50
|
+
packageRoot,
|
|
51
|
+
};
|
|
52
|
+
switch (slot.type) {
|
|
53
|
+
case 'phase-agent-override': {
|
|
54
|
+
const key = `${slot.phase}|${slot.agent}|${(slot.scope?.matchKinds ?? ['*']).join(',')}`;
|
|
55
|
+
if (phaseAgentKeyed.has(key)) {
|
|
56
|
+
const first = phaseAgentKeyed.get(key).plugInName;
|
|
57
|
+
errors.push({
|
|
58
|
+
plugInName: manifest.name,
|
|
59
|
+
reason: `phase-agent-override collision on "${key}": slot already registered by "${first}". Remove "${first}" before installing "${manifest.name}".`,
|
|
60
|
+
});
|
|
61
|
+
// Do not register the second plug-in — first-installed-wins.
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
phaseAgentKeyed.set(key, { ...provenance, slot });
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case 'topic-explorer':
|
|
68
|
+
topicExplorers.push({ ...provenance, slot });
|
|
69
|
+
break;
|
|
70
|
+
case 'mcp-tool':
|
|
71
|
+
mcpTools.push({ ...provenance, slot });
|
|
72
|
+
break;
|
|
73
|
+
case 'skill-bundle':
|
|
74
|
+
skillBundles.push({ ...provenance, slot });
|
|
75
|
+
break;
|
|
76
|
+
case 'memory-backend':
|
|
77
|
+
memoryBackends.push({ ...provenance, slot });
|
|
78
|
+
break;
|
|
79
|
+
case 'hook':
|
|
80
|
+
hooks.push({ ...provenance, slot });
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const phaseAgentOverrides = [
|
|
86
|
+
...phaseAgentKeyed.values(),
|
|
87
|
+
];
|
|
88
|
+
return {
|
|
89
|
+
registry: {
|
|
90
|
+
phaseAgentOverrides,
|
|
91
|
+
topicExplorers,
|
|
92
|
+
mcpTools,
|
|
93
|
+
skillBundles,
|
|
94
|
+
memoryBackends,
|
|
95
|
+
hooks,
|
|
96
|
+
},
|
|
97
|
+
errors,
|
|
98
|
+
warnings,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/restorer/plug-ins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load + validate a Path 1 plug-in's `jinn-plugin.json` manifest from a
|
|
3
|
+
* package root. Pure: no network, no signature verification (Path 1
|
|
4
|
+
* plug-ins inherit trust from the harness — see spec §4.3).
|
|
5
|
+
*/
|
|
6
|
+
import type { JinnPlugInManifest } from './types.js';
|
|
7
|
+
export declare function loadPlugInManifest(packageRoot: string): Promise<JinnPlugInManifest>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load + validate a Path 1 plug-in's `jinn-plugin.json` manifest from a
|
|
3
|
+
* package root. Pure: no network, no signature verification (Path 1
|
|
4
|
+
* plug-ins inherit trust from the harness — see spec §4.3).
|
|
5
|
+
*/
|
|
6
|
+
import { readFile } from 'node:fs/promises';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
import { join, resolve, relative, isAbsolute } from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { Ajv2020 } from 'ajv/dist/2020.js';
|
|
11
|
+
import * as addFormatsModule from 'ajv-formats';
|
|
12
|
+
const addFormats = addFormatsModule
|
|
13
|
+
.default;
|
|
14
|
+
// TODO: refactor to import from client/src/util/path-safety.ts once Stream A
|
|
15
|
+
// creates that module (isInsidePackageDir mirrors isInsideWorkingDir from
|
|
16
|
+
// client/src/restorer/engine/packaging.ts).
|
|
17
|
+
function isInsidePackageDir(base, candidate) {
|
|
18
|
+
const b = resolve(base);
|
|
19
|
+
const c = resolve(candidate);
|
|
20
|
+
const rel = relative(b, c);
|
|
21
|
+
return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
|
|
22
|
+
}
|
|
23
|
+
const SCHEMA_PATH = fileURLToPath(new URL('../../../schemas/jinn-plugin-v1.json', import.meta.url));
|
|
24
|
+
let validatorPromise = null;
|
|
25
|
+
let lastValidator;
|
|
26
|
+
async function getValidator() {
|
|
27
|
+
if (validatorPromise)
|
|
28
|
+
return validatorPromise;
|
|
29
|
+
validatorPromise = (async () => {
|
|
30
|
+
const ajv = new Ajv2020({ allErrors: true, strict: false });
|
|
31
|
+
addFormats(ajv);
|
|
32
|
+
const schema = JSON.parse(await readFile(SCHEMA_PATH, 'utf8'));
|
|
33
|
+
const compiled = ajv.compile(schema);
|
|
34
|
+
lastValidator = compiled;
|
|
35
|
+
return compiled;
|
|
36
|
+
})();
|
|
37
|
+
return validatorPromise;
|
|
38
|
+
}
|
|
39
|
+
export async function loadPlugInManifest(packageRoot) {
|
|
40
|
+
const root = resolve(packageRoot);
|
|
41
|
+
const manifestPath = join(root, 'jinn-plugin.json');
|
|
42
|
+
const pkgJsonPath = join(root, 'package.json');
|
|
43
|
+
if (!existsSync(manifestPath)) {
|
|
44
|
+
throw new Error(`jinn-plugin.json not found in ${root}`);
|
|
45
|
+
}
|
|
46
|
+
if (!existsSync(pkgJsonPath)) {
|
|
47
|
+
throw new Error(`package.json not found in ${root}`);
|
|
48
|
+
}
|
|
49
|
+
const [manifestText, pkgJsonText] = await Promise.all([
|
|
50
|
+
readFile(manifestPath, 'utf8'),
|
|
51
|
+
readFile(pkgJsonPath, 'utf8'),
|
|
52
|
+
]);
|
|
53
|
+
let manifest;
|
|
54
|
+
try {
|
|
55
|
+
manifest = JSON.parse(manifestText);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new Error(`jinn-plugin.json is invalid JSON: ${err.message}`);
|
|
59
|
+
}
|
|
60
|
+
const validate = await getValidator();
|
|
61
|
+
if (!validate(manifest)) {
|
|
62
|
+
const errs = (lastValidator?.errors ?? [])
|
|
63
|
+
.map((e) => `${e.instancePath} ${e.message}`)
|
|
64
|
+
.join('; ');
|
|
65
|
+
throw new Error(`jinn-plugin.json failed schema validation: ${errs}`);
|
|
66
|
+
}
|
|
67
|
+
const pkgJson = JSON.parse(pkgJsonText);
|
|
68
|
+
if (pkgJson.name !== manifest.name) {
|
|
69
|
+
throw new Error(`name mismatch: package.json has "${pkgJson.name}" but jinn-plugin.json has "${manifest.name}"`);
|
|
70
|
+
}
|
|
71
|
+
if (pkgJson.version !== manifest.version) {
|
|
72
|
+
throw new Error(`version mismatch: package.json has "${pkgJson.version}" but jinn-plugin.json has "${manifest.version}"`);
|
|
73
|
+
}
|
|
74
|
+
// Resolve + verify each slot's entry path on disk.
|
|
75
|
+
for (const slot of manifest.slots) {
|
|
76
|
+
if ('entry' in slot && slot.entry) {
|
|
77
|
+
const entryAbs = join(root, slot.entry);
|
|
78
|
+
if (!isInsidePackageDir(root, entryAbs)) {
|
|
79
|
+
throw new Error(`slot entry escapes package root (path traversal): ${slot.entry} (slot type: ${slot.type})`);
|
|
80
|
+
}
|
|
81
|
+
if (!existsSync(entryAbs)) {
|
|
82
|
+
throw new Error(`slot entry not found: ${slot.entry} (slot type: ${slot.type})`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if ('skillsDir' in slot && slot.skillsDir) {
|
|
86
|
+
const skillsAbs = join(root, slot.skillsDir);
|
|
87
|
+
if (!isInsidePackageDir(root, skillsAbs)) {
|
|
88
|
+
throw new Error(`slot skillsDir escapes package root (path traversal): ${slot.skillsDir}`);
|
|
89
|
+
}
|
|
90
|
+
if (!existsSync(skillsAbs)) {
|
|
91
|
+
throw new Error(`slot skillsDir not found: ${slot.skillsDir}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return manifest;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/restorer/plug-ins/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory normalised view of all installed Path 1 plug-ins, keyed by
|
|
3
|
+
* slot type. Built once at daemon boot from `config.learnerPlugIns[]`
|
|
4
|
+
* via {@link loadPlugIns}; serialised to JSON and threaded into the
|
|
5
|
+
* harness via `JINN_SLOT_REGISTRY_JSON` (see `serialise.ts`).
|
|
6
|
+
*/
|
|
7
|
+
import type { PhaseAgentOverrideSlot, TopicExplorerSlot, McpToolSlot, SkillBundleSlot, MemoryBackendSlot, HookSlot } from './types.js';
|
|
8
|
+
/** A slot as stored in the registry — original slot data plus provenance. */
|
|
9
|
+
export interface RegistrySlot<S> {
|
|
10
|
+
plugInName: string;
|
|
11
|
+
plugInVersion: string;
|
|
12
|
+
/** Absolute path to the plug-in package root. */
|
|
13
|
+
packageRoot: string;
|
|
14
|
+
slot: S;
|
|
15
|
+
}
|
|
16
|
+
export interface SlotRegistry {
|
|
17
|
+
phaseAgentOverrides: ReadonlyArray<RegistrySlot<PhaseAgentOverrideSlot>>;
|
|
18
|
+
topicExplorers: ReadonlyArray<RegistrySlot<TopicExplorerSlot>>;
|
|
19
|
+
mcpTools: ReadonlyArray<RegistrySlot<McpToolSlot>>;
|
|
20
|
+
skillBundles: ReadonlyArray<RegistrySlot<SkillBundleSlot>>;
|
|
21
|
+
memoryBackends: ReadonlyArray<RegistrySlot<MemoryBackendSlot>>;
|
|
22
|
+
hooks: ReadonlyArray<RegistrySlot<HookSlot>>;
|
|
23
|
+
}
|
|
24
|
+
export declare function emptyRegistry(): SlotRegistry;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory normalised view of all installed Path 1 plug-ins, keyed by
|
|
3
|
+
* slot type. Built once at daemon boot from `config.learnerPlugIns[]`
|
|
4
|
+
* via {@link loadPlugIns}; serialised to JSON and threaded into the
|
|
5
|
+
* harness via `JINN_SLOT_REGISTRY_JSON` (see `serialise.ts`).
|
|
6
|
+
*/
|
|
7
|
+
export function emptyRegistry() {
|
|
8
|
+
return {
|
|
9
|
+
phaseAgentOverrides: [],
|
|
10
|
+
topicExplorers: [],
|
|
11
|
+
mcpTools: [],
|
|
12
|
+
skillBundles: [],
|
|
13
|
+
memoryBackends: [],
|
|
14
|
+
hooks: [],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/restorer/plug-ins/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,mBAAmB,EAAE,EAAE;QACvB,cAAc,EAAE,EAAE;QAClB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialise the in-memory {@link SlotRegistry} into a JSON-stable shape
|
|
3
|
+
* for the harness hand-off (`workingDir/.coordinator/slots.json`).
|
|
4
|
+
*
|
|
5
|
+
* Phase skills `Read` this file and route plug-in contributions into
|
|
6
|
+
* orient / strategize / plan / execute / debrief / improve /
|
|
7
|
+
* memory-consolidation. Shape is intentionally simple — no types, just
|
|
8
|
+
* JSON objects that markdown skills can grep/jq.
|
|
9
|
+
*/
|
|
10
|
+
import type { SlotRegistry } from './registry.js';
|
|
11
|
+
import type { Slot, PhaseAgentOverrideSlot, TopicExplorerSlot, McpToolSlot, SkillBundleSlot, MemoryBackendSlot, HookSlot } from './types.js';
|
|
12
|
+
export interface SerialisedSlot<S extends Slot> {
|
|
13
|
+
plugInName: string;
|
|
14
|
+
packageRoot: string;
|
|
15
|
+
slot: S;
|
|
16
|
+
}
|
|
17
|
+
export interface SerialisedRegistry {
|
|
18
|
+
/** ISO timestamp of registry construction. */
|
|
19
|
+
builtAt: string;
|
|
20
|
+
/** claude-code-learner version this registry was built against. */
|
|
21
|
+
learnerVersion: string;
|
|
22
|
+
phaseAgentOverrides: ReadonlyArray<SerialisedSlot<PhaseAgentOverrideSlot>>;
|
|
23
|
+
topicExplorers: ReadonlyArray<SerialisedSlot<TopicExplorerSlot>>;
|
|
24
|
+
mcpTools: ReadonlyArray<SerialisedSlot<McpToolSlot>>;
|
|
25
|
+
skillBundles: ReadonlyArray<SerialisedSlot<SkillBundleSlot>>;
|
|
26
|
+
memoryBackends: ReadonlyArray<SerialisedSlot<MemoryBackendSlot>>;
|
|
27
|
+
hooks: ReadonlyArray<SerialisedSlot<HookSlot>>;
|
|
28
|
+
}
|
|
29
|
+
export declare function serialiseRegistry(registry: SlotRegistry, learnerVersion: string): SerialisedRegistry;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialise the in-memory {@link SlotRegistry} into a JSON-stable shape
|
|
3
|
+
* for the harness hand-off (`workingDir/.coordinator/slots.json`).
|
|
4
|
+
*
|
|
5
|
+
* Phase skills `Read` this file and route plug-in contributions into
|
|
6
|
+
* orient / strategize / plan / execute / debrief / improve /
|
|
7
|
+
* memory-consolidation. Shape is intentionally simple — no types, just
|
|
8
|
+
* JSON objects that markdown skills can grep/jq.
|
|
9
|
+
*/
|
|
10
|
+
function projectSlot(r) {
|
|
11
|
+
return {
|
|
12
|
+
plugInName: r.plugInName,
|
|
13
|
+
packageRoot: r.packageRoot,
|
|
14
|
+
slot: r.slot,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function serialiseRegistry(registry, learnerVersion) {
|
|
18
|
+
return {
|
|
19
|
+
builtAt: new Date().toISOString(),
|
|
20
|
+
learnerVersion,
|
|
21
|
+
phaseAgentOverrides: registry.phaseAgentOverrides.map(projectSlot),
|
|
22
|
+
topicExplorers: registry.topicExplorers.map(projectSlot),
|
|
23
|
+
mcpTools: registry.mcpTools.map(projectSlot),
|
|
24
|
+
skillBundles: registry.skillBundles.map(projectSlot),
|
|
25
|
+
memoryBackends: registry.memoryBackends.map(projectSlot),
|
|
26
|
+
hooks: registry.hooks.map(projectSlot),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=serialise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialise.js","sourceRoot":"","sources":["../../../src/restorer/plug-ins/serialise.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,SAAS,WAAW,CAAiB,CAAkB;IACrD,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,cAAsB;IAEtB,OAAO;QACL,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,cAAc;QACd,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;QAClE,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QACxD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;QAC5C,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;QACpD,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QACxD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Path 1 plug-in surface (`jinn-plugin.json`).
|
|
3
|
+
*
|
|
4
|
+
* Spec: spec/2026-04-30-plug-in-surface.md §4. Plan:
|
|
5
|
+
* docs/superpowers/plans/2026-04-30-plug-in-surface-path-1-mechanism.md.
|
|
6
|
+
*
|
|
7
|
+
* The shape mirrors `client/schemas/jinn-plugin-v1.json` 1:1.
|
|
8
|
+
*/
|
|
9
|
+
export type SlotScope = {
|
|
10
|
+
matchKinds: readonly string[];
|
|
11
|
+
};
|
|
12
|
+
export type PhaseAgentOverrideSlot = {
|
|
13
|
+
type: 'phase-agent-override';
|
|
14
|
+
phase: 'strategize' | 'plan' | 'execute' | 'debrief' | 'improve' | 'memory-consolidation';
|
|
15
|
+
agent: 'strategist' | 'planner' | 'step-worker' | 'analyst' | 'promoter' | 'consolidator';
|
|
16
|
+
scope?: SlotScope;
|
|
17
|
+
entry: string;
|
|
18
|
+
};
|
|
19
|
+
export type TopicExplorerSlot = {
|
|
20
|
+
type: 'topic-explorer';
|
|
21
|
+
phase: 'orient' | 'debrief';
|
|
22
|
+
topic: string;
|
|
23
|
+
scope?: SlotScope;
|
|
24
|
+
entry: string;
|
|
25
|
+
};
|
|
26
|
+
export type McpToolSlot = {
|
|
27
|
+
type: 'mcp-tool';
|
|
28
|
+
command: string;
|
|
29
|
+
args: readonly string[];
|
|
30
|
+
namespace?: string;
|
|
31
|
+
};
|
|
32
|
+
export type SkillBundleSlot = {
|
|
33
|
+
type: 'skill-bundle';
|
|
34
|
+
skillsDir: string;
|
|
35
|
+
scope?: SlotScope;
|
|
36
|
+
};
|
|
37
|
+
export type MemoryBackendSlot = {
|
|
38
|
+
type: 'memory-backend';
|
|
39
|
+
command: string;
|
|
40
|
+
args: readonly string[];
|
|
41
|
+
scope?: SlotScope;
|
|
42
|
+
};
|
|
43
|
+
export type HookSlot = {
|
|
44
|
+
type: 'hook';
|
|
45
|
+
event: 'session-start' | 'pre-phase' | 'post-phase' | 'session-end';
|
|
46
|
+
phase?: 'orient' | 'strategize' | 'plan' | 'execute' | 'debrief' | 'improve' | 'memory-consolidation';
|
|
47
|
+
entry: string;
|
|
48
|
+
scope?: SlotScope;
|
|
49
|
+
};
|
|
50
|
+
export type Slot = PhaseAgentOverrideSlot | TopicExplorerSlot | McpToolSlot | SkillBundleSlot | MemoryBackendSlot | HookSlot;
|
|
51
|
+
export interface JinnPlugInManifest {
|
|
52
|
+
schemaVersion: '1.0.0';
|
|
53
|
+
name: string;
|
|
54
|
+
version: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
compatibility: {
|
|
57
|
+
claudeCodeLearner: string;
|
|
58
|
+
supportedKinds?: readonly string[];
|
|
59
|
+
};
|
|
60
|
+
slots: readonly Slot[];
|
|
61
|
+
author?: {
|
|
62
|
+
name: string;
|
|
63
|
+
url?: string;
|
|
64
|
+
};
|
|
65
|
+
license?: string;
|
|
66
|
+
homepage?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* One entry in operator config (`config.learnerPlugIns[]`). Points the
|
|
70
|
+
* loader at a package root that contains a `jinn-plugin.json` manifest.
|
|
71
|
+
*/
|
|
72
|
+
export interface ExternalPlugInEntry {
|
|
73
|
+
/** MUST equal the manifest's `name`. */
|
|
74
|
+
name: string;
|
|
75
|
+
/** Local filesystem path to the plug-in package's root (typically a node_modules path). */
|
|
76
|
+
entry: string;
|
|
77
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Path 1 plug-in surface (`jinn-plugin.json`).
|
|
3
|
+
*
|
|
4
|
+
* Spec: spec/2026-04-30-plug-in-surface.md §4. Plan:
|
|
5
|
+
* docs/superpowers/plans/2026-04-30-plug-in-surface-path-1-mechanism.md.
|
|
6
|
+
*
|
|
7
|
+
* The shape mirrors `client/schemas/jinn-plugin-v1.json` 1:1.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/restorer/plug-ins/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
package/dist/restorer/types.d.ts
CHANGED
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Pure type definitions; no runtime side effects.
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { RestorationJob } from '../types/desired-state.js';
|
|
7
7
|
import type { OutputArtifact, RationaleEntry, Snapshot } from '../types/portfolio.js';
|
|
8
|
+
import type { TrajectoryCollector } from '../trajectory/index.js';
|
|
9
|
+
import type { ScopedSigner, ScopedRpc, ScopedSecrets } from './capability/index.js';
|
|
8
10
|
export interface RestorationContext {
|
|
9
|
-
intent:
|
|
11
|
+
intent: RestorationJob;
|
|
10
12
|
/**
|
|
11
13
|
* IPFS CID of this job's desired state (from Marketplace / observe).
|
|
12
14
|
* Restorers' submission manifests should reference the same CID; evaluators
|
|
@@ -26,6 +28,31 @@ export interface RestorationContext {
|
|
|
26
28
|
/** Fires at window.endTs. */
|
|
27
29
|
abort: AbortSignal;
|
|
28
30
|
msUntilEndTs: () => number;
|
|
31
|
+
/**
|
|
32
|
+
* In-run trajectory collector. Impls call ctx.trajectory.addSpan(...)
|
|
33
|
+
* (or use the traced wrappers) to emit spans. The engine emits the
|
|
34
|
+
* collected trajectory to IPFS before envelope assembly and populates
|
|
35
|
+
* envelope.trajectory with the resulting { cid, sha256 }.
|
|
36
|
+
*/
|
|
37
|
+
trajectory: TrajectoryCollector;
|
|
38
|
+
/**
|
|
39
|
+
* Scoped signer capability. Present when the daemon is providing a
|
|
40
|
+
* signing surface to this impl per its manifest allow-list. Absent
|
|
41
|
+
* for stub-mode CLI introspection.
|
|
42
|
+
* Spec: `spec/2026-05-executor-trust-boundary.md` §3.2.
|
|
43
|
+
*/
|
|
44
|
+
signer?: ScopedSigner;
|
|
45
|
+
/**
|
|
46
|
+
* Scoped read-only RPC client. Method-filtered, rate-limited, and
|
|
47
|
+
* chain-scoped per the impl's manifest.
|
|
48
|
+
* Spec: `spec/2026-05-executor-trust-boundary.md` §3.3.
|
|
49
|
+
*/
|
|
50
|
+
rpc?: ScopedRpc;
|
|
51
|
+
/**
|
|
52
|
+
* Per-impl secret bag, populated by `onEnable`.
|
|
53
|
+
* Spec: `spec/2026-05-executor-trust-boundary.md` §3.4.
|
|
54
|
+
*/
|
|
55
|
+
secrets?: ScopedSecrets;
|
|
29
56
|
}
|
|
30
57
|
export interface RestorationOutput {
|
|
31
58
|
venueRef: {
|
|
@@ -38,9 +65,36 @@ export interface RestorationOutput {
|
|
|
38
65
|
/** Shape is per spec.kind convention. */
|
|
39
66
|
gating: Record<string, unknown>;
|
|
40
67
|
informational?: Record<string, unknown>;
|
|
68
|
+
/**
|
|
69
|
+
* Full restoration payload for impls whose kind has a non-portfolio payload
|
|
70
|
+
* schema (e.g. prediction.v0, prediction.apy.v0).
|
|
71
|
+
*
|
|
72
|
+
* When set, engine.pack() uses this directly as the envelope payload
|
|
73
|
+
* (validated against the kind's restoration schema) instead of building the
|
|
74
|
+
* portfolio-shaped { preSnapshot, postSnapshot, fills, gating } wrapper.
|
|
75
|
+
* Portfolio impls MUST leave this undefined (engine falls back to legacy shape).
|
|
76
|
+
*/
|
|
77
|
+
restorationPayload?: Record<string, unknown>;
|
|
78
|
+
/**
|
|
79
|
+
* Full verdict payload for evaluator impls (intentType === 'evaluation').
|
|
80
|
+
*
|
|
81
|
+
* When set, engine.pack() uses role='verdict' and passes this as the
|
|
82
|
+
* envelope payload directly (validated against the kind's verdict schema).
|
|
83
|
+
* Restoration impls MUST leave this undefined.
|
|
84
|
+
*/
|
|
85
|
+
verdictPayload?: Record<string, unknown>;
|
|
41
86
|
artifacts?: OutputArtifact[];
|
|
42
87
|
rationale?: RationaleEntry[];
|
|
43
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Kind/type slice for contextual impl probes (`isReady`, `enableMetadata`,
|
|
91
|
+
* `onEnable` / `onDisable` delegation on wrappers). Mirrors the `supports()`
|
|
92
|
+
* discriminant.
|
|
93
|
+
*/
|
|
94
|
+
export type ImplIntentPeek = {
|
|
95
|
+
kind: string;
|
|
96
|
+
type?: 'restoration' | 'evaluation';
|
|
97
|
+
};
|
|
44
98
|
/**
|
|
45
99
|
* Context-free readiness probe. "Are this impl's external dependencies
|
|
46
100
|
* satisfied right now, regardless of any specific intent?" Used by
|
|
@@ -134,7 +188,7 @@ export interface RestorerImpl {
|
|
|
134
188
|
/**
|
|
135
189
|
* Return true if this impl should handle the given (kind, type) pair.
|
|
136
190
|
*
|
|
137
|
-
* `type` reflects
|
|
191
|
+
* `type` reflects RestorationJob.type:
|
|
138
192
|
* - 'restoration' (or undefined — legacy default): the impl runs a restoration attempt
|
|
139
193
|
* - 'evaluation': the impl runs as an evaluator producing a verdict
|
|
140
194
|
*
|
|
@@ -145,7 +199,7 @@ export interface RestorerImpl {
|
|
|
145
199
|
kind: string;
|
|
146
200
|
type?: 'restoration' | 'evaluation';
|
|
147
201
|
}): boolean;
|
|
148
|
-
canAttempt?(intent:
|
|
202
|
+
canAttempt?(intent: RestorationJob): Promise<{
|
|
149
203
|
ok: true;
|
|
150
204
|
} | {
|
|
151
205
|
ok: false;
|
|
@@ -153,17 +207,18 @@ export interface RestorerImpl {
|
|
|
153
207
|
}>;
|
|
154
208
|
run(ctx: RestorationContext): Promise<RestorationOutput>;
|
|
155
209
|
/**
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
210
|
+
* Readiness probe. Zero-dep impls can omit this (treated as `{ ready: true }`).
|
|
211
|
+
* When `spec` is provided (daemon pre-claim gate, `jinn intents`), wrappers
|
|
212
|
+
* should delegate to the kind-matched specialist instead of aggregating all.
|
|
159
213
|
*/
|
|
160
|
-
isReady?(): Promise<ReadyStatus>;
|
|
214
|
+
isReady?(spec?: ImplIntentPeek): Promise<ReadyStatus>;
|
|
161
215
|
/**
|
|
162
216
|
* Describes what `onEnable` wants from the caller. Consumed by
|
|
163
217
|
* `jinn intents list` so the agent can tell the operator what a
|
|
164
218
|
* specific kind's enable flow needs without triggering it first.
|
|
219
|
+
* With `spec`, wrappers delegate to the specialist for that kind.
|
|
165
220
|
*/
|
|
166
|
-
enableMetadata?(): IntentEnableMetadata;
|
|
221
|
+
enableMetadata?(spec?: ImplIntentPeek): IntentEnableMetadata | undefined;
|
|
167
222
|
/**
|
|
168
223
|
* Idempotent enable-state machine. Called by `jinn intents enable <kind>`.
|
|
169
224
|
*
|
|
@@ -182,7 +237,7 @@ export interface RestorerImpl {
|
|
|
182
237
|
* Impls that omit this method cannot be enabled by the generic CLI;
|
|
183
238
|
* they are either always-on (zero-dep) or require manual config.
|
|
184
239
|
*/
|
|
185
|
-
onEnable?(args: Record<string, string | undefined
|
|
240
|
+
onEnable?(args: Record<string, string | undefined>, spec?: ImplIntentPeek): Promise<EnableResult>;
|
|
186
241
|
/**
|
|
187
242
|
* Optional inverse of `onEnable`. Invoked when the operator runs
|
|
188
243
|
* `jinn intents disable <kind>`. Should NOT destroy unrecoverable
|
|
@@ -190,5 +245,5 @@ export interface RestorerImpl {
|
|
|
190
245
|
* that for explicit `jinn intents purge` or similar (out of scope
|
|
191
246
|
* for this interface).
|
|
192
247
|
*/
|
|
193
|
-
onDisable?(): Promise<void>;
|
|
248
|
+
onDisable?(spec?: ImplIntentPeek): Promise<void>;
|
|
194
249
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/restorer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/restorer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoHH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAAgB;IACzD,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,sBAAsB;IAC9B,QAAQ,EAAE;QACR,WAAW,EAAE,mDAAmD;QAChE,GAAG,EAAE,UAAU;KAChB;CACF,CAAC;AA0DF,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,MAAM,CAAS;IAExB,YAAY,MAAc,EAAE,OAAgB;QAC1C,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
package/dist/runner/claude.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RestorationJob, RestorationResult } from '../types/index.js';
|
|
2
2
|
import type { Runner, RunnerContext } from './runner.js';
|
|
3
3
|
export interface ClaudeRunnerConfig {
|
|
4
4
|
claudePath?: string;
|
|
@@ -10,6 +10,6 @@ export declare class ClaudeRunner implements Runner {
|
|
|
10
10
|
private model?;
|
|
11
11
|
private readonly mcpLauncher;
|
|
12
12
|
constructor(config?: ClaudeRunnerConfig);
|
|
13
|
-
run(
|
|
13
|
+
run(restorationJob: RestorationJob, context: RunnerContext): Promise<RestorationResult>;
|
|
14
14
|
}
|
|
15
|
-
export declare function buildPrompt(
|
|
15
|
+
export declare function buildPrompt(restorationJob: RestorationJob): string;
|