@mono-agent/tui 0.1.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 (74) hide show
  1. package/README.md +46 -0
  2. package/dist/agent/history.d.ts +30 -0
  3. package/dist/agent/history.d.ts.map +1 -0
  4. package/dist/agent/history.js +61 -0
  5. package/dist/agent/history.js.map +1 -0
  6. package/dist/agent/message-stream.d.ts +52 -0
  7. package/dist/agent/message-stream.d.ts.map +1 -0
  8. package/dist/agent/message-stream.js +110 -0
  9. package/dist/agent/message-stream.js.map +1 -0
  10. package/dist/agent/responder.d.ts +11 -0
  11. package/dist/agent/responder.d.ts.map +1 -0
  12. package/dist/agent/responder.js +11 -0
  13. package/dist/agent/responder.js.map +1 -0
  14. package/dist/bin/cli.d.ts +25 -0
  15. package/dist/bin/cli.d.ts.map +1 -0
  16. package/dist/bin/cli.js +112 -0
  17. package/dist/bin/cli.js.map +1 -0
  18. package/dist/bin/mono-agent-tui.d.ts +3 -0
  19. package/dist/bin/mono-agent-tui.d.ts.map +1 -0
  20. package/dist/bin/mono-agent-tui.js +39 -0
  21. package/dist/bin/mono-agent-tui.js.map +1 -0
  22. package/dist/components/ChatPane.d.ts +20 -0
  23. package/dist/components/ChatPane.d.ts.map +1 -0
  24. package/dist/components/ChatPane.js +142 -0
  25. package/dist/components/ChatPane.js.map +1 -0
  26. package/dist/components/ConfigPane.d.ts +12 -0
  27. package/dist/components/ConfigPane.d.ts.map +1 -0
  28. package/dist/components/ConfigPane.js +70 -0
  29. package/dist/components/ConfigPane.js.map +1 -0
  30. package/dist/components/HelpOverlay.d.ts +6 -0
  31. package/dist/components/HelpOverlay.d.ts.map +1 -0
  32. package/dist/components/HelpOverlay.js +18 -0
  33. package/dist/components/HelpOverlay.js.map +1 -0
  34. package/dist/components/HistoryPane.d.ts +9 -0
  35. package/dist/components/HistoryPane.d.ts.map +1 -0
  36. package/dist/components/HistoryPane.js +125 -0
  37. package/dist/components/HistoryPane.js.map +1 -0
  38. package/dist/components/StatusBar.d.ts +10 -0
  39. package/dist/components/StatusBar.d.ts.map +1 -0
  40. package/dist/components/StatusBar.js +15 -0
  41. package/dist/components/StatusBar.js.map +1 -0
  42. package/dist/components/TuiApp.d.ts +29 -0
  43. package/dist/components/TuiApp.d.ts.map +1 -0
  44. package/dist/components/TuiApp.js +81 -0
  45. package/dist/components/TuiApp.js.map +1 -0
  46. package/dist/components/primitives/Badge.d.ts +8 -0
  47. package/dist/components/primitives/Badge.d.ts.map +1 -0
  48. package/dist/components/primitives/Badge.js +14 -0
  49. package/dist/components/primitives/Badge.js.map +1 -0
  50. package/dist/components/primitives/Spinner.d.ts +6 -0
  51. package/dist/components/primitives/Spinner.d.ts.map +1 -0
  52. package/dist/components/primitives/Spinner.js +8 -0
  53. package/dist/components/primitives/Spinner.js.map +1 -0
  54. package/dist/components/primitives/TranscriptLine.d.ts +10 -0
  55. package/dist/components/primitives/TranscriptLine.d.ts.map +1 -0
  56. package/dist/components/primitives/TranscriptLine.js +15 -0
  57. package/dist/components/primitives/TranscriptLine.js.map +1 -0
  58. package/dist/config/pane.d.ts +25 -0
  59. package/dist/config/pane.d.ts.map +1 -0
  60. package/dist/config/pane.js +210 -0
  61. package/dist/config/pane.js.map +1 -0
  62. package/dist/index.d.ts +20 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +11 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/runtime/start.d.ts +27 -0
  67. package/dist/runtime/start.d.ts.map +1 -0
  68. package/dist/runtime/start.js +46 -0
  69. package/dist/runtime/start.js.map +1 -0
  70. package/dist/runtime/version.d.ts +7 -0
  71. package/dist/runtime/version.d.ts.map +1 -0
  72. package/dist/runtime/version.js +7 -0
  73. package/dist/runtime/version.js.map +1 -0
  74. package/package.json +43 -0
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Box, Text } from "ink";
4
+ const TONE_COLORS = {
5
+ neutral: "gray",
6
+ info: "cyan",
7
+ warning: "yellow",
8
+ error: "red",
9
+ success: "green",
10
+ };
11
+ export function Badge({ tone = "neutral", children }) {
12
+ return (_jsx(Box, { children: _jsx(Text, { color: TONE_COLORS[tone], children: children }) }));
13
+ }
14
+ //# sourceMappingURL=Badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.js","sourceRoot":"","sources":["../../../src/components/primitives/Badge.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,MAAM,WAAW,GAA8B;IAC7C,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;CACjB,CAAC;AAOF,MAAM,UAAU,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAc;IAC9D,OAAO,CACL,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,YAAG,QAAQ,GAAQ,GAC7C,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ export interface SpinnerProps {
3
+ readonly label: string;
4
+ }
5
+ export declare function Spinner({ label }: SpinnerProps): React.JSX.Element;
6
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CASlE"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Box, Text } from "ink";
4
+ import InkSpinner from "ink-spinner";
5
+ export function Spinner({ label }) {
6
+ return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(InkSpinner, { type: "dots" }) }), _jsxs(Text, { children: [" ", label] })] }));
7
+ }
8
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../../src/components/primitives/Spinner.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,UAAU,MAAM,aAAa,CAAC;AAMrC,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAgB;IAC7C,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAChB,KAAC,UAAU,IAAC,IAAI,EAAC,MAAM,GAAG,GACrB,EACP,MAAC,IAAI,oBAAG,KAAK,IAAQ,IACjB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import type { TuiHistoryRole, TuiHistoryStatus } from "../../agent/history.js";
3
+ export interface TranscriptLineProps {
4
+ readonly role: TuiHistoryRole;
5
+ readonly text: string;
6
+ readonly status?: TuiHistoryStatus;
7
+ readonly streaming?: boolean;
8
+ }
9
+ export declare function TranscriptLine({ role, text, status, streaming, }: TranscriptLineProps): React.JSX.Element;
10
+ //# sourceMappingURL=TranscriptLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranscriptLine.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/TranscriptLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAYD,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,GACV,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBzC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Box, Text } from "ink";
4
+ const ROLE_LABEL = {
5
+ user: "you",
6
+ assistant: "agent",
7
+ };
8
+ const ROLE_COLOR = {
9
+ user: "blueBright",
10
+ assistant: "magenta",
11
+ };
12
+ export function TranscriptLine({ role, text, status, streaming, }) {
13
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: ROLE_COLOR[role], bold: true, children: ROLE_LABEL[role] }), status === "cancelled" ? (_jsx(Text, { color: "yellow", children: " \u00B7 cancelled" })) : null, status === "error" ? _jsx(Text, { color: "red", children: " \u00B7 error" }) : null, streaming ? _jsx(Text, { color: "gray", children: " \u00B7 streaming" }) : null] }), _jsx(Box, { children: _jsx(Text, { children: text.length === 0 ? " " : text }) })] }));
14
+ }
15
+ //# sourceMappingURL=TranscriptLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranscriptLine.js","sourceRoot":"","sources":["../../../src/components/primitives/TranscriptLine.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAWhC,MAAM,UAAU,GAAmC;IACjD,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF,MAAM,UAAU,GAAmC;IACjD,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,GACW;IACpB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,kBAChC,UAAU,CAAC,IAAI,CAAC,GACZ,EACN,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,kCAAoB,CACzC,CAAC,CAAC,CAAC,IAAI,EACP,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,8BAAgB,CAAC,CAAC,CAAC,IAAI,EAC7D,SAAS,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kCAAoB,CAAC,CAAC,CAAC,IAAI,IACtD,EACN,KAAC,GAAG,cACF,KAAC,IAAI,cAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAQ,GACzC,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { MonoAgentConfigJson, RedactedMonoAgentConfig } from "@mono-agent/config";
2
+ export type TuiConfigFieldSource = "env" | "json" | "default";
3
+ export interface TuiConfigFieldSummary {
4
+ readonly label: string;
5
+ readonly value: string;
6
+ readonly source: TuiConfigFieldSource;
7
+ readonly redacted?: boolean;
8
+ }
9
+ export interface TuiConfigSummarySection {
10
+ readonly heading: string;
11
+ readonly fields: readonly TuiConfigFieldSummary[];
12
+ }
13
+ export interface BuildTuiConfigSummaryInput {
14
+ readonly redacted: RedactedMonoAgentConfig;
15
+ readonly json: MonoAgentConfigJson;
16
+ readonly env: Record<string, string | undefined>;
17
+ }
18
+ /**
19
+ * Build a compact, redacted view of the resolved configuration suitable for
20
+ * the TUI's Config pane. The pane is read-only — any edits should go through
21
+ * `@mono-agent/operator-console` so the console enforces the same registered-field
22
+ * patch validator and atomic writes.
23
+ */
24
+ export declare function buildTuiConfigSummary(input: BuildTuiConfigSummaryInput): readonly TuiConfigSummarySection[];
25
+ //# sourceMappingURL=pane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pane.d.ts","sourceRoot":"","sources":["../../src/config/pane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAClD;AA+ED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,SAAS,uBAAuB,EAAE,CA0JpC"}
@@ -0,0 +1,210 @@
1
+ const ENV_KEYS = {
2
+ runtimeModel: "MONO_AGENT_MODEL",
3
+ runtimeExecutionMode: "MONO_AGENT_EXECUTION_MODE",
4
+ runtimeEffort: "MONO_AGENT_EFFORT",
5
+ runtimeMaxTurns: "MONO_AGENT_MAX_TURNS",
6
+ runtimeWorkspace: "MONO_AGENT_WORKSPACE",
7
+ contextIdentity: "MONO_AGENT_IDENTITY_PATH",
8
+ contextSoul: "MONO_AGENT_SOUL_PATH",
9
+ contextSkillsRoot: "MONO_AGENT_SKILLS_ROOT",
10
+ contextSelectedSkills: "MONO_AGENT_SELECTED_SKILLS",
11
+ memoryPath: "MONO_AGENT_MEMORY_PATH",
12
+ memoryMaxBytes: "MONO_AGENT_MEMORY_MAX_BYTES",
13
+ memoryScope: "MONO_AGENT_MEMORY_SCOPE",
14
+ memoryWriteMode: "MONO_AGENT_MEMORY_WRITE_MODE",
15
+ toolsAllowed: "MONO_AGENT_ALLOWED_TOOLS",
16
+ toolsDisallowed: "MONO_AGENT_DISALLOWED_TOOLS",
17
+ toolsMcpConfigPath: "MONO_AGENT_MCP_CONFIG_PATH",
18
+ artifactsDir: "MONO_AGENT_ARTIFACT_DIR",
19
+ };
20
+ function envHas(env, key) {
21
+ if (key === undefined) {
22
+ return false;
23
+ }
24
+ const value = env[key];
25
+ return value !== undefined && value.trim().length > 0;
26
+ }
27
+ function resolveSource(env, spec) {
28
+ if (envHas(env, spec.envKey)) {
29
+ return "env";
30
+ }
31
+ if (spec.jsonPresent) {
32
+ return "json";
33
+ }
34
+ return "default";
35
+ }
36
+ function formatRuntimeModelReference(reference) {
37
+ if (typeof reference === "string") {
38
+ return reference;
39
+ }
40
+ if (reference.reference !== undefined && reference.reference.length > 0) {
41
+ return reference.reference;
42
+ }
43
+ const provider = reference.provider !== undefined ? `${reference.provider}:` : "";
44
+ return `${reference.sdk}:${provider}${reference.model}`;
45
+ }
46
+ function toField(env, spec) {
47
+ return {
48
+ label: spec.label,
49
+ value: spec.value,
50
+ source: resolveSource(env, spec),
51
+ ...(spec.redacted === true ? { redacted: true } : {}),
52
+ };
53
+ }
54
+ /**
55
+ * Build a compact, redacted view of the resolved configuration suitable for
56
+ * the TUI's Config pane. The pane is read-only — any edits should go through
57
+ * `@mono-agent/operator-console` so the console enforces the same registered-field
58
+ * patch validator and atomic writes.
59
+ */
60
+ export function buildTuiConfigSummary(input) {
61
+ const { redacted, json, env } = input;
62
+ const sections = [];
63
+ sections.push({
64
+ heading: "runtime",
65
+ fields: [
66
+ toField(env, {
67
+ label: "model",
68
+ envKey: ENV_KEYS.runtimeModel,
69
+ jsonPresent: json.runtime?.model !== undefined,
70
+ value: formatRuntimeModelReference(redacted.runtime.model),
71
+ }),
72
+ toField(env, {
73
+ label: "executionMode",
74
+ envKey: ENV_KEYS.runtimeExecutionMode,
75
+ jsonPresent: json.runtime?.executionMode !== undefined,
76
+ value: redacted.runtime.executionMode,
77
+ }),
78
+ toField(env, {
79
+ label: "effort",
80
+ envKey: ENV_KEYS.runtimeEffort,
81
+ jsonPresent: json.runtime?.effort !== undefined,
82
+ value: redacted.runtime.effort ?? "—",
83
+ }),
84
+ toField(env, {
85
+ label: "maxTurns",
86
+ envKey: ENV_KEYS.runtimeMaxTurns,
87
+ jsonPresent: json.runtime?.maxTurns !== undefined,
88
+ value: String(redacted.runtime.maxTurns),
89
+ }),
90
+ toField(env, {
91
+ label: "workspace",
92
+ envKey: ENV_KEYS.runtimeWorkspace,
93
+ jsonPresent: json.runtime?.workspace !== undefined,
94
+ value: redacted.runtime.workspace,
95
+ }),
96
+ ],
97
+ });
98
+ sections.push({
99
+ heading: "context",
100
+ fields: [
101
+ toField(env, {
102
+ label: "identityPath",
103
+ envKey: ENV_KEYS.contextIdentity,
104
+ jsonPresent: json.context?.identityPath !== undefined,
105
+ value: redacted.context.identityPath,
106
+ }),
107
+ ...(redacted.context.soulPath !== undefined
108
+ ? [
109
+ toField(env, {
110
+ label: "soulPath",
111
+ envKey: ENV_KEYS.contextSoul,
112
+ jsonPresent: json.context?.soulPath !== undefined,
113
+ value: redacted.context.soulPath,
114
+ }),
115
+ ]
116
+ : []),
117
+ toField(env, {
118
+ label: "skillsRoot",
119
+ envKey: ENV_KEYS.contextSkillsRoot,
120
+ jsonPresent: json.context?.skillsRoot !== undefined,
121
+ value: redacted.context.skillsRoot ?? "—",
122
+ }),
123
+ toField(env, {
124
+ label: "selectedSkills",
125
+ envKey: ENV_KEYS.contextSelectedSkills,
126
+ jsonPresent: json.context?.selectedSkills !== undefined,
127
+ value: String(redacted.context.selectedSkills.length),
128
+ }),
129
+ ],
130
+ });
131
+ if (redacted.memory !== undefined) {
132
+ sections.push({
133
+ heading: "memory",
134
+ fields: [
135
+ toField(env, {
136
+ label: "path",
137
+ envKey: ENV_KEYS.memoryPath,
138
+ jsonPresent: json.memory?.path !== undefined,
139
+ value: redacted.memory.path,
140
+ }),
141
+ toField(env, {
142
+ label: "maxBytes",
143
+ envKey: ENV_KEYS.memoryMaxBytes,
144
+ jsonPresent: json.memory?.maxBytes !== undefined,
145
+ value: String(redacted.memory.maxBytes),
146
+ }),
147
+ toField(env, {
148
+ label: "scope",
149
+ envKey: ENV_KEYS.memoryScope,
150
+ jsonPresent: json.memory?.scope !== undefined,
151
+ value: redacted.memory.scope,
152
+ }),
153
+ toField(env, {
154
+ label: "writeMode",
155
+ envKey: ENV_KEYS.memoryWriteMode,
156
+ jsonPresent: json.memory?.writeMode !== undefined,
157
+ value: redacted.memory.writeMode,
158
+ }),
159
+ ],
160
+ });
161
+ }
162
+ else {
163
+ sections.push({
164
+ heading: "memory",
165
+ fields: [
166
+ {
167
+ label: "status",
168
+ value: "not configured",
169
+ source: "default",
170
+ },
171
+ ],
172
+ });
173
+ }
174
+ sections.push({
175
+ heading: "tools",
176
+ fields: [
177
+ toField(env, {
178
+ label: "allowedTools",
179
+ envKey: ENV_KEYS.toolsAllowed,
180
+ jsonPresent: json.tools?.allowedTools !== undefined,
181
+ value: String(redacted.tools.allowedTools.length),
182
+ }),
183
+ toField(env, {
184
+ label: "disallowedTools",
185
+ envKey: ENV_KEYS.toolsDisallowed,
186
+ jsonPresent: json.tools?.disallowedTools !== undefined,
187
+ value: String(redacted.tools.disallowedTools.length),
188
+ }),
189
+ toField(env, {
190
+ label: "mcpConfigPath",
191
+ envKey: ENV_KEYS.toolsMcpConfigPath,
192
+ jsonPresent: json.tools?.mcpConfigPath !== undefined,
193
+ value: redacted.tools.mcpConfigPath ?? "—",
194
+ }),
195
+ ],
196
+ });
197
+ sections.push({
198
+ heading: "artifacts",
199
+ fields: [
200
+ toField(env, {
201
+ label: "dir",
202
+ envKey: ENV_KEYS.artifactsDir,
203
+ jsonPresent: json.artifacts?.dir !== undefined,
204
+ value: redacted.artifacts.dir,
205
+ }),
206
+ ],
207
+ });
208
+ return sections;
209
+ }
210
+ //# sourceMappingURL=pane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pane.js","sourceRoot":"","sources":["../../src/config/pane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type { AgentMessageStreamLike, AgentRequestLike, AgentResponderLike, AgentResponseLike, TuiAgentCancelledErrorOptions, } from "./agent/responder.js";
2
+ export { TuiAgentCancelledError, isTuiAgentCancelledError, } from "./agent/responder.js";
3
+ export type { CreateInMemoryTuiHistoryOptions, TuiHistoryMessage, TuiHistoryRole, TuiHistoryStatus, TuiHistoryStore, } from "./agent/history.js";
4
+ export { createInMemoryTuiHistory } from "./agent/history.js";
5
+ export type { TuiInkMessageStreamOptions, TuiStreamState, } from "./agent/message-stream.js";
6
+ export { TuiInkMessageStream } from "./agent/message-stream.js";
7
+ export type { ChatPaneProps } from "./components/ChatPane.js";
8
+ export { ChatPane } from "./components/ChatPane.js";
9
+ export type { HistoryPaneProps } from "./components/HistoryPane.js";
10
+ export { HistoryPane } from "./components/HistoryPane.js";
11
+ export type { ConfigPaneProps } from "./components/ConfigPane.js";
12
+ export { ConfigPane } from "./components/ConfigPane.js";
13
+ export type { BuildTuiConfigSummaryInput, TuiConfigFieldSource, TuiConfigFieldSummary, TuiConfigSummarySection, } from "./config/pane.js";
14
+ export { buildTuiConfigSummary } from "./config/pane.js";
15
+ export type { TuiAppConfigPaneOptions, TuiAppLogger, TuiAppProps, TuiPaneId, } from "./components/TuiApp.js";
16
+ export { TuiApp } from "./components/TuiApp.js";
17
+ export type { StartMonoAgentTuiHandle, StartMonoAgentTuiOptions, } from "./runtime/start.js";
18
+ export { startMonoAgentTui } from "./runtime/start.js";
19
+ export { TUI_PACKAGE_VERSION } from "./runtime/version.js";
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,+BAA+B,EAC/B,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,YAAY,EACV,0BAA0B,EAC1B,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,YAAY,EACV,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,SAAS,GACV,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,YAAY,EACV,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export { TuiAgentCancelledError, isTuiAgentCancelledError, } from "./agent/responder.js";
2
+ export { createInMemoryTuiHistory } from "./agent/history.js";
3
+ export { TuiInkMessageStream } from "./agent/message-stream.js";
4
+ export { ChatPane } from "./components/ChatPane.js";
5
+ export { HistoryPane } from "./components/HistoryPane.js";
6
+ export { ConfigPane } from "./components/ConfigPane.js";
7
+ export { buildTuiConfigSummary } from "./config/pane.js";
8
+ export { TuiApp } from "./components/TuiApp.js";
9
+ export { startMonoAgentTui } from "./runtime/start.js";
10
+ export { TUI_PACKAGE_VERSION } from "./runtime/version.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAQxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAMhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type TuiAppProps } from "../components/TuiApp.js";
2
+ export interface StartMonoAgentTuiOptions extends TuiAppProps {
3
+ readonly stdout?: NodeJS.WriteStream;
4
+ readonly stdin?: NodeJS.ReadStream;
5
+ readonly stderr?: NodeJS.WriteStream;
6
+ readonly debug?: boolean;
7
+ /**
8
+ * Forwarded to ink's `render({ patchConsole })`. Defaults to `false` so the
9
+ * TUI does not silently swallow host `console.*` output; set it to `true`
10
+ * to let Ink intercept and redraw console writes above the app.
11
+ */
12
+ readonly patchConsole?: boolean;
13
+ }
14
+ export interface StartMonoAgentTuiHandle {
15
+ /** Resolves once the Ink app unmounts (user quit or programmatic stop). */
16
+ waitUntilExit(): Promise<void>;
17
+ /** Unmount the app and restore the TTY. Idempotent. */
18
+ stop(): Promise<void>;
19
+ }
20
+ /**
21
+ * Mount the TUI against the live TTY (or the provided stdin/stdout pair).
22
+ *
23
+ * Hosts that already manage Ink should embed `<TuiApp />` directly; this
24
+ * convenience function wires `ink.render` for the common case.
25
+ */
26
+ export declare function startMonoAgentTui(options: StartMonoAgentTuiOptions): StartMonoAgentTuiHandle;
27
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/runtime/start.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,uDAAuD;IACvD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAgDzB"}
@@ -0,0 +1,46 @@
1
+ import React from "react";
2
+ import { render } from "ink";
3
+ import { TuiApp } from "../components/TuiApp.js";
4
+ /**
5
+ * Mount the TUI against the live TTY (or the provided stdin/stdout pair).
6
+ *
7
+ * Hosts that already manage Ink should embed `<TuiApp />` directly; this
8
+ * convenience function wires `ink.render` for the common case.
9
+ */
10
+ export function startMonoAgentTui(options) {
11
+ const { stdout, stdin, stderr, debug, patchConsole = false, ...appProps } = options;
12
+ const stdinTarget = stdin ?? process.stdin;
13
+ if (stdin === undefined &&
14
+ typeof stdinTarget.isTTY === "boolean" &&
15
+ stdinTarget.isTTY === false) {
16
+ throw new Error("startMonoAgentTui requires a TTY stdin. Pipe a stdin manually for non-TTY use.");
17
+ }
18
+ const instance = render(React.createElement(TuiApp, appProps), {
19
+ stdout: stdout ?? process.stdout,
20
+ stdin: stdinTarget,
21
+ stderr: stderr ?? process.stderr,
22
+ debug: debug ?? false,
23
+ patchConsole,
24
+ exitOnCtrlC: appProps.exitOnCtrlC ?? true,
25
+ });
26
+ let stopped = false;
27
+ return {
28
+ async waitUntilExit() {
29
+ await instance.waitUntilExit();
30
+ },
31
+ async stop() {
32
+ if (stopped) {
33
+ return;
34
+ }
35
+ stopped = true;
36
+ instance.unmount();
37
+ try {
38
+ await instance.waitUntilExit();
39
+ }
40
+ catch {
41
+ // ignore
42
+ }
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/runtime/start.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAoB,MAAM,yBAAyB,CAAC;AAsBnE;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAiC;IAEjC,MAAM,EACJ,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,EACL,YAAY,GAAG,KAAK,EACpB,GAAG,QAAQ,EACZ,GAAG,OAAO,CAAC;IAEZ,MAAM,WAAW,GAAG,KAAK,IAAK,OAAO,CAAC,KAA2B,CAAC;IAClE,IACE,KAAK,KAAK,SAAS;QACnB,OAAO,WAAW,CAAC,KAAK,KAAK,SAAS;QACtC,WAAW,CAAC,KAAK,KAAK,KAAK,EAC3B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC7D,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM;QAChC,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM;QAChC,KAAK,EAAE,KAAK,IAAI,KAAK;QACrB,YAAY;QACZ,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;KAC1C,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,KAAK,CAAC,aAAa;YACjB,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Bundled package version string for the help overlay. Updated manually
3
+ * when the package version changes; we avoid importing package.json at
4
+ * runtime so the dist remains a self-contained ESM module.
5
+ */
6
+ export declare const TUI_PACKAGE_VERSION = "0.1.0";
7
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/runtime/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Bundled package version string for the help overlay. Updated manually
3
+ * when the package version changes; we avoid importing package.json at
4
+ * runtime so the dist remains a self-contained ESM module.
5
+ */
6
+ export const TUI_PACKAGE_VERSION = "0.1.0";
7
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/runtime/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@mono-agent/tui",
3
+ "version": "0.1.0",
4
+ "description": "Ink-based React TUI console adapter for agent hosts: chat, history, redacted config view.",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "private": false,
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "bin": {
17
+ "mono-agent-tui": "./dist/bin/mono-agent-tui.js"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "README.md"
22
+ ],
23
+ "dependencies": {
24
+ "@mono-agent/agent-contracts": "0.1.0",
25
+ "@mono-agent/config": "0.1.0",
26
+ "ink": "^7.0.3",
27
+ "ink-spinner": "^5.0.0",
28
+ "ink-text-input": "^6.0.0",
29
+ "react": "^19.2.0"
30
+ },
31
+ "devDependencies": {
32
+ "@types/react": "^19.2.2",
33
+ "ink-testing-library": "^4.0.0"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "scripts": {
39
+ "build": "tsc -p tsconfig.build.json",
40
+ "typecheck": "tsc -p tsconfig.json --noEmit",
41
+ "test": "vitest run --passWithNoTests"
42
+ }
43
+ }