dsh-ssh-tui 0.8.1 → 0.8.2

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 (93) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/README.en.md +118 -15
  3. package/README.md +78 -13
  4. package/docs/release-notes-0.7.4.md +91 -0
  5. package/docs/release-notes-0.8.0.md +56 -0
  6. package/docs/release-notes-0.8.1.md +79 -0
  7. package/docs/release-notes-0.8.2-rc.1.md +159 -0
  8. package/docs/release-notes-0.8.2.md +62 -0
  9. package/docs/screenshots/reconnect.gif +0 -0
  10. package/docs/terminals.md +23 -0
  11. package/docs/windows.md +13 -0
  12. package/lib/approval-state.js +148 -0
  13. package/lib/approval-state.js.map +1 -0
  14. package/lib/auth-failure.js +38 -0
  15. package/lib/auth-failure.js.map +1 -1
  16. package/lib/color-depth.js +26 -0
  17. package/lib/color-depth.js.map +1 -1
  18. package/lib/copy-text.js +30 -8
  19. package/lib/copy-text.js.map +1 -1
  20. package/lib/dialogs.js +81 -0
  21. package/lib/dialogs.js.map +1 -1
  22. package/lib/display-sock.js +138 -23
  23. package/lib/display-sock.js.map +1 -1
  24. package/lib/footer-accents.js +28 -0
  25. package/lib/footer-accents.js.map +1 -0
  26. package/lib/footer-budget.js +328 -0
  27. package/lib/footer-budget.js.map +1 -0
  28. package/lib/footer-format.js +433 -0
  29. package/lib/footer-format.js.map +1 -0
  30. package/lib/footer-layout.js +407 -0
  31. package/lib/footer-layout.js.map +1 -0
  32. package/lib/footer-meters.js +185 -0
  33. package/lib/footer-meters.js.map +1 -0
  34. package/lib/footer.js +19 -558
  35. package/lib/footer.js.map +1 -1
  36. package/lib/i18n/en.js +65 -5
  37. package/lib/i18n/en.js.map +1 -1
  38. package/lib/i18n/zh.js +67 -5
  39. package/lib/i18n/zh.js.map +1 -1
  40. package/lib/paint.js +53 -8
  41. package/lib/paint.js.map +1 -1
  42. package/lib/plan-projection.js +291 -0
  43. package/lib/plan-projection.js.map +1 -0
  44. package/lib/plan.js +50 -0
  45. package/lib/plan.js.map +1 -1
  46. package/lib/question-state.js +83 -0
  47. package/lib/question-state.js.map +1 -0
  48. package/lib/representation.js +283 -0
  49. package/lib/representation.js.map +1 -0
  50. package/lib/screen.js +105 -0
  51. package/lib/screen.js.map +1 -0
  52. package/lib/selection.js +5 -3
  53. package/lib/selection.js.map +1 -1
  54. package/lib/startup.js +49 -0
  55. package/lib/startup.js.map +1 -1
  56. package/lib/stats.js +101 -3
  57. package/lib/stats.js.map +1 -1
  58. package/lib/term-text.js +154 -55
  59. package/lib/term-text.js.map +1 -1
  60. package/lib/theme.js +20 -3
  61. package/lib/theme.js.map +1 -1
  62. package/lib/throughput.js +305 -0
  63. package/lib/throughput.js.map +1 -0
  64. package/lib/tool-present.js +57 -7
  65. package/lib/tool-present.js.map +1 -1
  66. package/lib/tui.js +3776 -1105
  67. package/lib/tui.js.map +1 -1
  68. package/lib/types/approval-state.d.ts +75 -0
  69. package/lib/types/auth-failure.d.ts +25 -0
  70. package/lib/types/color-depth.d.ts +21 -0
  71. package/lib/types/copy-text.d.ts +18 -1
  72. package/lib/types/dialogs.d.ts +111 -1
  73. package/lib/types/display-sock.d.ts +15 -0
  74. package/lib/types/footer-accents.d.ts +22 -0
  75. package/lib/types/footer-budget.d.ts +204 -0
  76. package/lib/types/footer-format.d.ts +221 -0
  77. package/lib/types/footer-layout.d.ts +292 -0
  78. package/lib/types/footer-meters.d.ts +151 -0
  79. package/lib/types/footer.d.ts +19 -269
  80. package/lib/types/paint.d.ts +48 -0
  81. package/lib/types/plan-projection.d.ts +162 -0
  82. package/lib/types/plan.d.ts +13 -0
  83. package/lib/types/question-state.d.ts +96 -0
  84. package/lib/types/representation.d.ts +498 -0
  85. package/lib/types/screen.d.ts +126 -0
  86. package/lib/types/startup.d.ts +24 -0
  87. package/lib/types/stats.d.ts +64 -1
  88. package/lib/types/term-text.d.ts +45 -1
  89. package/lib/types/throughput.d.ts +163 -0
  90. package/lib/types/tool-present.d.ts +41 -0
  91. package/lib/types/transcript-types.d.ts +63 -2
  92. package/lib/types/tui.d.ts +862 -11
  93. package/package.json +16 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
