@openclaw/lobster 2026.7.2-beta.7 → 2026.7.33

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.
Files changed (45) hide show
  1. package/dist/index.js +149 -9
  2. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/.github/dependabot.yml +2 -42
  3. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/.github/workflows/ci.yml +3 -51
  4. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
  5. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/README.md +9 -9
  6. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/index.js +246 -41
  7. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/lib/schemes.js +9 -4
  8. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/lib/utils.js +319 -157
  9. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/package.json +4 -4
  10. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
  11. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/equal.test.js +31 -54
  12. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
  13. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
  14. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
  15. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
  16. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
  17. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/parse.test.js +2 -0
  18. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
  19. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
  20. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/security-normalization.test.js +101 -0
  21. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/security.test.js +211 -3
  22. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/uri-js.test.js +1 -1
  23. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
  24. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/util.test.js +0 -9
  25. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
  26. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/tsconfig.json +7 -8
  27. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/types/index.d.ts +9 -0
  28. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/types/index.test-d.ts +17 -0
  29. package/node_modules/typebox/build/compile/validator.d.mts +4 -1
  30. package/node_modules/typebox/build/guard/guard.d.mts +1 -1
  31. package/node_modules/typebox/build/guard/guard.mjs +2 -5
  32. package/node_modules/typebox/build/guard/string.mjs +4 -16
  33. package/node_modules/typebox/build/schema/engine/_functions.mjs +15 -34
  34. package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
  35. package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -8
  36. package/node_modules/typebox/build/typebox.d.mts +1 -1
  37. package/node_modules/typebox/build/typebox.mjs +1 -1
  38. package/node_modules/typebox/package.json +1 -1
  39. package/node_modules/typebox/readme.md +32 -29
  40. package/openclaw.plugin.json +0 -1
  41. package/package.json +5 -5
  42. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/benchmark/encoder.mjs +0 -54
  43. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/scheme-normalization.test.js +0 -16
  44. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/test/security-utf8-encoding.test.js +0 -0
  45. package/node_modules/@clawdbot/lobster/node_modules/fast-uri/types/index.tst.ts +0 -15
@@ -28,6 +28,15 @@ declare namespace fastUri {
28
28
  nid?: string;
29
29
  }
30
30
 
31
+ /**
32
+ * @deprecated Use Options instead
33
+ */
34
+ export type options = Options
35
+ /**
36
+ * @deprecated Use URIComponent instead
37
+ */
38
+ export type URIComponents = URIComponent
39
+
31
40
  export function normalize (uri: string, opts?: Options): string
32
41
  export function normalize (uri: URIComponent, opts?: Options): URIComponent
33
42
  export function normalize (uri: any, opts?: Options): any
@@ -0,0 +1,17 @@
1
+ import uri, { URIComponents, URIComponent, Options, options } from '..'
2
+ import { expectDeprecated, expectType } from 'tsd'
3
+
4
+ const parsed = uri.parse('foo')
5
+ expectType<URIComponents>(parsed)
6
+ const parsed2 = uri.parse('foo', {
7
+ domainHost: true,
8
+ scheme: 'https',
9
+ unicodeSupport: false
10
+ })
11
+ expectType<URIComponents>(parsed2)
12
+
13
+ expectType<URIComponent>({} as URIComponents)
14
+ expectDeprecated({} as URIComponents)
15
+
16
+ expectType<Options>({} as options)
17
+ expectDeprecated({} as options)
@@ -1,11 +1,14 @@
1
1
  import { type TLocalizedValidationError } from '../error/index.mjs';
2
2
  import { type StaticDecode, type StaticEncode, type TProperties, type TSchema } from '../type/index.mjs';
