comisai 1.0.11 → 1.0.13

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 (255) hide show
  1. package/node_modules/@comis/agent/dist/model/operation-model-defaults.js +1 -0
  2. package/node_modules/@comis/agent/dist/session/comis-session-manager.js +9 -9
  3. package/node_modules/@comis/agent/package.json +1 -1
  4. package/node_modules/@comis/channels/package.json +1 -1
  5. package/node_modules/@comis/cli/package.json +1 -1
  6. package/node_modules/@comis/core/dist/event-bus/events-infra.d.ts +2 -0
  7. package/node_modules/@comis/core/package.json +1 -1
  8. package/node_modules/@comis/daemon/dist/wiring/setup-channels.js +12 -1
  9. package/node_modules/@comis/daemon/dist/wiring/setup-gateway.js +1 -0
  10. package/node_modules/@comis/daemon/dist/wiring/setup-schedulers.js +1 -0
  11. package/node_modules/@comis/daemon/package.json +1 -1
  12. package/node_modules/@comis/gateway/package.json +1 -1
  13. package/node_modules/@comis/infra/package.json +1 -1
  14. package/node_modules/@comis/memory/package.json +1 -1
  15. package/node_modules/@comis/scheduler/dist/cron/cron-types.d.ts +6 -0
  16. package/node_modules/@comis/scheduler/dist/cron/cron-types.js +2 -0
  17. package/node_modules/@comis/scheduler/package.json +1 -1
  18. package/node_modules/@comis/shared/package.json +1 -1
  19. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.d.ts +1 -1
  20. package/node_modules/@comis/skills/package.json +1 -1
  21. package/package.json +18 -18
  22. package/node_modules/@comis/core/dist/approval/approval-gate.test.d.ts +0 -1
  23. package/node_modules/@comis/core/dist/approval/approval-gate.test.js +0 -1003
  24. package/node_modules/@comis/core/dist/bootstrap.test.d.ts +0 -1
  25. package/node_modules/@comis/core/dist/bootstrap.test.js +0 -150
  26. package/node_modules/@comis/core/dist/config/backup.test.d.ts +0 -1
  27. package/node_modules/@comis/core/dist/config/backup.test.js +0 -160
  28. package/node_modules/@comis/core/dist/config/env-substitution.test.d.ts +0 -1
  29. package/node_modules/@comis/core/dist/config/env-substitution.test.js +0 -259
  30. package/node_modules/@comis/core/dist/config/field-metadata.test.d.ts +0 -1
  31. package/node_modules/@comis/core/dist/config/field-metadata.test.js +0 -72
  32. package/node_modules/@comis/core/dist/config/git-manager.test.d.ts +0 -1
  33. package/node_modules/@comis/core/dist/config/git-manager.test.js +0 -1042
  34. package/node_modules/@comis/core/dist/config/immutable-keys.test.d.ts +0 -1
  35. package/node_modules/@comis/core/dist/config/immutable-keys.test.js +0 -283
  36. package/node_modules/@comis/core/dist/config/include-resolver.test.d.ts +0 -1
  37. package/node_modules/@comis/core/dist/config/include-resolver.test.js +0 -292
  38. package/node_modules/@comis/core/dist/config/layered.test.d.ts +0 -1
  39. package/node_modules/@comis/core/dist/config/layered.test.js +0 -211
  40. package/node_modules/@comis/core/dist/config/loader.test.d.ts +0 -1
  41. package/node_modules/@comis/core/dist/config/loader.test.js +0 -300
  42. package/node_modules/@comis/core/dist/config/migrate.test.d.ts +0 -1
  43. package/node_modules/@comis/core/dist/config/migrate.test.js +0 -244
  44. package/node_modules/@comis/core/dist/config/partial-validator.test.d.ts +0 -1
  45. package/node_modules/@comis/core/dist/config/partial-validator.test.js +0 -98
  46. package/node_modules/@comis/core/dist/config/schema-agent-model.test.d.ts +0 -1
  47. package/node_modules/@comis/core/dist/config/schema-agent-model.test.js +0 -279
  48. package/node_modules/@comis/core/dist/config/schema-agent-session.test.d.ts +0 -1
  49. package/node_modules/@comis/core/dist/config/schema-agent-session.test.js +0 -242
  50. package/node_modules/@comis/core/dist/config/schema-agent.test.d.ts +0 -1
  51. package/node_modules/@comis/core/dist/config/schema-agent.test.js +0 -645
  52. package/node_modules/@comis/core/dist/config/schema-channel.test.d.ts +0 -1
  53. package/node_modules/@comis/core/dist/config/schema-channel.test.js +0 -341
  54. package/node_modules/@comis/core/dist/config/schema-coalescer.test.d.ts +0 -1
  55. package/node_modules/@comis/core/dist/config/schema-coalescer.test.js +0 -51
  56. package/node_modules/@comis/core/dist/config/schema-context-engine.test.d.ts +0 -1
  57. package/node_modules/@comis/core/dist/config/schema-context-engine.test.js +0 -797
  58. package/node_modules/@comis/core/dist/config/schema-context-guard.test.d.ts +0 -1
  59. package/node_modules/@comis/core/dist/config/schema-context-guard.test.js +0 -111
  60. package/node_modules/@comis/core/dist/config/schema-daemon.test.d.ts +0 -1
  61. package/node_modules/@comis/core/dist/config/schema-daemon.test.js +0 -107
  62. package/node_modules/@comis/core/dist/config/schema-delivery-timing.test.d.ts +0 -1
  63. package/node_modules/@comis/core/dist/config/schema-delivery-timing.test.js +0 -51
  64. package/node_modules/@comis/core/dist/config/schema-documentation.test.d.ts +0 -1
  65. package/node_modules/@comis/core/dist/config/schema-documentation.test.js +0 -63
  66. package/node_modules/@comis/core/dist/config/schema-gateway.test.d.ts +0 -1
  67. package/node_modules/@comis/core/dist/config/schema-gateway.test.js +0 -219
  68. package/node_modules/@comis/core/dist/config/schema-gemini-cache.test.d.ts +0 -1
  69. package/node_modules/@comis/core/dist/config/schema-gemini-cache.test.js +0 -41
  70. package/node_modules/@comis/core/dist/config/schema-integrations.test.d.ts +0 -1
  71. package/node_modules/@comis/core/dist/config/schema-integrations.test.js +0 -92
  72. package/node_modules/@comis/core/dist/config/schema-lifecycle-reactions.test.d.ts +0 -1
  73. package/node_modules/@comis/core/dist/config/schema-lifecycle-reactions.test.js +0 -61
  74. package/node_modules/@comis/core/dist/config/schema-misc.test.d.ts +0 -1
  75. package/node_modules/@comis/core/dist/config/schema-misc.test.js +0 -394
  76. package/node_modules/@comis/core/dist/config/schema-observability.test.d.ts +0 -1
  77. package/node_modules/@comis/core/dist/config/schema-observability.test.js +0 -76
  78. package/node_modules/@comis/core/dist/config/schema-providers.test.d.ts +0 -1
  79. package/node_modules/@comis/core/dist/config/schema-providers.test.js +0 -294
  80. package/node_modules/@comis/core/dist/config/schema-queue.test.d.ts +0 -1
  81. package/node_modules/@comis/core/dist/config/schema-queue.test.js +0 -234
  82. package/node_modules/@comis/core/dist/config/schema-response-prefix.test.d.ts +0 -1
  83. package/node_modules/@comis/core/dist/config/schema-response-prefix.test.js +0 -36
  84. package/node_modules/@comis/core/dist/config/schema-security.test.d.ts +0 -1
  85. package/node_modules/@comis/core/dist/config/schema-security.test.js +0 -54
  86. package/node_modules/@comis/core/dist/config/schema-sender-trust-display.test.d.ts +0 -1
  87. package/node_modules/@comis/core/dist/config/schema-sender-trust-display.test.js +0 -60
  88. package/node_modules/@comis/core/dist/config/schema-serializer.test.d.ts +0 -1
  89. package/node_modules/@comis/core/dist/config/schema-serializer.test.js +0 -73
  90. package/node_modules/@comis/core/dist/config/schema-telegram-file-guard.test.d.ts +0 -1
  91. package/node_modules/@comis/core/dist/config/schema-telegram-file-guard.test.js +0 -39
  92. package/node_modules/@comis/core/dist/context/context.test.d.ts +0 -1
  93. package/node_modules/@comis/core/dist/context/context.test.js +0 -276
  94. package/node_modules/@comis/core/dist/domain/agent-response.test.d.ts +0 -1
  95. package/node_modules/@comis/core/dist/domain/agent-response.test.js +0 -159
  96. package/node_modules/@comis/core/dist/domain/credential-mapping.test.d.ts +0 -1
  97. package/node_modules/@comis/core/dist/domain/credential-mapping.test.js +0 -135
  98. package/node_modules/@comis/core/dist/domain/delivery-origin.test.d.ts +0 -1
  99. package/node_modules/@comis/core/dist/domain/delivery-origin.test.js +0 -68
  100. package/node_modules/@comis/core/dist/domain/execution-graph.test.d.ts +0 -1
  101. package/node_modules/@comis/core/dist/domain/execution-graph.test.js +0 -441
  102. package/node_modules/@comis/core/dist/domain/memory-entry.test.d.ts +0 -1
  103. package/node_modules/@comis/core/dist/domain/memory-entry.test.js +0 -193
  104. package/node_modules/@comis/core/dist/domain/normalized-message.test.d.ts +0 -1
  105. package/node_modules/@comis/core/dist/domain/normalized-message.test.js +0 -255
  106. package/node_modules/@comis/core/dist/domain/session-key.test.d.ts +0 -1
  107. package/node_modules/@comis/core/dist/domain/session-key.test.js +0 -291
  108. package/node_modules/@comis/core/dist/domain/subagent-context-config.test.d.ts +0 -1
  109. package/node_modules/@comis/core/dist/domain/subagent-context-config.test.js +0 -131
  110. package/node_modules/@comis/core/dist/domain/subagent-context-types.test.d.ts +0 -1
  111. package/node_modules/@comis/core/dist/domain/subagent-context-types.test.js +0 -182
  112. package/node_modules/@comis/core/dist/event-bus/bus.test.d.ts +0 -1
  113. package/node_modules/@comis/core/dist/event-bus/bus.test.js +0 -152
  114. package/node_modules/@comis/core/dist/event-bus/events-agent.test.d.ts +0 -1
  115. package/node_modules/@comis/core/dist/event-bus/events-agent.test.js +0 -409
  116. package/node_modules/@comis/core/dist/event-bus/events-channel.test.d.ts +0 -1
  117. package/node_modules/@comis/core/dist/event-bus/events-channel.test.js +0 -240
  118. package/node_modules/@comis/core/dist/event-bus/events-infra.test.d.ts +0 -1
  119. package/node_modules/@comis/core/dist/event-bus/events-infra.test.js +0 -416
  120. package/node_modules/@comis/core/dist/event-bus/events-messaging.test.d.ts +0 -1
  121. package/node_modules/@comis/core/dist/event-bus/events-messaging.test.js +0 -433
  122. package/node_modules/@comis/core/dist/event-bus/events.test.d.ts +0 -1
  123. package/node_modules/@comis/core/dist/event-bus/events.test.js +0 -93
  124. package/node_modules/@comis/core/dist/hooks/hook-runner-global.test.d.ts +0 -1
  125. package/node_modules/@comis/core/dist/hooks/hook-runner-global.test.js +0 -29
  126. package/node_modules/@comis/core/dist/hooks/hook-runner.test.d.ts +0 -1
  127. package/node_modules/@comis/core/dist/hooks/hook-runner.test.js +0 -490
  128. package/node_modules/@comis/core/dist/hooks/hook-strategies.test.d.ts +0 -1
  129. package/node_modules/@comis/core/dist/hooks/hook-strategies.test.js +0 -209
  130. package/node_modules/@comis/core/dist/hooks/integration.test.d.ts +0 -1
  131. package/node_modules/@comis/core/dist/hooks/integration.test.js +0 -235
  132. package/node_modules/@comis/core/dist/hooks/plugin-registry.test.d.ts +0 -1
  133. package/node_modules/@comis/core/dist/hooks/plugin-registry.test.js +0 -470
  134. package/node_modules/@comis/core/dist/load-env.test.d.ts +0 -1
  135. package/node_modules/@comis/core/dist/load-env.test.js +0 -21
  136. package/node_modules/@comis/core/dist/security/action-classifier.test.d.ts +0 -1
  137. package/node_modules/@comis/core/dist/security/action-classifier.test.js +0 -298
  138. package/node_modules/@comis/core/dist/security/audit-aggregator.test.d.ts +0 -1
  139. package/node_modules/@comis/core/dist/security/audit-aggregator.test.js +0 -128
  140. package/node_modules/@comis/core/dist/security/audit.test.d.ts +0 -1
  141. package/node_modules/@comis/core/dist/security/audit.test.js +0 -154
  142. package/node_modules/@comis/core/dist/security/canary-token.test.d.ts +0 -1
  143. package/node_modules/@comis/core/dist/security/canary-token.test.js +0 -45
  144. package/node_modules/@comis/core/dist/security/config-redaction.test.d.ts +0 -1
  145. package/node_modules/@comis/core/dist/security/config-redaction.test.js +0 -107
  146. package/node_modules/@comis/core/dist/security/external-content.test.d.ts +0 -1
  147. package/node_modules/@comis/core/dist/security/external-content.test.js +0 -210
  148. package/node_modules/@comis/core/dist/security/injection-patterns.test.d.ts +0 -1
  149. package/node_modules/@comis/core/dist/security/injection-patterns.test.js +0 -213
  150. package/node_modules/@comis/core/dist/security/injection-rate-limiter.test.d.ts +0 -1
  151. package/node_modules/@comis/core/dist/security/injection-rate-limiter.test.js +0 -194
  152. package/node_modules/@comis/core/dist/security/input-guard.test.d.ts +0 -1
  153. package/node_modules/@comis/core/dist/security/input-guard.test.js +0 -215
  154. package/node_modules/@comis/core/dist/security/input-security-guard.test.d.ts +0 -1
  155. package/node_modules/@comis/core/dist/security/input-security-guard.test.js +0 -215
  156. package/node_modules/@comis/core/dist/security/input-validator.test.d.ts +0 -1
  157. package/node_modules/@comis/core/dist/security/input-validator.test.js +0 -133
  158. package/node_modules/@comis/core/dist/security/log-sanitizer.test.d.ts +0 -1
  159. package/node_modules/@comis/core/dist/security/log-sanitizer.test.js +0 -260
  160. package/node_modules/@comis/core/dist/security/memory-write-validator.test.d.ts +0 -1
  161. package/node_modules/@comis/core/dist/security/memory-write-validator.test.js +0 -62
  162. package/node_modules/@comis/core/dist/security/output-guard.test.d.ts +0 -1
  163. package/node_modules/@comis/core/dist/security/output-guard.test.js +0 -397
  164. package/node_modules/@comis/core/dist/security/safe-path.test.d.ts +0 -1
  165. package/node_modules/@comis/core/dist/security/safe-path.test.js +0 -95
  166. package/node_modules/@comis/core/dist/security/scoped-secret-manager.test.d.ts +0 -1
  167. package/node_modules/@comis/core/dist/security/scoped-secret-manager.test.js +0 -231
  168. package/node_modules/@comis/core/dist/security/secret-access.test.d.ts +0 -1
  169. package/node_modules/@comis/core/dist/security/secret-access.test.js +0 -41
  170. package/node_modules/@comis/core/dist/security/secret-crypto.test.d.ts +0 -1
  171. package/node_modules/@comis/core/dist/security/secret-crypto.test.js +0 -113
  172. package/node_modules/@comis/core/dist/security/secret-manager.test.d.ts +0 -1
  173. package/node_modules/@comis/core/dist/security/secret-manager.test.js +0 -394
  174. package/node_modules/@comis/core/dist/security/secret-ref-resolver.test.d.ts +0 -1
  175. package/node_modules/@comis/core/dist/security/secret-ref-resolver.test.js +0 -268
  176. package/node_modules/@comis/core/dist/security/secrets-audit.test.d.ts +0 -10
  177. package/node_modules/@comis/core/dist/security/secrets-audit.test.js +0 -295
  178. package/node_modules/@comis/core/dist/security/ssrf-guard.test.d.ts +0 -1
  179. package/node_modules/@comis/core/dist/security/ssrf-guard.test.js +0 -127
  180. package/node_modules/@comis/core/dist/security/token-generator.test.d.ts +0 -1
  181. package/node_modules/@comis/core/dist/security/token-generator.test.js +0 -35
  182. package/node_modules/@comis/core/dist/tool-metadata.test.d.ts +0 -1
  183. package/node_modules/@comis/core/dist/tool-metadata.test.js +0 -112
  184. package/node_modules/@comis/memory/dist/compaction.test.d.ts +0 -1
  185. package/node_modules/@comis/memory/dist/compaction.test.js +0 -298
  186. package/node_modules/@comis/memory/dist/context-schema.test.d.ts +0 -1
  187. package/node_modules/@comis/memory/dist/context-schema.test.js +0 -246
  188. package/node_modules/@comis/memory/dist/context-store.test.d.ts +0 -1
  189. package/node_modules/@comis/memory/dist/context-store.test.js +0 -708
  190. package/node_modules/@comis/memory/dist/credential-mapping-schema.test.d.ts +0 -7
  191. package/node_modules/@comis/memory/dist/credential-mapping-schema.test.js +0 -73
  192. package/node_modules/@comis/memory/dist/credential-mapping-store.test.d.ts +0 -8
  193. package/node_modules/@comis/memory/dist/credential-mapping-store.test.js +0 -340
  194. package/node_modules/@comis/memory/dist/delivery-mirror-adapter.test.d.ts +0 -1
  195. package/node_modules/@comis/memory/dist/delivery-mirror-adapter.test.js +0 -165
  196. package/node_modules/@comis/memory/dist/delivery-queue-adapter.test.d.ts +0 -1
  197. package/node_modules/@comis/memory/dist/delivery-queue-adapter.test.js +0 -263
  198. package/node_modules/@comis/memory/dist/embedding-batch-indexer.test.d.ts +0 -1
  199. package/node_modules/@comis/memory/dist/embedding-batch-indexer.test.js +0 -202
  200. package/node_modules/@comis/memory/dist/embedding-cache-lru.test.d.ts +0 -1
  201. package/node_modules/@comis/memory/dist/embedding-cache-lru.test.js +0 -241
  202. package/node_modules/@comis/memory/dist/embedding-cache-sqlite.test.d.ts +0 -8
  203. package/node_modules/@comis/memory/dist/embedding-cache-sqlite.test.js +0 -678
  204. package/node_modules/@comis/memory/dist/embedding-cache.test.d.ts +0 -1
  205. package/node_modules/@comis/memory/dist/embedding-cache.test.js +0 -213
  206. package/node_modules/@comis/memory/dist/embedding-fingerprint.test.d.ts +0 -1
  207. package/node_modules/@comis/memory/dist/embedding-fingerprint.test.js +0 -87
  208. package/node_modules/@comis/memory/dist/embedding-hash.test.d.ts +0 -1
  209. package/node_modules/@comis/memory/dist/embedding-hash.test.js +0 -31
  210. package/node_modules/@comis/memory/dist/embedding-integration.test.d.ts +0 -8
  211. package/node_modules/@comis/memory/dist/embedding-integration.test.js +0 -232
  212. package/node_modules/@comis/memory/dist/embedding-provider-factory.test.d.ts +0 -1
  213. package/node_modules/@comis/memory/dist/embedding-provider-factory.test.js +0 -176
  214. package/node_modules/@comis/memory/dist/embedding-provider-local.test.d.ts +0 -8
  215. package/node_modules/@comis/memory/dist/embedding-provider-local.test.js +0 -76
  216. package/node_modules/@comis/memory/dist/embedding-provider-openai.test.d.ts +0 -8
  217. package/node_modules/@comis/memory/dist/embedding-provider-openai.test.js +0 -100
  218. package/node_modules/@comis/memory/dist/embedding-queue.test.d.ts +0 -1
  219. package/node_modules/@comis/memory/dist/embedding-queue.test.js +0 -236
  220. package/node_modules/@comis/memory/dist/hybrid-search.test.d.ts +0 -1
  221. package/node_modules/@comis/memory/dist/hybrid-search.test.js +0 -476
  222. package/node_modules/@comis/memory/dist/identity-link-store.test.d.ts +0 -1
  223. package/node_modules/@comis/memory/dist/identity-link-store.test.js +0 -88
  224. package/node_modules/@comis/memory/dist/memory-api.test.d.ts +0 -1
  225. package/node_modules/@comis/memory/dist/memory-api.test.js +0 -495
  226. package/node_modules/@comis/memory/dist/memory-concurrency.test.d.ts +0 -20
  227. package/node_modules/@comis/memory/dist/memory-concurrency.test.js +0 -222
  228. package/node_modules/@comis/memory/dist/named-graph-store.test.d.ts +0 -1
  229. package/node_modules/@comis/memory/dist/named-graph-store.test.js +0 -227
  230. package/node_modules/@comis/memory/dist/observability-store.test.d.ts +0 -1
  231. package/node_modules/@comis/memory/dist/observability-store.test.js +0 -704
  232. package/node_modules/@comis/memory/dist/row-mapper.test.d.ts +0 -1
  233. package/node_modules/@comis/memory/dist/row-mapper.test.js +0 -409
  234. package/node_modules/@comis/memory/dist/schema.test.d.ts +0 -1
  235. package/node_modules/@comis/memory/dist/schema.test.js +0 -240
  236. package/node_modules/@comis/memory/dist/secret-store-schema.test.d.ts +0 -7
  237. package/node_modules/@comis/memory/dist/secret-store-schema.test.js +0 -90
  238. package/node_modules/@comis/memory/dist/session-store.test.d.ts +0 -1
  239. package/node_modules/@comis/memory/dist/session-store.test.js +0 -262
  240. package/node_modules/@comis/memory/dist/setup-secrets.test.d.ts +0 -1
  241. package/node_modules/@comis/memory/dist/setup-secrets.test.js +0 -140
  242. package/node_modules/@comis/memory/dist/sqlite-memory-adapter.test.d.ts +0 -1
  243. package/node_modules/@comis/memory/dist/sqlite-memory-adapter.test.js +0 -888
  244. package/node_modules/@comis/memory/dist/sqlite-secret-store.test.d.ts +0 -8
  245. package/node_modules/@comis/memory/dist/sqlite-secret-store.test.js +0 -245
  246. package/node_modules/@comis/shared/dist/abort.test.d.ts +0 -1
  247. package/node_modules/@comis/shared/dist/abort.test.js +0 -71
  248. package/node_modules/@comis/shared/dist/result.test.d.ts +0 -1
  249. package/node_modules/@comis/shared/dist/result.test.js +0 -178
  250. package/node_modules/@comis/shared/dist/suppress-error.test.d.ts +0 -1
  251. package/node_modules/@comis/shared/dist/suppress-error.test.js +0 -50
  252. package/node_modules/@comis/shared/dist/timeout.test.d.ts +0 -1
  253. package/node_modules/@comis/shared/dist/timeout.test.js +0 -75
  254. package/node_modules/@comis/shared/dist/ttl-cache.test.d.ts +0 -1
  255. package/node_modules/@comis/shared/dist/ttl-cache.test.js +0 -81