package/lib/selection.js CHANGED
@@ -18,7 +18,7 @@
18
18
  * selection that touches either half includes the whole glyph. Surrogate pairs
19
19
  * (emoji) are treated the same way.
20
20
  */
21
- import { displayWidth } from './term-text.js';
21
+ import { ambiguousPolicy, charCellWidth, displayWidth } from './term-text.js';
22
22
  /**
23
23
  * Characters at the start of a line that cover its gutter.
24
24
  *
@@ -85,6 +85,7 @@ function lineWidth(text) {
85
85
  export function offsetAtColumn(text, column) {
86
86
  if (column <= 0)
87
87
  return 0;
88
+ const policy = ambiguousPolicy();
88
89
  let used = 0;
89
90
  let index = 0;
90
91
  while (index < text.length) {
@@ -92,7 +93,7 @@ export function offsetAtColumn(text, column) {
92
93
  if (cp === undefined)
93
94
  break;
94
95
  const char = String.fromCodePoint(cp);
95
- const width = displayWidth(char);
96
+ const width = charCellWidth(cp, policy);
96
97
  if (used + width > column)
97
98
  return index;
98
99
  used += width;
@@ -110,6 +111,7 @@ export function offsetAtColumn(text, column) {
110
111
  export function offsetAfterColumn(text, column) {
111
112
  if (column <= 0)
112
113
  return 0;
114
+ const policy = ambiguousPolicy();
113
115
  let used = 0;
114
116
  let index = 0;
115
117
  while (index < text.length) {
@@ -117,7 +119,7 @@ export function offsetAfterColumn(text, column) {
117
119
  if (cp === undefined)
118
120
  break;
119
121
  const char = String.fromCodePoint(cp);
120
- const width = displayWidth(char);
122
+ const width = charCellWidth(cp, policy);
121
123
  // A boundary exactly at a glyph's first cell excludes that glyph; only a
122
124
  // boundary strictly inside one (a wide glyph's second cell) includes it.
123
125
  if (used === column)
@@ -1 +1 @@
1
- {"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAkB7C;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,MAAc;IAC7C,OAAO,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AACvD,CAAC;AAqBD,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,MAAsB,EAAE,MAAsB;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;WACnC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IACpE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAA;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,KAAgC,EAChC,IAAY;IAEZ,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IACtD,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACpD,IAAI,KAAK,GAAG,IAAI,CAAA;IAChB,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI;QAAE,KAAK,IAAI,CAAC,CAAA;IACnE,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI;QAAE,IAAI,IAAI,CAAC,CAAA;IAC/E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAgC,EAChC,MAAsB,EACtB,MAAsB;IAEtB,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACvC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;IAClF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,EAAE,GAAG;QACT,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;KAC3G,CAAA;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;AACrB,CAAC;AAED,oFAAoF;AACpF,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAc;IACzD,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IACzB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,EAAE,KAAK,SAAS;YAAE,MAAK;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM;YAAE,OAAO,KAAK,CAAA;QACvC,IAAI,IAAI,KAAK,CAAA;QACb,KAAK,IAAI,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAc;IAC5D,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IACzB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,EAAE,KAAK,SAAS;YAAE,MAAK;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAChC,yEAAyE;QACzE,yEAAyE;QACzE,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,KAAK,CAAA;QACjC,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM;YAAE,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QACrD,IAAI,IAAI,KAAK,CAAA;QACb,KAAK,IAAI,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAC5B,KAAgC,EAChC,SAA0B;IAE1B,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAA;QACrE,2EAA2E;QAC3E,yEAAyE;QACzE,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI;YACxC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,MAAM,CAAA;QACV,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACrF,IAAI,GAAG,GAAG,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAgC,EAChC,SAA0B;IAE1B,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,WAAW,GAAG,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3G,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;QAClH,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;YAC7B,4EAA4E;YAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,SAAQ;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAC9C,CAAC"}
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"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"}
package/lib/startup.js CHANGED
@@ -11,12 +11,56 @@ import { CONFIGURED_AGENT_IDENTITIES_KEY } from '@deepseek-ai/dsh-agent-loop';
11
11
  import { SessionId } from '@deepseek-ai/dsh-session';
12
12
  import { detachFromSshSession } from './display-sock.js';
13
13
  import { parseDisplayMode } from './display-mode.js';
14
+ import { desktopLauncher } from './platform.js';
14
15
  /** Service key under which the parsed TUI launch options are provided. */