3
+ import { BuildResult, EvaluateResult } from '../schema/index.mjs';
3
4
  export declare class Validator<Context extends TProperties = TProperties, Type extends TSchema = TSchema, Encode extends unknown = StaticEncode<Type, Context>, Decode extends unknown = StaticDecode<Type, Context>> {
4
5
  private readonly hasCodec;
5
6
  private readonly buildResult;
6
7
  private readonly evaluateResult;
7
- /** Constructs a Validator. */
8
+ /** Constructs a Validator with the given Context and Type. */
8
9
  constructor(context: Context, type: Type);
10
+ /** Constructs a Validator with the given arguments. */
11
+ constructor(hasCodec: boolean, buildResult: BuildResult, evaluateResult: EvaluateResult);
9
12
  /** Returns true if this Validator is using JIT acceleration. */
10
13
  IsAccelerated(): boolean;
11
14
  /** Returns the Context for this validator. */
@@ -61,5 +61,5 @@ export declare function Keys(value: Record<PropertyKey, unknown>): string[];
61
61
  export declare function Symbols(value: Record<PropertyKey, unknown>): symbol[];
62
62
  /** Returns the property values for the given object via `Object.values()` */
63
63
  export declare function Values(value: Record<PropertyKey, unknown>): unknown[];
64
- /** Returns true if left and right values are structurally equal */
64
+ /** Tests values for deep equality */
65
65
  export declare function IsDeepEqual(left: unknown, right: unknown): boolean;
@@ -1,4 +1,3 @@
1
- // deno-fmt-ignore-file
2
1
  import * as String from './string.mjs';
3
2
  // --------------------------------------------------------------------------
4
3
  // Guards
@@ -204,9 +203,7 @@ function DeepEqualArray(left, right) {
204
203
  return IsArray(right) && IsEqual(left.length, right.length) &&
205
204
  left.every((_, index) => IsDeepEqual(left[index], right[index]));
206
205
  }
207
- /** Returns true if left and right values are structurally equal */
206
+ /** Tests values for deep equality */
208
207
  export function IsDeepEqual(left, right) {
209
- return (IsArray(left) ? DeepEqualArray(left, right) :
210
- IsObject(left) ? DeepEqualObject(left, right) :
211
- IsEqual(left, right));
208
+ return (IsArray(left) ? DeepEqualArray(left, right) : IsObject(left) ? DeepEqualObject(left, right) : IsEqual(left, right));
212
209
  }
@@ -5,18 +5,6 @@ function IsBetween(value, min, max) {
5
5
  return value >= min && value <= max;
6
6
  }
7
7
  // --------------------------------------------------------------------------
8
- // IsZeroWidthJoiner
9
- // --------------------------------------------------------------------------
10
- function IsZeroWidthJoiner(value) {
11
- return (value === 0x200D);
12
- }
13
- // --------------------------------------------------------------------------
14
- // IsHighSurrogate
15
- // --------------------------------------------------------------------------
16
- function IsHighSurrogate(value) {
17
- return IsBetween(value, 0xD800, 0xDBFF);
18
- }
19
- // --------------------------------------------------------------------------
20
8
  // IsRegionalIndicator
21
9
  // --------------------------------------------------------------------------
22
10
  function IsRegionalIndicator(value) {
@@ -84,10 +72,10 @@ function NextGraphemeClusterIndex(value, clusterStart) {
84
72
  // IsGraphemeCodePoint
85
73
  // --------------------------------------------------------------------------
86
74
  function IsGraphemeCodePoint(value) {
87
- return (IsHighSurrogate(value) ||
88
- IsCombiningMark(value) ||
89
- IsVariationSelector(value) ||
90
- IsZeroWidthJoiner(value));
75
+ return (IsBetween(value, 0xD800, 0xDBFF) || // High surrogate
76
+ IsBetween(value, 0x0300, 0x036F) || // Combining diacritical marks
77
+ (value === 0x200D) // Zero-width joiner
78
+ );
91
79
  }
92
80
  // --------------------------------------------------------------------------
93
81
  // GraphemeCount
@@ -1,66 +1,47 @@
1
1
  // deno-fmt-ignore-file
2
+ import * as Schema from '../types/index.mjs';
2
3
  import { Hashing } from '../../system/hashing/index.mjs';
3
4
  import { EmitGuard as E } from '../../guard/index.mjs';
4
5
  import { BuildSchema } from './schema.mjs';
5
- const index = [0];
6
- const names = new Map;
7
- const funcs = new Map();
8
- // ------------------------------------------------------------------
9
- // CreateName
10
- // ------------------------------------------------------------------
11
- function NextName() {
12
- return Hashing.Hash(index[0]++);
13
- }
14
- function CreateName(schema, href) {
15
- if (!names.has(schema))
16
- names.set(schema, new Map());
17
- const hrefs = names.get(schema);
18
- if (hrefs.has(href))
19
- return hrefs.get(href);
20
- const name = NextName();
21
- hrefs.set(href, name);
22
- return name;
23
- }
6
+ const functions = new Map();
24
7
  // ------------------------------------------------------------------
25
8
  // CreateCallExpression
26
9
  // ------------------------------------------------------------------
27
- function CreateCallExpression(context, _schema, name, value) {
10
+ function CreateCallExpression(context, _schema, hash, value) {
28
11
  return context.UseUnevaluated()
29
- ? E.Call(`check_${name}`, ['context', value])
30
- : E.Call(`check_${name}`, [value]);
12
+ ? E.Call(`check_${hash}`, ['context', value])
13
+ : E.Call(`check_${hash}`, [value]);
31
14
  }
32
15
  // ------------------------------------------------------------------
33
16
  // CreateFunctionExpression
34
17
  // ------------------------------------------------------------------
35
- function CreateFunctionExpression(stack, context, schema, name) {
18
+ function CreateFunctionExpression(stack, context, schema, hash) {
36
19
  const expression = BuildSchema(stack, context, schema, 'value');
37
20
  return context.UseUnevaluated()
38
- ? E.ConstDeclaration(`check_${name}`, E.ArrowFunction(['context', 'value'], expression))
39
- : E.ConstDeclaration(`check_${name}`, E.ArrowFunction(['value'], expression));
21
+ ? E.ConstDeclaration(`check_${hash}`, E.ArrowFunction(['context', 'value'], expression))
22
+ : E.ConstDeclaration(`check_${hash}`, E.ArrowFunction(['value'], expression));
40
23
  }
41
24
  // ------------------------------------------------------------------
42
25
  // ResetFunctions
43
26
  // ------------------------------------------------------------------
44
27
  export function ResetFunctions() {
45
- index[0] = 0;
46
- names.clear();
47
- funcs.clear();
28
+ functions.clear();
48
29
  }
49
30
  // ------------------------------------------------------------------
50
31
  // GetFunctions
51
32
  // ------------------------------------------------------------------
52
33
  export function GetFunctions() {
53
- return [...funcs.values()];
34
+ return [...functions.values()];
54
35
  }
55
36
  // ------------------------------------------------------------------
56
37
  // CreateFunction
57
38
  // ------------------------------------------------------------------
58
39
  export function CreateFunction(stack, context, schema, value) {
59
- const name = CreateName(schema, stack.BaseURL().href);
60
- const call = CreateCallExpression(context, schema, name, value);
61
- if (funcs.has(name))
40
+ const hash = Schema.IsSchemaObject(schema) ? Hashing.Hash({ __baseURL: stack.BaseURL().href, ...schema }) : Hashing.Hash(schema);
41
+ const call = CreateCallExpression(context, schema, hash, value);
42
+ if (functions.has(hash))
62
43
  return call;
63
- funcs.set(name, '');
64
- funcs.set(name, CreateFunctionExpression(stack, context, schema, name));
44
+ functions.set(hash, '');
45
+ functions.set(hash, CreateFunctionExpression(stack, context, schema, hash));
65
46
  return call;
66
47
  }
@@ -9,8 +9,3 @@ export declare function ReadonlyObjectDeferred<Type extends TSchema>(type: Type,
9
9
  export type TReadonlyObject<Type extends TSchema> = (TReadonlyObjectAction<Type>);
10
10
  /** This type is an alias for TypeScript's `Readonly<T>` utility type. It will make all properties of a TObject readonly or marks an TArray or TTuple as immutable `readonly T[]`. */
11
11
  export declare function ReadonlyObject<Type extends TSchema>(type: Type, options?: TSchemaOptions): TReadonlyObject<Type>;
12
- /**
13
- * This type has been renamed to ReadonlyObject.
14
- * @deprecated
15
- */
16
- export declare const ReadonlyType: typeof ReadonlyObject;
@@ -9,11 +9,3 @@ export function ReadonlyObjectDeferred(type, options = {}) {
9
9
  export function ReadonlyObject(type, options = {}) {
10
10
  return ReadonlyObjectAction(type, options);
11
11
  }
12
- // ------------------------------------------------------------------
13
- // Alias
14
- // ------------------------------------------------------------------
15
- /**
16
- * This type has been renamed to ReadonlyObject.
17
- * @deprecated
18
- */
19
- export const ReadonlyType = ReadonlyObject;
@@ -19,7 +19,7 @@ export { Omit, type TOmit, type TOmitDeferred } from './type/action/omit.mjs';
19
19
  export { Parameters, type TParameters, type TParametersDeferred } from './type/action/parameters.mjs';
20
20
  export { Partial, type TPartial, type TPartialDeferred } from './type/action/partial.mjs';
21
21
  export { Pick, type TPick, type TPickDeferred } from './type/action/pick.mjs';
22
- export { ReadonlyObject, ReadonlyType, type TReadonlyObject, type TReadonlyObjectDeferred } from './type/action/readonly_object.mjs';
22
+ export { ReadonlyObject, type TReadonlyObject, type TReadonlyObjectDeferred } from './type/action/readonly_object.mjs';
23
23
  export { Required, type TRequired, type TRequiredDeferred } from './type/action/required.mjs';
24
24
  export { ReturnType, type TReturnType, type TReturnTypeDeferred } from './type/action/return_type.mjs';
25
25
  export { type TUncapitalize, type TUncapitalizeDeferred, Uncapitalize } from './type/action/uncapitalize.mjs';
@@ -31,7 +31,7 @@ export { Omit } from './type/action/omit.mjs';
31
31
  export { Parameters } from './type/action/parameters.mjs';
32
32
  export { Partial } from './type/action/partial.mjs';
33
33
  export { Pick } from './type/action/pick.mjs';
34
- export { ReadonlyObject, ReadonlyType } from './type/action/readonly_object.mjs';
34
+ export { ReadonlyObject } from './type/action/readonly_object.mjs';
35
35
  export { Required } from './type/action/required.mjs';
36
36
  export { ReturnType } from './type/action/return_type.mjs';
37
37
  export { Uncapitalize } from './type/action/uncapitalize.mjs';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "typebox",
3
3
  "description": "Json Schema Type Builder with Static Type Resolution for TypeScript",
4
- "version": "1.3.6",
4
+ "version": "1.3.3",
5
5
  "keywords": [
6
6
  "typescript",
7
7
  "jsonschema"
@@ -111,24 +111,27 @@ type User = Type.Static<typeof User> // type User = {
111
111
 
112
112
  ## Script
113
113
 
114
- [Documentation](https://sinclairzx81.github.io/typebox/#/docs/script/overview) | [Example 1](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFkIATAVwBtVKBjCAOwDO8BgEMYACzgBeREQB0AZW5RgYGAAoABpThxCaOADVU3GNABM0uAG84ZAFxw+rEMVRQANHCSPnr93AAvjp6REYmZlAAzFa2Dk4ubp7evonuXgBeqf5QQSH66Mam0AAssXbZSV4+CTmZlelwAO4NucGaAJTUdHAAIqhofMyofMIsHFy8gvC2DKgCkoFWyGiKyqoaohJemrr5YcawqGSxIbqQAsAwwPyORZElHmdO0CAi7HcR0FFPurqsADdPsUoOYQsFdAU4ABxVA4VAwKBIU5-OAA9zXbjzT5HMgAbQAur8-sAhsAsQJWoTwfsDFt3MB3ii-iJXMARjBgQ9ibpmMAMBhWAJUFzSjy4AI0NwOCIoKKoCUaZCwnMFszdABzOEgBFIxyw+GIpDit4wBnvRz0lTvGmdbr0ABKrFGoHQDtQGE4phufEoqvEcjA2DQsHZAjkWsNSMDwYxYbk6NDFLkV1QIHDQYgIeu80DEEu134MazcdzZD98wDmez8cjOqNxZrucTmNzqfTjdL4b4r3endDZYrC37OfDdd1SBH8Zb5LbZo71a7ckBU8H-tX4dN5vYG7kfIFQtQu-L68XA83Ym3u9ZxHZo2PQ6rsfPci31p3Z9HcklJhlUAftD0AoMBiOScAAJJ8Bg7gjFilCCnw3r8HAUAjMMUDqDqCyOCsR7AaB3AADwFBAGCMJWAB8HQ2CEWEBuODYzhSeIAAwEnmBY+nI5a6HREbahOCZxsxbFyD2UBvDuPFwHxDHRkx8ysexK7SXxb6Mju+6CsK3G0ZWr6Xu+cg3neMC6bx+nqX2P7Suwsq6YEQA) | [Example 2](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFkIATAVwBtVKA7AQxFQBnMLwDG6BrxgALOAG9KcOKjKRYcURG6D4ANVSiY0AExwAvIiIA6APLEAVgZgAKOXDIAuS2isA5ViDEqFDOAJQANHBIXsg+-oHBYXAAvqGKyqrQ8Jraek7QAMzm3qi2Dk6u7jHW8UEhEVHVcQF1YZEAXk2ltYmhKWlKKmrZWjpw+obQACzFsaV2joaVniV+Lb2R0as99R1dawm7cADu+ztJqZTJ1HRwACKoaNzMqNzwTGyclDlj+rAqs2sCwqCiUkEEwBgwC0XkkMisEyMUCm4XS3GgIF47FhUmkCPyUAKqKUrAAbjj4YiTFc0j94ABxVA4VAwKBIQE+YFLUFwUnBKHiQT7ACCUCgvCQzj+MBUEXSwGewEFIrFEuccwOrVCaUudMYUmCwCxHPm5W56X4xGArxgFLxVORxLgzGAGAwrEEqDt+MmjvSwgMHF4UG9DqmNO+o3eQlkFg1XJcPIA5kyBKytozmemnZiZVAjdj9XmCxHaPQAEqsN6gdDl1AYTiGaHcSgMGNWMDYNCwa2CKwprNsjtd-m9qx8nuCqyQ1AgPudiDdqFCDsQCFQrTDxejldkVvthdLscDtNDw87vsTgUrmdzrdHlfoqCY9j3i9WPdtwR4889lcnlkzxHP9L1HKdb3nYDlz7Mk3xAj992-ODoKsXNDSxZCxxdN0PVKX8UM-A8oLHND8ww-Cx0ta03kw3dEJ-YiV1IgtaL7ANRCDKBWIQss4AAZRgKQlTgABJbgMGCV5xEod1uCbLQ4CgV4XhCARv32AShNEAAeQg0AgDBGBjAA+PoeTUvEAPTccwKEABtAAGABdVd12bBClAs-tU0ApAbMneznKsJ8Xw8uAvKsocryVQKXNgvdPPbZiMOw91PTCrzktfKibQypKDTI192M4hDkiAA) | [Challenge](test/typescript/readme.md)
114
+ [Documentation](https://sinclairzx81.github.io/typebox/#/docs/script/overview) | [Example 1](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFonmXW32POv3b7k0AdAGUAxlGBgYACjwC5eAJS9G3VWvXdqdOADkAhiFQBnMHpGpKIiADsj8ALJ6YACzgBeREWFiJ0gAaUcHCEaHAAaqgiMNAATO5wAN5wZABccNYAriDEqFAANHBIaZnZuXAAvoHBROGR0VAAzPEAogBuegA2GU6oADwRUbFwAGSJcABexVk5UBUAfFUh6AP1ACwt7V09-XXQTaNJAO5TpbPlC35KygAiqGjWACao1vD6hiZmFla28En2xq5yvF+KhvOJJFIknIBI4XBUCn4gosahFYKgyPEElUgpAjMAYMAbGkVtBVnlseloCBOsTdo1yUEghlWrTBlAYlVKkElnAAOKoHCoGBQJCYimtXIE8xGWlosgAbQAugzGcBHsBpScZkrOcjQrDcsBOmLGXADMRgM8YKy1iqgg9gBgMBkjKgbaS7XATJEMh09FB3VBVrruTV-kZXB4saaAOYCwzCop8+NCkWe6kwQ00uAG8SdXWXLT0ABKGReoHQxdQGA6dUJ1ko4ecAjA2DQsEtRgEccFiZbbclnYEEo70oE+NQIC7rYg7YJxhbEDxBJs-dng4XZEbALXc6HPYTIt3G67I6lC4nU+PHYX1ipnWv867W6bj-3Kb7M73C7PGovmavL8TwEZk303bcIzArsMyzDooIEB0nRdUEgJvZ8IObVCnwEGC8zgrCh3NS0Xngl8dwIhdcKNfCBzQgRvREX1-VIos4CEGAnA1OAAElrAwXJnnMShnWsKJ6zgKBnieKApHeZw0hBYQOKlXolggDAcwBOYFESKo5O7D8j1-aV5QABkVRdl3rAQtyCfSD1TJBh0HEzzIEO8oGpODbLgezDKc4zjDMizQJ8-SqIfRDnVdGy9J3CK4KIq1Yrs+Kejw+i0EYv0oFi8ogA) | [Example 2](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFonmXW32POv3b7k0AdACpejbuImTu1OnAByAQxCoAzmAUBjVJQB2S1eq1wAsgpgALOAG9KcOKjKRYcDRB0r4ANVQaY0AExwALyIRAIA8sQAVj4wABRWcGQAXKGCcgCuIMSoUHEAlAA0cEip-KgCmdm5BXAAvvm29o7Q8K7uXrHQAMzBaRUAogBuCgA2GWaoceUCAJI6MLkqsXEA2t6+AcUzkTG+CXAAXmVhVTl5+fX5ALr5jXYOTm1uHnAbflAALH0zw2MTi2mYXmiygy326y6UG62zCuxWiQA7id0llzrUGrdGnUZPQACKoNA6AAmqAW8n0ak02nar28sAcPzh0QRTUgKmAMGAblSpgsAne0E+hSaOmgIDGvLM5gFUJhTQyQyl-MFUH8lAalFp8AA4qgcKgYFAkEzBPD9jY7ENclytCoURUAIJQKAKJBxemLMhFJrAEnAO0OgTO13umZnGp3DWNbUmSZQYBjU0Vc3xS1wJTEYBkmDKmWq4VNYnADAYDLLPOyzZfEV2NQ+DKjBRQSsF6Nal7wYyqSwhHYsi1NADm+uURtKcD1BvHtbgEtBidGytyi-bogAShkFqB0OvUBhRrFuTpKN2VDKwNg0LBsyoBCPp8aBJeINeuaoBNab3aBJzUCA7xfN9b2fCAOS5NxnyvG0QLIU8eyg18YI-B8xyfIDkLvL9bQ-P8AMQ4CPzFKAJVGAjMIEOCzwvaCbxQ0dDXQ2j3ywmCfzwwDmJAxVyLou8qIQjC+IEecVzGXiWIEYtS3LCohMkgTzwkkDRITcT5JAzNswWZSP0UmikOE1TF10u96w0Rtm1MyjcTgABlGAzADOB5gwXIyS0Sgyx0XxjzgKAyVJPJlHPIMHKcjQAB5CDQCAMBMHsAD5LnTEKZVQxikE-NjVFWAAGa5QPA48bLsNL7wY8dsu-XKCoEYjSNKucEIyqrsIDWrCp4uCyoQ4zxOkstlia8r+rIrScxGvr4xM8zLKgGy6iAA) | [Challenge](test/typescript/readme.md)
115
+
116
+ TypeBox includes a syntax engine that can transform TypeScript declarations into JSON Schema. The engine is a full syntactic frontend to Type.* and supports many advanced type-level constructs such as Conditional, Mapped, Indexed, Infer, Generics, Distributed types and more. This feature is implemented symmetrically at runtime and statically via TypeScript Template Literal types.
117
+
118
+ Syntax highlighting is available via the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=sinclairzx81.typebox-script)
115
119
 
116
- TypeBox includes a runtime scripting engine that can transform TypeScript definitions into JSON Schema. The engine is implemented symmetrically at runtime and inside TypeScript's type system. It supports many programmable type-level constructs such as Conditional, Mapped, Indexed, Generic, Distributive Conditional, and more. The engine is designed for TypeScript 7 but is supported in TypeScript 5 and above.
117
120
 
118
121
  ### Example
119
122
 
120
- Syntax highlighting is available via the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=sinclairzx81.typebox-script)
123
+ The following uses Script to parse TypeScript declarations into JSON Schema.
121
124
 
122
125
  ```typescript
123
126
  // Module
124
127
  const Math = Type.Script(`
125
128
  type Vector2 = { x: number, y: number }
126
- type Vector3 = { x: number, y: number, z: number }
127
- type Vector4 = { x: number, y: number, z: number, w: number }
129
+ type Vector3 = Evaluate<Vector2 & { z: number }>
130
+ type Vector4 = Evaluate<Vector3 & { w: number }>
128
131
  `)
129
132
 
130
133
  // Dependent Module
131
- const { Mesh } = Type.Script(Math, `
134
+ const { Mesh } = Type.Script({ ...Math }, `
132
135
  type Vertex = {
133
136
  position: Vector4,
134
137
  normal: Vector3,
@@ -295,29 +298,29 @@ The following table shows compile performance for various JSON Schema structures
295
298
  ┌──────────────────────┬─────────────┬─────────────┐
296
299
  │ Compile │ TB1X │ AJV8 │
297
300
  ├──────────────────────┼─────────────┼─────────────┤
298
- │ Boolean │ 39.7K ops/s │ 6.8K ops/s │
299
- │ Number │ 86.2K ops/s │ 7.5K ops/s │
300
- │ String │ 82.6K ops/s │ 8.2K ops/s │
301
- │ Null │ 62K ops/s │ 7.3K ops/s │
302
- │ Literal_String │ 72.1K ops/s │ 5.7K ops/s │
303
- │ Literal_Number │ 72.7K ops/s │ 6.9K ops/s │
304
- │ Literal_Boolean │ 80.9K ops/s │ 7K ops/s │
305
- │ Pattern │ 38.7K ops/s │ 5.7K ops/s │
306
- │ Object_Open │ 16.3K ops/s │ 1.3K ops/s │
307
- │ Object_Close │ 15.7K ops/s │ 952 ops/s │
308
- │ Object_Vector3 │ 40.2K ops/s │ 3.2K ops/s │
309
- │ Object_Basis3 │ 16.1K ops/s │ 834 ops/s │
310
- │ Intersect_And │ 45.7K ops/s │ 3.5K ops/s │
311
- │ Intersect_Structural │ 21K ops/s │ 1.6K ops/s │
312
- │ Union_Or │ 45.1K ops/s │ 3.4K ops/s │
313
- │ Union_Structural │ 27.6K ops/s │ 2K ops/s │
314
- │ Tuple_Values │ 14.7K ops/s │ 2K ops/s │
315
- │ Tuple_Objects │ 3.7K ops/s │ 380 ops/s │
316
- │ Array_Numbers_4 │ 73.6K ops/s │ 4.3K ops/s │
317
- │ Array_Numbers_8 │ 50.9K ops/s │ 3.8K ops/s │
318
- │ Array_Numbers_16 │ 85K ops/s │ 3.9K ops/s │
319
- │ Array_Objects_Open │ 18.9K ops/s │ 789 ops/s │
320
- │ Array_Objects_Close │ 17.9K ops/s │ 909 ops/s │
301
+ │ Boolean │ 29.2K ops/s │ 7.1K ops/s │
302
+ │ Number │ 34.5K ops/s │ 7.6K ops/s │
303
+ │ String │ 48.9K ops/s │ 8.7K ops/s │
304
+ │ Null │ 39.6K ops/s │ 7.6K ops/s │
305
+ │ Literal_String │ 46.8K ops/s │ 6.8K ops/s │
306
+ │ Literal_Number │ 48.3K ops/s │ 7.4K ops/s │
307
+ │ Literal_Boolean │ 48.8K ops/s │ 7.3K ops/s │
308
+ │ Pattern │ 32.5K ops/s │ 6.1K ops/s │
309
+ │ Object_Open │ 6.6K ops/s │ 1.4K ops/s │
310
+ │ Object_Close │ 7.6K ops/s │ 1K ops/s │
311
+ │ Object_Vector3 │ 20.8K ops/s │ 2.8K ops/s │
312
+ │ Object_Basis3 │ 7.5K ops/s │ 1K ops/s │
313
+ │ Intersect_And │ 23K ops/s │ 3.9K ops/s │
314
+ │ Intersect_Structural │ 8.7K ops/s │ 1.2K ops/s │
315
+ │ Union_Or │ 17.9K ops/s │ 3.4K ops/s │
316
+ │ Union_Structural │ 11.3K ops/s │ 2.1K ops/s │
317
+ │ Tuple_Values │ 9.6K ops/s │ 2.1K ops/s │
318
+ │ Tuple_Objects │ 2.1K ops/s │ 350 ops/s │
319
+ │ Array_Numbers_4 │ 33.6K ops/s │ 4.2K ops/s │
320
+ │ Array_Numbers_8 │ 39K ops/s │ 3.7K ops/s │
321
+ │ Array_Numbers_16 │ 29.6K ops/s │ 3.8K ops/s │
322
+ │ Array_Objects_Open │ 7.7K ops/s │ 833 ops/s │
323
+ │ Array_Objects_Close │ 7.6K ops/s │ 860 ops/s │
321
324
  └──────────────────────┴─────────────┴─────────────┘
322
325
  ```
323
326
 
@@ -5,7 +5,6 @@
5
5
  },
6
6
  "name": "Lobster",
7
7
  "description": "Lobster workflow tool plugin for typed pipelines and resumable approvals.",
8
- "catalog": { "featured": true, "order": 50 },
9
8
  "contracts": {
10
9
  "tools": ["lobster"]
11
10
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/lobster",
3
- "version": "2026.7.2-beta.7",
3
+ "version": "2026.7.33",
4
4
  "description": "Lobster workflow tool plugin for typed pipelines and resumable approvals.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,7 +9,7 @@
9
9
  "type": "module",
10
10
  "dependencies": {
11
11
  "@clawdbot/lobster": "2026.6.11",
12
- "typebox": "1.3.6"
12
+ "typebox": "1.3.3"
13
13
  },
14
14
  "openclaw": {
15
15
  "extensions": [
@@ -21,10 +21,10 @@
21
21
  "minHostVersion": ">=2026.4.25"
22
22
  },
23
23
  "compat": {
24
- "pluginApi": ">=2026.7.2-beta.7"
24
+ "pluginApi": ">=2026.7.33"
25
25
  },
26
26
  "build": {
27
- "openclawVersion": "2026.7.2-beta.7"
27
+ "openclawVersion": "2026.7.33"
28
28
  },
29
29
  "release": {
30
30
  "publishToClawHub": true,
@@ -41,7 +41,7 @@
41
41
  "SKILL.md"
42
42
  ],
43
43
  "peerDependencies": {
44
- "openclaw": ">=2026.7.2-beta.7"
44
+ "openclaw": ">=2026.7.33"
45
45
  },
46
46
  "peerDependenciesMeta": {
47
47
  "openclaw": {
@@ -1,54 +0,0 @@
1
- import { Bench } from 'tinybench'
2
- import { fastUri } from '../index.js'
3
-
4
- const { serialize, normalize, parse } = fastUri
5
-
6
- const asciiPath = '/users/profile/settings/account'
7
- const asciiPathWithSpaces = '/users/john doe/profile page'
8
- const cjkPath = '/ユーザー/プロフィール/設定'
9
- const mixedPath = '/users/日本/profile-📱-emoji/設定'
10
- const emojiPath = '/🚀/🌍/🎉/end'
11
- const longAsciiPath = '/' + 'a/b/c/d/e/f/g/h/'.repeat(20)
12
- const longUtf8Path = '/' + '日本/中文/한국/'.repeat(20)
13
-
14
- const bench = new Bench({ name: 'encoder bench', time: 1000 })
15
-
16
- bench.add('serialize ascii path', () => {
17
- serialize({ scheme: 'http', host: 'example.com', path: asciiPath })
18
- })
19
-
20
- bench.add('serialize ascii path with spaces', () => {
21
- serialize({ scheme: 'http', host: 'example.com', path: asciiPathWithSpaces })
22
- })
23
-
24
- bench.add('serialize cjk path', () => {
25
- serialize({ scheme: 'http', host: 'example.com', path: cjkPath })
26
- })
27
-
28
- bench.add('serialize mixed path', () => {
29
- serialize({ scheme: 'http', host: 'example.com', path: mixedPath })
30
- })
31
-
32
- bench.add('serialize emoji path', () => {
33
- serialize({ scheme: 'http', host: 'example.com', path: emojiPath })
34
- })
35
-
36
- bench.add('serialize long ascii path', () => {
37
- serialize({ scheme: 'http', host: 'example.com', path: longAsciiPath })
38
- })
39
-
40
- bench.add('serialize long utf8 path', () => {
41
- serialize({ scheme: 'http', host: 'example.com', path: longUtf8Path })
42
- })
43
-
44
- bench.add('normalize utf8 uri', () => {
45
- normalize('http://example.com/日本/profile')
46
- })
47
-
48
- bench.add('parse utf8 uri', () => {
49
- parse('http://example.com/日本/profile')
50
- })
51
-
52
- await bench.run()
53
- console.log(bench.name)
54
- console.table(bench.table())
@@ -1,16 +0,0 @@
1
- 'use strict'
2
-
3
- const test = require('tape')
4
- const fastURI = require('..')
5
-
6
- test('scheme is normalized to lowercase (RFC 3986 §6.2.2.1)', (t) => {
7
- // parse lowercases the scheme, consistent with how it already lowercases the host
8
- t.equal(fastURI.parse('HTTP://EXAMPLE.com/Path').scheme, 'http', 'parse lowercases an uppercase scheme')
9
- t.equal(fastURI.parse('HtTpS://example.com').scheme, 'https', 'parse lowercases a mixed-case scheme')
10
-
11
- // normalize emits a lowercase scheme (matches the already-lowercased host)
12
- t.equal(fastURI.normalize('HTTP://EXAMPLE.com/p'), 'http://example.com/p', 'normalize lowercases the scheme')
13
- t.equal(fastURI.normalize('HtTp://Example.COM/'), 'http://example.com/', 'normalize lowercases a mixed-case scheme')
14
-
15
- t.end()
16
- })
@@ -1,15 +0,0 @@
1
- import uri, {
2
- type URIComponent,
3
- } from '..'
4
- import { expect } from 'tstyche'
5
-
6
- const parsed = uri.parse('foo')
7
- expect(parsed).type.toBe<URIComponent>()
8
-
9
- const parsed2 = uri.parse('foo', {
10
- domainHost: true,
11
- scheme: 'https',
12
- unicodeSupport: false
13
- })
14
-
15
- expect(parsed2).type.toBe<URIComponent>()