@openclaw/discord 2026.9.6 → 2026.9.7

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 (150) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{account-inspect-BwQj24ht.mjs → account-inspect-De8hOUxG.mjs} +1 -1
  3. package/dist/.setup/{accounts-CwJQoLjM.mjs → accounts-ChaMcixG.mjs} +1 -4
  4. package/dist/.setup/{activities-api-COU4-0nR.mjs → activities-api-tvbsU2e3.mjs} +38 -66
  5. package/dist/.setup/{api-CBK9zcq5.mjs → api-DVbJwZVt.mjs} +10 -2
  6. package/dist/.setup/{approval-handler.runtime-CbBktBb4.mjs → approval-handler.runtime-DxCK2Rux.mjs} +49 -125
  7. package/dist/.setup/{approval-message-updates-jf9zMaIC.mjs → approval-message-updates-BKFqavHZ.mjs} +2 -2
  8. package/dist/.setup/{audit-vKbh-LFR.mjs → audit-CLg9I71N.mjs} +5 -5
  9. package/dist/.setup/{channel-Dv4e3Jpc.mjs → channel-DxlUVU9t.mjs} +121 -227
  10. package/dist/.setup/{channel-type-DKnjV1XW.mjs → channel-type-DRCrEMss.mjs} +22 -22
  11. package/dist/.setup/{channel.setup-0NX6FFwi.mjs → channel.setup-CRo1GjV7.mjs} +6 -9
  12. package/dist/.setup/{components-yBEb75bB.mjs → components-Cq1PvIpN.mjs} +41 -69
  13. package/dist/.setup/{config-schema-CiZz-mtA.mjs → config-schema-oxELUSDx.mjs} +19 -44
  14. package/dist/.setup/{conversation-binding-route-B7qImK_b.mjs → conversation-binding-route-Caz_XuFH.mjs} +10 -5
  15. package/dist/.setup/{directory-config-BytTftz-.mjs → directory-config-esqNn0Eo.mjs} +6 -9
  16. package/dist/.setup/{directory-live--EGTH0DC.mjs → directory-live-DtKRHuGV.mjs} +6 -12
  17. package/dist/.setup/{discord-BXpHW-cu.mjs → discord-0xJYfdDD.mjs} +82 -386
  18. package/dist/.setup/{doctor-D1R-uFIu.mjs → doctor-BCl1H5tl.mjs} +21 -36
  19. package/dist/.setup/{doctor-contract-Co5vRCZ6.mjs → doctor-contract-CvvgwrrG.mjs} +41 -50
  20. package/dist/.setup/{channel-actions.runtime-leZuw01r.mjs → handle-action-CUvQWnE7.mjs} +67 -104
  21. package/dist/.setup/{handle-action.guild-admin-DcFa8NwA.mjs → handle-action.guild-admin-Df-8gVle.mjs} +62 -120
  22. package/dist/.setup/{live-policy-config-eKQ-PLdy.mjs → live-policy-config-8Pv20CHc.mjs} +2 -3
  23. package/dist/.setup/{message-handler-X6ejmbtY.mjs → message-handler-B-Jk4oDk.mjs} +18 -94
  24. package/dist/.setup/{message-handler.preflight-pluralkit-8Xji34AF.mjs → message-handler.preflight-pluralkit-CWLUBVcx.mjs} +8 -10
  25. package/dist/.setup/{message-handler.preflight-DE_POxFc.mjs → message-handler.preflight-v-__NSDq.mjs} +69 -180
  26. package/dist/.setup/{message-handler.process-CCmIVnxy.mjs → message-handler.process-BNFFuChn.mjs} +65 -86
  27. package/dist/.setup/{outbound-adapter-ClIgmu4F.mjs → outbound-adapter-BobT-kse.mjs} +105 -19
  28. package/dist/.setup/{outbound-session-route-VulUE0yV.mjs → outbound-session-route-zVGxxceg.mjs} +140 -108
  29. package/dist/.setup/{pluralkit-CdAt1G0P.mjs → pluralkit-a6_NLfH9.mjs} +1 -1
  30. package/dist/.setup/{presence-cache-dYSHPWMx.mjs → presence-cache-Di3H3DIU.mjs} +0 -4
  31. package/dist/.setup/{probe-CupW4we4.mjs → probe-LYrIHlBF.mjs} +13 -4
  32. package/dist/.setup/{provider-iOf73HW-.mjs → provider-B_G5hASF.mjs} +721 -1416
  33. package/dist/.setup/provider-session.runtime-BYlTBFD2.mjs +6 -0
  34. package/dist/.setup/provider.runtime-CUE3UxER.mjs +2 -0
  35. package/dist/.setup/{realtime-session.runtime-Dz8uVutq.mjs → realtime-session.runtime-oUd9DOcz.mjs} +41 -55
  36. package/dist/.setup/{receive-recovery-DHst8WRx.mjs → receive-recovery-CHPOsnLc.mjs} +1 -4
  37. package/dist/.setup/{resolve-allowlist-common-CwMBzbx9.mjs → resolve-allowlist-common-DPdRggu5.mjs} +4 -7
  38. package/dist/.setup/{resolve-channels-BbvsLQOZ.mjs → resolve-channels-BFPNRmVv.mjs} +21 -40
  39. package/dist/.setup/{resolve-users-ByFlR7LQ.mjs → resolve-users-0-aBuCy3.mjs} +4 -4
  40. package/dist/.setup/{retry-BEYkDy0P.mjs → retry-pz_cSha2.mjs} +3 -3
  41. package/dist/.setup/rolldown-runtime-B4FMCO8f.mjs +28 -0
  42. package/dist/.setup/{runtime-B8lJfyrA.mjs → runtime-FN000lxA.mjs} +60 -162
  43. package/dist/.setup/runtime-doctor-migrations-CshUGl36.mjs +159 -0
  44. package/dist/.setup/{runtime-DisDbixd.mjs → runtime-sUksZ--Q.mjs} +2 -5
  45. package/dist/.setup/{secret-config-contract-DFu9hfU8.mjs → secret-config-contract-uOE2J7yM.mjs} +15 -85
  46. package/dist/.setup/{security-audit-s5w50-Ly.mjs → security-audit-Cdaegq7C.mjs} +3 -1
  47. package/dist/.setup/{send-CIBzvXjS.mjs → send-CrfEI6Bs.mjs} +53 -108
  48. package/dist/.setup/{send.components-ChY21qr-.mjs → send.components-DxQAMfES.mjs} +62 -107
  49. package/dist/.setup/{send.outbound-QTyuFupn.mjs → send.outbound-BISKnb-a.mjs} +66 -140
  50. package/dist/.setup/{send.shared-VNvWfX2T.mjs → send.shared-DGFkbkQR.mjs} +10 -25
  51. package/dist/.setup/{sender-identity-0Ymgvmaj.mjs → sender-identity-B9X5Vb9R.mjs} +2 -3
  52. package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +3 -0
  53. package/dist/.setup/{shared-DHPDaMSx.mjs → shared-B3wZ4hN-.mjs} +25 -32
  54. package/dist/.setup/{subagent-hooks-CjW7r8Pe.mjs → subagent-hooks-nlUE9ow7.mjs} +5 -6
  55. package/dist/.setup/system-events-CdeZnvPV.mjs +33 -0
  56. package/dist/.setup/{target-resolver-BXpy6VT8.mjs → target-resolver-BuLapkhy.mjs} +9 -12
  57. package/dist/.setup/targets-0KUcEIYx.mjs +3 -0
  58. package/dist/.setup/{thread-bindings-CEh2dhqP.mjs → thread-bindings-D7TfgjR_.mjs} +33 -35
  59. package/dist/.setup/{thread-bindings.manager-ve-i6oqt.mjs → thread-bindings.manager-DN-NissX.mjs} +325 -233
  60. package/dist/.setup/thread-bindings.session-updates-CshfKghV.mjs +359 -0
  61. package/dist/.setup/{thread-bindings.state-BThFQEga.mjs → thread-bindings.state-g6v9zAym.mjs} +21 -62
  62. package/dist/.setup/{transcripts-source-DVegW0WI.mjs → transcripts-source-p8EV179h.mjs} +76 -235
  63. package/dist/.setup/{typing-BKZL5fGj.mjs → typing-BiHCzBRu.mjs} +2 -1
  64. package/dist/.setup/{voice-runtime-elTtjEIG.mjs → voice-runtime-B46rcwrG.mjs} +140 -244
  65. package/dist/account-inspect-api.js +1 -1
  66. package/dist/action-runtime-api.js +1 -1
  67. package/dist/activities-api.js +1 -1
  68. package/dist/api.js +18 -18
  69. package/dist/channel-config-api.js +1 -1
  70. package/dist/channel-plugin-api.js +1 -1
  71. package/dist/directory-contract-api.js +1 -1
  72. package/dist/doctor-contract-api.js +4 -4
  73. package/dist/index.js +1 -1
  74. package/dist/runtime-api.js +20 -20
  75. package/dist/secret-contract-api.js +1 -1
  76. package/dist/security-audit-contract-api.js +1 -1
  77. package/dist/setup-entry.js +1 -1
  78. package/dist/setup-plugin-api.js +1 -1
  79. package/dist/src/voice/audio-worker.runtime.js +15 -24
  80. package/dist/subagent-hooks-api.js +3 -4
  81. package/dist/transcripts-source-api.js +1 -1
  82. package/node_modules/@types/node/README.md +2 -2
  83. package/node_modules/@types/node/child_process.d.ts +1 -1
  84. package/node_modules/@types/node/crypto.d.ts +20 -8
  85. package/node_modules/@types/node/ffi.d.ts +14 -0
  86. package/node_modules/@types/node/http2.d.ts +3 -2
  87. package/node_modules/@types/node/net.d.ts +16 -4
  88. package/node_modules/@types/node/package.json +2 -17
  89. package/node_modules/@types/node/process.d.ts +1 -0
  90. package/node_modules/@types/node/quic.d.ts +39 -1
  91. package/node_modules/@types/node/stream/iter.d.ts +9 -12
  92. package/node_modules/@types/node/test/reporters.d.ts +1 -0
  93. package/node_modules/@types/node/test.d.ts +72 -0
  94. package/node_modules/@types/node/tls.d.ts +14 -10
  95. package/node_modules/@types/node/vm.d.ts +2 -1
  96. package/node_modules/@types/node/worker_threads.d.ts +4 -1
  97. package/node_modules/typebox/build/compile/code.mjs +1 -2
  98. package/node_modules/typebox/build/compile/validator.mjs +5 -1
  99. package/node_modules/typebox/build/format/iri.mjs +16 -9
  100. package/node_modules/typebox/build/guard/emit.mjs +2 -2
  101. package/node_modules/typebox/build/guard/guard.d.mts +7 -5
  102. package/node_modules/typebox/build/guard/guard.mjs +14 -9
  103. package/node_modules/typebox/build/guard/index.mjs +6 -0
  104. package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
  105. package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
  106. package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  107. package/node_modules/typebox/build/schema/build.mjs +2 -3
  108. package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
  109. package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
  110. package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
  111. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
  112. package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
  113. package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
  114. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
  115. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
  116. package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
  117. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
  118. package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
  119. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
  120. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
  121. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
  122. package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
  123. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  124. package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
  125. package/node_modules/typebox/build/schema/parse.mjs +3 -0
  126. package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
  127. package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
  128. package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
  129. package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
  130. package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
  131. package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
  132. package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
  133. package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
  134. package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
  135. package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
  136. package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
  137. package/node_modules/typebox/package.json +1 -1
  138. package/node_modules/typebox/readme.md +3 -1
  139. package/openclaw.plugin.json +21 -1
  140. package/package.json +5 -5
  141. package/dist/.setup/agent-components.runtime-CEPrf2SY.mjs +0 -4
  142. package/dist/.setup/probe.runtime-DBQ_AGPe.mjs +0 -2
  143. package/dist/.setup/provider-session.runtime-DrGAYnZv.mjs +0 -6
  144. package/dist/.setup/provider.runtime-BmjW_pIw.mjs +0 -2
  145. package/dist/.setup/security-audit.runtime-DHtYenx9.mjs +0 -2
  146. package/dist/.setup/setup-plugin-api-Dvr41dyx.mjs +0 -3
  147. package/dist/.setup/system-events-B2YEEMbS.mjs +0 -34
  148. package/dist/.setup/targets-CvemhN3i.mjs +0 -3
  149. package/dist/.setup/thread-bindings.session-updates-DCQq1WZ5.mjs +0 -55
  150. /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
