tokmon 0.28.1 → 0.28.3

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 (57) hide show
  1. package/README.md +156 -234
  2. package/THIRD_PARTY_NOTICES.md +62 -0
  3. package/dist/{bootstrap-ink-L7QSJBMS.js → bootstrap-ink-WG4WG3R2.js} +1579 -1135
  4. package/dist/chunk-7CH6S7BR.js +447 -0
  5. package/dist/{chunk-CVKCVHS7.js → chunk-CFKUZCMB.js} +70 -310
  6. package/dist/chunk-HNWEJ6MS.js +1094 -0
  7. package/dist/chunk-JZSZEHVD.js +406 -0
  8. package/dist/{chunk-S33XIUAW.js → chunk-P57DVFNH.js} +277 -49
  9. package/dist/{chunk-4HU4EI5T.js → chunk-P5JN5DDX.js} +25 -46
  10. package/dist/chunk-TN6V7XSL.js +512 -0
  11. package/dist/chunk-USKOQIE3.js +278 -0
  12. package/dist/chunk-UYPDMVW5.js +21 -0
  13. package/dist/{cli-command-75LP4IDS.js → cli-command-MD3RJRP4.js} +249 -15
  14. package/dist/cli.js +6 -6
  15. package/dist/{config-HXFJTNLM.js → config-3DGZ47F7.js} +23 -3
  16. package/dist/daemon-EMOA36WB.js +377 -0
  17. package/dist/daemon-handle-JHE5MKMI.js +11 -0
  18. package/dist/server-EPSH52DR.js +12 -0
  19. package/dist/web/assets/{Area-CMXvOw33.js → Area-stRnp8Km.js} +1 -1
  20. package/dist/web/assets/analytics-moZZt9L_.js +2 -0
  21. package/dist/web/assets/breakdown-km9w7myU.js +4 -0
  22. package/dist/web/assets/button-DrX04Cc2.js +1 -0
  23. package/dist/web/assets/{chart-cZoLgpmG.js → chart-D0CtuL2k.js} +1 -1
  24. package/dist/web/assets/explore-B11uNJV1.js +22 -0
  25. package/dist/web/assets/index-RDhXsCNG.js +83 -0
  26. package/dist/web/assets/index-ZmOS8p9O.css +1 -0
  27. package/dist/web/assets/models-DYbZnY34.js +2 -0
  28. package/dist/web/assets/overview-CruICbfJ.js +2 -0
  29. package/dist/web/assets/panel-xckM3_GC.js +1 -0
  30. package/dist/web/assets/settings-sheet-G-BTSIF6.js +1 -0
  31. package/dist/web/assets/share-sheet-weIdd4DW.js +2 -0
  32. package/dist/web/assets/timeline-BHgniliZ.js +1 -0
  33. package/dist/web/index.html +30 -4
  34. package/package.json +13 -4
  35. package/site/THIRD_PARTY_NOTICES.md +83 -0
  36. package/site/public/fonts/OFL.txt +93 -0
  37. package/dist/chunk-3RTWFGGD.js +0 -275
  38. package/dist/chunk-FMP3P2WV.js +0 -299
  39. package/dist/chunk-HP5UZCXP.js +0 -436
  40. package/dist/chunk-SMPY52EV.js +0 -125
  41. package/dist/chunk-XDA5RJST.js +0 -193
  42. package/dist/daemon-CL4FJW26.js +0 -219
  43. package/dist/daemon-handle-QQLJE46Y.js +0 -10
  44. package/dist/server-EUO7CWYH.js +0 -11
  45. package/dist/web/assets/analytics-DqdZXOJL.js +0 -2
  46. package/dist/web/assets/breakdown-kOSSJ3mI.js +0 -4
  47. package/dist/web/assets/explore-vcsM8K9I.js +0 -22
  48. package/dist/web/assets/index-BErCXT7f.css +0 -1
  49. package/dist/web/assets/index-DH3dOnbg.js +0 -83
  50. package/dist/web/assets/models-B5ikm83_.js +0 -2
  51. package/dist/web/assets/overview-DD1kP8CP.js +0 -2
  52. package/dist/web/assets/panel-DTQBwExW.js +0 -1
  53. package/dist/web/assets/primitives-C36qJlA2.js +0 -1
  54. package/dist/web/assets/settings-sheet-_i2zTQjf.js +0 -1
  55. package/dist/web/assets/share-sheet-BLHmrFbm.js +0 -2
  56. package/dist/web/assets/timeline-B4uG-Emo.js +0 -1
  57. package/dist/web/assets/use-dialog-trap-bfaXEMz9.js +0 -1
