skill-universe 1.1.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 +24 -0
- package/bin/skillc.mjs +3 -0
- package/build/dev/javascript/argv/_gleam_artefacts/argv.cache +0 -0
- package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_inline +0 -0
- package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_meta +0 -0
- package/build/dev/javascript/argv/argv.erl +12 -0
- package/build/dev/javascript/argv/argv.mjs +31 -0
- package/build/dev/javascript/argv/argv_ffi.erl +27 -0
- package/build/dev/javascript/argv/argv_ffi.mjs +20 -0
- package/build/dev/javascript/argv/gleam.mjs +1 -0
- package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache +0 -0
- package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_inline +0 -0
- package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_meta +0 -0
- package/build/dev/javascript/filepath/filepath.erl +425 -0
- package/build/dev/javascript/filepath/filepath.mjs +529 -0
- package/build/dev/javascript/filepath/filepath_ffi.erl +9 -0
- package/build/dev/javascript/filepath/filepath_ffi.mjs +6 -0
- package/build/dev/javascript/filepath/gleam.mjs +1 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
- package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
- package/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
- package/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +285 -0
- package/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +313 -0
- package/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
- package/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +456 -0
- package/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +985 -0
- package/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
- package/build/dev/javascript/gleam_stdlib/gleam/float.mjs +572 -0
- package/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
- package/build/dev/javascript/gleam_stdlib/gleam/int.mjs +832 -0
- package/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
- package/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3160 -0
- package/build/dev/javascript/gleam_stdlib/gleam/option.mjs +418 -0
- package/build/dev/javascript/gleam_stdlib/gleam/order.mjs +178 -0
- package/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +102 -0
- package/build/dev/javascript/gleam_stdlib/gleam/result.mjs +480 -0
- package/build/dev/javascript/gleam_stdlib/gleam/set.mjs +416 -0
- package/build/dev/javascript/gleam_stdlib/gleam/string.mjs +723 -0
- package/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +133 -0
- package/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1155 -0
- package/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
- package/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
- package/build/dev/javascript/gleam_stdlib/gleam@bool.erl +352 -0
- package/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
- package/build/dev/javascript/gleam_stdlib/gleam@dict.erl +521 -0
- package/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +106 -0
- package/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1112 -0
- package/build/dev/javascript/gleam_stdlib/gleam@float.erl +764 -0
- package/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
- package/build/dev/javascript/gleam_stdlib/gleam@int.erl +1004 -0
- package/build/dev/javascript/gleam_stdlib/gleam@io.erl +80 -0
- package/build/dev/javascript/gleam_stdlib/gleam@list.erl +2832 -0
- package/build/dev/javascript/gleam_stdlib/gleam@option.erl +413 -0
- package/build/dev/javascript/gleam_stdlib/gleam@order.erl +200 -0
- package/build/dev/javascript/gleam_stdlib/gleam@pair.erl +110 -0
- package/build/dev/javascript/gleam_stdlib/gleam@result.erl +532 -0
- package/build/dev/javascript/gleam_stdlib/gleam@set.erl +433 -0
- package/build/dev/javascript/gleam_stdlib/gleam@string.erl +1012 -0
- package/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +207 -0
- package/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1049 -0
- package/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +529 -0
- package/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1050 -0
- package/build/dev/javascript/gleam_version +1 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_inline +0 -0
- package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_meta +0 -0
- package/build/dev/javascript/gleeunit/gleam.mjs +1 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/gleam_panic.mjs +180 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.erl +49 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.mjs +91 -0
- package/build/dev/javascript/gleeunit/gleeunit/internal/reporting.mjs +256 -0
- package/build/dev/javascript/gleeunit/gleeunit/should.mjs +135 -0
- package/build/dev/javascript/gleeunit/gleeunit.erl +89 -0
- package/build/dev/javascript/gleeunit/gleeunit.mjs +62 -0
- package/build/dev/javascript/gleeunit/gleeunit@internal@gleam_panic.erl +56 -0
- package/build/dev/javascript/gleeunit/gleeunit@internal@reporting.erl +343 -0
- package/build/dev/javascript/gleeunit/gleeunit@should.erl +153 -0
- package/build/dev/javascript/gleeunit/gleeunit_ffi.erl +21 -0
- package/build/dev/javascript/gleeunit/gleeunit_ffi.mjs +100 -0
- package/build/dev/javascript/gleeunit/gleeunit_progress.erl +72 -0
- package/build/dev/javascript/prelude.mjs +1575 -0
- package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache +0 -0
- package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_inline +0 -0
- package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_meta +0 -0
- package/build/dev/javascript/simplifile/gleam.mjs +1 -0
- package/build/dev/javascript/simplifile/simplifile.erl +893 -0
- package/build/dev/javascript/simplifile/simplifile.mjs +893 -0
- package/build/dev/javascript/simplifile/simplifile_erl.erl +244 -0
- package/build/dev/javascript/simplifile/simplifile_js.mjs +400 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_inline +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_meta +0 -0
- package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_warnings +0 -0
- package/build/dev/javascript/skillc/cli_test.mjs +461 -0
- package/build/dev/javascript/skillc/compiler_test.mjs +3089 -0
- package/build/dev/javascript/skillc/config_test.mjs +308 -0
- package/build/dev/javascript/skillc/gleam.main.mjs +2 -0
- package/build/dev/javascript/skillc/gleam.mjs +1 -0
- package/build/dev/javascript/skillc/importer_test.mjs +1643 -0
- package/build/dev/javascript/skillc/parser_test.mjs +1601 -0
- package/build/dev/javascript/skillc/path_test.mjs +26 -0
- package/build/dev/javascript/skillc/provider_test.mjs +221 -0
- package/build/dev/javascript/skillc/registry_test.mjs +359 -0
- package/build/dev/javascript/skillc/scaffold_test.mjs +405 -0
- package/build/dev/javascript/skillc/skillc/compiler.mjs +724 -0
- package/build/dev/javascript/skillc/skillc/config.mjs +172 -0
- package/build/dev/javascript/skillc/skillc/error.mjs +145 -0
- package/build/dev/javascript/skillc/skillc/fs.mjs +40 -0
- package/build/dev/javascript/skillc/skillc/importer.mjs +975 -0
- package/build/dev/javascript/skillc/skillc/parser.mjs +427 -0
- package/build/dev/javascript/skillc/skillc/path.mjs +52 -0
- package/build/dev/javascript/skillc/skillc/platform.mjs +44 -0
- package/build/dev/javascript/skillc/skillc/provider.mjs +86 -0
- package/build/dev/javascript/skillc/skillc/registry.mjs +701 -0
- package/build/dev/javascript/skillc/skillc/scaffold.mjs +117 -0
- package/build/dev/javascript/skillc/skillc/semver.mjs +293 -0
- package/build/dev/javascript/skillc/skillc/shell.mjs +14 -0
- package/build/dev/javascript/skillc/skillc/template.mjs +1177 -0
- package/build/dev/javascript/skillc/skillc/types.mjs +249 -0
- package/build/dev/javascript/skillc/skillc/version_constraint.mjs +290 -0
- package/build/dev/javascript/skillc/skillc/yaml.mjs +51 -0
- package/build/dev/javascript/skillc/skillc.mjs +873 -0
- package/build/dev/javascript/skillc/skillc_ffi.mjs +30 -0
- package/build/dev/javascript/skillc/skillc_test.mjs +5 -0
- package/build/dev/javascript/skillc/template_test.mjs +1638 -0
- package/build/dev/javascript/skillc/version_constraint_test.mjs +1325 -0
- package/build/dev/javascript/yay/_gleam_artefacts/yay.cache +0 -0
- package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_inline +0 -0
- package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_meta +0 -0
- package/build/dev/javascript/yay/gleam.mjs +1 -0
- package/build/dev/javascript/yay/yaml_ffi.erl +106 -0
- package/build/dev/javascript/yay/yaml_ffi.mjs +373 -0
- package/build/dev/javascript/yay/yay.erl +1218 -0
- package/build/dev/javascript/yay/yay.mjs +1403 -0
- package/package.json +28 -0
- package/src/skillc/compiler.gleam +561 -0
- package/src/skillc/config.gleam +91 -0
- package/src/skillc/error.gleam +37 -0
- package/src/skillc/fs.gleam +31 -0
- package/src/skillc/importer.gleam +709 -0
- package/src/skillc/parser.gleam +279 -0
- package/src/skillc/path.gleam +30 -0
- package/src/skillc/platform.gleam +25 -0
- package/src/skillc/provider.gleam +58 -0
- package/src/skillc/registry.gleam +472 -0
- package/src/skillc/scaffold.gleam +112 -0
- package/src/skillc/semver.gleam +165 -0
- package/src/skillc/shell.gleam +12 -0
- package/src/skillc/template.gleam +885 -0
- package/src/skillc/types.gleam +93 -0
- package/src/skillc/version_constraint.gleam +163 -0
- package/src/skillc/yaml.gleam +27 -0
- package/src/skillc.gleam +466 -0
- package/src/skillc_ffi.mjs +30 -0
|
@@ -0,0 +1,1643 @@
|
|
|
1
|
+
import * as $list from "../gleam_stdlib/gleam/list.mjs";
|
|
2
|
+
import * as $option from "../gleam_stdlib/gleam/option.mjs";
|
|
3
|
+
import { None, Some } from "../gleam_stdlib/gleam/option.mjs";
|
|
4
|
+
import * as $string from "../gleam_stdlib/gleam/string.mjs";
|
|
5
|
+
import * as $should from "../gleeunit/gleeunit/should.mjs";
|
|
6
|
+
import * as $simplifile from "../simplifile/simplifile.mjs";
|
|
7
|
+
import { Ok, Error, toList, makeError } from "./gleam.mjs";
|
|
8
|
+
import * as $compiler from "./skillc/compiler.mjs";
|
|
9
|
+
import * as $error from "./skillc/error.mjs";
|
|
10
|
+
import * as $importer from "./skillc/importer.mjs";
|
|
11
|
+
import { FrontmatterPair, SourceDirectory } from "./skillc/importer.mjs";
|
|
12
|
+
import * as $semver from "./skillc/semver.mjs";
|
|
13
|
+
import * as $types from "./skillc/types.mjs";
|
|
14
|
+
|
|
15
|
+
const FILEPATH = "test/importer_test.gleam";
|
|
16
|
+
|
|
17
|
+
export function parse_frontmatter_openclaw_test() {
|
|
18
|
+
let content = "---\nname: test\ndescription: \"A test\"\nversion: 1.0.0\nmetadata.openclaw:\n emoji: rocket\n---\n\nBody here.";
|
|
19
|
+
let $ = $importer.parse_frontmatter(content);
|
|
20
|
+
let frontmatter;
|
|
21
|
+
if ($ instanceof Ok) {
|
|
22
|
+
frontmatter = $[0];
|
|
23
|
+
} else {
|
|
24
|
+
throw makeError(
|
|
25
|
+
"let_assert",
|
|
26
|
+
FILEPATH,
|
|
27
|
+
"importer_test",
|
|
28
|
+
19,
|
|
29
|
+
"parse_frontmatter_openclaw_test",
|
|
30
|
+
"Pattern match failed, no pattern matched the value.",
|
|
31
|
+
{ value: $, start: 623, end: 687, pattern_start: 634, pattern_end: 649 }
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
let keys = $list.map(frontmatter.pairs, (p) => { return p.key; });
|
|
35
|
+
$should.be_true($list.contains(keys, "name"));
|
|
36
|
+
$should.be_true($list.contains(keys, "metadata.openclaw"));
|
|
37
|
+
return $should.be_true($string.contains(frontmatter.body, "Body here."));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function parse_frontmatter_claude_code_test() {
|
|
41
|
+
let content = "---\nname: test\ndescription: \"A test\"\nversion: 1.0.0\nuser-invocable: true\n---\n\nBody.";
|
|
42
|
+
let $ = $importer.parse_frontmatter(content);
|
|
43
|
+
let frontmatter;
|
|
44
|
+
if ($ instanceof Ok) {
|
|
45
|
+
frontmatter = $[0];
|
|
46
|
+
} else {
|
|
47
|
+
throw makeError(
|
|
48
|
+
"let_assert",
|
|
49
|
+
FILEPATH,
|
|
50
|
+
"importer_test",
|
|
51
|
+
29,
|
|
52
|
+
"parse_frontmatter_claude_code_test",
|
|
53
|
+
"Pattern match failed, no pattern matched the value.",
|
|
54
|
+
{
|
|
55
|
+
value: $,
|
|
56
|
+
start: 1083,
|
|
57
|
+
end: 1147,
|
|
58
|
+
pattern_start: 1094,
|
|
59
|
+
pattern_end: 1109
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
let keys = $list.map(frontmatter.pairs, (p) => { return p.key; });
|
|
64
|
+
$should.be_true($list.contains(keys, "user-invocable"));
|
|
65
|
+
return $should.be_true($string.contains(frontmatter.body, "Body."));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function parse_frontmatter_codex_test() {
|
|
69
|
+
let content = "---\nname: test\nversion: 1.0.0\n---\n\nCodex body.";
|
|
70
|
+
let $ = $importer.parse_frontmatter(content);
|
|
71
|
+
let frontmatter;
|
|
72
|
+
if ($ instanceof Ok) {
|
|
73
|
+
frontmatter = $[0];
|
|
74
|
+
} else {
|
|
75
|
+
throw makeError(
|
|
76
|
+
"let_assert",
|
|
77
|
+
FILEPATH,
|
|
78
|
+
"importer_test",
|
|
79
|
+
37,
|
|
80
|
+
"parse_frontmatter_codex_test",
|
|
81
|
+
"Pattern match failed, no pattern matched the value.",
|
|
82
|
+
{
|
|
83
|
+
value: $,
|
|
84
|
+
start: 1438,
|
|
85
|
+
end: 1502,
|
|
86
|
+
pattern_start: 1449,
|
|
87
|
+
pattern_end: 1464
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
$should.equal($list.length(frontmatter.pairs), 2);
|
|
92
|
+
return $should.be_true($string.contains(frontmatter.body, "Codex body."));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function parse_frontmatter_missing_error_test() {
|
|
96
|
+
let content = "# No frontmatter\n\nJust body.";
|
|
97
|
+
let result = $importer.parse_frontmatter(content);
|
|
98
|
+
$should.be_error(result);
|
|
99
|
+
let msg;
|
|
100
|
+
if (result instanceof Error) {
|
|
101
|
+
let $ = result[0];
|
|
102
|
+
if ($ instanceof $error.ImportError) {
|
|
103
|
+
msg = $.message;
|
|
104
|
+
} else {
|
|
105
|
+
throw makeError(
|
|
106
|
+
"let_assert",
|
|
107
|
+
FILEPATH,
|
|
108
|
+
"importer_test",
|
|
109
|
+
46,
|
|
110
|
+
"parse_frontmatter_missing_error_test",
|
|
111
|
+
"Pattern match failed, no pattern matched the value.",
|
|
112
|
+
{
|
|
113
|
+
value: result,
|
|
114
|
+
start: 1799,
|
|
115
|
+
end: 1851,
|
|
116
|
+
pattern_start: 1810,
|
|
117
|
+
pattern_end: 1842
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
} else {
|
|
122
|
+
throw makeError(
|
|
123
|
+
"let_assert",
|
|
124
|
+
FILEPATH,
|
|
125
|
+
"importer_test",
|
|
126
|
+
46,
|
|
127
|
+
"parse_frontmatter_missing_error_test",
|
|
128
|
+
"Pattern match failed, no pattern matched the value.",
|
|
129
|
+
{
|
|
130
|
+
value: result,
|
|
131
|
+
start: 1799,
|
|
132
|
+
end: 1851,
|
|
133
|
+
pattern_start: 1810,
|
|
134
|
+
pattern_end: 1842
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
return $should.be_true($string.contains(msg, "No YAML frontmatter"));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function parse_frontmatter_unclosed_error_test() {
|
|
142
|
+
let content = "---\nname: test\nversion: 1.0.0\n\nNo closing fence.";
|
|
143
|
+
let result = $importer.parse_frontmatter(content);
|
|
144
|
+
$should.be_error(result);
|
|
145
|
+
let msg;
|
|
146
|
+
if (result instanceof Error) {
|
|
147
|
+
let $ = result[0];
|
|
148
|
+
if ($ instanceof $error.ImportError) {
|
|
149
|
+
msg = $.message;
|
|
150
|
+
} else {
|
|
151
|
+
throw makeError(
|
|
152
|
+
"let_assert",
|
|
153
|
+
FILEPATH,
|
|
154
|
+
"importer_test",
|
|
155
|
+
54,
|
|
156
|
+
"parse_frontmatter_unclosed_error_test",
|
|
157
|
+
"Pattern match failed, no pattern matched the value.",
|
|
158
|
+
{
|
|
159
|
+
value: result,
|
|
160
|
+
start: 2116,
|
|
161
|
+
end: 2168,
|
|
162
|
+
pattern_start: 2127,
|
|
163
|
+
pattern_end: 2159
|
|
164
|
+
}
|
|
165
|
+
)
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
throw makeError(
|
|
169
|
+
"let_assert",
|
|
170
|
+
FILEPATH,
|
|
171
|
+
"importer_test",
|
|
172
|
+
54,
|
|
173
|
+
"parse_frontmatter_unclosed_error_test",
|
|
174
|
+
"Pattern match failed, no pattern matched the value.",
|
|
175
|
+
{
|
|
176
|
+
value: result,
|
|
177
|
+
start: 2116,
|
|
178
|
+
end: 2168,
|
|
179
|
+
pattern_start: 2127,
|
|
180
|
+
pattern_end: 2159
|
|
181
|
+
}
|
|
182
|
+
)
|
|
183
|
+
}
|
|
184
|
+
return $should.be_true($string.contains(msg, "Unclosed"));
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function detect_provider_openclaw_test() {
|
|
188
|
+
let pairs = toList([
|
|
189
|
+
new FrontmatterPair("name", "test"),
|
|
190
|
+
new FrontmatterPair("metadata.openclaw", " emoji: rocket"),
|
|
191
|
+
]);
|
|
192
|
+
let $ = $importer.detect_provider(pairs, "/tmp/nonexistent");
|
|
193
|
+
let provider;
|
|
194
|
+
if ($ instanceof Ok) {
|
|
195
|
+
provider = $[0];
|
|
196
|
+
} else {
|
|
197
|
+
throw makeError(
|
|
198
|
+
"let_assert",
|
|
199
|
+
FILEPATH,
|
|
200
|
+
"importer_test",
|
|
201
|
+
67,
|
|
202
|
+
"detect_provider_openclaw_test",
|
|
203
|
+
"Pattern match failed, no pattern matched the value.",
|
|
204
|
+
{
|
|
205
|
+
value: $,
|
|
206
|
+
start: 2600,
|
|
207
|
+
end: 2677,
|
|
208
|
+
pattern_start: 2611,
|
|
209
|
+
pattern_end: 2623
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
}
|
|
213
|
+
return $should.equal(provider, new $types.OpenClaw());
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export function detect_provider_claude_code_test() {
|
|
217
|
+
let pairs = toList([
|
|
218
|
+
new FrontmatterPair("name", "test"),
|
|
219
|
+
new FrontmatterPair("user-invocable", "true"),
|
|
220
|
+
new FrontmatterPair("allowed-tools", "[Read, Grep]"),
|
|
221
|
+
]);
|
|
222
|
+
let $ = $importer.detect_provider(pairs, "/tmp/nonexistent");
|
|
223
|
+
let provider;
|
|
224
|
+
if ($ instanceof Ok) {
|
|
225
|
+
provider = $[0];
|
|
226
|
+
} else {
|
|
227
|
+
throw makeError(
|
|
228
|
+
"let_assert",
|
|
229
|
+
FILEPATH,
|
|
230
|
+
"importer_test",
|
|
231
|
+
77,
|
|
232
|
+
"detect_provider_claude_code_test",
|
|
233
|
+
"Pattern match failed, no pattern matched the value.",
|
|
234
|
+
{
|
|
235
|
+
value: $,
|
|
236
|
+
start: 2962,
|
|
237
|
+
end: 3039,
|
|
238
|
+
pattern_start: 2973,
|
|
239
|
+
pattern_end: 2985
|
|
240
|
+
}
|
|
241
|
+
)
|
|
242
|
+
}
|
|
243
|
+
return $should.equal(provider, new $types.ClaudeCode());
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export function detect_provider_codex_from_directory_test() {
|
|
247
|
+
let pairs = toList([
|
|
248
|
+
new FrontmatterPair("name", "test"),
|
|
249
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
250
|
+
]);
|
|
251
|
+
let $ = $importer.detect_provider(pairs, "test/fixtures/import-codex");
|
|
252
|
+
let provider;
|
|
253
|
+
if ($ instanceof Ok) {
|
|
254
|
+
provider = $[0];
|
|
255
|
+
} else {
|
|
256
|
+
throw makeError(
|
|
257
|
+
"let_assert",
|
|
258
|
+
FILEPATH,
|
|
259
|
+
"importer_test",
|
|
260
|
+
86,
|
|
261
|
+
"detect_provider_codex_from_directory_test",
|
|
262
|
+
"Pattern match failed, no pattern matched the value.",
|
|
263
|
+
{
|
|
264
|
+
value: $,
|
|
265
|
+
start: 3263,
|
|
266
|
+
end: 3354,
|
|
267
|
+
pattern_start: 3274,
|
|
268
|
+
pattern_end: 3286
|
|
269
|
+
}
|
|
270
|
+
)
|
|
271
|
+
}
|
|
272
|
+
return $should.equal(provider, new $types.Codex());
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export function detect_provider_ambiguous_error_test() {
|
|
276
|
+
let pairs = toList([
|
|
277
|
+
new FrontmatterPair("name", "test"),
|
|
278
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
279
|
+
]);
|
|
280
|
+
let result = $importer.detect_provider(pairs, "/tmp/nonexistent");
|
|
281
|
+
$should.be_error(result);
|
|
282
|
+
let msg;
|
|
283
|
+
if (result instanceof Error) {
|
|
284
|
+
let $ = result[0];
|
|
285
|
+
if ($ instanceof $error.ImportError) {
|
|
286
|
+
msg = $.message;
|
|
287
|
+
} else {
|
|
288
|
+
throw makeError(
|
|
289
|
+
"let_assert",
|
|
290
|
+
FILEPATH,
|
|
291
|
+
"importer_test",
|
|
292
|
+
98,
|
|
293
|
+
"detect_provider_ambiguous_error_test",
|
|
294
|
+
"Pattern match failed, no pattern matched the value.",
|
|
295
|
+
{
|
|
296
|
+
value: result,
|
|
297
|
+
start: 3661,
|
|
298
|
+
end: 3713,
|
|
299
|
+
pattern_start: 3672,
|
|
300
|
+
pattern_end: 3704
|
|
301
|
+
}
|
|
302
|
+
)
|
|
303
|
+
}
|
|
304
|
+
} else {
|
|
305
|
+
throw makeError(
|
|
306
|
+
"let_assert",
|
|
307
|
+
FILEPATH,
|
|
308
|
+
"importer_test",
|
|
309
|
+
98,
|
|
310
|
+
"detect_provider_ambiguous_error_test",
|
|
311
|
+
"Pattern match failed, no pattern matched the value.",
|
|
312
|
+
{
|
|
313
|
+
value: result,
|
|
314
|
+
start: 3661,
|
|
315
|
+
end: 3713,
|
|
316
|
+
pattern_start: 3672,
|
|
317
|
+
pattern_end: 3704
|
|
318
|
+
}
|
|
319
|
+
)
|
|
320
|
+
}
|
|
321
|
+
return $should.be_true($string.contains(msg, "Cannot auto-detect"));
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export function separate_fields_openclaw_test() {
|
|
325
|
+
let pairs = toList([
|
|
326
|
+
new FrontmatterPair("name", "test"),
|
|
327
|
+
new FrontmatterPair("description", "\"A test\""),
|
|
328
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
329
|
+
new FrontmatterPair("license", "MIT"),
|
|
330
|
+
new FrontmatterPair(
|
|
331
|
+
"metadata.openclaw",
|
|
332
|
+
" emoji: rocket\n category: devtools",
|
|
333
|
+
),
|
|
334
|
+
]);
|
|
335
|
+
let $ = $importer.separate_fields(pairs, new $types.OpenClaw());
|
|
336
|
+
let separated;
|
|
337
|
+
if ($ instanceof Ok) {
|
|
338
|
+
separated = $[0];
|
|
339
|
+
} else {
|
|
340
|
+
throw makeError(
|
|
341
|
+
"let_assert",
|
|
342
|
+
FILEPATH,
|
|
343
|
+
"importer_test",
|
|
344
|
+
117,
|
|
345
|
+
"separate_fields_openclaw_test",
|
|
346
|
+
"Pattern match failed, no pattern matched the value.",
|
|
347
|
+
{
|
|
348
|
+
value: $,
|
|
349
|
+
start: 4355,
|
|
350
|
+
end: 4433,
|
|
351
|
+
pattern_start: 4366,
|
|
352
|
+
pattern_end: 4379
|
|
353
|
+
}
|
|
354
|
+
)
|
|
355
|
+
}
|
|
356
|
+
$should.equal(separated.universal.name, "test");
|
|
357
|
+
$should.equal(separated.universal.description, "A test");
|
|
358
|
+
$should.equal($semver.to_string(separated.universal.version), "1.0.0");
|
|
359
|
+
$should.equal(separated.universal.license, new Some("MIT"));
|
|
360
|
+
let provider_keys = $list.map(separated.provider, (p) => { return p.key; });
|
|
361
|
+
$should.be_true($list.contains(provider_keys, "emoji"));
|
|
362
|
+
return $should.be_true($list.contains(provider_keys, "category"));
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export function separate_fields_claude_code_test() {
|
|
366
|
+
let pairs = toList([
|
|
367
|
+
new FrontmatterPair("name", "test"),
|
|
368
|
+
new FrontmatterPair("description", "\"A test\""),
|
|
369
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
370
|
+
new FrontmatterPair("user-invocable", "true"),
|
|
371
|
+
new FrontmatterPair("allowed-tools", "[Read, Grep]"),
|
|
372
|
+
]);
|
|
373
|
+
let $ = $importer.separate_fields(pairs, new $types.ClaudeCode());
|
|
374
|
+
let separated;
|
|
375
|
+
if ($ instanceof Ok) {
|
|
376
|
+
separated = $[0];
|
|
377
|
+
} else {
|
|
378
|
+
throw makeError(
|
|
379
|
+
"let_assert",
|
|
380
|
+
FILEPATH,
|
|
381
|
+
"importer_test",
|
|
382
|
+
136,
|
|
383
|
+
"separate_fields_claude_code_test",
|
|
384
|
+
"Pattern match failed, no pattern matched the value.",
|
|
385
|
+
{
|
|
386
|
+
value: $,
|
|
387
|
+
start: 5210,
|
|
388
|
+
end: 5290,
|
|
389
|
+
pattern_start: 5221,
|
|
390
|
+
pattern_end: 5234
|
|
391
|
+
}
|
|
392
|
+
)
|
|
393
|
+
}
|
|
394
|
+
$should.equal(separated.universal.name, "test");
|
|
395
|
+
$should.equal(separated.universal.license, new None());
|
|
396
|
+
let provider_keys = $list.map(separated.provider, (p) => { return p.key; });
|
|
397
|
+
$should.be_true($list.contains(provider_keys, "user-invocable"));
|
|
398
|
+
$should.be_true($list.contains(provider_keys, "allowed-tools"));
|
|
399
|
+
return $should.be_false($list.contains(provider_keys, "name"));
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
export function separate_fields_universal_extracted_test() {
|
|
403
|
+
let pairs = toList([
|
|
404
|
+
new FrontmatterPair("name", "my-skill"),
|
|
405
|
+
new FrontmatterPair("description", "Desc"),
|
|
406
|
+
new FrontmatterPair("version", "3.0.0"),
|
|
407
|
+
]);
|
|
408
|
+
let $ = $importer.separate_fields(pairs, new $types.Codex());
|
|
409
|
+
let separated;
|
|
410
|
+
if ($ instanceof Ok) {
|
|
411
|
+
separated = $[0];
|
|
412
|
+
} else {
|
|
413
|
+
throw makeError(
|
|
414
|
+
"let_assert",
|
|
415
|
+
FILEPATH,
|
|
416
|
+
"importer_test",
|
|
417
|
+
152,
|
|
418
|
+
"separate_fields_universal_extracted_test",
|
|
419
|
+
"Pattern match failed, no pattern matched the value.",
|
|
420
|
+
{
|
|
421
|
+
value: $,
|
|
422
|
+
start: 5882,
|
|
423
|
+
end: 5957,
|
|
424
|
+
pattern_start: 5893,
|
|
425
|
+
pattern_end: 5906
|
|
426
|
+
}
|
|
427
|
+
)
|
|
428
|
+
}
|
|
429
|
+
$should.equal(separated.universal.name, "my-skill");
|
|
430
|
+
$should.equal(separated.universal.description, "Desc");
|
|
431
|
+
$should.equal($semver.to_string(separated.universal.version), "3.0.0");
|
|
432
|
+
return $should.equal(separated.provider, toList([]));
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
export function separate_fields_missing_name_error_test() {
|
|
436
|
+
let pairs = toList([
|
|
437
|
+
new FrontmatterPair("description", "Desc"),
|
|
438
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
439
|
+
]);
|
|
440
|
+
let result = $importer.separate_fields(pairs, new $types.Codex());
|
|
441
|
+
$should.be_error(result);
|
|
442
|
+
let msg;
|
|
443
|
+
if (result instanceof Error) {
|
|
444
|
+
let $ = result[0];
|
|
445
|
+
if ($ instanceof $error.ImportError) {
|
|
446
|
+
let $1 = $.source;
|
|
447
|
+
if ($1 === "name") {
|
|
448
|
+
msg = $.message;
|
|
449
|
+
} else {
|
|
450
|
+
throw makeError(
|
|
451
|
+
"let_assert",
|
|
452
|
+
FILEPATH,
|
|
453
|
+
"importer_test",
|
|
454
|
+
167,
|
|
455
|
+
"separate_fields_missing_name_error_test",
|
|
456
|
+
"Pattern match failed, no pattern matched the value.",
|
|
457
|
+
{
|
|
458
|
+
value: result,
|
|
459
|
+
start: 6448,
|
|
460
|
+
end: 6505,
|
|
461
|
+
pattern_start: 6459,
|
|
462
|
+
pattern_end: 6496
|
|
463
|
+
}
|
|
464
|
+
)
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
throw makeError(
|
|
468
|
+
"let_assert",
|
|
469
|
+
FILEPATH,
|
|
470
|
+
"importer_test",
|
|
471
|
+
167,
|
|
472
|
+
"separate_fields_missing_name_error_test",
|
|
473
|
+
"Pattern match failed, no pattern matched the value.",
|
|
474
|
+
{
|
|
475
|
+
value: result,
|
|
476
|
+
start: 6448,
|
|
477
|
+
end: 6505,
|
|
478
|
+
pattern_start: 6459,
|
|
479
|
+
pattern_end: 6496
|
|
480
|
+
}
|
|
481
|
+
)
|
|
482
|
+
}
|
|
483
|
+
} else {
|
|
484
|
+
throw makeError(
|
|
485
|
+
"let_assert",
|
|
486
|
+
FILEPATH,
|
|
487
|
+
"importer_test",
|
|
488
|
+
167,
|
|
489
|
+
"separate_fields_missing_name_error_test",
|
|
490
|
+
"Pattern match failed, no pattern matched the value.",
|
|
491
|
+
{
|
|
492
|
+
value: result,
|
|
493
|
+
start: 6448,
|
|
494
|
+
end: 6505,
|
|
495
|
+
pattern_start: 6459,
|
|
496
|
+
pattern_end: 6496
|
|
497
|
+
}
|
|
498
|
+
)
|
|
499
|
+
}
|
|
500
|
+
return $should.be_true($string.contains(msg, "missing"));
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
export function separate_fields_missing_description_error_test() {
|
|
504
|
+
let pairs = toList([
|
|
505
|
+
new FrontmatterPair("name", "test"),
|
|
506
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
507
|
+
]);
|
|
508
|
+
let result = $importer.separate_fields(pairs, new $types.Codex());
|
|
509
|
+
$should.be_error(result);
|
|
510
|
+
let msg;
|
|
511
|
+
if (result instanceof Error) {
|
|
512
|
+
let $ = result[0];
|
|
513
|
+
if ($ instanceof $error.ImportError) {
|
|
514
|
+
let $1 = $.source;
|
|
515
|
+
if ($1 === "description") {
|
|
516
|
+
msg = $.message;
|
|
517
|
+
} else {
|
|
518
|
+
throw makeError(
|
|
519
|
+
"let_assert",
|
|
520
|
+
FILEPATH,
|
|
521
|
+
"importer_test",
|
|
522
|
+
178,
|
|
523
|
+
"separate_fields_missing_description_error_test",
|
|
524
|
+
"Pattern match failed, no pattern matched the value.",
|
|
525
|
+
{
|
|
526
|
+
value: result,
|
|
527
|
+
start: 6827,
|
|
528
|
+
end: 6891,
|
|
529
|
+
pattern_start: 6838,
|
|
530
|
+
pattern_end: 6882
|
|
531
|
+
}
|
|
532
|
+
)
|
|
533
|
+
}
|
|
534
|
+
} else {
|
|
535
|
+
throw makeError(
|
|
536
|
+
"let_assert",
|
|
537
|
+
FILEPATH,
|
|
538
|
+
"importer_test",
|
|
539
|
+
178,
|
|
540
|
+
"separate_fields_missing_description_error_test",
|
|
541
|
+
"Pattern match failed, no pattern matched the value.",
|
|
542
|
+
{
|
|
543
|
+
value: result,
|
|
544
|
+
start: 6827,
|
|
545
|
+
end: 6891,
|
|
546
|
+
pattern_start: 6838,
|
|
547
|
+
pattern_end: 6882
|
|
548
|
+
}
|
|
549
|
+
)
|
|
550
|
+
}
|
|
551
|
+
} else {
|
|
552
|
+
throw makeError(
|
|
553
|
+
"let_assert",
|
|
554
|
+
FILEPATH,
|
|
555
|
+
"importer_test",
|
|
556
|
+
178,
|
|
557
|
+
"separate_fields_missing_description_error_test",
|
|
558
|
+
"Pattern match failed, no pattern matched the value.",
|
|
559
|
+
{
|
|
560
|
+
value: result,
|
|
561
|
+
start: 6827,
|
|
562
|
+
end: 6891,
|
|
563
|
+
pattern_start: 6838,
|
|
564
|
+
pattern_end: 6882
|
|
565
|
+
}
|
|
566
|
+
)
|
|
567
|
+
}
|
|
568
|
+
return $should.be_true($string.contains(msg, "missing"));
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
export function separate_fields_missing_version_error_test() {
|
|
572
|
+
let pairs = toList([
|
|
573
|
+
new FrontmatterPair("name", "test"),
|
|
574
|
+
new FrontmatterPair("description", "Desc"),
|
|
575
|
+
]);
|
|
576
|
+
let result = $importer.separate_fields(pairs, new $types.Codex());
|
|
577
|
+
$should.be_error(result);
|
|
578
|
+
let msg;
|
|
579
|
+
if (result instanceof Error) {
|
|
580
|
+
let $ = result[0];
|
|
581
|
+
if ($ instanceof $error.ImportError) {
|
|
582
|
+
let $1 = $.source;
|
|
583
|
+
if ($1 === "version") {
|
|
584
|
+
msg = $.message;
|
|
585
|
+
} else {
|
|
586
|
+
throw makeError(
|
|
587
|
+
"let_assert",
|
|
588
|
+
FILEPATH,
|
|
589
|
+
"importer_test",
|
|
590
|
+
189,
|
|
591
|
+
"separate_fields_missing_version_error_test",
|
|
592
|
+
"Pattern match failed, no pattern matched the value.",
|
|
593
|
+
{
|
|
594
|
+
value: result,
|
|
595
|
+
start: 7212,
|
|
596
|
+
end: 7272,
|
|
597
|
+
pattern_start: 7223,
|
|
598
|
+
pattern_end: 7263
|
|
599
|
+
}
|
|
600
|
+
)
|
|
601
|
+
}
|
|
602
|
+
} else {
|
|
603
|
+
throw makeError(
|
|
604
|
+
"let_assert",
|
|
605
|
+
FILEPATH,
|
|
606
|
+
"importer_test",
|
|
607
|
+
189,
|
|
608
|
+
"separate_fields_missing_version_error_test",
|
|
609
|
+
"Pattern match failed, no pattern matched the value.",
|
|
610
|
+
{
|
|
611
|
+
value: result,
|
|
612
|
+
start: 7212,
|
|
613
|
+
end: 7272,
|
|
614
|
+
pattern_start: 7223,
|
|
615
|
+
pattern_end: 7263
|
|
616
|
+
}
|
|
617
|
+
)
|
|
618
|
+
}
|
|
619
|
+
} else {
|
|
620
|
+
throw makeError(
|
|
621
|
+
"let_assert",
|
|
622
|
+
FILEPATH,
|
|
623
|
+
"importer_test",
|
|
624
|
+
189,
|
|
625
|
+
"separate_fields_missing_version_error_test",
|
|
626
|
+
"Pattern match failed, no pattern matched the value.",
|
|
627
|
+
{
|
|
628
|
+
value: result,
|
|
629
|
+
start: 7212,
|
|
630
|
+
end: 7272,
|
|
631
|
+
pattern_start: 7223,
|
|
632
|
+
pattern_end: 7263
|
|
633
|
+
}
|
|
634
|
+
)
|
|
635
|
+
}
|
|
636
|
+
return $should.be_true($string.contains(msg, "missing"));
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
export function separate_fields_invalid_version_error_test() {
|
|
640
|
+
let pairs = toList([
|
|
641
|
+
new FrontmatterPair("name", "test"),
|
|
642
|
+
new FrontmatterPair("description", "Desc"),
|
|
643
|
+
new FrontmatterPair("version", "banana"),
|
|
644
|
+
]);
|
|
645
|
+
let result = $importer.separate_fields(pairs, new $types.Codex());
|
|
646
|
+
$should.be_error(result);
|
|
647
|
+
let msg;
|
|
648
|
+
if (result instanceof Error) {
|
|
649
|
+
let $ = result[0];
|
|
650
|
+
if ($ instanceof $error.ImportError) {
|
|
651
|
+
let $1 = $.source;
|
|
652
|
+
if ($1 === "version") {
|
|
653
|
+
msg = $.message;
|
|
654
|
+
} else {
|
|
655
|
+
throw makeError(
|
|
656
|
+
"let_assert",
|
|
657
|
+
FILEPATH,
|
|
658
|
+
"importer_test",
|
|
659
|
+
201,
|
|
660
|
+
"separate_fields_invalid_version_error_test",
|
|
661
|
+
"Pattern match failed, no pattern matched the value.",
|
|
662
|
+
{
|
|
663
|
+
value: result,
|
|
664
|
+
start: 7647,
|
|
665
|
+
end: 7707,
|
|
666
|
+
pattern_start: 7658,
|
|
667
|
+
pattern_end: 7698
|
|
668
|
+
}
|
|
669
|
+
)
|
|
670
|
+
}
|
|
671
|
+
} else {
|
|
672
|
+
throw makeError(
|
|
673
|
+
"let_assert",
|
|
674
|
+
FILEPATH,
|
|
675
|
+
"importer_test",
|
|
676
|
+
201,
|
|
677
|
+
"separate_fields_invalid_version_error_test",
|
|
678
|
+
"Pattern match failed, no pattern matched the value.",
|
|
679
|
+
{
|
|
680
|
+
value: result,
|
|
681
|
+
start: 7647,
|
|
682
|
+
end: 7707,
|
|
683
|
+
pattern_start: 7658,
|
|
684
|
+
pattern_end: 7698
|
|
685
|
+
}
|
|
686
|
+
)
|
|
687
|
+
}
|
|
688
|
+
} else {
|
|
689
|
+
throw makeError(
|
|
690
|
+
"let_assert",
|
|
691
|
+
FILEPATH,
|
|
692
|
+
"importer_test",
|
|
693
|
+
201,
|
|
694
|
+
"separate_fields_invalid_version_error_test",
|
|
695
|
+
"Pattern match failed, no pattern matched the value.",
|
|
696
|
+
{
|
|
697
|
+
value: result,
|
|
698
|
+
start: 7647,
|
|
699
|
+
end: 7707,
|
|
700
|
+
pattern_start: 7658,
|
|
701
|
+
pattern_end: 7698
|
|
702
|
+
}
|
|
703
|
+
)
|
|
704
|
+
}
|
|
705
|
+
return $should.be_true($string.contains(msg, "Invalid version"));
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
export function generate_skill_yaml_format_test() {
|
|
709
|
+
let pairs = toList([
|
|
710
|
+
new FrontmatterPair("name", "test-skill"),
|
|
711
|
+
new FrontmatterPair("description", "\"A test skill\""),
|
|
712
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
713
|
+
new FrontmatterPair("license", "MIT"),
|
|
714
|
+
]);
|
|
715
|
+
let $ = $importer.separate_fields(pairs, new $types.OpenClaw());
|
|
716
|
+
let separated;
|
|
717
|
+
if ($ instanceof Ok) {
|
|
718
|
+
separated = $[0];
|
|
719
|
+
} else {
|
|
720
|
+
throw makeError(
|
|
721
|
+
"let_assert",
|
|
722
|
+
FILEPATH,
|
|
723
|
+
"importer_test",
|
|
724
|
+
216,
|
|
725
|
+
"generate_skill_yaml_format_test",
|
|
726
|
+
"Pattern match failed, no pattern matched the value.",
|
|
727
|
+
{
|
|
728
|
+
value: $,
|
|
729
|
+
start: 8245,
|
|
730
|
+
end: 8323,
|
|
731
|
+
pattern_start: 8256,
|
|
732
|
+
pattern_end: 8269
|
|
733
|
+
}
|
|
734
|
+
)
|
|
735
|
+
}
|
|
736
|
+
let yaml = $importer.generate_skill_yaml(separated.universal);
|
|
737
|
+
$should.be_true($string.contains(yaml, "name: test-skill"));
|
|
738
|
+
$should.be_true($string.contains(yaml, "description: \"A test skill\""));
|
|
739
|
+
$should.be_true($string.contains(yaml, "version: 1.0.0"));
|
|
740
|
+
return $should.be_true($string.contains(yaml, "license: MIT"));
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
export function generate_skill_yaml_no_license_test() {
|
|
744
|
+
let pairs = toList([
|
|
745
|
+
new FrontmatterPair("name", "test"),
|
|
746
|
+
new FrontmatterPair("description", "Desc"),
|
|
747
|
+
new FrontmatterPair("version", "1.0.0"),
|
|
748
|
+
]);
|
|
749
|
+
let $ = $importer.separate_fields(pairs, new $types.Codex());
|
|
750
|
+
let separated;
|
|
751
|
+
if ($ instanceof Ok) {
|
|
752
|
+
separated = $[0];
|
|
753
|
+
} else {
|
|
754
|
+
throw makeError(
|
|
755
|
+
"let_assert",
|
|
756
|
+
FILEPATH,
|
|
757
|
+
"importer_test",
|
|
758
|
+
231,
|
|
759
|
+
"generate_skill_yaml_no_license_test",
|
|
760
|
+
"Pattern match failed, no pattern matched the value.",
|
|
761
|
+
{
|
|
762
|
+
value: $,
|
|
763
|
+
start: 8864,
|
|
764
|
+
end: 8939,
|
|
765
|
+
pattern_start: 8875,
|
|
766
|
+
pattern_end: 8888
|
|
767
|
+
}
|
|
768
|
+
)
|
|
769
|
+
}
|
|
770
|
+
let yaml = $importer.generate_skill_yaml(separated.universal);
|
|
771
|
+
return $should.be_false($string.contains(yaml, "license"));
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
export function generate_metadata_yaml_from_pairs_test() {
|
|
775
|
+
let pairs = toList([
|
|
776
|
+
new FrontmatterPair("user-invocable", "true"),
|
|
777
|
+
new FrontmatterPair("allowed-tools", "[Read, Grep]"),
|
|
778
|
+
]);
|
|
779
|
+
let yaml = $importer.generate_metadata_yaml(pairs, new None());
|
|
780
|
+
$should.be_true($string.contains(yaml, "user-invocable: true"));
|
|
781
|
+
return $should.be_true($string.contains(yaml, "allowed-tools: [Read, Grep]"));
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
export function generate_metadata_yaml_codex_override_test() {
|
|
785
|
+
let codex_content = "interface:\n display_name: Test\n";
|
|
786
|
+
let yaml = $importer.generate_metadata_yaml(
|
|
787
|
+
toList([]),
|
|
788
|
+
new Some(codex_content),
|
|
789
|
+
);
|
|
790
|
+
return $should.equal(yaml, codex_content);
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
export function fetch_source_local_directory_test() {
|
|
794
|
+
let $ = $importer.fetch_source("test/fixtures/import-openclaw");
|
|
795
|
+
let resolved;
|
|
796
|
+
if ($ instanceof Ok) {
|
|
797
|
+
resolved = $[0];
|
|
798
|
+
} else {
|
|
799
|
+
throw makeError(
|
|
800
|
+
"let_assert",
|
|
801
|
+
FILEPATH,
|
|
802
|
+
"importer_test",
|
|
803
|
+
259,
|
|
804
|
+
"fetch_source_local_directory_test",
|
|
805
|
+
"Pattern match failed, no pattern matched the value.",
|
|
806
|
+
{
|
|
807
|
+
value: $,
|
|
808
|
+
start: 9908,
|
|
809
|
+
end: 9992,
|
|
810
|
+
pattern_start: 9919,
|
|
811
|
+
pattern_end: 9931
|
|
812
|
+
}
|
|
813
|
+
)
|
|
814
|
+
}
|
|
815
|
+
return $should.equal(
|
|
816
|
+
resolved,
|
|
817
|
+
new SourceDirectory("test/fixtures/import-openclaw"),
|
|
818
|
+
);
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
export function fetch_source_local_file_test() {
|
|
822
|
+
let $ = $importer.fetch_source("test/fixtures/import-openclaw/SKILL.md");
|
|
823
|
+
let resolved;
|
|
824
|
+
if ($ instanceof Ok) {
|
|
825
|
+
resolved = $[0];
|
|
826
|
+
} else {
|
|
827
|
+
throw makeError(
|
|
828
|
+
"let_assert",
|
|
829
|
+
FILEPATH,
|
|
830
|
+
"importer_test",
|
|
831
|
+
265,
|
|
832
|
+
"fetch_source_local_file_test",
|
|
833
|
+
"Pattern match failed, no pattern matched the value.",
|
|
834
|
+
{
|
|
835
|
+
value: $,
|
|
836
|
+
start: 10113,
|
|
837
|
+
end: 10206,
|
|
838
|
+
pattern_start: 10124,
|
|
839
|
+
pattern_end: 10136
|
|
840
|
+
}
|
|
841
|
+
)
|
|
842
|
+
}
|
|
843
|
+
if (resolved instanceof $importer.SourceDirectory) {
|
|
844
|
+
return $should.fail();
|
|
845
|
+
} else {
|
|
846
|
+
let path = resolved.path;
|
|
847
|
+
let directory = resolved.directory;
|
|
848
|
+
$should.equal(path, "test/fixtures/import-openclaw/SKILL.md");
|
|
849
|
+
return $should.equal(directory, "test/fixtures/import-openclaw");
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
export function fetch_source_invalid_url_returns_error_test() {
|
|
854
|
+
let result = $importer.fetch_source(
|
|
855
|
+
"https://invalid.example.com/nonexistent/SKILL.md",
|
|
856
|
+
);
|
|
857
|
+
$should.be_error(result);
|
|
858
|
+
let msg;
|
|
859
|
+
if (result instanceof Error) {
|
|
860
|
+
let $ = result[0];
|
|
861
|
+
if ($ instanceof $error.ImportError) {
|
|
862
|
+
msg = $.message;
|
|
863
|
+
} else {
|
|
864
|
+
throw makeError(
|
|
865
|
+
"let_assert",
|
|
866
|
+
FILEPATH,
|
|
867
|
+
"importer_test",
|
|
868
|
+
282,
|
|
869
|
+
"fetch_source_invalid_url_returns_error_test",
|
|
870
|
+
"Pattern match failed, no pattern matched the value.",
|
|
871
|
+
{
|
|
872
|
+
value: result,
|
|
873
|
+
start: 10721,
|
|
874
|
+
end: 10773,
|
|
875
|
+
pattern_start: 10732,
|
|
876
|
+
pattern_end: 10764
|
|
877
|
+
}
|
|
878
|
+
)
|
|
879
|
+
}
|
|
880
|
+
} else {
|
|
881
|
+
throw makeError(
|
|
882
|
+
"let_assert",
|
|
883
|
+
FILEPATH,
|
|
884
|
+
"importer_test",
|
|
885
|
+
282,
|
|
886
|
+
"fetch_source_invalid_url_returns_error_test",
|
|
887
|
+
"Pattern match failed, no pattern matched the value.",
|
|
888
|
+
{
|
|
889
|
+
value: result,
|
|
890
|
+
start: 10721,
|
|
891
|
+
end: 10773,
|
|
892
|
+
pattern_start: 10732,
|
|
893
|
+
pattern_end: 10764
|
|
894
|
+
}
|
|
895
|
+
)
|
|
896
|
+
}
|
|
897
|
+
return $should.be_true($string.contains(msg, "Failed to download"));
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
export function import_openclaw_fixture_test() {
|
|
901
|
+
let output_dir = "/tmp/skillc-test-import-oc";
|
|
902
|
+
let $ = $simplifile.delete$(output_dir);
|
|
903
|
+
|
|
904
|
+
let $1 = $importer.import_skill(
|
|
905
|
+
"test/fixtures/import-openclaw",
|
|
906
|
+
new None(),
|
|
907
|
+
output_dir,
|
|
908
|
+
);
|
|
909
|
+
let result;
|
|
910
|
+
if ($1 instanceof Ok) {
|
|
911
|
+
result = $1[0];
|
|
912
|
+
} else {
|
|
913
|
+
throw makeError(
|
|
914
|
+
"let_assert",
|
|
915
|
+
FILEPATH,
|
|
916
|
+
"importer_test",
|
|
917
|
+
294,
|
|
918
|
+
"import_openclaw_fixture_test",
|
|
919
|
+
"Pattern match failed, no pattern matched the value.",
|
|
920
|
+
{
|
|
921
|
+
value: $1,
|
|
922
|
+
start: 11169,
|
|
923
|
+
end: 11294,
|
|
924
|
+
pattern_start: 11180,
|
|
925
|
+
pattern_end: 11190
|
|
926
|
+
}
|
|
927
|
+
)
|
|
928
|
+
}
|
|
929
|
+
$should.equal(result.provider, new $types.OpenClaw());
|
|
930
|
+
$should.be_true(
|
|
931
|
+
$string.contains(result.skill_yaml, "name: my-imported-skill"),
|
|
932
|
+
);
|
|
933
|
+
$should.be_true($string.contains(result.skill_yaml, "version: 2.0.0"));
|
|
934
|
+
$should.be_true($string.contains(result.skill_yaml, "license: MIT"));
|
|
935
|
+
$should.be_true(
|
|
936
|
+
$string.contains(result.instructions_md, "# my-imported-skill"),
|
|
937
|
+
);
|
|
938
|
+
$should.be_true($string.contains(result.metadata_yaml, "emoji"));
|
|
939
|
+
let $2 = $simplifile.read(output_dir + "/skill.yaml");
|
|
940
|
+
if (!($2 instanceof Ok)) {
|
|
941
|
+
throw makeError(
|
|
942
|
+
"let_assert",
|
|
943
|
+
FILEPATH,
|
|
944
|
+
"importer_test",
|
|
945
|
+
308,
|
|
946
|
+
"import_openclaw_fixture_test",
|
|
947
|
+
"Pattern match failed, no pattern matched the value.",
|
|
948
|
+
{
|
|
949
|
+
value: $2,
|
|
950
|
+
start: 11713,
|
|
951
|
+
end: 11776,
|
|
952
|
+
pattern_start: 11724,
|
|
953
|
+
pattern_end: 11729
|
|
954
|
+
}
|
|
955
|
+
)
|
|
956
|
+
}
|
|
957
|
+
let $3 = $simplifile.read(output_dir + "/INSTRUCTIONS.md");
|
|
958
|
+
if (!($3 instanceof Ok)) {
|
|
959
|
+
throw makeError(
|
|
960
|
+
"let_assert",
|
|
961
|
+
FILEPATH,
|
|
962
|
+
"importer_test",
|
|
963
|
+
309,
|
|
964
|
+
"import_openclaw_fixture_test",
|
|
965
|
+
"Pattern match failed, no pattern matched the value.",
|
|
966
|
+
{
|
|
967
|
+
value: $3,
|
|
968
|
+
start: 11779,
|
|
969
|
+
end: 11847,
|
|
970
|
+
pattern_start: 11790,
|
|
971
|
+
pattern_end: 11795
|
|
972
|
+
}
|
|
973
|
+
)
|
|
974
|
+
}
|
|
975
|
+
let $4 = $simplifile.read(output_dir + "/providers/openclaw/metadata.yaml");
|
|
976
|
+
if (!($4 instanceof Ok)) {
|
|
977
|
+
throw makeError(
|
|
978
|
+
"let_assert",
|
|
979
|
+
FILEPATH,
|
|
980
|
+
"importer_test",
|
|
981
|
+
310,
|
|
982
|
+
"import_openclaw_fixture_test",
|
|
983
|
+
"Pattern match failed, no pattern matched the value.",
|
|
984
|
+
{
|
|
985
|
+
value: $4,
|
|
986
|
+
start: 11850,
|
|
987
|
+
end: 11939,
|
|
988
|
+
pattern_start: 11861,
|
|
989
|
+
pattern_end: 11866
|
|
990
|
+
}
|
|
991
|
+
)
|
|
992
|
+
}
|
|
993
|
+
let $5 = $simplifile.delete$(output_dir);
|
|
994
|
+
|
|
995
|
+
return undefined;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
export function import_claude_code_fixture_test() {
|
|
999
|
+
let output_dir = "/tmp/skillc-test-import-cc";
|
|
1000
|
+
let $ = $simplifile.delete$(output_dir);
|
|
1001
|
+
|
|
1002
|
+
let $1 = $importer.import_skill(
|
|
1003
|
+
"test/fixtures/import-claude-code",
|
|
1004
|
+
new None(),
|
|
1005
|
+
output_dir,
|
|
1006
|
+
);
|
|
1007
|
+
let result;
|
|
1008
|
+
if ($1 instanceof Ok) {
|
|
1009
|
+
result = $1[0];
|
|
1010
|
+
} else {
|
|
1011
|
+
throw makeError(
|
|
1012
|
+
"let_assert",
|
|
1013
|
+
FILEPATH,
|
|
1014
|
+
"importer_test",
|
|
1015
|
+
321,
|
|
1016
|
+
"import_claude_code_fixture_test",
|
|
1017
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1018
|
+
{
|
|
1019
|
+
value: $1,
|
|
1020
|
+
start: 12124,
|
|
1021
|
+
end: 12252,
|
|
1022
|
+
pattern_start: 12135,
|
|
1023
|
+
pattern_end: 12145
|
|
1024
|
+
}
|
|
1025
|
+
)
|
|
1026
|
+
}
|
|
1027
|
+
$should.equal(result.provider, new $types.ClaudeCode());
|
|
1028
|
+
$should.be_true(
|
|
1029
|
+
$string.contains(result.skill_yaml, "name: my-imported-skill"),
|
|
1030
|
+
);
|
|
1031
|
+
$should.be_true(
|
|
1032
|
+
$string.contains(result.instructions_md, "# my-imported-skill"),
|
|
1033
|
+
);
|
|
1034
|
+
$should.be_true($string.contains(result.metadata_yaml, "user-invocable"));
|
|
1035
|
+
$should.be_true($string.contains(result.metadata_yaml, "allowed-tools"));
|
|
1036
|
+
let $2 = $simplifile.read(output_dir + "/providers/claude-code/metadata.yaml");
|
|
1037
|
+
if (!($2 instanceof Ok)) {
|
|
1038
|
+
throw makeError(
|
|
1039
|
+
"let_assert",
|
|
1040
|
+
FILEPATH,
|
|
1041
|
+
"importer_test",
|
|
1042
|
+
334,
|
|
1043
|
+
"import_claude_code_fixture_test",
|
|
1044
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1045
|
+
{
|
|
1046
|
+
value: $2,
|
|
1047
|
+
start: 12615,
|
|
1048
|
+
end: 12707,
|
|
1049
|
+
pattern_start: 12626,
|
|
1050
|
+
pattern_end: 12631
|
|
1051
|
+
}
|
|
1052
|
+
)
|
|
1053
|
+
}
|
|
1054
|
+
let $3 = $simplifile.delete$(output_dir);
|
|
1055
|
+
|
|
1056
|
+
return undefined;
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
export function import_codex_fixture_test() {
|
|
1060
|
+
let output_dir = "/tmp/skillc-test-import-cdx";
|
|
1061
|
+
let $ = $simplifile.delete$(output_dir);
|
|
1062
|
+
|
|
1063
|
+
let $1 = $importer.import_skill(
|
|
1064
|
+
"test/fixtures/import-codex",
|
|
1065
|
+
new None(),
|
|
1066
|
+
output_dir,
|
|
1067
|
+
);
|
|
1068
|
+
let result;
|
|
1069
|
+
if ($1 instanceof Ok) {
|
|
1070
|
+
result = $1[0];
|
|
1071
|
+
} else {
|
|
1072
|
+
throw makeError(
|
|
1073
|
+
"let_assert",
|
|
1074
|
+
FILEPATH,
|
|
1075
|
+
"importer_test",
|
|
1076
|
+
345,
|
|
1077
|
+
"import_codex_fixture_test",
|
|
1078
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1079
|
+
{
|
|
1080
|
+
value: $1,
|
|
1081
|
+
start: 12887,
|
|
1082
|
+
end: 13009,
|
|
1083
|
+
pattern_start: 12898,
|
|
1084
|
+
pattern_end: 12908
|
|
1085
|
+
}
|
|
1086
|
+
)
|
|
1087
|
+
}
|
|
1088
|
+
$should.equal(result.provider, new $types.Codex());
|
|
1089
|
+
$should.be_true(
|
|
1090
|
+
$string.contains(result.skill_yaml, "name: my-imported-skill"),
|
|
1091
|
+
);
|
|
1092
|
+
$should.be_true(
|
|
1093
|
+
$string.contains(result.instructions_md, "# my-imported-skill"),
|
|
1094
|
+
);
|
|
1095
|
+
$should.be_true($string.contains(result.metadata_yaml, "interface"));
|
|
1096
|
+
$should.be_true($string.contains(result.metadata_yaml, "display_name"));
|
|
1097
|
+
let $2 = $simplifile.read(output_dir + "/providers/codex/metadata.yaml");
|
|
1098
|
+
if (!($2 instanceof Ok)) {
|
|
1099
|
+
throw makeError(
|
|
1100
|
+
"let_assert",
|
|
1101
|
+
FILEPATH,
|
|
1102
|
+
"importer_test",
|
|
1103
|
+
358,
|
|
1104
|
+
"import_codex_fixture_test",
|
|
1105
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1106
|
+
{
|
|
1107
|
+
value: $2,
|
|
1108
|
+
start: 13361,
|
|
1109
|
+
end: 13447,
|
|
1110
|
+
pattern_start: 13372,
|
|
1111
|
+
pattern_end: 13377
|
|
1112
|
+
}
|
|
1113
|
+
)
|
|
1114
|
+
}
|
|
1115
|
+
let $3 = $simplifile.delete$(output_dir);
|
|
1116
|
+
|
|
1117
|
+
return undefined;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
export function roundtrip_openclaw_test() {
|
|
1121
|
+
let compile_dir = "/tmp/skillc-roundtrip-compile-oc";
|
|
1122
|
+
let import_dir = "/tmp/skillc-roundtrip-import-oc";
|
|
1123
|
+
let $ = $simplifile.delete$(compile_dir);
|
|
1124
|
+
|
|
1125
|
+
let $1 = $simplifile.delete$(import_dir);
|
|
1126
|
+
|
|
1127
|
+
let $2 = $compiler.compile("test/fixtures/valid-skill", "openclaw");
|
|
1128
|
+
let compiled;
|
|
1129
|
+
if ($2 instanceof Ok) {
|
|
1130
|
+
compiled = $2[0];
|
|
1131
|
+
} else {
|
|
1132
|
+
throw makeError(
|
|
1133
|
+
"let_assert",
|
|
1134
|
+
FILEPATH,
|
|
1135
|
+
"importer_test",
|
|
1136
|
+
375,
|
|
1137
|
+
"roundtrip_openclaw_test",
|
|
1138
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1139
|
+
{
|
|
1140
|
+
value: $2,
|
|
1141
|
+
start: 13909,
|
|
1142
|
+
end: 13996,
|
|
1143
|
+
pattern_start: 13920,
|
|
1144
|
+
pattern_end: 13932
|
|
1145
|
+
}
|
|
1146
|
+
)
|
|
1147
|
+
}
|
|
1148
|
+
let $3 = $compiler.emit(compiled, compile_dir, "test-skill");
|
|
1149
|
+
if (!($3 instanceof Ok)) {
|
|
1150
|
+
throw makeError(
|
|
1151
|
+
"let_assert",
|
|
1152
|
+
FILEPATH,
|
|
1153
|
+
"importer_test",
|
|
1154
|
+
377,
|
|
1155
|
+
"roundtrip_openclaw_test",
|
|
1156
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1157
|
+
{
|
|
1158
|
+
value: $3,
|
|
1159
|
+
start: 13999,
|
|
1160
|
+
end: 14068,
|
|
1161
|
+
pattern_start: 14010,
|
|
1162
|
+
pattern_end: 14015
|
|
1163
|
+
}
|
|
1164
|
+
)
|
|
1165
|
+
}
|
|
1166
|
+
let compiled_skill_dir = compile_dir + "/openclaw/test-skill";
|
|
1167
|
+
let $4 = $importer.import_skill(compiled_skill_dir, new None(), import_dir);
|
|
1168
|
+
let result;
|
|
1169
|
+
if ($4 instanceof Ok) {
|
|
1170
|
+
result = $4[0];
|
|
1171
|
+
} else {
|
|
1172
|
+
throw makeError(
|
|
1173
|
+
"let_assert",
|
|
1174
|
+
FILEPATH,
|
|
1175
|
+
"importer_test",
|
|
1176
|
+
380,
|
|
1177
|
+
"roundtrip_openclaw_test",
|
|
1178
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1179
|
+
{
|
|
1180
|
+
value: $4,
|
|
1181
|
+
start: 14137,
|
|
1182
|
+
end: 14224,
|
|
1183
|
+
pattern_start: 14148,
|
|
1184
|
+
pattern_end: 14158
|
|
1185
|
+
}
|
|
1186
|
+
)
|
|
1187
|
+
}
|
|
1188
|
+
$should.equal(result.provider, new $types.OpenClaw());
|
|
1189
|
+
$should.be_true($string.contains(result.skill_yaml, "name: test-skill"));
|
|
1190
|
+
$should.be_true($string.contains(result.skill_yaml, "version: 1.2.3"));
|
|
1191
|
+
$should.be_true($string.contains(result.metadata_yaml, "emoji"));
|
|
1192
|
+
let $5 = $simplifile.delete$(compile_dir);
|
|
1193
|
+
|
|
1194
|
+
let $6 = $simplifile.delete$(import_dir);
|
|
1195
|
+
|
|
1196
|
+
return undefined;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
export function roundtrip_claude_code_test() {
|
|
1200
|
+
let compile_dir = "/tmp/skillc-roundtrip-compile-cc";
|
|
1201
|
+
let import_dir = "/tmp/skillc-roundtrip-import-cc";
|
|
1202
|
+
let $ = $simplifile.delete$(compile_dir);
|
|
1203
|
+
|
|
1204
|
+
let $1 = $simplifile.delete$(import_dir);
|
|
1205
|
+
|
|
1206
|
+
let $2 = $compiler.compile("test/fixtures/valid-skill", "claude-code");
|
|
1207
|
+
let compiled;
|
|
1208
|
+
if ($2 instanceof Ok) {
|
|
1209
|
+
compiled = $2[0];
|
|
1210
|
+
} else {
|
|
1211
|
+
throw makeError(
|
|
1212
|
+
"let_assert",
|
|
1213
|
+
FILEPATH,
|
|
1214
|
+
"importer_test",
|
|
1215
|
+
399,
|
|
1216
|
+
"roundtrip_claude_code_test",
|
|
1217
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1218
|
+
{
|
|
1219
|
+
value: $2,
|
|
1220
|
+
start: 14804,
|
|
1221
|
+
end: 14894,
|
|
1222
|
+
pattern_start: 14815,
|
|
1223
|
+
pattern_end: 14827
|
|
1224
|
+
}
|
|
1225
|
+
)
|
|
1226
|
+
}
|
|
1227
|
+
let $3 = $compiler.emit(compiled, compile_dir, "test-skill");
|
|
1228
|
+
if (!($3 instanceof Ok)) {
|
|
1229
|
+
throw makeError(
|
|
1230
|
+
"let_assert",
|
|
1231
|
+
FILEPATH,
|
|
1232
|
+
"importer_test",
|
|
1233
|
+
401,
|
|
1234
|
+
"roundtrip_claude_code_test",
|
|
1235
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1236
|
+
{
|
|
1237
|
+
value: $3,
|
|
1238
|
+
start: 14897,
|
|
1239
|
+
end: 14966,
|
|
1240
|
+
pattern_start: 14908,
|
|
1241
|
+
pattern_end: 14913
|
|
1242
|
+
}
|
|
1243
|
+
)
|
|
1244
|
+
}
|
|
1245
|
+
let compiled_skill_dir = compile_dir + "/claude-code/test-skill";
|
|
1246
|
+
let $4 = $importer.import_skill(compiled_skill_dir, new None(), import_dir);
|
|
1247
|
+
let result;
|
|
1248
|
+
if ($4 instanceof Ok) {
|
|
1249
|
+
result = $4[0];
|
|
1250
|
+
} else {
|
|
1251
|
+
throw makeError(
|
|
1252
|
+
"let_assert",
|
|
1253
|
+
FILEPATH,
|
|
1254
|
+
"importer_test",
|
|
1255
|
+
404,
|
|
1256
|
+
"roundtrip_claude_code_test",
|
|
1257
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1258
|
+
{
|
|
1259
|
+
value: $4,
|
|
1260
|
+
start: 15038,
|
|
1261
|
+
end: 15125,
|
|
1262
|
+
pattern_start: 15049,
|
|
1263
|
+
pattern_end: 15059
|
|
1264
|
+
}
|
|
1265
|
+
)
|
|
1266
|
+
}
|
|
1267
|
+
$should.equal(result.provider, new $types.ClaudeCode());
|
|
1268
|
+
$should.be_true($string.contains(result.skill_yaml, "name: test-skill"));
|
|
1269
|
+
$should.be_true($string.contains(result.skill_yaml, "version: 1.2.3"));
|
|
1270
|
+
$should.be_true($string.contains(result.metadata_yaml, "user-invocable"));
|
|
1271
|
+
let $5 = $simplifile.delete$(compile_dir);
|
|
1272
|
+
|
|
1273
|
+
let $6 = $simplifile.delete$(import_dir);
|
|
1274
|
+
|
|
1275
|
+
return undefined;
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
export function roundtrip_codex_test() {
|
|
1279
|
+
let compile_dir = "/tmp/skillc-roundtrip-compile-cdx";
|
|
1280
|
+
let import_dir = "/tmp/skillc-roundtrip-import-cdx";
|
|
1281
|
+
let $ = $simplifile.delete$(compile_dir);
|
|
1282
|
+
|
|
1283
|
+
let $1 = $simplifile.delete$(import_dir);
|
|
1284
|
+
|
|
1285
|
+
let $2 = $compiler.compile("test/fixtures/valid-skill", "codex");
|
|
1286
|
+
let compiled;
|
|
1287
|
+
if ($2 instanceof Ok) {
|
|
1288
|
+
compiled = $2[0];
|
|
1289
|
+
} else {
|
|
1290
|
+
throw makeError(
|
|
1291
|
+
"let_assert",
|
|
1292
|
+
FILEPATH,
|
|
1293
|
+
"importer_test",
|
|
1294
|
+
423,
|
|
1295
|
+
"roundtrip_codex_test",
|
|
1296
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1297
|
+
{
|
|
1298
|
+
value: $2,
|
|
1299
|
+
start: 15712,
|
|
1300
|
+
end: 15796,
|
|
1301
|
+
pattern_start: 15723,
|
|
1302
|
+
pattern_end: 15735
|
|
1303
|
+
}
|
|
1304
|
+
)
|
|
1305
|
+
}
|
|
1306
|
+
let $3 = $compiler.emit(compiled, compile_dir, "test-skill");
|
|
1307
|
+
if (!($3 instanceof Ok)) {
|
|
1308
|
+
throw makeError(
|
|
1309
|
+
"let_assert",
|
|
1310
|
+
FILEPATH,
|
|
1311
|
+
"importer_test",
|
|
1312
|
+
425,
|
|
1313
|
+
"roundtrip_codex_test",
|
|
1314
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1315
|
+
{
|
|
1316
|
+
value: $3,
|
|
1317
|
+
start: 15799,
|
|
1318
|
+
end: 15868,
|
|
1319
|
+
pattern_start: 15810,
|
|
1320
|
+
pattern_end: 15815
|
|
1321
|
+
}
|
|
1322
|
+
)
|
|
1323
|
+
}
|
|
1324
|
+
let compiled_skill_dir = compile_dir + "/codex/.agents/skills/test-skill";
|
|
1325
|
+
let $4 = $importer.import_skill(
|
|
1326
|
+
compiled_skill_dir,
|
|
1327
|
+
new Some(new $types.Codex()),
|
|
1328
|
+
import_dir,
|
|
1329
|
+
);
|
|
1330
|
+
let result;
|
|
1331
|
+
if ($4 instanceof Ok) {
|
|
1332
|
+
result = $4[0];
|
|
1333
|
+
} else {
|
|
1334
|
+
throw makeError(
|
|
1335
|
+
"let_assert",
|
|
1336
|
+
FILEPATH,
|
|
1337
|
+
"importer_test",
|
|
1338
|
+
429,
|
|
1339
|
+
"roundtrip_codex_test",
|
|
1340
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1341
|
+
{
|
|
1342
|
+
value: $4,
|
|
1343
|
+
start: 15953,
|
|
1344
|
+
end: 16053,
|
|
1345
|
+
pattern_start: 15964,
|
|
1346
|
+
pattern_end: 15974
|
|
1347
|
+
}
|
|
1348
|
+
)
|
|
1349
|
+
}
|
|
1350
|
+
$should.equal(result.provider, new $types.Codex());
|
|
1351
|
+
$should.be_true($string.contains(result.skill_yaml, "name: test-skill"));
|
|
1352
|
+
$should.be_true($string.contains(result.skill_yaml, "version: 1.2.3"));
|
|
1353
|
+
let $5 = $simplifile.delete$(compile_dir);
|
|
1354
|
+
|
|
1355
|
+
let $6 = $simplifile.delete$(import_dir);
|
|
1356
|
+
|
|
1357
|
+
return undefined;
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
export function import_nonexistent_path_fails_test() {
|
|
1361
|
+
let result = $importer.import_skill(
|
|
1362
|
+
"/tmp/nonexistent-import-xyz",
|
|
1363
|
+
new None(),
|
|
1364
|
+
"/tmp/out",
|
|
1365
|
+
);
|
|
1366
|
+
return $should.be_error(result);
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
export function import_no_skill_md_fails_test() {
|
|
1370
|
+
let dir = "/tmp/skillc-test-no-skill-md";
|
|
1371
|
+
let $ = $simplifile.delete$(dir);
|
|
1372
|
+
|
|
1373
|
+
let $1 = $simplifile.create_directory_all(dir);
|
|
1374
|
+
|
|
1375
|
+
let result = $importer.import_skill(dir, new None(), "/tmp/out");
|
|
1376
|
+
$should.be_error(result);
|
|
1377
|
+
let $2 = $simplifile.delete$(dir);
|
|
1378
|
+
|
|
1379
|
+
return undefined;
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
export function import_invalid_frontmatter_fails_test() {
|
|
1383
|
+
let dir = "/tmp/skillc-test-invalid-fm";
|
|
1384
|
+
let $ = $simplifile.delete$(dir);
|
|
1385
|
+
|
|
1386
|
+
let $1 = $simplifile.create_directory_all(dir);
|
|
1387
|
+
|
|
1388
|
+
let $2 = $simplifile.write(dir + "/SKILL.md", "No frontmatter here.");
|
|
1389
|
+
|
|
1390
|
+
let result = $importer.import_skill(dir, new None(), "/tmp/out");
|
|
1391
|
+
$should.be_error(result);
|
|
1392
|
+
let $3 = $simplifile.delete$(dir);
|
|
1393
|
+
|
|
1394
|
+
return undefined;
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
export function import_output_dir_already_has_skill_yaml_fails_test() {
|
|
1398
|
+
let output_dir = "/tmp/skillc-test-existing-skill";
|
|
1399
|
+
let $ = $simplifile.delete$(output_dir);
|
|
1400
|
+
|
|
1401
|
+
let $1 = $simplifile.create_directory_all(output_dir);
|
|
1402
|
+
|
|
1403
|
+
let $2 = $simplifile.write(output_dir + "/skill.yaml", "name: existing\n");
|
|
1404
|
+
|
|
1405
|
+
let result = $importer.import_skill(
|
|
1406
|
+
"test/fixtures/import-openclaw",
|
|
1407
|
+
new None(),
|
|
1408
|
+
output_dir,
|
|
1409
|
+
);
|
|
1410
|
+
$should.be_error(result);
|
|
1411
|
+
let msg;
|
|
1412
|
+
if (result instanceof Error) {
|
|
1413
|
+
let $3 = result[0];
|
|
1414
|
+
if ($3 instanceof $error.ImportError) {
|
|
1415
|
+
msg = $3.message;
|
|
1416
|
+
} else {
|
|
1417
|
+
throw makeError(
|
|
1418
|
+
"let_assert",
|
|
1419
|
+
FILEPATH,
|
|
1420
|
+
"importer_test",
|
|
1421
|
+
493,
|
|
1422
|
+
"import_output_dir_already_has_skill_yaml_fails_test",
|
|
1423
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1424
|
+
{
|
|
1425
|
+
value: result,
|
|
1426
|
+
start: 17803,
|
|
1427
|
+
end: 17855,
|
|
1428
|
+
pattern_start: 17814,
|
|
1429
|
+
pattern_end: 17846
|
|
1430
|
+
}
|
|
1431
|
+
)
|
|
1432
|
+
}
|
|
1433
|
+
} else {
|
|
1434
|
+
throw makeError(
|
|
1435
|
+
"let_assert",
|
|
1436
|
+
FILEPATH,
|
|
1437
|
+
"importer_test",
|
|
1438
|
+
493,
|
|
1439
|
+
"import_output_dir_already_has_skill_yaml_fails_test",
|
|
1440
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1441
|
+
{
|
|
1442
|
+
value: result,
|
|
1443
|
+
start: 17803,
|
|
1444
|
+
end: 17855,
|
|
1445
|
+
pattern_start: 17814,
|
|
1446
|
+
pattern_end: 17846
|
|
1447
|
+
}
|
|
1448
|
+
)
|
|
1449
|
+
}
|
|
1450
|
+
$should.be_true($string.contains(msg, "already exists"));
|
|
1451
|
+
let $4 = $simplifile.delete$(output_dir);
|
|
1452
|
+
|
|
1453
|
+
return undefined;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
export function import_with_provider_hint_test() {
|
|
1457
|
+
let output_dir = "/tmp/skillc-test-import-hint";
|
|
1458
|
+
let $ = $simplifile.delete$(output_dir);
|
|
1459
|
+
|
|
1460
|
+
let $1 = $importer.import_skill(
|
|
1461
|
+
"test/fixtures/import-codex",
|
|
1462
|
+
new Some(new $types.Codex()),
|
|
1463
|
+
output_dir,
|
|
1464
|
+
);
|
|
1465
|
+
let result;
|
|
1466
|
+
if ($1 instanceof Ok) {
|
|
1467
|
+
result = $1[0];
|
|
1468
|
+
} else {
|
|
1469
|
+
throw makeError(
|
|
1470
|
+
"let_assert",
|
|
1471
|
+
FILEPATH,
|
|
1472
|
+
"importer_test",
|
|
1473
|
+
504,
|
|
1474
|
+
"import_with_provider_hint_test",
|
|
1475
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1476
|
+
{
|
|
1477
|
+
value: $1,
|
|
1478
|
+
start: 18098,
|
|
1479
|
+
end: 18233,
|
|
1480
|
+
pattern_start: 18109,
|
|
1481
|
+
pattern_end: 18119
|
|
1482
|
+
}
|
|
1483
|
+
)
|
|
1484
|
+
}
|
|
1485
|
+
$should.equal(result.provider, new $types.Codex());
|
|
1486
|
+
let $2 = $simplifile.delete$(output_dir);
|
|
1487
|
+
|
|
1488
|
+
return undefined;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
export function import_missing_name_field_fails_test() {
|
|
1492
|
+
let dir = "/tmp/skillc-test-missing-name-field";
|
|
1493
|
+
let $ = $simplifile.delete$(dir);
|
|
1494
|
+
|
|
1495
|
+
let $1 = $simplifile.create_directory_all(dir);
|
|
1496
|
+
|
|
1497
|
+
let $2 = $simplifile.write(
|
|
1498
|
+
dir + "/SKILL.md",
|
|
1499
|
+
"---\ndescription: \"A test\"\nversion: 1.0.0\n---\n\nBody.",
|
|
1500
|
+
);
|
|
1501
|
+
|
|
1502
|
+
let result = $importer.import_skill(
|
|
1503
|
+
dir,
|
|
1504
|
+
new Some(new $types.Codex()),
|
|
1505
|
+
"/tmp/out",
|
|
1506
|
+
);
|
|
1507
|
+
$should.be_error(result);
|
|
1508
|
+
if (result instanceof Error) {
|
|
1509
|
+
let $3 = result[0];
|
|
1510
|
+
if ($3 instanceof $error.ImportError) {
|
|
1511
|
+
let $4 = $3.source;
|
|
1512
|
+
if (!($4 === "name")) {
|
|
1513
|
+
throw makeError(
|
|
1514
|
+
"let_assert",
|
|
1515
|
+
FILEPATH,
|
|
1516
|
+
"importer_test",
|
|
1517
|
+
528,
|
|
1518
|
+
"import_missing_name_field_fails_test",
|
|
1519
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1520
|
+
{
|
|
1521
|
+
value: result,
|
|
1522
|
+
start: 18741,
|
|
1523
|
+
end: 18796,
|
|
1524
|
+
pattern_start: 18752,
|
|
1525
|
+
pattern_end: 18787
|
|
1526
|
+
}
|
|
1527
|
+
)
|
|
1528
|
+
}
|
|
1529
|
+
} else {
|
|
1530
|
+
throw makeError(
|
|
1531
|
+
"let_assert",
|
|
1532
|
+
FILEPATH,
|
|
1533
|
+
"importer_test",
|
|
1534
|
+
528,
|
|
1535
|
+
"import_missing_name_field_fails_test",
|
|
1536
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1537
|
+
{
|
|
1538
|
+
value: result,
|
|
1539
|
+
start: 18741,
|
|
1540
|
+
end: 18796,
|
|
1541
|
+
pattern_start: 18752,
|
|
1542
|
+
pattern_end: 18787
|
|
1543
|
+
}
|
|
1544
|
+
)
|
|
1545
|
+
}
|
|
1546
|
+
} else {
|
|
1547
|
+
throw makeError(
|
|
1548
|
+
"let_assert",
|
|
1549
|
+
FILEPATH,
|
|
1550
|
+
"importer_test",
|
|
1551
|
+
528,
|
|
1552
|
+
"import_missing_name_field_fails_test",
|
|
1553
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1554
|
+
{
|
|
1555
|
+
value: result,
|
|
1556
|
+
start: 18741,
|
|
1557
|
+
end: 18796,
|
|
1558
|
+
pattern_start: 18752,
|
|
1559
|
+
pattern_end: 18787
|
|
1560
|
+
}
|
|
1561
|
+
)
|
|
1562
|
+
}
|
|
1563
|
+
let $5 = $simplifile.delete$(dir);
|
|
1564
|
+
|
|
1565
|
+
return undefined;
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
export function import_invalid_version_fails_test() {
|
|
1569
|
+
let dir = "/tmp/skillc-test-invalid-version";
|
|
1570
|
+
let $ = $simplifile.delete$(dir);
|
|
1571
|
+
|
|
1572
|
+
let $1 = $simplifile.create_directory_all(dir);
|
|
1573
|
+
|
|
1574
|
+
let $2 = $simplifile.write(
|
|
1575
|
+
dir + "/SKILL.md",
|
|
1576
|
+
"---\nname: test\ndescription: \"A test\"\nversion: not-a-version\n---\n\nBody.",
|
|
1577
|
+
);
|
|
1578
|
+
|
|
1579
|
+
let result = $importer.import_skill(
|
|
1580
|
+
dir,
|
|
1581
|
+
new Some(new $types.Codex()),
|
|
1582
|
+
"/tmp/out",
|
|
1583
|
+
);
|
|
1584
|
+
$should.be_error(result);
|
|
1585
|
+
if (result instanceof Error) {
|
|
1586
|
+
let $3 = result[0];
|
|
1587
|
+
if ($3 instanceof $error.ImportError) {
|
|
1588
|
+
let $4 = $3.source;
|
|
1589
|
+
if (!($4 === "version")) {
|
|
1590
|
+
throw makeError(
|
|
1591
|
+
"let_assert",
|
|
1592
|
+
FILEPATH,
|
|
1593
|
+
"importer_test",
|
|
1594
|
+
546,
|
|
1595
|
+
"import_invalid_version_fails_test",
|
|
1596
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1597
|
+
{
|
|
1598
|
+
value: result,
|
|
1599
|
+
start: 19266,
|
|
1600
|
+
end: 19324,
|
|
1601
|
+
pattern_start: 19277,
|
|
1602
|
+
pattern_end: 19315
|
|
1603
|
+
}
|
|
1604
|
+
)
|
|
1605
|
+
}
|
|
1606
|
+
} else {
|
|
1607
|
+
throw makeError(
|
|
1608
|
+
"let_assert",
|
|
1609
|
+
FILEPATH,
|
|
1610
|
+
"importer_test",
|
|
1611
|
+
546,
|
|
1612
|
+
"import_invalid_version_fails_test",
|
|
1613
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1614
|
+
{
|
|
1615
|
+
value: result,
|
|
1616
|
+
start: 19266,
|
|
1617
|
+
end: 19324,
|
|
1618
|
+
pattern_start: 19277,
|
|
1619
|
+
pattern_end: 19315
|
|
1620
|
+
}
|
|
1621
|
+
)
|
|
1622
|
+
}
|
|
1623
|
+
} else {
|
|
1624
|
+
throw makeError(
|
|
1625
|
+
"let_assert",
|
|
1626
|
+
FILEPATH,
|
|
1627
|
+
"importer_test",
|
|
1628
|
+
546,
|
|
1629
|
+
"import_invalid_version_fails_test",
|
|
1630
|
+
"Pattern match failed, no pattern matched the value.",
|
|
1631
|
+
{
|
|
1632
|
+
value: result,
|
|
1633
|
+
start: 19266,
|
|
1634
|
+
end: 19324,
|
|
1635
|
+
pattern_start: 19277,
|
|
1636
|
+
pattern_end: 19315
|
|
1637
|
+
}
|
|
1638
|
+
)
|
|
1639
|
+
}
|
|
1640
|
+
let $5 = $simplifile.delete$(dir);
|
|
1641
|
+
|
|
1642
|
+
return undefined;
|
|
1643
|
+
}
|