@psnext/slingcli 3.0.20260827-1 → 3.1.20260904-1
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/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-cjs/index.js +11 -4
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +1 -0
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +2 -3
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +8 -1
- package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +2 -0
- package/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js +2 -0
- package/node_modules/@aws-sdk/credential-provider-node/package.json +1 -1
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-cjs/index.js +11 -4
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +1 -0
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +2 -3
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +8 -1
- package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/package.json +2 -2
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +2 -1
- package/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js +2 -1
- package/node_modules/@smithy/fetch-http-handler/package.json +3 -3
- package/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +14 -0
- package/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +14 -0
- package/node_modules/@smithy/types/package.json +1 -1
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/ffi.d.ts +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/express-rate-limit/dist/index.cjs +6 -3
- package/node_modules/express-rate-limit/dist/index.d.cts +11 -0
- package/node_modules/express-rate-limit/dist/index.d.mts +11 -0
- package/node_modules/express-rate-limit/dist/index.d.ts +11 -0
- package/node_modules/express-rate-limit/dist/index.mjs +6 -3
- package/node_modules/express-rate-limit/{license.md → license} +7 -6
- package/node_modules/express-rate-limit/package.json +5 -5
- package/node_modules/express-rate-limit/readme.md +1 -0
- package/node_modules/fast-uri/index.js +20 -5
- package/node_modules/fast-uri/lib/utils.js +8 -1
- package/node_modules/fast-uri/package.json +1 -1
- package/node_modules/fast-uri/test/component-safe-serialization.test.js +58 -0
- package/node_modules/fast-uri/test/ipv6-validation.test.js +34 -0
- package/node_modules/ip-address/README.md +92 -82
- package/node_modules/ip-address/dist/common.d.ts +20 -0
- package/node_modules/ip-address/dist/common.js +36 -0
- package/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/ip-address/dist/ipv4.d.ts +50 -0
- package/node_modules/ip-address/dist/ipv4.js +75 -0
- package/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/ip-address/dist/ipv6.d.ts +79 -10
- package/node_modules/ip-address/dist/ipv6.js +120 -30
- package/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/ip-address/dist/v4/constants.js +40 -1
- package/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/ip-address/dist/v6/constants.js +47 -1
- package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/ip-address/package.json +1 -1
- package/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +7 -16
- package/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +6 -17
- package/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +7 -16
- package/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +11 -34
- package/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +7 -16
- package/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +15 -35
- package/node_modules/jose/dist/types/jwk/embedded.d.ts +3 -8
- package/node_modules/jose/dist/types/jwk/thumbprint.d.ts +5 -5
- package/node_modules/jose/dist/types/jwks/local.d.ts +6 -10
- package/node_modules/jose/dist/types/jwks/remote.d.ts +13 -24
- package/node_modules/jose/dist/types/jws/compact/sign.d.ts +5 -10
- package/node_modules/jose/dist/types/jws/compact/verify.d.ts +9 -18
- package/node_modules/jose/dist/types/jws/flattened/sign.d.ts +7 -16
- package/node_modules/jose/dist/types/jws/flattened/verify.d.ts +9 -18
- package/node_modules/jose/dist/types/jws/general/sign.d.ts +11 -21
- package/node_modules/jose/dist/types/jws/general/verify.d.ts +9 -18
- package/node_modules/jose/dist/types/jwt/decrypt.d.ts +10 -20
- package/node_modules/jose/dist/types/jwt/encrypt.d.ts +6 -13
- package/node_modules/jose/dist/types/jwt/sign.d.ts +5 -6
- package/node_modules/jose/dist/types/jwt/unsecured.d.ts +9 -14
- package/node_modules/jose/dist/types/jwt/verify.d.ts +9 -19
- package/node_modules/jose/dist/types/key/export.d.ts +4 -4
- package/node_modules/jose/dist/types/key/generate_key_pair.d.ts +6 -8
- package/node_modules/jose/dist/types/key/generate_secret.d.ts +4 -11
- package/node_modules/jose/dist/types/key/import.d.ts +10 -17
- package/node_modules/jose/dist/types/types.d.ts +44 -84
- package/node_modules/jose/dist/types/util/base64url.d.ts +2 -2
- package/node_modules/jose/dist/types/util/decode_jwt.d.ts +3 -10
- package/node_modules/jose/dist/types/util/decode_protected_header.d.ts +4 -4
- package/node_modules/jose/dist/types/util/errors.d.ts +26 -53
- package/node_modules/jose/dist/webapi/index.js +70 -32
- package/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +7 -8
- package/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +42 -48
- package/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +14 -14
- package/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +53 -64
- package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +38 -49
- package/node_modules/jose/dist/webapi/jwe/general/encrypt.js +121 -169
- package/node_modules/jose/dist/webapi/jwk/embedded.js +30 -32
- package/node_modules/jose/dist/webapi/jwk/thumbprint.js +54 -70
- package/node_modules/jose/dist/webapi/jwks/local.js +47 -64
- package/node_modules/jose/dist/webapi/jwks/remote.js +88 -136
- package/node_modules/jose/dist/webapi/jws/compact/sign.js +21 -21
- package/node_modules/jose/dist/webapi/jws/compact/verify.js +7 -8
- package/node_modules/jose/dist/webapi/jws/flattened/sign.js +29 -31
- package/node_modules/jose/dist/webapi/jws/flattened/verify.js +21 -24
- package/node_modules/jose/dist/webapi/jws/general/sign.js +61 -72
- package/node_modules/jose/dist/webapi/jws/general/verify.js +45 -69
- package/node_modules/jose/dist/webapi/jwt/decrypt.js +13 -20
- package/node_modules/jose/dist/webapi/jwt/encrypt.js +57 -70
- package/node_modules/jose/dist/webapi/jwt/sign.js +17 -16
- package/node_modules/jose/dist/webapi/jwt/unsecured.js +32 -40
- package/node_modules/jose/dist/webapi/jwt/verify.js +12 -14
- package/node_modules/jose/dist/webapi/key/export.js +32 -37
- package/node_modules/jose/dist/webapi/key/generate_key_pair.js +40 -48
- package/node_modules/jose/dist/webapi/key/generate_secret.js +35 -40
- package/node_modules/jose/dist/webapi/key/import.js +52 -56
- package/node_modules/jose/dist/webapi/lib/asn1.js +130 -169
- package/node_modules/jose/dist/webapi/lib/base64.js +18 -20
- package/node_modules/jose/dist/webapi/lib/buffer_utils.js +34 -38
- package/node_modules/jose/dist/webapi/lib/content_encryption.js +79 -115
- package/node_modules/jose/dist/webapi/lib/crypto_key.js +24 -25
- package/node_modules/jose/dist/webapi/lib/deflate.js +45 -47
- package/node_modules/jose/dist/webapi/lib/helpers.js +40 -37
- package/node_modules/jose/dist/webapi/lib/invalid_key_input.js +10 -24
- package/node_modules/jose/dist/webapi/lib/is_key_like.js +17 -15
- package/node_modules/jose/dist/webapi/lib/jwe_algorithms.js +106 -93
- package/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +207 -230
- package/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +104 -138
- package/node_modules/jose/dist/webapi/lib/jwk_metadata.js +17 -18
- package/node_modules/jose/dist/webapi/lib/jwk_to_key.js +9 -16
- package/node_modules/jose/dist/webapi/lib/jws_algorithms.js +62 -61
- package/node_modules/jose/dist/webapi/lib/jws_sign.js +50 -75
- package/node_modules/jose/dist/webapi/lib/jws_verify.js +80 -125
- package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +123 -209
- package/node_modules/jose/dist/webapi/lib/key.js +84 -136
- package/node_modules/jose/dist/webapi/lib/key_algorithm.js +13 -8
- package/node_modules/jose/dist/webapi/lib/key_descriptor.js +8 -6
- package/node_modules/jose/dist/webapi/lib/key_management.js +200 -231
- package/node_modules/jose/dist/webapi/lib/key_options.js +7 -5
- package/node_modules/jose/dist/webapi/lib/options.js +55 -68
- package/node_modules/jose/dist/webapi/lib/signing.js +18 -22
- package/node_modules/jose/dist/webapi/lib/type_checks.js +26 -29
- package/node_modules/jose/dist/webapi/util/base64url.js +26 -35
- package/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -31
- package/node_modules/jose/dist/webapi/util/decode_protected_header.js +18 -23
- package/node_modules/jose/dist/webapi/util/errors.js +94 -84
- package/node_modules/jose/package.json +17 -81
- package/node_modules/protobufjs/dist/light/protobuf.js +59 -6
- package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
- package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
- package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
- package/node_modules/protobufjs/dist/minimal/protobuf.js +22 -2
- package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
- package/node_modules/protobufjs/dist/protobuf.js +59 -6
- package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
- package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
- package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
- package/node_modules/protobufjs/package.json +1 -1
- package/node_modules/protobufjs/src/decoder.js +32 -3
- package/node_modules/protobufjs/src/reader.js +20 -0
- package/node_modules/protobufjs/src/wrappers.js +5 -1
- package/node_modules/qs/.github/THREAT_MODEL.md +3 -3
- package/node_modules/qs/CHANGELOG.md +15 -0
- package/node_modules/qs/README.md +19 -1
- package/node_modules/qs/dist/qs.js +21 -21
- package/node_modules/qs/eslint.config.mjs +1 -1
- package/node_modules/qs/lib/parse.js +3 -4
- package/node_modules/qs/lib/stringify.js +23 -8
- package/node_modules/qs/lib/utils.js +10 -3
- package/node_modules/qs/package.json +4 -4
- package/node_modules/qs/test/parse.js +192 -3
- package/node_modules/qs/test/stringify.js +317 -0
- package/node_modules/qs/test/utils.js +12 -0
- package/node_modules/zod/README.md +27 -0
- package/node_modules/zod/compile.cjs +77 -0
- package/node_modules/zod/compile.d.cts +1 -0
- package/node_modules/zod/compile.d.ts +1 -0
- package/node_modules/zod/compile.js +52 -0
- package/node_modules/zod/index.cjs +2 -2
- package/node_modules/zod/index.d.cts +1 -2
- package/node_modules/zod/index.d.ts +1 -2
- package/node_modules/zod/index.js +5 -2
- package/node_modules/zod/package.json +13 -2
- package/node_modules/zod/src/compile.ts +56 -0
- package/node_modules/zod/src/index.ts +5 -2
- package/node_modules/zod/src/v3/ZodError.ts +22 -12
- package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
- package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
- package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
- package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
- package/node_modules/zod/src/v3/types.ts +5 -5
- package/node_modules/zod/src/v4/classic/checks.ts +1 -0
- package/node_modules/zod/src/v4/classic/compat.ts +26 -18
- package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
- package/node_modules/zod/src/v4/classic/errors.ts +59 -44
- package/node_modules/zod/src/v4/classic/external.ts +12 -9
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
- package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
- package/node_modules/zod/src/v4/classic/index.ts +2 -2
- package/node_modules/zod/src/v4/classic/iso.ts +2 -72
- package/node_modules/zod/src/v4/classic/parse.ts +10 -4
- package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
- package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
- package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
- package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
- package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
- package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
- package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
- package/node_modules/zod/src/v4/core/api.ts +48 -12
- package/node_modules/zod/src/v4/core/checks.ts +57 -44
- package/node_modules/zod/src/v4/core/compile.ts +2188 -0
- package/node_modules/zod/src/v4/core/core.ts +98 -19
- package/node_modules/zod/src/v4/core/doc.ts +11 -7
- package/node_modules/zod/src/v4/core/errors.ts +115 -24
- package/node_modules/zod/src/v4/core/index.ts +3 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
- package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
- package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
- package/node_modules/zod/src/v4/core/parse.ts +131 -38
- package/node_modules/zod/src/v4/core/regexes.ts +30 -13
- package/node_modules/zod/src/v4/core/registries.ts +2 -2
- package/node_modules/zod/src/v4/core/schemas.ts +759 -461
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
- package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
- package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
- package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
- package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
- package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
- package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
- package/node_modules/zod/src/v4/core/util.ts +268 -42
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/core/visit.ts +193 -0
- package/node_modules/zod/src/v4/index.ts +3 -3
- package/node_modules/zod/src/v4/locales/ar.ts +3 -0
- package/node_modules/zod/src/v4/locales/az.ts +3 -0
- package/node_modules/zod/src/v4/locales/be.ts +10 -0
- package/node_modules/zod/src/v4/locales/bg.ts +3 -0
- package/node_modules/zod/src/v4/locales/bn.ts +121 -0
- package/node_modules/zod/src/v4/locales/ca.ts +3 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
- package/node_modules/zod/src/v4/locales/cs.ts +3 -0
- package/node_modules/zod/src/v4/locales/da.ts +5 -2
- package/node_modules/zod/src/v4/locales/de.ts +3 -0
- package/node_modules/zod/src/v4/locales/el.ts +1 -0
- package/node_modules/zod/src/v4/locales/en.ts +15 -4
- package/node_modules/zod/src/v4/locales/eo.ts +3 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +3 -0
- package/node_modules/zod/src/v4/locales/fi.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
- package/node_modules/zod/src/v4/locales/fr.ts +19 -14
- package/node_modules/zod/src/v4/locales/gu.ts +121 -0
- package/node_modules/zod/src/v4/locales/he.ts +6 -1
- package/node_modules/zod/src/v4/locales/hi.ts +124 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +3 -0
- package/node_modules/zod/src/v4/locales/hy.ts +9 -0
- package/node_modules/zod/src/v4/locales/id.ts +3 -0
- package/node_modules/zod/src/v4/locales/index.ts +10 -0
- package/node_modules/zod/src/v4/locales/is.ts +3 -0
- package/node_modules/zod/src/v4/locales/it.ts +3 -0
- package/node_modules/zod/src/v4/locales/ja.ts +3 -0
- package/node_modules/zod/src/v4/locales/ka.ts +3 -0
- package/node_modules/zod/src/v4/locales/km.ts +3 -0
- package/node_modules/zod/src/v4/locales/kn.ts +124 -0
- package/node_modules/zod/src/v4/locales/ko.ts +3 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ms.ts +3 -0
- package/node_modules/zod/src/v4/locales/ne.ts +126 -0
- package/node_modules/zod/src/v4/locales/nl.ts +3 -0
- package/node_modules/zod/src/v4/locales/nn.ts +119 -0
- package/node_modules/zod/src/v4/locales/no.ts +5 -2
- package/node_modules/zod/src/v4/locales/ota.ts +3 -0
- package/node_modules/zod/src/v4/locales/pl.ts +3 -0
- package/node_modules/zod/src/v4/locales/ps.ts +3 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
- package/node_modules/zod/src/v4/locales/pt.ts +99 -58
- package/node_modules/zod/src/v4/locales/ro.ts +1 -0
- package/node_modules/zod/src/v4/locales/ru.ts +10 -0
- package/node_modules/zod/src/v4/locales/sk.ts +121 -0
- package/node_modules/zod/src/v4/locales/sl.ts +3 -0
- package/node_modules/zod/src/v4/locales/sv.ts +5 -2
- package/node_modules/zod/src/v4/locales/ta.ts +3 -0
- package/node_modules/zod/src/v4/locales/th.ts +3 -0
- package/node_modules/zod/src/v4/locales/tk.ts +111 -0
- package/node_modules/zod/src/v4/locales/tr.ts +3 -0
- package/node_modules/zod/src/v4/locales/uk.ts +3 -0
- package/node_modules/zod/src/v4/locales/ur.ts +3 -0
- package/node_modules/zod/src/v4/locales/uz.ts +1 -0
- package/node_modules/zod/src/v4/locales/vi.ts +3 -0
- package/node_modules/zod/src/v4/locales/yo.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
- package/node_modules/zod/src/v4/mini/checks.ts +1 -0
- package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
- package/node_modules/zod/src/v4/mini/external.ts +10 -1
- package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
- package/node_modules/zod/src/v4/mini/parse.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
- package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
- package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
- package/node_modules/zod/v3/ZodError.cjs +22 -12
- package/node_modules/zod/v3/ZodError.d.cts +1 -1
- package/node_modules/zod/v3/ZodError.d.ts +1 -1
- package/node_modules/zod/v3/ZodError.js +22 -12
- package/node_modules/zod/v3/types.cjs +7 -5
- package/node_modules/zod/v3/types.js +7 -5
- package/node_modules/zod/v4/classic/checks.cjs +2 -1
- package/node_modules/zod/v4/classic/checks.d.cts +1 -1
- package/node_modules/zod/v4/classic/checks.d.ts +1 -1
- package/node_modules/zod/v4/classic/checks.js +1 -1
- package/node_modules/zod/v4/classic/compat.d.cts +9 -11
- package/node_modules/zod/v4/classic/compat.d.ts +9 -11
- package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.js +13 -0
- package/node_modules/zod/v4/classic/errors.cjs +43 -34
- package/node_modules/zod/v4/classic/errors.d.cts +3 -4
- package/node_modules/zod/v4/classic/errors.d.ts +3 -4
- package/node_modules/zod/v4/classic/errors.js +43 -34
- package/node_modules/zod/v4/classic/external.cjs +30 -27
- package/node_modules/zod/v4/classic/external.d.cts +5 -2
- package/node_modules/zod/v4/classic/external.d.ts +5 -2
- package/node_modules/zod/v4/classic/external.js +5 -8
- package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
- package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
- package/node_modules/zod/v4/classic/in-out.cjs +63 -0
- package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
- package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
- package/node_modules/zod/v4/classic/in-out.js +36 -0
- package/node_modules/zod/v4/classic/index.cjs +2 -2
- package/node_modules/zod/v4/classic/index.d.cts +1 -2
- package/node_modules/zod/v4/classic/index.d.ts +1 -2
- package/node_modules/zod/v4/classic/index.js +2 -2
- package/node_modules/zod/v4/classic/iso.cjs +11 -22
- package/node_modules/zod/v4/classic/iso.d.cts +2 -17
- package/node_modules/zod/v4/classic/iso.d.ts +2 -17
- package/node_modules/zod/v4/classic/iso.js +2 -17
- package/node_modules/zod/v4/classic/parse.cjs +4 -1
- package/node_modules/zod/v4/classic/parse.d.cts +17 -4
- package/node_modules/zod/v4/classic/parse.d.ts +17 -4
- package/node_modules/zod/v4/classic/parse.js +1 -0
- package/node_modules/zod/v4/classic/schemas.cjs +498 -398
- package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
- package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
- package/node_modules/zod/v4/classic/schemas.js +492 -396
- package/node_modules/zod/v4/core/api.cjs +23 -4
- package/node_modules/zod/v4/core/api.d.cts +13 -9
- package/node_modules/zod/v4/core/api.d.ts +13 -9
- package/node_modules/zod/v4/core/api.js +21 -4
- package/node_modules/zod/v4/core/checks.cjs +37 -31
- package/node_modules/zod/v4/core/checks.d.cts +13 -13
- package/node_modules/zod/v4/core/checks.d.ts +13 -13
- package/node_modules/zod/v4/core/checks.js +37 -31
- package/node_modules/zod/v4/core/compile.cjs +1813 -0
- package/node_modules/zod/v4/core/compile.d.cts +51 -0
- package/node_modules/zod/v4/core/compile.d.ts +51 -0
- package/node_modules/zod/v4/core/compile.js +1783 -0
- package/node_modules/zod/v4/core/core.cjs +81 -18
- package/node_modules/zod/v4/core/core.d.cts +16 -4
- package/node_modules/zod/v4/core/core.d.ts +16 -4
- package/node_modules/zod/v4/core/core.js +82 -19
- package/node_modules/zod/v4/core/doc.cjs +5 -7
- package/node_modules/zod/v4/core/doc.d.cts +3 -1
- package/node_modules/zod/v4/core/doc.d.ts +3 -1
- package/node_modules/zod/v4/core/doc.js +5 -7
- package/node_modules/zod/v4/core/errors.cjs +110 -25
- package/node_modules/zod/v4/core/errors.d.cts +4 -0
- package/node_modules/zod/v4/core/errors.d.ts +4 -0
- package/node_modules/zod/v4/core/errors.js +110 -25
- package/node_modules/zod/v4/core/index.cjs +5 -1
- package/node_modules/zod/v4/core/index.d.cts +3 -0
- package/node_modules/zod/v4/core/index.d.ts +3 -0
- package/node_modules/zod/v4/core/index.js +3 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
- package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
- package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
- package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
- package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
- package/node_modules/zod/v4/core/memoizer.cjs +272 -0
- package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
- package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
- package/node_modules/zod/v4/core/memoizer.js +265 -0
- package/node_modules/zod/v4/core/parse.cjs +96 -34
- package/node_modules/zod/v4/core/parse.d.cts +14 -11
- package/node_modules/zod/v4/core/parse.d.ts +14 -11
- package/node_modules/zod/v4/core/parse.js +94 -33
- package/node_modules/zod/v4/core/regexes.cjs +27 -15
- package/node_modules/zod/v4/core/regexes.d.cts +2 -0
- package/node_modules/zod/v4/core/regexes.d.ts +2 -0
- package/node_modules/zod/v4/core/regexes.js +24 -13
- package/node_modules/zod/v4/core/registries.js +2 -2
- package/node_modules/zod/v4/core/schemas.cjs +537 -326
- package/node_modules/zod/v4/core/schemas.d.cts +100 -31
- package/node_modules/zod/v4/core/schemas.d.ts +100 -31
- package/node_modules/zod/v4/core/schemas.js +526 -325
- package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
- package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
- package/node_modules/zod/v4/core/to-json-schema.js +241 -39
- package/node_modules/zod/v4/core/util.cjs +212 -31
- package/node_modules/zod/v4/core/util.d.cts +58 -1
- package/node_modules/zod/v4/core/util.d.ts +58 -1
- package/node_modules/zod/v4/core/util.js +202 -30
- package/node_modules/zod/v4/core/versions.cjs +2 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +195 -0
- package/node_modules/zod/v4/core/visit.d.cts +30 -0
- package/node_modules/zod/v4/core/visit.d.ts +30 -0
- package/node_modules/zod/v4/core/visit.js +169 -0
- package/node_modules/zod/v4/index.cjs +15 -5
- package/node_modules/zod/v4/index.d.cts +2 -2
- package/node_modules/zod/v4/index.d.ts +2 -2
- package/node_modules/zod/v4/index.js +3 -2
- package/node_modules/zod/v4/locales/ar.cjs +3 -0
- package/node_modules/zod/v4/locales/ar.js +3 -0
- package/node_modules/zod/v4/locales/az.cjs +3 -0
- package/node_modules/zod/v4/locales/az.js +3 -0
- package/node_modules/zod/v4/locales/be.cjs +10 -0
- package/node_modules/zod/v4/locales/be.js +10 -0
- package/node_modules/zod/v4/locales/bg.cjs +3 -0
- package/node_modules/zod/v4/locales/bg.js +3 -0
- package/node_modules/zod/v4/locales/bn.cjs +138 -0
- package/node_modules/zod/v4/locales/bn.d.cts +5 -0
- package/node_modules/zod/v4/locales/bn.d.ts +4 -0
- package/node_modules/zod/v4/locales/bn.js +111 -0
- package/node_modules/zod/v4/locales/ca.cjs +3 -0
- package/node_modules/zod/v4/locales/ca.js +3 -0
- package/node_modules/zod/v4/locales/ckb.cjs +158 -0
- package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
- package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
- package/node_modules/zod/v4/locales/ckb.js +131 -0
- package/node_modules/zod/v4/locales/cs.cjs +3 -0
- package/node_modules/zod/v4/locales/cs.js +3 -0
- package/node_modules/zod/v4/locales/da.cjs +5 -2
- package/node_modules/zod/v4/locales/da.js +5 -2
- package/node_modules/zod/v4/locales/de.cjs +3 -0
- package/node_modules/zod/v4/locales/de.js +3 -0
- package/node_modules/zod/v4/locales/el.cjs +1 -0
- package/node_modules/zod/v4/locales/el.js +1 -0
- package/node_modules/zod/v4/locales/en.cjs +14 -4
- package/node_modules/zod/v4/locales/en.js +14 -4
- package/node_modules/zod/v4/locales/eo.cjs +3 -0
- package/node_modules/zod/v4/locales/eo.js +3 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +3 -0
- package/node_modules/zod/v4/locales/fa.js +3 -0
- package/node_modules/zod/v4/locales/fi.cjs +3 -0
- package/node_modules/zod/v4/locales/fi.js +3 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
- package/node_modules/zod/v4/locales/fr-CA.js +3 -0
- package/node_modules/zod/v4/locales/fr.cjs +16 -14
- package/node_modules/zod/v4/locales/fr.js +16 -14
- package/node_modules/zod/v4/locales/gu.cjs +138 -0
- package/node_modules/zod/v4/locales/gu.d.cts +5 -0
- package/node_modules/zod/v4/locales/gu.d.ts +4 -0
- package/node_modules/zod/v4/locales/gu.js +111 -0
- package/node_modules/zod/v4/locales/he.cjs +5 -0
- package/node_modules/zod/v4/locales/he.js +5 -0
- package/node_modules/zod/v4/locales/hi.cjs +136 -0
- package/node_modules/zod/v4/locales/hi.d.cts +5 -0
- package/node_modules/zod/v4/locales/hi.d.ts +4 -0
- package/node_modules/zod/v4/locales/hi.js +109 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +3 -0
- package/node_modules/zod/v4/locales/hu.js +3 -0
- package/node_modules/zod/v4/locales/hy.cjs +9 -0
- package/node_modules/zod/v4/locales/hy.js +9 -0
- package/node_modules/zod/v4/locales/id.cjs +3 -0
- package/node_modules/zod/v4/locales/id.js +3 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -2
- package/node_modules/zod/v4/locales/index.d.cts +10 -0
- package/node_modules/zod/v4/locales/index.d.ts +10 -0
- package/node_modules/zod/v4/locales/index.js +10 -0
- package/node_modules/zod/v4/locales/is.cjs +3 -0
- package/node_modules/zod/v4/locales/is.js +3 -0
- package/node_modules/zod/v4/locales/it.cjs +3 -0
- package/node_modules/zod/v4/locales/it.js +3 -0
- package/node_modules/zod/v4/locales/ja.cjs +3 -0
- package/node_modules/zod/v4/locales/ja.js +3 -0
- package/node_modules/zod/v4/locales/ka.cjs +3 -0
- package/node_modules/zod/v4/locales/ka.js +3 -0
- package/node_modules/zod/v4/locales/km.cjs +3 -0
- package/node_modules/zod/v4/locales/km.js +3 -0
- package/node_modules/zod/v4/locales/kn.cjs +141 -0
- package/node_modules/zod/v4/locales/kn.d.cts +5 -0
- package/node_modules/zod/v4/locales/kn.d.ts +4 -0
- package/node_modules/zod/v4/locales/kn.js +114 -0
- package/node_modules/zod/v4/locales/ko.cjs +3 -0
- package/node_modules/zod/v4/locales/ko.js +3 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +3 -0
- package/node_modules/zod/v4/locales/mk.js +3 -0
- package/node_modules/zod/v4/locales/ms.cjs +3 -0
- package/node_modules/zod/v4/locales/ms.js +3 -0
- package/node_modules/zod/v4/locales/ne.cjs +136 -0
- package/node_modules/zod/v4/locales/ne.d.cts +5 -0
- package/node_modules/zod/v4/locales/ne.d.ts +4 -0
- package/node_modules/zod/v4/locales/ne.js +109 -0
- package/node_modules/zod/v4/locales/nl.cjs +3 -0
- package/node_modules/zod/v4/locales/nl.js +3 -0
- package/node_modules/zod/v4/locales/nn.cjs +138 -0
- package/node_modules/zod/v4/locales/nn.d.cts +5 -0
- package/node_modules/zod/v4/locales/nn.d.ts +4 -0
- package/node_modules/zod/v4/locales/nn.js +111 -0
- package/node_modules/zod/v4/locales/no.cjs +5 -2
- package/node_modules/zod/v4/locales/no.js +5 -2
- package/node_modules/zod/v4/locales/ota.cjs +3 -0
- package/node_modules/zod/v4/locales/ota.js +3 -0
- package/node_modules/zod/v4/locales/pl.cjs +3 -0
- package/node_modules/zod/v4/locales/pl.js +3 -0
- package/node_modules/zod/v4/locales/ps.cjs +3 -0
- package/node_modules/zod/v4/locales/ps.js +3 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
- package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt-BR.js +141 -0
- package/node_modules/zod/v4/locales/pt.cjs +87 -55
- package/node_modules/zod/v4/locales/pt.js +87 -55
- package/node_modules/zod/v4/locales/ro.cjs +1 -0
- package/node_modules/zod/v4/locales/ro.js +1 -0
- package/node_modules/zod/v4/locales/ru.cjs +10 -0
- package/node_modules/zod/v4/locales/ru.js +10 -0
- package/node_modules/zod/v4/locales/sk.cjs +141 -0
- package/node_modules/zod/v4/locales/sk.d.cts +5 -0
- package/node_modules/zod/v4/locales/sk.d.ts +4 -0
- package/node_modules/zod/v4/locales/sk.js +114 -0
- package/node_modules/zod/v4/locales/sl.cjs +3 -0
- package/node_modules/zod/v4/locales/sl.js +3 -0
- package/node_modules/zod/v4/locales/sv.cjs +5 -2
- package/node_modules/zod/v4/locales/sv.js +5 -2
- package/node_modules/zod/v4/locales/ta.cjs +3 -0
- package/node_modules/zod/v4/locales/ta.js +3 -0
- package/node_modules/zod/v4/locales/th.cjs +3 -0
- package/node_modules/zod/v4/locales/th.js +3 -0
- package/node_modules/zod/v4/locales/tk.cjs +132 -0
- package/node_modules/zod/v4/locales/tk.d.cts +5 -0
- package/node_modules/zod/v4/locales/tk.d.ts +4 -0
- package/node_modules/zod/v4/locales/tk.js +105 -0
- package/node_modules/zod/v4/locales/tr.cjs +3 -0
- package/node_modules/zod/v4/locales/tr.js +3 -0
- package/node_modules/zod/v4/locales/uk.cjs +3 -0
- package/node_modules/zod/v4/locales/uk.js +3 -0
- package/node_modules/zod/v4/locales/ur.cjs +3 -0
- package/node_modules/zod/v4/locales/ur.js +3 -0
- package/node_modules/zod/v4/locales/uz.cjs +1 -0
- package/node_modules/zod/v4/locales/uz.js +1 -0
- package/node_modules/zod/v4/locales/vi.cjs +3 -0
- package/node_modules/zod/v4/locales/vi.js +3 -0
- package/node_modules/zod/v4/locales/yo.cjs +3 -0
- package/node_modules/zod/v4/locales/yo.js +3 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-CN.js +3 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
- package/node_modules/zod/v4/locales/zh-TW.js +3 -0
- package/node_modules/zod/v4/mini/checks.cjs +2 -1
- package/node_modules/zod/v4/mini/checks.d.cts +1 -1
- package/node_modules/zod/v4/mini/checks.d.ts +1 -1
- package/node_modules/zod/v4/mini/checks.js +1 -1
- package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
- package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.js +13 -0
- package/node_modules/zod/v4/mini/external.cjs +12 -1
- package/node_modules/zod/v4/mini/external.d.cts +5 -2
- package/node_modules/zod/v4/mini/external.d.ts +5 -2
- package/node_modules/zod/v4/mini/external.js +3 -1
- package/node_modules/zod/v4/mini/in-out.cjs +63 -0
- package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
- package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
- package/node_modules/zod/v4/mini/in-out.js +36 -0
- package/node_modules/zod/v4/mini/parse.cjs +3 -1
- package/node_modules/zod/v4/mini/parse.d.cts +1 -1
- package/node_modules/zod/v4/mini/parse.d.ts +1 -1
- package/node_modules/zod/v4/mini/parse.js +1 -1
- package/node_modules/zod/v4/mini/schemas.cjs +75 -47
- package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
- package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
- package/node_modules/zod/v4/mini/schemas.js +71 -45
- package/package.json +3 -2
- package/skills/context-management/SKILL.md +258 -0
- package/skills/figma-implement-design/SKILL.md +258 -0
- package/skills/orchestrator/SKILL.md +82 -0
- package/skills/s-help/SKILL.md +42 -0
- package/skills/s-help/resources/README.md +23 -0
- package/skills/s-help/resources/commands.json +78 -0
- package/skills/s-help/resources/s-acm.md +26 -0
- package/skills/s-help/resources/s-bash-mode.md +23 -0
- package/skills/s-help/resources/s-bash-reset.md +23 -0
- package/skills/s-help/resources/s-context.md +25 -0
- package/skills/s-help/resources/s-filechanges-accept.md +25 -0
- package/skills/s-help/resources/s-filechanges-decline.md +30 -0
- package/skills/s-help/resources/s-filechanges.md +38 -0
- package/skills/s-help/resources/s-footer.md +38 -0
- package/skills/s-help/resources/s-promptlib.md +28 -0
- package/skills/s-help/resources/s-skills-manager.md +31 -0
- package/skills/s-help/resources/s-stash-history.md +26 -0
- package/skills/screenshot/SKILL.md +267 -0
- package/skills/screenshot/scripts/ensure_macos_permissions.sh +54 -0
- package/skills/screenshot/scripts/macos_display_info.swift +22 -0
- package/skills/screenshot/scripts/macos_permissions.swift +40 -0
- package/skills/screenshot/scripts/macos_window_info.swift +126 -0
- package/skills/screenshot/scripts/take_screenshot.ps1 +163 -0
- package/skills/screenshot/scripts/take_screenshot.py +585 -0
- package/slingshot/index.js +224 -224
- package/node_modules/zod/src/v4/core/config.ts +0 -15
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# /s:filechanges
|
|
2
|
+
|
|
3
|
+
**Source:** `slingshot/src/filechanges/index.ts`
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
Tracks and visualizes **files modified by the agent** (via `write`/`edit` tool calls) during the current session/branch, then lets you inspect diffs and either:
|
|
8
|
+
|
|
9
|
+
- **accept** the changes (keep current files, clear the log)
|
|
10
|
+
- **decline** the changes (revert files back to baseline, clear the log)
|
|
11
|
+
|
|
12
|
+
It also adds a small UI widget/status indicator in the footer.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
- `/s:filechanges`
|
|
17
|
+
|
|
18
|
+
### Interactive mode (UI)
|
|
19
|
+
|
|
20
|
+
Shows a picker list:
|
|
21
|
+
|
|
22
|
+
- “Accept changes (clear log)”
|
|
23
|
+
- “Undo changes (revert)”
|
|
24
|
+
- Individual files (pick one to view a `diff`)
|
|
25
|
+
|
|
26
|
+
### Non-interactive mode (no UI)
|
|
27
|
+
|
|
28
|
+
Prints a summary of changed files to stdout.
|
|
29
|
+
|
|
30
|
+
## Related commands
|
|
31
|
+
|
|
32
|
+
- `/s:filechanges-accept`
|
|
33
|
+
- `/s:filechanges-decline`
|
|
34
|
+
|
|
35
|
+
## Notes / Safety
|
|
36
|
+
|
|
37
|
+
- Declining changes can **overwrite** files and delete created files.
|
|
38
|
+
- In non-UI mode, accept/decline require `force` confirmation flags (see the specific commands).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# /s:footer
|
|
2
|
+
|
|
3
|
+
**Source:** `slingshot/src/footer/index.ts`
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
Enables/configures the Slingshot **powerline-style footer** (status line) experience.
|
|
8
|
+
|
|
9
|
+
The footer implementation is large and featureful; it includes (non-exhaustive):
|
|
10
|
+
|
|
11
|
+
- Powerline segments (model, cwd, git, token usage, etc.)
|
|
12
|
+
- Presets (`default`, etc.)
|
|
13
|
+
- Optional secondary row for overflow segments
|
|
14
|
+
- Fixed-editor layout integration (required for certain jump/scroll behaviors)
|
|
15
|
+
- Keyboard shortcuts (stash/copy/cut/jump/scroll)
|
|
16
|
+
- “Welcome” overlay/header on startup
|
|
17
|
+
- Bash-mode integration (shell session + transcript)
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
In pi, run:
|
|
22
|
+
|
|
23
|
+
- `/s:footer` — opens an interactive configuration UI (if UI is available) or toggles/configures behavior depending on how the command handler is implemented.
|
|
24
|
+
|
|
25
|
+
## Key settings & files
|
|
26
|
+
|
|
27
|
+
- Global settings: `~/.sling/agent/settings.json`
|
|
28
|
+
- Project settings: `<project>/.sling/settings.json`
|
|
29
|
+
- Stash history persistence: `~/.sling/agent/sling-footer/stash-history.json`
|
|
30
|
+
- Session prompt history storage: `~/.sling/agent/sling-footer/sessions/**`
|
|
31
|
+
|
|
32
|
+
## Notes
|
|
33
|
+
|
|
34
|
+
- Some chat-jump features explicitly require fixed-editor mode:
|
|
35
|
+
- “Chat message jumps require /s:footer fixed-editor on”
|
|
36
|
+
- “Chat bottom jump requires /s:footer fixed-editor on”
|
|
37
|
+
|
|
38
|
+
If you see those warnings, enable fixed-editor within the footer config.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# /s:promptlib
|
|
2
|
+
|
|
3
|
+
**Source:** `slingshot/src/promptlib/index.ts`
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
Opens a **Slingshot Prompt Library** browser.
|
|
8
|
+
|
|
9
|
+
Implementation details:
|
|
10
|
+
|
|
11
|
+
- Temporarily registers an MCP server config named `Slingshot-PromptLibrary`
|
|
12
|
+
- Calls the MCP tool `list_prompts`
|
|
13
|
+
- Presents a multi-step picker UI:
|
|
14
|
+
1. Select Account
|
|
15
|
+
2. Select Project
|
|
16
|
+
3. Select Prompt
|
|
17
|
+
- Sends the selected prompt text back into chat as a follow-up message
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
- `/s:promptlib`
|
|
22
|
+
|
|
23
|
+
## Requirements / Notes
|
|
24
|
+
|
|
25
|
+
- Requires a valid provider API key (resolved from `ctx.modelRegistry.getApiKeyForProvider(...)`).
|
|
26
|
+
- Uses Slingshot OAuth credentials (projectId/workspaceId) for MCP headers.
|
|
27
|
+
- On shutdown it removes the MCP server config.
|
|
28
|
+
- Writes debug output to `tmp/prompts.json` in the current working directory.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# /s:skills-manager
|
|
2
|
+
|
|
3
|
+
**Source:** `slingshot/src/skillmanager/index.ts`
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
Interactive UI to **enable/disable skills** by updating pi settings (similar to `pi config`).
|
|
8
|
+
|
|
9
|
+
Features:
|
|
10
|
+
|
|
11
|
+
- grouped by source (top-level vs package, user vs project)
|
|
12
|
+
- search/filter
|
|
13
|
+
- plain text: matches skill name
|
|
14
|
+
- `/query`: matches full skill path
|
|
15
|
+
- `@query`: matches package/source
|
|
16
|
+
- view modes (Tab cycles): By source / A–Z / Active first
|
|
17
|
+
- writes `+pattern` / `-pattern` entries to settings
|
|
18
|
+
- optionally prompts to `/reload` to apply changes
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
- `/s:skills-manager`
|
|
23
|
+
|
|
24
|
+
Non-interactive listing:
|
|
25
|
+
|
|
26
|
+
- `/s:skills-manager list`
|
|
27
|
+
|
|
28
|
+
## Notes
|
|
29
|
+
|
|
30
|
+
- Uses `SettingsManager` + `DefaultPackageManager` to resolve skills.
|
|
31
|
+
- In headless/no-UI mode, it will fall back to listing output.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# /s:stash-history
|
|
2
|
+
|
|
3
|
+
**Source:** `slingshot/src/footer/index.ts`
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
Provides a quick way to **stash** the current editor text into a small history list, and then later browse/insert those stashed prompts.
|
|
8
|
+
|
|
9
|
+
This is designed for prompt iteration: you can save a prompt before trying a variant, then quickly restore earlier versions.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
- `/s:stash-history`
|
|
14
|
+
|
|
15
|
+
Typically used via the footer shortcut (default shown in the footer code as `ctrl+alt+h`), but the command is also registered.
|
|
16
|
+
|
|
17
|
+
## Persistence
|
|
18
|
+
|
|
19
|
+
Stash history is persisted at:
|
|
20
|
+
|
|
21
|
+
- `~/.sling/agent/sling-footer/stash-history.json`
|
|
22
|
+
|
|
23
|
+
## Notes
|
|
24
|
+
|
|
25
|
+
- History is capped (see `STASH_HISTORY_LIMIT` in the footer implementation).
|
|
26
|
+
- Entries are compacted/deduped (no consecutive duplicates; whitespace-only entries skipped).
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "screenshot"
|
|
3
|
+
description: "Use when the user explicitly asks for a desktop or system screenshot (full screen, specific app or window, or a pixel region), or when tool-specific capture capabilities are unavailable and an OS-level capture is needed."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Screenshot Capture
|
|
8
|
+
|
|
9
|
+
Follow these save-location rules every time:
|
|
10
|
+
|
|
11
|
+
1) If the user specifies a path, save there.
|
|
12
|
+
2) If the user asks for a screenshot without a path, save to the OS default screenshot location.
|
|
13
|
+
3) If Codex needs a screenshot for its own inspection, save to the temp directory.
|
|
14
|
+
|
|
15
|
+
## Tool priority
|
|
16
|
+
|
|
17
|
+
- Prefer tool-specific screenshot capabilities when available (for example: a Figma MCP/skill for Figma files, or Playwright/agent-browser tools for browsers and Electron apps).
|
|
18
|
+
- Use this skill when explicitly asked, for whole-system desktop captures, or when a tool-specific capture cannot get what you need.
|
|
19
|
+
- Otherwise, treat this skill as the default for desktop apps without a better-integrated capture tool.
|
|
20
|
+
|
|
21
|
+
## macOS permission preflight (reduce repeated prompts)
|
|
22
|
+
|
|
23
|
+
On macOS, run the preflight helper once before window/app capture. It checks
|
|
24
|
+
Screen Recording permission, explains why it is needed, and requests it in one
|
|
25
|
+
place.
|
|
26
|
+
|
|
27
|
+
The helpers route Swift's module cache to `$TMPDIR/codex-swift-module-cache`
|
|
28
|
+
to avoid extra sandbox module-cache prompts.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
bash <path-to-skill>/scripts/ensure_macos_permissions.sh
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
To avoid multiple sandbox approval prompts, combine preflight + capture in one
|
|
35
|
+
command when possible:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bash <path-to-skill>/scripts/ensure_macos_permissions.sh && \
|
|
39
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --app "Codex"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For Codex inspection runs, keep the output in temp:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
bash <path-to-skill>/scripts/ensure_macos_permissions.sh && \
|
|
46
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --app "<App>" --mode temp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Use the bundled scripts to avoid re-deriving OS-specific commands.
|
|
50
|
+
|
|
51
|
+
## macOS and Linux (Python helper)
|
|
52
|
+
|
|
53
|
+
Run the helper from the repo root:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
python3 <path-to-skill>/scripts/take_screenshot.py
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Common patterns:
|
|
60
|
+
|
|
61
|
+
- Default location (user asked for "a screenshot"):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
python3 <path-to-skill>/scripts/take_screenshot.py
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- Temp location (Codex visual check):
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --mode temp
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
- Explicit location (user provided a path or filename):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --path output/screen.png
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- App/window capture by app name (macOS only; substring match is OK; captures all matching windows):
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --app "Codex"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- Specific window title within an app (macOS only):
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --app "Codex" --window-name "Settings"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- List matching window ids before capturing (macOS only):
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --list-windows --app "Codex"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- Pixel region (x,y,w,h):
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --mode temp --region 100,200,800,600
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
- Focused/active window (captures only the frontmost window; use `--app` to capture all windows):
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --mode temp --active-window
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
- Specific window id (use --list-windows on macOS to discover ids):
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --window-id 12345
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The script prints one path per capture. When multiple windows or displays match, it prints multiple paths (one per line) and adds suffixes like `-w<windowId>` or `-d<display>`. View each path sequentially with the image viewer tool, and only manipulate images if needed or requested.
|
|
116
|
+
|
|
117
|
+
### Workflow examples
|
|
118
|
+
|
|
119
|
+
- "Take a look at <App> and tell me what you see": capture to temp, then view each printed path in order.
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
bash <path-to-skill>/scripts/ensure_macos_permissions.sh && \
|
|
123
|
+
python3 <path-to-skill>/scripts/take_screenshot.py --app "<App>" --mode temp
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- "The design from Figma is not matching what is implemented": use a Figma MCP/skill to capture the design first, then capture the running app with this skill (typically to temp) and compare the raw screenshots before any manipulation.
|
|
127
|
+
|
|
128
|
+
### Multi-display behavior
|
|
129
|
+
|
|
130
|
+
- On macOS, full-screen captures save one file per display when multiple monitors are connected.
|
|
131
|
+
- On Linux and Windows, full-screen captures use the virtual desktop (all monitors in one image); use `--region` to isolate a single display when needed.
|
|
132
|
+
|
|
133
|
+
### Linux prerequisites and selection logic
|
|
134
|
+
|
|
135
|
+
The helper automatically selects the first available tool:
|
|
136
|
+
|
|
137
|
+
1) `scrot`
|
|
138
|
+
2) `gnome-screenshot`
|
|
139
|
+
3) ImageMagick `import`
|
|
140
|
+
|
|
141
|
+
If none are available, ask the user to install one of them and retry.
|
|
142
|
+
|
|
143
|
+
Coordinate regions require `scrot` or ImageMagick `import`.
|
|
144
|
+
|
|
145
|
+
`--app`, `--window-name`, and `--list-windows` are macOS-only. On Linux, use
|
|
146
|
+
`--active-window` or provide `--window-id` when available.
|
|
147
|
+
|
|
148
|
+
## Windows (PowerShell helper)
|
|
149
|
+
|
|
150
|
+
Run the PowerShell helper:
|
|
151
|
+
|
|
152
|
+
```powershell
|
|
153
|
+
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Common patterns:
|
|
157
|
+
|
|
158
|
+
- Default location:
|
|
159
|
+
|
|
160
|
+
```powershell
|
|
161
|
+
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
- Temp location (Codex visual check):
|
|
165
|
+
|
|
166
|
+
```powershell
|
|
167
|
+
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Mode temp
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
- Explicit path:
|
|
171
|
+
|
|
172
|
+
```powershell
|
|
173
|
+
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Path "C:\Temp\screen.png"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
- Pixel region (x,y,w,h):
|
|
177
|
+
|
|
178
|
+
```powershell
|
|
179
|
+
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Mode temp -Region 100,200,800,600
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
- Active window (ask the user to focus it first):
|
|
183
|
+
|
|
184
|
+
```powershell
|
|
185
|
+
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -Mode temp -ActiveWindow
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
- Specific window handle (only when provided):
|
|
189
|
+
|
|
190
|
+
```powershell
|
|
191
|
+
powershell -ExecutionPolicy Bypass -File <path-to-skill>/scripts/take_screenshot.ps1 -WindowHandle 123456
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Direct OS commands (fallbacks)
|
|
195
|
+
|
|
196
|
+
Use these when you cannot run the helpers.
|
|
197
|
+
|
|
198
|
+
### macOS
|
|
199
|
+
|
|
200
|
+
- Full screen to a specific path:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
screencapture -x output/screen.png
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
- Pixel region:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
screencapture -x -R100,200,800,600 output/region.png
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
- Specific window id:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
screencapture -x -l12345 output/window.png
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
- Interactive selection or window pick:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
screencapture -x -i output/interactive.png
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Linux
|
|
225
|
+
|
|
226
|
+
- Full screen:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
scrot output/screen.png
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
gnome-screenshot -f output/screen.png
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
import -window root output/screen.png
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
- Pixel region:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
scrot -a 100,200,800,600 output/region.png
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
import -window root -crop 800x600+100+200 output/region.png
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
- Active window:
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
scrot -u output/window.png
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
gnome-screenshot -w -f output/window.png
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Error handling
|
|
261
|
+
|
|
262
|
+
- On macOS, run `bash <path-to-skill>/scripts/ensure_macos_permissions.sh` first to request Screen Recording in one place.
|
|
263
|
+
- If you see "screen capture checks are blocked in the sandbox", "could not create image from display", or Swift `ModuleCache` permission errors in a sandboxed run, rerun the command with escalated permissions.
|
|
264
|
+
- If macOS app/window capture returns no matches, run `--list-windows --app "AppName"` and retry with `--window-id`, and make sure the app is visible on screen.
|
|
265
|
+
- If Linux region/window capture fails, check tool availability with `command -v scrot`, `command -v gnome-screenshot`, and `command -v import`.
|
|
266
|
+
- If saving to the OS default location fails with permission errors in a sandbox, rerun the command with escalated permissions.
|
|
267
|
+
- Always report the saved file path in the response.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
if [[ "$(uname)" != "Darwin" ]]; then
|
|
5
|
+
echo "ensure_macos_permissions.sh only supports macOS" >&2
|
|
6
|
+
exit 1
|
|
7
|
+
fi
|
|
8
|
+
|
|
9
|
+
if ! command -v swift >/dev/null 2>&1; then
|
|
10
|
+
echo "swift is required to check macOS screen capture permissions" >&2
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
15
|
+
PERM_SWIFT="$SCRIPT_DIR/macos_permissions.swift"
|
|
16
|
+
MODULE_CACHE="${TMPDIR:-/tmp}/codex-swift-module-cache"
|
|
17
|
+
mkdir -p "$MODULE_CACHE"
|
|
18
|
+
|
|
19
|
+
screen_capture_status() {
|
|
20
|
+
local json
|
|
21
|
+
json="$(swift -module-cache-path "$MODULE_CACHE" "$PERM_SWIFT" "$@")"
|
|
22
|
+
python3 -c 'import json, sys; data=json.loads(sys.argv[1]); print("1" if data.get("screenCapture") else "0")' "$json"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if [[ -n "${CODEX_SANDBOX:-}" ]]; then
|
|
26
|
+
echo "Screen capture checks are blocked in the sandbox; rerun with escalated permissions." >&2
|
|
27
|
+
exit 3
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
if [[ "$(screen_capture_status)" == "1" ]]; then
|
|
31
|
+
echo "Screen Recording permission already granted."
|
|
32
|
+
exit 0
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
cat <<'MSG'
|
|
36
|
+
This workflow needs macOS Screen Recording permission to capture screenshots.
|
|
37
|
+
macOS will show a single system prompt for Screen Recording. Approve it, then
|
|
38
|
+
return here. If macOS opens System Settings instead of prompting, enable Screen
|
|
39
|
+
Recording for your terminal and rerun the command.
|
|
40
|
+
MSG
|
|
41
|
+
|
|
42
|
+
# Request permission once after explaining why it is needed.
|
|
43
|
+
screen_capture_status --request >/dev/null || true
|
|
44
|
+
|
|
45
|
+
if [[ "$(screen_capture_status)" != "1" ]]; then
|
|
46
|
+
cat <<'MSG'
|
|
47
|
+
Screen Recording is still not granted.
|
|
48
|
+
Open System Settings > Privacy & Security > Screen Recording and enable it for
|
|
49
|
+
your terminal (and Codex if needed), then rerun your screenshot command.
|
|
50
|
+
MSG
|
|
51
|
+
exit 2
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
echo "Screen Recording permission granted."
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import AppKit
|
|
2
|
+
import Foundation
|
|
3
|
+
|
|
4
|
+
struct Response: Encodable {
|
|
5
|
+
let count: Int
|
|
6
|
+
let displays: [Int]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let count = max(NSScreen.screens.count, 1)
|
|
10
|
+
let displays = Array(1...count)
|
|
11
|
+
|
|
12
|
+
let response = Response(count: count, displays: displays)
|
|
13
|
+
let encoder = JSONEncoder()
|
|
14
|
+
encoder.outputFormatting = [.sortedKeys]
|
|
15
|
+
|
|
16
|
+
if let data = try? encoder.encode(response),
|
|
17
|
+
let json = String(data: data, encoding: .utf8) {
|
|
18
|
+
print(json)
|
|
19
|
+
} else {
|
|
20
|
+
fputs("{\"count\":\(count)}\n", stderr)
|
|
21
|
+
exit(1)
|
|
22
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import CoreGraphics
|
|
2
|
+
import Foundation
|
|
3
|
+
|
|
4
|
+
struct Status: Encodable {
|
|
5
|
+
let screenCapture: Bool
|
|
6
|
+
let requested: Bool
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let shouldRequest = CommandLine.arguments.contains("--request")
|
|
10
|
+
|
|
11
|
+
@available(macOS 10.15, *)
|
|
12
|
+
func screenCaptureGranted(request: Bool) -> Bool {
|
|
13
|
+
if CGPreflightScreenCaptureAccess() {
|
|
14
|
+
return true
|
|
15
|
+
}
|
|
16
|
+
if request {
|
|
17
|
+
_ = CGRequestScreenCaptureAccess()
|
|
18
|
+
return CGPreflightScreenCaptureAccess()
|
|
19
|
+
}
|
|
20
|
+
return false
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let granted: Bool
|
|
24
|
+
if #available(macOS 10.15, *) {
|
|
25
|
+
granted = screenCaptureGranted(request: shouldRequest)
|
|
26
|
+
} else {
|
|
27
|
+
granted = true
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
let status = Status(screenCapture: granted, requested: shouldRequest)
|
|
31
|
+
let encoder = JSONEncoder()
|
|
32
|
+
encoder.outputFormatting = [.sortedKeys]
|
|
33
|
+
|
|
34
|
+
if let data = try? encoder.encode(status),
|
|
35
|
+
let json = String(data: data, encoding: .utf8) {
|
|
36
|
+
print(json)
|
|
37
|
+
} else {
|
|
38
|
+
fputs("{\"requested\":\(shouldRequest),\"screenCapture\":\(granted)}\n", stderr)
|
|
39
|
+
exit(1)
|
|
40
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import AppKit
|
|
2
|
+
import CoreGraphics
|
|
3
|
+
import Foundation
|
|
4
|
+
|
|
5
|
+
struct Bounds: Encodable {
|
|
6
|
+
let x: Int
|
|
7
|
+
let y: Int
|
|
8
|
+
let width: Int
|
|
9
|
+
let height: Int
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
struct WindowInfo: Encodable {
|
|
13
|
+
let id: Int
|
|
14
|
+
let owner: String
|
|
15
|
+
let name: String
|
|
16
|
+
let layer: Int
|
|
17
|
+
let bounds: Bounds
|
|
18
|
+
let area: Int
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
struct Response: Encodable {
|
|
22
|
+
let count: Int
|
|
23
|
+
let selected: WindowInfo?
|
|
24
|
+
let windows: [WindowInfo]?
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
func value(for flag: String) -> String? {
|
|
28
|
+
guard let idx = CommandLine.arguments.firstIndex(of: flag) else {
|
|
29
|
+
return nil
|
|
30
|
+
}
|
|
31
|
+
let next = CommandLine.arguments.index(after: idx)
|
|
32
|
+
guard next < CommandLine.arguments.endIndex else {
|
|
33
|
+
return nil
|
|
34
|
+
}
|
|
35
|
+
return CommandLine.arguments[next]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let frontmostFlag = CommandLine.arguments.contains("--frontmost")
|
|
39
|
+
let explicitApp = value(for: "--app")
|
|
40
|
+
let frontmostName = frontmostFlag ? NSWorkspace.shared.frontmostApplication?.localizedName : nil
|
|
41
|
+
if frontmostFlag && frontmostName == nil {
|
|
42
|
+
fputs("{\"count\":0}\n", stderr)
|
|
43
|
+
exit(1)
|
|
44
|
+
}
|
|
45
|
+
let appFilter = (explicitApp ?? frontmostName)?.lowercased()
|
|
46
|
+
let nameFilter = value(for: "--window-name")?.lowercased()
|
|
47
|
+
let includeList = CommandLine.arguments.contains("--list")
|
|
48
|
+
|
|
49
|
+
let options: CGWindowListOption = [.optionOnScreenOnly, .excludeDesktopElements]
|
|
50
|
+
guard let raw = CGWindowListCopyWindowInfo(options, kCGNullWindowID) as? [[String: Any]] else {
|
|
51
|
+
fputs("{\"count\":0}\n", stderr)
|
|
52
|
+
exit(1)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
var exactMatches: [WindowInfo] = []
|
|
56
|
+
var partialMatches: [WindowInfo] = []
|
|
57
|
+
exactMatches.reserveCapacity(raw.count)
|
|
58
|
+
partialMatches.reserveCapacity(raw.count)
|
|
59
|
+
|
|
60
|
+
for entry in raw {
|
|
61
|
+
guard let owner = entry[kCGWindowOwnerName as String] as? String else { continue }
|
|
62
|
+
let ownerLower = owner.lowercased()
|
|
63
|
+
if let appFilter, !ownerLower.contains(appFilter) { continue }
|
|
64
|
+
|
|
65
|
+
let name = (entry[kCGWindowName as String] as? String) ?? ""
|
|
66
|
+
if let nameFilter, !name.lowercased().contains(nameFilter) { continue }
|
|
67
|
+
|
|
68
|
+
guard let number = entry[kCGWindowNumber as String] as? Int else { continue }
|
|
69
|
+
let layer = (entry[kCGWindowLayer as String] as? Int) ?? 0
|
|
70
|
+
|
|
71
|
+
guard let boundsDict = entry[kCGWindowBounds as String] as? [String: Any] else { continue }
|
|
72
|
+
let x = Int((boundsDict["X"] as? Double) ?? 0)
|
|
73
|
+
let y = Int((boundsDict["Y"] as? Double) ?? 0)
|
|
74
|
+
let width = Int((boundsDict["Width"] as? Double) ?? 0)
|
|
75
|
+
let height = Int((boundsDict["Height"] as? Double) ?? 0)
|
|
76
|
+
if width <= 0 || height <= 0 { continue }
|
|
77
|
+
|
|
78
|
+
let bounds = Bounds(x: x, y: y, width: width, height: height)
|
|
79
|
+
let area = width * height
|
|
80
|
+
let info = WindowInfo(id: number, owner: owner, name: name, layer: layer, bounds: bounds, area: area)
|
|
81
|
+
if let appFilter, ownerLower == appFilter {
|
|
82
|
+
exactMatches.append(info)
|
|
83
|
+
} else {
|
|
84
|
+
partialMatches.append(info)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
let windows: [WindowInfo]
|
|
89
|
+
if appFilter != nil && !exactMatches.isEmpty {
|
|
90
|
+
windows = exactMatches
|
|
91
|
+
} else {
|
|
92
|
+
windows = partialMatches
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
func rank(_ window: WindowInfo) -> (Int, Int) {
|
|
96
|
+
// Prefer normal-layer windows, then larger area.
|
|
97
|
+
let layerScore = window.layer == 0 ? 0 : 1
|
|
98
|
+
return (layerScore, -window.area)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
let ordered: [WindowInfo]
|
|
102
|
+
if frontmostFlag {
|
|
103
|
+
ordered = windows
|
|
104
|
+
} else {
|
|
105
|
+
ordered = windows.sorted { rank($0) < rank($1) }
|
|
106
|
+
}
|
|
107
|
+
let selected = ordered.first
|
|
108
|
+
|
|
109
|
+
let list: [WindowInfo]?
|
|
110
|
+
if includeList {
|
|
111
|
+
list = ordered
|
|
112
|
+
} else {
|
|
113
|
+
list = nil
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
let response = Response(count: windows.count, selected: selected, windows: list)
|
|
117
|
+
let encoder = JSONEncoder()
|
|
118
|
+
encoder.outputFormatting = [.sortedKeys]
|
|
119
|
+
|
|
120
|
+
if let data = try? encoder.encode(response),
|
|
121
|
+
let json = String(data: data, encoding: .utf8) {
|
|
122
|
+
print(json)
|
|
123
|
+
} else {
|
|
124
|
+
fputs("{\"count\":\(windows.count)}\n", stderr)
|
|
125
|
+
exit(1)
|
|
126
|
+
}
|