@te-river/opencode-team-mode 1.5.12 → 1.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -6
- package/README.zh-CN.md +28 -4
- package/dist/agents.d.ts +5 -1
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +24 -2
- package/dist/agents.js.map +1 -1
- package/dist/capabilities.d.ts +66 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +165 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/host-hooks.d.ts +115 -0
- package/dist/host-hooks.d.ts.map +1 -0
- package/dist/host-hooks.js +270 -0
- package/dist/host-hooks.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +103 -4
- package/dist/index.js.map +1 -1
- package/dist/prompts/lead.d.ts +1 -1
- package/dist/prompts/lead.d.ts.map +1 -1
- package/dist/prompts/lead.js +71 -8
- package/dist/prompts/lead.js.map +1 -1
- package/dist/prompts/shared.d.ts +1 -1
- package/dist/prompts/shared.d.ts.map +1 -1
- package/dist/prompts/shared.js +51 -2
- package/dist/prompts/shared.js.map +1 -1
- package/dist/prompts/specialists.d.ts +1 -1
- package/dist/prompts/specialists.d.ts.map +1 -1
- package/dist/prompts/specialists.js +38 -17
- package/dist/prompts/specialists.js.map +1 -1
- package/dist/tm/args-schema.d.ts +7 -1
- package/dist/tm/args-schema.d.ts.map +1 -1
- package/dist/tm/args-schema.js +9 -3
- package/dist/tm/args-schema.js.map +1 -1
- package/dist/tm/bash-timeout.d.ts +72 -0
- package/dist/tm/bash-timeout.d.ts.map +1 -0
- package/dist/tm/bash-timeout.js +100 -0
- package/dist/tm/bash-timeout.js.map +1 -0
- package/dist/tm/browser.d.ts +91 -5
- package/dist/tm/browser.d.ts.map +1 -1
- package/dist/tm/browser.js +564 -89
- package/dist/tm/browser.js.map +1 -1
- package/dist/tm/cache.d.ts +68 -0
- package/dist/tm/cache.d.ts.map +1 -0
- package/dist/tm/cache.js +157 -0
- package/dist/tm/cache.js.map +1 -0
- package/dist/tm/config.d.ts +87 -0
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +66 -0
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/dispatch.d.ts +123 -0
- package/dist/tm/dispatch.d.ts.map +1 -0
- package/dist/tm/dispatch.js +476 -0
- package/dist/tm/dispatch.js.map +1 -0
- package/dist/tm/dupe-guard.d.ts +58 -0
- package/dist/tm/dupe-guard.d.ts.map +1 -0
- package/dist/tm/dupe-guard.js +105 -0
- package/dist/tm/dupe-guard.js.map +1 -0
- package/dist/tm/index.d.ts +32 -4
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +58 -5
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/perm-ask.d.ts +1 -0
- package/dist/tm/perm-ask.d.ts.map +1 -1
- package/dist/tm/perm-ask.js +15 -1
- package/dist/tm/perm-ask.js.map +1 -1
- package/dist/tm/pipelines.d.ts.map +1 -1
- package/dist/tm/pipelines.js +11 -0
- package/dist/tm/pipelines.js.map +1 -1
- package/dist/tm/pty.d.ts +70 -0
- package/dist/tm/pty.d.ts.map +1 -0
- package/dist/tm/pty.js +242 -0
- package/dist/tm/pty.js.map +1 -0
- package/dist/tm/search.d.ts +56 -7
- package/dist/tm/search.d.ts.map +1 -1
- package/dist/tm/search.js +195 -41
- package/dist/tm/search.js.map +1 -1
- package/dist/tm/stats.d.ts +117 -0
- package/dist/tm/stats.d.ts.map +1 -0
- package/dist/tm/stats.js +296 -0
- package/dist/tm/stats.js.map +1 -0
- package/dist/tm/webfetch.d.ts +23 -0
- package/dist/tm/webfetch.d.ts.map +1 -1
- package/dist/tm/webfetch.js +97 -8
- package/dist/tm/webfetch.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/installation.md +216 -17
- package/package.json +2 -2
package/dist/tm/config.js
CHANGED
|
@@ -93,6 +93,12 @@ export const TM_CONFIG_DEFAULTS = {
|
|
|
93
93
|
memoryStaleDays: 30,
|
|
94
94
|
memorySessionPersist: "",
|
|
95
95
|
searchDefaultEngine: "auto",
|
|
96
|
+
searchMaxHits: 10,
|
|
97
|
+
searchWeights: {},
|
|
98
|
+
searchDisabledEngines: [],
|
|
99
|
+
// 0.35: a hit with zero query overlap keeps just over a third of its
|
|
100
|
+
// engine weight — demoted, never deleted (see TmConfig.searchRelevanceFloor).
|
|
101
|
+
searchRelevanceFloor: 0.35,
|
|
96
102
|
// Literal fallbacks used ONLY when the global TM_OFFLOAD_THRESHOLD is
|
|
97
103
|
// unset. When the global IS set and a tier env is not, resolveTmConfig
|
|
98
104
|
// derives that tier from the global (inherit — Wave B M1) instead of
|
|
@@ -101,10 +107,21 @@ export const TM_CONFIG_DEFAULTS = {
|
|
|
101
107
|
offloadThresholdData: 2000,
|
|
102
108
|
browserEngine: "playwright",
|
|
103
109
|
browserSnapshotMaxTokens: 1200,
|
|
110
|
+
browserSubresource: "same-site",
|
|
111
|
+
browserAskEval: "on",
|
|
112
|
+
browserImageMaxBytes: 400_000,
|
|
113
|
+
browserIdleCloseMs: 180_000,
|
|
114
|
+
ptyMax: 4,
|
|
104
115
|
ptcWebBridge: "on",
|
|
116
|
+
webCacheTtlSec: 300,
|
|
105
117
|
// Consumed by approval-gate.ts resolveAskTimeoutMs (Math.max floor, Wave A).
|
|
106
118
|
// 1 min since the T2 benign already-closed split (user directive).
|
|
107
119
|
askTimeoutFloorMin: 1,
|
|
120
|
+
// The GENERAL bash cap stays off by default (a real build may legitimately
|
|
121
|
+
// need minutes); the probe cap ships on because a read-only probe never
|
|
122
|
+
// needs the host's 120 s default. Both are ms; 0 = off.
|
|
123
|
+
bashTimeoutMaxMs: 0,
|
|
124
|
+
bashTimeoutProbeMs: 60_000,
|
|
108
125
|
};
|
|
109
126
|
/** Inclusive ceilings/floors for the PTC budgets (design §4.3). */
|
|
110
127
|
export const PTC_BUDGET_BOUNDS = {
|
|
@@ -132,6 +149,43 @@ function envStr(env, key, def) {
|
|
|
132
149
|
const v = raw.trim();
|
|
133
150
|
return v === "" ? def : v;
|
|
134
151
|
}
|
|
152
|
+
/** Float sibling of envInt (fraction knobs like the relevance floor). */
|
|
153
|
+
function envNum(env, key, def, min, max) {
|
|
154
|
+
const raw = env[key];
|
|
155
|
+
if (typeof raw !== "string" || raw.trim() === "")
|
|
156
|
+
return def;
|
|
157
|
+
const n = Number(raw.trim());
|
|
158
|
+
if (!Number.isFinite(n) || n < min || n > max)
|
|
159
|
+
return def;
|
|
160
|
+
return n;
|
|
161
|
+
}
|
|
162
|
+
/** TM_BROWSER_SUBRESOURCE — anything unrecognized keeps the same-site
|
|
163
|
+
* default (fail-soft toward the newer, working behavior). */
|
|
164
|
+
function resolveSubresourcePolicy(raw) {
|
|
165
|
+
const v = typeof raw === "string" ? raw.trim().toLowerCase() : "";
|
|
166
|
+
if (v === "off" || v === "strict" || v === "legacy")
|
|
167
|
+
return "off";
|
|
168
|
+
if (v === "passive")
|
|
169
|
+
return "passive";
|
|
170
|
+
return "same-site";
|
|
171
|
+
}
|
|
172
|
+
/** TM_SEARCH_WEIGHTS — `bing=0.2,hn=0.3` into a partial weight table. A
|
|
173
|
+
* malformed pair is dropped (not the whole var), so one typo cannot silently
|
|
174
|
+
* flatten every custom weight back to the built-in table. */
|
|
175
|
+
export function parseWeightsEnv(raw) {
|
|
176
|
+
const out = {};
|
|
177
|
+
if (typeof raw !== "string")
|
|
178
|
+
return out;
|
|
179
|
+
for (const part of raw.split(/[,;]/)) {
|
|
180
|
+
const m = /^\s*([A-Za-z0-9_-]{1,30})\s*=\s*(\d+(?:\.\d+)?)\s*$/.exec(part);
|
|
181
|
+
if (!m)
|
|
182
|
+
continue;
|
|
183
|
+
const w = Number(m[2]);
|
|
184
|
+
if (Number.isFinite(w) && w > 0 && w <= 10)
|
|
185
|
+
out[m[1].toLowerCase()] = w;
|
|
186
|
+
}
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
135
189
|
/**
|
|
136
190
|
* Parse a comma/semicolon-separated allowlist env var. Unset/absent -> null
|
|
137
191
|
* (caller applies the default). An explicitly EMPTY string parses to []
|
|
@@ -181,12 +235,24 @@ export function resolveTmConfig(env = process.env) {
|
|
|
181
235
|
memoryStaleDays: envInt(env, "TM_MEMORY_STALE_DAYS", TM_CONFIG_DEFAULTS.memoryStaleDays, 0, 3650),
|
|
182
236
|
memorySessionPersist: envStr(env, "TM_MEMORY_SESSION_PERSIST", TM_CONFIG_DEFAULTS.memorySessionPersist),
|
|
183
237
|
searchDefaultEngine: envStr(env, "TM_SEARCH_DEFAULT_ENGINE", TM_CONFIG_DEFAULTS.searchDefaultEngine),
|
|
238
|
+
searchMaxHits: envInt(env, "TM_SEARCH_MAX_HITS", TM_CONFIG_DEFAULTS.searchMaxHits, 3, 30),
|
|
239
|
+
searchWeights: parseWeightsEnv(env.TM_SEARCH_WEIGHTS),
|
|
240
|
+
searchDisabledEngines: parseAllowlistEnv(env.TM_SEARCH_DISABLED_ENGINES) ?? [],
|
|
241
|
+
searchRelevanceFloor: envNum(env, "TM_SEARCH_RELEVANCE_FLOOR", TM_CONFIG_DEFAULTS.searchRelevanceFloor, 0, 1),
|
|
184
242
|
offloadThresholdText: envInt(env, "TM_OFFLOAD_THRESHOLD_TEXT", textTierDefault, 0, 10_000_000),
|
|
185
243
|
offloadThresholdData: envInt(env, "TM_OFFLOAD_THRESHOLD_DATA", dataTierDefault, 0, 10_000_000),
|
|
186
244
|
browserEngine: resolveBrowserEngine(env.TM_BROWSER_ENGINE),
|
|
187
245
|
browserSnapshotMaxTokens: envInt(env, "TM_BROWSER_SNAPSHOT_MAX_TOKENS", TM_CONFIG_DEFAULTS.browserSnapshotMaxTokens, 10, 100_000),
|
|
246
|
+
browserSubresource: resolveSubresourcePolicy(env.TM_BROWSER_SUBRESOURCE),
|
|
247
|
+
browserAskEval: resolveOnOff(env.TM_BROWSER_ASK_EVAL),
|
|
248
|
+
browserImageMaxBytes: envInt(env, "TM_BROWSER_IMAGE_MAX_BYTES", TM_CONFIG_DEFAULTS.browserImageMaxBytes, 10_000, 5_000_000),
|
|
249
|
+
browserIdleCloseMs: envInt(env, "TM_BROWSER_IDLE_MS", TM_CONFIG_DEFAULTS.browserIdleCloseMs, 0, 3_600_000),
|
|
250
|
+
ptyMax: envInt(env, "TM_PTY_MAX", TM_CONFIG_DEFAULTS.ptyMax, 1, 16),
|
|
188
251
|
ptcWebBridge: resolveOnOff(env.TM_PTC_WEB_BRIDGE),
|
|
252
|
+
webCacheTtlSec: envInt(env, "TM_WEB_CACHE_TTL_SEC", TM_CONFIG_DEFAULTS.webCacheTtlSec, 0, 86_400),
|
|
189
253
|
askTimeoutFloorMin: envInt(env, "TM_ASK_TIMEOUT_FLOOR_MIN", TM_CONFIG_DEFAULTS.askTimeoutFloorMin, 1, 1440),
|
|
254
|
+
bashTimeoutMaxMs: envInt(env, "TM_BASH_TIMEOUT_MAX_MS", TM_CONFIG_DEFAULTS.bashTimeoutMaxMs, 0, 3_600_000),
|
|
255
|
+
bashTimeoutProbeMs: envInt(env, "TM_BASH_TIMEOUT_PROBE_MS", TM_CONFIG_DEFAULTS.bashTimeoutProbeMs, 0, 600_000),
|
|
190
256
|
};
|
|
191
257
|
}
|
|
192
258
|
function resolveEngine(raw) {
|
package/dist/tm/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;0EAC0E;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GAAsB;IAC9D,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IACxE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe;IACnE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa;IAChE,cAAc,EAAE,WAAW;CAC5B,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,6EAA6E;IAC7E,WAAW,EAAE,iFAAiF;IAC9F,gBAAgB,EAAE,wDAAwD;IAC1E,cAAc,EAAE,sCAAsC;IACtD,eAAe;IACf,YAAY;IACZ,aAAa;IACb,cAAc;IACd,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,mBAAmB;IAChC,UAAU,EAAE,eAAe;IAC3B,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,kBAAkB;IAC/B,6DAA6D;IAC7D,YAAY;IACZ,gBAAgB;IAChB,2BAA2B;IAC3B,4BAA4B;IAC5B,aAAa,EAAE,iCAAiC;IAChD,mBAAmB;IACnB,WAAW,EAAE,iCAAiC;IAC9C,UAAU;IACV,qBAAqB;CACtB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tm_dispatch / tm_join — ASYNC sub-agent dispatch (issue #7 of 2026-09-18).
|
|
3
|
+
*
|
|
4
|
+
* Why this exists: the host's built-in `task` tool blocks the CALLING
|
|
5
|
+
* session until the child agent returns, so "the team runs in parallel" was
|
|
6
|
+
* only half true — the lead stood still for the sum of every dispatch, and
|
|
7
|
+
* each child's full reply landed in the lead's context whether it needed it
|
|
8
|
+
* there or not. OpenCode hands plugins its own client (`input.client`), and
|
|
9
|
+
* the official session API has `create` + `promptAsync` — "start if needed
|
|
10
|
+
* and return IMMEDIATELY" — so a plugin-owned dispatcher gets real overlap
|
|
11
|
+
* without touching a line of host code. If a future host ever removes that
|
|
12
|
+
* surface, both tools degrade with an explicit instruction to fall back to
|
|
13
|
+
* `task`, rather than failing the round.
|
|
14
|
+
*
|
|
15
|
+
* Contract kept from T3 (no sub-agent spawns a sub-agent):
|
|
16
|
+
* - `tm_dispatch` executes ONLY for the team lead (ctx.agent check here,
|
|
17
|
+
* plus an explicit deny for the five specialists in agents.ts — the
|
|
18
|
+
* tm_* wildcard would otherwise hand it to everyone);
|
|
19
|
+
* - children are the five named specialists, never "team";
|
|
20
|
+
* - the child session is parented to the lead session (parentID), so the
|
|
21
|
+
* host's own session tree, cancellation and UI still make sense.
|
|
22
|
+
*
|
|
23
|
+
* Context economy (design goal #4): tm_join renders each child's reply
|
|
24
|
+
* through the SAME governance pipeline as every other tm_* tool, so five
|
|
25
|
+
* long sub-agent reports become five handles + 80-token previews that the
|
|
26
|
+
* lead can page through with tm_fetch — not 5×N kilotokens dumped inline.
|
|
27
|
+
*/
|
|
28
|
+
import type { HostEvent, ToolDefinition } from "../types.js";
|
|
29
|
+
import type { TmPipelines } from "./pipelines.js";
|
|
30
|
+
/** The five dispatchable specialists — "team" is deliberately NOT in the
|
|
31
|
+
* list: a lead spawning a lead is the nesting T3 closed. */
|
|
32
|
+
export declare const DISPATCH_TARGETS: readonly ["architect", "implementer", "reviewer", "tester", "researcher"];
|
|
33
|
+
/** A dispatch lives for the plugin process. A child that outlives the
|
|
34
|
+
* process is the host's session to clean up, not ours to forget silently,
|
|
35
|
+
* which is why tm_join re-adopts it from `session.children` instead of
|
|
36
|
+
* reporting "nothing to collect" (see `adoptFromHost`). */
|
|
37
|
+
export interface ChildRecord {
|
|
38
|
+
sessionID: string;
|
|
39
|
+
agent: string;
|
|
40
|
+
label: string;
|
|
41
|
+
parentSessionID: string;
|
|
42
|
+
startedAt: number;
|
|
43
|
+
finishedAt?: number;
|
|
44
|
+
state: "running" | "idle" | "error";
|
|
45
|
+
error?: string;
|
|
46
|
+
/** Reconstructed from the host's session tree, not observed live: the
|
|
47
|
+
* wall-clock elapsed and the settle verdict come from the host, so the
|
|
48
|
+
* lead must know this row was rebuilt. */
|
|
49
|
+
adopted?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface DispatchDeps {
|
|
52
|
+
client: unknown;
|
|
53
|
+
pipelines: TmPipelines;
|
|
54
|
+
/** The lead agent's name as injected by agents.ts (keyed "team"). */
|
|
55
|
+
leadAgent?: string;
|
|
56
|
+
targets?: readonly string[];
|
|
57
|
+
/** Let the approval gate register the child session so a sub-agent's own
|
|
58
|
+
* protected read opens the official dialog instead of hard-throwing. */
|
|
59
|
+
onChildSession?: (sessionID: string, agent: string) => void;
|
|
60
|
+
/** Injectable clock for tests. */
|
|
61
|
+
now?: () => number;
|
|
62
|
+
/** Ceiling on how long tm_join will wait on a round of children. */
|
|
63
|
+
maxWaitMs?: number;
|
|
64
|
+
}
|
|
65
|
+
interface SessionApi {
|
|
66
|
+
create?: (opts: unknown) => Promise<unknown>;
|
|
67
|
+
promptAsync?: (opts: unknown) => Promise<unknown>;
|
|
68
|
+
messages?: (opts: unknown) => Promise<unknown>;
|
|
69
|
+
status?: (opts: unknown) => Promise<unknown>;
|
|
70
|
+
abort?: (opts: unknown) => Promise<unknown>;
|
|
71
|
+
/** GET /session/{id}/children -> Session[] — the host's own session tree,
|
|
72
|
+
* i.e. the recovery source when this process never saw the dispatch. */
|
|
73
|
+
children?: (opts: unknown) => Promise<unknown>;
|
|
74
|
+
}
|
|
75
|
+
/** Resolve the host session API defensively — a missing namespace means the
|
|
76
|
+
* host does not speak this protocol, and the caller must degrade. */
|
|
77
|
+
export declare function sessionApiOf(client: unknown): SessionApi | null;
|
|
78
|
+
/** The title `tm_dispatch` gives every child session. `parseDispatchTitle`
|
|
79
|
+
* is the discriminator on the way back: a child the host lists but this
|
|
80
|
+
* process never created is OURS only if this shape (and a known agent)
|
|
81
|
+
* matches — otherwise it belongs to the built-in `task` tool and we must
|
|
82
|
+
* not claim its reply. */
|
|
83
|
+
export declare function dispatchTitle(agent: string, label: string): string;
|
|
84
|
+
export declare function parseDispatchTitle(title: unknown, targets: readonly string[]): {
|
|
85
|
+
agent: string;
|
|
86
|
+
label: string;
|
|
87
|
+
} | null;
|
|
88
|
+
/**
|
|
89
|
+
* Pull the assistant reply text (and, when the host records it, the moment
|
|
90
|
+
* that reply completed) out of a `session.messages` payload.
|
|
91
|
+
* Shapes accepted (host has renamed things before): {info,parts} pairs or a
|
|
92
|
+
* bare Part[] — the LAST assistant message is the answer, everything earlier
|
|
93
|
+
* is that agent's own working transcript.
|
|
94
|
+
*
|
|
95
|
+
* `completedAt` is what lets a rebuilt registry tell "still running" from
|
|
96
|
+
* "finished while we were not listening": AssistantMessage.time.completed is
|
|
97
|
+
* only set once the message is done.
|
|
98
|
+
*/
|
|
99
|
+
export declare function lastAssistantMessage(messages: unknown): {
|
|
100
|
+
text: string;
|
|
101
|
+
completedAt?: number;
|
|
102
|
+
};
|
|
103
|
+
/** Back-compat seam: the reply text alone. */
|
|
104
|
+
export declare function lastAssistantText(messages: unknown): string;
|
|
105
|
+
/** One child's status line — the lead reads these, so keep them terse. */
|
|
106
|
+
export declare function renderChildLine(c: ChildRecord, elapsedMs: number): string;
|
|
107
|
+
/** Verdicts tm_join can actually observe (issue #7's "leader keeps control"). */
|
|
108
|
+
export declare function summarizeStates(children: readonly ChildRecord[]): {
|
|
109
|
+
running: number;
|
|
110
|
+
idle: number;
|
|
111
|
+
error: number;
|
|
112
|
+
};
|
|
113
|
+
export declare function buildDispatchTools(deps: DispatchDeps): {
|
|
114
|
+
tm_dispatch: ToolDefinition;
|
|
115
|
+
tm_join: ToolDefinition;
|
|
116
|
+
/** Feed the host event bus: `session.idle` / `session.error` /
|
|
117
|
+
* `session.status` mark children settled without polling. */
|
|
118
|
+
observeEvent: (event: HostEvent) => void;
|
|
119
|
+
/** Test/observability seam. */
|
|
120
|
+
children: () => ChildRecord[];
|
|
121
|
+
};
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/tm/dispatch.ts"],"names":[],"mappings":"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"}
|