@@ -22,7 +22,7 @@ export declare function TryRestInferable<Type extends TSchema>(type: Type): TTry
22
22
  export type TTryInferable<Type extends TSchema, Result extends TInferable | undefined = (Type extends TInfer<infer Name extends string, infer Type extends TSchema> ? TInferable<Name, Type> : undefined)> = Result;
23
23
  export declare function TryInferable<Type extends TSchema>(type: Type): TTryInferable<Type>;
24
24
  type TryInferResults<Rest extends TSchema[], Right extends TSchema, Result extends TSchema[] = []> = (Rest extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TExtendsLeft<{}, Head, Right> extends Result.TExtendsTrueLike ? TryInferResults<Tail, Right, [...Result, Head]> : undefined : Result);
25
- declare function TryInferResults<Rest extends TSchema[], Right extends TSchema>(rest: [...Rest], right: Right, result?: TSchema[]): TryInferResults<Rest, Right>;
25
+ declare function TryInferResults<Rest extends TSchema[], Right extends TSchema>(rest: [...Rest], right: Right): TryInferResults<Rest, Right>;
26
26
  export type TInferTupleResult<Inferred extends TProperties, Name extends string, Left extends TSchema[], Right extends TSchema, Results extends TSchema[] | undefined = TryInferResults<Left, Right>> = (Results extends [...infer Results extends TSchema[]] ? Result.TExtendsTrue<Memory.TAssign<Inferred, {
27
27
  [_ in Name]: TTuple<Results>;
28
28
  }>> : Result.TExtendsFalse);