15
16
  export const SSH_TUI_STARTUP_SERVICE = 'sshTuiStartup';
16
17
  /** Config `id` of the agent-loop entry the TUI drives. */
17
18
  export const MAIN_AGENT_ID = 'main';
18
19
  export const name = 'ssh-tui-startup';
19
20
  export const inject = ['cmdlineArgs'];
21
+ /**
22
+ * Whether another application already owns this profile's command line.
23
+ *
24
+ * `@deepseek-ai/dsh-cmdline` has **no arbitration between apps**: every app plugin is
25
+ * handed the same argv and parses it with its own grammar, and an unknown flag is
26
+ * `program.error`, which exits the process. A profile that hosts two apps therefore
27
+ * requires the second one to understand the first one's flags — and the desktop
28
+ * application passes `--no-open` (the web app's own flag) to its host, so this row's
29
+ * grammar rejected it: the host exited 1, the application reported
30
+ * `dsh desktop host exited with 1: error: unknown option '--no-open'` and died. Only
31
+ * the *startup* row did that; the TUI row never ran, which is why 0.8.1's inert-when-
32
+ * headless fix could not have caught it.
33
+ *
34
+ * The signals are two, and they overlap on purpose:
35
+ *
36
+ * - the launcher facts (`desktopLauncher`): an Electron host, `DeepSeek Harness.exe`,
37
+ * or `app.asar` in argv — true whatever the profile's row order is;
38
+ * - `webStartup`: the web app provides it as soon as it has parsed, and a `web`
39
+ * profile is not a terminal profile in any case.
40
+ *
41
+ * Stepping aside is not a degraded mode: the TUI row `inject`s `sshTuiStartup`, so
42
+ * nothing of this plugin activates and the host keeps its own grammar and its own app.
43
+ */
44
+ export function anotherAppOwnsCommandLine(ctx) {
45
+ if (desktopLauncher({
46
+ electron: process.versions.electron,
47
+ execPath: process.execPath,
48
+ argv: process.argv,
49
+ }))
50
+ return true;
51
+ return ctx.get('webStartup') !== undefined;
52
+ }
53
+ /** One line, the way the plugin's other inert paths report themselves. */
54
+ function sayInactive(ctx) {
55
+ const line = 'not enabled here: this profile\'s command line belongs to another app '
56
+ + '(the desktop or web host), so the TUI leaves the arguments alone';
57
+ const logger = ctx.logger;
58
+ const named = typeof logger === 'function' ? logger('ssh-tui') : undefined;
59
+ if (typeof named?.info === 'function')
60
+ named.info(line);
61
+ else
62
+ process.stderr.write(`dsh-ssh-tui: ${line}\n`);
63
+ }
20
64
  /**
21
65
  * Build the TUI command grammar and provide the session identity for the
22
66
  * agent-loop row plus the {@link SshTuiStartup} service. On `--help` or a
@@ -24,6 +68,11 @@ export const inject = ['cmdlineArgs'];
24
68
  * process exits through the cmdline exit seam.
25
69
  */
