@canonmsg/agent-sdk 11.2.1 → 12.0.0

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 (188) hide show
  1. package/README.md +171 -536
  2. package/dist/chunks/chunk-6VK4UZHJ.js +2806 -0
  3. package/dist/chunks/chunk-FPQFTTND.js +4899 -0
  4. package/dist/chunks/chunk-OLJ7H4E2.js +14705 -0
  5. package/dist/chunks/mls-crypto-NZDNSPAO.js +10 -0
  6. package/dist/cli.js +198 -0
  7. package/dist/drivers/claude.d.ts +36 -0
  8. package/dist/drivers/code.d.ts +18 -0
  9. package/dist/drivers/codex.d.ts +37 -0
  10. package/dist/index.d.ts +12 -25
  11. package/dist/index.js +69 -13
  12. package/dist/internal/backend-contracts/agentBehaviorPolicy.d.ts +122 -0
  13. package/dist/internal/backend-contracts/agentDirectory.d.ts +32 -0
  14. package/dist/internal/backend-contracts/agentOrigin.d.ts +23 -0
  15. package/dist/internal/backend-contracts/agentSearch.d.ts +17 -0
  16. package/dist/internal/backend-contracts/api-origins.generated.d.ts +4 -0
  17. package/dist/internal/backend-contracts/apiErrors.d.ts +1 -0
  18. package/dist/internal/backend-contracts/artifactActions.d.ts +159 -0
  19. package/dist/internal/backend-contracts/artifacts.d.ts +386 -0
  20. package/dist/internal/backend-contracts/communication.d.ts +131 -0
  21. package/dist/internal/backend-contracts/conversationMembership.d.ts +28 -0
  22. package/dist/internal/backend-contracts/deliveryObservation.d.ts +23 -0
  23. package/dist/internal/backend-contracts/diffRedaction.d.ts +6 -0
  24. package/dist/internal/backend-contracts/endpoint-unread.d.ts +4 -0
  25. package/dist/internal/backend-contracts/endpoint.d.ts +103 -0
  26. package/dist/internal/backend-contracts/endpointContentPolicy.d.ts +37 -0
  27. package/dist/internal/backend-contracts/environment.d.ts +20 -0
  28. package/dist/internal/backend-contracts/externalInbound.d.ts +24 -0
  29. package/dist/internal/backend-contracts/firestoreValues.d.ts +9 -0
  30. package/dist/internal/backend-contracts/index.d.ts +48 -0
  31. package/dist/internal/backend-contracts/media-url.d.ts +6 -0
  32. package/dist/internal/backend-contracts/media.d.ts +51 -0
  33. package/dist/internal/backend-contracts/mediaDelivery.d.ts +46 -0
  34. package/dist/internal/backend-contracts/mediaTransferProtocol.d.ts +17 -0
  35. package/dist/internal/backend-contracts/membershipChange.d.ts +21 -0
  36. package/dist/internal/backend-contracts/message.d.ts +86 -0
  37. package/dist/internal/backend-contracts/messageText.d.ts +6 -0
  38. package/dist/internal/backend-contracts/mlsDevApplication.d.ts +73 -0
  39. package/dist/internal/backend-contracts/mlsDevCredential.d.ts +75 -0
  40. package/dist/internal/backend-contracts/mlsDevCredentialReconciliation.d.ts +45 -0
  41. package/dist/internal/backend-contracts/mlsDevDeviceCustody.d.ts +51 -0
  42. package/dist/internal/backend-contracts/mlsDevEnrollment.d.ts +74 -0
  43. package/dist/internal/backend-contracts/mlsDevGroup.d.ts +197 -0
  44. package/dist/internal/backend-contracts/mlsDevGroupFeed.d.ts +47 -0
  45. package/dist/internal/backend-contracts/mlsDevKeyPackage.d.ts +42 -0
  46. package/dist/internal/backend-contracts/mlsDevKeyPackages.d.ts +55 -0
  47. package/dist/internal/backend-contracts/moderation.d.ts +7 -0
  48. package/dist/internal/backend-contracts/plaintextProcessors.d.ts +63 -0
  49. package/dist/internal/backend-contracts/preparedContent.d.ts +54 -0
  50. package/dist/internal/backend-contracts/replyAuthority.d.ts +14 -0
  51. package/dist/internal/backend-contracts/runtimeCardFields.d.ts +66 -0
  52. package/dist/internal/backend-contracts/runtimeCardStorage.d.ts +3 -0
  53. package/dist/internal/backend-contracts/runtimeDescriptor.d.ts +88 -0
  54. package/dist/internal/backend-contracts/selfContext.d.ts +9 -0
  55. package/dist/internal/backend-contracts/turnProtocol.d.ts +43 -0
  56. package/dist/internal/backend-contracts/verbContract.d.ts +848 -0
  57. package/dist/internal/backend-contracts/verbSchemas.d.ts +1707 -0
  58. package/dist/internal/backend-contracts/verbWire.d.ts +493 -0
  59. package/dist/internal/backend-contracts/webAuth.d.ts +8 -0
  60. package/dist/internal/backend-contracts/workSessions.d.ts +205 -0
  61. package/dist/internal/core/agent-profiles.d.ts +69 -0
  62. package/dist/internal/core/agent-resolver.d.ts +49 -0
  63. package/dist/internal/core/agent-session.d.ts +12 -0
  64. package/dist/internal/core/approval-format.d.ts +26 -0
  65. package/dist/internal/core/approval-manager.d.ts +43 -0
  66. package/dist/internal/core/approval-types.d.ts +74 -0
  67. package/dist/internal/core/artifacts.d.ts +262 -0
  68. package/dist/internal/core/attached-native-session.d.ts +174 -0
  69. package/dist/internal/core/attached-session-file-store.d.ts +3 -0
  70. package/dist/internal/core/base-url.d.ts +1 -0
  71. package/dist/internal/core/cli-metadata.d.ts +13 -0
  72. package/dist/internal/core/client.d.ts +486 -0
  73. package/dist/internal/core/completed-output-journal.d.ts +39 -0
  74. package/dist/internal/core/constants.d.ts +4 -0
  75. package/dist/internal/core/control-poller.d.ts +221 -0
  76. package/dist/internal/core/endpoint-client.d.ts +43 -0
  77. package/dist/internal/core/exclusive-json-file-store.d.ts +7 -0
  78. package/dist/internal/core/execution-environment-mode.d.ts +8 -0
  79. package/dist/internal/core/execution-environment.d.ts +55 -0
  80. package/dist/internal/core/gifs.d.ts +35 -0
  81. package/dist/internal/core/group-context.d.ts +25 -0
  82. package/dist/internal/core/host-runtime.d.ts +257 -0
  83. package/dist/internal/core/inbound-frame.d.ts +64 -0
  84. package/dist/internal/core/index.d.ts +107 -0
  85. package/dist/internal/core/local-runtime-catalog.d.ts +131 -0
  86. package/dist/internal/core/message-format.d.ts +13 -0
  87. package/dist/internal/core/native-session-interaction.d.ts +44 -0
  88. package/dist/internal/core/node-media.d.ts +6 -0
  89. package/dist/internal/core/policy.d.ts +2 -0
  90. package/dist/internal/core/provenance.d.ts +31 -0
  91. package/dist/internal/core/registration-cli.d.ts +40 -0
  92. package/dist/internal/core/registration-profile.d.ts +10 -0
  93. package/dist/internal/core/registration-session.d.ts +55 -0
  94. package/dist/internal/core/registration.d.ts +21 -0
  95. package/dist/internal/core/retry.d.ts +122 -0
  96. package/dist/internal/core/rtdb-rest.d.ts +145 -0
  97. package/dist/internal/core/runtime-cards.d.ts +331 -0
  98. package/dist/internal/core/runtime-descriptor.d.ts +75 -0
  99. package/dist/internal/core/runtime-endpoints.d.ts +26 -0
  100. package/dist/internal/core/runtime-heartbeat.d.ts +29 -0
  101. package/dist/internal/core/runtime-presentation.d.ts +35 -0
  102. package/dist/internal/core/runtime-request-manager.d.ts +284 -0
  103. package/dist/internal/core/runtime-state-publisher.d.ts +42 -0
  104. package/dist/internal/core/self-context.d.ts +61 -0
  105. package/dist/internal/core/silent-turn.d.ts +86 -0
  106. package/dist/internal/core/stream.d.ts +77 -0
  107. package/dist/internal/core/turn-output-controller.d.ts +69 -0
  108. package/dist/internal/core/turn-protocol.d.ts +33 -0
  109. package/dist/internal/core/turn-verbosity.d.ts +97 -0
  110. package/dist/internal/core/types.d.ts +1075 -0
  111. package/dist/internal/core/typing-status-publisher.d.ts +14 -0
  112. package/dist/internal/core/unified-diff.d.ts +35 -0
  113. package/dist/internal/core/work-session-provider.d.ts +29 -0
  114. package/dist/internal/core/workspace-discovery.d.ts +17 -0
  115. package/dist/internal/endpoint/artifact-images.d.ts +60 -0
  116. package/dist/internal/endpoint/artifact-reducer.d.ts +35 -0
  117. package/dist/internal/endpoint/artifact-views.d.ts +113 -0
  118. package/dist/internal/endpoint/artifacts.d.ts +75 -0
  119. package/dist/internal/endpoint/delivery.d.ts +47 -0
  120. package/dist/internal/endpoint/engine.d.ts +219 -0
  121. package/dist/internal/endpoint/ephemeral.d.ts +8 -0
  122. package/dist/internal/endpoint/events.d.ts +32 -0
  123. package/dist/internal/endpoint/external-inbound.d.ts +36 -0
  124. package/dist/internal/endpoint/handoff.d.ts +50 -0
  125. package/dist/internal/endpoint/history.d.ts +22 -0
  126. package/dist/internal/endpoint/image-generation-errors.d.ts +2 -0
  127. package/dist/internal/endpoint/inbound.d.ts +29 -0
  128. package/dist/internal/endpoint/index.d.ts +32 -0
  129. package/dist/internal/endpoint/media.d.ts +172 -0
  130. package/dist/internal/endpoint/migration.d.ts +50 -0
  131. package/dist/internal/endpoint/mls-crypto.d.ts +25 -0
  132. package/dist/internal/endpoint/mls-dev-client.d.ts +44 -0
  133. package/dist/internal/endpoint/mls-dev-device.d.ts +67 -0
  134. package/dist/internal/endpoint/mls-dev-groups.d.ts +114 -0
  135. package/dist/internal/endpoint/mls-dev-key-package-service.d.ts +33 -0
  136. package/dist/internal/endpoint/mls-dev-key-packages.d.ts +42 -0
  137. package/dist/internal/endpoint/mls-dev-transport.d.ts +37 -0
  138. package/dist/internal/endpoint/node-mls-custody-protocol.d.ts +24 -0
  139. package/dist/internal/endpoint/node-mls-custody.d.ts +15 -0
  140. package/dist/internal/endpoint/node.d.ts +7 -0
  141. package/dist/internal/endpoint/observe-query.d.ts +17 -0
  142. package/dist/internal/endpoint/portable-node-mls-custody.d.ts +23 -0
  143. package/dist/internal/endpoint/queue.d.ts +22 -0
  144. package/dist/internal/endpoint/recovery.d.ts +27 -0
  145. package/dist/internal/endpoint/retention.d.ts +7 -0
  146. package/dist/internal/endpoint/store.d.ts +22 -0
  147. package/dist/internal/endpoint/sync.d.ts +33 -0
  148. package/dist/internal/endpoint/transient-publisher.d.ts +8 -0
  149. package/dist/internal/endpoint/transport.d.ts +58 -0
  150. package/dist/media.d.ts +1 -1
  151. package/dist/media.js +42 -541
  152. package/dist/runner/runner.d.ts +37 -0
  153. package/dist/runner/types.d.ts +168 -0
  154. package/package.json +18 -5
  155. package/dist/attached-session.d.ts +0 -58
  156. package/dist/attached-session.js +0 -638
  157. package/dist/bounded-file-read.d.ts +0 -14
  158. package/dist/bounded-file-read.js +0 -34
  159. package/dist/canon-agent.d.ts +0 -236
  160. package/dist/canon-agent.js +0 -2531
  161. package/dist/debouncer.d.ts +0 -18
  162. package/dist/debouncer.js +0 -133
  163. package/dist/inbound-handoff.d.ts +0 -6
  164. package/dist/inbound-handoff.js +0 -17
  165. package/dist/managed-session-host.d.ts +0 -27
  166. package/dist/managed-session-host.js +0 -195
  167. package/dist/managed-session-setup.d.ts +0 -99
  168. package/dist/managed-session-setup.js +0 -234
  169. package/dist/realtime.d.ts +0 -62
  170. package/dist/realtime.js +0 -193
  171. package/dist/runtime-card.d.ts +0 -48
  172. package/dist/runtime-card.js +0 -64
  173. package/dist/session-manager.d.ts +0 -77
  174. package/dist/session-manager.js +0 -285
  175. package/dist/turn-streaming-request.d.ts +0 -17
  176. package/dist/turn-streaming-request.js +0 -22
  177. package/dist/turn-verbosity-option.d.ts +0 -33
  178. package/dist/turn-verbosity-option.js +0 -23
  179. package/dist/types.d.ts +0 -387
  180. package/dist/types.js +0 -1
  181. package/dist/work-session-coordination.d.ts +0 -21
  182. package/dist/work-session-coordination.js +0 -53
  183. package/dist/work-session-host.d.ts +0 -31
  184. package/dist/work-session-host.js +0 -617
  185. package/dist/work-session-interactions.d.ts +0 -12
  186. package/dist/work-session-interactions.js +0 -173
  187. package/dist/work-session-state.d.ts +0 -36
  188. package/dist/work-session-state.js +0 -62