@@ -1,341 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { ChannelEntrySchema, ChannelConfigSchema, SignalChannelEntrySchema, IMessageChannelEntrySchema, LineChannelEntrySchema, IrcChannelEntrySchema, } from "./schema-channel.js";
3
- describe("ChannelEntrySchema", () => {
4
- it("produces valid defaults from empty object", () => {
5
- const result = ChannelEntrySchema.safeParse({});
6
- expect(result.success).toBe(true);
7
- if (result.success) {
8
- expect(result.data.enabled).toBe(false);
9
- expect(result.data.allowFrom).toEqual([]);
10
- }
11
- });
12
- it("validates Telegram config (enabled + botToken)", () => {
13
- const result = ChannelEntrySchema.safeParse({
14
- enabled: true,
15
- botToken: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11",
16
- });
17
- expect(result.success).toBe(true);
18
- if (result.success) {
19
- expect(result.data.enabled).toBe(true);
20
- expect(result.data.botToken).toBe("123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11");
21
- }
22
- });
23
- it("validates Slack Socket Mode config", () => {
24
- const result = ChannelEntrySchema.safeParse({
25
- enabled: true,
26
- botToken: "xoxb-123-456-abc",
27
- appToken: "xapp-1-A0B1C2D3E4-123456789-abcdef",
28
- mode: "socket",
29
- });
30
- expect(result.success).toBe(true);
31
- if (result.success) {
32
- expect(result.data.appToken).toBe("xapp-1-A0B1C2D3E4-123456789-abcdef");
33
- expect(result.data.mode).toBe("socket");
34
- }
35
- });
36
- it("validates Slack HTTP Mode config", () => {
37
- const result = ChannelEntrySchema.safeParse({
38
- enabled: true,
39
- botToken: "xoxb-123-456-abc",
40
- signingSecret: "abc123def456",
41
- mode: "http",
42
- });
43
- expect(result.success).toBe(true);
44
- if (result.success) {
45
- expect(result.data.signingSecret).toBe("abc123def456");
46
- expect(result.data.mode).toBe("http");
47
- }
48
- });
49
- it("validates WhatsApp config", () => {
50
- const result = ChannelEntrySchema.safeParse({
51
- enabled: true,
52
- authDir: "./wa-auth",
53
- printQR: false,
54
- });
55
- expect(result.success).toBe(true);
56
- if (result.success) {
57
- expect(result.data.authDir).toBe("./wa-auth");
58
- expect(result.data.printQR).toBe(false);
59
- }
60
- });
61
- it("validates Discord config (just enabled + botToken) without new fields", () => {
62
- const result = ChannelEntrySchema.safeParse({
63
- enabled: true,
64
- botToken: "MTA...abc.xyz",
65
- });
66
- expect(result.success).toBe(true);
67
- if (result.success) {
68
- // New fields should be undefined (not required)
69
- expect(result.data.appToken).toBeUndefined();
70
- expect(result.data.signingSecret).toBeUndefined();
71
- expect(result.data.mode).toBeUndefined();
72
- expect(result.data.authDir).toBeUndefined();
73
- expect(result.data.printQR).toBeUndefined();
74
- }
75
- });
76
- it("rejects invalid mode value", () => {
77
- const result = ChannelEntrySchema.safeParse({
78
- enabled: true,
79
- botToken: "xoxb-test",
80
- mode: "websocket",
81
- });
82
- expect(result.success).toBe(false);
83
- });
84
- it("rejects unknown fields (.strict())", () => {
85
- const result = ChannelEntrySchema.safeParse({
86
- enabled: true,
87
- botToken: "test",
88
- unknownField: "should-fail",
89
- });
90
- expect(result.success).toBe(false);
91
- });
92
- });
93
- // ---------------------------------------------------------------------------
94
- // SecretRef union validation
95
- // ---------------------------------------------------------------------------
96
- describe("ChannelEntrySchema — SecretRef union", () => {
97
- it("accepts a SecretRef object for botToken", () => {
98
- const result = ChannelEntrySchema.safeParse({
99
- enabled: true,
100
- botToken: { source: "env", provider: "telegram", id: "TELEGRAM_BOT_TOKEN" },
101
- });
102
- expect(result.success).toBe(true);
103
- if (result.success) {
104
- expect(result.data.botToken).toEqual({
105
- source: "env",
106
- provider: "telegram",
107
- id: "TELEGRAM_BOT_TOKEN",
108
- });
109
- }
110
- });
111
- it("still accepts a plain string for botToken (backward compat)", () => {
112
- const result = ChannelEntrySchema.safeParse({
113
- enabled: true,
114
- botToken: "plaintext-token",
115
- });
116
- expect(result.success).toBe(true);
117
- if (result.success) {
118
- expect(result.data.botToken).toBe("plaintext-token");
119
- }
120
- });
121
- it("rejects an invalid SecretRef source", () => {
122
- const result = ChannelEntrySchema.safeParse({
123
- enabled: true,
124
- botToken: { source: "invalid", provider: "x", id: "y" },
125
- });
126
- expect(result.success).toBe(false);
127
- });
128
- it("accepts a SecretRef for apiKey with file source", () => {
129
- const result = ChannelEntrySchema.safeParse({
130
- enabled: true,
131
- apiKey: { source: "file", provider: "vault", id: "/secrets/api.key" },
132
- });
133
- expect(result.success).toBe(true);
134
- if (result.success) {
135
- expect(result.data.apiKey).toEqual({
136
- source: "file",
137
- provider: "vault",
138
- id: "/secrets/api.key",
139
- });
140
- }
141
- });
142
- it("accepts a SecretRef for appToken", () => {
143
- const result = ChannelEntrySchema.safeParse({
144
- enabled: true,
145
- appToken: { source: "exec", provider: "op", id: "slack-app-token" },
146
- });
147
- expect(result.success).toBe(true);
148
- });
149
- it("accepts a SecretRef for signingSecret", () => {
150
- const result = ChannelEntrySchema.safeParse({
151
- enabled: true,
152
- signingSecret: { source: "env", provider: "slack", id: "SLACK_SIGNING_SECRET" },
153
- });
154
- expect(result.success).toBe(true);
155
- });
156
- });
157
- // ---------------------------------------------------------------------------
158
- // Platform-specific entry schemas
159
- // ---------------------------------------------------------------------------
160
- describe("SignalChannelEntrySchema", () => {
161
- it("parses with defaults", () => {
162
- const result = SignalChannelEntrySchema.safeParse({});
163
- expect(result.success).toBe(true);
164
- if (result.success) {
165
- expect(result.data.enabled).toBe(false);
166
- expect(result.data.baseUrl).toBe("http://127.0.0.1:8080");
167
- }
168
- });
169
- it("parses with platform-specific fields", () => {
170
- const result = SignalChannelEntrySchema.safeParse({
171
- enabled: true,
172
- baseUrl: "http://signal.local:9090",
173
- account: "+1234567890",
174
- cliPath: "/usr/local/bin/signal-cli",
175
- });
176
- expect(result.success).toBe(true);
177
- if (result.success) {
178
- expect(result.data.baseUrl).toBe("http://signal.local:9090");
179
- expect(result.data.account).toBe("+1234567890");
180
- expect(result.data.cliPath).toBe("/usr/local/bin/signal-cli");
181
- }
182
- });
183
- });
184
- describe("IMessageChannelEntrySchema", () => {
185
- it("parses with defaults", () => {
186
- const result = IMessageChannelEntrySchema.safeParse({});
187
- expect(result.success).toBe(true);
188
- if (result.success) {
189
- expect(result.data.enabled).toBe(false);
190
- }
191
- });
192
- it("parses with platform-specific fields", () => {
193
- const result = IMessageChannelEntrySchema.safeParse({
194
- enabled: true,
195
- binaryPath: "/usr/local/bin/imsg",
196
- account: "user@icloud.com",
197
- });
198
- expect(result.success).toBe(true);
199
- if (result.success) {
200
- expect(result.data.binaryPath).toBe("/usr/local/bin/imsg");
201
- expect(result.data.account).toBe("user@icloud.com");
202
- }
203
- });
204
- });
205
- describe("LineChannelEntrySchema", () => {
206
- it("parses with defaults", () => {
207
- const result = LineChannelEntrySchema.safeParse({});
208
- expect(result.success).toBe(true);
209
- if (result.success) {
210
- expect(result.data.enabled).toBe(false);
211
- expect(result.data.webhookPath).toBe("/webhooks/line");
212
- }
213
- });
214
- it("parses with platform-specific fields", () => {
215
- const result = LineChannelEntrySchema.safeParse({
216
- enabled: true,
217
- apiKey: "line-channel-access-token",
218
- channelSecret: "line-secret-abc",
219
- webhookPath: "/hooks/line",
220
- });
221
- expect(result.success).toBe(true);
222
- if (result.success) {
223
- expect(result.data.apiKey).toBe("line-channel-access-token");
224
- expect(result.data.channelSecret).toBe("line-secret-abc");
225
- expect(result.data.webhookPath).toBe("/hooks/line");
226
- }
227
- });
228
- });
229
- describe("IrcChannelEntrySchema", () => {
230
- it("parses with defaults", () => {
231
- const result = IrcChannelEntrySchema.safeParse({});
232
- expect(result.success).toBe(true);
233
- if (result.success) {
234
- expect(result.data.enabled).toBe(false);
235
- expect(result.data.tls).toBe(true);
236
- }
237
- });
238
- it("parses with platform-specific fields", () => {
239
- const result = IrcChannelEntrySchema.safeParse({
240
- enabled: true,
241
- host: "irc.libera.chat",
242
- port: 6697,
243
- nick: "comis-bot",
244
- tls: true,
245
- channels: ["#comis", "#bots"],
246
- nickservPassword: "secret123",
247
- });
248
- expect(result.success).toBe(true);
249
- if (result.success) {
250
- expect(result.data.host).toBe("irc.libera.chat");
251
- expect(result.data.port).toBe(6697);
252
- expect(result.data.nick).toBe("comis-bot");
253
- expect(result.data.tls).toBe(true);
254
- expect(result.data.channels).toEqual(["#comis", "#bots"]);
255
- expect(result.data.nickservPassword).toBe("secret123");
256
- }
257
- });
258
- it("rejects non-integer port", () => {
259
- const result = IrcChannelEntrySchema.safeParse({
260
- port: 6697.5,
261
- });
262
- expect(result.success).toBe(false);
263
- });
264
- });
265
- // ---------------------------------------------------------------------------
266
- // Top-level channel config
267
- // ---------------------------------------------------------------------------
268
- describe("ChannelConfigSchema", () => {
269
- it("validates full config with all 8 channels", () => {
270
- const result = ChannelConfigSchema.safeParse({
271
- telegram: { enabled: true, botToken: "tg-token" },
272
- discord: { enabled: true, botToken: "discord-token" },
273
- slack: {
274
- enabled: true,
275
- botToken: "xoxb-slack",
276
- appToken: "xapp-slack",
277
- mode: "socket",
278
- },
279
- whatsapp: {
280
- enabled: true,
281
- authDir: "/var/wa-auth",
282
- printQR: true,
283
- },
284
- signal: {
285
- enabled: true,
286
- baseUrl: "http://signal:8080",
287
- account: "+1234567890",
288
- },
289
- imessage: {
290
- enabled: true,
291
- binaryPath: "/usr/local/bin/imsg",
292
- },
293
- line: {
294
- enabled: true,
295
- apiKey: "line-token",
296
- channelSecret: "line-secret",
297
- },
298
- irc: {
299
- enabled: true,
300
- host: "irc.libera.chat",
301
- port: 6697,
302
- nick: "comis",
303
- channels: ["#comis"],
304
- },
305
- });
306
- expect(result.success).toBe(true);
307
- if (result.success) {
308
- expect(result.data.telegram.enabled).toBe(true);
309
- expect(result.data.discord.enabled).toBe(true);
310
- expect(result.data.slack.mode).toBe("socket");
311
- expect(result.data.whatsapp.printQR).toBe(true);
312
- expect(result.data.signal.baseUrl).toBe("http://signal:8080");
313
- expect(result.data.imessage.binaryPath).toBe("/usr/local/bin/imsg");
314
- expect(result.data.line.channelSecret).toBe("line-secret");
315
- expect(result.data.irc.nick).toBe("comis");
316
- }
317
- });
318
- it("produces valid defaults from empty object", () => {
319
- const result = ChannelConfigSchema.safeParse({});
320
- expect(result.success).toBe(true);
321
- if (result.success) {
322
- expect(result.data.telegram.enabled).toBe(false);
323
- expect(result.data.discord.enabled).toBe(false);
324
- expect(result.data.slack.enabled).toBe(false);
325
- expect(result.data.whatsapp.enabled).toBe(false);
326
- expect(result.data.signal.enabled).toBe(false);
327
- expect(result.data.imessage.enabled).toBe(false);
328
- expect(result.data.line.enabled).toBe(false);
329
- expect(result.data.irc.enabled).toBe(false);
330
- }
331
- });
332
- it("defaults platform-specific fields for new channels", () => {
333
- const result = ChannelConfigSchema.safeParse({});
334
- expect(result.success).toBe(true);
335
- if (result.success) {
336
- expect(result.data.signal.baseUrl).toBe("http://127.0.0.1:8080");
337
- expect(result.data.line.webhookPath).toBe("/webhooks/line");
338
- expect(result.data.irc.tls).toBe(true);
339
- }
340
- });
341
- });
@@ -1,51 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { CoalescerConfigSchema } from "./schema-coalescer.js";
3
- describe("CoalescerConfigSchema", () => {
4
- it("produces valid defaults from empty object", () => {
5
- const result = CoalescerConfigSchema.safeParse({});
6
- expect(result.success).toBe(true);
7
- if (result.success) {
8
- expect(result.data.minChars).toBe(0);
9
- expect(result.data.maxChars).toBe(500);
10
- expect(result.data.idleMs).toBe(1500);
11
- expect(result.data.codeBlockPolicy).toBe("standalone");
12
- expect(result.data.adaptiveIdle).toBe(false);
13
- }
14
- });
15
- it("accepts fully specified config", () => {
16
- const result = CoalescerConfigSchema.safeParse({
17
- minChars: 50,
18
- maxChars: 1000,
19
- idleMs: 2000,
20
- codeBlockPolicy: "coalesce",
21
- adaptiveIdle: true,
22
- });
23
- expect(result.success).toBe(true);
24
- if (result.success) {
25
- expect(result.data.minChars).toBe(50);
26
- expect(result.data.maxChars).toBe(1000);
27
- expect(result.data.idleMs).toBe(2000);
28
- expect(result.data.codeBlockPolicy).toBe("coalesce");
29
- expect(result.data.adaptiveIdle).toBe(true);
30
- }
31
- });
32
- it("rejects unknown keys (strictObject)", () => {
33
- const result = CoalescerConfigSchema.safeParse({
34
- maxChars: 500,
35
- unknownField: "should-fail",
36
- });
37
- expect(result.success).toBe(false);
38
- });
39
- it("rejects invalid codeBlockPolicy enum value", () => {
40
- const result = CoalescerConfigSchema.safeParse({
41
- codeBlockPolicy: "merge",
42
- });
43
- expect(result.success).toBe(false);
44
- });
45
- it("rejects zero idleMs (must be positive)", () => {
46
- const result = CoalescerConfigSchema.safeParse({
47
- idleMs: 0,
48
- });
49
- expect(result.success).toBe(false);
50
- });
51
- });