@openclaw/voice-call 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.
- package/README.md +3 -2
- package/dist/.setup/config-BBpso-fA.mjs +674 -0
- package/dist/.setup/config-compat-CYRE-SSo.mjs +156 -0
- package/dist/{guarded-json-api-DS9sZa3C.js → .setup/guarded-json-api-BukKSVNW.mjs} +56 -42
- package/dist/{mock-YsvBTX-7.js → .setup/mock-DY4yTqR2.mjs} +1 -1
- package/dist/{plivo-vZ--Wqxv.js → .setup/plivo-DFHh72MH.mjs} +3 -2
- package/dist/{realtime-handler--i_OERv6.js → .setup/realtime-handler-DWLxvZuO.mjs} +198 -130
- package/dist/{response-generator-D-7ApVfT.js → .setup/response-generator-DoC6lfcm.mjs} +6 -21
- package/dist/{runtime-entry-D0UJiLfi.js → .setup/runtime-entry-CH-CV0Sf.mjs} +384 -868
- package/dist/{store-path-nYL-yM0S.js → .setup/store-1UfyY3HS.mjs} +6 -13
- package/dist/{telnyx-Dx6cfLvV.js → .setup/telnyx-Bb8X-nin.mjs} +1 -1
- package/dist/{twilio-D_D8KysU.js → .setup/twilio-Bsbf3O9A.mjs} +11 -15
- package/dist/{webhook-replay-aaP79dI8.js → .setup/webhook-replay-g3cDA5wr.mjs} +1 -1
- package/dist/cli-metadata.js +1 -5
- package/dist/doctor-contract-api.js +14 -36
- package/dist/index.js +46 -48
- package/dist/runtime-entry.js +1 -1
- package/dist/setup-api.js +2 -86
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1172 -0
- package/node_modules/commander/index.js +21 -0
- package/node_modules/commander/lib/argument.js +147 -0
- package/node_modules/commander/lib/command.js +2790 -0
- package/node_modules/commander/lib/error.js +36 -0
- package/node_modules/commander/lib/help.js +731 -0
- package/node_modules/commander/lib/option.js +377 -0
- package/node_modules/commander/lib/suggestSimilar.js +99 -0
- package/node_modules/commander/package-support.json +19 -0
- package/node_modules/commander/package.json +64 -0
- package/node_modules/commander/typings/index.d.ts +1113 -0
- package/node_modules/typebox/build/compile/validator.d.mts +4 -1
- package/node_modules/typebox/build/guard/guard.d.mts +1 -1
- package/node_modules/typebox/build/guard/guard.mjs +2 -5
- package/node_modules/typebox/build/guard/string.mjs +4 -16
- package/node_modules/typebox/build/schema/engine/_functions.mjs +15 -34
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
- package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -8
- package/node_modules/typebox/build/typebox.d.mts +1 -1
- package/node_modules/typebox/build/typebox.mjs +1 -1
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +32 -29
- package/node_modules/ws/lib/permessage-deflate.js +3 -1
- package/node_modules/ws/package.json +1 -1
- package/openclaw.plugin.json +15 -2
- package/package.json +8 -6
- package/dist/cli-output-mode.js +0 -27
- package/dist/twilio-region-4fkgz3UG.js +0 -25
- /package/dist/{realtime-transcription.runtime-CbJAs5t_.js → .setup/realtime-transcription.runtime-CbJAs5t_.mjs} +0 -0
- /package/dist/{realtime-voice.runtime-vtdCOWg-.js → .setup/realtime-voice.runtime-vtdCOWg-.mjs} +0 -0
|
@@ -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
|
-
/**
|
|
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
|
-
/**
|
|
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 (
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
|
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,
|
|
10
|
+
function CreateCallExpression(context, _schema, hash, value) {
|
|
28
11
|
return context.UseUnevaluated()
|
|
29
|
-
? E.Call(`check_${
|
|
30
|
-
: E.Call(`check_${
|
|
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,
|
|
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_${
|
|
39
|
-
: E.ConstDeclaration(`check_${
|
|
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
|
-
|
|
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 [...
|
|
34
|
+
return [...functions.values()];
|
|
54
35
|
}
|
|
55
36
|
// ------------------------------------------------------------------
|
|
56
37
|
// CreateFunction
|
|
57
38
|
// ------------------------------------------------------------------
|
|
58
39
|
export function CreateFunction(stack, context, schema, value) {
|
|
59
|
-
const
|
|
60
|
-
const call = CreateCallExpression(context, schema,
|
|
61
|
-
if (
|
|
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
|
-
|
|
64
|
-
|
|
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,
|
|
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
|
|
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';
|
|
@@ -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/
|
|
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
|
-
|
|
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 =
|
|
127
|
-
type Vector4 =
|
|
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 │
|
|
299
|
-
│ Number │
|
|
300
|
-
│ String │
|
|
301
|
-
│ Null │
|
|
302
|
-
│ Literal_String │
|
|
303
|
-
│ Literal_Number │
|
|
304
|
-
│ Literal_Boolean │
|
|
305
|
-
│ Pattern │
|
|
306
|
-
│ Object_Open │
|
|
307
|
-
│ Object_Close │
|
|
308
|
-
│ Object_Vector3 │
|
|
309
|
-
│ Object_Basis3 │
|
|
310
|
-
│ Intersect_And │
|
|
311
|
-
│ Intersect_Structural │
|
|
312
|
-
│ Union_Or │
|
|
313
|
-
│ Union_Structural │
|
|
314
|
-
│ Tuple_Values │
|
|
315
|
-
│ Tuple_Objects │
|
|
316
|
-
│ Array_Numbers_4 │
|
|
317
|
-
│ Array_Numbers_8 │
|
|
318
|
-
│ Array_Numbers_16 │
|
|
319
|
-
│ Array_Objects_Open │
|
|
320
|
-
│ Array_Objects_Close │
|
|
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
|
|
|
@@ -167,7 +167,9 @@ class PerMessageDeflate {
|
|
|
167
167
|
(typeof opts.serverMaxWindowBits === 'number' &&
|
|
168
168
|
opts.serverMaxWindowBits > params.server_max_window_bits))) ||
|
|
169
169
|
(typeof opts.clientMaxWindowBits === 'number' &&
|
|
170
|
-
|
|
170
|
+
(typeof params.client_max_window_bits === 'number'
|
|
171
|
+
? opts.clientMaxWindowBits > params.client_max_window_bits
|
|
172
|
+
: !params.client_max_window_bits))
|
|
171
173
|
) {
|
|
172
174
|
return false;
|
|
173
175
|
}
|
package/openclaw.plugin.json
CHANGED
|
@@ -11,6 +11,20 @@
|
|
|
11
11
|
"contracts": {
|
|
12
12
|
"tools": ["voice_call"]
|
|
13
13
|
},
|
|
14
|
+
"channelEnvVars": {
|
|
15
|
+
"voice-call": [
|
|
16
|
+
"TELNYX_API_KEY",
|
|
17
|
+
"TELNYX_CONNECTION_ID",
|
|
18
|
+
"TELNYX_PUBLIC_KEY",
|
|
19
|
+
"TWILIO_ACCOUNT_SID",
|
|
20
|
+
"TWILIO_AUTH_TOKEN",
|
|
21
|
+
"TWILIO_FROM_NUMBER",
|
|
22
|
+
"PLIVO_AUTH_ID",
|
|
23
|
+
"PLIVO_AUTH_TOKEN",
|
|
24
|
+
"NGROK_AUTHTOKEN",
|
|
25
|
+
"NGROK_DOMAIN"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
14
28
|
"uiHints": {
|
|
15
29
|
"provider": {
|
|
16
30
|
"label": "Provider",
|
|
@@ -104,7 +118,6 @@
|
|
|
104
118
|
},
|
|
105
119
|
"streaming.enabled": {
|
|
106
120
|
"label": "Enable Streaming",
|
|
107
|
-
"help": "Classic streaming transcription currently requires the Twilio call provider.",
|
|
108
121
|
"advanced": true
|
|
109
122
|
},
|
|
110
123
|
"streaming.provider": {
|
|
@@ -205,7 +218,7 @@
|
|
|
205
218
|
},
|
|
206
219
|
"tts.provider": {
|
|
207
220
|
"label": "TTS Provider Override",
|
|
208
|
-
"help": "Deep-merges with
|
|
221
|
+
"help": "Deep-merges with messages.tts (Microsoft is ignored for calls).",
|
|
209
222
|
"advanced": true
|
|
210
223
|
},
|
|
211
224
|
"tts.providers": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/voice-call",
|
|
3
|
-
"version": "2026.7.
|
|
3
|
+
"version": "2026.7.33",
|
|
4
4
|
"description": "OpenClaw voice-call plugin for Twilio, Telnyx, and Plivo phone calls.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"
|
|
12
|
-
"
|
|
11
|
+
"commander": "15.0.0",
|
|
12
|
+
"typebox": "1.3.3",
|
|
13
|
+
"ws": "8.21.3",
|
|
13
14
|
"zod": "4.4.3"
|
|
14
15
|
},
|
|
15
16
|
"peerDependencies": {
|
|
16
|
-
"openclaw": ">=2026.7.
|
|
17
|
+
"openclaw": ">=2026.7.33"
|
|
17
18
|
},
|
|
18
19
|
"peerDependenciesMeta": {
|
|
19
20
|
"openclaw": {
|
|
@@ -30,10 +31,10 @@
|
|
|
30
31
|
"minHostVersion": ">=2026.4.10"
|
|
31
32
|
},
|
|
32
33
|
"compat": {
|
|
33
|
-
"pluginApi": ">=2026.7.
|
|
34
|
+
"pluginApi": ">=2026.7.33"
|
|
34
35
|
},
|
|
35
36
|
"build": {
|
|
36
|
-
"openclawVersion": "2026.7.
|
|
37
|
+
"openclawVersion": "2026.7.33"
|
|
37
38
|
},
|
|
38
39
|
"release": {
|
|
39
40
|
"publishToClawHub": true,
|
|
@@ -50,6 +51,7 @@
|
|
|
50
51
|
"skills/**"
|
|
51
52
|
],
|
|
52
53
|
"bundledDependencies": [
|
|
54
|
+
"commander",
|
|
53
55
|
"typebox",
|
|
54
56
|
"ws",
|
|
55
57
|
"zod"
|
package/dist/cli-output-mode.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { getRootOptionAwareCommandPath } from "openclaw/plugin-sdk/cli-argv";
|
|
2
|
-
//#region extensions/voice-call/cli-output-mode.ts
|
|
3
|
-
const MACHINE_OUTPUT_COMMANDS = /* @__PURE__ */ new Set([
|
|
4
|
-
"call",
|
|
5
|
-
"continue",
|
|
6
|
-
"dtmf",
|
|
7
|
-
"end",
|
|
8
|
-
"expose",
|
|
9
|
-
"latency",
|
|
10
|
-
"speak",
|
|
11
|
-
"start",
|
|
12
|
-
"status",
|
|
13
|
-
"tail"
|
|
14
|
-
]);
|
|
15
|
-
/** Voice-call result actions emit JSON, while tail reserves stdout for JSONL. */
|
|
16
|
-
function isVoiceCallMachineOutput(params) {
|
|
17
|
-
const [, command] = getRootOptionAwareCommandPath(params.argv, 2);
|
|
18
|
-
return MACHINE_OUTPUT_COMMANDS.has(command ?? "");
|
|
19
|
-
}
|
|
20
|
-
const VOICE_CALL_CLI_DESCRIPTOR = {
|
|
21
|
-
name: "voicecall",
|
|
22
|
-
description: "Voice call utilities",
|
|
23
|
-
hasSubcommands: true,
|
|
24
|
-
machineOutput: isVoiceCallMachineOutput
|
|
25
|
-
};
|
|
26
|
-
//#endregion
|
|
27
|
-
export { VOICE_CALL_CLI_DESCRIPTOR };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
//#region extensions/voice-call/src/providers/twilio-region.ts
|
|
2
|
-
const TWILIO_REGIONS = [
|
|
3
|
-
"us1",
|
|
4
|
-
"ie1",
|
|
5
|
-
"au1"
|
|
6
|
-
];
|
|
7
|
-
const TWILIO_API_HOSTNAME_BY_REGION = {
|
|
8
|
-
us1: "api.twilio.com",
|
|
9
|
-
ie1: "api.dublin.ie1.twilio.com",
|
|
10
|
-
au1: "api.sydney.au1.twilio.com"
|
|
11
|
-
};
|
|
12
|
-
const TWILIO_API_HOSTNAMES = new Set(Object.values(TWILIO_API_HOSTNAME_BY_REGION));
|
|
13
|
-
function resolveTwilioApiHostname(region) {
|
|
14
|
-
return TWILIO_API_HOSTNAME_BY_REGION[region ?? "us1"];
|
|
15
|
-
}
|
|
16
|
-
function resolveTwilioApiBaseUrl(params) {
|
|
17
|
-
return `https://${resolveTwilioApiHostname(params.region)}/2010-04-01/Accounts/${params.accountSid}`;
|
|
18
|
-
}
|
|
19
|
-
function requireSupportedTwilioApiHostname(baseUrl) {
|
|
20
|
-
const hostname = new URL(baseUrl).hostname;
|
|
21
|
-
if (!TWILIO_API_HOSTNAMES.has(hostname)) throw new Error(`Unsupported Twilio API hostname: ${hostname}`);
|
|
22
|
-
return hostname;
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
|
-
export { requireSupportedTwilioApiHostname as n, resolveTwilioApiBaseUrl as r, TWILIO_REGIONS as t };
|
|
File without changes
|
/package/dist/{realtime-voice.runtime-vtdCOWg-.js → .setup/realtime-voice.runtime-vtdCOWg-.mjs}
RENAMED
|
File without changes
|