26
70
  export function apply(ctx) {
71
+ // Never claim a command line that is not ours to claim — see the function below.
72
+ if (anotherAppOwnsCommandLine(ctx)) {
73
+ sayInactive(ctx);
74
+ return;
75
+ }
27
76
  const program = new Command()
28
77
  .name('dsh --profile tui')
29
78
  .description('SSH-friendly interactive terminal session over DeepSeek Harness')
@@ -1 +1 @@
1
- {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAA;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAA;AAEtD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA;AA6BnC,MAAM,CAAC,MAAM,IAAI,GAAG,iBAAiB,CAAA;AACrC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,aAAa,CAAC,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,IAAI,eAAe,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;QAAE,OAAO,IAAI,CAAA;IACf,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS,CAAA;AAC5C,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,IAAI,GAAG,wEAAwE;UACjF,kEAAkE,CAAA;IACtE,MAAM,MAAM,GAAI,GAAsF,CAAC,MAAM,CAAA;IAC7G,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1E,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAA;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,iFAAiF;IACjF,IAAI,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,WAAW,CAAC,GAAG,CAAC,CAAA;QAChB,OAAM;IACR,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,mBAAmB,CAAC;SACzB,WAAW,CAAC,iEAAiE,CAAC;SAC9E,UAAU,CAAC,YAAY,EAAE,gBAAgB,CAAC;SAC1C,QAAQ,CAAC,QAAQ,EAAE,0CAA0C,CAAC;SAC9D,QAAQ,CAAC,WAAW,EAAE,6CAA6C,CAAC;SACpE,MAAM,CAAC,oBAAoB,EAAE,qDAAqD,CAAC;SACnF,MAAM,CAAC,OAAO,EAAE,kDAAkD,CAAC;SACnE,MAAM,CACL,kBAAkB,EAClB,6GAA6G,CAC9G;SACA,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,uBAAuB,EAAE,qCAAqC,CAAC;SACtE,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAA;IAE9C,OAAO,CAAC,MAAM,CAAC,CACb,IAAwB,EACxB,OAA2B,EAC3B,OAOC,EACD,EAAE;QACF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,wCAAwC,IAAI,uBAAuB,CAAC,CAAA;YAClF,OAAM;QACR,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAA;QAChC,MAAM,MAAM,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACpE,MAAM,YAAY,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;QAC1C,IAAI,YAAY,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YACpE,OAAO,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC1G,OAAM;QACR,CAAC;QACD,IAAI,YAAY,KAAK,EAAE,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACjF,OAAM;QACR,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,IAAI,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YACnG,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAA;YAC7F,OAAM;QACR,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YACrF,OAAO,CAAC,KAAK,CAAC,+CAA+C,OAAO,CAAC,OAAO,2BAA2B,CAAC,CAAA;YACxG,OAAM;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAA;QACtD,MAAM,MAAM,GAAG,QAAQ,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC,CAAA;QAChF,MAAM,MAAM,GAAG,QAAQ,KAAK,EAAE,CAAA;QAC9B,MAAM,QAAQ,GAA0B,MAAM;YAC5C,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;YAC3C,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,gBAAgB,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;QAEpE,GAAG,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC3E,GAAG,CAAC,OAAO,CAAC,uBAAuB,EAAE;YACnC,SAAS,EAAE,QAAQ,CAAC,EAAE;YACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,YAAY,EAAE,MAAM;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS;YACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,SAAS;YAC/C,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK;YAChC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAgB,EAAE,CAAC;SAClG,CAAC,CAAA;QAC1B,GAAG,CAAC,OAAO,CACT,mBAAmB,EACnB,sDAAsD,QAAQ,CAAC,EAAE,EAAE,CACpE,CAAA;QACD,oBAAoB,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC5B,CAAC"}
package/lib/stats.js CHANGED
@@ -1,5 +1,37 @@
1
+ import { ThroughputTracker, } from './throughput.js';
2
+ /**
3
+ * How many tokens this session has moved, on the accounting the harness
4
+ * published.
5
+ *
6
+ * The harness is the authority: a `totalTokens` it reports is a full-call total
7
+ * whose parts are defined provider by provider — pi-ai's own adapters build it
8
+ * as prompt + output + cache read + cache write — and re-deriving one from the
9
+ * three prompt counters plus output is exactly the arithmetic that
10
+ * double-counts on a provider that folds cache into its prompt count. So
11
+ * reported totals are summed, and only a step that reported none contributes
12
+ * its billed parts. The basis says which happened, and `/status` prints it.
13
+ */
14
+ export function sessionTokenTotal(usage) {
15
+ if (usage.reportedSteps === 0 && usage.inputTokens === 0 && usage.outputTokens === 0)
16
+ return undefined;
17
+ const billed = usage.inputTokens + usage.cacheReadTokens + usage.cacheWriteTokens + usage.outputTokens;
18
+ if (usage.unreportedSteps === 0 && usage.reportedSteps > 0) {
19
+ return { tokens: usage.reportedTokens, basis: 'harness' };
20
+ }
21
+ if (usage.reportedSteps === 0)
22
+ return { tokens: billed, basis: 'sum' };
23
+ return { tokens: usage.reportedTokens + billed, basis: 'sum' };
24
+ }
1
25
  export function emptySessionUsage() {
2
- return { inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0 };
26
+ return {
27
+ inputTokens: 0,
28
+ outputTokens: 0,
29
+ reportedTokens: 0,
30
+ reportedSteps: 0,
31
+ unreportedSteps: 0,
32
+ cacheReadTokens: 0,
33
+ cacheWriteTokens: 0,
34
+ };
3
35
  }
4
36
  export function emptySessionStats() {
5
37
  return {
@@ -11,11 +43,16 @@ export function emptySessionStats() {
11
43
  ttftSteps: 0,
12
44
  decodeMs: 0,
13
45
  decodeTokens: 0,
46
+ lastDecodeMs: 0,
47
+ lastDecodeTokens: 0,
48
+ settledDecodeMs: 0,
49
+ settledDecodeTokens: 0,
14
50
  usage: emptySessionUsage(),
15
51
  };
16
52
  }
17
- /** Flatten a snapshot into the footer's row shape. */
53
+ /** Flatten a snapshot into the legacy stats-row shape. */
18
54
  export function statsRowOf(stats) {
55
+ const total = sessionTokenTotal(stats.usage);
19
56
  return {
20
57
  turns: stats.turns,
21
58
  steps: stats.steps,
@@ -29,6 +66,7 @@ export function statsRowOf(stats) {
29
66
  outputTokens: stats.usage.outputTokens,
30
67
  cacheReadTokens: stats.usage.cacheReadTokens,
31
68
  cacheWriteTokens: stats.usage.cacheWriteTokens,
69
+ totalTokens: total?.tokens ?? 0,
32
70
  };
33
71
  }
34
72
  /**
@@ -42,14 +80,49 @@ export class SessionStatsTracker {
42
80
  usageByStep = new Map();
43
81
  pendingToolTimes = new Map();
44
82
  lastTurn = null;
83
+ /** Live decode estimate for the step currently streaming. */
84
+ live = new ThroughputTracker();
45
85
  /** The step a live chunk belongs to when the host frame carried none. */
46
86
  currentStep() {
47
87
  const open = this.openStep;
48
88
  return open === undefined ? undefined : { turn: open.turn, step: open.step };
49
89
  }
90
+ /**
91
+ * The open step's two clocks, for the status row's elapsed suffix.
92
+ *
93
+ * Both are host wall clocks, so a caller may subtract them from `Date.now()`
94
+ * without a translation. `firstTokenAt` is absent until the step's first
95
+ * delta, which is exactly the difference between "the request is out" and
96
+ * "the model is talking".
97
+ */
98
+ stepClocks() {
99
+ const open = this.openStep;
100
+ if (open === undefined)
101
+ return {};
102
+ return {
103
+ startedAt: open.startTime,
104
+ ...(open.firstTokenTime === null ? {} : { firstTokenAt: open.firstTokenTime }),
105
+ };
106
+ }
50
107
  /** `step/start`: opens the clock LLM time, TTFT and decode are measured from. */
51
108
  noteStepStart(turn, step, time) {
52
109
  this.openStep = { turn, step, startTime: time, firstTokenTime: null };
110
+ this.live.reset();
111
+ }
112
+ /**
113
+ * A live fragment of model output, for the running throughput estimate.
114
+ *
115
+ * The text itself travels: the estimate is tokens per character, and how many
116
+ * tokens a character is worth depends on the script the fragment is written in.
117
+ * @param text - the fragment.
118
+ * @param time - wall clock the fragment arrived at.
119
+ */
120
+ noteDelta(text, time = Date.now()) {
121
+ this.live.note(text, time);
122
+ }
123
+ /** The running throughput estimate, settled value included. */
124
+ throughput(now = Date.now()) {
125
+ return this.live.view(now);
53
126
  }
54
127
  /** The first token delta of the open step latches its TTFT clock. */
55
128
  noteFirstToken(turn, step, time) {
@@ -62,9 +135,13 @@ export class SessionStatsTracker {
62
135
  /** Replace one step's usage sample so a repeated report never double counts. */
63
136
  recordUsage(turn, step, usage) {
64
137
  const key = `${turn}:${step}`;
138
+ const total = usage.totalTokens;
65
139
  const next = {
66
140
  inputTokens: usage.inputTokens,
67
141
  outputTokens: usage.outputTokens,
142
+ reportedTokens: typeof total === 'number' && Number.isFinite(total) && total >= 0 ? total : 0,
143
+ reportedSteps: typeof total === 'number' && Number.isFinite(total) && total >= 0 ? 1 : 0,
144
+ unreportedSteps: typeof total === 'number' && Number.isFinite(total) && total >= 0 ? 0 : 1,
68
145
  cacheReadTokens: usage.cacheReadTokens ?? 0,
69
146
  cacheWriteTokens: usage.cacheWriteTokens ?? 0,
70
147
  };
@@ -73,6 +150,9 @@ export class SessionStatsTracker {
73
150
  this.stats.usage = {
74
151
  inputTokens: totals.inputTokens - (previous?.inputTokens ?? 0) + next.inputTokens,
75
152
  outputTokens: totals.outputTokens - (previous?.outputTokens ?? 0) + next.outputTokens,
153
+ reportedTokens: totals.reportedTokens - (previous?.reportedTokens ?? 0) + next.reportedTokens,
154
+ reportedSteps: totals.reportedSteps - (previous?.reportedSteps ?? 0) + next.reportedSteps,
155
+ unreportedSteps: totals.unreportedSteps - (previous?.unreportedSteps ?? 0) + next.unreportedSteps,
76
156
  cacheReadTokens: totals.cacheReadTokens - (previous?.cacheReadTokens ?? 0) + next.cacheReadTokens,
77
157
  cacheWriteTokens: totals.cacheWriteTokens - (previous?.cacheWriteTokens ?? 0) + next.cacheWriteTokens,
78
158
  };
@@ -93,10 +173,23 @@ export class SessionStatsTracker {
93
173
  this.stats.ttftSteps += 1;
94
174
  const outputTokens = input.outputTokens;
95
175
  if (typeof outputTokens === 'number' && Number.isFinite(outputTokens) && outputTokens >= 0) {
96
- this.stats.decodeMs += Math.max(0, input.time - firstTokenTime);
176
+ const decodeMs = Math.max(0, input.time - firstTokenTime);
177
+ this.stats.decodeMs += decodeMs;
97
178
  this.stats.decodeTokens += outputTokens;
179
+ this.stats.lastDecodeMs = decodeMs;
180
+ this.stats.lastDecodeTokens = outputTokens;
181
+ this.stats.settledDecodeMs += decodeMs;
182
+ this.stats.settledDecodeTokens += outputTokens;
183
+ // The estimate is only as good as the last exact measurement: fold
184
+ // this step's real ratio in before the next one starts streaming.
185
+ this.live.settle(outputTokens, decodeMs);
186
+ this.openStep = undefined;
187
+ return;
98
188
  }
99
189
  }
190
+ this.stats.lastDecodeMs = 0;
191
+ this.stats.lastDecodeTokens = 0;
192
+ this.live.settle(0, 0);
100
193
  this.openStep = undefined;
101
194
  }
102
195
  }
@@ -104,6 +197,10 @@ export class SessionStatsTracker {
104
197
  noteToolStart(callId, time) {
105
198
  this.pendingToolTimes.set(callId, time);
106
199
  }
200
+ /** When a still-open tool call started, for the status row's elapsed suffix. */
201
+ toolStartedAt(callId) {
202
+ return this.pendingToolTimes.get(callId);
203
+ }
107
204
  /** `tool/result`: add the elapsed tool time, once. */
108
205
  noteToolEnd(callId, time) {
109
206
  const dispatchedAt = this.pendingToolTimes.get(callId);
@@ -120,6 +217,7 @@ export class SessionStatsTracker {
120
217
  }
121
218
  this.stats.steps += 1;
122
219
  this.openStep = undefined;
220
+ this.live.reset();
123
221
  // Usage accounting is complete for this step; the map only exists to
124
222
  // deduplicate repeated usage reports during the step.
125
223
  this.usageByStep.delete(`${turn}:${step}`);
package/lib/stats.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAyDA,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC;QACX,YAAY,EAAE,CAAC;QACf,KAAK,EAAE,iBAAiB,EAAE;KAC3B,CAAA;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,UAAU,CAAC,KAA2B;IACpD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;QACpC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;QACtC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe;QAC5C,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB;KAC/C,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACtB,KAAK,GAAyB,iBAAiB,EAAE,CAAA;IACjD,QAAQ,CAA8F;IAC7F,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC7C,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrD,QAAQ,GAAkB,IAAI,CAAA;IAEtC,yEAAyE;IACzE,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;IAC9E,CAAC;IAED,iFAAiF;IACjF,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;QACpD,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;IACvE,CAAC;IAED,qEAAqE;IACrE,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAM;QAC1E,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI;YAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;IAC9D,CAAC;IAED,gFAAgF;IAChF,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,KAAiB;QACvD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAiB;YACzB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;YAC3C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC;SAC9C,CAAA;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;YACjF,YAAY,EAAE,MAAM,CAAC,YAAY,GAAG,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY;YACrF,eAAe,EAAE,MAAM,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,eAAe,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe;YACjG,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB;SACtG,CAAA;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAMb;QACC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5D,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAA;YAClE,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/F,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;gBACjE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;gBACzB,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;gBACvC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;oBAC3F,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,CAAA;oBAC/D,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,YAAY,CAAA;gBACzC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,aAAa,CAAC,MAAc,EAAE,IAAY;QACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,sDAAsD;IACtD,WAAW,CAAC,MAAc,EAAE,IAAY;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACtD,IAAI,YAAY,KAAK,SAAS;YAAE,OAAM;QACtC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,YAAY,CAAC,CAAA;QACrD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED,0EAA0E;IAC1E,WAAW,CAAC,IAAY,EAAE,IAAY;QACpC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QACzB,qEAAqE;QACrE,sDAAsD;QACtD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED,yEAAyE;IACzE,WAAW;QACT,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;IAED,sEAAsE;IACtE,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;IAC1D,CAAC;CACF"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"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"}