pi-proactive 0.0.0-stage → 0.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +119 -0
- package/LICENSE +54 -0
- package/README.md +705 -2
- package/build/extensions/proactive.js +2467 -0
- package/build/src/activity.js +130 -0
- package/build/src/commands.js +496 -0
- package/build/src/config.js +483 -0
- package/build/src/content.js +198 -0
- package/build/src/daemon-config.js +488 -0
- package/build/src/daemon.js +702 -0
- package/build/src/dedupe.js +187 -0
- package/build/src/envelope.js +283 -0
- package/build/src/guard.js +74 -0
- package/build/src/health.js +734 -0
- package/build/src/idle.js +388 -0
- package/build/src/lineage.js +426 -0
- package/build/src/mailbox.js +984 -0
- package/build/src/outbox.js +26 -0
- package/build/src/peer-spawn.js +383 -0
- package/build/src/peer.js +1002 -0
- package/build/src/registry.js +583 -0
- package/build/src/scheduler.js +301 -0
- package/build/src/socket.js +496 -0
- package/build/src/task-store.js +438 -0
- package/build/src/thread.js +196 -0
- package/build/src/trigger.js +458 -0
- package/build/src/types.js +1 -0
- package/node_modules/typebox/build/compile/code.d.mts +12 -0
- package/node_modules/typebox/build/compile/code.mjs +64 -0
- package/node_modules/typebox/build/compile/compile.d.mts +6 -0
- package/node_modules/typebox/build/compile/compile.mjs +12 -0
- package/node_modules/typebox/build/compile/index.d.mts +8 -0
- package/node_modules/typebox/build/compile/index.mjs +14 -0
- package/node_modules/typebox/build/compile/validator.d.mts +35 -0
- package/node_modules/typebox/build/compile/validator.mjs +95 -0
- package/node_modules/typebox/build/error/errors.d.mts +208 -0
- package/node_modules/typebox/build/error/errors.mjs +18 -0
- package/node_modules/typebox/build/error/index.d.mts +1 -0
- package/node_modules/typebox/build/error/index.mjs +1 -0
- package/node_modules/typebox/build/format/_registry.d.mts +15 -0
- package/node_modules/typebox/build/format/_registry.mjs +96 -0
- package/node_modules/typebox/build/format/date.d.mts +6 -0
- package/node_modules/typebox/build/format/date.mjs +19 -0
- package/node_modules/typebox/build/format/date_time.d.mts +7 -0
- package/node_modules/typebox/build/format/date_time.mjs +20 -0
- package/node_modules/typebox/build/format/duration.d.mts +5 -0
- package/node_modules/typebox/build/format/duration.mjs +8 -0
- package/node_modules/typebox/build/format/email.d.mts +5 -0
- package/node_modules/typebox/build/format/email.mjs +8 -0
- package/node_modules/typebox/build/format/format.d.mts +22 -0
- package/node_modules/typebox/build/format/format.mjs +22 -0
- package/node_modules/typebox/build/format/hostname.d.mts +7 -0
- package/node_modules/typebox/build/format/hostname.mjs +10 -0
- package/node_modules/typebox/build/format/idn_email.d.mts +6 -0
- package/node_modules/typebox/build/format/idn_email.mjs +9 -0
- package/node_modules/typebox/build/format/idn_hostname.d.mts +8 -0
- package/node_modules/typebox/build/format/idn_hostname.mjs +11 -0
- package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
- package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
- package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
- package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
- package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
- package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +43 -0
- package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
- package/node_modules/typebox/build/format/idna/index.mjs +2 -0
- package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
- package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
- package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
- package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
- package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
- package/node_modules/typebox/build/format/index.d.mts +4 -0
- package/node_modules/typebox/build/format/index.mjs +4 -0
- package/node_modules/typebox/build/format/ipv4.d.mts +5 -0
- package/node_modules/typebox/build/format/ipv4.mjs +8 -0
- package/node_modules/typebox/build/format/ipv6.d.mts +5 -0
- package/node_modules/typebox/build/format/ipv6.mjs +8 -0
- package/node_modules/typebox/build/format/iri.d.mts +5 -0
- package/node_modules/typebox/build/format/iri.mjs +42 -0
- package/node_modules/typebox/build/format/iri_reference.d.mts +5 -0
- package/node_modules/typebox/build/format/iri_reference.mjs +14 -0
- package/node_modules/typebox/build/format/json_pointer.d.mts +6 -0
- package/node_modules/typebox/build/format/json_pointer.mjs +9 -0
- package/node_modules/typebox/build/format/json_pointer_uri_fragment.d.mts +6 -0
- package/node_modules/typebox/build/format/json_pointer_uri_fragment.mjs +9 -0
- package/node_modules/typebox/build/format/regex.d.mts +5 -0
- package/node_modules/typebox/build/format/regex.mjs +13 -0
- package/node_modules/typebox/build/format/relative_json_pointer.d.mts +6 -0
- package/node_modules/typebox/build/format/relative_json_pointer.mjs +9 -0
- package/node_modules/typebox/build/format/time.d.mts +5 -0
- package/node_modules/typebox/build/format/time.mjs +32 -0
- package/node_modules/typebox/build/format/uri.d.mts +5 -0
- package/node_modules/typebox/build/format/uri.mjs +8 -0
- package/node_modules/typebox/build/format/uri_reference.d.mts +5 -0
- package/node_modules/typebox/build/format/uri_reference.mjs +8 -0
- package/node_modules/typebox/build/format/uri_template.d.mts +5 -0
- package/node_modules/typebox/build/format/uri_template.mjs +9 -0
- package/node_modules/typebox/build/format/url.d.mts +6 -0
- package/node_modules/typebox/build/format/url.mjs +8 -0
- package/node_modules/typebox/build/format/uuid.d.mts +6 -0
- package/node_modules/typebox/build/format/uuid.mjs +9 -0
- package/node_modules/typebox/build/guard/emit.d.mts +56 -0
- package/node_modules/typebox/build/guard/emit.mjs +191 -0
- package/node_modules/typebox/build/guard/globals.d.mts +35 -0
- package/node_modules/typebox/build/guard/globals.mjs +90 -0
- package/node_modules/typebox/build/guard/guard.d.mts +73 -0
- package/node_modules/typebox/build/guard/guard.mjs +226 -0
- package/node_modules/typebox/build/guard/index.d.mts +6 -0
- package/node_modules/typebox/build/guard/index.mjs +12 -0
- package/node_modules/typebox/build/guard/native.d.mts +20 -0
- package/node_modules/typebox/build/guard/native.mjs +60 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/unicode/unicode_segment.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode_segment.mjs +165 -0
- package/node_modules/typebox/build/index.d.mts +8 -0
- package/node_modules/typebox/build/index.mjs +14 -0
- package/node_modules/typebox/build/schema/build.d.mts +39 -0
- package/node_modules/typebox/build/schema/build.mjs +118 -0
- package/node_modules/typebox/build/schema/check.d.mts +6 -0
- package/node_modules/typebox/build/schema/check.mjs +14 -0
- package/node_modules/typebox/build/schema/compile.d.mts +23 -0
- package/node_modules/typebox/build/schema/compile.mjs +46 -0
- package/node_modules/typebox/build/schema/engine/_context.d.mts +34 -0
- package/node_modules/typebox/build/schema/engine/_context.mjs +137 -0
- package/node_modules/typebox/build/schema/engine/_exact_optional.d.mts +3 -0
- package/node_modules/typebox/build/schema/engine/_exact_optional.mjs +20 -0
- package/node_modules/typebox/build/schema/engine/_externals.d.mts +7 -0
- package/node_modules/typebox/build/schema/engine/_externals.mjs +25 -0
- package/node_modules/typebox/build/schema/engine/_functions.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/_functions.mjs +65 -0
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_reducer.d.mts +4 -0
- package/node_modules/typebox/build/schema/engine/_reducer.mjs +45 -0
- package/node_modules/typebox/build/schema/engine/_refine.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +34 -0
- package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
- package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
- package/node_modules/typebox/build/schema/engine/_stack.d.mts +36 -0
- package/node_modules/typebox/build/schema/engine/_stack.mjs +150 -0
- package/node_modules/typebox/build/schema/engine/_unique.d.mts +4 -0
- package/node_modules/typebox/build/schema/engine/_unique.mjs +9 -0
- package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/additionalItems.mjs +60 -0
- package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +118 -0
- package/node_modules/typebox/build/schema/engine/allOf.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/allOf.mjs +47 -0
- package/node_modules/typebox/build/schema/engine/anyOf.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/anyOf.mjs +47 -0
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +5 -0
- package/node_modules/typebox/build/schema/engine/boolean.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/const.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/const.mjs +26 -0
- package/node_modules/typebox/build/schema/engine/contains.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/contains.mjs +50 -0
- package/node_modules/typebox/build/schema/engine/dependencies.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +43 -0
- package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +36 -0
- package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +39 -0
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +29 -0
- package/node_modules/typebox/build/schema/engine/enum.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/enum.mjs +29 -0
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/format.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/format.mjs +29 -0
- package/node_modules/typebox/build/schema/engine/if.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/if.mjs +39 -0
- package/node_modules/typebox/build/schema/engine/index.d.mts +49 -0
- package/node_modules/typebox/build/schema/engine/index.mjs +55 -0
- package/node_modules/typebox/build/schema/engine/items.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/items.mjs +91 -0
- package/node_modules/typebox/build/schema/engine/maxContains.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +38 -0
- package/node_modules/typebox/build/schema/engine/maxItems.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/maxItems.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/maxLength.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/maxLength.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/maxProperties.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/maximum.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/maximum.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/minContains.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/minContains.mjs +47 -0
- package/node_modules/typebox/build/schema/engine/minItems.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/minItems.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/minLength.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/minLength.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/minProperties.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/minProperties.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/minimum.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/minimum.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/multipleOf.mjs +21 -0
- package/node_modules/typebox/build/schema/engine/not.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/not.mjs +35 -0
- package/node_modules/typebox/build/schema/engine/oneOf.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +54 -0
- package/node_modules/typebox/build/schema/engine/pattern.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/pattern.mjs +25 -0
- package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +46 -0
- package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/prefixItems.mjs +35 -0
- package/node_modules/typebox/build/schema/engine/properties.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/properties.mjs +76 -0
- package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +34 -0
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +29 -0
- package/node_modules/typebox/build/schema/engine/ref.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/ref.mjs +56 -0
- package/node_modules/typebox/build/schema/engine/required.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/required.mjs +28 -0
- package/node_modules/typebox/build/schema/engine/schema.d.mts +9 -0
- package/node_modules/typebox/build/schema/engine/schema.mjs +360 -0
- package/node_modules/typebox/build/schema/engine/type.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/type.mjs +66 -0
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +47 -0
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +47 -0
- package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +6 -0
- package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +47 -0
- package/node_modules/typebox/build/schema/errors.d.mts +6 -0
- package/node_modules/typebox/build/schema/errors.mjs +18 -0
- package/node_modules/typebox/build/schema/index.d.mts +3 -0
- package/node_modules/typebox/build/schema/index.mjs +9 -0
- package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
- package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
- package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
- package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
- package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
- package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
- package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
- package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
- package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
- package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
- package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
- package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
- package/node_modules/typebox/build/schema/parse.d.mts +14 -0
- package/node_modules/typebox/build/schema/parse.mjs +35 -0
- package/node_modules/typebox/build/schema/pointer/index.d.mts +2 -0
- package/node_modules/typebox/build/schema/pointer/index.mjs +2 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +5 -0
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +89 -0
- package/node_modules/typebox/build/schema/pointer/pointer_get.d.mts +9 -0
- package/node_modules/typebox/build/schema/pointer/pointer_get.mjs +2 -0
- package/node_modules/typebox/build/schema/resolve/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/resolve/index.mjs +1 -0
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +9 -0
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +331 -0
- package/node_modules/typebox/build/schema/schema.d.mts +12 -0
- package/node_modules/typebox/build/schema/schema.mjs +12 -0
- package/node_modules/typebox/build/schema/static/_canonical.d.mts +7 -0
- package/node_modules/typebox/build/schema/static/_canonical.mjs +2 -0
- package/node_modules/typebox/build/schema/static/_comparer.d.mts +6 -0
- package/node_modules/typebox/build/schema/static/_comparer.mjs +2 -0
- package/node_modules/typebox/build/schema/static/_elements.d.mts +18 -0
- package/node_modules/typebox/build/schema/static/_elements.mjs +2 -0
- package/node_modules/typebox/build/schema/static/additionalProperties.d.mts +7 -0
- package/node_modules/typebox/build/schema/static/additionalProperties.mjs +3 -0
- package/node_modules/typebox/build/schema/static/allOf.d.mts +3 -0
- package/node_modules/typebox/build/schema/static/allOf.mjs +2 -0
- package/node_modules/typebox/build/schema/static/anyOf.d.mts +3 -0
- package/node_modules/typebox/build/schema/static/anyOf.mjs +2 -0
- package/node_modules/typebox/build/schema/static/const.d.mts +1 -0
- package/node_modules/typebox/build/schema/static/const.mjs +2 -0
- package/node_modules/typebox/build/schema/static/enum.d.mts +1 -0
- package/node_modules/typebox/build/schema/static/enum.mjs +2 -0
- package/node_modules/typebox/build/schema/static/if.d.mts +15 -0
- package/node_modules/typebox/build/schema/static/if.mjs +2 -0
- package/node_modules/typebox/build/schema/static/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/static/index.mjs +1 -0
- package/node_modules/typebox/build/schema/static/items.d.mts +7 -0
- package/node_modules/typebox/build/schema/static/items.mjs +2 -0
- package/node_modules/typebox/build/schema/static/oneOf.d.mts +3 -0
- package/node_modules/typebox/build/schema/static/oneOf.mjs +2 -0
- package/node_modules/typebox/build/schema/static/patternProperties.d.mts +7 -0
- package/node_modules/typebox/build/schema/static/patternProperties.mjs +2 -0
- package/node_modules/typebox/build/schema/static/prefixItems.d.mts +3 -0
- package/node_modules/typebox/build/schema/static/prefixItems.mjs +2 -0
- package/node_modules/typebox/build/schema/static/properties.d.mts +32 -0
- package/node_modules/typebox/build/schema/static/properties.mjs +2 -0
- package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
- package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
- package/node_modules/typebox/build/schema/static/ref.d.mts +8 -0
- package/node_modules/typebox/build/schema/static/ref.mjs +3 -0
- package/node_modules/typebox/build/schema/static/required.d.mts +3 -0
- package/node_modules/typebox/build/schema/static/required.mjs +3 -0
- package/node_modules/typebox/build/schema/static/schema.d.mts +59 -0
- package/node_modules/typebox/build/schema/static/schema.mjs +2 -0
- package/node_modules/typebox/build/schema/static/static.d.mts +4 -0
- package/node_modules/typebox/build/schema/static/static.mjs +3 -0
- package/node_modules/typebox/build/schema/static/type.d.mts +4 -0
- package/node_modules/typebox/build/schema/static/type.mjs +3 -0
- package/node_modules/typebox/build/schema/static/unevaluatedProperties.d.mts +7 -0
- package/node_modules/typebox/build/schema/static/unevaluatedProperties.mjs +3 -0
- package/node_modules/typebox/build/schema/types/_refine.d.mts +13 -0
- package/node_modules/typebox/build/schema/types/_refine.mjs +18 -0
- package/node_modules/typebox/build/schema/types/additionalItems.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/additionalItems.mjs +14 -0
- package/node_modules/typebox/build/schema/types/additionalProperties.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/additionalProperties.mjs +14 -0
- package/node_modules/typebox/build/schema/types/allOf.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/allOf.mjs +15 -0
- package/node_modules/typebox/build/schema/types/anchor.d.mts +8 -0
- package/node_modules/typebox/build/schema/types/anchor.mjs +12 -0
- package/node_modules/typebox/build/schema/types/anyOf.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/anyOf.mjs +15 -0
- package/node_modules/typebox/build/schema/types/const.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/const.mjs +12 -0
- package/node_modules/typebox/build/schema/types/contains.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/contains.mjs +14 -0
- package/node_modules/typebox/build/schema/types/default.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/default.mjs +12 -0
- package/node_modules/typebox/build/schema/types/defs.d.mts +6 -0
- package/node_modules/typebox/build/schema/types/defs.mjs +12 -0
- package/node_modules/typebox/build/schema/types/dependencies.d.mts +11 -0
- package/node_modules/typebox/build/schema/types/dependencies.mjs +16 -0
- package/node_modules/typebox/build/schema/types/dependentRequired.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/dependentRequired.mjs +15 -0
- package/node_modules/typebox/build/schema/types/dependentSchemas.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/dependentSchemas.mjs +15 -0
- package/node_modules/typebox/build/schema/types/dynamicAnchor.d.mts +8 -0
- package/node_modules/typebox/build/schema/types/dynamicAnchor.mjs +12 -0
- package/node_modules/typebox/build/schema/types/dynamicRef.d.mts +8 -0
- package/node_modules/typebox/build/schema/types/dynamicRef.mjs +12 -0
- package/node_modules/typebox/build/schema/types/else.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/else.mjs +14 -0
- package/node_modules/typebox/build/schema/types/enum.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/enum.mjs +13 -0
- package/node_modules/typebox/build/schema/types/exclusiveMaximum.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/exclusiveMaximum.mjs +13 -0
- package/node_modules/typebox/build/schema/types/exclusiveMinimum.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/exclusiveMinimum.mjs +13 -0
- package/node_modules/typebox/build/schema/types/format.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/format.mjs +13 -0
- package/node_modules/typebox/build/schema/types/id.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/id.mjs +13 -0
- package/node_modules/typebox/build/schema/types/if.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/if.mjs +14 -0
- package/node_modules/typebox/build/schema/types/index.d.mts +51 -0
- package/node_modules/typebox/build/schema/types/index.mjs +57 -0
- package/node_modules/typebox/build/schema/types/items.d.mts +19 -0
- package/node_modules/typebox/build/schema/types/items.mjs +26 -0
- package/node_modules/typebox/build/schema/types/maxContains.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/maxContains.mjs +13 -0
- package/node_modules/typebox/build/schema/types/maxItems.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/maxItems.mjs +13 -0
- package/node_modules/typebox/build/schema/types/maxLength.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/maxLength.mjs +13 -0
- package/node_modules/typebox/build/schema/types/maxProperties.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/maxProperties.mjs +13 -0
- package/node_modules/typebox/build/schema/types/maximum.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/maximum.mjs +13 -0
- package/node_modules/typebox/build/schema/types/minContains.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/minContains.mjs +13 -0
- package/node_modules/typebox/build/schema/types/minItems.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/minItems.mjs +13 -0
- package/node_modules/typebox/build/schema/types/minLength.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/minLength.mjs +13 -0
- package/node_modules/typebox/build/schema/types/minProperties.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/minProperties.mjs +13 -0
- package/node_modules/typebox/build/schema/types/minimum.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/minimum.mjs +13 -0
- package/node_modules/typebox/build/schema/types/multipleOf.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/multipleOf.mjs +13 -0
- package/node_modules/typebox/build/schema/types/not.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/not.mjs +14 -0
- package/node_modules/typebox/build/schema/types/oneOf.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/oneOf.mjs +15 -0
- package/node_modules/typebox/build/schema/types/pattern.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/pattern.mjs +14 -0
- package/node_modules/typebox/build/schema/types/patternProperties.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/patternProperties.mjs +15 -0
- package/node_modules/typebox/build/schema/types/prefixItems.d.mts +8 -0
- package/node_modules/typebox/build/schema/types/prefixItems.mjs +14 -0
- package/node_modules/typebox/build/schema/types/properties.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/properties.mjs +15 -0
- package/node_modules/typebox/build/schema/types/propertyNames.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/propertyNames.mjs +15 -0
- package/node_modules/typebox/build/schema/types/recursiveAnchor.d.mts +12 -0
- package/node_modules/typebox/build/schema/types/recursiveAnchor.mjs +19 -0
- package/node_modules/typebox/build/schema/types/recursiveRef.d.mts +8 -0
- package/node_modules/typebox/build/schema/types/recursiveRef.mjs +12 -0
- package/node_modules/typebox/build/schema/types/ref.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/ref.mjs +13 -0
- package/node_modules/typebox/build/schema/types/required.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/required.mjs +14 -0
- package/node_modules/typebox/build/schema/types/schema.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/schema.mjs +14 -0
- package/node_modules/typebox/build/schema/types/then.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/then.mjs +14 -0
- package/node_modules/typebox/build/schema/types/type.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/type.mjs +15 -0
- package/node_modules/typebox/build/schema/types/unevaluatedItems.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/unevaluatedItems.mjs +14 -0
- package/node_modules/typebox/build/schema/types/unevaluatedProperties.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/unevaluatedProperties.mjs +14 -0
- package/node_modules/typebox/build/schema/types/uniqueItems.d.mts +9 -0
- package/node_modules/typebox/build/schema/types/uniqueItems.mjs +13 -0
- package/node_modules/typebox/build/system/arguments/arguments.d.mts +5 -0
- package/node_modules/typebox/build/system/arguments/arguments.mjs +9 -0
- package/node_modules/typebox/build/system/arguments/index.d.mts +1 -0
- package/node_modules/typebox/build/system/arguments/index.mjs +1 -0
- package/node_modules/typebox/build/system/environment/environment.d.mts +1 -0
- package/node_modules/typebox/build/system/environment/environment.mjs +1 -0
- package/node_modules/typebox/build/system/environment/evaluate.d.mts +9 -0
- package/node_modules/typebox/build/system/environment/evaluate.mjs +37 -0
- package/node_modules/typebox/build/system/environment/index.d.mts +1 -0
- package/node_modules/typebox/build/system/environment/index.mjs +1 -0
- package/node_modules/typebox/build/system/hashing/hash.d.mts +4 -0
- package/node_modules/typebox/build/system/hashing/hash.mjs +261 -0
- package/node_modules/typebox/build/system/hashing/index.d.mts +1 -0
- package/node_modules/typebox/build/system/hashing/index.mjs +1 -0
- package/node_modules/typebox/build/system/index.d.mts +4 -0
- package/node_modules/typebox/build/system/index.mjs +4 -0
- package/node_modules/typebox/build/system/locale/_config.d.mts +7 -0
- package/node_modules/typebox/build/system/locale/_config.mjs +15 -0
- package/node_modules/typebox/build/system/locale/_locale.d.mts +40 -0
- package/node_modules/typebox/build/system/locale/_locale.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ar_001.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ar_001.mjs +40 -0
- package/node_modules/typebox/build/system/locale/bn_BD.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/bn_BD.mjs +40 -0
- package/node_modules/typebox/build/system/locale/cs_CZ.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/cs_CZ.mjs +40 -0
- package/node_modules/typebox/build/system/locale/de_DE.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/de_DE.mjs +40 -0
- package/node_modules/typebox/build/system/locale/el_GR.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/el_GR.mjs +40 -0
- package/node_modules/typebox/build/system/locale/en_US.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/en_US.mjs +40 -0
- package/node_modules/typebox/build/system/locale/es_419.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/es_419.mjs +40 -0
- package/node_modules/typebox/build/system/locale/es_AR.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/es_AR.mjs +40 -0
- package/node_modules/typebox/build/system/locale/es_ES.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/es_ES.mjs +40 -0
- package/node_modules/typebox/build/system/locale/es_MX.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/es_MX.mjs +40 -0
- package/node_modules/typebox/build/system/locale/fa_IR.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/fa_IR.mjs +40 -0
- package/node_modules/typebox/build/system/locale/fil_PH.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/fil_PH.mjs +40 -0
- package/node_modules/typebox/build/system/locale/fr_CA.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/fr_CA.mjs +40 -0
- package/node_modules/typebox/build/system/locale/fr_FR.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/fr_FR.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ha_NG.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ha_NG.mjs +40 -0
- package/node_modules/typebox/build/system/locale/hi_IN.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/hi_IN.mjs +40 -0
- package/node_modules/typebox/build/system/locale/hu_HU.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/hu_HU.mjs +40 -0
- package/node_modules/typebox/build/system/locale/id_ID.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/id_ID.mjs +40 -0
- package/node_modules/typebox/build/system/locale/index.d.mts +1 -0
- package/node_modules/typebox/build/system/locale/index.mjs +1 -0
- package/node_modules/typebox/build/system/locale/it_IT.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/it_IT.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ja_JP.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ja_JP.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ko_KR.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ko_KR.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ms_MY.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ms_MY.mjs +40 -0
- package/node_modules/typebox/build/system/locale/nl_NL.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/nl_NL.mjs +40 -0
- package/node_modules/typebox/build/system/locale/pl_PL.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/pl_PL.mjs +40 -0
- package/node_modules/typebox/build/system/locale/pt_BR.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/pt_BR.mjs +40 -0
- package/node_modules/typebox/build/system/locale/pt_PT.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/pt_PT.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ro_RO.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ro_RO.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ru_RU.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ru_RU.mjs +40 -0
- package/node_modules/typebox/build/system/locale/sv_SE.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/sv_SE.mjs +40 -0
- package/node_modules/typebox/build/system/locale/sw_TZ.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/sw_TZ.mjs +40 -0
- package/node_modules/typebox/build/system/locale/th_TH.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/th_TH.mjs +40 -0
- package/node_modules/typebox/build/system/locale/tr_TR.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/tr_TR.mjs +40 -0
- package/node_modules/typebox/build/system/locale/uk_UA.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/uk_UA.mjs +40 -0
- package/node_modules/typebox/build/system/locale/ur_PK.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/ur_PK.mjs +40 -0
- package/node_modules/typebox/build/system/locale/vi_VN.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/vi_VN.mjs +40 -0
- package/node_modules/typebox/build/system/locale/yo_NG.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/yo_NG.mjs +40 -0
- package/node_modules/typebox/build/system/locale/zh_Hans.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/zh_Hans.mjs +40 -0
- package/node_modules/typebox/build/system/locale/zh_Hant.d.mts +3 -0
- package/node_modules/typebox/build/system/locale/zh_Hant.mjs +40 -0
- package/node_modules/typebox/build/system/memory/assign.d.mts +8 -0
- package/node_modules/typebox/build/system/memory/assign.mjs +19 -0
- package/node_modules/typebox/build/system/memory/clone.d.mts +4 -0
- package/node_modules/typebox/build/system/memory/clone.mjs +25 -0
- package/node_modules/typebox/build/system/memory/create.d.mts +4 -0
- package/node_modules/typebox/build/system/memory/create.mjs +34 -0
- package/node_modules/typebox/build/system/memory/deep.d.mts +2 -0
- package/node_modules/typebox/build/system/memory/deep.mjs +108 -0
- package/node_modules/typebox/build/system/memory/discard.d.mts +4 -0
- package/node_modules/typebox/build/system/memory/discard.mjs +19 -0
- package/node_modules/typebox/build/system/memory/finalize.d.mts +4 -0
- package/node_modules/typebox/build/system/memory/finalize.mjs +30 -0
- package/node_modules/typebox/build/system/memory/index.d.mts +1 -0
- package/node_modules/typebox/build/system/memory/index.mjs +1 -0
- package/node_modules/typebox/build/system/memory/keys.d.mts +2 -0
- package/node_modules/typebox/build/system/memory/keys.mjs +8 -0
- package/node_modules/typebox/build/system/memory/memory.d.mts +6 -0
- package/node_modules/typebox/build/system/memory/memory.mjs +7 -0
- package/node_modules/typebox/build/system/memory/metrics.d.mts +14 -0
- package/node_modules/typebox/build/system/memory/metrics.mjs +8 -0
- package/node_modules/typebox/build/system/memory/update.d.mts +4 -0
- package/node_modules/typebox/build/system/memory/update.mjs +60 -0
- package/node_modules/typebox/build/system/settings/index.d.mts +1 -0
- package/node_modules/typebox/build/system/settings/index.mjs +1 -0
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +91 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +50 -0
- package/node_modules/typebox/build/system/system.d.mts +6 -0
- package/node_modules/typebox/build/system/system.mjs +6 -0
- package/node_modules/typebox/build/system/unreachable/index.d.mts +1 -0
- package/node_modules/typebox/build/system/unreachable/index.mjs +1 -0
- package/node_modules/typebox/build/system/unreachable/unreachable.d.mts +3 -0
- package/node_modules/typebox/build/system/unreachable/unreachable.mjs +6 -0
- package/node_modules/typebox/build/type/action/_add_immutable.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_immutable.mjs +11 -0
- package/node_modules/typebox/build/type/action/_add_optional.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_optional.mjs +11 -0
- package/node_modules/typebox/build/type/action/_add_readonly.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_add_readonly.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_immutable.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_immutable.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_optional.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_optional.mjs +11 -0
- package/node_modules/typebox/build/type/action/_remove_readonly.d.mts +11 -0
- package/node_modules/typebox/build/type/action/_remove_readonly.mjs +11 -0
- package/node_modules/typebox/build/type/action/capitalize.d.mts +11 -0
- package/node_modules/typebox/build/type/action/capitalize.mjs +11 -0
- package/node_modules/typebox/build/type/action/conditional.d.mts +12 -0
- package/node_modules/typebox/build/type/action/conditional.mjs +13 -0
- package/node_modules/typebox/build/type/action/constructor_parameters.d.mts +11 -0
- package/node_modules/typebox/build/type/action/constructor_parameters.mjs +11 -0
- package/node_modules/typebox/build/type/action/evaluate.d.mts +11 -0
- package/node_modules/typebox/build/type/action/evaluate.mjs +11 -0
- package/node_modules/typebox/build/type/action/exclude.d.mts +11 -0
- package/node_modules/typebox/build/type/action/exclude.mjs +11 -0
- package/node_modules/typebox/build/type/action/extract.d.mts +11 -0
- package/node_modules/typebox/build/type/action/extract.mjs +11 -0
- package/node_modules/typebox/build/type/action/index.d.mts +30 -0
- package/node_modules/typebox/build/type/action/index.mjs +30 -0
- package/node_modules/typebox/build/type/action/indexed.d.mts +14 -0
- package/node_modules/typebox/build/type/action/indexed.mjs +14 -0
- package/node_modules/typebox/build/type/action/instance_type.d.mts +11 -0
- package/node_modules/typebox/build/type/action/instance_type.mjs +11 -0
- package/node_modules/typebox/build/type/action/interface.d.mts +14 -0
- package/node_modules/typebox/build/type/action/interface.mjs +22 -0
- package/node_modules/typebox/build/type/action/keyof.d.mts +11 -0
- package/node_modules/typebox/build/type/action/keyof.mjs +11 -0
- package/node_modules/typebox/build/type/action/lowercase.d.mts +11 -0
- package/node_modules/typebox/build/type/action/lowercase.mjs +11 -0
- package/node_modules/typebox/build/type/action/mapped.d.mts +13 -0
- package/node_modules/typebox/build/type/action/mapped.mjs +13 -0
- package/node_modules/typebox/build/type/action/module.d.mts +13 -0
- package/node_modules/typebox/build/type/action/module.mjs +13 -0
- package/node_modules/typebox/build/type/action/non_nullable.d.mts +11 -0
- package/node_modules/typebox/build/type/action/non_nullable.mjs +11 -0
- package/node_modules/typebox/build/type/action/omit.d.mts +14 -0
- package/node_modules/typebox/build/type/action/omit.mjs +14 -0
- package/node_modules/typebox/build/type/action/parameters.d.mts +11 -0
- package/node_modules/typebox/build/type/action/parameters.mjs +11 -0
- package/node_modules/typebox/build/type/action/partial.d.mts +11 -0
- package/node_modules/typebox/build/type/action/partial.mjs +11 -0
- package/node_modules/typebox/build/type/action/pick.d.mts +14 -0
- package/node_modules/typebox/build/type/action/pick.mjs +14 -0
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +16 -0
- package/node_modules/typebox/build/type/action/readonly_object.mjs +19 -0
- package/node_modules/typebox/build/type/action/required.d.mts +11 -0
- package/node_modules/typebox/build/type/action/required.mjs +11 -0
- package/node_modules/typebox/build/type/action/return_type.d.mts +11 -0
- package/node_modules/typebox/build/type/action/return_type.mjs +11 -0
- package/node_modules/typebox/build/type/action/uncapitalize.d.mts +11 -0
- package/node_modules/typebox/build/type/action/uncapitalize.mjs +11 -0
- package/node_modules/typebox/build/type/action/uppercase.d.mts +11 -0
- package/node_modules/typebox/build/type/action/uppercase.mjs +11 -0
- package/node_modules/typebox/build/type/action/with.d.mts +11 -0
- package/node_modules/typebox/build/type/action/with.mjs +11 -0
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +20 -0
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +66 -0
- package/node_modules/typebox/build/type/engine/call/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/call/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/call/instantiate.d.mts +21 -0
- package/node_modules/typebox/build/type/engine/call/instantiate.mjs +79 -0
- package/node_modules/typebox/build/type/engine/call/resolve_arguments.d.mts +13 -0
- package/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs +33 -0
- package/node_modules/typebox/build/type/engine/call/resolve_target.d.mts +25 -0
- package/node_modules/typebox/build/type/engine/call/resolve_target.mjs +27 -0
- package/node_modules/typebox/build/type/engine/conditional/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/conditional/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/conditional/instantiate.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/conditional/instantiate.mjs +23 -0
- package/node_modules/typebox/build/type/engine/constructor_parameters/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/constructor_parameters/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.d.mts +14 -0
- package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs +25 -0
- package/node_modules/typebox/build/type/engine/cyclic/candidates.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/cyclic/candidates.mjs +16 -0
- package/node_modules/typebox/build/type/engine/cyclic/check.d.mts +21 -0
- package/node_modules/typebox/build/type/engine/cyclic/check.mjs +45 -0
- package/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +22 -0
- package/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +47 -0
- package/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +28 -0
- package/node_modules/typebox/build/type/engine/cyclic/extends.mjs +47 -0
- package/node_modules/typebox/build/type/engine/cyclic/index.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/cyclic/index.mjs +6 -0
- package/node_modules/typebox/build/type/engine/cyclic/instantiate.d.mts +17 -0
- package/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs +31 -0
- package/node_modules/typebox/build/type/engine/cyclic/target.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/cyclic/target.mjs +16 -0
- package/node_modules/typebox/build/type/engine/enum/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/enum/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/enum/typescript_enum_to_enum_values.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/enum/typescript_enum_to_enum_values.mjs +9 -0
- package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +15 -0
- package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +37 -0
- package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +11 -0
- package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +18 -0
- package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +15 -0
- package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +33 -0
- package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +33 -0
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +26 -0
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +56 -0
- package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +10 -0
- package/node_modules/typebox/build/type/engine/evaluate/index.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/evaluate/index.mjs +9 -0
- package/node_modules/typebox/build/type/engine/evaluate/instantiate.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/evaluate/instantiate.mjs +12 -0
- package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +24 -0
- package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +36 -0
- package/node_modules/typebox/build/type/engine/evaluate/property.d.mts +30 -0
- package/node_modules/typebox/build/type/engine/evaluate/property.mjs +29 -0
- package/node_modules/typebox/build/type/engine/exclude/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/exclude/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/exclude/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/exclude/instantiate.mjs +16 -0
- package/node_modules/typebox/build/type/engine/exclude/operation.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/exclude/operation.mjs +22 -0
- package/node_modules/typebox/build/type/engine/extract/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/extract/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/extract/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/extract/instantiate.mjs +16 -0
- package/node_modules/typebox/build/type/engine/extract/operation.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/extract/operation.mjs +22 -0
- package/node_modules/typebox/build/type/engine/helpers/index.d.mts +3 -0
- package/node_modules/typebox/build/type/engine/helpers/index.mjs +3 -0
- package/node_modules/typebox/build/type/engine/helpers/keys.d.mts +3 -0
- package/node_modules/typebox/build/type/engine/helpers/keys.mjs +8 -0
- package/node_modules/typebox/build/type/engine/helpers/keys_to_indexer.d.mts +7 -0
- package/node_modules/typebox/build/type/engine/helpers/keys_to_indexer.mjs +15 -0
- package/node_modules/typebox/build/type/engine/helpers/union.d.mts +7 -0
- package/node_modules/typebox/build/type/engine/helpers/union.mjs +3 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +11 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/index.d.mts +31 -0
- package/node_modules/typebox/build/type/engine/index.mjs +37 -0
- package/node_modules/typebox/build/type/engine/indexable/from_cyclic.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/indexable/from_cyclic.mjs +8 -0
- package/node_modules/typebox/build/type/engine/indexable/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/indexable/from_enum.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/indexable/from_enum.mjs +8 -0
- package/node_modules/typebox/build/type/engine/indexable/from_intersect.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/indexable/from_intersect.mjs +8 -0
- package/node_modules/typebox/build/type/engine/indexable/from_literal.d.mts +3 -0
- package/node_modules/typebox/build/type/engine/indexable/from_literal.mjs +5 -0
- package/node_modules/typebox/build/type/engine/indexable/from_template_literal.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs +8 -0
- package/node_modules/typebox/build/type/engine/indexable/from_type.d.mts +19 -0
- package/node_modules/typebox/build/type/engine/indexable/from_type.mjs +25 -0
- package/node_modules/typebox/build/type/engine/indexable/from_union.d.mts +4 -0
- package/node_modules/typebox/build/type/engine/indexable/from_union.mjs +7 -0
- package/node_modules/typebox/build/type/engine/indexable/to_indexable.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/indexable/to_indexable.mjs +14 -0
- package/node_modules/typebox/build/type/engine/indexable/to_indexable_keys.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/indexable/to_indexable_keys.mjs +12 -0
- package/node_modules/typebox/build/type/engine/indexed/array_indexer.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/indexed/array_indexer.mjs +18 -0
- package/node_modules/typebox/build/type/engine/indexed/from_array.d.mts +15 -0
- package/node_modules/typebox/build/type/engine/indexed/from_array.mjs +35 -0
- package/node_modules/typebox/build/type/engine/indexed/from_object.d.mts +16 -0
- package/node_modules/typebox/build/type/engine/indexed/from_object.mjs +40 -0
- package/node_modules/typebox/build/type/engine/indexed/from_tuple.d.mts +13 -0
- package/node_modules/typebox/build/type/engine/indexed/from_tuple.mjs +35 -0
- package/node_modules/typebox/build/type/engine/indexed/from_type.d.mts +11 -0
- package/node_modules/typebox/build/type/engine/indexed/from_type.mjs +14 -0
- package/node_modules/typebox/build/type/engine/indexed/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/indexed/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +16 -0
- package/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +28 -0
- package/node_modules/typebox/build/type/engine/instance_type/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/instance_type/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/instance_type/instantiate.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/instance_type/instantiate.mjs +21 -0
- package/node_modules/typebox/build/type/engine/instantiate.d.mts +178 -0
- package/node_modules/typebox/build/type/engine/instantiate.mjs +158 -0
- package/node_modules/typebox/build/type/engine/interface/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/interface/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/interface/instantiate.d.mts +15 -0
- package/node_modules/typebox/build/type/engine/interface/instantiate.mjs +23 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_literal.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_literal.mjs +9 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs +8 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_type.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_type.mjs +13 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_union.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/intrinsics/from_union.mjs +7 -0
- package/node_modules/typebox/build/type/engine/intrinsics/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/intrinsics/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/intrinsics/instantiate.d.mts +38 -0
- package/node_modules/typebox/build/type/engine/intrinsics/instantiate.mjs +52 -0
- package/node_modules/typebox/build/type/engine/intrinsics/mapping.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/intrinsics/mapping.mjs +4 -0
- package/node_modules/typebox/build/type/engine/keyof/from_any.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/keyof/from_any.mjs +8 -0
- package/node_modules/typebox/build/type/engine/keyof/from_array.d.mts +4 -0
- package/node_modules/typebox/build/type/engine/keyof/from_array.mjs +5 -0
- package/node_modules/typebox/build/type/engine/keyof/from_object.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/keyof/from_object.mjs +20 -0
- package/node_modules/typebox/build/type/engine/keyof/from_record.d.mts +4 -0
- package/node_modules/typebox/build/type/engine/keyof/from_record.mjs +5 -0
- package/node_modules/typebox/build/type/engine/keyof/from_tuple.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/keyof/from_tuple.mjs +7 -0
- package/node_modules/typebox/build/type/engine/keyof/from_type.d.mts +15 -0
- package/node_modules/typebox/build/type/engine/keyof/from_type.mjs +23 -0
- package/node_modules/typebox/build/type/engine/keyof/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/keyof/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +16 -0
- package/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +29 -0
- package/node_modules/typebox/build/type/engine/mapped/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/mapped/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/mapped/instantiate.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/mapped/instantiate.mjs +15 -0
- package/node_modules/typebox/build/type/engine/mapped/mapped_operation.d.mts +22 -0
- package/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs +42 -0
- package/node_modules/typebox/build/type/engine/mapped/mapped_variants.d.mts +17 -0
- package/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs +39 -0
- package/node_modules/typebox/build/type/engine/module/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/module/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/module/instantiate.d.mts +19 -0
- package/node_modules/typebox/build/type/engine/module/instantiate.mjs +36 -0
- package/node_modules/typebox/build/type/engine/non_nullable/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/non_nullable/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/non_nullable/instantiate.d.mts +14 -0
- package/node_modules/typebox/build/type/engine/non_nullable/instantiate.mjs +22 -0
- package/node_modules/typebox/build/type/engine/object/collapse.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/object/collapse.mjs +14 -0
- package/node_modules/typebox/build/type/engine/object/from_cyclic.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/object/from_cyclic.mjs +8 -0
- package/node_modules/typebox/build/type/engine/object/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/object/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/object/from_intersect.d.mts +17 -0
- package/node_modules/typebox/build/type/engine/object/from_intersect.mjs +22 -0
- package/node_modules/typebox/build/type/engine/object/from_object.d.mts +3 -0
- package/node_modules/typebox/build/type/engine/object/from_object.mjs +4 -0
- package/node_modules/typebox/build/type/engine/object/from_tuple.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/object/from_tuple.mjs +9 -0
- package/node_modules/typebox/build/type/engine/object/from_type.d.mts +16 -0
- package/node_modules/typebox/build/type/engine/object/from_type.mjs +23 -0
- package/node_modules/typebox/build/type/engine/object/from_union.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/object/from_union.mjs +19 -0
- package/node_modules/typebox/build/type/engine/object/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/object/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/omit/from_type.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/omit/from_type.mjs +18 -0
- package/node_modules/typebox/build/type/engine/omit/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/omit/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/omit/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/omit/instantiate.mjs +16 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +11 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/parameters/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/parameters/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/parameters/instantiate.d.mts +14 -0
- package/node_modules/typebox/build/type/engine/parameters/instantiate.mjs +25 -0
- package/node_modules/typebox/build/type/engine/partial/from_cyclic.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/partial/from_cyclic.mjs +11 -0
- package/node_modules/typebox/build/type/engine/partial/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/partial/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/partial/from_intersect.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/partial/from_intersect.mjs +8 -0
- package/node_modules/typebox/build/type/engine/partial/from_object.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/partial/from_object.mjs +11 -0
- package/node_modules/typebox/build/type/engine/partial/from_type.d.mts +14 -0
- package/node_modules/typebox/build/type/engine/partial/from_type.mjs +20 -0
- package/node_modules/typebox/build/type/engine/partial/from_union.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/partial/from_union.mjs +7 -0
- package/node_modules/typebox/build/type/engine/partial/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/partial/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/partial/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/partial/instantiate.mjs +15 -0
- package/node_modules/typebox/build/type/engine/patterns/index.d.mts +2 -0
- package/node_modules/typebox/build/type/engine/patterns/index.mjs +2 -0
- package/node_modules/typebox/build/type/engine/patterns/pattern.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/patterns/pattern.mjs +11 -0
- package/node_modules/typebox/build/type/engine/patterns/template.d.mts +7 -0
- package/node_modules/typebox/build/type/engine/patterns/template.mjs +20 -0
- package/node_modules/typebox/build/type/engine/pick/from_type.d.mts +13 -0
- package/node_modules/typebox/build/type/engine/pick/from_type.mjs +20 -0
- package/node_modules/typebox/build/type/engine/pick/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/pick/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/pick/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/pick/instantiate.mjs +16 -0
- package/node_modules/typebox/build/type/engine/priority/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/priority/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/priority/priority.d.mts +20 -0
- package/node_modules/typebox/build/type/engine/priority/priority.mjs +27 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +11 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs +14 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_array.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs +7 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_cyclic.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_cyclic.mjs +11 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs +8 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_object.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs +11 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs +7 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_type.d.mts +18 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs +25 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_union.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/readonly_object/from_union.mjs +7 -0
- package/node_modules/typebox/build/type/engine/readonly_object/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/readonly_object/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/readonly_object/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/readonly_object/instantiate.mjs +15 -0
- package/node_modules/typebox/build/type/engine/record/from_key.d.mts +24 -0
- package/node_modules/typebox/build/type/engine/record/from_key.mjs +40 -0
- package/node_modules/typebox/build/type/engine/record/from_key_any.d.mts +4 -0
- package/node_modules/typebox/build/type/engine/record/from_key_any.mjs +6 -0
- package/node_modules/typebox/build/type/engine/record/from_key_boolean.d.mts +7 -0
- package/node_modules/typebox/build/type/engine/record/from_key_boolean.mjs +5 -0
- package/node_modules/typebox/build/type/engine/record/from_key_enum.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/record/from_key_enum.mjs +8 -0
- package/node_modules/typebox/build/type/engine/record/from_key_integer.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/record/from_key_integer.mjs +7 -0
- package/node_modules/typebox/build/type/engine/record/from_key_intersect.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/record/from_key_intersect.mjs +8 -0
- package/node_modules/typebox/build/type/engine/record/from_key_literal.d.mts +11 -0
- package/node_modules/typebox/build/type/engine/record/from_key_literal.mjs +10 -0
- package/node_modules/typebox/build/type/engine/record/from_key_number.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/record/from_key_number.mjs +7 -0
- package/node_modules/typebox/build/type/engine/record/from_key_string.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/record/from_key_string.mjs +12 -0
- package/node_modules/typebox/build/type/engine/record/from_key_template_literal.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs +12 -0
- package/node_modules/typebox/build/type/engine/record/from_key_union.d.mts +20 -0
- package/node_modules/typebox/build/type/engine/record/from_key_union.mjs +39 -0
- package/node_modules/typebox/build/type/engine/record/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/record/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/record/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/record/instantiate.mjs +17 -0
- package/node_modules/typebox/build/type/engine/record/record_create.d.mts +3 -0
- package/node_modules/typebox/build/type/engine/record/record_create.mjs +7 -0
- package/node_modules/typebox/build/type/engine/ref/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/ref/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/ref/instantiate.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/ref/instantiate.mjs +10 -0
- package/node_modules/typebox/build/type/engine/required/from_cyclic.d.mts +10 -0
- package/node_modules/typebox/build/type/engine/required/from_cyclic.mjs +11 -0
- package/node_modules/typebox/build/type/engine/required/from_dependent.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/required/from_dependent.mjs +8 -0
- package/node_modules/typebox/build/type/engine/required/from_intersect.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/required/from_intersect.mjs +8 -0
- package/node_modules/typebox/build/type/engine/required/from_object.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/required/from_object.mjs +11 -0
- package/node_modules/typebox/build/type/engine/required/from_type.d.mts +14 -0
- package/node_modules/typebox/build/type/engine/required/from_type.mjs +20 -0
- package/node_modules/typebox/build/type/engine/required/from_union.d.mts +5 -0
- package/node_modules/typebox/build/type/engine/required/from_union.mjs +7 -0
- package/node_modules/typebox/build/type/engine/required/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/required/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/required/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/required/instantiate.mjs +15 -0
- package/node_modules/typebox/build/type/engine/rest/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/rest/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/rest/spread.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/rest/spread.mjs +19 -0
- package/node_modules/typebox/build/type/engine/return_type/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/return_type/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/return_type/instantiate.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/return_type/instantiate.mjs +21 -0
- package/node_modules/typebox/build/type/engine/template_literal/create.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/template_literal/create.mjs +5 -0
- package/node_modules/typebox/build/type/engine/template_literal/decode.d.mts +30 -0
- package/node_modules/typebox/build/type/engine/template_literal/decode.mjs +81 -0
- package/node_modules/typebox/build/type/engine/template_literal/encode.d.mts +33 -0
- package/node_modules/typebox/build/type/engine/template_literal/encode.mjs +81 -0
- package/node_modules/typebox/build/type/engine/template_literal/index.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/template_literal/index.mjs +6 -0
- package/node_modules/typebox/build/type/engine/template_literal/instantiate.d.mts +9 -0
- package/node_modules/typebox/build/type/engine/template_literal/instantiate.mjs +15 -0
- package/node_modules/typebox/build/type/engine/template_literal/is_finite.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs +26 -0
- package/node_modules/typebox/build/type/engine/template_literal/is_pattern.d.mts +6 -0
- package/node_modules/typebox/build/type/engine/template_literal/is_pattern.mjs +10 -0
- package/node_modules/typebox/build/type/engine/template_literal/static.d.mts +18 -0
- package/node_modules/typebox/build/type/engine/template_literal/static.mjs +2 -0
- package/node_modules/typebox/build/type/engine/this/expand_this.d.mts +16 -0
- package/node_modules/typebox/build/type/engine/this/expand_this.mjs +26 -0
- package/node_modules/typebox/build/type/engine/this/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/this/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/tuple/to_object.d.mts +12 -0
- package/node_modules/typebox/build/type/engine/tuple/to_object.mjs +14 -0
- package/node_modules/typebox/build/type/engine/with/index.d.mts +1 -0
- package/node_modules/typebox/build/type/engine/with/index.mjs +1 -0
- package/node_modules/typebox/build/type/engine/with/instantiate.d.mts +8 -0
- package/node_modules/typebox/build/type/engine/with/instantiate.mjs +14 -0
- package/node_modules/typebox/build/type/extends/any.d.mts +9 -0
- package/node_modules/typebox/build/type/extends/any.mjs +12 -0
- package/node_modules/typebox/build/type/extends/array.d.mts +20 -0
- package/node_modules/typebox/build/type/extends/array.mjs +21 -0
- package/node_modules/typebox/build/type/extends/bigint.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/bigint.mjs +9 -0
- package/node_modules/typebox/build/type/extends/boolean.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/boolean.mjs +9 -0
- package/node_modules/typebox/build/type/extends/constructor.d.mts +10 -0
- package/node_modules/typebox/build/type/extends/constructor.mjs +17 -0
- package/node_modules/typebox/build/type/extends/dependent.d.mts +6 -0
- package/node_modules/typebox/build/type/extends/dependent.mjs +6 -0
- package/node_modules/typebox/build/type/extends/enum.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/enum.mjs +7 -0
- package/node_modules/typebox/build/type/extends/extends.d.mts +13 -0
- package/node_modules/typebox/build/type/extends/extends.mjs +17 -0
- package/node_modules/typebox/build/type/extends/extends_left.d.mts +53 -0
- package/node_modules/typebox/build/type/extends/extends_left.mjs +80 -0
- package/node_modules/typebox/build/type/extends/extends_right.d.mts +27 -0
- package/node_modules/typebox/build/type/extends/extends_right.mjs +49 -0
- package/node_modules/typebox/build/type/extends/function.d.mts +10 -0
- package/node_modules/typebox/build/type/extends/function.mjs +17 -0
- package/node_modules/typebox/build/type/extends/index.d.mts +2 -0
- package/node_modules/typebox/build/type/extends/index.mjs +2 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +34 -0
- package/node_modules/typebox/build/type/extends/inference.mjs +75 -0
- package/node_modules/typebox/build/type/extends/integer.d.mts +8 -0
- package/node_modules/typebox/build/type/extends/integer.mjs +10 -0
- package/node_modules/typebox/build/type/extends/intersect.d.mts +6 -0
- package/node_modules/typebox/build/type/extends/intersect.mjs +15 -0
- package/node_modules/typebox/build/type/extends/literal.d.mts +18 -0
- package/node_modules/typebox/build/type/extends/literal.mjs +44 -0
- package/node_modules/typebox/build/type/extends/never.d.mts +8 -0
- package/node_modules/typebox/build/type/extends/never.mjs +9 -0
- package/node_modules/typebox/build/type/extends/null.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/null.mjs +9 -0
- package/node_modules/typebox/build/type/extends/number.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/number.mjs +9 -0
- package/node_modules/typebox/build/type/extends/object.d.mts +32 -0
- package/node_modules/typebox/build/type/extends/object.mjs +109 -0
- package/node_modules/typebox/build/type/extends/parameters.d.mts +15 -0
- package/node_modules/typebox/build/type/extends/parameters.mjs +28 -0
- package/node_modules/typebox/build/type/extends/record.d.mts +13 -0
- package/node_modules/typebox/build/type/extends/record.mjs +23 -0
- package/node_modules/typebox/build/type/extends/result.d.mts +24 -0
- package/node_modules/typebox/build/type/extends/result.mjs +36 -0
- package/node_modules/typebox/build/type/extends/return_type.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/return_type.mjs +9 -0
- package/node_modules/typebox/build/type/extends/string.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/string.mjs +9 -0
- package/node_modules/typebox/build/type/extends/symbol.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/symbol.mjs +9 -0
- package/node_modules/typebox/build/type/extends/template_literal.d.mts +6 -0
- package/node_modules/typebox/build/type/extends/template_literal.mjs +7 -0
- package/node_modules/typebox/build/type/extends/tuple.d.mts +23 -0
- package/node_modules/typebox/build/type/extends/tuple.mjs +81 -0
- package/node_modules/typebox/build/type/extends/undefined.d.mts +8 -0
- package/node_modules/typebox/build/type/extends/undefined.mjs +10 -0
- package/node_modules/typebox/build/type/extends/union.d.mts +11 -0
- package/node_modules/typebox/build/type/extends/union.mjs +24 -0
- package/node_modules/typebox/build/type/extends/unknown.d.mts +9 -0
- package/node_modules/typebox/build/type/extends/unknown.mjs +12 -0
- package/node_modules/typebox/build/type/extends/void.d.mts +7 -0
- package/node_modules/typebox/build/type/extends/void.mjs +9 -0
- package/node_modules/typebox/build/type/index.d.mts +5 -0
- package/node_modules/typebox/build/type/index.mjs +5 -0
- package/node_modules/typebox/build/type/script/index.d.mts +1 -0
- package/node_modules/typebox/build/type/script/index.mjs +1 -0
- package/node_modules/typebox/build/type/script/mapping.d.mts +356 -0
- package/node_modules/typebox/build/type/script/mapping.mjs +528 -0
- package/node_modules/typebox/build/type/script/parser.d.mts +256 -0
- package/node_modules/typebox/build/type/script/parser.mjs +140 -0
- package/node_modules/typebox/build/type/script/script.d.mts +16 -0
- package/node_modules/typebox/build/type/script/script.mjs +22 -0
- package/node_modules/typebox/build/type/script/token/bigint.d.mts +8 -0
- package/node_modules/typebox/build/type/script/token/bigint.mjs +14 -0
- package/node_modules/typebox/build/type/script/token/const.d.mts +11 -0
- package/node_modules/typebox/build/type/script/token/const.mjs +18 -0
- package/node_modules/typebox/build/type/script/token/ident.d.mts +16 -0
- package/node_modules/typebox/build/type/script/token/ident.mjs +26 -0
- package/node_modules/typebox/build/type/script/token/index.d.mts +12 -0
- package/node_modules/typebox/build/type/script/token/index.mjs +12 -0
- package/node_modules/typebox/build/type/script/token/integer.d.mts +11 -0
- package/node_modules/typebox/build/type/script/token/integer.mjs +19 -0
- package/node_modules/typebox/build/type/script/token/internal/char.d.mts +75 -0
- package/node_modules/typebox/build/type/script/token/internal/char.mjs +26 -0
- package/node_modules/typebox/build/type/script/token/internal/guard.d.mts +1 -0
- package/node_modules/typebox/build/type/script/token/internal/guard.mjs +15 -0
- package/node_modules/typebox/build/type/script/token/internal/many.d.mts +7 -0
- package/node_modules/typebox/build/type/script/token/internal/many.mjs +14 -0
- package/node_modules/typebox/build/type/script/token/internal/match.d.mts +6 -0
- package/node_modules/typebox/build/type/script/token/internal/match.mjs +11 -0
- package/node_modules/typebox/build/type/script/token/internal/optional.d.mts +5 -0
- package/node_modules/typebox/build/type/script/token/internal/optional.mjs +9 -0
- package/node_modules/typebox/build/type/script/token/internal/take.d.mts +6 -0
- package/node_modules/typebox/build/type/script/token/internal/take.mjs +30 -0
- package/node_modules/typebox/build/type/script/token/internal/trim.d.mts +19 -0
- package/node_modules/typebox/build/type/script/token/internal/trim.mjs +34 -0
- package/node_modules/typebox/build/type/script/token/number.d.mts +11 -0
- package/node_modules/typebox/build/type/script/token/number.mjs +19 -0
- package/node_modules/typebox/build/type/script/token/rest.d.mts +4 -0
- package/node_modules/typebox/build/type/script/token/rest.mjs +9 -0
- package/node_modules/typebox/build/type/script/token/span.d.mts +11 -0
- package/node_modules/typebox/build/type/script/token/span.mjs +24 -0
- package/node_modules/typebox/build/type/script/token/string.d.mts +11 -0
- package/node_modules/typebox/build/type/script/token/string.mjs +20 -0
- package/node_modules/typebox/build/type/script/token/unsigned_integer.d.mts +16 -0
- package/node_modules/typebox/build/type/script/token/unsigned_integer.mjs +26 -0
- package/node_modules/typebox/build/type/script/token/unsigned_number.d.mts +17 -0
- package/node_modules/typebox/build/type/script/token/unsigned_number.mjs +38 -0
- package/node_modules/typebox/build/type/script/token/until.d.mts +7 -0
- package/node_modules/typebox/build/type/script/token/until.mjs +21 -0
- package/node_modules/typebox/build/type/script/token/until_1.d.mts +5 -0
- package/node_modules/typebox/build/type/script/token/until_1.mjs +12 -0
- package/node_modules/typebox/build/type/types/_codec.d.mts +30 -0
- package/node_modules/typebox/build/type/types/_codec.mjs +60 -0
- package/node_modules/typebox/build/type/types/_immutable.d.mts +9 -0
- package/node_modules/typebox/build/type/types/_immutable.mjs +18 -0
- package/node_modules/typebox/build/type/types/_optional.d.mts +9 -0
- package/node_modules/typebox/build/type/types/_optional.mjs +18 -0
- package/node_modules/typebox/build/type/types/_readonly.d.mts +9 -0
- package/node_modules/typebox/build/type/types/_readonly.mjs +18 -0
- package/node_modules/typebox/build/type/types/_refine.d.mts +24 -0
- package/node_modules/typebox/build/type/types/_refine.mjs +36 -0
- package/node_modules/typebox/build/type/types/any.d.mts +10 -0
- package/node_modules/typebox/build/type/types/any.mjs +18 -0
- package/node_modules/typebox/build/type/types/array.d.mts +18 -0
- package/node_modules/typebox/build/type/types/array.mjs +25 -0
- package/node_modules/typebox/build/type/types/bigint.d.mts +12 -0
- package/node_modules/typebox/build/type/types/bigint.mjs +21 -0
- package/node_modules/typebox/build/type/types/boolean.d.mts +11 -0
- package/node_modules/typebox/build/type/types/boolean.mjs +17 -0
- package/node_modules/typebox/build/type/types/call.d.mts +16 -0
- package/node_modules/typebox/build/type/types/call.mjs +23 -0
- package/node_modules/typebox/build/type/types/constructor.d.mts +18 -0
- package/node_modules/typebox/build/type/types/constructor.mjs +24 -0
- package/node_modules/typebox/build/type/types/cyclic.d.mts +16 -0
- package/node_modules/typebox/build/type/types/cyclic.mjs +29 -0
- package/node_modules/typebox/build/type/types/deferred.d.mts +13 -0
- package/node_modules/typebox/build/type/types/deferred.mjs +16 -0
- package/node_modules/typebox/build/type/types/dependent.d.mts +17 -0
- package/node_modules/typebox/build/type/types/dependent.mjs +24 -0
- package/node_modules/typebox/build/type/types/enum.d.mts +18 -0
- package/node_modules/typebox/build/type/types/enum.mjs +22 -0
- package/node_modules/typebox/build/type/types/function.d.mts +21 -0
- package/node_modules/typebox/build/type/types/function.mjs +25 -0
- package/node_modules/typebox/build/type/types/generic.d.mts +13 -0
- package/node_modules/typebox/build/type/types/generic.mjs +17 -0
- package/node_modules/typebox/build/type/types/identifier.d.mts +11 -0
- package/node_modules/typebox/build/type/types/identifier.mjs +17 -0
- package/node_modules/typebox/build/type/types/index.d.mts +45 -0
- package/node_modules/typebox/build/type/types/index.mjs +51 -0
- package/node_modules/typebox/build/type/types/infer.d.mts +15 -0
- package/node_modules/typebox/build/type/types/infer.mjs +20 -0
- package/node_modules/typebox/build/type/types/integer.d.mts +12 -0
- package/node_modules/typebox/build/type/types/integer.mjs +21 -0
- package/node_modules/typebox/build/type/types/intersect.d.mts +15 -0
- package/node_modules/typebox/build/type/types/intersect.mjs +24 -0
- package/node_modules/typebox/build/type/types/literal.d.mts +31 -0
- package/node_modules/typebox/build/type/types/literal.mjs +62 -0
- package/node_modules/typebox/build/type/types/never.d.mts +12 -0
- package/node_modules/typebox/build/type/types/never.mjs +22 -0
- package/node_modules/typebox/build/type/types/null.d.mts +11 -0
- package/node_modules/typebox/build/type/types/null.mjs +17 -0
- package/node_modules/typebox/build/type/types/number.d.mts +12 -0
- package/node_modules/typebox/build/type/types/number.mjs +21 -0
- package/node_modules/typebox/build/type/types/object.d.mts +18 -0
- package/node_modules/typebox/build/type/types/object.mjs +28 -0
- package/node_modules/typebox/build/type/types/parameter.d.mts +17 -0
- package/node_modules/typebox/build/type/types/parameter.mjs +21 -0
- package/node_modules/typebox/build/type/types/properties.d.mts +43 -0
- package/node_modules/typebox/build/type/types/properties.mjs +15 -0
- package/node_modules/typebox/build/type/types/record.d.mts +52 -0
- package/node_modules/typebox/build/type/types/record.mjs +66 -0
- package/node_modules/typebox/build/type/types/ref.d.mts +19 -0
- package/node_modules/typebox/build/type/types/ref.mjs +18 -0
- package/node_modules/typebox/build/type/types/rest.d.mts +11 -0
- package/node_modules/typebox/build/type/types/rest.mjs +17 -0
- package/node_modules/typebox/build/type/types/schema.d.mts +176 -0
- package/node_modules/typebox/build/type/types/schema.mjs +15 -0
- package/node_modules/typebox/build/type/types/static.d.mts +45 -0
- package/node_modules/typebox/build/type/types/static.mjs +3 -0
- package/node_modules/typebox/build/type/types/string.d.mts +12 -0
- package/node_modules/typebox/build/type/types/string.mjs +22 -0
- package/node_modules/typebox/build/type/types/symbol.d.mts +11 -0
- package/node_modules/typebox/build/type/types/symbol.mjs +17 -0
- package/node_modules/typebox/build/type/types/template_literal.d.mts +28 -0
- package/node_modules/typebox/build/type/types/template_literal.mjs +37 -0
- package/node_modules/typebox/build/type/types/this.d.mts +14 -0
- package/node_modules/typebox/build/type/types/this.mjs +17 -0
- package/node_modules/typebox/build/type/types/tuple.d.mts +38 -0
- package/node_modules/typebox/build/type/types/tuple.mjs +25 -0
- package/node_modules/typebox/build/type/types/undefined.d.mts +11 -0
- package/node_modules/typebox/build/type/types/undefined.mjs +17 -0
- package/node_modules/typebox/build/type/types/union.d.mts +15 -0
- package/node_modules/typebox/build/type/types/union.mjs +24 -0
- package/node_modules/typebox/build/type/types/unknown.d.mts +10 -0
- package/node_modules/typebox/build/type/types/unknown.mjs +17 -0
- package/node_modules/typebox/build/type/types/unsafe.d.mts +10 -0
- package/node_modules/typebox/build/type/types/unsafe.mjs +20 -0
- package/node_modules/typebox/build/type/types/void.d.mts +11 -0
- package/node_modules/typebox/build/type/types/void.mjs +17 -0
- package/node_modules/typebox/build/typebox.d.mts +69 -0
- package/node_modules/typebox/build/typebox.mjs +85 -0
- package/node_modules/typebox/build/value/assert/assert.d.mts +14 -0
- package/node_modules/typebox/build/value/assert/assert.mjs +28 -0
- package/node_modules/typebox/build/value/assert/index.d.mts +1 -0
- package/node_modules/typebox/build/value/assert/index.mjs +1 -0
- package/node_modules/typebox/build/value/check/check.d.mts +5 -0
- package/node_modules/typebox/build/value/check/check.mjs +11 -0
- package/node_modules/typebox/build/value/check/index.d.mts +1 -0
- package/node_modules/typebox/build/value/check/index.mjs +1 -0
- package/node_modules/typebox/build/value/clean/additional.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/additional.mjs +6 -0
- package/node_modules/typebox/build/value/clean/clean.d.mts +15 -0
- package/node_modules/typebox/build/value/clean/clean.mjs +17 -0
- package/node_modules/typebox/build/value/clean/from_array.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_array.mjs +8 -0
- package/node_modules/typebox/build/value/clean/from_cyclic.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_cyclic.mjs +6 -0
- package/node_modules/typebox/build/value/clean/from_intersect.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_intersect.mjs +26 -0
- package/node_modules/typebox/build/value/clean/from_object.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_object.mjs +31 -0
- package/node_modules/typebox/build/value/clean/from_record.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_record.mjs +32 -0
- package/node_modules/typebox/build/value/clean/from_ref.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_ref.mjs +8 -0
- package/node_modules/typebox/build/value/clean/from_tuple.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_tuple.mjs +14 -0
- package/node_modules/typebox/build/value/clean/from_type.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_type.mjs +21 -0
- package/node_modules/typebox/build/value/clean/from_union.d.mts +2 -0
- package/node_modules/typebox/build/value/clean/from_union.mjs +12 -0
- package/node_modules/typebox/build/value/clean/index.d.mts +1 -0
- package/node_modules/typebox/build/value/clean/index.mjs +1 -0
- package/node_modules/typebox/build/value/clone/clone.d.mts +6 -0
- package/node_modules/typebox/build/value/clone/clone.mjs +10 -0
- package/node_modules/typebox/build/value/clone/index.d.mts +1 -0
- package/node_modules/typebox/build/value/clone/index.mjs +1 -0
- package/node_modules/typebox/build/value/codec/callback.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/callback.mjs +25 -0
- package/node_modules/typebox/build/value/codec/decode.d.mts +12 -0
- package/node_modules/typebox/build/value/codec/decode.mjs +52 -0
- package/node_modules/typebox/build/value/codec/encode.d.mts +12 -0
- package/node_modules/typebox/build/value/codec/encode.mjs +52 -0
- package/node_modules/typebox/build/value/codec/from_array.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_array.mjs +35 -0
- package/node_modules/typebox/build/value/codec/from_cyclic.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_cyclic.mjs +8 -0
- package/node_modules/typebox/build/value/codec/from_intersect.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_intersect.mjs +58 -0
- package/node_modules/typebox/build/value/codec/from_object.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_object.mjs +42 -0
- package/node_modules/typebox/build/value/codec/from_record.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_record.mjs +39 -0
- package/node_modules/typebox/build/value/codec/from_ref.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_ref.mjs +31 -0
- package/node_modules/typebox/build/value/codec/from_tuple.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_tuple.mjs +32 -0
- package/node_modules/typebox/build/value/codec/from_type.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_type.mjs +22 -0
- package/node_modules/typebox/build/value/codec/from_union.d.mts +2 -0
- package/node_modules/typebox/build/value/codec/from_union.mjs +39 -0
- package/node_modules/typebox/build/value/codec/has.d.mts +5 -0
- package/node_modules/typebox/build/value/codec/has.mjs +93 -0
- package/node_modules/typebox/build/value/codec/index.d.mts +3 -0
- package/node_modules/typebox/build/value/codec/index.mjs +3 -0
- package/node_modules/typebox/build/value/convert/convert.d.mts +13 -0
- package/node_modules/typebox/build/value/convert/convert.mjs +15 -0
- package/node_modules/typebox/build/value/convert/from_additional.d.mts +6 -0
- package/node_modules/typebox/build/value/convert/from_additional.mjs +18 -0
- package/node_modules/typebox/build/value/convert/from_array.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_array.mjs +7 -0
- package/node_modules/typebox/build/value/convert/from_bigint.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_bigint.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_boolean.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_boolean.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_cyclic.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_cyclic.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_enum.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_enum.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_integer.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_integer.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_intersect.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_intersect.mjs +8 -0
- package/node_modules/typebox/build/value/convert/from_literal.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_literal.mjs +44 -0
- package/node_modules/typebox/build/value/convert/from_null.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_null.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_number.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_number.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_object.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_object.mjs +28 -0
- package/node_modules/typebox/build/value/convert/from_record.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_record.mjs +23 -0
- package/node_modules/typebox/build/value/convert/from_ref.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_ref.mjs +8 -0
- package/node_modules/typebox/build/value/convert/from_string.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_string.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_template_literal.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_template_literal.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_tuple.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_tuple.mjs +11 -0
- package/node_modules/typebox/build/value/convert/from_type.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_type.mjs +43 -0
- package/node_modules/typebox/build/value/convert/from_undefined.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_undefined.mjs +6 -0
- package/node_modules/typebox/build/value/convert/from_union.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_union.mjs +13 -0
- package/node_modules/typebox/build/value/convert/from_void.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/from_void.mjs +6 -0
- package/node_modules/typebox/build/value/convert/index.d.mts +1 -0
- package/node_modules/typebox/build/value/convert/index.mjs +1 -0
- package/node_modules/typebox/build/value/convert/try/index.d.mts +1 -0
- package/node_modules/typebox/build/value/convert/try/index.mjs +1 -0
- package/node_modules/typebox/build/value/convert/try/try.d.mts +8 -0
- package/node_modules/typebox/build/value/convert/try/try.mjs +8 -0
- package/node_modules/typebox/build/value/convert/try/try_array.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/try/try_array.mjs +6 -0
- package/node_modules/typebox/build/value/convert/try/try_bigint.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/try/try_bigint.mjs +45 -0
- package/node_modules/typebox/build/value/convert/try/try_boolean.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/try/try_boolean.mjs +41 -0
- package/node_modules/typebox/build/value/convert/try/try_null.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/try/try_null.mjs +44 -0
- package/node_modules/typebox/build/value/convert/try/try_number.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/try/try_number.mjs +44 -0
- package/node_modules/typebox/build/value/convert/try/try_result.d.mts +8 -0
- package/node_modules/typebox/build/value/convert/try/try_result.mjs +17 -0
- package/node_modules/typebox/build/value/convert/try/try_string.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/try/try_string.mjs +12 -0
- package/node_modules/typebox/build/value/convert/try/try_undefined.d.mts +2 -0
- package/node_modules/typebox/build/value/convert/try/try_undefined.mjs +44 -0
- package/node_modules/typebox/build/value/create/create.d.mts +5 -0
- package/node_modules/typebox/build/value/create/create.mjs +11 -0
- package/node_modules/typebox/build/value/create/error.d.mts +5 -0
- package/node_modules/typebox/build/value/create/error.mjs +7 -0
- package/node_modules/typebox/build/value/create/from_array.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_array.mjs +10 -0
- package/node_modules/typebox/build/value/create/from_bigint.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_bigint.mjs +7 -0
- package/node_modules/typebox/build/value/create/from_boolean.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_boolean.mjs +4 -0
- package/node_modules/typebox/build/value/create/from_constructor.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_constructor.mjs +10 -0
- package/node_modules/typebox/build/value/create/from_cyclic.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_cyclic.mjs +6 -0
- package/node_modules/typebox/build/value/create/from_default.d.mts +3 -0
- package/node_modules/typebox/build/value/create/from_default.mjs +10 -0
- package/node_modules/typebox/build/value/create/from_enum.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_enum.mjs +6 -0
- package/node_modules/typebox/build/value/create/from_function.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_function.mjs +6 -0
- package/node_modules/typebox/build/value/create/from_integer.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_integer.mjs +8 -0
- package/node_modules/typebox/build/value/create/from_intersect.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_intersect.mjs +8 -0
- package/node_modules/typebox/build/value/create/from_literal.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_literal.mjs +4 -0
- package/node_modules/typebox/build/value/create/from_never.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_never.mjs +5 -0
- package/node_modules/typebox/build/value/create/from_null.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_null.mjs +4 -0
- package/node_modules/typebox/build/value/create/from_number.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_number.mjs +8 -0
- package/node_modules/typebox/build/value/create/from_object.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_object.mjs +9 -0
- package/node_modules/typebox/build/value/create/from_record.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_record.mjs +8 -0
- package/node_modules/typebox/build/value/create/from_ref.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_ref.mjs +9 -0
- package/node_modules/typebox/build/value/create/from_string.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_string.mjs +9 -0
- package/node_modules/typebox/build/value/create/from_symbol.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_symbol.mjs +4 -0
- package/node_modules/typebox/build/value/create/from_template_literal.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_template_literal.mjs +11 -0
- package/node_modules/typebox/build/value/create/from_tuple.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_tuple.mjs +5 -0
- package/node_modules/typebox/build/value/create/from_type.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_type.mjs +61 -0
- package/node_modules/typebox/build/value/create/from_undefined.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_undefined.mjs +4 -0
- package/node_modules/typebox/build/value/create/from_union.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_union.mjs +9 -0
- package/node_modules/typebox/build/value/create/from_void.d.mts +2 -0
- package/node_modules/typebox/build/value/create/from_void.mjs +4 -0
- package/node_modules/typebox/build/value/create/index.d.mts +2 -0
- package/node_modules/typebox/build/value/create/index.mjs +2 -0
- package/node_modules/typebox/build/value/default/default.d.mts +13 -0
- package/node_modules/typebox/build/value/default/default.mjs +15 -0
- package/node_modules/typebox/build/value/default/from_array.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_array.mjs +12 -0
- package/node_modules/typebox/build/value/default/from_cyclic.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_cyclic.mjs +7 -0
- package/node_modules/typebox/build/value/default/from_default.d.mts +3 -0
- package/node_modules/typebox/build/value/default/from_default.mjs +13 -0
- package/node_modules/typebox/build/value/default/from_intersect.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_intersect.mjs +9 -0
- package/node_modules/typebox/build/value/default/from_object.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_object.mjs +32 -0
- package/node_modules/typebox/build/value/default/from_record.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_record.mjs +26 -0
- package/node_modules/typebox/build/value/default/from_ref.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_ref.mjs +9 -0
- package/node_modules/typebox/build/value/default/from_tuple.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_tuple.mjs +14 -0
- package/node_modules/typebox/build/value/default/from_type.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_type.mjs +25 -0
- package/node_modules/typebox/build/value/default/from_union.d.mts +2 -0
- package/node_modules/typebox/build/value/default/from_union.mjs +14 -0
- package/node_modules/typebox/build/value/default/index.d.mts +1 -0
- package/node_modules/typebox/build/value/default/index.mjs +1 -0
- package/node_modules/typebox/build/value/delta/diff.d.mts +10 -0
- package/node_modules/typebox/build/value/delta/diff.mjs +135 -0
- package/node_modules/typebox/build/value/delta/edit.d.mts +24 -0
- package/node_modules/typebox/build/value/delta/edit.mjs +17 -0
- package/node_modules/typebox/build/value/delta/index.d.mts +3 -0
- package/node_modules/typebox/build/value/delta/index.mjs +3 -0
- package/node_modules/typebox/build/value/delta/patch.d.mts +8 -0
- package/node_modules/typebox/build/value/delta/patch.mjs +42 -0
- package/node_modules/typebox/build/value/equal/equal.d.mts +2 -0
- package/node_modules/typebox/build/value/equal/equal.mjs +6 -0
- package/node_modules/typebox/build/value/equal/index.d.mts +1 -0
- package/node_modules/typebox/build/value/equal/index.mjs +1 -0
- package/node_modules/typebox/build/value/errors/errors.d.mts +6 -0
- package/node_modules/typebox/build/value/errors/errors.mjs +12 -0
- package/node_modules/typebox/build/value/errors/index.d.mts +1 -0
- package/node_modules/typebox/build/value/errors/index.mjs +1 -0
- package/node_modules/typebox/build/value/hash/hash.d.mts +6 -0
- package/node_modules/typebox/build/value/hash/hash.mjs +10 -0
- package/node_modules/typebox/build/value/hash/index.d.mts +1 -0
- package/node_modules/typebox/build/value/hash/index.mjs +1 -0
- package/node_modules/typebox/build/value/index.d.mts +20 -0
- package/node_modules/typebox/build/value/index.mjs +29 -0
- package/node_modules/typebox/build/value/parse/index.d.mts +1 -0
- package/node_modules/typebox/build/value/parse/index.mjs +1 -0
- package/node_modules/typebox/build/value/parse/parse.d.mts +11 -0
- package/node_modules/typebox/build/value/parse/parse.mjs +53 -0
- package/node_modules/typebox/build/value/pipeline/index.d.mts +1 -0
- package/node_modules/typebox/build/value/pipeline/index.mjs +1 -0
- package/node_modules/typebox/build/value/pipeline/pipeline.d.mts +10 -0
- package/node_modules/typebox/build/value/pipeline/pipeline.mjs +15 -0
- package/node_modules/typebox/build/value/pointer/index.d.mts +1 -0
- package/node_modules/typebox/build/value/pointer/index.mjs +1 -0
- package/node_modules/typebox/build/value/repair/error.d.mts +7 -0
- package/node_modules/typebox/build/value/repair/error.mjs +8 -0
- package/node_modules/typebox/build/value/repair/from_array.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_array.mjs +39 -0
- package/node_modules/typebox/build/value/repair/from_cyclic.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_cyclic.mjs +6 -0
- package/node_modules/typebox/build/value/repair/from_enum.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_enum.mjs +6 -0
- package/node_modules/typebox/build/value/repair/from_intersect.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_intersect.mjs +8 -0
- package/node_modules/typebox/build/value/repair/from_object.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_object.mjs +33 -0
- package/node_modules/typebox/build/value/repair/from_record.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_record.mjs +33 -0
- package/node_modules/typebox/build/value/repair/from_ref.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_ref.mjs +9 -0
- package/node_modules/typebox/build/value/repair/from_template_literal.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_template_literal.mjs +7 -0
- package/node_modules/typebox/build/value/repair/from_tuple.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_tuple.mjs +12 -0
- package/node_modules/typebox/build/value/repair/from_type.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_type.mjs +88 -0
- package/node_modules/typebox/build/value/repair/from_union.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_union.mjs +24 -0
- package/node_modules/typebox/build/value/repair/from_unknown.d.mts +2 -0
- package/node_modules/typebox/build/value/repair/from_unknown.mjs +12 -0
- package/node_modules/typebox/build/value/repair/index.d.mts +1 -0
- package/node_modules/typebox/build/value/repair/index.mjs +1 -0
- package/node_modules/typebox/build/value/repair/repair.d.mts +17 -0
- package/node_modules/typebox/build/value/repair/repair.mjs +20 -0
- package/node_modules/typebox/build/value/shared/index.d.mts +3 -0
- package/node_modules/typebox/build/value/shared/index.mjs +4 -0
- package/node_modules/typebox/build/value/shared/optional_undefined.d.mts +2 -0
- package/node_modules/typebox/build/value/shared/optional_undefined.mjs +15 -0
- package/node_modules/typebox/build/value/shared/union_priority_sort.d.mts +7 -0
- package/node_modules/typebox/build/value/shared/union_priority_sort.mjs +83 -0
- package/node_modules/typebox/build/value/shared/union_score_select.d.mts +3 -0
- package/node_modules/typebox/build/value/shared/union_score_select.mjs +51 -0
- package/node_modules/typebox/build/value/value.d.mts +15 -0
- package/node_modules/typebox/build/value/value.mjs +15 -0
- package/node_modules/typebox/license +23 -0
- package/node_modules/typebox/package.json +87 -0
- package/node_modules/typebox/readme.md +339 -0
- package/package.json +51 -4
- package/skills/pi-proactive/SKILL.md +182 -0
|
@@ -0,0 +1,984 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `src/mailbox.ts` —— 收件侧文件邮箱(M4c:扫描 / 原子认领 / 过期归档 / 去重闭环 / 清理)。
|
|
3
|
+
*
|
|
4
|
+
* 契约(与 M4b `src/outbox.ts` 的写入端通过**目录布局 + 信封格式**耦合,两者不互相 import):
|
|
5
|
+
* - 收件箱:`<agentDir>/proactive/mailbox/<targetAgentId>/<envelopeId>.json`(M4b 原子写 tmp+rename)
|
|
6
|
+
* - 认领:把收件箱里的信封 `rename` 到 `mailbox/<target>/claimed/<id>.json` —— 同目录 rename 是原子的,
|
|
7
|
+
* **rename 成功者即获得处理权**;同时用 `proactive/mailbox/claims/<id>.lock`(O_EXCL 原子创建)做二次互斥与审计。
|
|
8
|
+
* (锁文件与 task-store 的 global 任务锁 `proactive/tasks/claims/<id>.claim` **分属两个命名空间**,互不误删。)
|
|
9
|
+
* - 归档:处理成功 → `proactive/processed/<agentId>/<id>.json`;已处理(SeenSet 命中)的重复投递 → 同样落到这里。
|
|
10
|
+
* - 过期:`mailbox/<target>/expired/<id>.json`(**归档不删**,可审计)。
|
|
11
|
+
* - 坏文件:`mailbox/<target>/corrupt/<id>.corrupt-<ts>`(隔离不删,绝不抛错 —— 宿主对未捕获异常直接 exit(1))。
|
|
12
|
+
*
|
|
13
|
+
* 所有操作**绝不抛出**给调用方的 tick 循环(除显式的编程错误):读盘/解析/移动失败一律降级处理。
|
|
14
|
+
*/
|
|
15
|
+
import fs from "node:fs";
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
import { PROACTIVE_FILE_MODE, chmodQuiet, containedPath, ensureDir, isKnownOnDiskVersion, onDiskVersionOf, proactiveDir, reportForeignVersion, resolveAgentDir, writeAtomicFile, } from "./config.js";
|
|
18
|
+
import { MAX_ENVELOPE_BYTES, agentSegment, isExpired, isWellFormedId, validateEnvelopeStrict } from "./envelope.js";
|
|
19
|
+
import { SeenSet } from "./dedupe.js";
|
|
20
|
+
/**
|
|
21
|
+
* **单轮扫描最多投递多少条信封**(洪水攻击的上限)。
|
|
22
|
+
*
|
|
23
|
+
* 超出部分**留在收件箱**(不丢、不归档)→ 下一轮继续处理(背压,而不是拒收)。
|
|
24
|
+
* 50 条/轮:远高于正常协作速率,又保证「一个 flood 也不能一轮把对端打爆」。
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_MAX_ENVELOPES_PER_SCAN = 50;
|
|
27
|
+
/** 认领锁的默认失效时长(ms):超过则视为持有者已崩溃,允许接管。 */
|
|
28
|
+
export const DEFAULT_STALE_CLAIM_MS = 3_600_000;
|
|
29
|
+
/**
|
|
30
|
+
* **墙钟回拨容忍窗口**(ms,**真实时间**)—— 偏差 P-D8 的具体规则。
|
|
31
|
+
*
|
|
32
|
+
* 规范要求(§7.3):TTL 判定必须对墙钟回拨有容忍窗口 ——「回拨时不得让消息提前过期
|
|
33
|
+
* **或**无限延长」。
|
|
34
|
+
* 本实现的规则(三条,缺一不可):
|
|
35
|
+
* 1. **不提前过期**:`now < createdAt`(墙钟被回拨 / 与发送方时钟偏斜)→ **不判过期**,
|
|
36
|
+
* 信封留在收件箱(丢消息不可逆,暂缓投递可逆)。
|
|
37
|
+
* 2. **不得无限延长**:回拨被观测到后,该信封的**额外滞留**以**真实时间**计
|
|
38
|
+
* (`process.hrtime`,不受墙钟回拨影响)→ 超过本窗口仍未过期 → **判过期**并归档到 `expired/`。
|
|
39
|
+
* ⇒ 回拨最多让一条消息多活 `CLOCK_ROLLBACK_TOLERANCE_MS`(默认 5 分钟真实时间)。
|
|
40
|
+
* 3. **代价已知**:规则 2 意味着「回拨期间处于异常的信封,最坏会比 TTL 名义值早到期至多一个窗口」
|
|
41
|
+
* —— 这是**有界**的、且是规范明确要求用「容忍窗口」来交换的偏差
|
|
42
|
+
* (比「无限延长」或「无界提前过期」都安全)。窗口可调(`MailboxOptions.clockRollbackToleranceMs`)。
|
|
43
|
+
*
|
|
44
|
+
* 残余限制:窗口按**进程**计(进程重启后重新计时);跨机器的时钟偏斜不在本机控制范围内。
|
|
45
|
+
*/
|
|
46
|
+
export const CLOCK_ROLLBACK_TOLERANCE_MS = 5 * 60_000;
|
|
47
|
+
/** 真实时间源(不受墙钟回拨影响):以模块加载时刻为基准的 `process.hrtime` 毫秒数。 */
|
|
48
|
+
const HRT_BASE_NS = process.hrtime.bigint();
|
|
49
|
+
function realNowMs() {
|
|
50
|
+
return Number(process.hrtime.bigint() - HRT_BASE_NS) / 1e6;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 默认最大**失败重试**次数:同一信封连续失败重试超过 N 次 → 归档到终态目录 `failed/`。
|
|
54
|
+
*
|
|
55
|
+
* 为什么必须有上限:`release()` 把信封放回收件箱,而入站扫描由 1s tick 驱动 →
|
|
56
|
+
* 没有上限时「投递持续失败」的信封会**每秒**被重新认领、重新投递、再次失败
|
|
57
|
+
* (无界热重试:CPU/日志无限增长,消息永远进不了模型、也永远不被归档)。
|
|
58
|
+
*/
|
|
59
|
+
export const DEFAULT_MAX_RETRIES = 5;
|
|
60
|
+
/** 失败重试的退避基数(ms):第 n 次失败 → base × 2^(n-1)。 */
|
|
61
|
+
export const DEFAULT_RETRY_BASE_MS = 5_000;
|
|
62
|
+
/** 退避上限(ms):任何形态的退避都不得超过它(**有界**是硬要求)。 */
|
|
63
|
+
export const DEFAULT_RETRY_MAX_MS = 300_000;
|
|
64
|
+
/** 节流重试(defer/drop)的退避基数(ms):节流是「等一会儿」,不是错误。 */
|
|
65
|
+
export const DEFAULT_THROTTLE_BASE_MS = 60_000;
|
|
66
|
+
/**
|
|
67
|
+
* claim 文件内容首段标记:区分「邮箱的锁」与 task-store 的「global 任务锁」。
|
|
68
|
+
*
|
|
69
|
+
* 两者现在**分属不同目录**(`mailbox/claims/*.lock` vs `tasks/claims/*.claim`),
|
|
70
|
+
* 标记只用于「锁归属审计」:清理时只删**归本 agent 所有**的锁,不碰别人的。
|
|
71
|
+
*/
|
|
72
|
+
export const CLAIM_MARKER = "mailbox";
|
|
73
|
+
/**
|
|
74
|
+
* 收件侧文件邮箱。
|
|
75
|
+
*
|
|
76
|
+
* 语义:
|
|
77
|
+
* - `scan()` 只返回**本 agent 收件箱**里可处理的信封:过期 → 归档到 `expired/`;已处理 → 落到 `processed/`;
|
|
78
|
+
* 坏文件 → 隔离到 `corrupt/`。三者都不在返回列表里。
|
|
79
|
+
* - `claim()` 是**互斥**的:先查 `seen`(已处理 → 不认领),再用 claim 文件 O_EXCL 抢锁,
|
|
80
|
+
* 最后用 `rename` 把信封移入 `claimed/`(rename 成功者才真正拥有该消息)。
|
|
81
|
+
* - `complete()` 处理成功:信封 → `processed/<agentId>/`,并 `SeenSet.mark(id)`。
|
|
82
|
+
* - `release()` 处理未成功:信封**退回收件箱**(可重试,**不丢消息**),并释放 claim 锁。
|
|
83
|
+
* 但重试**必须有界**(否则 1s tick 会把它每秒重新认领重试 → 重试风暴):
|
|
84
|
+
* ① 退避(记录下次可重试时刻,`scan()` 跳过未到时刻的信封);
|
|
85
|
+
* ② 失败重试次数上限(超过 → 归档到终态目录 `failed/`,**不删**、可审计);
|
|
86
|
+
* ③ 节流(defer/drop)不是错误 → 不计入失败上限。
|
|
87
|
+
*/
|
|
88
|
+
export class Mailbox {
|
|
89
|
+
agentDir;
|
|
90
|
+
agentId;
|
|
91
|
+
now;
|
|
92
|
+
seen;
|
|
93
|
+
staleClaimMs;
|
|
94
|
+
maxRetries;
|
|
95
|
+
retryBaseMs;
|
|
96
|
+
retryMaxMs;
|
|
97
|
+
throttleBaseMs;
|
|
98
|
+
/** 墙钟回拨容忍窗口(ms,真实时间)。 */
|
|
99
|
+
clockRollbackToleranceMs;
|
|
100
|
+
/** 真实时间源(不受墙钟回拨影响)。 */
|
|
101
|
+
realNow;
|
|
102
|
+
/** 「回拨异常信封」已滞留的真实时长(ms,按信封 id 记)—— P-D8 规则 2 的计时。 */
|
|
103
|
+
rollbackSince = new Map();
|
|
104
|
+
/** 来源校验策略(**必填**:构造时缺省即抛错,不静默宽松)。 */
|
|
105
|
+
senderPolicy;
|
|
106
|
+
/** 单轮扫描的投递上限(洪水上限)。 */
|
|
107
|
+
maxEnvelopesPerScan;
|
|
108
|
+
/** 收件箱目录(构造时做**包含性校验** → 越界即抛错,不静默)。 */
|
|
109
|
+
inboxRoot;
|
|
110
|
+
constructor(opts) {
|
|
111
|
+
this.agentDir = opts.agentDir ?? resolveAgentDir();
|
|
112
|
+
this.agentId = opts.agentId;
|
|
113
|
+
this.now = opts.now ?? Date.now;
|
|
114
|
+
this.seen = opts.seen ?? new SeenSet({ agentDir: this.agentDir, agentId: this.agentId, now: this.now });
|
|
115
|
+
this.staleClaimMs = opts.staleClaimMs ?? DEFAULT_STALE_CLAIM_MS;
|
|
116
|
+
this.maxRetries = opts.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
117
|
+
this.retryBaseMs = opts.retryBaseMs ?? DEFAULT_RETRY_BASE_MS;
|
|
118
|
+
this.retryMaxMs = opts.retryMaxMs ?? DEFAULT_RETRY_MAX_MS;
|
|
119
|
+
this.throttleBaseMs = opts.throttleBaseMs ?? DEFAULT_THROTTLE_BASE_MS;
|
|
120
|
+
if (typeof opts.senderPolicy !== "function") {
|
|
121
|
+
// **缺省即抛错**(不静默宽松):来源校验是安全边界,漏传 = 悄悄关掉它。
|
|
122
|
+
throw new Error("Mailbox 必须显式指定 senderPolicy(缺省即抛错):" +
|
|
123
|
+
"createStrictSenderPolicy()(注册表白名单 + 主机一致)或 " +
|
|
124
|
+
"createSpecSenderPolicy()(仅字段级校验;跨机 / 互操作用)");
|
|
125
|
+
}
|
|
126
|
+
this.senderPolicy = opts.senderPolicy;
|
|
127
|
+
this.maxEnvelopesPerScan = opts.maxEnvelopesPerScan ?? DEFAULT_MAX_ENVELOPES_PER_SCAN;
|
|
128
|
+
// **包含性校验**:`agentId` 是外部可控的(`agentSegment()` 不动点号)→
|
|
129
|
+
// `agentId = ".."` 会让收件箱目录逃到 `proactive/`(进而把 `proactive/config.json`
|
|
130
|
+
// 当成信封处理掉)。越界 → **抛错**(不静默)。
|
|
131
|
+
this.inboxRoot = containedPath(path.join(proactiveDir(this.agentDir), "mailbox"), agentSegment(this.agentId));
|
|
132
|
+
this.clockRollbackToleranceMs = opts.clockRollbackToleranceMs ?? CLOCK_ROLLBACK_TOLERANCE_MS;
|
|
133
|
+
this.realNow = opts.realNow ?? realNowMs;
|
|
134
|
+
}
|
|
135
|
+
/** 本 agent 的收件箱目录(构造时已做包含性校验)。 */
|
|
136
|
+
get inboxDir() {
|
|
137
|
+
return this.inboxRoot;
|
|
138
|
+
}
|
|
139
|
+
/** 已认领(处理中)目录。 */
|
|
140
|
+
get claimedDir() {
|
|
141
|
+
return path.join(this.inboxDir, "claimed");
|
|
142
|
+
}
|
|
143
|
+
/** 过期归档目录。 */
|
|
144
|
+
get expiredDir() {
|
|
145
|
+
return path.join(this.inboxDir, "expired");
|
|
146
|
+
}
|
|
147
|
+
/** 坏文件隔离目录。 */
|
|
148
|
+
get corruptDir() {
|
|
149
|
+
return path.join(this.inboxDir, "corrupt");
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* **来源校验未通过**的归档目录(RELSEC P1)。
|
|
153
|
+
*
|
|
154
|
+
* 语义:**拒收但留痕** —— 信封移到这里(不删、不投递到模型),
|
|
155
|
+
* 旁边写一份 `<id>.reject.json`(原因 / 时刻 / 原始 from)→ 可审计。
|
|
156
|
+
*/
|
|
157
|
+
get unverifiedDir() {
|
|
158
|
+
return path.join(this.inboxDir, "unverified");
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 终态归档目录(重试耗尽 → 归档到这里,**不丢、可审计**)。
|
|
162
|
+
*
|
|
163
|
+
* 与 `expired/` / `corrupt/` 同构:归档而非删除 —— 能查「哪条消息彻底没投出去」。
|
|
164
|
+
*/
|
|
165
|
+
get failedDir() {
|
|
166
|
+
return path.join(this.inboxDir, "failed");
|
|
167
|
+
}
|
|
168
|
+
/** 重试状态目录(退避时刻与计数;与信封文件分离 → 信封格式保持纯净)。 */
|
|
169
|
+
get retryDir() {
|
|
170
|
+
return path.join(this.inboxDir, "retry");
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* 该信封已**失败重试**的次数(0 = 没失败过 / 只被节流过)。
|
|
174
|
+
*
|
|
175
|
+
* 节流(defer/drop)不计入 —— 它是节流,不是错误。
|
|
176
|
+
*/
|
|
177
|
+
releaseCount(id) {
|
|
178
|
+
return this.readRetryState(id)?.retryCount ?? 0;
|
|
179
|
+
}
|
|
180
|
+
/** 已处理归档目录(与 `seen.json` 同目录)。 */
|
|
181
|
+
get processedDir() {
|
|
182
|
+
return path.join(proactiveDir(this.agentDir), "processed", agentSegment(this.agentId));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* claim 锁目录:**与 task-store 的 global 任务锁分开**(RP-9)。
|
|
186
|
+
*
|
|
187
|
+
* 旧实现两者同目录同文件名(`proactive/tasks/<id>.claim`)→ 邮箱清理会删掉
|
|
188
|
+
* task-store 的任务锁(反之亦然)→ 互斥语义被破坏。
|
|
189
|
+
* 现在:邮箱锁 = `proactive/mailbox/claims/<id>.lock`,任务锁 = `proactive/tasks/claims/<id>.claim`。
|
|
190
|
+
*/
|
|
191
|
+
get claimsDir() {
|
|
192
|
+
return path.join(proactiveDir(this.agentDir), "mailbox", "claims");
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 扫描收件箱,返回**可处理**的信封列表(已过期 / 已处理 / 坏文件的都已被移走)。
|
|
196
|
+
* 只读本 agent 自己的收件箱;其它 agent 的目录完全不被触碰。
|
|
197
|
+
*/
|
|
198
|
+
scan() {
|
|
199
|
+
// P-D3:先把「卡在 claimed/ 里」的孤儿信封回收(认领年龄 ≥ 1 小时 → 移回收件箱)。
|
|
200
|
+
this.recoverStaleClaims();
|
|
201
|
+
const out = [];
|
|
202
|
+
const now = this.now();
|
|
203
|
+
for (const name of readDirSafe(this.inboxDir)) {
|
|
204
|
+
if (!name.endsWith(".json"))
|
|
205
|
+
continue;
|
|
206
|
+
const file = path.join(this.inboxDir, name);
|
|
207
|
+
// **体积上限**(本地 IPC 攻击面:超大 body)——**先看大小再读**:
|
|
208
|
+
// 读进内存再判断 = 已经被打爆过一次了。超限 → 隔离(不读、不投递)。
|
|
209
|
+
const size = fileSize(file);
|
|
210
|
+
if (size !== null && size > MAX_ENVELOPE_BYTES) {
|
|
211
|
+
this.quarantine(file, name);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
const raw = readFileSafe(file);
|
|
215
|
+
if (raw === null) {
|
|
216
|
+
this.quarantine(file, name);
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
let parsed;
|
|
220
|
+
try {
|
|
221
|
+
parsed = JSON.parse(raw);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
this.quarantine(file, name);
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
// 信任边界:**严格**校验(封闭字段集 / 可选字段类型 / reply 必带 correlationId)
|
|
228
|
+
// —— 与参考对端(按 JSON Schema 实现)逐条一致。
|
|
229
|
+
const validation = validateEnvelopeStrict(parsed);
|
|
230
|
+
if (!validation.ok) {
|
|
231
|
+
this.quarantine(file, name);
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const envelope = validation.envelope;
|
|
235
|
+
// **id 结构性合法性**:id 会被拼进文件名(`agentSegment()` 只换分隔符、不动点号)→
|
|
236
|
+
// 含 `../` / 绝对路径形状的 id 一律**隔离**(不投递、不参与任何路径拼接)。
|
|
237
|
+
if (!isWellFormedId(envelope.id)) {
|
|
238
|
+
this.quarantine(file, name);
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
// 先查 seen 再判过期:重复投递(socket + 落盘双路径 / 崩溃后重投)落到 processed/,
|
|
242
|
+
// 而不是因为信封本身已过期被误判成 expired/。
|
|
243
|
+
if (this.seen.seen(envelope.id)) {
|
|
244
|
+
moveFile(file, path.join(this.processedDir, `${agentSegment(envelope.id)}.json`));
|
|
245
|
+
this.clearRetryState(envelope.id);
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
// P-D8(规范 §7.3①):TTL 判定只接受「时间向前走」的证据 ——
|
|
249
|
+
// `now < createdAt`(墙钟被回拨)时**不判过期**(保留,等时钟追上)。
|
|
250
|
+
// 理由:丢消息不可逆,暂缓投递可逆。
|
|
251
|
+
if (now >= envelope.createdAt && isExpired(envelope, now)) {
|
|
252
|
+
moveFile(file, path.join(this.expiredDir, name));
|
|
253
|
+
this.clearRetryState(envelope.id);
|
|
254
|
+
this.rollbackSince.delete(envelope.id);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
if (now < envelope.createdAt) {
|
|
258
|
+
// P-D8 规则 2:**不得无限延长** —— 回拨期间滞留以**真实时间**计,
|
|
259
|
+
// 超过容忍窗口(默认 5 分钟真实时间)→ 判过期(TTL 视为已到)。
|
|
260
|
+
// 见 `CLOCK_ROLLBACK_TOLERANCE_MS` 的完整规则说明。
|
|
261
|
+
const since = this.rollbackSince.get(envelope.id);
|
|
262
|
+
if (since === undefined) {
|
|
263
|
+
this.rollbackSince.set(envelope.id, this.realNow());
|
|
264
|
+
}
|
|
265
|
+
else if (this.realNow() - since >= this.clockRollbackToleranceMs) {
|
|
266
|
+
moveFile(file, path.join(this.expiredDir, name));
|
|
267
|
+
this.clearRetryState(envelope.id);
|
|
268
|
+
this.rollbackSince.delete(envelope.id);
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
// 未超窗 → **不提前过期**(保留,等时钟追上;下面照常进入处理队列)
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
// 时钟恢复正常:该信封不再是「回拨异常」→ 清掉计时。
|
|
275
|
+
this.rollbackSince.delete(envelope.id);
|
|
276
|
+
}
|
|
277
|
+
// **退避**:未到重试时刻的信封本轮不重试
|
|
278
|
+
// (否则 1s tick 会把它每秒重新认领、重新投递、再次失败 → 重试风暴)。
|
|
279
|
+
const retryState = this.readRetryState(envelope.id);
|
|
280
|
+
// P-D8(规范 §7.3③):退避用墙钟存储(跨进程需要),判定要求
|
|
281
|
+
// 「now ≥ nextAttemptAt」**且**「now ≥ lastAt」——时钟回拨(now < lastAt)
|
|
282
|
+
// 时**不重试**(等时钟追上),避免回拨瞬间的退避到期 → 重试风暴。
|
|
283
|
+
if (retryState && retryState.nextAttemptAt > now && now >= retryState.lastAt)
|
|
284
|
+
continue;
|
|
285
|
+
// **来源校验(RELSEC P1)**:`from` 不可自填即采信。
|
|
286
|
+
// 未通过 → **拒收**(不投递到模型)+ **可审计归档**(`unverified/`),
|
|
287
|
+
// 绝不静默丢弃,也绝不「降级为 advisory 照样投递」。
|
|
288
|
+
const verdict = this.senderPolicy(envelope);
|
|
289
|
+
if (!verdict.ok) {
|
|
290
|
+
this.archiveUnverified(file, envelope, verdict);
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
out.push(envelope);
|
|
294
|
+
// **洪水上限**:单轮最多投递 N 条,其余**留在收件箱**(不丢)→ 下一轮继续(背压)。
|
|
295
|
+
if (out.length >= this.maxEnvelopesPerScan)
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
return out;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* 原子认领:获得该信封的**处理权**。
|
|
302
|
+
* - 已处理(`seen`)→ `{ claimed:false, reason:"seen" }`;
|
|
303
|
+
* - 已有他人持有的有效 claim 锁 → `{ claimed:false, reason:"locked" }`;
|
|
304
|
+
* - 收件箱里已无此信封(已被他人认领)→ `{ claimed:false, reason:"missing" }`;
|
|
305
|
+
* - 成功 → 信封在 `mailbox/<target>/claimed/<id>.json`,返回 `{ claimed:true, path }`。
|
|
306
|
+
*/
|
|
307
|
+
claim(envelope) {
|
|
308
|
+
if (this.seen.seen(envelope.id))
|
|
309
|
+
return { claimed: false, reason: "seen" };
|
|
310
|
+
const source = this.locateInboxFile(envelope.id);
|
|
311
|
+
if (!source)
|
|
312
|
+
return { claimed: false, reason: "missing" };
|
|
313
|
+
const claimFile = this.claimPath(envelope.id);
|
|
314
|
+
const lock = this.acquireClaimLock(claimFile);
|
|
315
|
+
if (!lock.proceed)
|
|
316
|
+
return { claimed: false, reason: "locked" };
|
|
317
|
+
const target = path.join(this.claimedDir, `${agentSegment(envelope.id)}.json`);
|
|
318
|
+
if (!moveFile(source, target)) {
|
|
319
|
+
// rename 失败(多半是别人抢先认领)→ 释放锁,让对方继续
|
|
320
|
+
if (lock.owned)
|
|
321
|
+
removeFile(claimFile);
|
|
322
|
+
return { claimed: false, reason: "error" };
|
|
323
|
+
}
|
|
324
|
+
// 认领时刻 = mtime(rename 保留原 mtime → 不刷新的话「认领年龄」会算成「信封年龄」,
|
|
325
|
+
// 一条很旧但刚被认领的信封会被误判成卡死 → 提前回收 → 可能重复处理)。
|
|
326
|
+
try {
|
|
327
|
+
fs.utimesSync(target, this.now(), this.now());
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
// 刷新失败不影响认领(退回用认领锁里的 ts 判龄)
|
|
331
|
+
}
|
|
332
|
+
return { claimed: true, path: target };
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* 处理成功:信封归档到 `processed/<agentId>/`,并记入 seen 集合。
|
|
336
|
+
* 归档失败**不抛错**(信封仍在 `claimed/`,可由 `cleanup()` 回收)。
|
|
337
|
+
*/
|
|
338
|
+
complete(envelope) {
|
|
339
|
+
const from = path.join(this.claimedDir, `${agentSegment(envelope.id)}.json`);
|
|
340
|
+
moveFile(from, path.join(this.processedDir, `${agentSegment(envelope.id)}.json`));
|
|
341
|
+
this.seen.mark(envelope.id);
|
|
342
|
+
this.clearRetryState(envelope.id);
|
|
343
|
+
this.releaseClaimFile(envelope.id);
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* 处理未成功:信封**退回收件箱**(可被再次扫描到 → 可重试),并释放 claim 锁。
|
|
347
|
+
* **绝不丢消息**。
|
|
348
|
+
*
|
|
349
|
+
* 但**必须有界**(否则入站 1s tick 会把它每秒重新认领重试 → 重试风暴):
|
|
350
|
+
* - **退避**:记录「下次可重试时刻」,`scan()` 跳过未到时刻的信封;
|
|
351
|
+
* - **上限**:`failed` 连续重试超过 `maxRetries` 次 → 归档到终态目录 `failed/`(**不删**,可审计);
|
|
352
|
+
* - **节流 ≠ 错误**:`deferred`/`dropped` 不计入失败上限(只影响退避时长)。
|
|
353
|
+
*/
|
|
354
|
+
release(envelope, opts) {
|
|
355
|
+
const reason = opts?.reason ?? "failed";
|
|
356
|
+
const prev = this.readRetryState(envelope.id);
|
|
357
|
+
const retryCount = reason === "failed" ? (prev?.retryCount ?? 0) + 1 : (prev?.retryCount ?? 0);
|
|
358
|
+
const throttleCount = reason === "throttled" ? (prev?.throttleCount ?? 0) + 1 : (prev?.throttleCount ?? 0);
|
|
359
|
+
const from = path.join(this.claimedDir, `${agentSegment(envelope.id)}.json`);
|
|
360
|
+
// 超过失败重试上限 → 终态归档(**不丢**:留在 `failed/` 里可审计)
|
|
361
|
+
if (reason === "failed" && retryCount > this.maxRetries) {
|
|
362
|
+
const archived = moveFile(from, path.join(this.failedDir, `${agentSegment(envelope.id)}.json`));
|
|
363
|
+
this.releaseClaimFile(envelope.id);
|
|
364
|
+
this.clearRetryState(envelope.id);
|
|
365
|
+
if (archived) {
|
|
366
|
+
console.error(`[mailbox] 信封 ${envelope.id} 重试 ${retryCount - 1} 次仍失败 → 归档到 failed/(不再重试)`);
|
|
367
|
+
}
|
|
368
|
+
return { released: false, archived, retryCount, nextAttemptAt: 0 };
|
|
369
|
+
}
|
|
370
|
+
const backoffMs = opts?.retryAfterMs ?? this.backoffMs(reason, retryCount, throttleCount);
|
|
371
|
+
const nextAttemptAt = this.now() + backoffMs;
|
|
372
|
+
this.writeRetryState({
|
|
373
|
+
id: envelope.id,
|
|
374
|
+
retryCount,
|
|
375
|
+
throttleCount,
|
|
376
|
+
nextAttemptAt,
|
|
377
|
+
lastReason: reason,
|
|
378
|
+
lastAt: this.now(),
|
|
379
|
+
});
|
|
380
|
+
moveFile(from, path.join(this.inboxDir, `${agentSegment(envelope.id)}.json`));
|
|
381
|
+
this.releaseClaimFile(envelope.id);
|
|
382
|
+
return { released: true, archived: false, retryCount, nextAttemptAt };
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* 扫描 → 认领 → 交给 `handler` 处理 → 归档 / 退回 的完整一轮。
|
|
386
|
+
* `handler` 抛错 ⇒ 该信封退回收件箱(不丢消息),其余信封继续处理。
|
|
387
|
+
*/
|
|
388
|
+
deliver(handler) {
|
|
389
|
+
const result = { processed: 0, failed: 0, skipped: 0 };
|
|
390
|
+
for (const envelope of this.scan()) {
|
|
391
|
+
const claim = this.claim(envelope);
|
|
392
|
+
if (!claim.claimed) {
|
|
393
|
+
result.skipped += 1;
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
try {
|
|
397
|
+
handler(envelope);
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
this.release(envelope, { reason: "failed" });
|
|
401
|
+
result.failed += 1;
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
this.complete(envelope);
|
|
405
|
+
result.processed += 1;
|
|
406
|
+
}
|
|
407
|
+
return result;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* `deliver()` 的异步版本(`handler` 可返回 Promise;reject 等同抛错 → 退回收件箱)。
|
|
411
|
+
*/
|
|
412
|
+
async deliverAsync(handler) {
|
|
413
|
+
const result = { processed: 0, failed: 0, skipped: 0 };
|
|
414
|
+
for (const envelope of this.scan()) {
|
|
415
|
+
const claim = this.claim(envelope);
|
|
416
|
+
if (!claim.claimed) {
|
|
417
|
+
result.skipped += 1;
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
try {
|
|
421
|
+
await handler(envelope);
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
this.release(envelope, { reason: "failed" });
|
|
425
|
+
result.failed += 1;
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
this.complete(envelope);
|
|
429
|
+
result.processed += 1;
|
|
430
|
+
}
|
|
431
|
+
return result;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* 过期清理:**只清本 agent 自己的目录**(收件箱 / claimed / expired / processed / 自己的 claim 文件)。
|
|
435
|
+
* - 收件箱与 claimed 里的旧信封 → 归档到 `expired/`(不删,可审计);
|
|
436
|
+
* - `processed/` 里的旧归档 → 删除;
|
|
437
|
+
* - 自己的旧 claim 锁 → 删除(别人的 claim 文件**不碰**)。
|
|
438
|
+
* 年龄判定:信封用 `createdAt`(语义年龄),其余文件(claim 锁 / 坏文件)用 mtime。
|
|
439
|
+
*/
|
|
440
|
+
cleanup(options) {
|
|
441
|
+
const result = { removed: 0, archived: 0, claimsRemoved: 0 };
|
|
442
|
+
const olderThanMs = options.olderThanMs;
|
|
443
|
+
// P-D3:回收「卡在 claimed/ 里」的孤儿信封(认领年龄 ≥ 1 小时 → 移回收件箱,可重处理)。
|
|
444
|
+
this.recoverStaleClaims();
|
|
445
|
+
// P-D2:回收残留 tmp(mtime > 1 小时)—— 阈值**不随** `olderThanMs` 变
|
|
446
|
+
// (规范 §6 阈值表固定为「tmp mtime > 1 小时」;`olderThanMs` 是信封/归档的年龄口径)。
|
|
447
|
+
result.removed += gcStaleTemporaries(this.agentDir, { now: this.now }).length;
|
|
448
|
+
// 先扫 expired/(删掉往轮遗留的超龄归档),再把本轮超龄的收件箱/认领中文件归档进去 ——
|
|
449
|
+
// 归档物本轮不会被自己删掉(否则「归档可审计」名存实亡)。
|
|
450
|
+
for (const name of readDirSafe(this.expiredDir)) {
|
|
451
|
+
const file = path.join(this.expiredDir, name);
|
|
452
|
+
if (!isFile(file))
|
|
453
|
+
continue;
|
|
454
|
+
if (this.ageOf(file) > olderThanMs && removeFile(file))
|
|
455
|
+
result.removed += 1;
|
|
456
|
+
}
|
|
457
|
+
// 收件箱/claimed:只有「超龄**且**已过 TTL」的信封才归档 —— 仍有效的消息绝不因清理而丢失。
|
|
458
|
+
for (const dir of [this.inboxDir, this.claimedDir]) {
|
|
459
|
+
for (const name of readDirSafe(dir)) {
|
|
460
|
+
const file = path.join(dir, name);
|
|
461
|
+
if (!isFile(file))
|
|
462
|
+
continue;
|
|
463
|
+
if (this.ageOf(file) <= olderThanMs)
|
|
464
|
+
continue;
|
|
465
|
+
if (!this.isDeadEnvelope(file))
|
|
466
|
+
continue;
|
|
467
|
+
if (moveFile(file, path.join(this.expiredDir, name))) {
|
|
468
|
+
result.archived += 1;
|
|
469
|
+
result.removed += 1;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
// **来源校验未通过的归档**(RELSEC P1):超龄即删(否则「拒收但留痕」会变成磁盘增长面)。
|
|
474
|
+
for (const name of readDirSafe(this.unverifiedDir)) {
|
|
475
|
+
const file = path.join(this.unverifiedDir, name);
|
|
476
|
+
if (!isFile(file))
|
|
477
|
+
continue;
|
|
478
|
+
if (this.ageOf(file) > olderThanMs && removeFile(file))
|
|
479
|
+
result.removed += 1;
|
|
480
|
+
}
|
|
481
|
+
for (const name of readDirSafe(this.processedDir)) {
|
|
482
|
+
if (name === "seen.json" || name.startsWith("seen.json."))
|
|
483
|
+
continue; // seen 集合不清理
|
|
484
|
+
const file = path.join(this.processedDir, name);
|
|
485
|
+
if (!isFile(file))
|
|
486
|
+
continue;
|
|
487
|
+
if (this.ageOf(file) > olderThanMs && removeFile(file))
|
|
488
|
+
result.removed += 1;
|
|
489
|
+
}
|
|
490
|
+
for (const name of readDirSafe(this.claimsDir)) {
|
|
491
|
+
if (!name.endsWith(".lock"))
|
|
492
|
+
continue;
|
|
493
|
+
const file = path.join(this.claimsDir, name);
|
|
494
|
+
if (!isFile(file))
|
|
495
|
+
continue;
|
|
496
|
+
if (!this.ownsClaim(file))
|
|
497
|
+
continue; // 别人的锁不碰
|
|
498
|
+
if (this.ageOf(file) > olderThanMs && removeFile(file)) {
|
|
499
|
+
result.claimsRemoved += 1;
|
|
500
|
+
result.removed += 1;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
// 重试状态文件:对应的信封已不在收件箱/认领中(已归档 / 已完成 / 已过期)→ 一并清理,避免残留。
|
|
504
|
+
for (const name of readDirSafe(this.retryDir)) {
|
|
505
|
+
if (!name.endsWith(".json"))
|
|
506
|
+
continue;
|
|
507
|
+
const file = path.join(this.retryDir, name);
|
|
508
|
+
if (!isFile(file))
|
|
509
|
+
continue;
|
|
510
|
+
const base = name.replace(/\.json$/, "");
|
|
511
|
+
const stillPending = isFile(path.join(this.inboxDir, `${base}.json`)) || isFile(path.join(this.claimedDir, `${base}.json`));
|
|
512
|
+
if (!stillPending && removeFile(file))
|
|
513
|
+
result.removed += 1;
|
|
514
|
+
}
|
|
515
|
+
return result;
|
|
516
|
+
}
|
|
517
|
+
// ---- 内部实现 ----
|
|
518
|
+
/** claim 锁文件路径(邮箱命名空间:`.lock` 后缀)。 */
|
|
519
|
+
claimPath(id) {
|
|
520
|
+
return path.join(this.claimsDir, `${agentSegment(id)}.lock`);
|
|
521
|
+
}
|
|
522
|
+
/** 在收件箱里定位某 id 的信封文件(优先按约定文件名,其次按内容匹配)。 */
|
|
523
|
+
locateInboxFile(id) {
|
|
524
|
+
const conventional = path.join(this.inboxDir, `${agentSegment(id)}.json`);
|
|
525
|
+
if (isFile(conventional))
|
|
526
|
+
return conventional;
|
|
527
|
+
for (const name of readDirSafe(this.inboxDir)) {
|
|
528
|
+
if (!name.endsWith(".json"))
|
|
529
|
+
continue;
|
|
530
|
+
const file = path.join(this.inboxDir, name);
|
|
531
|
+
const raw = readFileSafe(file);
|
|
532
|
+
if (raw === null)
|
|
533
|
+
continue;
|
|
534
|
+
try {
|
|
535
|
+
const parsed = JSON.parse(raw);
|
|
536
|
+
if (typeof parsed === "object" && parsed !== null && parsed.id === id) {
|
|
537
|
+
return file;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
catch {
|
|
541
|
+
// 坏文件跳过(scan 会隔离它)
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
return null;
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* 抢 claim 锁(O_EXCL 原子创建)。
|
|
548
|
+
* - 锁不存在 → 创建成功(**owned=true**,处理完由我们删除)。
|
|
549
|
+
* - 锁存在且属于**别的 agent** → 那把锁约束的是对方收件箱里的同名信封,与我们无关 → 放行但**不写锁**
|
|
550
|
+
* (不覆盖、不删除对方的锁文件);真正的互斥由 rename 保证。
|
|
551
|
+
* - 锁存在且属于**本 agent** 且未失效 → 抢不到(`locked`):同一 agent 的另一个进程正在处理。
|
|
552
|
+
* - 锁属于本 agent 但已失效(持有者崩溃)→ 接管(删旧锁重新创建)。
|
|
553
|
+
*/
|
|
554
|
+
acquireClaimLock(claimFile) {
|
|
555
|
+
ensureDir(path.dirname(claimFile));
|
|
556
|
+
const write = () => {
|
|
557
|
+
const fd = fs.openSync(claimFile, "wx");
|
|
558
|
+
try {
|
|
559
|
+
// 内容格式:`mailbox <agentId> <ts>` —— 首段标记本锁属于**邮箱**
|
|
560
|
+
// (与 task-store 的 global 任务 claim `<agentId> <ts>` 区分;两者目录已分离)。
|
|
561
|
+
fs.writeFileSync(fd, `${CLAIM_MARKER} ${this.agentId} ${this.now()}\n`, "utf8");
|
|
562
|
+
}
|
|
563
|
+
finally {
|
|
564
|
+
fs.closeSync(fd);
|
|
565
|
+
}
|
|
566
|
+
// 认领锁属「同机其它进程不该读」的落盘面 → 0600(规范 P0)。
|
|
567
|
+
chmodQuiet(claimFile, PROACTIVE_FILE_MODE);
|
|
568
|
+
};
|
|
569
|
+
try {
|
|
570
|
+
write();
|
|
571
|
+
return { proceed: true, owned: true };
|
|
572
|
+
}
|
|
573
|
+
catch (err) {
|
|
574
|
+
if (err.code !== "EEXIST")
|
|
575
|
+
return { proceed: false, owned: false };
|
|
576
|
+
}
|
|
577
|
+
// 已存在
|
|
578
|
+
const content = readFileSafe(claimFile);
|
|
579
|
+
if (content === null)
|
|
580
|
+
return { proceed: false, owned: false };
|
|
581
|
+
const parts = content.trim().split(/\s+/);
|
|
582
|
+
if (parts[0] !== CLAIM_MARKER) {
|
|
583
|
+
// 不是邮箱的锁(多半是 task-store 的 global 任务 claim)→ 不阻塞、不改写
|
|
584
|
+
return { proceed: true, owned: false };
|
|
585
|
+
}
|
|
586
|
+
const owner = parts[1] ?? "";
|
|
587
|
+
const ts = Number.parseInt(parts[2] ?? "", 10);
|
|
588
|
+
if (owner !== this.agentId) {
|
|
589
|
+
// 别人的锁:不阻塞、不改写(对方的锁文件由对方清理)
|
|
590
|
+
return { proceed: true, owned: false };
|
|
591
|
+
}
|
|
592
|
+
const age = Number.isFinite(ts) ? this.now() - ts : Number.POSITIVE_INFINITY;
|
|
593
|
+
if (age < this.staleClaimMs)
|
|
594
|
+
return { proceed: false, owned: false };
|
|
595
|
+
// 自己 agent 的失效锁 → 接管
|
|
596
|
+
removeFile(claimFile);
|
|
597
|
+
try {
|
|
598
|
+
write();
|
|
599
|
+
return { proceed: true, owned: true };
|
|
600
|
+
}
|
|
601
|
+
catch {
|
|
602
|
+
return { proceed: false, owned: false };
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
/** 只删除**归本 agent 所有**的 claim 文件(不碰别人的锁)。 */
|
|
606
|
+
releaseClaimFile(id) {
|
|
607
|
+
const file = this.claimPath(id);
|
|
608
|
+
if (this.ownsClaim(file))
|
|
609
|
+
removeFile(file);
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* 该信封是否已无投递价值:TTL 已过(`isExpired`),或文件本身不是合法信封(坏文件)。
|
|
613
|
+
* 合法且未过期的消息返回 false —— **清理不得丢弃仍然有效的消息**。
|
|
614
|
+
*/
|
|
615
|
+
isDeadEnvelope(file) {
|
|
616
|
+
const raw = readFileSafe(file);
|
|
617
|
+
if (raw === null)
|
|
618
|
+
return true;
|
|
619
|
+
try {
|
|
620
|
+
const parsed = JSON.parse(raw);
|
|
621
|
+
const validation = validateEnvelopeStrict(parsed);
|
|
622
|
+
if (!validation.ok)
|
|
623
|
+
return true;
|
|
624
|
+
return isExpired(validation.envelope, this.now());
|
|
625
|
+
}
|
|
626
|
+
catch {
|
|
627
|
+
return true;
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
/** 该 claim 文件是否归本 agent 所有。 */
|
|
631
|
+
ownsClaim(file) {
|
|
632
|
+
const content = readFileSafe(file);
|
|
633
|
+
if (content === null)
|
|
634
|
+
return false;
|
|
635
|
+
const parts = content.trim().split(/\s+/);
|
|
636
|
+
return parts[0] === CLAIM_MARKER && parts[1] === this.agentId;
|
|
637
|
+
}
|
|
638
|
+
/** 文件年龄判定:信封优先用 `createdAt`(语义年龄),否则用 mtime。 */
|
|
639
|
+
ageOf(file) {
|
|
640
|
+
const raw = readFileSafe(file);
|
|
641
|
+
if (raw !== null) {
|
|
642
|
+
try {
|
|
643
|
+
const parsed = JSON.parse(raw);
|
|
644
|
+
if (typeof parsed === "object" && parsed !== null) {
|
|
645
|
+
const createdAt = parsed.createdAt;
|
|
646
|
+
if (typeof createdAt === "number" && Number.isFinite(createdAt)) {
|
|
647
|
+
return this.now() - createdAt;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
catch {
|
|
652
|
+
// 坏文件退回 mtime
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
try {
|
|
656
|
+
return this.now() - fs.statSync(file).mtimeMs;
|
|
657
|
+
}
|
|
658
|
+
catch {
|
|
659
|
+
return 0;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
/** 重试状态文件路径。 */
|
|
663
|
+
retryPath(id) {
|
|
664
|
+
return path.join(this.retryDir, `${agentSegment(id)}.json`);
|
|
665
|
+
}
|
|
666
|
+
/** 读重试状态;无状态 / 坏文件 → null(**不抛错**)。 */
|
|
667
|
+
readRetryState(id) {
|
|
668
|
+
const raw = readFileSafe(this.retryPath(id));
|
|
669
|
+
if (raw === null)
|
|
670
|
+
return null;
|
|
671
|
+
try {
|
|
672
|
+
const parsed = JSON.parse(raw);
|
|
673
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
674
|
+
return null;
|
|
675
|
+
// 未知版本 → 拒绝按已知格式解析(规范 V3)→ 当作「无状态」。
|
|
676
|
+
if (!isKnownOnDiskVersion(onDiskVersionOf(parsed)))
|
|
677
|
+
return null;
|
|
678
|
+
const s = parsed;
|
|
679
|
+
if (typeof s.nextAttemptAt !== "number" || !Number.isFinite(s.nextAttemptAt))
|
|
680
|
+
return null;
|
|
681
|
+
return {
|
|
682
|
+
id,
|
|
683
|
+
retryCount: typeof s.retryCount === "number" ? s.retryCount : 0,
|
|
684
|
+
throttleCount: typeof s.throttleCount === "number" ? s.throttleCount : 0,
|
|
685
|
+
nextAttemptAt: s.nextAttemptAt,
|
|
686
|
+
lastReason: s.lastReason === "throttled" ? "throttled" : "failed",
|
|
687
|
+
lastAt: typeof s.lastAt === "number" ? s.lastAt : 0,
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
catch {
|
|
691
|
+
return null;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* 写重试状态(原子:tmp **独占** + 同目录 rename + 0600)。
|
|
696
|
+
*
|
|
697
|
+
* 不 fsync:重试记账是**派生**状态(删掉 = 立即重试,规范 §1.4)→ 不值得 fsync。
|
|
698
|
+
* 未知版本 → **拒绝写入**(不得覆盖原文件,规范 V3②)。
|
|
699
|
+
*/
|
|
700
|
+
writeRetryState(state) {
|
|
701
|
+
const file = this.retryPath(state.id);
|
|
702
|
+
if (this.foreignRetryVersion(file) !== null) {
|
|
703
|
+
reportForeignVersion("重试 sidecar", file, this.foreignRetryVersion(file));
|
|
704
|
+
return;
|
|
705
|
+
}
|
|
706
|
+
try {
|
|
707
|
+
writeAtomicFile(file, `${JSON.stringify(state, null, 2)}\n`);
|
|
708
|
+
}
|
|
709
|
+
catch {
|
|
710
|
+
// 写不进去不抛错(退避记账丢失 = 立即重试,仍有 maxRetries 兜底)
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
/** 该 sidecar 文件当前是否是**不认识的版本**(是 → 不得覆盖原文件,规范 V3②)。 */
|
|
714
|
+
foreignRetryVersion(file) {
|
|
715
|
+
const raw = readFileSafe(file);
|
|
716
|
+
if (raw === null)
|
|
717
|
+
return null;
|
|
718
|
+
try {
|
|
719
|
+
const version = onDiskVersionOf(JSON.parse(raw));
|
|
720
|
+
if (isKnownOnDiskVersion(version))
|
|
721
|
+
return null;
|
|
722
|
+
return typeof version === "string" ? version : (JSON.stringify(version) ?? "缺失");
|
|
723
|
+
}
|
|
724
|
+
catch {
|
|
725
|
+
return null; // 坏文件不是「未知版本」→ 按无状态处理
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
/** 清重试状态(信封已归档 / 已完成 → 不再需要退避信息)。 */
|
|
729
|
+
clearRetryState(id) {
|
|
730
|
+
removeFile(this.retryPath(id));
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* 指数退避时长(ms,**有界**):第 n 次 → base × 2^(n-1),封顶 `retryMaxMs`。
|
|
734
|
+
*
|
|
735
|
+
* 失败与节流分开计数:节流(defer/drop)不是错误 → 退避更长但**不计入失败上限**。
|
|
736
|
+
*/
|
|
737
|
+
backoffMs(reason, retryCount, throttleCount) {
|
|
738
|
+
const attempts = reason === "failed" ? retryCount : throttleCount;
|
|
739
|
+
const base = reason === "failed" ? this.retryBaseMs : this.throttleBaseMs;
|
|
740
|
+
const exp = base * 2 ** Math.min(Math.max(attempts, 1) - 1, 16);
|
|
741
|
+
return Math.min(exp, this.retryMaxMs);
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* **来源校验未通过 → 拒收并归档**(RELSEC P1)。
|
|
745
|
+
*
|
|
746
|
+
* - 信封移入 `unverified/`(**不投递**、**不删**);
|
|
747
|
+
* - 写一份 `<id>.reject.json` 旁证(原因 / 时刻 / from / to);
|
|
748
|
+
* - `console.error` 上报(宿主的用户可见通道有限 → stderr + 归档双留痕)。
|
|
749
|
+
*/
|
|
750
|
+
archiveUnverified(file, envelope, verdict) {
|
|
751
|
+
const reason = verdict.ok ? "unknown" : verdict.reason;
|
|
752
|
+
const detail = verdict.ok ? "" : verdict.error;
|
|
753
|
+
const target = path.join(this.unverifiedDir, `${agentSegment(envelope.id)}.json`);
|
|
754
|
+
moveFile(file, target);
|
|
755
|
+
archiveUnverifiedEnvelope({
|
|
756
|
+
agentDir: this.agentDir,
|
|
757
|
+
agentId: this.agentId,
|
|
758
|
+
envelope,
|
|
759
|
+
reason,
|
|
760
|
+
error: detail,
|
|
761
|
+
at: this.now(),
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
/** 坏文件隔离到 `corrupt/`(保留原 id 便于审计;**不删**)。 */
|
|
765
|
+
quarantine(file, name) {
|
|
766
|
+
const base = name.replace(/\.json$/, "");
|
|
767
|
+
const target = path.join(this.corruptDir, `${base}.corrupt-${this.now()}`);
|
|
768
|
+
moveFile(file, target);
|
|
769
|
+
}
|
|
770
|
+
/**
|
|
771
|
+
* 回收**认领中卡死**的信封(偏差 P-D3)。
|
|
772
|
+
*
|
|
773
|
+
* 实测(规范 §4.2 场景 2):进程在 `rename` 到 `claimed/` 之后崩溃 → 信封永远卡在
|
|
774
|
+
* `claimed/`:`scan()` 只扫收件箱(看不到它)、`claim()` 在收件箱里找不到 → `reason:"missing"`、
|
|
775
|
+
* `cleanup()` 又只在「TTL 也过期」时才归档 → **该消息再也不会被处理**(永久卡死)。
|
|
776
|
+
*
|
|
777
|
+
* 回收规则(规范 §6 阈值表「`claimed/` 里的信封 · 邮箱持有者 · 每次 `scan()` · 信封年龄 ≥
|
|
778
|
+
* 认领锁失效时长(1 小时)」):认领年龄 ≥ `staleClaimMs` → 回收。
|
|
779
|
+
*
|
|
780
|
+
* **重投递 vs 归档(取舍与理由)**:本实现选**重投递(移回收件箱)**。
|
|
781
|
+
* 归档同样能消除「卡死」,但那条消息就**永远不会被用户看到**(= 功能性丢消息,只是可审计);
|
|
782
|
+
* 重投递让它重新可处理,符合「不丢消息」的第一原则。
|
|
783
|
+
* 代价是「可能重复处理」:原持有者若只是慢(而非崩溃)而最终完成,它会 `seen.mark(id)`
|
|
784
|
+
* → 重投递的那份在 `scan()` 里命中 `seen` → 落到 `processed/` 而**不被再次处理**;
|
|
785
|
+
* 为此回收时给重投递的信封写一个**短暂退避**(`retry/` sidecar),
|
|
786
|
+
* 让还活着的原持有者有机会先落 `seen`(退避到期前 `scan()` 会跳过它)。
|
|
787
|
+
*/
|
|
788
|
+
recoverStaleClaims() {
|
|
789
|
+
const now = this.now();
|
|
790
|
+
let recovered = 0;
|
|
791
|
+
for (const name of readDirSafe(this.claimedDir)) {
|
|
792
|
+
if (!name.endsWith(".json"))
|
|
793
|
+
continue;
|
|
794
|
+
const file = path.join(this.claimedDir, name);
|
|
795
|
+
if (!isFile(file))
|
|
796
|
+
continue;
|
|
797
|
+
const id = name.replace(/\.json$/, "");
|
|
798
|
+
// 认领年龄:认领锁里的 ts(权威)→ 认领文件 mtime(认领时刷新过)
|
|
799
|
+
if (this.claimAge(id, file, now) < this.staleClaimMs)
|
|
800
|
+
continue;
|
|
801
|
+
if (!moveFile(file, path.join(this.inboxDir, name)))
|
|
802
|
+
continue;
|
|
803
|
+
this.releaseClaimFile(id);
|
|
804
|
+
this.writeRetryState({
|
|
805
|
+
id,
|
|
806
|
+
retryCount: 0,
|
|
807
|
+
throttleCount: 0,
|
|
808
|
+
nextAttemptAt: now + DEFAULT_RECOVERY_GRACE_MS,
|
|
809
|
+
lastReason: "throttled",
|
|
810
|
+
lastAt: now,
|
|
811
|
+
});
|
|
812
|
+
recovered += 1;
|
|
813
|
+
}
|
|
814
|
+
return recovered;
|
|
815
|
+
}
|
|
816
|
+
/** 认领年龄(ms):认领锁里的 ts(权威)→ 认领文件的 mtime(认领时刷新过)。 */
|
|
817
|
+
claimAge(id, file, now) {
|
|
818
|
+
const content = readFileSafe(this.claimPath(id));
|
|
819
|
+
if (content !== null) {
|
|
820
|
+
const parts = content.trim().split(/\s+/);
|
|
821
|
+
if (parts[0] === CLAIM_MARKER) {
|
|
822
|
+
const ts = Number.parseInt(parts[2] ?? "", 10);
|
|
823
|
+
if (Number.isFinite(ts))
|
|
824
|
+
return now - ts;
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
try {
|
|
828
|
+
return now - fs.statSync(file).mtimeMs;
|
|
829
|
+
}
|
|
830
|
+
catch {
|
|
831
|
+
return 0;
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
/** 残留 tmp 的回收阈值(ms):tmp 文件 mtime > 1 小时即删(规范 §6 阈值表)。 */
|
|
836
|
+
export const DEFAULT_TMP_STALE_MS = 3_600_000;
|
|
837
|
+
/** tmp 文件名判定:`*.tmp`(固定 tmp 名)或 `*.tmp-<pid>-<ts>`(唯一 tmp 名)。 */
|
|
838
|
+
function isTemporaryName(name) {
|
|
839
|
+
return /\.tmp(-.*)?$/.test(name);
|
|
840
|
+
}
|
|
841
|
+
/** 递归遍历目录下的普通文件(不跟随符号链接;目录不存在 → 什么都不做)。 */
|
|
842
|
+
function walkFiles(dir, visit, depth = 0) {
|
|
843
|
+
if (depth > 8)
|
|
844
|
+
return;
|
|
845
|
+
let entries;
|
|
846
|
+
try {
|
|
847
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
848
|
+
}
|
|
849
|
+
catch {
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
for (const entry of entries) {
|
|
853
|
+
const full = path.join(dir, entry.name);
|
|
854
|
+
if (entry.isDirectory())
|
|
855
|
+
walkFiles(full, visit, depth + 1);
|
|
856
|
+
else if (entry.isFile())
|
|
857
|
+
visit(full);
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
/**
|
|
861
|
+
* 回收**残留 tmp**(偏差 P-D2)。
|
|
862
|
+
*
|
|
863
|
+
* 规范 §6 阈值表:「残留 tmp(全部写点)· 持有 `<proactiveDir>` 的进程 · 每次启动 + 每 1 小时 ·
|
|
864
|
+
* tmp 文件 mtime > 1 小时 → 删除」。
|
|
865
|
+
*
|
|
866
|
+
* 实测(规范 §4.2 场景 1):崩溃在「tmp 已写、rename 未发生」→ `mailbox/<seg>/<id>.json.tmp-<pid>-<ts>`
|
|
867
|
+
* 残留,而 `cleanup()` 不删 tmp → **无回收责任方**(磁盘无限增长,且残留内容可能被误当成信封)。
|
|
868
|
+
*
|
|
869
|
+
* 覆盖全部写点:`tasks.json.tmp` / `seen.json.tmp` / `config.json.tmp` / `agents/*.tmp` /
|
|
870
|
+
* `mailbox/<seg>/*.tmp-<pid>-<ts>` / `retry/*.tmp-<pid>`。
|
|
871
|
+
* 返回被删除的 tmp 路径(**不抛错**)。
|
|
872
|
+
*/
|
|
873
|
+
export function gcStaleTemporaries(agentDir, opts) {
|
|
874
|
+
const now = opts?.now ?? Date.now;
|
|
875
|
+
const staleMs = opts?.staleMs ?? DEFAULT_TMP_STALE_MS;
|
|
876
|
+
const removed = [];
|
|
877
|
+
walkFiles(proactiveDir(agentDir), (file) => {
|
|
878
|
+
if (!isTemporaryName(path.basename(file)))
|
|
879
|
+
return;
|
|
880
|
+
let mtime;
|
|
881
|
+
try {
|
|
882
|
+
mtime = fs.statSync(file).mtimeMs;
|
|
883
|
+
}
|
|
884
|
+
catch {
|
|
885
|
+
return;
|
|
886
|
+
}
|
|
887
|
+
if (now() - mtime <= staleMs)
|
|
888
|
+
return;
|
|
889
|
+
if (removeFile(file))
|
|
890
|
+
removed.push(file);
|
|
891
|
+
});
|
|
892
|
+
return removed;
|
|
893
|
+
}
|
|
894
|
+
/**
|
|
895
|
+
* 回收后重投递的**短暂退避**(ms)。
|
|
896
|
+
*
|
|
897
|
+
* 为什么需要:回收时原持有者可能只是「慢」而不是崩溃;给它一个窗口去 `seen.mark(id)`,
|
|
898
|
+
* 重投递的那份就会被去重(落到 `processed/`,不重复处理)。
|
|
899
|
+
*/
|
|
900
|
+
export const DEFAULT_RECOVERY_GRACE_MS = 5_000;
|
|
901
|
+
/** 读目录;目录不存在 → 空数组(**不抛错**)。 */
|
|
902
|
+
function readDirSafe(dir) {
|
|
903
|
+
try {
|
|
904
|
+
return fs.readdirSync(dir);
|
|
905
|
+
}
|
|
906
|
+
catch {
|
|
907
|
+
return [];
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
/** 读文件;失败 → null(**不抛错**)。 */
|
|
911
|
+
function readFileSafe(file) {
|
|
912
|
+
try {
|
|
913
|
+
return fs.readFileSync(file, "utf8");
|
|
914
|
+
}
|
|
915
|
+
catch {
|
|
916
|
+
return null;
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
/**
|
|
920
|
+
* **拒收归档**(RELSEC P1):把来源校验未通过的信封写进 `mailbox/<agent>/unverified/` 并留旁证。
|
|
921
|
+
*
|
|
922
|
+
* 邮箱路径与 socket 路径共用(socket 没有「文件可搬」的概念 → 直接写一份归档)。
|
|
923
|
+
* 返回归档路径(失败 → null)。
|
|
924
|
+
*/
|
|
925
|
+
export function archiveUnverifiedEnvelope(opts) {
|
|
926
|
+
const dir = containedPath(path.join(proactiveDir(opts.agentDir), "mailbox"), agentSegment(opts.agentId), "unverified");
|
|
927
|
+
const base = agentSegment(opts.envelope.id);
|
|
928
|
+
const target = path.join(dir, `${base}.json`);
|
|
929
|
+
try {
|
|
930
|
+
writeAtomicFile(target, `${JSON.stringify(opts.envelope, null, 2)}\n`);
|
|
931
|
+
writeAtomicFile(path.join(dir, `${base}.reject.json`), `${JSON.stringify({
|
|
932
|
+
id: opts.envelope.id,
|
|
933
|
+
from: opts.envelope.from,
|
|
934
|
+
to: opts.envelope.to,
|
|
935
|
+
reason: opts.reason,
|
|
936
|
+
detail: opts.error,
|
|
937
|
+
at: opts.at,
|
|
938
|
+
}, null, 2)}\n`);
|
|
939
|
+
}
|
|
940
|
+
catch {
|
|
941
|
+
return null;
|
|
942
|
+
}
|
|
943
|
+
console.error(`[mailbox] 来源校验未通过(${opts.reason})→ 拒收并归档:${opts.envelope.id}(from=${opts.envelope.from}):${opts.error}`);
|
|
944
|
+
return target;
|
|
945
|
+
}
|
|
946
|
+
/** 读文件大小(失败 → null;**不抛错**)。 */
|
|
947
|
+
function fileSize(file) {
|
|
948
|
+
try {
|
|
949
|
+
return fs.statSync(file).size;
|
|
950
|
+
}
|
|
951
|
+
catch {
|
|
952
|
+
return null;
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
/** 是否是普通文件。 */
|
|
956
|
+
function isFile(file) {
|
|
957
|
+
try {
|
|
958
|
+
return fs.statSync(file).isFile();
|
|
959
|
+
}
|
|
960
|
+
catch {
|
|
961
|
+
return false;
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
/** 移动文件(自动建目标目录);失败 → false(**不抛错**)。 */
|
|
965
|
+
function moveFile(from, to) {
|
|
966
|
+
try {
|
|
967
|
+
ensureDir(path.dirname(to));
|
|
968
|
+
fs.renameSync(from, to);
|
|
969
|
+
return true;
|
|
970
|
+
}
|
|
971
|
+
catch {
|
|
972
|
+
return false;
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
/** 删除文件;失败 → false(**不抛错**)。 */
|
|
976
|
+
function removeFile(file) {
|
|
977
|
+
try {
|
|
978
|
+
fs.unlinkSync(file);
|
|
979
|
+
return true;
|
|
980
|
+
}
|
|
981
|
+
catch {
|
|
982
|
+
return false;
|
|
983
|
+
}
|
|
984
|
+
}
|