@@ -45,8 +45,21 @@ export function TryInferable(type) {
45
45
  return (IsInfer(type) ? Inferrable(type.name, type.extends) :
46
46
  undefined);
47
47
  }
48
- function TryInferResults(rest, right, result = []) {
49
- return Guard.ShiftLeft(rest, (head, tail) => Result.Match(ExtendsLeft({}, head, right), () => TryInferResults(tail, right, [...result, head]), () => undefined), () => result);
48
+ // function TryInferResults<Rest extends TSchema[], Right extends TSchema>(rest: [...Rest], right: Right, result: TSchema[] = []): TryInferResults<Rest, Right> {
49
+ // return Guard.ShiftLeft(rest, (head, tail) =>
50
+ // Result.Match(ExtendsLeft({}, head, right),
51
+ // () => TryInferResults(tail, right, [...result, head]), // Stack Overflow Here (Large Rest)
52
+ // () => undefined),
53
+ // () => result) as never
54
+ // }
55
+ function TryInferResults(rest, right) {
56
+ const result = [];
57
+ for (const head of rest) {
58
+ if (!Result.IsExtendsTrueLike(ExtendsLeft({}, head, right)))
59
+ return undefined;
60
+ result.push(head);
61
+ }
62
+ return result;
50
63
  }
51
64
  export function InferTupleResult(inferred, name, left, right) {
52
65
  const results = TryInferResults(left, right);
@@ -16,7 +16,8 @@ type TElementsLeft<Inferred extends TProperties, Reversed extends boolean, LeftR
16
16
  type TElementsRight<Inferred extends TProperties, Reversed extends boolean, LeftRest extends TSchema[], RightRest extends TSchema[]> = (RightRest extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TElementsLeft<Inferred, Reversed, LeftRest, Head, Tail> : LeftRest['length'] extends 0 ? Result.TExtendsTrue<Inferred> : Result.TExtendsFalse);
17
17
  type TElements<Inferred extends TProperties, Reversed extends boolean, LeftRest extends TSchema[], RightRest extends TSchema[]> = TElementsRight<Inferred, Reversed, LeftRest, RightRest>;
18
18
  type TExtendsTupleToTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema[], InstantiatedRight extends TSchema[] = TInstantiateElements<Inferred, TState<[], []>, Right>, Reversed extends boolean = TReversed<InstantiatedRight>> = TElements<Inferred, Reversed, TApplyReverse<Left, Reversed>, TApplyReverse<InstantiatedRight, Reversed>>;
19
- type TExtendsTupleToArray<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema, Inferrable extends TInferable | undefined = TTryInferable<Right>> = (Inferrable extends TInferable ? TInferUnionResult<Inferred, Inferrable['name'], Left, Inferrable['type']> : Left extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TExtendsLeft<Inferred, Head, Right> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? TExtendsTupleToArray<Inferred, Tail, Right> : Result.TExtendsFalse : Result.TExtendsTrue<Inferred>);
19
+ type TExtendsTupleToArrayReduce<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema> = (Left extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TExtendsLeft<Inferred, Head, Right> extends Result.TExtendsTrueLike<infer Inferred extends TProperties> ? TExtendsTupleToArrayReduce<Inferred, Tail, Right> : Result.TExtendsFalse : Result.TExtendsTrue<Inferred>);
20
+ type TExtendsTupleToArray<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema, Inferrable extends TInferable | undefined = TTryInferable<Right>> = (Inferrable extends TInferable ? TInferUnionResult<Inferred, Inferrable['name'], Left, Inferrable['type']> : TExtendsTupleToArrayReduce<Inferred, Left, Right>);
20
21
  export type TExtendsTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema, InstantiatedLeft extends TSchema[] = TInstantiateElements<Inferred, TState<[], []>, Left>> = (Right extends TTuple<infer Types extends TSchema[]> ? TExtendsTupleToTuple<Inferred, InstantiatedLeft, Types> : Right extends TArray<infer Type extends TSchema> ? TExtendsTupleToArray<Inferred, InstantiatedLeft, Type> : TExtendsRight<Inferred, TTuple<InstantiatedLeft>, Right>);
21
22
  export declare function ExtendsTuple<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema>(inferred: Inferred, left: Left, right: Right): TExtendsTuple<Inferred, Left, Right>;
22
23
  export {};
@@ -47,11 +47,31 @@ function ExtendsTupleToTuple(inferred, left, right) {
47
47
  const reversed = Reversed(instantiatedRight);
48
48
  return Elements(inferred, reversed, ApplyReverse(left, reversed), ApplyReverse(instantiatedRight, reversed));
49
49
  }
50
+ // function ExtendsTupleToArrayReduce<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema>
51
+ // (inferred: Inferred, left: [...Left], right: Right):
52
+ // TExtendsTupleToArrayReduce<Inferred, Left, Right> {
53
+ // return (
54
+ // Guard.ShiftLeft(left, (head, tail) =>
55
+ // Result.Match(ExtendsLeft(inferred, head, right), inferred =>
56
+ // ExtendsTupleToArrayReduce(inferred, tail, right), // Stack Overflow Here (Large Left)
57
+ // () => Result.ExtendsFalse()),
58
+ // () => Result.ExtendsTrue(inferred))
59
+ // ) as never
60
+ // }
61
+ function ExtendsTupleToArrayReduce(inferred, left, right) {
62
+ for (const head of left) {
63
+ const result = ExtendsLeft(inferred, head, right);
64
+ if (!Result.IsExtendsTrueLike(result))
65
+ return result;
66
+ inferred = result.inferred; // (review-assign-to-argument)
67
+ }
68
+ return Result.ExtendsTrue(inferred);
69
+ }
50
70
  function ExtendsTupleToArray(inferred, left, right) {
51
71
  const inferrable = TryInferable(right);
52
72
  return (IsInferable(inferrable)
53
73
  ? InferUnionResult(inferred, inferrable['name'], left, inferrable['type'])
54
- : Guard.ShiftLeft(left, (head, tail) => Result.Match(ExtendsLeft(inferred, head, right), inferred => ExtendsTupleToArray(inferred, tail, right), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred)));
74
+ : ExtendsTupleToArrayReduce(inferred, left, right));
55
75
  }
56
76
  export function ExtendsTuple(inferred, left, right) {
57
77
  const instantiatedLeft = InstantiateElements(inferred, State([], []), left);
@@ -1,6 +1,6 @@
1
1
  // deno-fmt-ignore-file
2
- import { Settings } from '../../system/system.mjs';
3
- import { Arguments } from '../../system/arguments/index.mjs';
2
+ import { EnableParseErrors, DisableParseErrors } from '../../system/settings/internal.mjs';
3
+ import { Arguments, Settings } from '../../system/index.mjs';
4
4
  import { AssertError } from '../assert/index.mjs';
5
5
  import { Check } from '../check/index.mjs';
6
6
  import { Errors } from '../errors/index.mjs';
@@ -18,8 +18,11 @@ export class ParseError extends AssertError {
18
18
  }
19
19
  }
20
20
  function Assert(context, type, value) {
21
+ EnableParseErrors();
22
+ const errors = Errors(context, type, value);
23
+ DisableParseErrors();
21
24
  if (!Check(context, type, value))
22
- throw new ParseError(value, Errors(context, type, value));
25
+ throw new ParseError(value, errors);
23
26
  return value;
24
27
  }
25
28
  // ------------------------------------------------------------------
@@ -43,5 +46,8 @@ export function Parse(...args) {
43
46
  return value;
44
47
  if (Settings.Get().correctiveParse)
45
48
  return Parser(context, type, value);
46
- throw new ParseError(value, Errors(context, type, value));
49
+ EnableParseErrors();
50
+ const errors = Errors(context, type, value);
51
+ DisableParseErrors();
52
+ throw new ParseError(value, errors);
47
53
  }
@@ -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.30",
4
+ "version": "1.3.34",
5
5
  "keywords": [
6
6
  "typescript",
7
7
  "jsonschema"
@@ -166,9 +166,11 @@ import Schema from 'typebox/schema'
166
166
 
167
167
  ### Compile
168
168
 
169
- The compiler accepts both TypeBox types and plain JSON Schema objects. The Compile function will return a new Validator instance which can be used to check and parse values. The example below compiles a Script definition into a validator.
169
+ The compiler accepts TypeBox types as well as plain JSON Schema objects, and returns a Validator instance which can be used to check values. The following compiles a Vector type.
170
170
 
171
171
  ```typescript
172
+ import Schema from 'typebox/schema'
173
+
172
174
  // Compile
173
175
 
174
176
  const Vector = Schema.Compile(Type.Script(`{
@@ -739,6 +739,9 @@
739
739
  "additionalProperties": false
740
740
  }
741
741
  },
742
+ "requireMentionInBotThreads": {
743
+ "type": "boolean"
744
+ },
742
745
  "slug": {
743
746
  "type": "string"
744
747
  },
@@ -881,6 +884,9 @@
881
884
  "systemPrompt": {
882
885
  "type": "string"
883
886
  },
887
+ "requireMentionInBotThreads": {
888
+ "type": "boolean"
889
+ },
884
890
  "ignoreOtherMentions": {
885
891
  "type": "boolean"
886
892
  },
@@ -2552,6 +2558,9 @@
2552
2558
  "additionalProperties": false
2553
2559
  }