@@ -0,0 +1,406 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ BUILT_IN_THEME_PRESET_IDS,
4
+ DESKTOP_GRAPH_RANGES,
5
+ PROVIDER_IDS,
6
+ THEME_PRESET_IDS
7
+ } from "./chunk-HNWEJ6MS.js";
8
+
9
+ // src/rpc/contract.ts
10
+ import { Schema } from "effect";
11
+ import * as Rpc from "effect/unstable/rpc/Rpc";
12
+ import * as RpcGroup from "effect/unstable/rpc/RpcGroup";
13
+ var TOKMON_WS_PATH = "/ws";
14
+ var TOKMON_PROTOCOL_VERSION = 3;
15
+ var TOKMON_CAPABILITIES = ["config-cas", "config-revision", "allowed-hosts", "tray-config", "usage-activity", "tray-pins", "provider-pins", "desktop-disclosure", "desktop-graph-range", "provider-headroom", "canonical-identity", "appearance-v1", "theme-engine", "account-detection-v1"];
16
+ var TOKMON_WS_METHODS = {
17
+ getConfig: "tokmon.getConfig",
18
+ setConfig: "tokmon.setConfig",
19
+ refresh: "tokmon.refresh",
20
+ browseFs: "tokmon.browseFs",
21
+ snapshot: "tokmon.snapshot",
22
+ config: "tokmon.config"
23
+ };
24
+ var RefreshScopeSchema = Schema.Literals([
25
+ "all",
26
+ "summary",
27
+ "table",
28
+ "billing",
29
+ "peak"
30
+ ]);
31
+ var ProviderIdSchema = Schema.Literals(PROVIDER_IDS);
32
+ var NonNegativeIntegerSchema = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
33
+ var PositiveFiniteSchema = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(1));
34
+ var AccountSchema = Schema.Struct({
35
+ id: Schema.String,
36
+ providerId: ProviderIdSchema,
37
+ name: Schema.String,
38
+ homeDir: Schema.String,
39
+ color: Schema.optionalKey(Schema.String)
40
+ });
41
+ var TrayConfigSchema = Schema.Struct({
42
+ enabled: Schema.Boolean,
43
+ showMenuBarText: Schema.Boolean,
44
+ displayMetric: Schema.Literals(["smartHeadroom", "tightestRemaining"]),
45
+ pollIntervalSec: Schema.Finite.check(Schema.isBetween({ minimum: 1, maximum: 86400 })),
46
+ activeTimeoutMin: Schema.Finite.check(Schema.isBetween({ minimum: 1, maximum: 1440 })),
47
+ graceMin: Schema.Finite.check(Schema.isBetween({ minimum: 1, maximum: 10080 })),
48
+ promotionHoldMin: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 1440 })),
49
+ lowWatermarkPct: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 100 })),
50
+ criticalWatermarkPct: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 100 })),
51
+ pinnedAccount: Schema.NullOr(Schema.String),
52
+ pins: Schema.Array(Schema.String),
53
+ // Additive since `tray-pins`: older daemons omit it, so tolerate absence and let
54
+ // `repairConfig` materialise the empty default rather than failing the decode.
55
+ pinnedProviders: Schema.optionalKey(Schema.Array(Schema.String)),
56
+ launchAtLogin: Schema.Boolean,
57
+ theme: Schema.Literal("dark")
58
+ });
59
+ var DesktopConfigSchema = Schema.Struct({
60
+ expandedProviders: Schema.Array(Schema.String),
61
+ graphRangeDays: Schema.optionalKey(Schema.Literals(DESKTOP_GRAPH_RANGES))
62
+ });
63
+ var AccountDetectionConfigSchema = Schema.Struct({
64
+ enabled: Schema.Boolean,
65
+ disabledProviders: Schema.Array(ProviderIdSchema),
66
+ excludedAccounts: Schema.Array(Schema.Struct({
67
+ providerId: ProviderIdSchema,
68
+ homeDir: Schema.String
69
+ }))
70
+ });
71
+ var HexColorSchema = Schema.String.check(Schema.isPattern(/^#[0-9a-f]{6}$/i));
72
+ var ThemeOverridesSchema = Schema.Struct({
73
+ canvas: Schema.optionalKey(HexColorSchema),
74
+ panel: Schema.optionalKey(HexColorSchema),
75
+ inset: Schema.optionalKey(HexColorSchema),
76
+ insetStrong: Schema.optionalKey(HexColorSchema),
77
+ chrome: Schema.optionalKey(HexColorSchema),
78
+ line: Schema.optionalKey(HexColorSchema),
79
+ lineStrong: Schema.optionalKey(HexColorSchema),
80
+ lineFaint: Schema.optionalKey(HexColorSchema),
81
+ text: Schema.optionalKey(HexColorSchema),
82
+ textDim: Schema.optionalKey(HexColorSchema),
83
+ textFaint: Schema.optionalKey(HexColorSchema),
84
+ textStrong: Schema.optionalKey(HexColorSchema),
85
+ accent: Schema.optionalKey(HexColorSchema),
86
+ cost: Schema.optionalKey(HexColorSchema),
87
+ positive: Schema.optionalKey(HexColorSchema)
88
+ });
89
+ var AppearanceConfigSchema = Schema.Struct({
90
+ version: Schema.Literal(1),
91
+ mode: Schema.Literals(["auto", "light", "dark"]),
92
+ preset: Schema.Literals(THEME_PRESET_IDS),
93
+ terminal: Schema.Literals(["ansi", "dark", "light", "off"]),
94
+ custom: Schema.optionalKey(Schema.Struct({
95
+ base: Schema.Literals(BUILT_IN_THEME_PRESET_IDS),
96
+ light: ThemeOverridesSchema,
97
+ dark: ThemeOverridesSchema
98
+ }))
99
+ });
100
+ var ConfigSchema = Schema.Struct({
101
+ revision: NonNegativeIntegerSchema,
102
+ interval: PositiveFiniteSchema,
103
+ billingInterval: PositiveFiniteSchema,
104
+ clearScreen: Schema.Boolean,
105
+ privacyMode: Schema.Boolean,
106
+ privacyToggleKey: Schema.String,
107
+ timezone: Schema.NullOr(Schema.String),
108
+ accounts: Schema.Array(AccountSchema),
109
+ activeAccountId: Schema.NullOr(Schema.String),
110
+ disabledProviders: Schema.Array(ProviderIdSchema),
111
+ onboarded: Schema.Boolean,
112
+ dashboardLayout: Schema.Literals(["grid", "single"]),
113
+ defaultFocus: Schema.Literals(["all", "last"]),
114
+ ascii: Schema.Literals(["auto", "on", "off"]),
115
+ allowNetworkAccess: Schema.Boolean,
116
+ allowedHosts: Schema.Array(Schema.String),
117
+ resetDisplay: Schema.Literals(["relative", "absolute"]),
118
+ knownProviders: Schema.Array(ProviderIdSchema),
119
+ // Additive under `appearance-v1`; omission is accepted for old clients and
120
+ // preserved by the daemon's CAS boundary rather than resetting the theme.
121
+ appearance: Schema.optionalKey(AppearanceConfigSchema),
122
+ // Additive: older clients omit detector policy, so the daemon preserves its
123
+ // current value and repairConfig supplies legacy current-behaviour defaults.
124
+ accountDetection: Schema.optionalKey(AccountDetectionConfigSchema),
125
+ // The complete tray block was added within protocol v3. Accept omission from
126
+ // older peers and normalize it at the client / preserve it at the CAS boundary.
127
+ tray: Schema.optionalKey(TrayConfigSchema),
128
+ desktop: Schema.optionalKey(DesktopConfigSchema)
129
+ });
130
+ var ProtocolInfoSchema = Schema.Struct({
131
+ version: Schema.Literal(TOKMON_PROTOCOL_VERSION),
132
+ // Capabilities are additive within a protocol version. Older clients must
133
+ // preserve forward compatibility when a newer daemon advertises one they do
134
+ // not understand yet.
135
+ capabilities: Schema.Array(Schema.String)
136
+ });
137
+ var ConfigStateSchema = Schema.Struct({
138
+ protocol: ProtocolInfoSchema,
139
+ config: ConfigSchema
140
+ });
141
+ var ConfigUpdateRequestSchema = Schema.Struct({
142
+ expectedRevision: NonNegativeIntegerSchema,
143
+ config: ConfigSchema
144
+ });
145
+ var LegacyConfigUpdateConflictSchema = Schema.Struct({
146
+ kind: Schema.Literal("conflict"),
147
+ state: ConfigStateSchema
148
+ });
149
+ var ConfigUpdateConflictFailure = class extends Schema.TaggedErrorClass()(
150
+ "ConfigUpdateConflictFailure",
151
+ {
152
+ kind: Schema.Literal("conflict"),
153
+ state: ConfigStateSchema
154
+ }
155
+ ) {
156
+ };
157
+ var LegacyConfigPersistenceFailureSchema = Schema.Struct({
158
+ kind: Schema.Literal("persistence"),
159
+ message: Schema.String
160
+ });
161
+ var ConfigPersistenceFailure = class extends Schema.TaggedErrorClass()(
162
+ "ConfigPersistenceFailure",
163
+ {
164
+ kind: Schema.Literal("persistence"),
165
+ message: Schema.String
166
+ }
167
+ ) {
168
+ };
169
+ var ConfigUpdateConflictSchema = Schema.Union([
170
+ ConfigUpdateConflictFailure,
171
+ LegacyConfigUpdateConflictSchema
172
+ ]);
173
+ var ConfigPersistenceFailureSchema = Schema.Union([
174
+ ConfigPersistenceFailure,
175
+ LegacyConfigPersistenceFailureSchema
176
+ ]);
177
+ var RefreshFailure = class extends Schema.TaggedErrorClass()(
178
+ "RefreshFailure",
179
+ {
180
+ kind: Schema.Literal("refresh"),
181
+ message: Schema.String
182
+ }
183
+ ) {
184
+ };
185
+ var FsEntrySchema = Schema.Struct({
186
+ name: Schema.String,
187
+ path: Schema.String,
188
+ dir: Schema.Boolean
189
+ });
190
+ var FsListingSchema = Schema.Struct({
191
+ path: Schema.String,
192
+ parent: Schema.NullOr(Schema.String),
193
+ entries: Schema.Array(FsEntrySchema)
194
+ });
195
+ var UsageSummarySchema = Schema.Struct({
196
+ cost: Schema.Finite,
197
+ tokens: Schema.Finite,
198
+ input: Schema.Finite,
199
+ cacheRead: Schema.Finite,
200
+ cacheSavings: Schema.Finite
201
+ });
202
+ var ModelDetailSchema = Schema.Struct({
203
+ name: Schema.String,
204
+ input: Schema.Finite,
205
+ output: Schema.Finite,
206
+ cacheCreate: Schema.Finite,
207
+ cacheRead: Schema.Finite,
208
+ cacheSavings: Schema.Finite,
209
+ cost: Schema.Finite,
210
+ count: Schema.Finite
211
+ });
212
+ var TableRowSchema = Schema.Struct({
213
+ label: Schema.String,
214
+ models: Schema.Array(Schema.String),
215
+ input: Schema.Finite,
216
+ output: Schema.Finite,
217
+ cacheCreate: Schema.Finite,
218
+ cacheRead: Schema.Finite,
219
+ cacheSavings: Schema.Finite,
220
+ total: Schema.Finite,
221
+ cost: Schema.Finite,
222
+ count: Schema.Finite,
223
+ breakdown: Schema.Array(ModelDetailSchema)
224
+ });
225
+ var DashboardDataSchema = Schema.Struct({
226
+ today: UsageSummarySchema,
227
+ week: UsageSummarySchema,
228
+ month: UsageSummarySchema,
229
+ burnRate: Schema.Finite,
230
+ series: Schema.Array(Schema.Finite),
231
+ lastActivityAt: Schema.NullOr(NonNegativeIntegerSchema)
232
+ });
233
+ var TableDataSchema = Schema.Struct({
234
+ daily: Schema.Array(TableRowSchema),
235
+ weekly: Schema.Array(TableRowSchema),
236
+ monthly: Schema.Array(TableRowSchema)
237
+ });
238
+ var MetricFormatSchema = Schema.Union([
239
+ Schema.Struct({ kind: Schema.Literal("percent") }),
240
+ Schema.Struct({ kind: Schema.Literal("dollars"), currency: Schema.optionalKey(Schema.String) }),
241
+ Schema.Struct({ kind: Schema.Literal("count"), suffix: Schema.optionalKey(Schema.String) })
242
+ ]);
243
+ var MetricSchema = Schema.Struct({
244
+ key: Schema.optionalKey(Schema.String),
245
+ role: Schema.optionalKey(Schema.Literals(["session", "weekly", "model", "other", "unbounded"])),
246
+ modelId: Schema.optionalKey(Schema.NullOr(Schema.String)),
247
+ active: Schema.optionalKey(Schema.Boolean),
248
+ label: Schema.String,
249
+ used: Schema.Finite,
250
+ limit: Schema.NullOr(Schema.Finite),
251
+ format: MetricFormatSchema,
252
+ resetsAt: Schema.optionalKey(Schema.NullOr(Schema.String)),
253
+ primary: Schema.optionalKey(Schema.Boolean)
254
+ });
255
+ var MetricRoleSchema = Schema.Literals(["session", "weekly", "model", "other", "unbounded"]);
256
+ var AccountIdentityViewSchema = Schema.Struct({
257
+ title: Schema.String,
258
+ subtitle: Schema.NullOr(Schema.String),
259
+ accessibleLabel: Schema.String,
260
+ redacted: Schema.Boolean
261
+ });
262
+ var QuotaViewSchema = Schema.Struct({
263
+ key: Schema.String,
264
+ label: Schema.String,
265
+ role: MetricRoleSchema,
266
+ modelId: Schema.NullOr(Schema.String),
267
+ usedPct: Schema.NullOr(Schema.Finite),
268
+ remainingPct: Schema.NullOr(Schema.Finite),
269
+ resetsAt: Schema.NullOr(NonNegativeIntegerSchema),
270
+ bounded: Schema.Boolean,
271
+ primary: Schema.Boolean,
272
+ active: Schema.Boolean,
273
+ displayOrder: NonNegativeIntegerSchema,
274
+ valueText: Schema.String
275
+ });
276
+ var HeadroomFactorSchema = Schema.Struct({
277
+ key: Schema.String,
278
+ label: Schema.String,
279
+ role: MetricRoleSchema,
280
+ remainingPct: Schema.Finite,
281
+ included: Schema.Boolean,
282
+ reason: Schema.Literals(["session", "active-model", "weekly-cap", "primary", "fallback-floor"])
283
+ });
284
+ var HeadroomViewSchema = Schema.Struct({
285
+ value: Schema.NullOr(Schema.Finite),
286
+ unit: Schema.Literal("index-100"),
287
+ mode: Schema.Literals(["smart", "single-window", "fallback-floor", "unavailable"]),
288
+ basis: Schema.Literals(["active", "idle-runway", "unavailable"]),
289
+ representativeAccountId: Schema.NullOr(Schema.String),
290
+ activeAccountIds: Schema.Array(Schema.String),
291
+ factors: Schema.Array(HeadroomFactorSchema),
292
+ explanation: Schema.String
293
+ });
294
+ var BillingResultSchema = Schema.Struct({
295
+ plan: Schema.NullOr(Schema.String),
296
+ metrics: Schema.Array(MetricSchema),
297
+ error: Schema.NullOr(Schema.String),
298
+ email: Schema.optionalKey(Schema.NullOr(Schema.String)),
299
+ displayName: Schema.optionalKey(Schema.NullOr(Schema.String)),
300
+ activity: Schema.optionalKey(Schema.NullOr(Schema.Struct({
301
+ series: Schema.Array(Schema.Finite),
302
+ summary: Schema.String
303
+ }))),
304
+ modelSpend: Schema.optionalKey(Schema.NullOr(Schema.Array(Schema.Struct({
305
+ name: Schema.String,
306
+ usd: Schema.Finite,
307
+ requests: Schema.Finite
308
+ })))),
309
+ asOfMs: Schema.optionalKey(NonNegativeIntegerSchema)
310
+ });
311
+ var WebAccountSchema = Schema.Struct({
312
+ id: Schema.String,
313
+ providerId: ProviderIdSchema,
314
+ name: Schema.String,
315
+ color: Schema.String,
316
+ homeDir: Schema.NullOr(Schema.String),
317
+ hasUsage: Schema.Boolean,
318
+ hasBilling: Schema.Boolean,
319
+ email: Schema.optionalKey(Schema.NullOr(Schema.String)),
320
+ displayName: Schema.optionalKey(Schema.NullOr(Schema.String)),
321
+ identity: Schema.optionalKey(AccountIdentityViewSchema),
322
+ quotas: Schema.optionalKey(Schema.Array(QuotaViewSchema)),
323
+ headroom: Schema.optionalKey(HeadroomViewSchema),
324
+ plan: Schema.optionalKey(Schema.NullOr(Schema.String)),
325
+ lastActivityAt: Schema.NullOr(NonNegativeIntegerSchema),
326
+ dashboard: Schema.NullOr(DashboardDataSchema),
327
+ table: Schema.NullOr(TableDataSchema),
328
+ billing: Schema.NullOr(BillingResultSchema),
329
+ summaryState: Schema.Literals(["pending", "ready", "error"]),
330
+ billingState: Schema.Literals(["pending", "ready", "error"]),
331
+ tableState: Schema.Literals(["pending", "ready", "error"]),
332
+ summaryUpdatedAt: Schema.optionalKey(Schema.NullOr(NonNegativeIntegerSchema)),
333
+ billingUpdatedAt: Schema.optionalKey(Schema.NullOr(NonNegativeIntegerSchema)),
334
+ tableUpdatedAt: Schema.optionalKey(Schema.NullOr(NonNegativeIntegerSchema))
335
+ });
336
+ var WebSnapshotSchema = Schema.Struct({
337
+ version: Schema.String,
338
+ generatedAt: NonNegativeIntegerSchema,
339
+ tz: Schema.String,
340
+ intervalMs: PositiveFiniteSchema,
341
+ billingIntervalMs: Schema.optionalKey(PositiveFiniteSchema),
342
+ providers: Schema.Array(Schema.Struct({
343
+ id: ProviderIdSchema,
344
+ name: Schema.String,
345
+ color: Schema.String,
346
+ headroom: Schema.optionalKey(HeadroomViewSchema)
347
+ })),
348
+ accounts: Schema.Array(WebAccountSchema),
349
+ seeded: Schema.Boolean,
350
+ peak: Schema.NullOr(Schema.Struct({
351
+ state: Schema.Literals(["peak", "off-peak", "weekend"]),
352
+ label: Schema.String,
353
+ // The upstream clock is only normalized to a finite number; do not make
354
+ // the wire contract narrower than the producer's declared type.
355
+ minutesUntilChange: Schema.NullOr(Schema.Finite),
356
+ changesAt: Schema.optionalKey(Schema.NullOr(Schema.String))
357
+ }))
358
+ });
359
+ var EmptyPayloadSchema = Schema.Struct({});
360
+ var GetConfigRpc = Rpc.make(TOKMON_WS_METHODS.getConfig, {
361
+ payload: EmptyPayloadSchema,
362
+ success: ConfigStateSchema
363
+ });
364
+ var SetConfigRpc = Rpc.make(TOKMON_WS_METHODS.setConfig, {
365
+ payload: ConfigUpdateRequestSchema,
366
+ success: ConfigStateSchema,
367
+ error: Schema.Union([ConfigUpdateConflictSchema, ConfigPersistenceFailureSchema])
368
+ });
369
+ var RefreshRpc = Rpc.make(TOKMON_WS_METHODS.refresh, {
370
+ payload: Schema.Struct({ scope: RefreshScopeSchema }),
371
+ success: Schema.Void,
372
+ error: RefreshFailure
373
+ });
374
+ var BrowseFsRpc = Rpc.make(TOKMON_WS_METHODS.browseFs, {
375
+ payload: Schema.Struct({ path: Schema.String }),
376
+ success: FsListingSchema
377
+ });
378
+ var SnapshotRpc = Rpc.make(TOKMON_WS_METHODS.snapshot, {
379
+ payload: EmptyPayloadSchema,
380
+ success: WebSnapshotSchema,
381
+ stream: true
382
+ });
383
+ var ConfigRpc = Rpc.make(TOKMON_WS_METHODS.config, {
384
+ payload: EmptyPayloadSchema,
385
+ success: ConfigStateSchema,
386
+ stream: true
387
+ });
388
+ var TokmonRpcGroup = RpcGroup.make(
389
+ GetConfigRpc,
390
+ SetConfigRpc,
391
+ RefreshRpc,
392
+ BrowseFsRpc,
393
+ SnapshotRpc,
394
+ ConfigRpc
395
+ );
396
+
397
+ export {
398
+ TOKMON_WS_PATH,
399
+ TOKMON_PROTOCOL_VERSION,
400
+ TOKMON_CAPABILITIES,
401
+ TOKMON_WS_METHODS,
402
+ ConfigUpdateConflictFailure,
403
+ ConfigPersistenceFailure,
404
+ RefreshFailure,
405
+ TokmonRpcGroup
406
+ };