@te-river/opencode-team-mode 1.6.2 → 1.7.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 (198) hide show
  1. package/README.md +117 -118
  2. package/README.zh-CN.md +98 -100
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +89 -79
  5. package/dist/agents.js.map +1 -1
  6. package/dist/approval-gate.d.ts +8 -9
  7. package/dist/approval-gate.d.ts.map +1 -1
  8. package/dist/approval-gate.js +13 -14
  9. package/dist/approval-gate.js.map +1 -1
  10. package/dist/capabilities.d.ts +11 -37
  11. package/dist/capabilities.d.ts.map +1 -1
  12. package/dist/capabilities.js +11 -141
  13. package/dist/capabilities.js.map +1 -1
  14. package/dist/commands.js +1 -1
  15. package/dist/envprotect/hook.d.ts +12 -31
  16. package/dist/envprotect/hook.d.ts.map +1 -1
  17. package/dist/envprotect/hook.js +13 -91
  18. package/dist/envprotect/hook.js.map +1 -1
  19. package/dist/envprotect/patterns.d.ts +6 -4
  20. package/dist/envprotect/patterns.d.ts.map +1 -1
  21. package/dist/envprotect/patterns.js +6 -4
  22. package/dist/envprotect/patterns.js.map +1 -1
  23. package/dist/envprotect.d.ts +1 -1
  24. package/dist/envprotect.d.ts.map +1 -1
  25. package/dist/envprotect.js +1 -1
  26. package/dist/envprotect.js.map +1 -1
  27. package/dist/host/v2-browser-gate.d.ts +19 -1
  28. package/dist/host/v2-browser-gate.d.ts.map +1 -1
  29. package/dist/host/v2-browser-gate.js +47 -6
  30. package/dist/host/v2-browser-gate.js.map +1 -1
  31. package/dist/host/v2-capabilities.d.ts +33 -0
  32. package/dist/host/v2-capabilities.d.ts.map +1 -1
  33. package/dist/host/v2-capabilities.js +50 -1
  34. package/dist/host/v2-capabilities.js.map +1 -1
  35. package/dist/host/v2-compaction.d.ts +129 -0
  36. package/dist/host/v2-compaction.d.ts.map +1 -0
  37. package/dist/host/v2-compaction.js +346 -0
  38. package/dist/host/v2-compaction.js.map +1 -0
  39. package/dist/host/v2-default-agent.d.ts +37 -0
  40. package/dist/host/v2-default-agent.d.ts.map +1 -0
  41. package/dist/host/v2-default-agent.js +128 -0
  42. package/dist/host/v2-default-agent.js.map +1 -0
  43. package/dist/host/v2-events.d.ts +2 -0
  44. package/dist/host/v2-events.d.ts.map +1 -1
  45. package/dist/host/v2-events.js +27 -0
  46. package/dist/host/v2-events.js.map +1 -1
  47. package/dist/host/v2-guard.d.ts +178 -0
  48. package/dist/host/v2-guard.d.ts.map +1 -1
  49. package/dist/host/v2-guard.js +324 -8
  50. package/dist/host/v2-guard.js.map +1 -1
  51. package/dist/host/v2-offload.d.ts +1 -1
  52. package/dist/host/v2-offload.js +2 -2
  53. package/dist/host/v2-permissions.d.ts +45 -44
  54. package/dist/host/v2-permissions.d.ts.map +1 -1
  55. package/dist/host/v2-permissions.js +48 -49
  56. package/dist/host/v2-permissions.js.map +1 -1
  57. package/dist/host/v2-probe-chain.d.ts +93 -0
  58. package/dist/host/v2-probe-chain.d.ts.map +1 -0
  59. package/dist/host/v2-probe-chain.js +146 -0
  60. package/dist/host/v2-probe-chain.js.map +1 -0
  61. package/dist/host/v2-prune.d.ts +157 -0
  62. package/dist/host/v2-prune.d.ts.map +1 -0
  63. package/dist/host/v2-prune.js +507 -0
  64. package/dist/host/v2-prune.js.map +1 -0
  65. package/dist/host/v2-retry.d.ts +143 -0
  66. package/dist/host/v2-retry.d.ts.map +1 -0
  67. package/dist/host/v2-retry.js +315 -0
  68. package/dist/host/v2-retry.js.map +1 -0
  69. package/dist/host/v2-scope.d.ts.map +1 -1
  70. package/dist/host/v2-scope.js +14 -7
  71. package/dist/host/v2-scope.js.map +1 -1
  72. package/dist/host/v2-session-client.d.ts +24 -0
  73. package/dist/host/v2-session-client.d.ts.map +1 -1
  74. package/dist/host/v2-session-client.js +243 -3
  75. package/dist/host/v2-session-client.js.map +1 -1
  76. package/dist/host/v2-session.d.ts +72 -1
  77. package/dist/host/v2-session.d.ts.map +1 -1
  78. package/dist/host/v2-session.js +154 -10
  79. package/dist/host/v2-session.js.map +1 -1
  80. package/dist/host/v2-tool.d.ts +2 -3
  81. package/dist/host/v2-tool.d.ts.map +1 -1
  82. package/dist/host/v2-tool.js +2 -3
  83. package/dist/host/v2-tool.js.map +1 -1
  84. package/dist/host/v2-types.d.ts +25 -0
  85. package/dist/host/v2-types.d.ts.map +1 -1
  86. package/dist/host/v2.d.ts +14 -12
  87. package/dist/host/v2.d.ts.map +1 -1
  88. package/dist/host/v2.js +500 -73
  89. package/dist/host/v2.js.map +1 -1
  90. package/dist/identity.d.ts +27 -0
  91. package/dist/identity.d.ts.map +1 -0
  92. package/dist/identity.js +34 -0
  93. package/dist/identity.js.map +1 -0
  94. package/dist/index.d.ts +9 -24
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +17 -27
  97. package/dist/index.js.map +1 -1
  98. package/dist/prompts/lead.d.ts +1 -1
  99. package/dist/prompts/lead.d.ts.map +1 -1
  100. package/dist/prompts/lead.js +38 -25
  101. package/dist/prompts/lead.js.map +1 -1
  102. package/dist/prompts/shared.d.ts +2 -2
  103. package/dist/prompts/shared.d.ts.map +1 -1
  104. package/dist/prompts/shared.js +66 -56
  105. package/dist/prompts/shared.js.map +1 -1
  106. package/dist/prompts/specialists.d.ts +2 -2
  107. package/dist/prompts/specialists.d.ts.map +1 -1
  108. package/dist/prompts/specialists.js +53 -83
  109. package/dist/prompts/specialists.js.map +1 -1
  110. package/dist/tm/args-schema.d.ts +7 -32
  111. package/dist/tm/args-schema.d.ts.map +1 -1
  112. package/dist/tm/args-schema.js +12 -153
  113. package/dist/tm/args-schema.js.map +1 -1
  114. package/dist/tm/board.d.ts +10 -9
  115. package/dist/tm/board.d.ts.map +1 -1
  116. package/dist/tm/board.js +11 -10
  117. package/dist/tm/board.js.map +1 -1
  118. package/dist/tm/config-files.d.ts +81 -0
  119. package/dist/tm/config-files.d.ts.map +1 -0
  120. package/dist/tm/config-files.js +209 -0
  121. package/dist/tm/config-files.js.map +1 -0
  122. package/dist/tm/config-layers.d.ts +117 -0
  123. package/dist/tm/config-layers.d.ts.map +1 -0
  124. package/dist/tm/config-layers.js +320 -0
  125. package/dist/tm/config-layers.js.map +1 -0
  126. package/dist/tm/config.d.ts +10 -101
  127. package/dist/tm/config.d.ts.map +1 -1
  128. package/dist/tm/config.js +17 -71
  129. package/dist/tm/config.js.map +1 -1
  130. package/dist/tm/dispatch.d.ts +115 -21
  131. package/dist/tm/dispatch.d.ts.map +1 -1
  132. package/dist/tm/dispatch.js +424 -67
  133. package/dist/tm/dispatch.js.map +1 -1
  134. package/dist/tm/egress.d.ts +19 -7
  135. package/dist/tm/egress.d.ts.map +1 -1
  136. package/dist/tm/egress.js +21 -9
  137. package/dist/tm/egress.js.map +1 -1
  138. package/dist/tm/index.d.ts +23 -20
  139. package/dist/tm/index.d.ts.map +1 -1
  140. package/dist/tm/index.js +117 -116
  141. package/dist/tm/index.js.map +1 -1
  142. package/dist/tm/ledger.d.ts +9 -2
  143. package/dist/tm/ledger.d.ts.map +1 -1
  144. package/dist/tm/ledger.js +4 -1
  145. package/dist/tm/ledger.js.map +1 -1
  146. package/dist/tm/perm-ask.d.ts +3 -3
  147. package/dist/tm/perm-ask.d.ts.map +1 -1
  148. package/dist/tm/perm-ask.js +3 -3
  149. package/dist/tm/perm-ask.js.map +1 -1
  150. package/dist/tm/pipelines.d.ts +12 -11
  151. package/dist/tm/pipelines.d.ts.map +1 -1
  152. package/dist/tm/pipelines.js +40 -207
  153. package/dist/tm/pipelines.js.map +1 -1
  154. package/dist/tm/preview.d.ts +1 -1
  155. package/dist/tm/preview.js +3 -3
  156. package/dist/tm/preview.js.map +1 -1
  157. package/dist/tm/refs.d.ts +31 -4
  158. package/dist/tm/refs.d.ts.map +1 -1
  159. package/dist/tm/refs.js +48 -4
  160. package/dist/tm/refs.js.map +1 -1
  161. package/dist/tm/result.d.ts +1 -1
  162. package/dist/tm/result.d.ts.map +1 -1
  163. package/dist/tm/result.js +4 -3
  164. package/dist/tm/result.js.map +1 -1
  165. package/dist/tm/search.d.ts +2 -2
  166. package/dist/tm/search.js +7 -7
  167. package/dist/tm/search.js.map +1 -1
  168. package/dist/tm/serp-loop.d.ts +19 -7
  169. package/dist/tm/serp-loop.d.ts.map +1 -1
  170. package/dist/tm/serp-loop.js +24 -9
  171. package/dist/tm/serp-loop.js.map +1 -1
  172. package/dist/tm/stats.d.ts +12 -27
  173. package/dist/tm/stats.d.ts.map +1 -1
  174. package/dist/tm/stats.js +43 -45
  175. package/dist/tm/stats.js.map +1 -1
  176. package/dist/tm/store.d.ts +18 -5
  177. package/dist/tm/store.d.ts.map +1 -1
  178. package/dist/tm/store.js +39 -9
  179. package/dist/tm/store.js.map +1 -1
  180. package/dist/tm/tools.d.ts +7 -5
  181. package/dist/tm/tools.d.ts.map +1 -1
  182. package/dist/tm/tools.js +10 -41
  183. package/dist/tm/tools.js.map +1 -1
  184. package/dist/tm/webfetch.d.ts +1 -1
  185. package/dist/tm/webfetch.d.ts.map +1 -1
  186. package/dist/tm/webfetch.js +38 -23
  187. package/dist/tm/webfetch.js.map +1 -1
  188. package/dist/types.d.ts +40 -123
  189. package/dist/types.d.ts.map +1 -1
  190. package/dist/types.js +7 -21
  191. package/dist/types.js.map +1 -1
  192. package/docs/installation-v2.md +109 -33
  193. package/docs/installation.md +9 -0
  194. package/docs/research/browser-pane.md +5 -0
  195. package/docs/v2-port-notes.md +87 -0
  196. package/package.json +1 -1
  197. package/scripts/gen-v2-config.mjs +246 -94
  198. package/scripts/lib/fake-ctx.mjs +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-prune.js","sourceRoot":"","sources":["../../src/host/v2-prune.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * 错峰重试 (#49 feature 3) �?the honest half of "back off when the provider
3
+ * throttles us".
4
+ *
5
+ * THE HONEST BOUNDARY, stated first because everything below is shaped by it:
6
+ * a plugin has NO seam that intercepts the model's own retry. We cannot delay a
7
+ * request the model decides to send, and we must not pretend to. So this layer
8
+ * does exactly three things, and says so:
9
+ *
10
+ * 1. RECOGNISE a provider throttle from the event feed (`session.error`), by
11
+ * matching explicit signatures only �?never by guessing. A text that does
12
+ * not carry a known signature classifies as `unknown` and changes nothing.
13
+ * 2. COMPUTE an exact wait (backoff × jitter, capped) and inject it into the
14
+ * NEXT request's system prompt as an actionable sentence ("�?N 秒再�?),
15
+ * not a vague "try later". The directive is consumed once, so a host that
16
+ * replays the hook in-process cannot duplicate it.
17
+ * 3. COOL DOWN: after `breakAfter` consecutive throttle errors the breaker
18
+ * trips and new `subagent` dispatches are DENIED for `cooldownMs`, on the
19
+ * same `permission.evaluate` seam the concurrency cap uses. Both only ever
20
+ * make a rule stricter, so they compose without fighting.
21
+ *
22
+ * Discipline (the same as every other v2 layer): Team-scoped, never throws (a
23
+ * failure allows the call through and is counted), never rewrites args, and
24
+ * idempotent under the host's in-process hook replay.
25
+ */
26
+ import type { TeamScope } from "./v2-scope.js";
27
+ import type { V2Context, V2Registration } from "./v2-types.js";
28
+ /** The stable prefix a human (and a test) can recognise the injected line by. */
29
+ export declare const RETRY_MARKER = "## Team Retry";
30
+ export type ProviderErrorKind = "quota" | "rate" | "transient" | "unknown";
31
+ export interface ProviderErrorClass {
32
+ kind: ProviderErrorKind;
33
+ /** A `Retry-After`-style hint parsed out of the text, in ms; 0 when absent. */
34
+ retryAfterMs: number;
35
+ }
36
+ /**
37
+ * Classify a provider error from its TEXT alone. Explicit signatures only:
38
+ * a text with no known signature is `unknown` and must never trip anything �? * mislabelling an ordinary error as a quota error is the failure mode the plan
39
+ * names, and the way to avoid it is to require the signature.
40
+ *
41
+ * Order matters: quota before rate before transient, because a message can carry
42
+ * more than one token (e.g. "quota exceeded (429)") and the most specific class
43
+ * is the useful one.
44
+ */
45
+ export declare function classifyProviderError(text: unknown): ProviderErrorClass;
46
+ export interface RetryConfig {
47
+ enabled: boolean;
48
+ baseMs: number;
49
+ maxMs: number;
50
+ jitter: number;
51
+ breakAfter: number;
52
+ cooldownMs: number;
53
+ }
54
+ export declare const RETRY_DEFAULTS: RetryConfig;
55
+ /**
56
+ * Resolve the knobs. An ILLEGAL value falls back to its default �?it never
57
+ * silently disables the feature ("非法值回退默认,不静默关闸"). Only an explicit
58
+ * `TM_RETRY=off` turns it off.
59
+ */
60
+ export declare function resolveRetryConfig(env?: Record<string, string | undefined>): RetryConfig;
61
+ /**
62
+ * `delay = min(base * 2^attempt, max) * (1 ± jitter)`, rounded to ms and never
63
+ * negative. `attempt` is 0-based, so the first error waits `base`.
64
+ */
65
+ export declare function backoffMs(attempt: number, baseMs: number, maxMs: number, jitter: number, random: () => number): number;
66
+ export interface RetryReport {
67
+ enabled: boolean;
68
+ quotaSeen: number;
69
+ rateSeen: number;
70
+ transientSeen: number;
71
+ unknownSeen: number;
72
+ /** times the consecutive-error streak reached `breakAfter` and the breaker tripped */
73
+ breakTrips: number;
74
+ /** cooldown windows entered (a trip enters one; an error during a cooldown extends it) */
75
+ cooldowns: number;
76
+ lastDelayMs: number;
77
+ directivesInjected: number;
78
+ cooldownDenied: number;
79
+ foreignSkipped: number;
80
+ threw: number;
81
+ }
82
+ export interface RetryDirective {
83
+ text: string;
84
+ delayMs: number;
85
+ }
86
+ export interface RetryGovernor {
87
+ observe(text: unknown): ProviderErrorClass & {
88
+ delayMs: number;
89
+ };
90
+ observeEvent(raw: unknown): void;
91
+ /** Peek at the pending directive without consuming it. */
92
+ directive(): RetryDirective | null;
93
+ /** Consume the pending directive (the injection hook's one-shot read). */
94
+ takeDirective(): RetryDirective | null;
95
+ inCooldown(): boolean;
96
+ /** ms left in the current cooldown window (0 when not cooling down). */
97
+ cooldownRemainingMs(): number;
98
+ /** The configured consecutive-error threshold, for the refusal wording. */
99
+ readonly breakAfter: number;
100
+ readonly report: RetryReport;
101
+ reset(): void;
102
+ }
103
+ export interface RetryGovernorOptions extends Partial<RetryConfig> {
104
+ now?: () => number;
105
+ random?: () => number;
106
+ /** Fired for each classification / breaker outcome (the trajectory sink). */
107
+ onEvent?: (row: Record<string, unknown>) => void;
108
+ }
109
+ /**
110
+ * The state machine. Pure except for the injected `now`/`random`, so a test can
111
+ * pin the backoff sequence, the jitter band and the breaker deterministically.
112
+ */
113
+ export declare function createRetryGovernor(opts?: RetryGovernorOptions): RetryGovernor;
114
+ /**
115
+ * Pull the error text out of whatever the event feed handed us. Defensive by
116
+ * design: the `session.error` payload shape is not a promised interface, so we
117
+ * read the known keys and fall back to a bounded JSON stringify rather than
118
+ * assuming one shape.
119
+ */
120
+ export declare function errorTextOf(raw: unknown): string;
121
+ export interface RetryLayerInput {
122
+ scope?: TeamScope;
123
+ governor: RetryGovernor;
124
+ /** Fired for each observable outcome so the personality can write the
125
+ * `step_id:"v2-retry"` trajectory line — the layer owns no store. */
126
+ onEvent?: (row: Record<string, unknown>) => void;
127
+ }
128
+ export interface RetryLayer {
129
+ registrations: V2Registration[];
130
+ report: RetryReport;
131
+ }
132
+ /**
133
+ * Register the two hooks the retry layer owns:
134
+ * · `session.hook("context")` �?inject the pending directive (exact seconds)
135
+ * into the NEXT request's system prompt, once, Team-scoped.
136
+ * · `permission.hook("evaluate")` �?deny a `subagent` dispatch while the
137
+ * breaker's cooldown is active, Team-scoped, only ever stricter.
138
+ *
139
+ * Nothing here throws into a hook: a failure is counted and the call is allowed
140
+ * through (a throughput guard that fails OPEN is the honest failure mode).
141
+ */
142
+ export declare function applyV2RetryGovernor(ctx: V2Context, input: RetryLayerInput): Promise<RetryLayer>;
143
+ //# sourceMappingURL=v2-retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-retry.d.ts","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ /**
2
+ * 错峰重试 (#49 feature 3) �?the honest half of "back off when the provider
3
+ * throttles us".
4
+ *
5
+ * THE HONEST BOUNDARY, stated first because everything below is shaped by it:
6
+ * a plugin has NO seam that intercepts the model's own retry. We cannot delay a
7
+ * request the model decides to send, and we must not pretend to. So this layer
8
+ * does exactly three things, and says so:
9
+ *
10
+ * 1. RECOGNISE a provider throttle from the event feed (`session.error`), by
11
+ * matching explicit signatures only �?never by guessing. A text that does
12
+ * not carry a known signature classifies as `unknown` and changes nothing.
13
+ * 2. COMPUTE an exact wait (backoff × jitter, capped) and inject it into the
14
+ * NEXT request's system prompt as an actionable sentence ("�?N 秒再�?),
15
+ * not a vague "try later". The directive is consumed once, so a host that
16
+ * replays the hook in-process cannot duplicate it.
17
+ * 3. COOL DOWN: after `breakAfter` consecutive throttle errors the breaker
18
+ * trips and new `subagent` dispatches are DENIED for `cooldownMs`, on the
19
+ * same `permission.evaluate` seam the concurrency cap uses. Both only ever
20
+ * make a rule stricter, so they compose without fighting.
21
+ *
22
+ * Discipline (the same as every other v2 layer): Team-scoped, never throws (a
23
+ * failure allows the call through and is counted), never rewrites args, and
24
+ * idempotent under the host's in-process hook replay.
25
+ */
26
+ /** The stable prefix a human (and a test) can recognise the injected line by. */
27
+ export const RETRY_MARKER = "## Team Retry";
28
+ /**
29
+ * Classify a provider error from its TEXT alone. Explicit signatures only:
30
+ * a text with no known signature is `unknown` and must never trip anything �? * mislabelling an ordinary error as a quota error is the failure mode the plan
31
+ * names, and the way to avoid it is to require the signature.
32
+ *
33
+ * Order matters: quota before rate before transient, because a message can carry
34
+ * more than one token (e.g. "quota exceeded (429)") and the most specific class
35
+ * is the useful one.
36
+ */
37
+ export function classifyProviderError(text) {
38
+ const s = typeof text === "string" ? text : "";
39
+ if (!s.trim())
40
+ return { kind: "unknown", retryAfterMs: 0 };
41
+ const lower = s.toLowerCase();
42
+ const retryAfterMs = parseRetryAfter(s);
43
+ if (/allocated quota exceeded|quota exceeded|insufficient_quota|exceeded.*quota|quota.*exceed|配额|余额不足/.test(lower)) {
44
+ return { kind: "quota", retryAfterMs };
45
+ }
46
+ if (/\b429\b|too many requests|rate[ _-]?limit|rate_limit_exceeded|限流|请求过于频繁/.test(lower)) {
47
+ return { kind: "rate", retryAfterMs };
48
+ }
49
+ if (/\b50[0-4]\b|overloaded|temporarily unavailable|service unavailable|bad gateway|gateway timeout|timed? ?out|timeout|econnreset|etimedout|socket hang up/.test(lower)) {
50
+ return { kind: "transient", retryAfterMs };
51
+ }
52
+ return { kind: "unknown", retryAfterMs };
53
+ }
54
+ /** `Retry-After: 30` / `retry after 30 seconds` �?30 000 ms. Absent �?0. */
55
+ function parseRetryAfter(s) {
56
+ const m = /retry[-_ ]?after["'\s:=]+(\d+)/i.exec(s);
57
+ if (!m)
58
+ return 0;
59
+ const n = Number(m[1]);
60
+ return Number.isFinite(n) && n >= 0 ? n * 1000 : 0;
61
+ }
62
+ export const RETRY_DEFAULTS = {
63
+ enabled: true,
64
+ baseMs: 5000,
65
+ maxMs: 60000,
66
+ jitter: 0.3,
67
+ breakAfter: 5,
68
+ cooldownMs: 60000,
69
+ };
70
+ const isOff = (raw) => /^(off|false|0|no)$/i.test(String(raw ?? "").trim());
71
+ /**
72
+ * Resolve the knobs. An ILLEGAL value falls back to its default �?it never
73
+ * silently disables the feature ("非法值回退默认,不静默关闸"). Only an explicit
74
+ * `TM_RETRY=off` turns it off.
75
+ */
76
+ export function resolveRetryConfig(env = process.env) {
77
+ const enabled = !isOff(env.TM_RETRY);
78
+ const num = (raw, fallback, min, max) => {
79
+ const n = Number(raw);
80
+ return Number.isFinite(n) && n >= min && n <= max ? n : fallback;
81
+ };
82
+ const baseMs = num(env.TM_RETRY_BASE_MS, RETRY_DEFAULTS.baseMs, 1, 3_600_000);
83
+ const maxMs = num(env.TM_RETRY_MAX_MS, RETRY_DEFAULTS.maxMs, 1, 3_600_000);
84
+ const jitter = num(env.TM_RETRY_JITTER, RETRY_DEFAULTS.jitter, 0, 0.95);
85
+ const breakAfter = Math.round(num(env.TM_RETRY_BREAK_AFTER, RETRY_DEFAULTS.breakAfter, 1, 1000));
86
+ const cooldownMs = num(env.TM_RETRY_COOLDOWN_MS, RETRY_DEFAULTS.cooldownMs, 0, 3_600_000);
87
+ return { enabled, baseMs, maxMs, jitter, breakAfter, cooldownMs };
88
+ }
89
+ /**
90
+ * `delay = min(base * 2^attempt, max) * (1 ± jitter)`, rounded to ms and never
91
+ * negative. `attempt` is 0-based, so the first error waits `base`.
92
+ */
93
+ export function backoffMs(attempt, baseMs, maxMs, jitter, random) {
94
+ const a = Number.isFinite(attempt) && attempt > 0 ? Math.floor(attempt) : 0;
95
+ const raw = Math.min(baseMs * Math.pow(2, a), maxMs);
96
+ const j = Number.isFinite(jitter) && jitter > 0 ? Math.min(jitter, 0.95) : 0;
97
+ const factor = 1 + (random() * 2 - 1) * j;
98
+ return Math.max(0, Math.round(raw * factor));
99
+ }
100
+ const isThrottle = (kind) => kind === "quota" || kind === "rate";
101
+ const kindLabel = (kind) => kind === "quota" ? "配额" : kind === "rate" ? "限流" : kind === "transient" ? "临时" : "未知";
102
+ /**
103
+ * The state machine. Pure except for the injected `now`/`random`, so a test can
104
+ * pin the backoff sequence, the jitter band and the breaker deterministically.
105
+ */
106
+ export function createRetryGovernor(opts = {}) {
107
+ const cfg = { ...RETRY_DEFAULTS, ...opts };
108
+ const now = opts.now ?? (() => Date.now());
109
+ const random = opts.random ?? (() => Math.random());
110
+ const emit = (row) => {
111
+ try {
112
+ opts.onEvent?.(row);
113
+ }
114
+ catch {
115
+ /* the trajectory line is an extra, never a reason to fail the call */
116
+ }
117
+ };
118
+ const report = {
119
+ enabled: cfg.enabled,
120
+ quotaSeen: 0,
121
+ rateSeen: 0,
122
+ transientSeen: 0,
123
+ unknownSeen: 0,
124
+ breakTrips: 0,
125
+ cooldowns: 0,
126
+ lastDelayMs: 0,
127
+ directivesInjected: 0,
128
+ cooldownDenied: 0,
129
+ foreignSkipped: 0,
130
+ threw: 0,
131
+ };
132
+ let streak = 0;
133
+ let cooldownUntil = 0;
134
+ let pending = null;
135
+ const inCooldown = () => now() < cooldownUntil;
136
+ const buildDirective = (kind, delayMs) => {
137
+ const secs = Math.max(1, Math.round(delayMs / 1000));
138
+ const text = inCooldown()
139
+ ? `${RETRY_MARKER}(配额保护,不是故障)\n连续 ${cfg.breakAfter} 次配�?限流错误,已进入冷却:请等待 ${secs} 秒后再发下一次请求,期间新的子代理派发会被拒绝。这是配额保护,不是插件故障;可�?TM_RETRY=off 关闭。`
140
+ : `${RETRY_MARKER}(配额保护,不是故障)\n检测到 provider ${kindLabel(kind)} 错误:请等待 ${secs} 秒后再发下一次请求。这是配额保护,不是插件故障;可�?TM_RETRY=off 关闭。`;
141
+ return { text, delayMs };
142
+ };
143
+ const observe = (text) => {
144
+ const cls = classifyProviderError(text);
145
+ if (cls.kind === "unknown") {
146
+ report.unknownSeen++;
147
+ return { ...cls, delayMs: 0 };
148
+ }
149
+ if (cls.kind === "quota")
150
+ report.quotaSeen++;
151
+ else if (cls.kind === "rate")
152
+ report.rateSeen++;
153
+ else
154
+ report.transientSeen++;
155
+ streak++;
156
+ const delayMs = Math.max(backoffMs(streak - 1, cfg.baseMs, cfg.maxMs, cfg.jitter, random), cls.retryAfterMs);
157
+ report.lastDelayMs = delayMs;
158
+ emit({ event: "classified", kind: cls.kind, delay_ms: delayMs, streak });
159
+ // The breaker: consecutive errors, and the current one is a throttle class.
160
+ if (isThrottle(cls.kind) && streak >= cfg.breakAfter) {
161
+ const wasIn = inCooldown();
162
+ cooldownUntil = now() + cfg.cooldownMs;
163
+ report.cooldowns++;
164
+ if (!wasIn)
165
+ report.breakTrips++;
166
+ streak = 0;
167
+ emit({ event: "cooldown", break_trips: report.breakTrips, cooldowns: report.cooldowns, cooldown_ms: cfg.cooldownMs });
168
+ }
169
+ pending = buildDirective(cls.kind, delayMs);
170
+ return { ...cls, delayMs };
171
+ };
172
+ return {
173
+ observe,
174
+ observeEvent(raw) {
175
+ const text = errorTextOf(raw);
176
+ if (text)
177
+ observe(text);
178
+ },
179
+ directive: () => pending,
180
+ takeDirective() {
181
+ const d = pending;
182
+ pending = null;
183
+ return d;
184
+ },
185
+ inCooldown,
186
+ cooldownRemainingMs: () => Math.max(0, cooldownUntil - now()),
187
+ breakAfter: cfg.breakAfter,
188
+ report,
189
+ reset() {
190
+ streak = 0;
191
+ cooldownUntil = 0;
192
+ pending = null;
193
+ },
194
+ };
195
+ }
196
+ /**
197
+ * Pull the error text out of whatever the event feed handed us. Defensive by
198
+ * design: the `session.error` payload shape is not a promised interface, so we
199
+ * read the known keys and fall back to a bounded JSON stringify rather than
200
+ * assuming one shape.
201
+ */
202
+ export function errorTextOf(raw) {
203
+ if (typeof raw === "string")
204
+ return raw;
205
+ if (!raw || typeof raw !== "object")
206
+ return "";
207
+ const o = raw;
208
+ const parts = [];
209
+ const push = (v) => {
210
+ if (typeof v === "string" && v)
211
+ parts.push(v);
212
+ };
213
+ push(o.message);
214
+ push(o.text);
215
+ push(o.name);
216
+ push(o.error);
217
+ const props = (o.properties ?? o.payload ?? o.data);
218
+ if (props && typeof props === "object") {
219
+ push(props.message);
220
+ push(props.text);
221
+ push(props.error);
222
+ push(props.name);
223
+ const err = props.error;
224
+ if (err && typeof err === "object") {
225
+ push(err.message);
226
+ push(err.name);
227
+ push(err.type);
228
+ }
229
+ }
230
+ if (!parts.length) {
231
+ try {
232
+ parts.push(JSON.stringify(raw));
233
+ }
234
+ catch {
235
+ /* an unserializable payload carries no text we can classify */
236
+ }
237
+ }
238
+ return parts.join(" ");
239
+ }
240
+ const rank = { allow: 0, ask: 1, deny: 2 };
241
+ /**
242
+ * Register the two hooks the retry layer owns:
243
+ * · `session.hook("context")` �?inject the pending directive (exact seconds)
244
+ * into the NEXT request's system prompt, once, Team-scoped.
245
+ * · `permission.hook("evaluate")` �?deny a `subagent` dispatch while the
246
+ * breaker's cooldown is active, Team-scoped, only ever stricter.
247
+ *
248
+ * Nothing here throws into a hook: a failure is counted and the call is allowed
249
+ * through (a throughput guard that fails OPEN is the honest failure mode).
250
+ */
251
+ export async function applyV2RetryGovernor(ctx, input) {
252
+ const { scope, governor } = input;
253
+ const report = governor.report;
254
+ const registrations = [];
255
+ const session = ctx.session;
256
+ if (session && typeof session.hook === "function") {
257
+ registrations.push(await session.hook("context", (event) => {
258
+ try {
259
+ if (scope && scope.count(scope.decide(event)) !== "ours")
260
+ return;
261
+ scope?.learn(event?.agent, event.sessionID);
262
+ if (!Array.isArray(event?.system))
263
+ return;
264
+ const d = governor.takeDirective();
265
+ if (!d)
266
+ return;
267
+ event.system.push({ type: "text", text: d.text });
268
+ report.directivesInjected++;
269
+ try {
270
+ input.onEvent?.({ event: "injected", delay_ms: d.delayMs });
271
+ }
272
+ catch {
273
+ /* the trajectory line is an extra */
274
+ }
275
+ }
276
+ catch {
277
+ report.threw++;
278
+ }
279
+ }));
280
+ }
281
+ const permission = ctx.permission;
282
+ if (permission && typeof permission.hook === "function") {
283
+ registrations.push(await permission.hook("evaluate", (event) => {
284
+ try {
285
+ if (String(event?.action ?? "") !== "subagent")
286
+ return;
287
+ if (scope && scope.count(scope.decide(event)) !== "ours") {
288
+ report.foreignSkipped++;
289
+ return;
290
+ }
291
+ if (!governor.inCooldown())
292
+ return;
293
+ report.cooldownDenied++;
294
+ try {
295
+ input.onEvent?.({ event: "denied", remaining_ms: governor.cooldownRemainingMs() });
296
+ }
297
+ catch {
298
+ /* the trajectory line is an extra */
299
+ }
300
+ const secs = Math.max(1, Math.round(governor.cooldownRemainingMs() / 1000));
301
+ const message = `配额保护:连�?${governor.breakAfter} 次配�?限流错误,已进入冷却(剩余约 ${secs} 秒)。期间不派发新的子代理;这是配额保护,不是故障。可�?TM_RETRY=off 关闭。`;
302
+ // Only ever stricter: a host that already denied keeps its decision.
303
+ if (rank.deny <= rank[event.effect ?? "allow"])
304
+ return;
305
+ event.effect = "deny";
306
+ event.message = message;
307
+ }
308
+ catch {
309
+ report.threw++;
310
+ }
311
+ }));
312
+ }
313
+ return { registrations, report };
314
+ }
315
+ //# sourceMappingURL=v2-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-retry.js","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"v2-scope.d.ts","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf;gEAC4D;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;IAC/B,MAAM,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAA;IACxF,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,iFAAiF;IACjF,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAAA;CAC3C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAyBlE"}
1
+ {"version":3,"file":"v2-scope.d.ts","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf;gEAC4D;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;IAC/B,MAAM,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAA;IACxF,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,iFAAiF;IACjF,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAAA;CAC3C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CA+BlE"}
@@ -25,23 +25,30 @@
25
25
  * pair and a later `execute.after` for the same session resolves even if the host
26
26
  * left `agent` off that event.
27
27
  */
28
+ import { normalizeAgentName } from "../identity.js";
28
29
  export function createTeamScope(names) {
29
- const set = new Set([...names].map(String));
30
+ // #38: normalize every name to lower case so `team` and `Team` are the same
31
+ // role. The set is the canonical (normalized) form; lookups normalize too.
32
+ const set = new Set([...names].map(normalizeAgentName).filter(Boolean));
30
33
  const bySession = new Map();
31
34
  const report = { ours: 0, foreign: 0, unknown: 0 };
32
35
  const scope = {
33
36
  names: set,
34
- isOurs: (agent) => typeof agent === "string" && set.has(agent),
37
+ isOurs: (agent) => {
38
+ const n = normalizeAgentName(agent);
39
+ return n !== "" && set.has(n);
40
+ },
35
41
  learn(agent, sessionID) {
36
42
  if (typeof sessionID !== "string" || !sessionID)
37
43
  return;
38
- if (typeof agent === "string" && set.has(agent))
39
- bySession.set(sessionID, agent);
44
+ const n = normalizeAgentName(agent);
45
+ if (n !== "" && set.has(n))
46
+ bySession.set(sessionID, n);
40
47
  },
41
48
  decide(event) {
42
- const agent = event?.agent;
43
- if (typeof agent === "string" && agent)
44
- return set.has(agent) ? "ours" : "foreign";
49
+ const n = normalizeAgentName(event?.agent);
50
+ if (n !== "")
51
+ return set.has(n) ? "ours" : "foreign";
45
52
  const sid = event?.sessionID;
46
53
  if (typeof sid === "string" && bySession.has(sid))
47
54
  return "ours";
@@ -1 +1 @@
1
- {"version":3,"file":"v2-scope.js","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAwBH,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC3C,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IACjE,MAAM,KAAK,GAAc;QACvB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9D,KAAK,CAAC,KAAK,EAAE,SAAS;YACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS;gBAAE,OAAM;YACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAClF,CAAC;QACD,MAAM,CAAC,KAAK;YACV,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,CAAA;YAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YAClF,MAAM,GAAG,GAAG,KAAK,EAAE,SAAS,CAAA;YAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAA;YAChE,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;YACjB,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,MAAM;KACP,CAAA;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"v2-scope.js","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAwBnD,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACvE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC3C,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IACjE,MAAM,KAAK,GAAc;QACvB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,SAAS;YACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS;gBAAE,OAAM;YACvD,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,MAAM,CAAC,KAAK;YACV,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YACpD,MAAM,GAAG,GAAG,KAAK,EAAE,SAAS,CAAA;YAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAA;YAChE,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;YACjB,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,MAAM;KACP,CAAA;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -70,6 +70,30 @@ export interface V2SessionReaderReport {
70
70
  /** the SHAPE of the last list the seam answered with — names and counts only, and the
71
71
  * reason a `child_body_missing` row can be checked later (`contextShapeEvidence`). */
72
72
  contextShape?: string;
73
+ /** #steer — `tm_join { steer }` calls. The three outcomes are counted separately because
74
+ * the reply may only say 已受理 for the first one: the host admitting the input is an
75
+ * observation (it named the inbox item), the host answering without an id is not. */
76
+ promptTried: number;
77
+ /** the answer carried a `^msg_` inbox id — the only evidence of acceptance */
78
+ promptConfirmed: number;
79
+ /** the call worked and no inbox id came back, or the host refused */
80
+ promptUnconfirmed: number;
81
+ promptError?: string;
82
+ /** the KEY NAMES the prompt/synthetic answer returned (names only, never values) */
83
+ promptKeys: string[];
84
+ /** which seam carried the steering input: `session.prompt` or `session.synthetic` */
85
+ steerSeamUsed?: string;
86
+ /** `session.inbox.list` / `session.inbox.cancel` calls (unread / unsend) */
87
+ inboxListTried: number;
88
+ inboxListOk: number;
89
+ inboxCancelTried: number;
90
+ /** the host named the item it removed */
91
+ inboxCancelConfirmed: number;
92
+ /** the host answered and named nothing — the documented no-op for an unavailable item */
93
+ inboxCancelNoop: number;
94
+ inboxError?: string;
95
+ /** which SPELLING of each inbox op answered (names only) */
96
+ inboxSpellings: string[];
73
97
  }
74
98
  export interface V2SessionReader {
75
99
  /** a `{session:{get,messages}}` object safe to hand to code written for the v1 client */
@@ -1 +1 @@
1
- {"version":3,"file":"v2-session-client.d.ts","sourceRoot":"","sources":["../../src/host/v2-session-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,CAAA;IAC1B,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,CAAA;IACxB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB;2FACuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,yFAAyF;IACzF,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAuGD;;;;;;;;;;;;;;;wBAewB;AACxB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CA2B/D;AAED;;;;;;iEAMiE;AACjE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAyB1D;AAMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CA4JnE"}
1
+ {"version":3,"file":"v2-session-client.d.ts","sourceRoot":"","sources":["../../src/host/v2-session-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,CAAA;IAC1B,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,CAAA;IACxB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB;2FACuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;0FAEsF;IACtF,WAAW,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAA;IACvB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oFAAoF;IACpF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,yFAAyF;IACzF,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,yFAAyF;IACzF,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AA6KD;;;;;;;;;;;;;;;wBAewB;AACxB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CA2B/D;AAED;;;;;;iEAMiE;AACjE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAyB1D;AAMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAkVnE"}