2554
2560
  },
2561
+ "requireMentionInBotThreads": {
2562
+ "type": "boolean"
2563
+ },
2555
2564
  "slug": {
2556
2565
  "type": "string"
2557
2566
  },
@@ -2694,6 +2703,9 @@
2694
2703
  "systemPrompt": {
2695
2704
  "type": "string"
2696
2705
  },
2706
+ "requireMentionInBotThreads": {
2707
+ "type": "boolean"
2708
+ },
2697
2709
  "ignoreOtherMentions": {
2698
2710
  "type": "boolean"
2699
2711
  },
@@ -3793,6 +3805,14 @@
3793
3805
  "label": "Discord Guild Join Introduction",
3794
3806
  "help": "Post one brief, room-specific introduction when the bot joins an allowed Discord guild (default: true). Account settings override the channel-wide setting."
3795
3807
  },
3808
+ "guilds.*.requireMentionInBotThreads": {
3809
+ "label": "Require Mention in Bot-Created Threads",
3810
+ "help": "Override mention gating only in threads owned by this bot. False allows unmentioned follow-ups; true requires a mention even with autoThread enabled. Omitted preserves existing behavior. Sender and channel access rules still apply."
3811
+ },
3812
+ "guilds.*.channels.*.requireMentionInBotThreads": {
3813
+ "label": "Require Mention in Bot-Created Threads",
3814
+ "help": "Override the guild setting for this channel. Applies only when Discord identifies this bot as the thread owner; unknown or other owners keep ordinary mention rules. Unmentioned messages require Message Content Intent."
3815
+ },
3796
3816
  "proxy": {
3797
3817
  "label": "Discord Proxy URL",
3798
3818
  "help": "Proxy URL for Discord gateway + API requests (app-id lookup and allowlist resolution). Set per account via channels.discord.accounts.<id>.proxy."
@@ -4028,7 +4048,7 @@
4028
4048
  },
