@inhuman.tools/harness-tui 0.0.0-bootstrap.0 → 0.2.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 (167) hide show
  1. package/LICENSE.md +7 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/interpreter/ComputedExecBox.d.ts +12 -0
  7. package/dist/interpreter/ComputedExecBox.d.ts.map +1 -0
  8. package/dist/interpreter/ComputedExecBox.js +88 -0
  9. package/dist/interpreter/ComputedExecBox.js.map +1 -0
  10. package/dist/interpreter/imageCapability.d.ts +9 -0
  11. package/dist/interpreter/imageCapability.d.ts.map +1 -0
  12. package/dist/interpreter/imageCapability.js +49 -0
  13. package/dist/interpreter/imageCapability.js.map +1 -0
  14. package/dist/interpreter/rpcCapability.d.ts +11 -0
  15. package/dist/interpreter/rpcCapability.d.ts.map +1 -0
  16. package/dist/interpreter/rpcCapability.js +91 -0
  17. package/dist/interpreter/rpcCapability.js.map +1 -0
  18. package/dist/interpreter/uiCapability.d.ts +34 -0
  19. package/dist/interpreter/uiCapability.d.ts.map +1 -0
  20. package/dist/interpreter/uiCapability.js +207 -0
  21. package/dist/interpreter/uiCapability.js.map +1 -0
  22. package/dist/schemas/index.d.ts +2 -0
  23. package/dist/schemas/index.d.ts.map +1 -0
  24. package/dist/schemas/index.js +2 -0
  25. package/dist/schemas/index.js.map +1 -0
  26. package/dist/schemas/worker-boot.d.ts +14 -0
  27. package/dist/schemas/worker-boot.d.ts.map +1 -0
  28. package/dist/schemas/worker-boot.js +15 -0
  29. package/dist/schemas/worker-boot.js.map +1 -0
  30. package/dist/tui/ack-prompt.d.ts +53 -0
  31. package/dist/tui/ack-prompt.d.ts.map +1 -0
  32. package/dist/tui/ack-prompt.js +61 -0
  33. package/dist/tui/ack-prompt.js.map +1 -0
  34. package/dist/tui/agents-drawer.d.ts +47 -0
  35. package/dist/tui/agents-drawer.d.ts.map +1 -0
  36. package/dist/tui/agents-drawer.js +314 -0
  37. package/dist/tui/agents-drawer.js.map +1 -0
  38. package/dist/tui/ask-shortcuts.d.ts +59 -0
  39. package/dist/tui/ask-shortcuts.d.ts.map +1 -0
  40. package/dist/tui/ask-shortcuts.js +96 -0
  41. package/dist/tui/ask-shortcuts.js.map +1 -0
  42. package/dist/tui/channel.d.ts +59 -0
  43. package/dist/tui/channel.d.ts.map +1 -0
  44. package/dist/tui/channel.js +27 -0
  45. package/dist/tui/channel.js.map +1 -0
  46. package/dist/tui/host-verbs.d.ts +7 -0
  47. package/dist/tui/host-verbs.d.ts.map +1 -0
  48. package/dist/tui/host-verbs.js +19 -0
  49. package/dist/tui/host-verbs.js.map +1 -0
  50. package/dist/tui/host.d.ts +25 -0
  51. package/dist/tui/host.d.ts.map +1 -0
  52. package/dist/tui/host.js +380 -0
  53. package/dist/tui/host.js.map +1 -0
  54. package/dist/tui/omnibox-seat.d.ts +132 -0
  55. package/dist/tui/omnibox-seat.d.ts.map +1 -0
  56. package/dist/tui/omnibox-seat.js +182 -0
  57. package/dist/tui/omnibox-seat.js.map +1 -0
  58. package/dist/tui/paint-controller.d.ts +170 -0
  59. package/dist/tui/paint-controller.d.ts.map +1 -0
  60. package/dist/tui/paint-controller.js +965 -0
  61. package/dist/tui/paint-controller.js.map +1 -0
  62. package/dist/tui/paint-dom.d.ts +336 -0
  63. package/dist/tui/paint-dom.d.ts.map +1 -0
  64. package/dist/tui/paint-dom.js +709 -0
  65. package/dist/tui/paint-dom.js.map +1 -0
  66. package/dist/tui/paint-source.d.ts +57 -0
  67. package/dist/tui/paint-source.d.ts.map +1 -0
  68. package/dist/tui/paint-source.js +570 -0
  69. package/dist/tui/paint-source.js.map +1 -0
  70. package/dist/tui/paint-transport.d.ts +42 -0
  71. package/dist/tui/paint-transport.d.ts.map +1 -0
  72. package/dist/tui/paint-transport.js +207 -0
  73. package/dist/tui/paint-transport.js.map +1 -0
  74. package/dist/tui/paint-types.d.ts +15 -0
  75. package/dist/tui/paint-types.d.ts.map +1 -0
  76. package/dist/tui/paint-types.js +6 -0
  77. package/dist/tui/paint-types.js.map +1 -0
  78. package/dist/tui/paint-widgets.d.ts +94 -0
  79. package/dist/tui/paint-widgets.d.ts.map +1 -0
  80. package/dist/tui/paint-widgets.js +877 -0
  81. package/dist/tui/paint-widgets.js.map +1 -0
  82. package/dist/tui/parse-args.d.ts +3 -0
  83. package/dist/tui/parse-args.d.ts.map +1 -0
  84. package/dist/tui/parse-args.js +13 -0
  85. package/dist/tui/parse-args.js.map +1 -0
  86. package/dist/tui/permissions-view.d.ts +93 -0
  87. package/dist/tui/permissions-view.d.ts.map +1 -0
  88. package/dist/tui/permissions-view.js +174 -0
  89. package/dist/tui/permissions-view.js.map +1 -0
  90. package/dist/tui/present-visual/approve.d.ts +10 -0
  91. package/dist/tui/present-visual/approve.d.ts.map +1 -0
  92. package/dist/tui/present-visual/approve.js +156 -0
  93. package/dist/tui/present-visual/approve.js.map +1 -0
  94. package/dist/tui/present-visual/dump.d.ts +47 -0
  95. package/dist/tui/present-visual/dump.d.ts.map +1 -0
  96. package/dist/tui/present-visual/dump.js +144 -0
  97. package/dist/tui/present-visual/dump.js.map +1 -0
  98. package/dist/tui/present-visual/journey-teardown.d.ts +3 -0
  99. package/dist/tui/present-visual/journey-teardown.d.ts.map +1 -0
  100. package/dist/tui/present-visual/journey-teardown.js +188 -0
  101. package/dist/tui/present-visual/journey-teardown.js.map +1 -0
  102. package/dist/tui/present-visual/journey.d.ts +15 -0
  103. package/dist/tui/present-visual/journey.d.ts.map +1 -0
  104. package/dist/tui/present-visual/journey.js +88 -0
  105. package/dist/tui/present-visual/journey.js.map +1 -0
  106. package/dist/tui/present-visual/raster.d.ts +3 -0
  107. package/dist/tui/present-visual/raster.d.ts.map +1 -0
  108. package/dist/tui/present-visual/raster.js +75 -0
  109. package/dist/tui/present-visual/raster.js.map +1 -0
  110. package/dist/tui/queue-shortcuts.d.ts +13 -0
  111. package/dist/tui/queue-shortcuts.d.ts.map +1 -0
  112. package/dist/tui/queue-shortcuts.js +23 -0
  113. package/dist/tui/queue-shortcuts.js.map +1 -0
  114. package/dist/tui/read-widen.d.ts +14 -0
  115. package/dist/tui/read-widen.d.ts.map +1 -0
  116. package/dist/tui/read-widen.js +45 -0
  117. package/dist/tui/read-widen.js.map +1 -0
  118. package/dist/tui/rewind-chrome.d.ts +29 -0
  119. package/dist/tui/rewind-chrome.d.ts.map +1 -0
  120. package/dist/tui/rewind-chrome.js +77 -0
  121. package/dist/tui/rewind-chrome.js.map +1 -0
  122. package/dist/tui/rust-present.d.ts +37 -0
  123. package/dist/tui/rust-present.d.ts.map +1 -0
  124. package/dist/tui/rust-present.js +205 -0
  125. package/dist/tui/rust-present.js.map +1 -0
  126. package/dist/tui/spinner-phase.d.ts +24 -0
  127. package/dist/tui/spinner-phase.d.ts.map +1 -0
  128. package/dist/tui/spinner-phase.js +25 -0
  129. package/dist/tui/spinner-phase.js.map +1 -0
  130. package/dist/tui/statusline-path.d.ts +10 -0
  131. package/dist/tui/statusline-path.d.ts.map +1 -0
  132. package/dist/tui/statusline-path.js +42 -0
  133. package/dist/tui/statusline-path.js.map +1 -0
  134. package/dist/tui/sugarcoat-paint.d.ts +14 -0
  135. package/dist/tui/sugarcoat-paint.d.ts.map +1 -0
  136. package/dist/tui/sugarcoat-paint.js +146 -0
  137. package/dist/tui/sugarcoat-paint.js.map +1 -0
  138. package/dist/tui/tape-spans.d.ts +64 -0
  139. package/dist/tui/tape-spans.d.ts.map +1 -0
  140. package/dist/tui/tape-spans.js +93 -0
  141. package/dist/tui/tape-spans.js.map +1 -0
  142. package/dist/tui/tea.d.ts +75 -0
  143. package/dist/tui/tea.d.ts.map +1 -0
  144. package/dist/tui/tea.js +2952 -0
  145. package/dist/tui/tea.js.map +1 -0
  146. package/dist/tui/vt-paint.d.ts +12 -0
  147. package/dist/tui/vt-paint.d.ts.map +1 -0
  148. package/dist/tui/vt-paint.js +123 -0
  149. package/dist/tui/vt-paint.js.map +1 -0
  150. package/dist/tui/wait-phrase.d.ts +31 -0
  151. package/dist/tui/wait-phrase.d.ts.map +1 -0
  152. package/dist/tui/wait-phrase.js +26 -0
  153. package/dist/tui/wait-phrase.js.map +1 -0
  154. package/dist/tui/widget-host.d.ts +34 -0
  155. package/dist/tui/widget-host.d.ts.map +1 -0
  156. package/dist/tui/widget-host.js +80 -0
  157. package/dist/tui/widget-host.js.map +1 -0
  158. package/dist/tui/work-cells.d.ts +47 -0
  159. package/dist/tui/work-cells.d.ts.map +1 -0
  160. package/dist/tui/work-cells.js +606 -0
  161. package/dist/tui/work-cells.js.map +1 -0
  162. package/dist/tui/worker-entry.d.ts +2 -0
  163. package/dist/tui/worker-entry.d.ts.map +1 -0
  164. package/dist/tui/worker-entry.js +98 -0
  165. package/dist/tui/worker-entry.js.map +1 -0
  166. package/package.json +84 -4
  167. package/README.md +0 -1
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Tape paint for scheme_repl: sugarcoat the stored Scheme, colour with the
3
+ * compensated-Darcula token hex from @here.build/editor-theme (theme-darcula.ts).
4
+ * Tokenizer is the arrival-cli eject — no CodeMirror in the TUI.
5
+ * Source and receipt classification live in `sugarcoat.ts` of `@inhuman.tools/harness-sdk/text`
6
+ * (no quickdraw) and are re-exported here, so paint importers keep one door.
7
+ */
8
+ import { BOOLEAN_ATOMS } from "@inhuman.tools/harness-sdk/text";
9
+ export { BOOLEAN_ATOMS, decodeDisplayString, fileSchemePart, formatSchemeResult, isMarkdownPath, schemePaintReceipt, sugarcoatProgram, sugarcoatSource, } from "@inhuman.tools/harness-sdk/text";
10
+ /** DARCULA_HEX — CHANGE ONLY with commons/packages/editor-theme/src/theme-darcula.ts. Local retune drifts editor vs tape. */
11
+ const DARCULA = {
12
+ keyword: "#bb6b25",
13
+ function: "#f8bf66",
14
+ symbol: "#a9b5c1",
15
+ string: "#728e60",
16
+ number: "#5b89ad",
17
+ constant: "#5b89ad",
18
+ property: "#9673a7",
19
+ comment: "#717171",
20
+ delimiter: "#717171",
21
+ };
22
+ const DEFINITION_KEYWORDS = new Set(`define define-values define-syntax define-macro defmacro define-class define-record-type
23
+ define/overridable lambda λ case-lambda opt-lambda
24
+ let let* letrec letrec-syntax let-syntax let-values let*-values let/ec let/cc
25
+ syntax-rules syntax-case`
26
+ .split(/\s+/)
27
+ .filter(Boolean));
28
+ const CONTROL_KEYWORDS = new Set(`if cond when unless case else and or not begin do for-each map
29
+ delay force dynamic-wind call/cc call-with-current-continuation
30
+ quote quasiquote unquote unquote-splicing set! require import =>`
31
+ .split(/\s+/)
32
+ .filter(Boolean));
33
+ const DELIM = new Set(["(", ")", "[", "]", "{", "}"]);
34
+ export function highlightSchemePart(part) {
35
+ if (part.kind === "syntax")
36
+ return highlightSugarcoat(part.text);
37
+ if (part.kind === "number")
38
+ return highlightPlain(part.text, DARCULA.number);
39
+ if (part.kind === "boolean")
40
+ return highlightPlain(part.text, DARCULA.keyword);
41
+ return highlightPlain(part.text);
42
+ }
43
+ function highlightPlain(src, color) {
44
+ return src.split("\n").map((line) => (line.length > 0 ? [run(line, color)] : []));
45
+ }
46
+ function isNumber(atom) {
47
+ return /^[+-]?(?:\d|\.\d|#[xbodei])/i.test(atom);
48
+ }
49
+ function atomColor(atom) {
50
+ if (DEFINITION_KEYWORDS.has(atom) || CONTROL_KEYWORDS.has(atom))
51
+ return DARCULA.keyword;
52
+ if (BOOLEAN_ATOMS.has(atom))
53
+ return DARCULA.keyword;
54
+ if (atom === "nil")
55
+ return DARCULA.constant;
56
+ if (atom.length > 1 && atom.startsWith(":"))
57
+ return DARCULA.property;
58
+ if (atom.length > 1 && atom.startsWith("."))
59
+ return DARCULA.function;
60
+ if (isNumber(atom))
61
+ return DARCULA.number;
62
+ return DARCULA.symbol;
63
+ }
64
+ function run(text, color) {
65
+ const next = { text };
66
+ if (color)
67
+ next.color = color;
68
+ return next;
69
+ }
70
+ /** Colour sugarcoat/Scheme source. Every input byte is in some run. */
71
+ export function highlightSugarcoat(src) {
72
+ const runs = [];
73
+ let i = 0;
74
+ const n = src.length;
75
+ while (i < n) {
76
+ const ch = src[i];
77
+ if (ch === '"') {
78
+ let j = i + 1;
79
+ while (j < n) {
80
+ if (src[j] === "\\") {
81
+ j += 2;
82
+ continue;
83
+ }
84
+ if (src[j] === '"') {
85
+ j += 1;
86
+ break;
87
+ }
88
+ j += 1;
89
+ }
90
+ runs.push(run(src.slice(i, j), DARCULA.string));
91
+ i = j;
92
+ continue;
93
+ }
94
+ if (ch === "#" && src[i + 1] === "|") {
95
+ const end = src.indexOf("|#", i + 2);
96
+ const j = end === -1 ? n : end + 2;
97
+ runs.push(run(src.slice(i, j), DARCULA.comment));
98
+ i = j;
99
+ continue;
100
+ }
101
+ if (ch === ";") {
102
+ let j = i;
103
+ while (j < n && src[j] !== "\n")
104
+ j += 1;
105
+ runs.push(run(src.slice(i, j), DARCULA.comment));
106
+ i = j;
107
+ continue;
108
+ }
109
+ if (DELIM.has(ch)) {
110
+ runs.push(run(ch, DARCULA.delimiter));
111
+ i += 1;
112
+ continue;
113
+ }
114
+ if (ch === " " || ch === "\t" || ch === "\n" || ch === "\r") {
115
+ runs.push(run(ch));
116
+ i += 1;
117
+ continue;
118
+ }
119
+ let j = i;
120
+ while (j < n) {
121
+ const c = src[j];
122
+ if (DELIM.has(c) || c === '"' || c === ";" || c === " " || c === "\t" || c === "\n" || c === "\r") {
123
+ break;
124
+ }
125
+ j += 1;
126
+ }
127
+ const atom = src.slice(i, j);
128
+ runs.push(run(atom, atomColor(atom)));
129
+ i = j;
130
+ }
131
+ return splitLines(runs);
132
+ }
133
+ function splitLines(runs) {
134
+ const lines = [[]];
135
+ for (const token of runs) {
136
+ const parts = token.text.split("\n");
137
+ for (const [i, part] of parts.entries()) {
138
+ if (i > 0)
139
+ lines.push([]);
140
+ if (part.length > 0)
141
+ lines.at(-1).push(run(part, token.color));
142
+ }
143
+ }
144
+ return lines;
145
+ }
146
+ //# sourceMappingURL=sugarcoat-paint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sugarcoat-paint.js","sourceRoot":"","sources":["../../src/tui/sugarcoat-paint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Present-side tape regroup. Thoughts glue across a speech gap.
3
+ * Tools that remain after density cut the glue — they sit in
4
+ * chronological order, not dumped after the span.
5
+ *
6
+ * Compact omits tools whose fuse stamp is set (`hideFloorTools`) before
7
+ * grouping, so those known-safe effects do not cut. Default stamp is off:
8
+ * floor-allow stays on the tape. Remainder never stamps. Expanded keeps
9
+ * every identity. Loop pulse is never fused.
10
+ */
11
+ export type TapeItem<T> = {
12
+ readonly kind: "user";
13
+ readonly node: T;
14
+ } | {
15
+ readonly kind: "recall";
16
+ readonly node: T;
17
+ } | {
18
+ readonly kind: "thought-only";
19
+ readonly node: T;
20
+ } | {
21
+ readonly kind: "speech";
22
+ readonly node: T;
23
+ readonly thought: T | null;
24
+ } | {
25
+ readonly kind: "tool";
26
+ readonly node: T;
27
+ };
28
+ export type TapeSpan<T> = {
29
+ readonly kind: "user";
30
+ readonly node: T;
31
+ } | {
32
+ readonly kind: "recall";
33
+ readonly node: T;
34
+ } | {
35
+ readonly kind: "speech";
36
+ readonly node: T;
37
+ } | {
38
+ readonly kind: "thoughts";
39
+ readonly nodes: readonly T[];
40
+ } | {
41
+ readonly kind: "tools";
42
+ readonly nodes: readonly T[];
43
+ };
44
+ export declare function groupTapeSpans<T>(items: readonly TapeItem<T>[]): TapeSpan<T>[];
45
+ /**
46
+ * Predicate is `I["node"]`. Mixed arrays synthesize `thought?: undefined`;
47
+ * `TapeItem<T>` would infer T from speech `thought` and poison it.
48
+ */
49
+ export declare function filterFusedTools<I extends TapeItem<unknown>>(items: readonly I[], fused: (node: I["node"]) => boolean): I[];
50
+ export type ThoughtClockMember = {
51
+ readonly live: boolean;
52
+ readonly startedAt: number | null;
53
+ readonly durationMs: number | null;
54
+ };
55
+ /**
56
+ * Cluster thinking time — sum of member spans, not wall-clock through tools.
57
+ * Live: `startedAt` is origin so `elapsedLive` ticks the sum (sealed + live).
58
+ */
59
+ export declare function clusterThoughtClock(members: readonly ThoughtClockMember[], now?: number): {
60
+ readonly live: boolean;
61
+ readonly startedAt: number | undefined;
62
+ readonly durationMs: number | undefined;
63
+ };
64
+ //# sourceMappingURL=tape-spans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tape-spans.d.ts","sourceRoot":"","sources":["../../src/tui/tape-spans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAEhD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;CAAE,CAAC;AAE7D,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CA+C9E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,CAAC,OAAO,CAAC,EAC1D,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,GAClC,CAAC,EAAE,CAEL;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,kBAAkB,EAAE,EACtC,GAAG,SAAa,GACf;IACD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CA+BA"}
@@ -0,0 +1,93 @@
1
+ export function groupTapeSpans(items) {
2
+ const out = [];
3
+ let thoughts = [];
4
+ let tools = [];
5
+ const flushThoughts = () => {
6
+ if (thoughts.length === 0)
7
+ return;
8
+ out.push({ kind: "thoughts", nodes: thoughts });
9
+ thoughts = [];
10
+ };
11
+ const flushTools = () => {
12
+ if (tools.length === 0)
13
+ return;
14
+ out.push({ kind: "tools", nodes: tools });
15
+ tools = [];
16
+ };
17
+ for (const item of items) {
18
+ switch (item.kind) {
19
+ case "user":
20
+ flushThoughts();
21
+ flushTools();
22
+ out.push({ kind: "user", node: item.node });
23
+ break;
24
+ case "recall":
25
+ flushThoughts();
26
+ flushTools();
27
+ out.push({ kind: "recall", node: item.node });
28
+ break;
29
+ case "thought-only":
30
+ flushTools();
31
+ thoughts.push(item.node);
32
+ break;
33
+ case "speech":
34
+ if (item.thought != null)
35
+ thoughts.push(item.thought);
36
+ flushThoughts();
37
+ flushTools();
38
+ out.push({ kind: "speech", node: item.node });
39
+ break;
40
+ case "tool":
41
+ flushThoughts();
42
+ tools.push(item.node);
43
+ break;
44
+ }
45
+ }
46
+ flushThoughts();
47
+ flushTools();
48
+ return out;
49
+ }
50
+ /**
51
+ * Predicate is `I["node"]`. Mixed arrays synthesize `thought?: undefined`;
52
+ * `TapeItem<T>` would infer T from speech `thought` and poison it.
53
+ */
54
+ export function filterFusedTools(items, fused) {
55
+ return items.filter((item) => item.kind !== "tool" || !fused(item.node));
56
+ }
57
+ /**
58
+ * Cluster thinking time — sum of member spans, not wall-clock through tools.
59
+ * Live: `startedAt` is origin so `elapsedLive` ticks the sum (sealed + live).
60
+ */
61
+ export function clusterThoughtClock(members, now = Date.now()) {
62
+ let sealedMs = 0;
63
+ let anySealed = false;
64
+ let live = false;
65
+ let liveStartedAt;
66
+ for (const member of members) {
67
+ if (member.live) {
68
+ live = true;
69
+ if (member.startedAt != null && Number.isFinite(member.startedAt)) {
70
+ liveStartedAt = member.startedAt;
71
+ }
72
+ continue;
73
+ }
74
+ if (member.durationMs != null && Number.isFinite(member.durationMs)) {
75
+ sealedMs += Math.max(0, member.durationMs);
76
+ anySealed = true;
77
+ }
78
+ }
79
+ if (live) {
80
+ const liveElapsed = liveStartedAt == null ? 0 : Math.max(0, now - liveStartedAt);
81
+ return {
82
+ live: true,
83
+ startedAt: liveStartedAt == null ? undefined : liveStartedAt - sealedMs,
84
+ durationMs: liveStartedAt != null || anySealed ? sealedMs + liveElapsed : undefined,
85
+ };
86
+ }
87
+ return {
88
+ live: false,
89
+ startedAt: undefined,
90
+ durationMs: anySealed ? sealedMs : undefined,
91
+ };
92
+ }
93
+ //# sourceMappingURL=tape-spans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tape-spans.js","sourceRoot":"","sources":["../../src/tui/tape-spans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { ApprovableJob } from "@inhuman.tools/harness-model";
2
+ import { type Client } from "@inhuman.tools/harness-sdk";
3
+ import type { ConnectionSpec } from "@inhuman.tools/plexus-expectations";
4
+ import { type DraftState } from "@inhuman.tools/quickdraw/input";
5
+ import { type ChromeQuotaWindow } from "@inhuman.tools/quickdraw/layout";
6
+ import { type BoxBusUpMessage, type SubmitCommand, type SubmitPart } from "@inhuman.tools/quickdraw/runtime";
7
+ import { type ComposerCommandChoice } from "@inhuman.tools/quickdraw/widgets";
8
+ import { type AckPromptModel } from "./ack-prompt.js";
9
+ import type { RootPaintInstance } from "./paint-dom.js";
10
+ import type { PaintDownMessage } from "./paint-transport.js";
11
+ import { UiNode } from "../interpreter/uiCapability.js";
12
+ /** Browser seam — tests inject a fake; production defaults hit the OS. */
13
+ export type TeaDeps = {
14
+ readonly open?: (url: string) => void;
15
+ readonly now?: () => number;
16
+ readonly title?: (text: string) => void;
17
+ /** `/quit` — host sets shutdown then kills this worker. */
18
+ readonly quit?: () => void;
19
+ /** `spec.resident` — host paints the Ctrl-C hint. */
20
+ readonly resident?: (on: boolean) => void;
21
+ /**
22
+ * `/new` — host worker-swap mint. Drawer switch passes `sessionId` (restore).
23
+ * `path` is the session being left. `draft` is slash remainder, not the `/new` token.
24
+ */
25
+ readonly replaceSession?: (opts: {
26
+ path: string;
27
+ draft?: string;
28
+ sessionId?: string;
29
+ }) => void;
30
+ };
31
+ export declare function bootComposerDraft(draft: string | undefined, connections: Iterable<ConnectionSpec>): string | undefined;
32
+ export declare class Tea implements Disposable {
33
+ #private;
34
+ readonly client: Client;
35
+ readonly post: (batch: readonly PaintDownMessage[]) => void;
36
+ accessor draft: DraftState;
37
+ /** Last honest submit. Parts and command stay apart; the string draft is typing only. */
38
+ accessor submission: {
39
+ parts: readonly SubmitPart[];
40
+ command: SubmitCommand | null;
41
+ } | null;
42
+ accessor selectedCommandKey: string | null;
43
+ accessor scrollOffset: number;
44
+ accessor escClearArmed: boolean;
45
+ accessor cols: number;
46
+ accessor rows: number;
47
+ constructor(client: Client, post: (batch: readonly PaintDownMessage[]) => void, options?: {
48
+ cols?: number;
49
+ rows?: number;
50
+ draft?: string;
51
+ } & TeaDeps);
52
+ /** Write tree. Cadence / visual present read the host replica, not this. */
53
+ get paintRoot(): RootPaintInstance;
54
+ flushPaint(): void;
55
+ get effectiveKey(): string | null;
56
+ /** Picker rows. Logic reads this; paint is not the catalog. */
57
+ get commandChoices(): readonly ComposerCommandChoice[] | undefined;
58
+ /** Composer title. Manual title wins; otherwise the latest metadata claim. */
59
+ get sessionTitle(): string;
60
+ /** Quota windows Tea hands to paint. Paint spells the remaining label. */
61
+ get quotaWindows(): readonly ChromeQuotaWindow[];
62
+ /** Parked confirm / oauth surface. Null when the composer owns the draft. */
63
+ get callbackSurface(): UiNode | null;
64
+ focusAt(index: number): void;
65
+ handle(message: BoxBusUpMessage): void;
66
+ [Symbol.dispose](): void;
67
+ }
68
+ /**
69
+ * The line over an approval: what kind of question this is and why the floor asked, the judge's
70
+ * reason when it weighed in, what the call is, and the folder question when one is suggested.
71
+ */
72
+ export declare function askAnnotation(leaf: ApprovableJob, asked: string | undefined, widen: {
73
+ readonly label: string;
74
+ } | undefined, ack?: AckPromptModel): string | undefined;
75
+ //# sourceMappingURL=tea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tea.d.ts","sourceRoot":"","sources":["../../src/tui/tea.ts"],"names":[],"mappings":"AASA,OAAO,EAOL,aAAa,EA6Bd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAEL,KAAK,MAAM,EAOZ,MAAM,4BAA4B,CAAC;AAapC,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,oCAAoC,CAAC;AAErF,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,KAAK,iBAAiB,EAA4C,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAEL,KAAK,eAAe,EAMpB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAKL,KAAK,qBAAqB,EAM3B,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAML,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAsBzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgB7D,OAAO,EAAgB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAMtE,0EAA0E;AAC1E,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAChG,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,GACpC,MAAM,GAAG,SAAS,CAMpB;AAED,qBAAa,GAAI,YAAW,UAAU;;IAqElC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,KAAK,IAAI;IArEjD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAwC;IAC9E,yFAAyF;IAC7E,QAAQ,CAAC,UAAU,EAAE;QAAE,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;QAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAQ;IACnG,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClD,QAAQ,CAAC,YAAY,SAAK;IAC1B,QAAQ,CAAC,aAAa,UAAS;IAC/B,QAAQ,CAAC,IAAI,SAAM;IACnB,QAAQ,CAAC,IAAI,SAAM;gBA6DpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,KAAK,IAAI,EAC3D,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAY;IAqH1E,4EAA4E;IAC5E,IAAI,SAAS,IAAI,iBAAiB,CAEjC;IAED,UAAU,IAAI,IAAI;IA+3BlB,IACI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IA0BD,+DAA+D;IAC/D,IAAI,cAAc,IAAI,SAAS,qBAAqB,EAAE,GAAG,SAAS,CAEjE;IAED,8EAA8E;IAC9E,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,0EAA0E;IAC1E,IAAI,YAAY,IAAI,SAAS,iBAAiB,EAAE,CAE/C;IAED,6EAA6E;IAC7E,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IA+DD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAkC5B,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAksCtC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAczB;AAoKD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EAC7C,GAAG,CAAC,EAAE,cAAc,GACnB,MAAM,GAAG,SAAS,CAgBpB"}