@@ -0,0 +1,69 @@
1
+ import type { StreamingStatus, TurnOutputBlock, TurnOutputBlockKind, TurnOutputBlockStatus } from './types.js';
2
+ export type TurnOutputMode = 'delta' | 'block' | 'snapshot' | 'status';
3
+ export interface TurnOutputSnapshot {
4
+ turnId: string;
5
+ messageId: string;
6
+ text: string;
7
+ status: StreamingStatus;
8
+ blocks?: TurnOutputBlock[];
9
+ }
10
+ export interface TurnOutputBlockInput {
11
+ id: string;
12
+ kind: TurnOutputBlockKind;
13
+ status?: TurnOutputBlockStatus;
14
+ sequence?: number;
15
+ title?: string;
16
+ text?: string;
17
+ summary?: string;
18
+ detail?: string;
19
+ }
20
+ export interface BuildBoundedTurnTrailOptions {
21
+ maxBlocks?: number;
22
+ maxMetadataBytes?: number;
23
+ }
24
+ export interface TurnOutputControllerOptions {
25
+ turnId: string;
26
+ mode?: TurnOutputMode;
27
+ throttleMs?: number;
28
+ blockSeparator?: string;
29
+ writeSnapshot: (snapshot: TurnOutputSnapshot) => void | Promise<void>;
30
+ clearSnapshot: () => void | Promise<void>;
31
+ schedule?: typeof setTimeout;
32
+ cancel?: typeof clearTimeout;
33
+ }
34
+ export interface TurnOutputController {
35
+ readonly turnId: string;
36
+ readonly mode: TurnOutputMode;
37
+ getText(): string;
38
+ getStatus(): StreamingStatus;
39
+ getBlocks(): TurnOutputBlock[];
40
+ getFinalTrail(): TurnOutputBlock[];
41
+ startThinking(text?: string): Promise<void>;
42
+ startStreaming(text?: string): Promise<void>;
43
+ appendDelta(delta: string): void;
44
+ appendBlock(block: string): void;
45
+ appendTextSegmentDelta(id: string, delta: string, patch?: Partial<Omit<TurnOutputBlockInput, 'id' | 'kind' | 'sequence' | 'text'>>): void;
46
+ replaceTextSegmentSnapshot(id: string, text: string, patch?: Partial<Omit<TurnOutputBlockInput, 'id' | 'kind' | 'sequence' | 'text'>>): void;
47
+ replaceSnapshot(text: string, status?: StreamingStatus): Promise<void>;
48
+ setStatus(status: StreamingStatus, text?: string): Promise<void>;
49
+ addBlock(block: TurnOutputBlockInput): Promise<TurnOutputBlock>;
50
+ updateBlock(id: string, patch: Partial<Omit<TurnOutputBlockInput, 'id' | 'sequence'>>): Promise<TurnOutputBlock | null>;
51
+ completeBlock(id: string, patch?: Partial<Omit<TurnOutputBlockInput, 'id' | 'sequence' | 'status'>>): Promise<TurnOutputBlock | null>;
52
+ failBlock(id: string, patch?: Partial<Omit<TurnOutputBlockInput, 'id' | 'sequence' | 'status'>>): Promise<TurnOutputBlock | null>;
53
+ flush(status?: StreamingStatus): Promise<void>;
54
+ waitingInput(): Promise<void>;
55
+ interrupt(): Promise<void>;
56
+ clear(): Promise<void>;
57
+ /**
58
+ * Deliberate silence: blank the node (text '' and an EXPLICIT empty blocks
59
+ * array) and then delete it, so onStreamingCleared sees empty content and
60
+ * skips the salvage fallback. The empty array is load-bearing: merge writers
61
+ * (POST /streaming, OpenClaw PATCH) leave stale blocks behind when the key
62
+ * is absent, and the trigger then synthesizes salvage text from block titles.
63
+ */
64
+ blankAndClear(): Promise<void>;
65
+ }
66
+ export declare const DEFAULT_TURN_TRAIL_MAX_BLOCKS = 20;
67
+ export declare const DEFAULT_TURN_TRAIL_METADATA_BUDGET_BYTES = 2500;
68
+ export declare function buildBoundedTurnTrail(blocks: readonly TurnOutputBlock[], options?: BuildBoundedTurnTrailOptions): TurnOutputBlock[];
69
+ export declare function createTurnOutputController(options: TurnOutputControllerOptions): TurnOutputController;
@@ -0,0 +1,33 @@
1
+ import type { DeliveryIntent, TurnLifecycleState } from '../backend-contracts/index.js';
2
+ export { ACTIVE_TURN_STALE_THRESHOLD_MS, WAITING_INPUT_STALE_THRESHOLD_MS, getTurnStateStaleThresholdMs, isTurnOpen, isTurnStateStale, normalizeTurnMetadata, resolveTurnMessageSemantics, shouldPromoteConversationMessage, shouldTriggerAgentTurn, } from '../backend-contracts/index.js';
3
+ export type { DeliveryIntent, InboundDisposition, TriggerDecision, TurnLifecycleState, TurnMessageSemantics, TurnMetadata, } from '../backend-contracts/index.js';
4
+ export interface RuntimeCapabilities {
5
+ supportsInterrupt: boolean;
6
+ supportsInputInterrupt: boolean;
7
+ supportsQueue: boolean;
8
+ supportsInterleave: boolean;
9
+ supportsRequiresAction: boolean;
10
+ supportsNonFinalPermanentMessages: boolean;
11
+ }
12
+ export declare const FINAL_MESSAGE_HANDOFF_MS = 750;
13
+ export interface TurnState {
14
+ turnId?: string | null;
15
+ state: TurnLifecycleState;
16
+ queueDepth: number;
17
+ currentSpeakerId?: string | null;
18
+ lastAcceptedIntent?: DeliveryIntent | null;
19
+ activeMessageIds?: string[];
20
+ capabilities?: RuntimeCapabilities;
21
+ openedAt?: number;
22
+ turnUpdatedAt?: number | null;
23
+ updatedAt?: number;
24
+ completedAt?: number | null;
25
+ }
26
+ export declare const DEFAULT_RUNTIME_CAPABILITIES: RuntimeCapabilities;
27
+ /** The one optional proactive communication capability a runtime may expose. */
28
+ export interface HostAdmissionActionCapabilities {
29
+ communicate: boolean;
30
+ }
31
+ export declare const HOST_ADMISSION_ACTION_CAPABILITIES: HostAdmissionActionCapabilities;
32
+ export declare const HOST_ADMISSION_ACTIONS_DISABLED: HostAdmissionActionCapabilities;
33
+ export declare function normalizeTurnState(value: unknown): TurnState | null;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Turn verbosity — how much of a turn's middle the reader sees.
3
+ *
4
+ * `quiet` = the thinking indicator and the final message only: no `/streaming`
5
+ * narration and no runtime-generated per-tool-call step output. Emission the
6
+ * DEVELOPER asks for explicitly is not narration and survives — owner ruling
7
+ * D1: `replyProgress(text, { durable: true })` keeps its durable send, and only
8
+ * the implicit `/streaming` half is gated. Interaction requests and their
9
+ * `control` outcome receipts are real interactions, not steps, and are
10
+ * untouched in both modes; the duplicate trail rows that summarize them go with
11
+ * the trail (D4).
12
+ *
13
+ * Owner ruling 5, 2026-07-31 (docs/history/group-behavior-2026-08-01.md): configured
14
+ * by the AGENT DEVELOPER per host/SDK, never by Canon and never per
15
+ * conversation by users. ONE resolver so five integrations cannot disagree.
16
+ *
17
+ * This lives in @canonmsg/core rather than @canonmsg/backend-contracts because
18
+ * quiet mode has no server participant: it is emission control at the agent
19
+ * side. Nothing on the server reads it, no verb carries it, and clients need
20
+ * no change — they simply have nothing to render.
21
+ *
22
+ * Notes for the runtimes that consume this (the guards are per-integration):
23
+ * - Suppress by CALL SITE, never by `turnSemantics === 'progress'` (D5): the
24
+ * leading parts of a chunked final carry that semantic and are answer body.
25
+ * - `TurnOutputController`'s `mode: 'status'` silences the `/streaming` writes
26
+ * but does NOT suppress the trail — blocks still accumulate in memory and
27
+ * `getFinalTrail()` still returns them. Gate the trail separately, with
28
+ * `shouldPublishTurnTrail`, at every site that attaches it to a final.
29
+ * - A quiet turn still clears `/streaming` at turn open (a surviving node from
30
+ * an earlier turn would otherwise strand a stale bubble), still writes
31
+ * `/turn-state`, and still writes `/typing`. Quiet removes the narration,
32
+ * not the fact that the agent is working.
33
+ */
34
+ /** The resolved mode a turn runs in. Named `turnVerbosity`, never `verbosity` —
35
+ * `runtime.verbosity.set` is a different, user-facing primitive. */
36
+ export type TurnVerbosity = 'verbose' | 'quiet';
37
+ /** What a developer may write in config. `'auto'` === unset. */
38
+ export type TurnVerbosityConfig = TurnVerbosity | 'auto';
39
+ /**
40
+ * Hermes spells a direct chat `'dm'` (adapter.py `_chat_type_from_conversation`);
41
+ * the TS stack spells it `'direct'` and can also be `'unknown'` when the
42
+ * conversation fetch failed (host-runtime.ts HostInboundParticipantContext).
43
+ */
44
+ export type TurnVerbosityConversationType = 'direct' | 'dm' | 'group' | 'unknown';
45
+ /**
46
+ * The per-conversation-type defaults. `canon-hermes-plugin` will hand-port this
47
+ * map into Python — that package has no dependency on this one — and pin the
48
+ * two sides with a cross-language parity test, the way it already does for the
49
+ * turn-trail budgets and the group guidance wording.
50
+ */
51
+ export declare const DEFAULT_TURN_VERBOSITY_BY_CONVERSATION_TYPE: {
52
+ readonly direct: "verbose";
53
+ readonly group: "quiet";
54
+ readonly unknown: "verbose";
55
+ };
56
+ /**
57
+ * Does quiet also drop the margin turnTrail rows on the final?
58
+ * Owner ruling 5's open sub-question, answered YES. Named so a veto is a
59
+ * one-line flip here rather than a five-host revert.
60
+ */
61
+ export declare const QUIET_SUPPRESSES_TURN_TRAIL: boolean;
62
+ /**
63
+ * Folds every spelling a runtime might hand us onto the three keys the
64
+ * defaults map has. Accepts a raw string because the value arrives from
65
+ * provenance, a conversation fetch, or a Python-side payload.
66
+ */
67
+ export declare function normalizeTurnVerbosityConversationType(value: string | null | undefined): 'direct' | 'group' | 'unknown';
68
+ /**
69
+ * An explicit `'verbose'`/`'quiet'` wins outright; `'auto'`, unset and any
70
+ * unrecognized value fall through to the per-conversation-type default.
71
+ *
72
+ * `configured` goes through `parseTurnVerbosityConfig` on the way in, so a
73
+ * caller handing over a raw config value gets the same answer as one that
74
+ * pre-parsed. That matters because the escape hatch is the whole point of the
75
+ * field: an operator who writes `Verbose` in a group is opting OUT of quiet,
76
+ * and a byte-exact comparison would drop that back onto the group default —
77
+ * i.e. into silence — with nothing anywhere to warn about it.
78
+ */
79
+ export declare function resolveTurnVerbosity(input: {
80
+ configured?: TurnVerbosityConfig | null;
81
+ conversationType?: TurnVerbosityConversationType | null;
82
+ }): TurnVerbosity;
83
+ /**
84
+ * Shared parser for CLI flags, env vars and config files, so four TS runtimes
85
+ * agree on what a developer typed. Case-insensitive and trimmed.
86
+ *
87
+ * `null` means absent OR unrecognized — `''`, whitespace, `null` and `undefined`
88
+ * land there alongside a genuine typo. A host that warns on `null` must first
89
+ * check the raw input was a non-empty string, or a declared-but-empty
90
+ * `CANON_TURN_VERBOSITY=` (routine in launchd plists, Docker `ENV` and `.env`
91
+ * files) gets reported as a mistake the operator never made. Absent stays `null`
92
+ * rather than collapsing to `'auto'` so that the usual flag-then-env fallback,
93
+ * `parse(flag) ?? parse(env)`, keeps working.
94
+ */
95
+ export declare function parseTurnVerbosityConfig(raw: string | null | undefined): TurnVerbosityConfig | null;
96
+ /** Convenience for the trail attach sites; folds the ruling above in. */
97
+ export declare function shouldPublishTurnTrail(verbosity: TurnVerbosity): boolean;