functionalscript 0.43.1 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -21
- package/fjs/asn.1/module.f.d.mts +123 -0
- package/fjs/asn.1/module.f.mjs +459 -0
- package/fjs/asn.1/proof.f.d.mts +53 -0
- package/fjs/asn.1/proof.f.mjs +321 -0
- package/fjs/asn.1/types.d.ts +37 -0
- package/fjs/asserts/module.f.d.mts +51 -0
- package/fjs/asserts/module.f.mjs +69 -0
- package/fjs/asserts/proof.f.d.mts +14 -0
- package/fjs/asserts/proof.f.mjs +33 -0
- package/fjs/asserts/types.d.ts +11 -0
- package/fjs/basen/base128/module.f.d.mts +22 -0
- package/fjs/basen/base128/module.f.mjs +51 -0
- package/fjs/basen/base128/proof.f.d.mts +4 -0
- package/fjs/basen/base128/proof.f.mjs +32 -0
- package/fjs/basen/base64/module.f.d.mts +14 -0
- package/fjs/basen/base64/module.f.mjs +75 -0
- package/fjs/basen/base64/proof.f.d.mts +19 -0
- package/fjs/basen/base64/proof.f.mjs +150 -0
- package/fjs/basen/cbase32/module.f.d.mts +18 -0
- package/fjs/basen/cbase32/module.f.mjs +61 -0
- package/fjs/basen/cbase32/proof.f.d.mts +10 -0
- package/fjs/basen/cbase32/proof.f.mjs +79 -0
- package/fjs/basen/module.f.d.mts +30 -0
- package/fjs/basen/module.f.mjs +88 -0
- package/fjs/basen/proof.f.mjs +69 -0
- package/fjs/basen/types.d.ts +14 -0
- package/fjs/bnf/data/module.f.d.mts +47 -0
- package/fjs/bnf/data/module.f.mjs +188 -0
- package/fjs/bnf/data/proof.f.d.mts +13 -0
- package/fjs/bnf/data/proof.f.mjs +159 -0
- package/fjs/bnf/data/types.d.ts +35 -0
- package/fjs/bnf/descent/module.f.d.mts +48 -0
- package/fjs/bnf/descent/module.f.mjs +289 -0
- package/fjs/bnf/descent/proof.f.d.mts +14 -0
- package/fjs/bnf/descent/proof.f.mjs +427 -0
- package/fjs/bnf/descent/types.d.ts +79 -0
- package/fjs/bnf/ll1/module.f.d.mts +67 -0
- package/fjs/bnf/ll1/module.f.mjs +341 -0
- package/fjs/bnf/ll1/proof.f.d.mts +18 -0
- package/fjs/bnf/ll1/proof.f.mjs +413 -0
- package/fjs/bnf/ll1/types.d.ts +65 -0
- package/fjs/bnf/module.f.d.mts +173 -0
- package/fjs/bnf/module.f.mjs +339 -0
- package/fjs/bnf/proof.f.d.mts +19 -0
- package/fjs/bnf/proof.f.mjs +165 -0
- package/fjs/bnf/testlib.f.d.mts +10 -0
- package/fjs/bnf/testlib.f.mjs +196 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +36 -0
- package/fjs/bnf/token_symbol/module.f.mjs +63 -0
- package/fjs/bnf/token_symbol/proof.f.mjs +46 -0
- package/fjs/bnf/token_symbol/types.d.ts +27 -0
- package/fjs/bnf/types.d.ts +74 -0
- package/fjs/cas/cli/module.f.d.mts +17 -0
- package/fjs/cas/cli/module.f.mjs +73 -0
- package/fjs/cas/cli/proof.f.d.mts +20 -0
- package/fjs/cas/cli/proof.f.mjs +120 -0
- package/fjs/cas/evo/module.f.d.mts +157 -0
- package/fjs/cas/evo/module.f.mjs +563 -0
- package/fjs/cas/evo/proof.f.d.mts +55 -0
- package/fjs/cas/evo/proof.f.mjs +752 -0
- package/fjs/cas/evo/types.d.ts +111 -0
- package/fjs/cas/module.f.d.mts +68 -0
- package/fjs/cas/module.f.mjs +350 -0
- package/fjs/cas/proof.f.d.mts +29 -0
- package/fjs/cas/proof.f.mjs +371 -0
- package/fjs/cas/types.d.ts +35 -0
- package/fjs/ci/bun/module.f.d.mts +11 -0
- package/fjs/ci/bun/module.f.mjs +20 -0
- package/fjs/ci/common/module.f.d.mts +80 -0
- package/fjs/ci/common/module.f.mjs +88 -0
- package/fjs/ci/common/types.d.ts +27 -0
- package/fjs/ci/config/module.f.d.mts +45 -0
- package/fjs/ci/config/module.f.mjs +89 -0
- package/fjs/ci/deno/module.f.d.mts +16 -0
- package/fjs/ci/deno/module.f.mjs +29 -0
- package/fjs/ci/deno/proof.f.d.mts +4 -0
- package/fjs/ci/deno/proof.f.mjs +26 -0
- package/fjs/ci/module.f.d.mts +19 -0
- package/fjs/ci/module.f.mjs +89 -0
- package/fjs/ci/nix/module.f.d.mts +69 -0
- package/fjs/ci/nix/module.f.mjs +136 -0
- package/fjs/ci/nix/proof.f.d.mts +30 -0
- package/fjs/ci/nix/proof.f.mjs +146 -0
- package/fjs/ci/nix/types.d.ts +16 -0
- package/fjs/ci/node/module.f.d.mts +48 -0
- package/fjs/ci/node/module.f.mjs +139 -0
- package/fjs/ci/node/proof.f.mjs +18 -0
- package/fjs/ci/proof.f.d.mts +22 -0
- package/fjs/ci/proof.f.mjs +220 -0
- package/fjs/ci/rust/module.f.d.mts +15 -0
- package/fjs/ci/rust/module.f.mjs +108 -0
- package/fjs/ci/types.d.ts +9 -0
- package/fjs/cli/module.f.d.mts +16 -0
- package/fjs/cli/module.f.mjs +51 -0
- package/fjs/cli/proof.f.d.mts +18 -0
- package/fjs/cli/proof.f.mjs +132 -0
- package/fjs/cli/types.d.ts +15 -0
- package/fjs/common/monoid/module.f.d.mts +145 -0
- package/fjs/common/monoid/module.f.mjs +267 -0
- package/fjs/common/monoid/proof.f.d.mts +21 -0
- package/fjs/common/monoid/proof.f.mjs +142 -0
- package/fjs/common/monoid/types.d.ts +73 -0
- package/fjs/crypto/hmac/module.f.d.mts +32 -0
- package/fjs/crypto/hmac/module.f.mjs +65 -0
- package/fjs/crypto/hmac/proof.f.mjs +34 -0
- package/fjs/crypto/pow/module.f.d.mts +43 -0
- package/fjs/crypto/pow/module.f.mjs +93 -0
- package/fjs/crypto/pow/proof.f.mjs +121 -0
- package/fjs/crypto/pow/types.d.ts +19 -0
- package/fjs/crypto/secp/module.f.d.mts +61 -0
- package/fjs/crypto/secp/module.f.mjs +204 -0
- package/fjs/crypto/secp/proof.f.d.mts +11 -0
- package/fjs/crypto/secp/proof.f.mjs +139 -0
- package/fjs/crypto/secp/types.d.ts +36 -0
- package/fjs/crypto/sha2/module.f.d.mts +80 -0
- package/fjs/crypto/sha2/module.f.mjs +431 -0
- package/fjs/crypto/sha2/proof.f.d.mts +34 -0
- package/fjs/crypto/sha2/proof.f.mjs +146 -0
- package/fjs/crypto/sha2/types.d.ts +57 -0
- package/fjs/crypto/sign/module.f.d.mts +46 -0
- package/fjs/crypto/sign/module.f.mjs +189 -0
- package/fjs/crypto/sign/proof.f.d.mts +17 -0
- package/fjs/crypto/sign/proof.f.mjs +604 -0
- package/fjs/crypto/sign/types.d.ts +13 -0
- package/fjs/crypto/vdf/module.f.d.mts +34 -0
- package/fjs/crypto/vdf/module.f.mjs +86 -0
- package/fjs/crypto/vdf/proof.f.mjs +106 -0
- package/fjs/crypto/vdf/types.d.ts +18 -0
- package/fjs/dev/module.f.d.mts +59 -0
- package/fjs/dev/module.f.mjs +171 -0
- package/fjs/dev/package_json/module.f.d.mts +39 -0
- package/fjs/dev/package_json/module.f.mjs +40 -0
- package/fjs/dev/package_json/proof.f.mjs +32 -0
- package/fjs/dev/proof.f.d.mts +13 -0
- package/fjs/dev/proof.f.mjs +78 -0
- package/fjs/dev/types.d.ts +14 -0
- package/fjs/dev/update/module.f.d.mts +22 -0
- package/fjs/dev/update/module.f.mjs +37 -0
- package/fjs/dev/update/proof.f.d.mts +10 -0
- package/fjs/dev/update/proof.f.mjs +35 -0
- package/fjs/djs/ast/module.f.d.mts +35 -0
- package/fjs/djs/ast/module.f.mjs +82 -0
- package/fjs/djs/ast/proof.f.mjs +48 -0
- package/fjs/djs/ast/types.d.ts +54 -0
- package/fjs/djs/examples/input.f.mjs +4 -0
- package/fjs/djs/examples/m.f.mjs +1 -0
- package/fjs/djs/module.f.d.mts +17 -0
- package/fjs/djs/module.f.mjs +47 -0
- package/fjs/djs/parser/module.f.d.mts +78 -0
- package/fjs/djs/parser/module.f.mjs +565 -0
- package/fjs/djs/parser/proof.f.d.mts +17 -0
- package/fjs/djs/parser/proof.f.mjs +555 -0
- package/fjs/djs/parser/types.d.ts +11 -0
- package/fjs/djs/proof.f.d.mts +13 -0
- package/fjs/djs/proof.f.mjs +55 -0
- package/fjs/djs/serializer/module.f.d.mts +30 -0
- package/fjs/djs/serializer/module.f.mjs +207 -0
- package/fjs/djs/serializer/proof.f.mjs +116 -0
- package/fjs/djs/tokenizer/module.f.d.mts +65 -0
- package/fjs/djs/tokenizer/module.f.mjs +632 -0
- package/fjs/djs/tokenizer/proof.f.d.mts +17 -0
- package/fjs/djs/tokenizer/proof.f.mjs +992 -0
- package/fjs/djs/tokenizer/types.d.ts +20 -0
- package/fjs/djs/transpiler/module.f.d.mts +33 -0
- package/fjs/djs/transpiler/module.f.mjs +122 -0
- package/fjs/djs/transpiler/proof.f.mjs +76 -0
- package/fjs/djs/transpiler/types.d.ts +25 -0
- package/fjs/djs/types.d.ts +13 -0
- package/fjs/effects/eff/module.f.d.mts +20 -0
- package/fjs/effects/eff/module.f.mjs +70 -0
- package/fjs/effects/eff/proof.f.d.mts +15 -0
- package/fjs/effects/eff/proof.f.mjs +69 -0
- package/fjs/effects/eff/types.d.ts +71 -0
- package/fjs/effects/list/module.f.d.mts +32 -0
- package/fjs/effects/list/module.f.mjs +36 -0
- package/fjs/effects/list/types.d.ts +26 -0
- package/fjs/effects/memory/module.f.d.mts +34 -0
- package/fjs/effects/memory/module.f.mjs +45 -0
- package/fjs/effects/memory/proof.f.d.mts +16 -0
- package/fjs/effects/memory/proof.f.mjs +86 -0
- package/fjs/effects/memory/types.d.ts +18 -0
- package/fjs/effects/mock/module.f.d.mts +14 -0
- package/fjs/effects/mock/module.f.mjs +28 -0
- package/fjs/effects/mock/types.d.ts +15 -0
- package/fjs/effects/module.d.mts +15 -0
- package/fjs/effects/module.f.d.mts +352 -0
- package/fjs/effects/module.f.mjs +383 -0
- package/fjs/effects/module.mjs +26 -0
- package/fjs/effects/node/memory/module.d.mts +27 -0
- package/fjs/effects/node/memory/module.mjs +60 -0
- package/fjs/effects/node/memory/proof.d.mts +12 -0
- package/fjs/effects/node/memory/proof.mjs +44 -0
- package/fjs/effects/node/module.d.mts +59 -0
- package/fjs/effects/node/module.f.d.mts +177 -0
- package/fjs/effects/node/module.f.mjs +348 -0
- package/fjs/effects/node/module.mjs +381 -0
- package/fjs/effects/node/proof.f.d.mts +76 -0
- package/fjs/effects/node/proof.f.mjs +444 -0
- package/fjs/effects/node/types.d.ts +203 -0
- package/fjs/effects/node/virtual/module.f.d.mts +34 -0
- package/fjs/effects/node/virtual/module.f.mjs +435 -0
- package/fjs/effects/node/virtual/proof.f.d.mts +38 -0
- package/fjs/effects/node/virtual/proof.f.mjs +238 -0
- package/fjs/effects/node/virtual/types.d.ts +39 -0
- package/fjs/effects/proof.f.d.mts +65 -0
- package/fjs/effects/proof.f.mjs +234 -0
- package/fjs/effects/types.d.ts +115 -0
- package/fjs/emergent_testing/all.test.d.mts +8 -0
- package/fjs/emergent_testing/all.test.mjs +14 -0
- package/fjs/emergent_testing/example.f.d.mts +16 -0
- package/fjs/emergent_testing/example.f.mjs +34 -0
- package/fjs/emergent_testing/module.f.d.mts +155 -0
- package/fjs/emergent_testing/module.f.mjs +388 -0
- package/fjs/emergent_testing/proof.f.d.mts +97 -0
- package/fjs/emergent_testing/proof.f.mjs +518 -0
- package/fjs/emergent_testing/types.d.ts +53 -0
- package/fjs/fsc/bnf.f.d.mts +6 -0
- package/fjs/fsc/bnf.f.mjs +80 -0
- package/fjs/fsc/json.f.d.mts +16 -0
- package/fjs/fsc/json.f.mjs +127 -0
- package/fjs/fsc/module.f.d.mts +23 -0
- package/fjs/fsc/module.f.mjs +140 -0
- package/fjs/fsc/proof.f.mjs +119 -0
- package/fjs/fsm/module.f.d.mts +27 -0
- package/fjs/fsm/module.f.mjs +99 -0
- package/fjs/fsm/proof.f.d.mts +7 -0
- package/fjs/fsm/proof.f.mjs +149 -0
- package/fjs/js/tokenizer/module.f.d.mts +26 -0
- package/fjs/js/tokenizer/module.f.mjs +759 -0
- package/fjs/js/tokenizer/proof.f.d.mts +12 -0
- package/fjs/js/tokenizer/proof.f.mjs +681 -0
- package/fjs/js/tokenizer/types.d.ts +193 -0
- package/fjs/mcp/cas/module.f.d.mts +156 -0
- package/fjs/mcp/cas/module.f.mjs +302 -0
- package/fjs/mcp/evo/module.f.d.mts +88 -0
- package/fjs/mcp/evo/module.f.mjs +153 -0
- package/fjs/mcp/evo/proof.f.d.mts +17 -0
- package/fjs/mcp/evo/proof.f.mjs +166 -0
- package/fjs/mcp/module.f.d.mts +67 -0
- package/fjs/mcp/module.f.mjs +98 -0
- package/fjs/mcp/proof.f.d.mts +56 -0
- package/fjs/mcp/proof.f.mjs +718 -0
- package/fjs/media/html/module.f.d.mts +55 -0
- package/fjs/media/html/module.f.mjs +169 -0
- package/fjs/media/html/proof.f.d.mts +19 -0
- package/fjs/media/html/proof.f.mjs +80 -0
- package/fjs/media/html/types.d.ts +19 -0
- package/fjs/media/json/module.f.d.mts +48 -0
- package/fjs/media/json/module.f.mjs +104 -0
- package/fjs/media/json/parser/module.f.d.mts +30 -0
- package/fjs/media/json/parser/module.f.mjs +236 -0
- package/fjs/media/json/parser/proof.f.d.mts +8 -0
- package/fjs/media/json/parser/proof.f.mjs +314 -0
- package/fjs/media/json/parser/types.d.ts +39 -0
- package/fjs/media/json/proof.f.mjs +79 -0
- package/fjs/media/json/rtti/module.f.d.mts +38 -0
- package/fjs/media/json/rtti/module.f.mjs +51 -0
- package/fjs/media/json/rtti/proof.f.d.mts +29 -0
- package/fjs/media/json/rtti/proof.f.mjs +86 -0
- package/fjs/media/json/schema/module.f.d.mts +113 -0
- package/fjs/media/json/schema/module.f.mjs +309 -0
- package/fjs/media/json/schema/proof.f.d.mts +81 -0
- package/fjs/media/json/schema/proof.f.mjs +305 -0
- package/fjs/media/json/serializer/module.f.d.mts +40 -0
- package/fjs/media/json/serializer/module.f.mjs +131 -0
- package/fjs/media/json/serializer/proof.f.mjs +92 -0
- package/fjs/media/json/tokenizer/module.f.d.mts +25 -0
- package/fjs/media/json/tokenizer/module.f.mjs +96 -0
- package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
- package/fjs/media/json/tokenizer/types.d.ts +17 -0
- package/fjs/media/json/types.d.ts +25 -0
- package/fjs/media/module.f.d.mts +116 -0
- package/fjs/media/module.f.mjs +152 -0
- package/fjs/media/nix/module.f.d.mts +27 -0
- package/fjs/media/nix/module.f.mjs +263 -0
- package/fjs/media/nix/proof.f.d.mts +35 -0
- package/fjs/media/nix/proof.f.mjs +184 -0
- package/fjs/media/nix/types.d.ts +22 -0
- package/fjs/media/proof.f.d.mts +19 -0
- package/fjs/media/proof.f.mjs +159 -0
- package/fjs/media/revision/module.f.d.mts +124 -0
- package/fjs/media/revision/module.f.mjs +163 -0
- package/fjs/media/revision/proof.f.d.mts +46 -0
- package/fjs/media/revision/proof.f.mjs +231 -0
- package/fjs/media/revision/types.d.ts +16 -0
- package/fjs/media/rust/module.f.d.mts +61 -0
- package/fjs/media/rust/module.f.mjs +93 -0
- package/fjs/media/rust/proof.f.d.mts +17 -0
- package/fjs/media/rust/proof.f.mjs +50 -0
- package/fjs/media/type/module.f.d.mts +114 -0
- package/fjs/media/type/module.f.mjs +265 -0
- package/fjs/media/type/proof.f.d.mts +56 -0
- package/fjs/media/type/proof.f.mjs +325 -0
- package/fjs/media/type/types.d.ts +67 -0
- package/fjs/media/types.d.ts +26 -0
- package/fjs/module.d.mts +7 -0
- package/fjs/module.f.d.mts +11 -0
- package/fjs/module.f.mjs +62 -0
- package/fjs/module.mjs +12 -0
- package/fjs/nanvm/module.f.d.mts +54 -0
- package/fjs/nanvm/module.f.mjs +240 -0
- package/fjs/nanvm/proof.f.d.mts +41 -0
- package/fjs/nanvm/proof.f.mjs +173 -0
- package/fjs/nanvm/rust/module.f.d.mts +54 -0
- package/fjs/nanvm/rust/module.f.mjs +166 -0
- package/fjs/nanvm/rust/proof.f.d.mts +21 -0
- package/fjs/nanvm/rust/proof.f.mjs +119 -0
- package/fjs/nanvm/types.d.ts +105 -0
- package/fjs/nanvm/update/module.f.d.mts +23 -0
- package/fjs/nanvm/update/module.f.mjs +33 -0
- package/fjs/nanvm/update/proof.f.d.mts +9 -0
- package/fjs/nanvm/update/proof.f.mjs +32 -0
- package/fjs/path/module.f.d.mts +63 -0
- package/fjs/path/module.f.mjs +98 -0
- package/fjs/path/proof.f.mjs +125 -0
- package/fjs/proof.f.d.mts +13 -0
- package/fjs/proof.f.mjs +51 -0
- package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
- package/fjs/protocol/json_rpc/module.f.mjs +115 -0
- package/fjs/protocol/json_rpc/proof.f.d.mts +41 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +105 -0
- package/fjs/protocol/json_rpc/types.d.ts +30 -0
- package/fjs/protocol/mcp/module.f.d.mts +227 -0
- package/fjs/protocol/mcp/module.f.mjs +369 -0
- package/fjs/protocol/mcp/proof.f.d.mts +57 -0
- package/fjs/protocol/mcp/proof.f.mjs +335 -0
- package/fjs/protocol/mcp/stdio/module.f.d.mts +50 -0
- package/fjs/protocol/mcp/stdio/module.f.mjs +125 -0
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
- package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
- package/fjs/protocol/mcp/stdio/types.d.ts +14 -0
- package/fjs/protocol/mcp/types.d.ts +59 -0
- package/fjs/sul/id/module.f.d.mts +42 -0
- package/fjs/sul/id/module.f.mjs +144 -0
- package/fjs/sul/id/proof.f.mjs +72 -0
- package/fjs/sul/id/types.d.ts +8 -0
- package/fjs/sul/level/hash/module.f.d.mts +40 -0
- package/fjs/sul/level/hash/module.f.mjs +62 -0
- package/fjs/sul/level/hash/proof.f.d.mts +19 -0
- package/fjs/sul/level/hash/proof.f.mjs +134 -0
- package/fjs/sul/level/hash/types.d.ts +20 -0
- package/fjs/sul/level/literal/module.f.d.mts +57 -0
- package/fjs/sul/level/literal/module.f.mjs +121 -0
- package/fjs/sul/level/literal/proof.f.d.mts +15 -0
- package/fjs/sul/level/literal/proof.f.mjs +791 -0
- package/fjs/sul/level/literal/types.d.ts +31 -0
- package/fjs/sul/module.f.d.mts +27 -0
- package/fjs/sul/module.f.mjs +70 -0
- package/fjs/sul/proof.f.d.mts +15 -0
- package/fjs/sul/proof.f.mjs +65 -0
- package/fjs/sul/types.d.ts +19 -0
- package/fjs/text/ascii/module.f.d.mts +162 -0
- package/fjs/text/ascii/module.f.mjs +272 -0
- package/fjs/text/ascii/proof.f.d.mts +16 -0
- package/fjs/text/ascii/proof.f.mjs +48 -0
- package/fjs/text/code_point/module.f.d.mts +92 -0
- package/fjs/text/code_point/module.f.mjs +155 -0
- package/fjs/text/code_point/proof.f.d.mts +9 -0
- package/fjs/text/code_point/proof.f.mjs +108 -0
- package/fjs/text/module.f.d.mts +41 -0
- package/fjs/text/module.f.mjs +62 -0
- package/fjs/text/proof.f.d.mts +13 -0
- package/fjs/text/proof.f.mjs +51 -0
- package/fjs/text/sgr/module.f.d.mts +61 -0
- package/fjs/text/sgr/module.f.mjs +100 -0
- package/fjs/text/sgr/proof.f.d.mts +4 -0
- package/fjs/text/sgr/proof.f.mjs +42 -0
- package/fjs/text/sgr/types.d.ts +12 -0
- package/fjs/text/types.d.ts +13 -0
- package/fjs/text/utf16/module.f.d.mts +151 -0
- package/fjs/text/utf16/module.f.mjs +348 -0
- package/fjs/text/utf16/proof.f.d.mts +13 -0
- package/fjs/text/utf16/proof.f.mjs +175 -0
- package/fjs/text/utf16/types.d.ts +19 -0
- package/fjs/text/utf8/module.f.d.mts +73 -0
- package/fjs/text/utf8/module.f.mjs +278 -0
- package/fjs/text/utf8/proof.f.mjs +217 -0
- package/fjs/text/utf8/types.d.ts +26 -0
- package/fjs/types/array/module.f.d.mts +69 -0
- package/fjs/types/array/module.f.mjs +101 -0
- package/fjs/types/array/proof.f.mjs +98 -0
- package/fjs/types/array/types.d.ts +13 -0
- package/fjs/types/bigfloat/module.f.d.mts +34 -0
- package/fjs/types/bigfloat/module.f.mjs +125 -0
- package/fjs/types/bigfloat/proof.f.d.mts +6 -0
- package/fjs/types/bigfloat/proof.f.mjs +264 -0
- package/fjs/types/bigfloat/types.d.ts +6 -0
- package/fjs/types/bigint/benchmark.mjs +205 -0
- package/fjs/types/bigint/module.f.d.mts +180 -0
- package/fjs/types/bigint/module.f.mjs +290 -0
- package/fjs/types/bigint/proof.f.d.mts +39 -0
- package/fjs/types/bigint/proof.f.mjs +443 -0
- package/fjs/types/bigint/types.d.ts +14 -0
- package/fjs/types/bit_vec/module.f.d.mts +195 -0
- package/fjs/types/bit_vec/module.f.mjs +475 -0
- package/fjs/types/bit_vec/proof.f.d.mts +71 -0
- package/fjs/types/bit_vec/proof.f.mjs +521 -0
- package/fjs/types/bit_vec/types.d.ts +51 -0
- package/fjs/types/btree/find/module.f.d.mts +19 -0
- package/fjs/types/btree/find/module.f.mjs +80 -0
- package/fjs/types/btree/find/proof.f.d.mts +8 -0
- package/fjs/types/btree/find/proof.f.mjs +123 -0
- package/fjs/types/btree/find/types.d.ts +22 -0
- package/fjs/types/btree/module.f.d.mts +13 -0
- package/fjs/types/btree/module.f.mjs +40 -0
- package/fjs/types/btree/proof.f.d.mts +18 -0
- package/fjs/types/btree/proof.f.mjs +87 -0
- package/fjs/types/btree/remove/module.f.d.mts +32 -0
- package/fjs/types/btree/remove/module.f.mjs +187 -0
- package/fjs/types/btree/remove/proof.f.d.mts +12 -0
- package/fjs/types/btree/remove/proof.f.mjs +475 -0
- package/fjs/types/btree/set/module.f.d.mts +14 -0
- package/fjs/types/btree/set/module.f.mjs +116 -0
- package/fjs/types/btree/set/proof.f.d.mts +4 -0
- package/fjs/types/btree/set/proof.f.mjs +430 -0
- package/fjs/types/btree/types/module.f.d.mts +20 -0
- package/fjs/types/btree/types/module.f.mjs +20 -0
- package/fjs/types/btree/types/types.d.ts +14 -0
- package/fjs/types/byte_set/module.f.d.mts +35 -0
- package/fjs/types/byte_set/module.f.mjs +68 -0
- package/fjs/types/byte_set/proof.f.d.mts +14 -0
- package/fjs/types/byte_set/proof.f.mjs +86 -0
- package/fjs/types/byte_set/types.d.ts +6 -0
- package/fjs/types/function/compare/module.f.d.mts +45 -0
- package/fjs/types/function/compare/module.f.mjs +72 -0
- package/fjs/types/function/compare/proof.f.mjs +50 -0
- package/fjs/types/function/compare/types.d.ts +22 -0
- package/fjs/types/function/module.f.d.mts +33 -0
- package/fjs/types/function/module.f.mjs +39 -0
- package/fjs/types/function/operator/module.f.d.mts +38 -0
- package/fjs/types/function/operator/module.f.mjs +55 -0
- package/fjs/types/function/operator/proof.f.mjs +76 -0
- package/fjs/types/function/operator/types.d.ts +39 -0
- package/fjs/types/function/proof.f.mjs +16 -0
- package/fjs/types/function/types.d.ts +16 -0
- package/fjs/types/list/module.f.d.mts +95 -0
- package/fjs/types/list/module.f.mjs +311 -0
- package/fjs/types/list/proof.f.d.mts +35 -0
- package/fjs/types/list/proof.f.mjs +365 -0
- package/fjs/types/list/types.d.ts +36 -0
- package/fjs/types/map/module.f.d.mts +13 -0
- package/fjs/types/map/module.f.mjs +42 -0
- package/fjs/types/map/proof.f.mjs +25 -0
- package/fjs/types/nibble_set/module.f.d.mts +31 -0
- package/fjs/types/nibble_set/module.f.mjs +43 -0
- package/fjs/types/nibble_set/proof.f.mjs +59 -0
- package/fjs/types/nibble_set/types.d.ts +9 -0
- package/fjs/types/nominal/module.f.d.mts +10 -0
- package/fjs/types/nominal/module.f.mjs +17 -0
- package/fjs/types/nominal/proof.f.d.mts +7 -0
- package/fjs/types/nominal/proof.f.mjs +79 -0
- package/fjs/types/nominal/types.d.ts +25 -0
- package/fjs/types/nullable/module.f.d.mts +44 -0
- package/fjs/types/nullable/module.f.mjs +55 -0
- package/fjs/types/nullable/proof.f.mjs +34 -0
- package/fjs/types/nullable/types.d.ts +6 -0
- package/fjs/types/number/module.f.d.mts +27 -0
- package/fjs/types/number/module.f.mjs +56 -0
- package/fjs/types/number/proof.f.mjs +204 -0
- package/fjs/types/object/module.f.d.mts +45 -0
- package/fjs/types/object/module.f.mjs +67 -0
- package/fjs/types/object/proof.f.d.mts +28 -0
- package/fjs/types/object/proof.f.mjs +29 -0
- package/fjs/types/object/structurally_same/module.f.d.mts +39 -0
- package/fjs/types/object/structurally_same/module.f.mjs +59 -0
- package/fjs/types/object/structurally_same/proof.f.d.mts +6 -0
- package/fjs/types/object/structurally_same/proof.f.mjs +73 -0
- package/fjs/types/object/types.d.ts +50 -0
- package/fjs/types/ordered_map/module.f.d.mts +26 -0
- package/fjs/types/ordered_map/module.f.mjs +55 -0
- package/fjs/types/ordered_map/proof.f.d.mts +8 -0
- package/fjs/types/ordered_map/proof.f.mjs +91 -0
- package/fjs/types/ordered_map/types.d.ts +8 -0
- package/fjs/types/patricia_trie/module.f.d.mts +20 -0
- package/fjs/types/patricia_trie/module.f.mjs +43 -0
- package/fjs/types/patricia_trie/proof.f.d.mts +17 -0
- package/fjs/types/patricia_trie/proof.f.mjs +151 -0
- package/fjs/types/patricia_trie/types.d.ts +34 -0
- package/fjs/types/prime_field/module.f.d.mts +44 -0
- package/fjs/types/prime_field/module.f.mjs +137 -0
- package/fjs/types/prime_field/proof.f.mjs +131 -0
- package/fjs/types/prime_field/types.d.ts +38 -0
- package/fjs/types/range/module.f.d.mts +12 -0
- package/fjs/types/range/module.f.mjs +13 -0
- package/fjs/types/range/proof.f.mjs +10 -0
- package/fjs/types/range/types.d.ts +6 -0
- package/fjs/types/range_map/module.f.d.mts +78 -0
- package/fjs/types/range_map/module.f.mjs +127 -0
- package/fjs/types/range_map/proof.f.d.mts +11 -0
- package/fjs/types/range_map/proof.f.mjs +188 -0
- package/fjs/types/range_map/types.d.ts +56 -0
- package/fjs/types/range_set/module.f.d.mts +10 -0
- package/fjs/types/range_set/module.f.mjs +20 -0
- package/fjs/types/range_set/proof.f.d.mts +4 -0
- package/fjs/types/range_set/proof.f.mjs +29 -0
- package/fjs/types/result/module.d.mts +13 -0
- package/fjs/types/result/module.f.d.mts +89 -0
- package/fjs/types/result/module.f.mjs +97 -0
- package/fjs/types/result/module.mjs +30 -0
- package/fjs/types/result/proof.f.d.mts +17 -0
- package/fjs/types/result/proof.f.mjs +61 -0
- package/fjs/types/result/types.d.ts +17 -0
- package/fjs/types/rtti/common/module.f.d.mts +119 -0
- package/fjs/types/rtti/common/module.f.mjs +185 -0
- package/fjs/types/rtti/common/proof.f.d.mts +13 -0
- package/fjs/types/rtti/common/proof.f.mjs +67 -0
- package/fjs/types/rtti/common/types.d.ts +43 -0
- package/fjs/types/rtti/data/module.f.d.mts +120 -0
- package/fjs/types/rtti/data/module.f.mjs +1030 -0
- package/fjs/types/rtti/data/proof.f.d.mts +75 -0
- package/fjs/types/rtti/data/proof.f.mjs +566 -0
- package/fjs/types/rtti/data/types.d.ts +83 -0
- package/fjs/types/rtti/module.f.d.mts +83 -0
- package/fjs/types/rtti/module.f.mjs +112 -0
- package/fjs/types/rtti/parse/module.f.d.mts +47 -0
- package/fjs/types/rtti/parse/module.f.mjs +198 -0
- package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
- package/fjs/types/rtti/parse/proof.f.mjs +343 -0
- package/fjs/types/rtti/parse/types.d.ts +12 -0
- package/fjs/types/rtti/proof.f.d.mts +10 -0
- package/fjs/types/rtti/proof.f.mjs +22 -0
- package/fjs/types/rtti/ts/module.f.d.mts +93 -0
- package/fjs/types/rtti/ts/module.f.mjs +296 -0
- package/fjs/types/rtti/ts/proof.f.d.mts +103 -0
- package/fjs/types/rtti/ts/proof.f.mjs +236 -0
- package/fjs/types/rtti/ts/types.d.ts +99 -0
- package/fjs/types/rtti/types.d.ts +83 -0
- package/fjs/types/rtti/validate/module.f.d.mts +41 -0
- package/fjs/types/rtti/validate/module.f.mjs +171 -0
- package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
- package/fjs/types/rtti/validate/proof.f.mjs +437 -0
- package/fjs/types/rtti/validate/types.d.ts +6 -0
- package/fjs/types/sorted_list/module.f.d.mts +46 -0
- package/fjs/types/sorted_list/module.f.mjs +119 -0
- package/fjs/types/sorted_list/proof.f.d.mts +7 -0
- package/fjs/types/sorted_list/proof.f.mjs +54 -0
- package/fjs/types/sorted_list/types.d.ts +15 -0
- package/fjs/types/sorted_set/module.f.d.mts +54 -0
- package/fjs/types/sorted_set/module.f.mjs +58 -0
- package/fjs/types/sorted_set/proof.f.d.mts +9 -0
- package/fjs/types/sorted_set/proof.f.mjs +79 -0
- package/fjs/types/sorted_set/types.d.ts +6 -0
- package/fjs/types/string/module.f.d.mts +40 -0
- package/fjs/types/string/module.f.mjs +59 -0
- package/fjs/types/string/proof.f.mjs +76 -0
- package/fjs/types/string_set/module.f.d.mts +39 -0
- package/fjs/types/string_set/module.f.mjs +54 -0
- package/fjs/types/string_set/proof.f.mjs +46 -0
- package/fjs/types/string_set/types.d.ts +7 -0
- package/fjs/types/ts/module.f.d.mts +22 -0
- package/fjs/types/ts/module.f.mjs +51 -0
- package/fjs/types/ts/proof.f.d.mts +39 -0
- package/fjs/types/ts/proof.f.mjs +102 -0
- package/fjs/types/ts/types.d.ts +21 -0
- package/fjs/types/uint8array/module.f.d.mts +42 -0
- package/fjs/types/uint8array/module.f.mjs +58 -0
- package/fjs/types/uint8array/proof.f.d.mts +17 -0
- package/fjs/types/uint8array/proof.f.mjs +73 -0
- package/fjs/website/module.f.d.mts +11 -0
- package/fjs/website/module.f.mjs +25 -0
- package/fjs/website/proof.f.mjs +14 -0
- package/package.json +12 -10
- package/todo/proof.f.d.mts +22 -0
- package/todo/proof.f.mjs +59 -0
- package/fjs/asn.1/module.f.d.ts +0 -62
- package/fjs/asn.1/module.f.js +0 -278
- package/fjs/asn.1/proof.f.d.ts +0 -48
- package/fjs/asn.1/proof.f.js +0 -285
- package/fjs/asserts/module.f.d.ts +0 -36
- package/fjs/asserts/module.f.js +0 -39
- package/fjs/asserts/proof.f.d.ts +0 -11
- package/fjs/asserts/proof.f.js +0 -18
- package/fjs/base_n/module.f.d.ts +0 -45
- package/fjs/base_n/module.f.js +0 -72
- package/fjs/base_n/proof.f.js +0 -73
- package/fjs/basen/base128/module.f.d.ts +0 -20
- package/fjs/basen/base128/module.f.js +0 -43
- package/fjs/basen/base128/proof.f.js +0 -26
- package/fjs/basen/base64/module.f.d.ts +0 -9
- package/fjs/basen/base64/module.f.js +0 -71
- package/fjs/basen/base64/proof.f.d.ts +0 -16
- package/fjs/basen/base64/proof.f.js +0 -139
- package/fjs/basen/cbase32/module.f.d.ts +0 -11
- package/fjs/basen/cbase32/module.f.js +0 -55
- package/fjs/basen/cbase32/proof.f.d.ts +0 -7
- package/fjs/basen/cbase32/proof.f.js +0 -62
- package/fjs/bnf/data/module.f.d.ts +0 -52
- package/fjs/bnf/data/module.f.js +0 -143
- package/fjs/bnf/data/proof.f.d.ts +0 -8
- package/fjs/bnf/data/proof.f.js +0 -169
- package/fjs/bnf/descent/module.f.d.ts +0 -87
- package/fjs/bnf/descent/module.f.js +0 -149
- package/fjs/bnf/descent/proof.f.d.ts +0 -7
- package/fjs/bnf/descent/proof.f.js +0 -368
- package/fjs/bnf/ll1/module.f.d.ts +0 -72
- package/fjs/bnf/ll1/module.f.js +0 -155
- package/fjs/bnf/ll1/proof.f.d.ts +0 -10
- package/fjs/bnf/ll1/proof.f.js +0 -375
- package/fjs/bnf/module.f.d.ts +0 -165
- package/fjs/bnf/module.f.js +0 -174
- package/fjs/bnf/proof.f.d.ts +0 -12
- package/fjs/bnf/proof.f.js +0 -69
- package/fjs/bnf/testlib.f.d.ts +0 -3
- package/fjs/bnf/testlib.f.js +0 -138
- package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
- package/fjs/bnf/token_symbol/module.f.js +0 -48
- package/fjs/bnf/token_symbol/proof.f.js +0 -37
- package/fjs/cas/cli/module.f.d.ts +0 -6
- package/fjs/cas/cli/module.f.js +0 -53
- package/fjs/cas/cli/proof.f.d.ts +0 -17
- package/fjs/cas/cli/proof.f.js +0 -112
- package/fjs/cas/evo/module.f.d.ts +0 -223
- package/fjs/cas/evo/module.f.js +0 -455
- package/fjs/cas/evo/proof.f.d.ts +0 -47
- package/fjs/cas/evo/proof.f.js +0 -707
- package/fjs/cas/module.f.d.ts +0 -64
- package/fjs/cas/module.f.js +0 -255
- package/fjs/cas/proof.f.d.ts +0 -18
- package/fjs/cas/proof.f.js +0 -305
- package/fjs/ci/bun/module.f.d.ts +0 -2
- package/fjs/ci/bun/module.f.js +0 -15
- package/fjs/ci/common/module.f.d.ts +0 -88
- package/fjs/ci/common/module.f.js +0 -63
- package/fjs/ci/config/module.f.d.ts +0 -45
- package/fjs/ci/config/module.f.js +0 -80
- package/fjs/ci/deno/module.f.d.ts +0 -10
- package/fjs/ci/deno/module.f.js +0 -28
- package/fjs/ci/deno/proof.f.d.ts +0 -5
- package/fjs/ci/deno/proof.f.js +0 -26
- package/fjs/ci/module.f.d.ts +0 -13
- package/fjs/ci/module.f.js +0 -58
- package/fjs/ci/nix/module.f.d.ts +0 -61
- package/fjs/ci/nix/module.f.js +0 -92
- package/fjs/ci/nix/proof.f.d.ts +0 -23
- package/fjs/ci/nix/proof.f.js +0 -109
- package/fjs/ci/node/module.f.d.ts +0 -28
- package/fjs/ci/node/module.f.js +0 -92
- package/fjs/ci/node/proof.f.js +0 -17
- package/fjs/ci/proof.f.d.ts +0 -18
- package/fjs/ci/proof.f.js +0 -182
- package/fjs/ci/rust/module.f.d.ts +0 -3
- package/fjs/ci/rust/module.f.js +0 -75
- package/fjs/cli/module.f.d.ts +0 -11
- package/fjs/cli/module.f.js +0 -34
- package/fjs/cli/proof.f.d.ts +0 -14
- package/fjs/cli/proof.f.js +0 -111
- package/fjs/common/monoid/module.f.d.ts +0 -126
- package/fjs/common/monoid/module.f.js +0 -88
- package/fjs/common/monoid/proof.f.d.ts +0 -9
- package/fjs/common/monoid/proof.f.js +0 -48
- package/fjs/crypto/hmac/module.f.d.ts +0 -29
- package/fjs/crypto/hmac/module.f.js +0 -56
- package/fjs/crypto/hmac/proof.f.js +0 -32
- package/fjs/crypto/pow/module.f.d.ts +0 -37
- package/fjs/crypto/pow/module.f.js +0 -72
- package/fjs/crypto/pow/proof.f.js +0 -111
- package/fjs/crypto/secp/module.f.d.ts +0 -85
- package/fjs/crypto/secp/module.f.js +0 -176
- package/fjs/crypto/secp/proof.f.d.ts +0 -8
- package/fjs/crypto/secp/proof.f.js +0 -124
- package/fjs/crypto/sha2/module.f.d.ts +0 -102
- package/fjs/crypto/sha2/module.f.js +0 -266
- package/fjs/crypto/sha2/proof.f.d.ts +0 -31
- package/fjs/crypto/sha2/proof.f.js +0 -139
- package/fjs/crypto/sign/module.f.d.ts +0 -33
- package/fjs/crypto/sign/module.f.js +0 -163
- package/fjs/crypto/sign/proof.f.d.ts +0 -11
- package/fjs/crypto/sign/proof.f.js +0 -562
- package/fjs/crypto/vdf/module.f.d.ts +0 -21
- package/fjs/crypto/vdf/module.f.js +0 -57
- package/fjs/crypto/vdf/proof.f.js +0 -94
- package/fjs/dev/module.f.d.ts +0 -57
- package/fjs/dev/module.f.js +0 -135
- package/fjs/dev/package_json/module.f.d.ts +0 -16
- package/fjs/dev/package_json/module.f.js +0 -24
- package/fjs/dev/package_json/proof.f.js +0 -28
- package/fjs/dev/proof.f.d.ts +0 -13
- package/fjs/dev/proof.f.js +0 -77
- package/fjs/dev/update/module.f.d.ts +0 -11
- package/fjs/dev/update/module.f.js +0 -20
- package/fjs/dev/update/proof.f.d.ts +0 -7
- package/fjs/dev/update/proof.f.js +0 -35
- package/fjs/djs/ast/module.f.d.ts +0 -62
- package/fjs/djs/ast/module.f.js +0 -61
- package/fjs/djs/ast/proof.f.js +0 -49
- package/fjs/djs/examples/input.f.js +0 -4
- package/fjs/djs/examples/m.f.js +0 -1
- package/fjs/djs/module.f.d.ts +0 -17
- package/fjs/djs/module.f.js +0 -22
- package/fjs/djs/parser/module.f.d.ts +0 -23
- package/fjs/djs/parser/module.f.js +0 -410
- package/fjs/djs/parser/proof.f.d.ts +0 -14
- package/fjs/djs/parser/proof.f.js +0 -556
- package/fjs/djs/proof.f.d.ts +0 -10
- package/fjs/djs/proof.f.js +0 -50
- package/fjs/djs/serializer/module.f.d.ts +0 -17
- package/fjs/djs/serializer/module.f.js +0 -173
- package/fjs/djs/serializer/proof.f.js +0 -133
- package/fjs/djs/tokenizer/module.f.d.ts +0 -24
- package/fjs/djs/tokenizer/module.f.js +0 -472
- package/fjs/djs/tokenizer/proof.f.d.ts +0 -14
- package/fjs/djs/tokenizer/proof.f.js +0 -1211
- package/fjs/djs/transpiler/module.f.d.ts +0 -41
- package/fjs/djs/transpiler/module.f.js +0 -88
- package/fjs/djs/transpiler/proof.f.js +0 -67
- package/fjs/effects/eff/module.f.d.ts +0 -72
- package/fjs/effects/eff/module.f.js +0 -46
- package/fjs/effects/eff/proof.f.d.ts +0 -11
- package/fjs/effects/eff/proof.f.js +0 -58
- package/fjs/effects/list/module.f.d.ts +0 -37
- package/fjs/effects/list/module.f.js +0 -17
- package/fjs/effects/memory/module.f.d.ts +0 -37
- package/fjs/effects/memory/module.f.js +0 -24
- package/fjs/effects/memory/proof.f.d.ts +0 -6
- package/fjs/effects/memory/proof.f.js +0 -50
- package/fjs/effects/mock/module.f.d.ts +0 -16
- package/fjs/effects/mock/module.f.js +0 -20
- package/fjs/effects/module.d.ts +0 -2
- package/fjs/effects/module.f.d.ts +0 -408
- package/fjs/effects/module.f.js +0 -312
- package/fjs/effects/module.js +0 -11
- package/fjs/effects/node/memory/module.d.ts +0 -20
- package/fjs/effects/node/memory/module.js +0 -44
- package/fjs/effects/node/memory/proof.d.ts +0 -10
- package/fjs/effects/node/memory/proof.js +0 -29
- package/fjs/effects/node/module.d.ts +0 -20
- package/fjs/effects/node/module.f.d.ts +0 -300
- package/fjs/effects/node/module.f.js +0 -171
- package/fjs/effects/node/module.js +0 -305
- package/fjs/effects/node/proof.f.d.ts +0 -69
- package/fjs/effects/node/proof.f.js +0 -409
- package/fjs/effects/node/virtual/module.f.d.ts +0 -49
- package/fjs/effects/node/virtual/module.f.js +0 -440
- package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
- package/fjs/effects/node/virtual/proof.f.js +0 -186
- package/fjs/effects/proof.f.d.ts +0 -56
- package/fjs/effects/proof.f.js +0 -200
- package/fjs/emergent_testing/all.test.js +0 -5
- package/fjs/emergent_testing/example.f.d.ts +0 -13
- package/fjs/emergent_testing/example.f.js +0 -31
- package/fjs/emergent_testing/module.f.d.ts +0 -140
- package/fjs/emergent_testing/module.f.js +0 -289
- package/fjs/emergent_testing/proof.f.d.ts +0 -67
- package/fjs/emergent_testing/proof.f.js +0 -416
- package/fjs/emergent_testing/scenarios/all.d.ts +0 -1
- package/fjs/emergent_testing/scenarios/all.js +0 -1
- package/fjs/emergent_testing/scenarios/async-subtests.fail.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.fail.js +0 -9
- package/fjs/emergent_testing/scenarios/async-subtests.pass.d.ts +0 -6
- package/fjs/emergent_testing/scenarios/async-subtests.pass.js +0 -9
- package/fjs/emergent_testing/scenarios/async.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.fail.js +0 -6
- package/fjs/emergent_testing/scenarios/async.pass.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/async.pass.js +0 -5
- package/fjs/emergent_testing/scenarios/fail.fail.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/fail.fail.js +0 -3
- package/fjs/emergent_testing/scenarios/return-value.pass.d.ts +0 -3
- package/fjs/emergent_testing/scenarios/return-value.pass.js +0 -4
- package/fjs/emergent_testing/scenarios/thenable.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable.pass.js +0 -11
- package/fjs/emergent_testing/scenarios/thenable2.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/thenable2.pass.js +0 -3
- package/fjs/emergent_testing/scenarios/throw.pass.d.ts +0 -5
- package/fjs/emergent_testing/scenarios/throw.pass.js +0 -3
- package/fjs/fsc/bnf.f.d.ts +0 -2
- package/fjs/fsc/bnf.f.js +0 -42
- package/fjs/fsc/json.f.d.ts +0 -7
- package/fjs/fsc/json.f.js +0 -64
- package/fjs/fsc/module.f.d.ts +0 -11
- package/fjs/fsc/module.f.js +0 -73
- package/fjs/fsc/proof.f.js +0 -104
- package/fjs/fsm/module.f.d.ts +0 -17
- package/fjs/fsm/module.f.js +0 -55
- package/fjs/fsm/proof.f.d.ts +0 -4
- package/fjs/fsm/proof.f.js +0 -126
- package/fjs/js/tokenizer/module.f.d.ts +0 -104
- package/fjs/js/tokenizer/module.f.js +0 -547
- package/fjs/js/tokenizer/proof.f.d.ts +0 -9
- package/fjs/js/tokenizer/proof.f.js +0 -986
- package/fjs/mcp/cas/module.f.d.ts +0 -27
- package/fjs/mcp/cas/module.f.js +0 -232
- package/fjs/mcp/evo/module.f.d.ts +0 -32
- package/fjs/mcp/evo/module.f.js +0 -99
- package/fjs/mcp/evo/proof.f.d.ts +0 -12
- package/fjs/mcp/evo/proof.f.js +0 -147
- package/fjs/mcp/module.f.d.ts +0 -56
- package/fjs/mcp/module.f.js +0 -69
- package/fjs/mcp/proof.f.d.ts +0 -45
- package/fjs/mcp/proof.f.js +0 -535
- package/fjs/media/html/module.f.d.ts +0 -52
- package/fjs/media/html/module.f.js +0 -117
- package/fjs/media/html/proof.f.d.ts +0 -16
- package/fjs/media/html/proof.f.js +0 -65
- package/fjs/media/json/module.f.d.ts +0 -64
- package/fjs/media/json/module.f.js +0 -109
- package/fjs/media/json/parser/module.f.d.ts +0 -21
- package/fjs/media/json/parser/module.f.js +0 -194
- package/fjs/media/json/parser/proof.f.d.ts +0 -5
- package/fjs/media/json/parser/proof.f.js +0 -314
- package/fjs/media/json/proof.f.js +0 -98
- package/fjs/media/json/schema/module.f.d.ts +0 -78
- package/fjs/media/json/schema/module.f.js +0 -96
- package/fjs/media/json/schema/proof.f.d.ts +0 -36
- package/fjs/media/json/schema/proof.f.js +0 -83
- package/fjs/media/json/serializer/module.f.d.ts +0 -28
- package/fjs/media/json/serializer/module.f.js +0 -73
- package/fjs/media/json/serializer/proof.f.js +0 -94
- package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
- package/fjs/media/json/tokenizer/module.f.js +0 -63
- package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
- package/fjs/media/json/tokenizer/proof.f.js +0 -417
- package/fjs/media/module.f.d.ts +0 -119
- package/fjs/media/module.f.js +0 -88
- package/fjs/media/nix/module.f.d.ts +0 -30
- package/fjs/media/nix/module.f.js +0 -166
- package/fjs/media/nix/proof.f.d.ts +0 -32
- package/fjs/media/nix/proof.f.js +0 -127
- package/fjs/media/proof.f.d.ts +0 -19
- package/fjs/media/proof.f.js +0 -127
- package/fjs/media/revision/module.f.d.ts +0 -94
- package/fjs/media/revision/module.f.js +0 -143
- package/fjs/media/revision/proof.f.d.ts +0 -42
- package/fjs/media/revision/proof.f.js +0 -190
- package/fjs/media/type/module.f.d.ts +0 -135
- package/fjs/media/type/module.f.js +0 -231
- package/fjs/media/type/proof.f.d.ts +0 -40
- package/fjs/media/type/proof.f.js +0 -213
- package/fjs/module.d.ts +0 -2
- package/fjs/module.f.d.ts +0 -2
- package/fjs/module.f.js +0 -50
- package/fjs/module.js +0 -4
- package/fjs/path/module.f.d.ts +0 -46
- package/fjs/path/module.f.js +0 -71
- package/fjs/path/proof.f.js +0 -119
- package/fjs/proof.f.d.ts +0 -9
- package/fjs/proof.f.js +0 -38
- package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
- package/fjs/protocol/json_rpc/module.f.js +0 -89
- package/fjs/protocol/json_rpc/proof.f.d.ts +0 -35
- package/fjs/protocol/json_rpc/proof.f.js +0 -68
- package/fjs/protocol/mcp/module.f.d.ts +0 -239
- package/fjs/protocol/mcp/module.f.js +0 -272
- package/fjs/protocol/mcp/proof.f.d.ts +0 -34
- package/fjs/protocol/mcp/proof.f.js +0 -208
- package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
- package/fjs/protocol/mcp/stdio/module.f.js +0 -78
- package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
- package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
- package/fjs/sul/id/module.f.d.ts +0 -33
- package/fjs/sul/id/module.f.js +0 -93
- package/fjs/sul/id/proof.f.js +0 -61
- package/fjs/sul/level/hash/module.f.d.ts +0 -38
- package/fjs/sul/level/hash/module.f.js +0 -43
- package/fjs/sul/level/hash/proof.f.d.ts +0 -13
- package/fjs/sul/level/hash/proof.f.js +0 -112
- package/fjs/sul/level/literal/module.f.d.ts +0 -64
- package/fjs/sul/level/literal/module.f.js +0 -88
- package/fjs/sul/level/literal/proof.f.d.ts +0 -12
- package/fjs/sul/level/literal/proof.f.js +0 -714
- package/fjs/sul/module.f.d.ts +0 -23
- package/fjs/sul/module.f.js +0 -46
- package/fjs/sul/proof.f.d.ts +0 -9
- package/fjs/sul/proof.f.js +0 -47
- package/fjs/text/ascii/module.f.d.ts +0 -136
- package/fjs/text/ascii/module.f.js +0 -154
- package/fjs/text/ascii/proof.f.d.ts +0 -6
- package/fjs/text/ascii/proof.f.js +0 -14
- package/fjs/text/code_point/module.f.d.ts +0 -65
- package/fjs/text/code_point/module.f.js +0 -103
- package/fjs/text/code_point/proof.f.d.ts +0 -8
- package/fjs/text/code_point/proof.f.js +0 -72
- package/fjs/text/module.f.d.ts +0 -40
- package/fjs/text/module.f.js +0 -43
- package/fjs/text/proof.f.d.ts +0 -10
- package/fjs/text/proof.f.js +0 -44
- package/fjs/text/sgr/module.f.d.ts +0 -53
- package/fjs/text/sgr/module.f.js +0 -63
- package/fjs/text/sgr/proof.f.js +0 -33
- package/fjs/text/utf16/module.f.d.ts +0 -161
- package/fjs/text/utf16/module.f.js +0 -311
- package/fjs/text/utf16/proof.f.d.ts +0 -10
- package/fjs/text/utf16/proof.f.js +0 -144
- package/fjs/text/utf8/module.f.d.ts +0 -83
- package/fjs/text/utf8/module.f.js +0 -247
- package/fjs/text/utf8/proof.f.js +0 -217
- package/fjs/types/array/module.f.d.ts +0 -49
- package/fjs/types/array/module.f.js +0 -42
- package/fjs/types/array/proof.f.js +0 -92
- package/fjs/types/bigfloat/module.f.d.ts +0 -6
- package/fjs/types/bigfloat/module.f.js +0 -69
- package/fjs/types/bigfloat/proof.f.d.ts +0 -5
- package/fjs/types/bigfloat/proof.f.js +0 -217
- package/fjs/types/bigint/module.f.d.ts +0 -172
- package/fjs/types/bigint/module.f.js +0 -251
- package/fjs/types/bigint/proof.f.d.ts +0 -37
- package/fjs/types/bigint/proof.f.js +0 -400
- package/fjs/types/bit_vec/module.f.d.ts +0 -302
- package/fjs/types/bit_vec/module.f.js +0 -375
- package/fjs/types/bit_vec/proof.f.d.ts +0 -65
- package/fjs/types/bit_vec/proof.f.js +0 -465
- package/fjs/types/btree/find/module.f.d.ts +0 -25
- package/fjs/types/btree/find/module.f.js +0 -80
- package/fjs/types/btree/find/proof.f.d.ts +0 -3
- package/fjs/types/btree/find/proof.f.js +0 -108
- package/fjs/types/btree/module.f.d.ts +0 -9
- package/fjs/types/btree/module.f.js +0 -33
- package/fjs/types/btree/proof.f.d.ts +0 -13
- package/fjs/types/btree/proof.f.js +0 -64
- package/fjs/types/btree/remove/module.f.d.ts +0 -14
- package/fjs/types/btree/remove/module.f.js +0 -186
- package/fjs/types/btree/remove/proof.f.d.ts +0 -9
- package/fjs/types/btree/remove/proof.f.js +0 -484
- package/fjs/types/btree/set/module.f.d.ts +0 -8
- package/fjs/types/btree/set/module.f.js +0 -128
- package/fjs/types/btree/set/proof.f.d.ts +0 -1
- package/fjs/types/btree/set/proof.f.js +0 -368
- package/fjs/types/btree/types/module.f.d.ts +0 -23
- package/fjs/types/btree/types/module.f.js +0 -9
- package/fjs/types/byte_set/module.f.d.ts +0 -16
- package/fjs/types/byte_set/module.f.js +0 -30
- package/fjs/types/byte_set/proof.f.d.ts +0 -11
- package/fjs/types/byte_set/proof.f.js +0 -79
- package/fjs/types/function/compare/module.f.d.ts +0 -49
- package/fjs/types/function/compare/module.f.js +0 -51
- package/fjs/types/function/compare/proof.f.js +0 -47
- package/fjs/types/function/module.f.d.ts +0 -28
- package/fjs/types/function/module.f.js +0 -19
- package/fjs/types/function/operator/module.f.d.ts +0 -48
- package/fjs/types/function/operator/module.f.js +0 -16
- package/fjs/types/function/operator/proof.f.js +0 -53
- package/fjs/types/function/proof.f.js +0 -10
- package/fjs/types/list/module.f.d.ts +0 -75
- package/fjs/types/list/module.f.js +0 -190
- package/fjs/types/list/proof.f.d.ts +0 -31
- package/fjs/types/list/proof.f.js +0 -330
- package/fjs/types/map/module.f.d.ts +0 -2
- package/fjs/types/map/module.f.js +0 -22
- package/fjs/types/map/proof.f.js +0 -22
- package/fjs/types/nibble_set/module.f.d.ts +0 -27
- package/fjs/types/nibble_set/module.f.js +0 -25
- package/fjs/types/nibble_set/proof.f.js +0 -60
- package/fjs/types/nominal/module.f.d.ts +0 -22
- package/fjs/types/nominal/module.f.js +0 -13
- package/fjs/types/nominal/proof.f.d.ts +0 -4
- package/fjs/types/nominal/proof.f.js +0 -48
- package/fjs/types/nullable/module.f.d.ts +0 -21
- package/fjs/types/nullable/module.f.js +0 -29
- package/fjs/types/nullable/proof.f.d.ts +0 -1
- package/fjs/types/nullable/proof.f.js +0 -29
- package/fjs/types/number/module.f.d.ts +0 -16
- package/fjs/types/number/module.f.js +0 -30
- package/fjs/types/number/proof.f.js +0 -124
- package/fjs/types/object/module.f.d.ts +0 -54
- package/fjs/types/object/module.f.js +0 -25
- package/fjs/types/object/proof.f.d.ts +0 -4
- package/fjs/types/object/proof.f.js +0 -14
- package/fjs/types/option/module.f.js +0 -6
- package/fjs/types/ordered_map/module.f.d.ts +0 -17
- package/fjs/types/ordered_map/module.f.js +0 -22
- package/fjs/types/ordered_map/proof.f.d.ts +0 -5
- package/fjs/types/ordered_map/proof.f.js +0 -73
- package/fjs/types/patricia_trie/module.f.d.ts +0 -25
- package/fjs/types/patricia_trie/module.f.js +0 -35
- package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
- package/fjs/types/patricia_trie/proof.f.js +0 -121
- package/fjs/types/phantom/module.f.js +0 -11
- package/fjs/types/prime_field/module.f.d.ts +0 -62
- package/fjs/types/prime_field/module.f.js +0 -112
- package/fjs/types/prime_field/proof.f.js +0 -128
- package/fjs/types/range/module.f.d.ts +0 -8
- package/fjs/types/range/module.f.js +0 -2
- package/fjs/types/range/proof.f.d.ts +0 -1
- package/fjs/types/range/proof.f.js +0 -9
- package/fjs/types/range_map/module.f.d.ts +0 -92
- package/fjs/types/range_map/module.f.js +0 -82
- package/fjs/types/range_map/proof.f.d.ts +0 -6
- package/fjs/types/range_map/proof.f.js +0 -151
- package/fjs/types/range_set/module.f.d.ts +0 -5
- package/fjs/types/range_set/module.f.js +0 -16
- package/fjs/types/range_set/proof.f.d.ts +0 -1
- package/fjs/types/range_set/proof.f.js +0 -19
- package/fjs/types/result/module.d.ts +0 -3
- package/fjs/types/result/module.f.d.ts +0 -61
- package/fjs/types/result/module.f.js +0 -54
- package/fjs/types/result/module.js +0 -19
- package/fjs/types/result/proof.f.d.ts +0 -12
- package/fjs/types/result/proof.f.js +0 -31
- package/fjs/types/rtti/common/module.f.d.ts +0 -121
- package/fjs/types/rtti/common/module.f.js +0 -94
- package/fjs/types/rtti/common/proof.f.d.ts +0 -8
- package/fjs/types/rtti/common/proof.f.js +0 -51
- package/fjs/types/rtti/module.f.d.ts +0 -75
- package/fjs/types/rtti/module.f.js +0 -34
- package/fjs/types/rtti/parse/module.f.d.ts +0 -36
- package/fjs/types/rtti/parse/module.f.js +0 -114
- package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
- package/fjs/types/rtti/parse/proof.f.js +0 -334
- package/fjs/types/rtti/proof.f.d.ts +0 -5
- package/fjs/types/rtti/proof.f.js +0 -16
- package/fjs/types/rtti/ts/module.f.d.ts +0 -118
- package/fjs/types/rtti/ts/module.f.js +0 -59
- package/fjs/types/rtti/ts/proof.f.d.ts +0 -59
- package/fjs/types/rtti/ts/proof.f.js +0 -75
- package/fjs/types/rtti/validate/module.f.d.ts +0 -4
- package/fjs/types/rtti/validate/module.f.js +0 -74
- package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
- package/fjs/types/rtti/validate/proof.f.js +0 -349
- package/fjs/types/sorted_list/module.f.d.ts +0 -26
- package/fjs/types/sorted_list/module.f.js +0 -51
- package/fjs/types/sorted_list/proof.f.d.ts +0 -4
- package/fjs/types/sorted_list/proof.f.js +0 -46
- package/fjs/types/sorted_set/module.f.d.ts +0 -33
- package/fjs/types/sorted_set/module.f.js +0 -5
- package/fjs/types/sorted_set/proof.f.d.ts +0 -6
- package/fjs/types/sorted_set/proof.f.js +0 -67
- package/fjs/types/string/module.f.d.ts +0 -24
- package/fjs/types/string/module.f.js +0 -35
- package/fjs/types/string/proof.f.js +0 -77
- package/fjs/types/string_set/module.f.d.ts +0 -30
- package/fjs/types/string_set/module.f.js +0 -37
- package/fjs/types/string_set/proof.f.js +0 -43
- package/fjs/types/ts/module.f.d.ts +0 -23
- package/fjs/types/ts/module.f.js +0 -27
- package/fjs/types/ts/proof.f.d.ts +0 -38
- package/fjs/types/ts/proof.f.js +0 -86
- package/fjs/types/uint8array/module.f.d.ts +0 -13
- package/fjs/types/uint8array/module.f.js +0 -34
- package/fjs/types/uint8array/proof.f.d.ts +0 -17
- package/fjs/types/uint8array/proof.f.js +0 -64
- package/fjs/website/module.f.d.ts +0 -3
- package/fjs/website/module.f.js +0 -14
- package/fjs/website/proof.f.js +0 -13
- package/nanvm-lib/tests/proof.f.d.ts +0 -122
- package/nanvm-lib/tests/proof.f.js +0 -330
- package/todo/031-json.f.d.ts +0 -1
- package/todo/031-json.f.js +0 -241
- package/todo/proof.f.d.ts +0 -20
- package/todo/proof.f.js +0 -62
- /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
- /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
- /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
- /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{emergent_testing/all.test.d.ts → types/bigint/benchmark.d.mts} +0 -0
- /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
- /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{text/sgr/proof.f.d.ts → types/nullable/proof.f.d.mts} +0 -0
- /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
- /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool definitions for the Evo API (`fjs/cas/evo/module.f.mjs`): subjects,
|
|
3
|
+
* revision heads, and the typed read of a single revision over the
|
|
4
|
+
* content-addressable store, backed by the in-memory cache the core module
|
|
5
|
+
* maintains.
|
|
6
|
+
*
|
|
7
|
+
* ## Tools
|
|
8
|
+
*
|
|
9
|
+
* | Tool | args | action | result |
|
|
10
|
+
* |----------------|-----------------------------------------------|-------------------|--------------------------------------|
|
|
11
|
+
* | `evo_list` | `{ archived? }` | `e.list(...)` | subjects, as a JSON array of strings |
|
|
12
|
+
* | `evo_head` | `{ subject }` | `e.head(...)` | head hashes, one per line |
|
|
13
|
+
* | `evo_revision` | `{ hash }` | `e.revision(...)` | the revision, as JSON `RevisionData` |
|
|
14
|
+
* | `evo_add` | `{ parents, snapshot?, subject?, archived? }` | `e.add(...)` | hash (cBase32) |
|
|
15
|
+
*
|
|
16
|
+
* `evo_add` and `evo_revision` speak the same structure — `fjs/cas/evo`'s
|
|
17
|
+
* `RevisionData` — in opposite directions, so a revision read back can be
|
|
18
|
+
* added again as-is. `evo_add`'s advertised arguments stay as they are: the
|
|
19
|
+
* one field `evo_revision` returns that `evo_add` does not accept is
|
|
20
|
+
* `generation`, which the server computes, and rtti's struct validation
|
|
21
|
+
* ignores properties the schema does not name, so a whole `evo_revision`
|
|
22
|
+
* result can be passed straight back to `evo_add`.
|
|
23
|
+
*
|
|
24
|
+
* ## Result size
|
|
25
|
+
*
|
|
26
|
+
* `evo_list` and `evo_revision` answer with JSON carried as MCP *text*
|
|
27
|
+
* content, so the JSON-RPC serializer escapes it a second time on the way
|
|
28
|
+
* out and a modest result can encode to a much longer line (a subject of
|
|
29
|
+
* quote characters is the worst case). A response whose encoded line exceeds
|
|
30
|
+
* the transport cap is not lost: `fjs/protocol/mcp/stdio` retries with a small
|
|
31
|
+
* `-32603` body carrying the request's `id`, so every request still gets a
|
|
32
|
+
* response and the process never crashes. That is the transport's contract
|
|
33
|
+
* for every tool — `cas_get` has proofs for the same double-escaping path —
|
|
34
|
+
* and no tool here can pre-empt it: whether the encoded response fits is
|
|
35
|
+
* known only by encoding it, which is the transport's job, and guessing from
|
|
36
|
+
* an unencoded size is exactly the size estimate that must never be made.
|
|
37
|
+
*
|
|
38
|
+
* These tools are not served by their own process: `fjs/mcp` (the same
|
|
39
|
+
* server as `cas_add`/`cas_get`/`cas_list`) builds one `Evo<O>` from its own
|
|
40
|
+
* `Cas<O>` and cache slot, concatenates `evoToolRegistry` onto its own
|
|
41
|
+
* registry, and serves everything from that single process — one `~/.cas/`
|
|
42
|
+
* store, one Evo cache, one server.
|
|
43
|
+
*
|
|
44
|
+
* @module
|
|
45
|
+
*
|
|
46
|
+
* @import { Effect, Operation } from '../../effects/types.ts'
|
|
47
|
+
* @import { MemOp } from '../../effects/memory/types.ts'
|
|
48
|
+
* @import { ToolEntry, ToolsCallResult } from '../../protocol/mcp/types.ts'
|
|
49
|
+
* @import { Evo } from '../../cas/evo/types.ts'
|
|
50
|
+
* @import { Ts } from '../../types/rtti/ts/types.ts'
|
|
51
|
+
*/
|
|
52
|
+
import type { Operation } from '../../effects/types.ts';
|
|
53
|
+
import type { MemOp } from '../../effects/memory/types.ts';
|
|
54
|
+
import type { ToolEntry } from '../../protocol/mcp/types.ts';
|
|
55
|
+
import type { Evo } from '../../cas/evo/types.ts';
|
|
56
|
+
/**
|
|
57
|
+
* Arguments for `evo_list`: an optional status filter, forwarded unchanged to
|
|
58
|
+
* `Evo.list` — omitted lists the active subjects, `true` the archived ones.
|
|
59
|
+
*/
|
|
60
|
+
export declare const evoListArgs: {
|
|
61
|
+
readonly archived: import("../../types/rtti/types.ts").Or<readonly [true, undefined]>;
|
|
62
|
+
};
|
|
63
|
+
/** Arguments for `evo_head`: the subject whose current heads are requested. */
|
|
64
|
+
export declare const evoHeadArgs: {
|
|
65
|
+
readonly subject: import("../../types/rtti/types.ts")._Type0<"string">;
|
|
66
|
+
};
|
|
67
|
+
/** Arguments for `evo_revision`: the hash of the revision to read. */
|
|
68
|
+
export declare const evoRevisionArgs: {
|
|
69
|
+
readonly hash: import("../../types/rtti/types.ts")._Type0<"string">;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Arguments for `evo_add`: a new revision, per `fjs/cas/evo`'s
|
|
73
|
+
* `RevisionData` — every field of it the caller supplies, i.e. all but
|
|
74
|
+
* `generation`, which the server computes.
|
|
75
|
+
*/
|
|
76
|
+
export declare const evoAddArgs: {
|
|
77
|
+
readonly parents: import("../../types/rtti/types.ts").Type1<"array", import("../../types/rtti/types.ts")._Type0<"string">>;
|
|
78
|
+
readonly snapshot: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts")._Type0<"string">, undefined]>;
|
|
79
|
+
readonly subject: import("../../types/rtti/types.ts").Or<readonly [import("../../types/rtti/types.ts")._Type0<"string">, undefined]>;
|
|
80
|
+
readonly archived: import("../../types/rtti/types.ts").Or<readonly [true, undefined]>;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Registry of all Evo tools, bound to an `Evo<O>`.
|
|
84
|
+
* @template {Operation} O
|
|
85
|
+
* @param {Evo<O>} e
|
|
86
|
+
* @returns {readonly ToolEntry<O | MemOp>[]}
|
|
87
|
+
*/
|
|
88
|
+
export declare const evoToolRegistry: <O extends Operation>(e: Evo<O>) => readonly ToolEntry<O | MemOp>[];
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool definitions for the Evo API (`fjs/cas/evo/module.f.mjs`): subjects,
|
|
3
|
+
* revision heads, and the typed read of a single revision over the
|
|
4
|
+
* content-addressable store, backed by the in-memory cache the core module
|
|
5
|
+
* maintains.
|
|
6
|
+
*
|
|
7
|
+
* ## Tools
|
|
8
|
+
*
|
|
9
|
+
* | Tool | args | action | result |
|
|
10
|
+
* |----------------|-----------------------------------------------|-------------------|--------------------------------------|
|
|
11
|
+
* | `evo_list` | `{ archived? }` | `e.list(...)` | subjects, as a JSON array of strings |
|
|
12
|
+
* | `evo_head` | `{ subject }` | `e.head(...)` | head hashes, one per line |
|
|
13
|
+
* | `evo_revision` | `{ hash }` | `e.revision(...)` | the revision, as JSON `RevisionData` |
|
|
14
|
+
* | `evo_add` | `{ parents, snapshot?, subject?, archived? }` | `e.add(...)` | hash (cBase32) |
|
|
15
|
+
*
|
|
16
|
+
* `evo_add` and `evo_revision` speak the same structure — `fjs/cas/evo`'s
|
|
17
|
+
* `RevisionData` — in opposite directions, so a revision read back can be
|
|
18
|
+
* added again as-is. `evo_add`'s advertised arguments stay as they are: the
|
|
19
|
+
* one field `evo_revision` returns that `evo_add` does not accept is
|
|
20
|
+
* `generation`, which the server computes, and rtti's struct validation
|
|
21
|
+
* ignores properties the schema does not name, so a whole `evo_revision`
|
|
22
|
+
* result can be passed straight back to `evo_add`.
|
|
23
|
+
*
|
|
24
|
+
* ## Result size
|
|
25
|
+
*
|
|
26
|
+
* `evo_list` and `evo_revision` answer with JSON carried as MCP *text*
|
|
27
|
+
* content, so the JSON-RPC serializer escapes it a second time on the way
|
|
28
|
+
* out and a modest result can encode to a much longer line (a subject of
|
|
29
|
+
* quote characters is the worst case). A response whose encoded line exceeds
|
|
30
|
+
* the transport cap is not lost: `fjs/protocol/mcp/stdio` retries with a small
|
|
31
|
+
* `-32603` body carrying the request's `id`, so every request still gets a
|
|
32
|
+
* response and the process never crashes. That is the transport's contract
|
|
33
|
+
* for every tool — `cas_get` has proofs for the same double-escaping path —
|
|
34
|
+
* and no tool here can pre-empt it: whether the encoded response fits is
|
|
35
|
+
* known only by encoding it, which is the transport's job, and guessing from
|
|
36
|
+
* an unencoded size is exactly the size estimate that must never be made.
|
|
37
|
+
*
|
|
38
|
+
* These tools are not served by their own process: `fjs/mcp` (the same
|
|
39
|
+
* server as `cas_add`/`cas_get`/`cas_list`) builds one `Evo<O>` from its own
|
|
40
|
+
* `Cas<O>` and cache slot, concatenates `evoToolRegistry` onto its own
|
|
41
|
+
* registry, and serves everything from that single process — one `~/.cas/`
|
|
42
|
+
* store, one Evo cache, one server.
|
|
43
|
+
*
|
|
44
|
+
* @module
|
|
45
|
+
*
|
|
46
|
+
* @import { Effect, Operation } from '../../effects/types.ts'
|
|
47
|
+
* @import { MemOp } from '../../effects/memory/types.ts'
|
|
48
|
+
* @import { ToolEntry, ToolsCallResult } from '../../protocol/mcp/types.ts'
|
|
49
|
+
* @import { Evo } from '../../cas/evo/types.ts'
|
|
50
|
+
* @import { Ts } from '../../types/rtti/ts/types.ts'
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
import { string, option, array } from '../../types/rtti/module.f.mjs'
|
|
54
|
+
import { pure, step } from '../../effects/module.f.mjs'
|
|
55
|
+
import {
|
|
56
|
+
toolEntry, errorResult, okResult,
|
|
57
|
+
} from '../../protocol/mcp/module.f.mjs'
|
|
58
|
+
import { stringify } from '../../media/json/module.f.mjs'
|
|
59
|
+
import { identity } from '../../types/function/module.f.mjs'
|
|
60
|
+
|
|
61
|
+
// ── Argument schemas (declared once, used for both inputSchema and validate) ─────
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Arguments for `evo_list`: an optional status filter, forwarded unchanged to
|
|
65
|
+
* `Evo.list` — omitted lists the active subjects, `true` the archived ones.
|
|
66
|
+
*/
|
|
67
|
+
export const evoListArgs = /** @type {const} */ ({
|
|
68
|
+
archived: option(true),
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
/** Arguments for `evo_head`: the subject whose current heads are requested. */
|
|
72
|
+
export const evoHeadArgs = /** @type {const} */ ({
|
|
73
|
+
subject: string,
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
/** Arguments for `evo_revision`: the hash of the revision to read. */
|
|
77
|
+
export const evoRevisionArgs = /** @type {const} */ ({
|
|
78
|
+
hash: string,
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Arguments for `evo_add`: a new revision, per `fjs/cas/evo`'s
|
|
83
|
+
* `RevisionData` — every field of it the caller supplies, i.e. all but
|
|
84
|
+
* `generation`, which the server computes.
|
|
85
|
+
*/
|
|
86
|
+
export const evoAddArgs = /** @type {const} */ ({
|
|
87
|
+
parents: array(string),
|
|
88
|
+
snapshot: option(string),
|
|
89
|
+
subject: option(string),
|
|
90
|
+
archived: option(true),
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
// ── Tool registry ────────────────────────────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
/** Canonical JSON encoder for the `evo_list` and `evo_revision` results. */
|
|
96
|
+
const toJson = stringify(identity)
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Registry of all Evo tools, bound to an `Evo<O>`.
|
|
100
|
+
* @template {Operation} O
|
|
101
|
+
* @param {Evo<O>} e
|
|
102
|
+
* @returns {readonly ToolEntry<O | MemOp>[]}
|
|
103
|
+
*/
|
|
104
|
+
export const evoToolRegistry = e => [
|
|
105
|
+
toolEntry(
|
|
106
|
+
'evo_list',
|
|
107
|
+
'List subjects, as a JSON array of strings. By default only the active ones: a subject is active while at least one of its current heads is not archived. Pass `archived: true` to list the archived subjects instead — those with at least one current head, all of them archived. A subject with no current heads is in neither list.',
|
|
108
|
+
evoListArgs,
|
|
109
|
+
// Subjects are arbitrary caller-supplied strings (unlike hashes, not
|
|
110
|
+
// constrained to a newline-free alphabet), so a `join('\n')` line
|
|
111
|
+
// format could not represent an empty subject or one containing a
|
|
112
|
+
// newline without ambiguity — JSON encoding can.
|
|
113
|
+
/** @type {(args: Ts<typeof evoListArgs>) => Effect<MemOp, ToolsCallResult>} */
|
|
114
|
+
(({ archived }) => step(
|
|
115
|
+
e.list(archived),
|
|
116
|
+
subjects => pure(okResult(toJson(subjects)))
|
|
117
|
+
)),
|
|
118
|
+
),
|
|
119
|
+
toolEntry(
|
|
120
|
+
'evo_head',
|
|
121
|
+
'List the current head hashes (cBase32) of a subject, one per line. Empty when the subject is unknown.',
|
|
122
|
+
evoHeadArgs,
|
|
123
|
+
/** @type {(args: Ts<typeof evoHeadArgs>) => Effect<MemOp, ToolsCallResult>} */
|
|
124
|
+
(({ subject }) => step(
|
|
125
|
+
e.head(subject),
|
|
126
|
+
heads => pure(okResult(heads.join('\n'))),
|
|
127
|
+
)),
|
|
128
|
+
),
|
|
129
|
+
toolEntry(
|
|
130
|
+
'evo_revision',
|
|
131
|
+
'Read one revision by hash, as JSON: `{ subject, parents, snapshot, generation, archived? }`. `parents[0]` is the mainline parent and every further entry is a merged-in branch; `parents` and `snapshot` come back in their canonical cBase32 spelling, so they compare directly against `evo_head` output. Errors when the hash is not cBase32, is not present in the store, could not be read, or does not hold a `vnd.fjs.revision` blob — use `cas_get` for raw bytes of non-revision content.',
|
|
132
|
+
evoRevisionArgs,
|
|
133
|
+
// The revision goes out as JSON in a text content item, like
|
|
134
|
+
// `evo_list`'s. An encoded response that outgrows the transport cap is
|
|
135
|
+
// the transport's `-32603`, not a tool-level error — see "Result size"
|
|
136
|
+
// in the module doc.
|
|
137
|
+
/** @type {(args: Ts<typeof evoRevisionArgs>) => Effect<O | MemOp, ToolsCallResult>} */
|
|
138
|
+
(({ hash }) => step(
|
|
139
|
+
e.revision(hash),
|
|
140
|
+
result => pure(result[0] === 'error' ? errorResult(result[1]) : okResult(toJson(result[1])))
|
|
141
|
+
)),
|
|
142
|
+
),
|
|
143
|
+
toolEntry(
|
|
144
|
+
'evo_add',
|
|
145
|
+
'Add a new revision (a `vnd.fjs.revision` blob) and return its hash (cBase32). `subject` is required unless there is exactly one parent, from which it is inherited. `snapshot`, when omitted, is resolved from the parents (zero parents → `subject`, one parent → the parent\'s snapshot; a merge requires an explicit `snapshot`) and written explicitly. `generation` is computed by the server.',
|
|
146
|
+
evoAddArgs,
|
|
147
|
+
/** @type {(input: Ts<typeof evoAddArgs>) => Effect<O | MemOp, ToolsCallResult>} */
|
|
148
|
+
(input => step(
|
|
149
|
+
e.add(input),
|
|
150
|
+
result => pure(result[0] === 'error' ? errorResult(result[1]) : okResult(result[1]))
|
|
151
|
+
)),
|
|
152
|
+
),
|
|
153
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Evo } from '../../cas/evo/types.ts'
|
|
3
|
+
* @import { ToolEntry, ToolsCallResult } from '../../protocol/mcp/types.ts'
|
|
4
|
+
* @import { Operation } from '../../effects/types.ts'
|
|
5
|
+
*/
|
|
6
|
+
export declare const proof: {
|
|
7
|
+
toolNamesMatchTheDesign: () => void;
|
|
8
|
+
evoListReflectsTheCache: () => void;
|
|
9
|
+
evoListEncodesArbitrarySubjectsAsJson: () => void;
|
|
10
|
+
evoListForwardsTheArchivedFilter: () => void;
|
|
11
|
+
evoHeadReflectsTheCache: () => void;
|
|
12
|
+
evoHeadMissingSubjectIsInvalidArguments: () => void;
|
|
13
|
+
evoRevisionReturnsRevisionJson: () => void;
|
|
14
|
+
evoRevisionDomainErrorIsError: () => void;
|
|
15
|
+
evoAddSuccessReturnsHash: () => void;
|
|
16
|
+
evoAddDomainErrorIsError: () => void;
|
|
17
|
+
};
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Evo } from '../../cas/evo/types.ts'
|
|
3
|
+
* @import { ToolEntry, ToolsCallResult } from '../../protocol/mcp/types.ts'
|
|
4
|
+
* @import { Operation } from '../../effects/types.ts'
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
8
|
+
import { fileCas } from '../../cas/module.f.mjs'
|
|
9
|
+
import { sha256 } from '../../crypto/sha2/module.f.mjs'
|
|
10
|
+
import { emptyState, virtual } from '../../effects/node/virtual/module.f.mjs'
|
|
11
|
+
import { vec8 } from '../../types/bit_vec/module.f.mjs'
|
|
12
|
+
import { vecToCBase32 } from '../../basen/cbase32/module.f.mjs'
|
|
13
|
+
import { initEvo, evo } from '../../cas/evo/module.f.mjs'
|
|
14
|
+
import { evoToolRegistry } from './module.f.mjs'
|
|
15
|
+
import { parse as parseJson } from '../../media/json/module.f.mjs'
|
|
16
|
+
import { array, string as rttiString } from '../../types/rtti/module.f.mjs'
|
|
17
|
+
import { parse as rttiParse } from '../../types/rtti/parse/module.f.mjs'
|
|
18
|
+
import { unwrap } from '../../types/result/module.f.mjs'
|
|
19
|
+
|
|
20
|
+
const home = '/home/user'
|
|
21
|
+
|
|
22
|
+
const parseSubjects = rttiParse(array(rttiString))
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @template {Operation} O
|
|
26
|
+
* @param {readonly ToolEntry<O>[]} registry
|
|
27
|
+
* @param {string} name
|
|
28
|
+
* @returns {ToolEntry<O>}
|
|
29
|
+
*/
|
|
30
|
+
const findEntry = (registry, name) => {
|
|
31
|
+
const entry = registry.find(e => e.name === name)
|
|
32
|
+
assert(entry !== undefined, ['missing tool entry', name])
|
|
33
|
+
return /** @type {ToolEntry<O>} */ (entry)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** @type {(result: ToolsCallResult) => string} */
|
|
37
|
+
const textOf = result => {
|
|
38
|
+
const [item] = result.content
|
|
39
|
+
assert(item.type === 'text', ['expected a text content item', item])
|
|
40
|
+
return /** @type {{ text: string }} */ (item).text
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const proof = {
|
|
44
|
+
toolNamesMatchTheDesign: () => {
|
|
45
|
+
/** @type {Evo<never>} */
|
|
46
|
+
const e = {
|
|
47
|
+
list: () => { throw 'unused' },
|
|
48
|
+
head: () => { throw 'unused' },
|
|
49
|
+
add: () => { throw 'unused' },
|
|
50
|
+
revision: () => { throw 'unused' },
|
|
51
|
+
}
|
|
52
|
+
assertEq(evoToolRegistry(e).map(entry => entry.name).join(','), 'evo_list,evo_head,evo_revision,evo_add')
|
|
53
|
+
},
|
|
54
|
+
evoListReflectsTheCache: () => {
|
|
55
|
+
const c = fileCas(sha256)(home)
|
|
56
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
57
|
+
const e = evo(c)(cacheKey)
|
|
58
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_list')
|
|
59
|
+
const [, result] = virtual(state0)(entry.handle({}))
|
|
60
|
+
assert(!result.isError)
|
|
61
|
+
assertEq(textOf(result), '[]')
|
|
62
|
+
},
|
|
63
|
+
// Regression: subjects are arbitrary strings, not constrained to a
|
|
64
|
+
// newline-free alphabet like hashes, so evo_list must not join them with
|
|
65
|
+
// '\n' — a subject containing a newline, or an empty subject, would be
|
|
66
|
+
// indistinguishable from multiple/no subjects in that format. JSON
|
|
67
|
+
// encoding preserves both exactly.
|
|
68
|
+
evoListEncodesArbitrarySubjectsAsJson: () => {
|
|
69
|
+
const c = fileCas(sha256)(home)
|
|
70
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
71
|
+
const e = evo(c)(cacheKey)
|
|
72
|
+
const [state1, addA] = virtual(state0)(e.add({ parents: [], subject: 'line one\nline two', snapshot: vecToCBase32(vec8(0x2an)) }))
|
|
73
|
+
assert(addA[0] === 'ok', ['expected add ok', addA])
|
|
74
|
+
const [state2, addB] = virtual(state1)(e.add({ parents: [], subject: '', snapshot: vecToCBase32(vec8(0x2bn)) }))
|
|
75
|
+
assert(addB[0] === 'ok', ['expected add ok', addB])
|
|
76
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_list')
|
|
77
|
+
const [, result] = virtual(state2)(entry.handle({}))
|
|
78
|
+
assert(!result.isError)
|
|
79
|
+
const subjects = unwrap(parseSubjects(unwrap(parseJson(textOf(result)))))
|
|
80
|
+
assertEq(subjects.length, 2)
|
|
81
|
+
assert(subjects.includes('line one\nline two'), ['unexpected subjects', subjects])
|
|
82
|
+
assert(subjects.includes(''), ['unexpected subjects', subjects])
|
|
83
|
+
},
|
|
84
|
+
// The `archived` argument is a pass-through to `Evo.list`'s status filter:
|
|
85
|
+
// omitted lists the active subjects, `true` the archived ones.
|
|
86
|
+
evoListForwardsTheArchivedFilter: () => {
|
|
87
|
+
const c = fileCas(sha256)(home)
|
|
88
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
89
|
+
const e = evo(c)(cacheKey)
|
|
90
|
+
const [state1, add] = virtual(state0)(e.add({ parents: [], subject: 'gone', snapshot: vecToCBase32(vec8(0x2cn)), archived: true }))
|
|
91
|
+
assert(add[0] === 'ok', ['expected add ok', add])
|
|
92
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_list')
|
|
93
|
+
const [state2, active] = virtual(state1)(entry.handle({}))
|
|
94
|
+
assert(!active.isError)
|
|
95
|
+
assertEq(textOf(active), '[]')
|
|
96
|
+
const [, archived] = virtual(state2)(entry.handle({ archived: true }))
|
|
97
|
+
assert(!archived.isError)
|
|
98
|
+
assertEq(textOf(archived), '["gone"]')
|
|
99
|
+
},
|
|
100
|
+
evoHeadReflectsTheCache: () => {
|
|
101
|
+
const c = fileCas(sha256)(home)
|
|
102
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
103
|
+
const e = evo(c)(cacheKey)
|
|
104
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_head')
|
|
105
|
+
const [, result] = virtual(state0)(entry.handle({ subject: 'nope' }))
|
|
106
|
+
assert(!result.isError)
|
|
107
|
+
assertEq(textOf(result), '')
|
|
108
|
+
},
|
|
109
|
+
evoHeadMissingSubjectIsInvalidArguments: () => {
|
|
110
|
+
const c = fileCas(sha256)(home)
|
|
111
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
112
|
+
const e = evo(c)(cacheKey)
|
|
113
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_head')
|
|
114
|
+
const [, result] = virtual(state0)(entry.handle({}))
|
|
115
|
+
assertEq(result.isError, true)
|
|
116
|
+
},
|
|
117
|
+
// Covers evo_revision's success branch: the stored revision comes back as
|
|
118
|
+
// the JSON of `RevisionData` — `dialect` dropped, `generation` and the
|
|
119
|
+
// resolved `snapshot` included.
|
|
120
|
+
evoRevisionReturnsRevisionJson: () => {
|
|
121
|
+
const c = fileCas(sha256)(home)
|
|
122
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
123
|
+
const e = evo(c)(cacheKey)
|
|
124
|
+
const subject = vecToCBase32(vec8(0x3n))
|
|
125
|
+
const [state1, added] = virtual(state0)(e.add({ parents: [], subject }))
|
|
126
|
+
assert(added[0] === 'ok', ['expected add ok', added])
|
|
127
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_revision')
|
|
128
|
+
const [, result] = virtual(state1)(entry.handle({ hash: added[1] }))
|
|
129
|
+
assert(!result.isError)
|
|
130
|
+
assertEq(textOf(result), `{"subject":"${subject}","parents":[],"snapshot":"${subject}","generation":0}`)
|
|
131
|
+
},
|
|
132
|
+
// Covers evo_revision's error branch: a domain-level failure (a hash the
|
|
133
|
+
// store has nothing under) is surfaced as isError with the message.
|
|
134
|
+
evoRevisionDomainErrorIsError: () => {
|
|
135
|
+
const c = fileCas(sha256)(home)
|
|
136
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
137
|
+
const e = evo(c)(cacheKey)
|
|
138
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_revision')
|
|
139
|
+
const [, result] = virtual(state0)(entry.handle({ hash: vecToCBase32(vec8(0x4n)) }))
|
|
140
|
+
assertEq(result.isError, true)
|
|
141
|
+
assert(textOf(result).includes('revision not found'))
|
|
142
|
+
},
|
|
143
|
+
// Covers evo_add's success branch: a valid revision is stored and its
|
|
144
|
+
// hash comes back as plain, non-error text.
|
|
145
|
+
evoAddSuccessReturnsHash: () => {
|
|
146
|
+
const c = fileCas(sha256)(home)
|
|
147
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
148
|
+
const e = evo(c)(cacheKey)
|
|
149
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_add')
|
|
150
|
+
const args = { parents: [], subject: 'doc', snapshot: vecToCBase32(vec8(0x1n)) }
|
|
151
|
+
const [, result] = virtual(state0)(entry.handle(args))
|
|
152
|
+
assert(!result.isError)
|
|
153
|
+
assert(textOf(result).length > 0)
|
|
154
|
+
},
|
|
155
|
+
// Covers evo_add's error branch: a domain-level failure (Evo.add's
|
|
156
|
+
// Result) is surfaced as isError with the failure message as text.
|
|
157
|
+
evoAddDomainErrorIsError: () => {
|
|
158
|
+
const c = fileCas(sha256)(home)
|
|
159
|
+
const [state0, cacheKey] = virtual(emptyState)(initEvo(c))
|
|
160
|
+
const e = evo(c)(cacheKey)
|
|
161
|
+
const entry = findEntry(evoToolRegistry(e), 'evo_add')
|
|
162
|
+
const [, result] = virtual(state0)(entry.handle({ parents: [] }))
|
|
163
|
+
assertEq(result.isError, true)
|
|
164
|
+
assert(textOf(result).includes('subject is required'))
|
|
165
|
+
},
|
|
166
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The FJS MCP server: the composition root the `fjs mcp` / `m` CLI command
|
|
3
|
+
* runs. Session configuration (`McpConfig`), the top-level entry point
|
|
4
|
+
* (`casMcpServer`, wiring `mcpStep` + `stdioTransport` from
|
|
5
|
+
* `fjs/protocol/mcp/`), and the composed tool registry — nothing CAS- or
|
|
6
|
+
* Evo-specific lives here, it only knows about tool *registries*, not what is
|
|
7
|
+
* in them, so a future non-CAS tool set can land as a new sibling of
|
|
8
|
+
* `fjs/mcp/cas/` and `fjs/mcp/evo/` without touching either of them.
|
|
9
|
+
*
|
|
10
|
+
* ## Tools
|
|
11
|
+
*
|
|
12
|
+
* | Tool | args | action | result |
|
|
13
|
+
* |----------------|------------------------------------------------|------------------|--------------------------------------|
|
|
14
|
+
* | `cas_add` | `{ content, type? }` | `c.write(...)` | hash (cBase32) |
|
|
15
|
+
* | `cas_get` | `{ hash, content?: boolean }` | `c.read(key)` | JSON `{length,mimeType,type[,uri][,text\|blob]}` |
|
|
16
|
+
* | `cas_list` | `{}` | `c.list()` | hashes, one per line |
|
|
17
|
+
* | `evo_list` | `{ archived? }` | `e.list(...)` | subjects, as a JSON array of strings |
|
|
18
|
+
* | `evo_head` | `{ subject }` | `e.head(...)` | head hashes, one per line |
|
|
19
|
+
* | `evo_revision` | `{ hash }` | `e.revision(...)`| the revision, as JSON |
|
|
20
|
+
* | `evo_add` | `{ parents, snapshot?, subject?, archived? }` | `e.add(...)` | hash (cBase32) |
|
|
21
|
+
*
|
|
22
|
+
* `cas_add`/`cas_get`/`cas_list` are `fjs/mcp/cas` — see that module for tool
|
|
23
|
+
* documentation (input encoding, output shape, error convention). `evo_*` is
|
|
24
|
+
* `fjs/mcp/evo`. Both tool sets run in one process, sharing one `~/.cas/`
|
|
25
|
+
* store and one in-memory Evo cache scanned once at startup (`initEvo`).
|
|
26
|
+
*
|
|
27
|
+
* @module
|
|
28
|
+
*
|
|
29
|
+
* @import { Effect } from '../effects/types.ts'
|
|
30
|
+
* @import { MemOp } from '../effects/memory/types.ts'
|
|
31
|
+
* @import { Read, Write } from '../effects/node/types.ts'
|
|
32
|
+
* @import { McpConfig, McpHandlers } from '../protocol/mcp/types.ts'
|
|
33
|
+
* @import { FileCasOperation } from '../cas/types.ts'
|
|
34
|
+
* @import { Cache } from '../cas/evo/types.ts'
|
|
35
|
+
* @import { Key } from '../effects/memory/types.ts'
|
|
36
|
+
*/
|
|
37
|
+
import type { Effect } from '../effects/types.ts';
|
|
38
|
+
import type { MemOp } from '../effects/memory/types.ts';
|
|
39
|
+
import type { Read, Write } from '../effects/node/types.ts';
|
|
40
|
+
import type { McpConfig, McpHandlers } from '../protocol/mcp/types.ts';
|
|
41
|
+
import type { FileCasOperation } from '../cas/types.ts';
|
|
42
|
+
import type { Cache } from '../cas/evo/types.ts';
|
|
43
|
+
import type { Key } from '../effects/memory/types.ts';
|
|
44
|
+
/**
|
|
45
|
+
* MCP handlers for `FileCas` (`fjs/mcp/cas`) plus the Evo API (`fjs/mcp/evo`)
|
|
46
|
+
* layered on it, bound to `home` and an already-built Evo cache slot (see
|
|
47
|
+
* `initEvo`).
|
|
48
|
+
* @type {(home: string) => (cacheKey: Key<Cache>) => McpHandlers<FileCasOperation | MemOp>}
|
|
49
|
+
*/
|
|
50
|
+
export declare const casMcpHandlers: (home: string) => (cacheKey: Key<Cache>) => McpHandlers<FileCasOperation | MemOp>;
|
|
51
|
+
/**
|
|
52
|
+
* Static MCP configuration for the CAS server: advertises the `tools`
|
|
53
|
+
* capability, identifies the server, and pins the protocol version.
|
|
54
|
+
* @type {McpConfig}
|
|
55
|
+
*/
|
|
56
|
+
export declare const casConfig: McpConfig;
|
|
57
|
+
/**
|
|
58
|
+
* Runs the combined CAS + Evo MCP server over stdio: scans `~/.cas/` once to
|
|
59
|
+
* build the Evo subject/head cache (`initEvo`), allocates the session-state
|
|
60
|
+
* slot, builds the `mcpStep` for the merged tool registry, and drives the
|
|
61
|
+
* read → parse → dispatch → write loop until stdin EOF.
|
|
62
|
+
* @type {(home: string) => Effect<Read | Write | MemOp | FileCasOperation, void>}
|
|
63
|
+
*/
|
|
64
|
+
export declare const casMcpServer: (home: string) => Effect<Read | Write | MemOp | FileCasOperation, void>;
|
|
65
|
+
export declare const proof: {
|
|
66
|
+
casMcpServer: () => void;
|
|
67
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The FJS MCP server: the composition root the `fjs mcp` / `m` CLI command
|
|
3
|
+
* runs. Session configuration (`McpConfig`), the top-level entry point
|
|
4
|
+
* (`casMcpServer`, wiring `mcpStep` + `stdioTransport` from
|
|
5
|
+
* `fjs/protocol/mcp/`), and the composed tool registry — nothing CAS- or
|
|
6
|
+
* Evo-specific lives here, it only knows about tool *registries*, not what is
|
|
7
|
+
* in them, so a future non-CAS tool set can land as a new sibling of
|
|
8
|
+
* `fjs/mcp/cas/` and `fjs/mcp/evo/` without touching either of them.
|
|
9
|
+
*
|
|
10
|
+
* ## Tools
|
|
11
|
+
*
|
|
12
|
+
* | Tool | args | action | result |
|
|
13
|
+
* |----------------|------------------------------------------------|------------------|--------------------------------------|
|
|
14
|
+
* | `cas_add` | `{ content, type? }` | `c.write(...)` | hash (cBase32) |
|
|
15
|
+
* | `cas_get` | `{ hash, content?: boolean }` | `c.read(key)` | JSON `{length,mimeType,type[,uri][,text\|blob]}` |
|
|
16
|
+
* | `cas_list` | `{}` | `c.list()` | hashes, one per line |
|
|
17
|
+
* | `evo_list` | `{ archived? }` | `e.list(...)` | subjects, as a JSON array of strings |
|
|
18
|
+
* | `evo_head` | `{ subject }` | `e.head(...)` | head hashes, one per line |
|
|
19
|
+
* | `evo_revision` | `{ hash }` | `e.revision(...)`| the revision, as JSON |
|
|
20
|
+
* | `evo_add` | `{ parents, snapshot?, subject?, archived? }` | `e.add(...)` | hash (cBase32) |
|
|
21
|
+
*
|
|
22
|
+
* `cas_add`/`cas_get`/`cas_list` are `fjs/mcp/cas` — see that module for tool
|
|
23
|
+
* documentation (input encoding, output shape, error convention). `evo_*` is
|
|
24
|
+
* `fjs/mcp/evo`. Both tool sets run in one process, sharing one `~/.cas/`
|
|
25
|
+
* store and one in-memory Evo cache scanned once at startup (`initEvo`).
|
|
26
|
+
*
|
|
27
|
+
* @module
|
|
28
|
+
*
|
|
29
|
+
* @import { Effect } from '../effects/types.ts'
|
|
30
|
+
* @import { MemOp } from '../effects/memory/types.ts'
|
|
31
|
+
* @import { Read, Write } from '../effects/node/types.ts'
|
|
32
|
+
* @import { McpConfig, McpHandlers } from '../protocol/mcp/types.ts'
|
|
33
|
+
* @import { FileCasOperation } from '../cas/types.ts'
|
|
34
|
+
* @import { Cache } from '../cas/evo/types.ts'
|
|
35
|
+
* @import { Key } from '../effects/memory/types.ts'
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
import { step } from '../effects/module.f.mjs'
|
|
39
|
+
import { create } from '../effects/memory/module.f.mjs'
|
|
40
|
+
import { stdioTransport } from '../protocol/mcp/stdio/module.f.mjs'
|
|
41
|
+
import {
|
|
42
|
+
mcpStep, uninitializedState, fromRegistry,
|
|
43
|
+
} from '../protocol/mcp/module.f.mjs'
|
|
44
|
+
import { fileCas } from '../cas/module.f.mjs'
|
|
45
|
+
import { initEvo, evo } from '../cas/evo/module.f.mjs'
|
|
46
|
+
import { sha256 } from '../crypto/sha2/module.f.mjs'
|
|
47
|
+
import { casToolRegistry } from './cas/module.f.mjs'
|
|
48
|
+
import { evoToolRegistry } from './evo/module.f.mjs'
|
|
49
|
+
|
|
50
|
+
// ── Handlers ────────────────────────────────────────────────────────────────────
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* MCP handlers for `FileCas` (`fjs/mcp/cas`) plus the Evo API (`fjs/mcp/evo`)
|
|
54
|
+
* layered on it, bound to `home` and an already-built Evo cache slot (see
|
|
55
|
+
* `initEvo`).
|
|
56
|
+
* @type {(home: string) => (cacheKey: Key<Cache>) => McpHandlers<FileCasOperation | MemOp>}
|
|
57
|
+
*/
|
|
58
|
+
export const casMcpHandlers = home => cacheKey =>
|
|
59
|
+
fromRegistry([...casToolRegistry(home)(cacheKey), ...evoToolRegistry(evo(fileCas(sha256)(home))(cacheKey))])
|
|
60
|
+
|
|
61
|
+
// ── Session configuration ───────────────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Static MCP configuration for the CAS server: advertises the `tools`
|
|
65
|
+
* capability, identifies the server, and pins the protocol version.
|
|
66
|
+
* @type {McpConfig}
|
|
67
|
+
*/
|
|
68
|
+
export const casConfig = {
|
|
69
|
+
serverInfo: { name: 'functionalscript-cas', version: '0.30.0' },
|
|
70
|
+
capabilities: { tools: {} },
|
|
71
|
+
protocolVersion: '2024-11-05',
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ── Server ──────────────────────────────────────────────────────────────────────
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Runs the combined CAS + Evo MCP server over stdio: scans `~/.cas/` once to
|
|
78
|
+
* build the Evo subject/head cache (`initEvo`), allocates the session-state
|
|
79
|
+
* slot, builds the `mcpStep` for the merged tool registry, and drives the
|
|
80
|
+
* read → parse → dispatch → write loop until stdin EOF.
|
|
81
|
+
* @type {(home: string) => Effect<Read | Write | MemOp | FileCasOperation, void>}
|
|
82
|
+
*/
|
|
83
|
+
export const casMcpServer = home => step(
|
|
84
|
+
initEvo(fileCas(sha256)(home)),
|
|
85
|
+
cacheKey => step(
|
|
86
|
+
create(uninitializedState),
|
|
87
|
+
sessionKey =>
|
|
88
|
+
stdioTransport(mcpStep(casConfig)(casMcpHandlers(home)(cacheKey))(sessionKey)),
|
|
89
|
+
),
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
// ── Tests ────────────────────────────────────────────────────────────────────
|
|
93
|
+
|
|
94
|
+
export const proof = {
|
|
95
|
+
// casMcpServer is never called in integration tests because it drives a
|
|
96
|
+
// real stdio server; call it here to cover its Effect-building body.
|
|
97
|
+
casMcpServer: () => { casMcpServer('/') },
|
|
98
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Unknown } from '../media/json/types.ts'
|
|
3
|
+
* @import { Effect, Operation } from '../effects/types.ts'
|
|
4
|
+
* @import { Response } from '../protocol/json_rpc/types.ts'
|
|
5
|
+
* @import { Vec } from '../types/bit_vec/types.ts'
|
|
6
|
+
* @import { FileCasOperation } from '../cas/types.ts'
|
|
7
|
+
* @import { List } from '../effects/list/types.ts'
|
|
8
|
+
* @import { McpSessionState, ToolsCallResult } from '../protocol/mcp/types.ts'
|
|
9
|
+
* @import { IoResult, Mkdir, Now, RandomInt, ReadBytes, Rename, } from '../effects/node/types.ts'
|
|
10
|
+
* @import { Dir } from '../effects/node/virtual/types.ts'
|
|
11
|
+
*/
|
|
12
|
+
export declare const proof: {
|
|
13
|
+
getMetaLargeMultiChunkBlobNoError: () => void;
|
|
14
|
+
getMetaLargeMultiChunkUtf8Symbols: () => void;
|
|
15
|
+
getMetaLargeMultiChunkTextThenBinary: () => void;
|
|
16
|
+
getContentLargeBlobTooLargeError: () => void;
|
|
17
|
+
getContentMissingHashIsError: () => void;
|
|
18
|
+
getContentBase64InflationOverflowWritesInternalError: () => void;
|
|
19
|
+
getContentBase64NearBoundarySucceeds: () => void;
|
|
20
|
+
getContentDoubleEscapedOverflowWritesInternalError: () => void;
|
|
21
|
+
toolsListAdvertisesSevenTools: () => void;
|
|
22
|
+
evoAddListHeadRoundTripsThroughCasServer: () => void;
|
|
23
|
+
evoAddDomainErrorIsErrorThroughCasServer: () => void;
|
|
24
|
+
casAddSyncsEvoCacheForRevisionContent: () => void;
|
|
25
|
+
addReturnsHash: () => void;
|
|
26
|
+
textAddGetMetaRoundTrips: () => void;
|
|
27
|
+
textAddGetContentRoundTrips: () => void;
|
|
28
|
+
binaryAddGetMetaRoundTrips: () => void;
|
|
29
|
+
binaryAddGetContentRoundTrips: () => void;
|
|
30
|
+
addGetRoundTrips: () => void;
|
|
31
|
+
getUntypedReturnsText: () => void;
|
|
32
|
+
getTypedReturnsBinaryJson: () => void;
|
|
33
|
+
getMetaRecognizesRevisionDialect: () => void;
|
|
34
|
+
getContentRecognizesRevisionDialect: () => void;
|
|
35
|
+
listEnumeratesStoredHashes: () => void;
|
|
36
|
+
addInvalidContentIsError: () => void;
|
|
37
|
+
addBadLengthContentIsError: () => void;
|
|
38
|
+
addBase64OverLimitIsError: () => void;
|
|
39
|
+
addTextOverLimitIsError: () => void;
|
|
40
|
+
addTextAtLimitSucceeds: () => void;
|
|
41
|
+
addBase64AtLimitSucceeds: () => void;
|
|
42
|
+
getUnterminatedHashIsError: () => void;
|
|
43
|
+
addMissingContentIsError: () => void;
|
|
44
|
+
getMissingHashArgumentIsError: () => void;
|
|
45
|
+
getInvalidHashIsError: () => void;
|
|
46
|
+
getMissingHashIsError: () => void;
|
|
47
|
+
unknownToolIsError: () => void;
|
|
48
|
+
toolErrorIsNotJsonRpcError: () => void;
|
|
49
|
+
getMetaReturnsLengthAndMimeType: () => void;
|
|
50
|
+
getMetaBinaryBlob: () => void;
|
|
51
|
+
getMetaOctetStreamForUnknownBinary: () => void;
|
|
52
|
+
getMetaOctetStreamForNulBlob: () => void;
|
|
53
|
+
getMetaMissingHashIsError: () => void;
|
|
54
|
+
getMetaInvalidHashIsError: () => void;
|
|
55
|
+
getOctetStreamWithContentIncludesBase64: () => void;
|
|
56
|
+
};
|