4029
4049
  "allowBots": {
4030
4050
  "label": "Discord Allow Bot Messages",
4031
- "help": "Allow bot-authored messages to trigger Discord replies (default: false). Set \"mentions\" to only accept bot messages that mention the bot."
4051
+ "help": "Allow bot-authored messages through normal Discord mention and access rules (default: true). Set false to disable bot-triggered turns, or \"mentions\" to require a bot mention. Accessible bot messages remain available as conversation context."
4032
4052
  },
4033
4053
  "botLoopProtection": {
4034
4054
  "label": "Discord Bot Loop Protection",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.9.6",
3
+ "version": "2026.9.7",
4
4
  "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,13 +13,13 @@
13
13
  "discord-api-types": "0.38.55",
14
14
  "libopus-wasm": "0.4.0",
15
15
  "mdast-util-from-markdown": "2.0.3",
16
- "typebox": "1.3.30",
16
+ "typebox": "1.3.34",
17
17
  "undici": "8.10.2",
18
18
  "ws": "8.21.3",
19
19
  "zod": "4.6.5"
20
20
  },
21
21
  "peerDependencies": {
22
- "openclaw": ">=2026.9.6"
22
+ "openclaw": ">=2026.9.7"
23
23
  },
24
24
  "peerDependenciesMeta": {
25
25
  "openclaw": {
@@ -95,14 +95,14 @@
95
95
  "allowInvalidConfigRecovery": true
96
96
  },
97
97
  "compat": {
98
- "pluginApi": ">=2026.9.6"
98
+ "pluginApi": ">=2026.9.7"
99
99
  },
100
100
  "build": {
101
101
  "bundledDist": false,
102
102
  "workerEntries": [
103
103
  "./src/voice/audio-worker.runtime.ts"
104
104
  ],
105
- "openclawVersion": "2026.9.6",
105
+ "openclawVersion": "2026.9.7",
106
106
  "staticAssets": [
107
107
  {
108
108
  "source": "./assets/embedded-app-sdk.mjs",
@@ -1,4 +0,0 @@
1
- import { buildPluginBindingResolvedText, parsePluginBindingApprovalCustomId, recordInboundSession, resolvePluginConversationBindingApproval } from "openclaw/plugin-sdk/conversation-runtime";
2
- import { dispatchPluginInteractiveHandler } from "openclaw/plugin-sdk/plugin-runtime";
3
- import { createReplyReferencePlanner, dispatchReplyWithBufferedBlockDispatcher, finalizeInboundContext, resolveChunkMode, resolveTextChunkLimit } from "openclaw/plugin-sdk/reply-runtime";
4
- export { buildPluginBindingResolvedText, createReplyReferencePlanner, dispatchPluginInteractiveHandler, dispatchReplyWithBufferedBlockDispatcher, finalizeInboundContext, parsePluginBindingApprovalCustomId, recordInboundSession, resolveChunkMode, resolvePluginConversationBindingApproval, resolveTextChunkLimit };
@@ -1,2 +0,0 @@
1
- import { a as probeDiscordApplicationId, i as probeDiscord, n as fetchDiscordApplicationSummary, o as resolveDiscordPrivilegedIntentsFromFlags, r as parseApplicationIdFromToken, t as fetchDiscordApplicationId } from "./probe-CupW4we4.mjs";
2
- export { fetchDiscordApplicationId, fetchDiscordApplicationSummary, parseApplicationIdFromToken, probeDiscord, probeDiscordApplicationId, resolveDiscordPrivilegedIntentsFromFlags };
@@ -1,6 +0,0 @@
1
- import { a as createNoopThreadBindingManager, n as createThreadBindingManagerAsync } from "./thread-bindings.manager-ve-i6oqt.mjs";
2
- import { a as reconcileAcpThreadBindingsOnStartup } from "./thread-bindings-CEh2dhqP.mjs";
3
- import { t as createDiscordMessageHandler } from "./message-handler-X6ejmbtY.mjs";
4
- import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
5
- import { getAcpSessionManager, isAcpRuntimeError } from "openclaw/plugin-sdk/acp-runtime";
6
- export { createDiscordMessageHandler, createNoopThreadBindingManager, createThreadBindingManagerAsync as createThreadBindingManager, getAcpSessionManager, isAcpRuntimeError, reconcileAcpThreadBindingsOnStartup, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled };
@@ -1,2 +0,0 @@
1
- import { t as monitorDiscordProvider } from "./provider-iOf73HW-.mjs";
2
- export { monitorDiscordProvider };
@@ -1,2 +0,0 @@
1
- import { t as collectDiscordSecurityAuditFindings } from "./security-audit-s5w50-Ly.mjs";
2
- export { collectDiscordSecurityAuditFindings };
@@ -1,3 +0,0 @@
1
- import { t as discordSetupPlugin } from "./channel.setup-0NX6FFwi.mjs";
2
- import "../setup-plugin-api.js";
3
- export { discordSetupPlugin };
@@ -1,34 +0,0 @@
1
- import { t as discord_exports } from "./discord-BXpHW-cu.mjs";
2
- import { x as formatDiscordUserTag } from "./channel-type-DKnjV1XW.mjs";
3
- //#region extensions/discord/src/monitor/system-events.ts
4
- function resolveDiscordSystemEvent(message, location) {
5
- switch (message.type) {
6
- case discord_exports.MessageType.ChannelPinnedMessage: return buildDiscordSystemEvent(message, location, "pinned a message");
7
- case discord_exports.MessageType.RecipientAdd: return buildDiscordSystemEvent(message, location, "added a recipient");
8
- case discord_exports.MessageType.RecipientRemove: return buildDiscordSystemEvent(message, location, "removed a recipient");
9
- case discord_exports.MessageType.UserJoin: return buildDiscordSystemEvent(message, location, "user joined");
10
- case discord_exports.MessageType.GuildBoost: return buildDiscordSystemEvent(message, location, "boosted the server");
11
- case discord_exports.MessageType.GuildBoostTier1: return buildDiscordSystemEvent(message, location, "boosted the server (Tier 1 reached)");
12
- case discord_exports.MessageType.GuildBoostTier2: return buildDiscordSystemEvent(message, location, "boosted the server (Tier 2 reached)");
13
- case discord_exports.MessageType.GuildBoostTier3: return buildDiscordSystemEvent(message, location, "boosted the server (Tier 3 reached)");
14
- case discord_exports.MessageType.ThreadCreated: return buildDiscordSystemEvent(message, location, "created a thread");
15
- case discord_exports.MessageType.AutoModerationAction: return buildDiscordSystemEvent(message, location, "auto moderation action");
16
- case discord_exports.MessageType.GuildIncidentAlertModeEnabled: return buildDiscordSystemEvent(message, location, "raid protection enabled");
17
- case discord_exports.MessageType.GuildIncidentAlertModeDisabled: return buildDiscordSystemEvent(message, location, "raid protection disabled");
18
- case discord_exports.MessageType.GuildIncidentReportRaid: return buildDiscordSystemEvent(message, location, "raid reported");
19
- case discord_exports.MessageType.GuildIncidentReportFalseAlarm: return buildDiscordSystemEvent(message, location, "raid report marked false alarm");
20
- case discord_exports.MessageType.StageStart: return buildDiscordSystemEvent(message, location, "stage started");
21
- case discord_exports.MessageType.StageEnd: return buildDiscordSystemEvent(message, location, "stage ended");
22
- case discord_exports.MessageType.StageSpeaker: return buildDiscordSystemEvent(message, location, "stage speaker updated");
23
- case discord_exports.MessageType.StageTopic: return buildDiscordSystemEvent(message, location, "stage topic updated");
24
- case discord_exports.MessageType.PollResult: return buildDiscordSystemEvent(message, location, "poll results posted");
25
- case discord_exports.MessageType.PurchaseNotification: return buildDiscordSystemEvent(message, location, "purchase notification");
26
- default: return null;
27
- }
28
- }
29
- function buildDiscordSystemEvent(message, location, action) {
30
- const authorLabel = message.author ? formatDiscordUserTag(message.author) : "";
31
- return `Discord system: ${authorLabel ? `${authorLabel} ` : ""}${action} in ${location}`;
32
- }
33
- //#endregion
34
- export { resolveDiscordSystemEvent };
@@ -1,3 +0,0 @@
1
- import "./retry-BEYkDy0P.mjs";
2
- import "./target-resolver-BXpy6VT8.mjs";
3
- export {};
@@ -1,55 +0,0 @@
1
- import { D as shouldPersistBindingMutations, T as setBindingRecord, _ as resolveBindingIdsForSession, o as ensureBindingsLoaded, t as BINDINGS_BY_THREAD_ID, w as saveBindingsToDisk } from "./thread-bindings.state-BThFQEga.mjs";
2
- import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
3
- //#region extensions/discord/src/monitor/thread-bindings.session-shared.ts
4
- function normalizeNonNegativeMs(raw) {
5
- if (!Number.isFinite(raw)) return 0;
6
- return Math.max(0, Math.floor(raw));
7
- }
8
- function resolveBindingIdsForTargetSession(params) {
9
- ensureBindingsLoaded();
10
- const targetSessionKey = params.targetSessionKey.trim();
11
- if (!targetSessionKey) return [];
12
- const accountId = params.accountId ? normalizeAccountId(params.accountId) : void 0;
13
- return resolveBindingIdsForSession({
14
- targetSessionKey,
15
- accountId,
16
- targetKind: params.targetKind
17
- });
18
- }
19
- function updateBindingsForTargetSession(ids, update) {
20
- if (ids.length === 0) return [];
21
- const now = Date.now();
22
- const updated = [];
23
- for (const bindingKey of ids) {
24
- const existing = BINDINGS_BY_THREAD_ID.get(bindingKey);
25
- if (!existing) continue;
26
- const nextRecord = update(existing, now);
27
- setBindingRecord(nextRecord);
28
- updated.push(nextRecord);
29
- }
30
- if (updated.length > 0 && shouldPersistBindingMutations()) saveBindingsToDisk({ force: true });
31
- return updated;
32
- }
33
- //#endregion
34
- //#region extensions/discord/src/monitor/thread-bindings.session-updates.ts
35
- function setThreadBindingIdleTimeoutBySessionKey(params) {
36
- const ids = resolveBindingIdsForTargetSession(params);
37
- const idleTimeoutMs = normalizeNonNegativeMs(params.idleTimeoutMs);
38
- return updateBindingsForTargetSession(ids, (existing, now) => ({
39
- ...existing,
40
- idleTimeoutMs,
41
- lastActivityAt: now
42
- }));
43
- }
44
- function setThreadBindingMaxAgeBySessionKey(params) {
45
- const ids = resolveBindingIdsForTargetSession(params);
46
- const maxAgeMs = normalizeNonNegativeMs(params.maxAgeMs);
47
- return updateBindingsForTargetSession(ids, (existing, now) => ({
48
- ...existing,
49
- maxAgeMs,
50
- boundAt: now,
51
- lastActivityAt: now
52
- }));
53
- }
54
- //#endregion
55
- export { setThreadBindingMaxAgeBySessionKey as n, resolveBindingIdsForTargetSession as r, setThreadBindingIdleTimeoutBySessionKey as t };