arc402-cli 1.8.2 → 1.8.4

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 (127) hide show
  1. package/dist/chat/harness.d.ts +1 -0
  2. package/dist/chat/harness.d.ts.map +1 -1
  3. package/dist/chat/harness.js +28 -3
  4. package/dist/chat/harness.js.map +1 -1
  5. package/dist/commands/chat.d.ts.map +1 -1
  6. package/dist/commands/chat.js +4 -3
  7. package/dist/commands/chat.js.map +1 -1
  8. package/dist/commands/daemon.d.ts.map +1 -1
  9. package/dist/commands/daemon.js +57 -11
  10. package/dist/commands/daemon.js.map +1 -1
  11. package/dist/commands/hire.d.ts.map +1 -1
  12. package/dist/commands/hire.js +6 -16
  13. package/dist/commands/hire.js.map +1 -1
  14. package/dist/commands/openshell.d.ts.map +1 -1
  15. package/dist/commands/openshell.js +12 -2
  16. package/dist/commands/openshell.js.map +1 -1
  17. package/dist/daemon/index.d.ts.map +1 -1
  18. package/dist/daemon/index.js +60 -1
  19. package/dist/daemon/index.js.map +1 -1
  20. package/dist/daemon/worker-executor.d.ts +1 -0
  21. package/dist/daemon/worker-executor.d.ts.map +1 -1
  22. package/dist/daemon/worker-executor.js +16 -1
  23. package/dist/daemon/worker-executor.js.map +1 -1
  24. package/dist/openshell-runtime.d.ts +6 -0
  25. package/dist/openshell-runtime.d.ts.map +1 -1
  26. package/dist/openshell-runtime.js +93 -4
  27. package/dist/openshell-runtime.js.map +1 -1
  28. package/dist/renderer/ThemedText.d.ts +2 -1
  29. package/dist/renderer/ThemedText.d.ts.map +1 -1
  30. package/dist/renderer/ThemedText.js +4 -1
  31. package/dist/renderer/ThemedText.js.map +1 -1
  32. package/dist/renderer/reconciler.d.ts.map +1 -1
  33. package/dist/renderer/reconciler.js +13 -1
  34. package/dist/renderer/reconciler.js.map +1 -1
  35. package/dist/renderer/render-frame.d.ts.map +1 -1
  36. package/dist/renderer/render-frame.js +13 -8
  37. package/dist/renderer/render-frame.js.map +1 -1
  38. package/dist/tui/App.d.ts +3 -1
  39. package/dist/tui/App.d.ts.map +1 -1
  40. package/dist/tui/App.js +82 -25
  41. package/dist/tui/App.js.map +1 -1
  42. package/dist/tui/Header.d.ts.map +1 -1
  43. package/dist/tui/Header.js +4 -2
  44. package/dist/tui/Header.js.map +1 -1
  45. package/dist/tui/InputLine.d.ts.map +1 -1
  46. package/dist/tui/InputLine.js +2 -1
  47. package/dist/tui/InputLine.js.map +1 -1
  48. package/dist/tui/KernelPayloadRenderer.d.ts.map +1 -1
  49. package/dist/tui/KernelPayloadRenderer.js +17 -0
  50. package/dist/tui/KernelPayloadRenderer.js.map +1 -1
  51. package/dist/tui/Viewport.d.ts +4 -8
  52. package/dist/tui/Viewport.d.ts.map +1 -1
  53. package/dist/tui/Viewport.js +19 -28
  54. package/dist/tui/Viewport.js.map +1 -1
  55. package/dist/tui/command-catalog.d.ts.map +1 -1
  56. package/dist/tui/command-catalog.js +7 -2
  57. package/dist/tui/command-catalog.js.map +1 -1
  58. package/dist/tui/command-renderers.d.ts +20 -12
  59. package/dist/tui/command-renderers.d.ts.map +1 -1
  60. package/dist/tui/command-renderers.js +154 -37
  61. package/dist/tui/command-renderers.js.map +1 -1
  62. package/dist/tui/components/AnsiTextLine.d.ts +4 -0
  63. package/dist/tui/components/AnsiTextLine.d.ts.map +1 -0
  64. package/dist/tui/components/AnsiTextLine.js +92 -0
  65. package/dist/tui/components/AnsiTextLine.js.map +1 -0
  66. package/dist/tui/components/Button.js +1 -1
  67. package/dist/tui/components/Button.js.map +1 -1
  68. package/dist/tui/components/ChatHarnessSelector.d.ts.map +1 -1
  69. package/dist/tui/components/ChatHarnessSelector.js +6 -5
  70. package/dist/tui/components/ChatHarnessSelector.js.map +1 -1
  71. package/dist/tui/components/CompletionDropdown.d.ts.map +1 -1
  72. package/dist/tui/components/CompletionDropdown.js +4 -3
  73. package/dist/tui/components/CompletionDropdown.js.map +1 -1
  74. package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -1
  75. package/dist/tui/components/ConfirmPrompt.js +2 -1
  76. package/dist/tui/components/ConfirmPrompt.js.map +1 -1
  77. package/dist/tui/components/commerce/FeedCard.d.ts +13 -0
  78. package/dist/tui/components/commerce/FeedCard.d.ts.map +1 -0
  79. package/dist/tui/components/commerce/FeedCard.js +26 -0
  80. package/dist/tui/components/commerce/FeedCard.js.map +1 -0
  81. package/dist/tui/components/commerce/HireFlow.d.ts +13 -0
  82. package/dist/tui/components/commerce/HireFlow.d.ts.map +1 -0
  83. package/dist/tui/components/commerce/HireFlow.js +109 -0
  84. package/dist/tui/components/commerce/HireFlow.js.map +1 -0
  85. package/dist/tui/components/commerce/JobStatusCard.d.ts +17 -0
  86. package/dist/tui/components/commerce/JobStatusCard.d.ts.map +1 -0
  87. package/dist/tui/components/commerce/JobStatusCard.js +11 -0
  88. package/dist/tui/components/commerce/JobStatusCard.js.map +1 -0
  89. package/dist/tui/components/commerce/RoundsList.js +1 -1
  90. package/dist/tui/components/commerce/RoundsList.js.map +1 -1
  91. package/dist/tui/components/commerce/StandingsCard.d.ts +13 -0
  92. package/dist/tui/components/commerce/StandingsCard.d.ts.map +1 -0
  93. package/dist/tui/components/commerce/StandingsCard.js +9 -0
  94. package/dist/tui/components/commerce/StandingsCard.js.map +1 -0
  95. package/dist/tui/components/commerce/StatusCard.d.ts.map +1 -1
  96. package/dist/tui/components/commerce/StatusCard.js +1 -2
  97. package/dist/tui/components/commerce/StatusCard.js.map +1 -1
  98. package/dist/tui/components/commerce/common.d.ts.map +1 -1
  99. package/dist/tui/components/commerce/common.js +17 -12
  100. package/dist/tui/components/commerce/common.js.map +1 -1
  101. package/dist/tui/index.d.ts.map +1 -1
  102. package/dist/tui/index.js +3 -1
  103. package/dist/tui/index.js.map +1 -1
  104. package/dist/tui/kernel-payload.d.ts +23 -0
  105. package/dist/tui/kernel-payload.d.ts.map +1 -1
  106. package/dist/tui/kernel.d.ts.map +1 -1
  107. package/dist/tui/kernel.js +350 -2
  108. package/dist/tui/kernel.js.map +1 -1
  109. package/dist/tui/useChat.d.ts.map +1 -1
  110. package/dist/tui/useChat.js +11 -12
  111. package/dist/tui/useChat.js.map +1 -1
  112. package/dist/tui/useDaemonEvents.d.ts.map +1 -1
  113. package/dist/tui/useDaemonEvents.js +142 -44
  114. package/dist/tui/useDaemonEvents.js.map +1 -1
  115. package/dist/tui/viewport-measure.d.ts +28 -0
  116. package/dist/tui/viewport-measure.d.ts.map +1 -0
  117. package/dist/tui/viewport-measure.js +35 -0
  118. package/dist/tui/viewport-measure.js.map +1 -0
  119. package/dist/ui/banner.d.ts +1 -0
  120. package/dist/ui/banner.d.ts.map +1 -1
  121. package/dist/ui/banner.js +54 -20
  122. package/dist/ui/banner.js.map +1 -1
  123. package/dist/walletconnect.d.ts +1 -0
  124. package/dist/walletconnect.d.ts.map +1 -1
  125. package/dist/walletconnect.js +195 -126
  126. package/dist/walletconnect.js.map +1 -1
  127. package/package.json +2 -2
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.DEFAULT_RUNTIME_REMOTE_ROOT = exports.OPENSHELL_RUNTIME_TARBALL = exports.OPENSHELL_RUNTIME_DIR = exports.OPENSHELL_TOML = exports.ARC402_DIR = void 0;
36
+ exports.DEFAULT_RUNTIME_REMOTE_ROOT = exports.OPENSHELL_RUNTIME_TARBALL = exports.OPENSHELL_RUNTIME_DIR = exports.OPENSHELL_TOML = exports.OPENSHELL_CONFIG_DIR = exports.ARC402_DIR = void 0;
37
37
  exports.runCmd = runCmd;
38
38
  exports.detectDockerAccess = detectDockerAccess;
39
39
  exports.resolveOpenShellSecrets = resolveOpenShellSecrets;
@@ -44,6 +44,8 @@ exports.buildRuntimeTarball = buildRuntimeTarball;
44
44
  exports.buildOpenShellSshConfig = buildOpenShellSshConfig;
45
45
  exports.provisionFileToSandbox = provisionFileToSandbox;
46
46
  exports.provisionRuntimeToSandbox = provisionRuntimeToSandbox;
47
+ exports.getOpenShellSandboxPhase = getOpenShellSandboxPhase;
48
+ exports.waitForOpenShellSandboxReady = waitForOpenShellSandboxReady;
47
49
  exports.shellEscape = shellEscape;
48
50
  const fs = __importStar(require("fs"));
49
51
  const os = __importStar(require("os"));
@@ -52,10 +54,14 @@ const child_process_1 = require("child_process");
52
54
  const smol_toml_1 = require("smol-toml");
53
55
  const config_1 = require("./config");
54
56
  exports.ARC402_DIR = path.join(os.homedir(), ".arc402");
57
+ exports.OPENSHELL_CONFIG_DIR = path.join(os.homedir(), ".config", "openshell");
55
58
  exports.OPENSHELL_TOML = path.join(exports.ARC402_DIR, "openshell.toml");
56
59
  exports.OPENSHELL_RUNTIME_DIR = path.join(exports.ARC402_DIR, "openshell-runtime");
57
60
  exports.OPENSHELL_RUNTIME_TARBALL = path.join(exports.OPENSHELL_RUNTIME_DIR, "arc402-cli-runtime.tgz");
58
61
  exports.DEFAULT_RUNTIME_REMOTE_ROOT = "/sandbox/.arc402/runtime/arc402-cli";
62
+ function stripAnsi(value) {
63
+ return value.replace(/\x1B\[[0-9;?]*[ -/]*[@-~]/g, "");
64
+ }
59
65
  function runCmd(cmd, args, opts = {}) {
60
66
  const result = (0, child_process_1.spawnSync)(cmd, args, {
61
67
  encoding: "utf-8",
@@ -205,10 +211,72 @@ function buildRuntimeTarball() {
205
211
  }
206
212
  return { cliRoot, tarballPath: exports.OPENSHELL_RUNTIME_TARBALL };
207
213
  }
214
+ function readActiveOpenShellGatewayMetadata() {
215
+ try {
216
+ const activeGatewayPath = path.join(exports.OPENSHELL_CONFIG_DIR, "active_gateway");
217
+ if (!fs.existsSync(activeGatewayPath))
218
+ return null;
219
+ const gatewayName = fs.readFileSync(activeGatewayPath, "utf-8").trim();
220
+ if (!gatewayName)
221
+ return null;
222
+ const metadataPath = path.join(exports.OPENSHELL_CONFIG_DIR, "gateways", gatewayName, "metadata.json");
223
+ if (!fs.existsSync(metadataPath))
224
+ return null;
225
+ const parsed = JSON.parse(fs.readFileSync(metadataPath, "utf-8"));
226
+ if (!parsed.gateway_endpoint || typeof parsed.gateway_endpoint !== "string")
227
+ return null;
228
+ return {
229
+ name: typeof parsed.name === "string" ? parsed.name : gatewayName,
230
+ gateway_endpoint: parsed.gateway_endpoint,
231
+ gateway_port: typeof parsed.gateway_port === "number" ? parsed.gateway_port : undefined,
232
+ is_remote: typeof parsed.is_remote === "boolean" ? parsed.is_remote : undefined,
233
+ };
234
+ }
235
+ catch {
236
+ return null;
237
+ }
238
+ }
239
+ function diagnoseOpenShellGatewayCollision() {
240
+ const metadata = readActiveOpenShellGatewayMetadata();
241
+ if (!metadata?.gateway_endpoint)
242
+ return null;
243
+ try {
244
+ const endpoint = new URL(metadata.gateway_endpoint);
245
+ if (endpoint.protocol !== "https:" || !["127.0.0.1", "localhost"].includes(endpoint.hostname)) {
246
+ return null;
247
+ }
248
+ const tlsProbe = runCmd("curl", ["-skI", "--max-time", "5", metadata.gateway_endpoint], { timeout: 8000 });
249
+ if (tlsProbe.ok)
250
+ return null;
251
+ const plainHttpUrl = `http://${endpoint.host}/`;
252
+ const httpProbe = runCmd("curl", ["-sI", "--max-time", "5", plainHttpUrl], { timeout: 8000 });
253
+ const tlsDetail = `${tlsProbe.stderr}\n${tlsProbe.stdout}`.toLowerCase();
254
+ const serverHeader = httpProbe.stdout
255
+ .split("\n")
256
+ .map((line) => line.trim())
257
+ .find((line) => /^server:/i.test(line));
258
+ if (httpProbe.ok || /wrong version number|invalidcontenttype|tls/.test(tlsDetail)) {
259
+ return [
260
+ `OpenShell gateway endpoint ${metadata.gateway_endpoint} is not serving the expected TLS gateway.`,
261
+ `Plain HTTP is responding on ${endpoint.host}${serverHeader ? ` (${serverHeader})` : ""}.`,
262
+ "Another local process is likely occupying the configured gateway port.",
263
+ "Fix: recreate OpenShell on a free port, for example `openshell gateway start --port 18081 --recreate`.",
264
+ ].join(" ");
265
+ }
266
+ }
267
+ catch {
268
+ return null;
269
+ }
270
+ return null;
271
+ }
272
+ function augmentOpenShellError(message) {
273
+ const diagnosis = diagnoseOpenShellGatewayCollision();
274
+ return diagnosis ? `${message}\n${diagnosis}` : message;
275
+ }
208
276
  function buildOpenShellSshConfig(sandboxName) {
209
277
  const sshConfig = runCmd("openshell", ["sandbox", "ssh-config", sandboxName], { timeout: 120000 });
210
278
  if (!sshConfig.ok || !sshConfig.stdout.trim()) {
211
- throw new Error(`Failed to get OpenShell SSH config for sandbox ${sandboxName}: ${sshConfig.stderr || sshConfig.stdout || "unknown error"}`);
279
+ throw new Error(augmentOpenShellError(`Failed to get OpenShell SSH config for sandbox ${sandboxName}: ${sshConfig.stderr || sshConfig.stdout || "unknown error"}`));
212
280
  }
213
281
  const hostMatch = sshConfig.stdout.match(/^Host\s+(\S+)/m);
214
282
  if (!hostMatch) {
@@ -227,7 +295,7 @@ function provisionFileToSandbox(sandboxName, localPath, remotePath) {
227
295
  const { configPath, host } = buildOpenShellSshConfig(sandboxName);
228
296
  const prep = runCmd("ssh", ["-F", configPath, host, `rm -rf ${shellEscape(uploadDir)} && mkdir -p ${shellEscape(uploadDir)} && mkdir -p ${shellEscape(remoteDir)}`], { timeout: 120000 });
229
297
  if (!prep.ok) {
230
- throw new Error(`Failed to prepare remote upload directory: ${prep.stderr || prep.stdout}`);
298
+ throw new Error(augmentOpenShellError(`Failed to prepare remote upload directory: ${prep.stderr || prep.stdout}`));
231
299
  }
232
300
  const upload = runCmd("openshell", ["sandbox", "upload", sandboxName, localPath, uploadDir], { timeout: 300000 });
233
301
  if (!upload.ok) {
@@ -246,7 +314,7 @@ function provisionRuntimeToSandbox(sandboxName, remoteRoot = exports.DEFAULT_RUN
246
314
  const { configPath, host } = buildOpenShellSshConfig(sandboxName);
247
315
  const prep = runCmd("ssh", ["-F", configPath, host, `rm -rf ${shellEscape(remoteUploadDir)} && mkdir -p ${shellEscape(remoteUploadDir)}`], { timeout: 120000 });
248
316
  if (!prep.ok) {
249
- throw new Error(`Failed to prepare remote upload directory: ${prep.stderr || prep.stdout}`);
317
+ throw new Error(augmentOpenShellError(`Failed to prepare remote upload directory: ${prep.stderr || prep.stdout}`));
250
318
  }
251
319
  const upload = runCmd("openshell", ["sandbox", "upload", sandboxName, tarballPath, remoteUploadDir], { timeout: 300000 });
252
320
  if (!upload.ok) {
@@ -262,6 +330,27 @@ function provisionRuntimeToSandbox(sandboxName, remoteRoot = exports.DEFAULT_RUN
262
330
  }
263
331
  return { tarballPath, remoteRoot };
264
332
  }
333
+ function getOpenShellSandboxPhase(sandboxName) {
334
+ const result = runCmd("openshell", ["sandbox", "get", sandboxName], { timeout: 120000 });
335
+ if (!result.ok && !(result.stdout || result.stderr))
336
+ return null;
337
+ const plain = stripAnsi(`${result.stdout}\n${result.stderr}`);
338
+ const match = plain.match(/Phase:\s+([A-Za-z]+)/i);
339
+ return match ? match[1] : null;
340
+ }
341
+ async function waitForOpenShellSandboxReady(sandboxName, opts = {}) {
342
+ const timeoutMs = opts.timeoutMs ?? 300000;
343
+ const intervalMs = opts.intervalMs ?? 2000;
344
+ const startedAt = Date.now();
345
+ let lastPhase = getOpenShellSandboxPhase(sandboxName) ?? "unknown";
346
+ while (Date.now() - startedAt < timeoutMs) {
347
+ if (/ready|running/i.test(lastPhase))
348
+ return;
349
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
350
+ lastPhase = getOpenShellSandboxPhase(sandboxName) ?? lastPhase;
351
+ }
352
+ throw new Error(`Sandbox ${sandboxName} is not ready yet (last phase: ${lastPhase}).`);
353
+ }
265
354
  function shellEscape(value) {
266
355
  return `'${value.replace(/'/g, `'"'"'`)}'`;
267
356
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openshell-runtime.js","sourceRoot":"","sources":["../src/openshell-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openshell-runtime.js","sourceRoot":"","sources":["../src/openshell-runtime.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { Color } from './cell.js';
3
3
  import type { Theme } from './theme.js';
4
4
  interface ThemedTextProps {
5
5
  variant?: keyof Theme['components'];
6
+ themeColor?: keyof Theme['colors'];
6
7
  color?: Color | null;
7
8
  bold?: boolean;
8
9
  dim?: boolean;
@@ -10,7 +11,7 @@ interface ThemedTextProps {
10
11
  underline?: boolean;
11
12
  children: React.ReactNode;
12
13
  }
13
- export declare function ThemedText({ variant, color, bold, dim, italic, underline, children }: ThemedTextProps): React.CElement<{
14
+ export declare function ThemedText({ variant, themeColor, color, bold, dim, italic, underline, children }: ThemedTextProps): React.CElement<{
14
15
  color: string | undefined;
15
16
  bold: boolean | undefined;
16
17
  dimColor: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedText.d.ts","sourceRoot":"","sources":["../../src/renderer/ThemedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,UAAU,eAAe;IAEvB,OAAO,CAAC,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAEpC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe;;;;;;;;;;;;cAyBrG"}
1
+ {"version":3,"file":"ThemedText.d.ts","sourceRoot":"","sources":["../../src/renderer/ThemedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,UAAU,eAAe;IAEvB,OAAO,CAAC,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAEpC,UAAU,CAAC,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe;;;;;;;;;;;;cA6BjH"}
@@ -7,11 +7,14 @@ exports.ThemedText = ThemedText;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const ThemeProvider_js_1 = require("./ThemeProvider.js");
9
9
  const ink_js_1 = require("./ink.js");
10
- function ThemedText({ variant, color, bold, dim, italic, underline, children }) {
10
+ function ThemedText({ variant, themeColor, color, bold, dim, italic, underline, children }) {
11
11
  const theme = (0, ThemeProvider_js_1.useTheme)();
12
12
  let resolvedColor = color;
13
13
  let resolvedBold = bold;
14
14
  let resolvedDim = dim;
15
+ if (themeColor && resolvedColor === undefined) {
16
+ resolvedColor = theme.colors[themeColor] ?? null;
17
+ }
15
18
  if (variant) {
16
19
  const style = theme.components[variant];
17
20
  if (resolvedColor === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedText.js","sourceRoot":"","sources":["../../src/renderer/ThemedText.tsx"],"names":[],"mappings":";;;;;AAkBA,gCAyBC;AA3CD,kDAA0B;AAC1B,yDAAiE;AACjE,qCAAgC;AAgBhC,SAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAmB;IACpG,MAAM,KAAK,GAAG,IAAA,2BAAQ,GAAE,CAAC;IAEzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,WAAW,GAAG,GAAG,CAAC;IAEtB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAA4B,CAAC;QACnE,IAAI,aAAa,KAAK,SAAS;YAAE,aAAa,GAAI,KAAK,CAAC,EAA+B,IAAI,IAAI,CAAC;QAChG,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI;YAAE,YAAY,GAAG,KAAK,CAAC,IAAe,CAAC;IACrF,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,IAAI,IAAI;QACpC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QACrJ,CAAC,CAAC,SAAS,CAAC;IAEd,8DAA8D;IAC9D,OAAO,eAAK,CAAC,aAAa,CAAC,aAAW,EAAE;QACtC,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,WAAW;QACrB,MAAM;QACN,SAAS;KACV,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"ThemedText.js","sourceRoot":"","sources":["../../src/renderer/ThemedText.tsx"],"names":[],"mappings":";;;;;AAmBA,gCA6BC;AAhDD,kDAA0B;AAC1B,yDAA8C;AAC9C,qCAAgC;AAiBhC,SAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAmB;IAChH,MAAM,KAAK,GAAG,IAAA,2BAAQ,GAAE,CAAC;IAEzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,WAAW,GAAG,GAAG,CAAC;IAEtB,IAAI,UAAU,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9C,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAA4B,CAAC;QACnE,IAAI,aAAa,KAAK,SAAS;YAAE,aAAa,GAAI,KAAK,CAAC,EAA+B,IAAI,IAAI,CAAC;QAChG,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI;YAAE,YAAY,GAAG,KAAK,CAAC,IAAe,CAAC;IACrF,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,IAAI,IAAI;QACpC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QACrJ,CAAC,CAAC,SAAS,CAAC;IAEd,8DAA8D;IAC9D,OAAO,eAAK,CAAC,aAAa,CAAC,aAAW,EAAE;QACtC,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,WAAW;QACrB,MAAM;QACN,SAAS;KACV,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../../src/renderer/reconciler.ts"],"names":[],"mappings":"AAsBA,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAEhD;AA+FD,eAAO,MAAM,UAAU,EAAE,GAAiC,CAAC"}
1
+ {"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../../src/renderer/reconciler.ts"],"names":[],"mappings":"AAsBA,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAEhD;AA2GD,eAAO,MAAM,UAAU,EAAE,GAAiC,CAAC"}
@@ -14,7 +14,19 @@ function resolveColor(color) {
14
14
  if (!color)
15
15
  return null;
16
16
  if (typeof color === 'string') {
17
- return cell_js_1.COLORS[color] ?? null;
17
+ if (color in cell_js_1.COLORS) {
18
+ return cell_js_1.COLORS[color] ?? null;
19
+ }
20
+ const hex = color.trim().match(/^#?([0-9a-fA-F]{6})$/);
21
+ if (hex) {
22
+ const value = hex[1];
23
+ return {
24
+ r: Number.parseInt(value.slice(0, 2), 16),
25
+ g: Number.parseInt(value.slice(2, 4), 16),
26
+ b: Number.parseInt(value.slice(4, 6), 16),
27
+ };
28
+ }
29
+ return null;
18
30
  }
19
31
  return color;
20
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../src/renderer/reconciler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../src/renderer/reconciler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render-frame.d.ts","sourceRoot":"","sources":["../../src/renderer/render-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAA+D,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,KAAK,EAAe,MAAM,WAAW,CAAC;AAoB/C,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAkBxD;AAOD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAElF"}
1
+ {"version":3,"file":"render-frame.d.ts","sourceRoot":"","sources":["../../src/renderer/render-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAS,MAAM,WAAW,CAAC;AA0BzC,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAiBxD;AAOD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAElF"}
@@ -6,6 +6,10 @@ const layout_js_1 = require("./layout.js");
6
6
  const DEFAULT_STYLE = {
7
7
  fg: null, bg: null, bold: false, dim: false, italic: false, underline: false,
8
8
  };
9
+ const ANSI_ESCAPE_REGEX = /\u001B\[[0-9;]*[A-Za-z]/g;
10
+ function stripAnsi(value) {
11
+ return value.replace(ANSI_ESCAPE_REGEX, '');
12
+ }
9
13
  /** Build a LayoutNode tree mirroring the DOMNode tree */
10
14
  function buildLayoutTree(dom) {
11
15
  if (dom.type === 'root' || dom.type === 'box') {
@@ -16,7 +20,6 @@ function buildLayoutTree(dom) {
16
20
  }
17
21
  return layout;
18
22
  }
19
- // Text node: preserve explicit newlines in intrinsic size.
20
23
  const flatText = flattenText(dom);
21
24
  const textLines = flatText.split('\n');
22
25
  const textWidth = textLines.reduce((max, line) => Math.max(max, line.length), 0);
@@ -27,7 +30,7 @@ function buildLayoutTree(dom) {
27
30
  }
28
31
  function flattenText(dom) {
29
32
  if (dom.text !== undefined)
30
- return dom.text;
33
+ return stripAnsi(dom.text);
31
34
  return dom.children.map(flattenText).join('');
32
35
  }
33
36
  /** Walk DOMNode + LayoutNode trees in parallel, write to frame */
@@ -46,22 +49,24 @@ function renderNode(dom, layout, frame, inherited) {
46
49
  }
47
50
  return;
48
51
  }
49
- // Text node
50
52
  const chars = collectStyledChars(dom, inherited);
51
- let cx = 0, cy = 0;
53
+ const renderWidth = Math.max(1, Math.min(width || cols, Math.max(1, cols - Math.floor(x))));
54
+ const renderHeight = Math.max(0, Math.min(height || rows, Math.max(0, rows - Math.floor(y))));
55
+ let cx = 0;
56
+ let cy = 0;
52
57
  for (const { char, style } of chars) {
53
58
  if (char === '\n') {
54
59
  cx = 0;
55
60
  cy++;
56
- if (cy >= height)
61
+ if (cy >= renderHeight)
57
62
  break;
58
63
  continue;
59
64
  }
60
- if (cx >= width) {
65
+ if (cx >= renderWidth) {
61
66
  cx = 0;
62
67
  cy++;
63
68
  }
64
- if (cy >= height)
69
+ if (cy >= renderHeight)
65
70
  break;
66
71
  const row = Math.floor(y + cy);
67
72
  const col = Math.floor(x + cx);
@@ -81,7 +86,7 @@ function renderNode(dom, layout, frame, inherited) {
81
86
  function collectStyledChars(dom, inherited) {
82
87
  const merged = mergeStyle(inherited, dom.textStyle);
83
88
  if (dom.text !== undefined) {
84
- return [...dom.text].map(ch => ({ char: ch, style: merged }));
89
+ return [...stripAnsi(dom.text)].map(ch => ({ char: ch, style: merged }));
85
90
  }
86
91
  const result = [];
87
92
  for (const child of dom.children) {
@@ -1 +1 @@
1
- {"version":3,"file":"render-frame.js","sourceRoot":"","sources":["../../src/renderer/render-frame.ts"],"names":[],"mappings":";;AAuBA,0CAkBC;AAQD,sCAEC;AAlDD,2CAAsG;AAYtG,MAAM,aAAa,GAAc;IAC/B,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK;CAC7E,CAAC;AAOF,yDAAyD;AACzD,SAAgB,eAAe,CAAC,GAAY;IAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAA,4BAAgB,EAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,OAAO,IAAA,4BAAgB,EAAC;QACtB,KAAK,EAAE,SAAS,IAAI,CAAC;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAChE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAC5C,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,kEAAkE;AAClE,SAAgB,aAAa,CAAC,GAAY,EAAE,MAAkB,EAAE,KAAY;IAC1E,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,UAAU,CAAC,GAAY,EAAE,MAAkB,EAAE,KAAY,EAAE,SAAoB;IACtF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEvC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC/B,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,YAAY;IACZ,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,EAAE,GAAG,CAAC,CAAC;YACP,EAAE,EAAE,CAAC;YACL,IAAI,EAAE,IAAI,MAAM;gBAAE,MAAM;YACxB,SAAS;QACX,CAAC;QACD,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YAAC,EAAE,GAAG,CAAC,CAAC;YAAC,EAAE,EAAE,CAAC;QAAC,CAAC;QAClC,IAAI,EAAE,IAAI,MAAM;YAAE,MAAM;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,CAAC;QACD,EAAE,EAAE,CAAC;IACP,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAE,SAAoB;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,MAAiB,EAAE,KAA4B;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO;QACL,EAAE,EAAS,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QACxD,EAAE,EAAS,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QACxD,IAAI,EAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QAC9D,GAAG,EAAQ,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;QAC3D,MAAM,EAAK,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;QACpE,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;KAC9E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"render-frame.js","sourceRoot":"","sources":["../../src/renderer/render-frame.ts"],"names":[],"mappings":"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"}
package/dist/tui/App.d.ts CHANGED
@@ -3,10 +3,12 @@ interface AppProps {
3
3
  network?: string;
4
4
  wallet?: string;
5
5
  balance?: string;
6
+ chainId: number;
7
+ walletConnectProjectId?: string;
6
8
  }
7
9
  /**
8
10
  * Root TUI component — fixed header/footer with scrollable viewport.
9
11
  */
10
- export declare function App({ version, network, wallet, balance }: AppProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function App({ version, network, wallet, balance, chainId, walletConnectProjectId }: AppProps): import("react/jsx-runtime").JSX.Element;
11
13
  export {};
12
14
  //# sourceMappingURL=App.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAwBA,UAAU,QAAQ;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,2CA2PlE"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAyBA,UAAU,QAAQ;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,QAAQ,2CA2TnG"}
package/dist/tui/App.js CHANGED
@@ -21,33 +21,38 @@ const useScroll_1 = require("./useScroll");
21
21
  const banner_1 = require("../ui/banner");
22
22
  const kernel_1 = require("./kernel");
23
23
  const command_catalog_1 = require("./command-catalog");
24
+ const HireFlow_1 = require("./components/commerce/HireFlow");
25
+ const WalletConnectPairing_1 = require("./WalletConnectPairing");
26
+ const config_1 = require("../config");
27
+ const walletconnect_1 = require("../walletconnect");
24
28
  const chalk_1 = __importDefault(require("chalk"));
25
- // eslint-disable-next-line @typescript-eslint/no-var-requires
26
- const pkg = require("../../package.json");
27
29
  const BUILTIN_CMDS = ["help", "exit", "quit", "clear", "status"];
28
30
  /**
29
31
  * Root TUI component — fixed header/footer with scrollable viewport.
30
32
  */
31
- function App({ version, network, wallet, balance }) {
33
+ function App({ version, network, wallet, balance, chainId, walletConnectProjectId }) {
32
34
  const { exit } = (0, index_js_1.useApp)();
33
35
  const [outputBuffer, setOutputBuffer] = (0, react_1.useState)([
34
36
  chalk_1.default.dim(" Type 'help' to see available commands"),
35
37
  "",
36
38
  ]);
37
39
  const [isProcessing, setIsProcessing] = (0, react_1.useState)(false);
40
+ const [hireFlowOpen, setHireFlowOpen] = (0, react_1.useState)(false);
41
+ const [walletPairingOpen, setWalletPairingOpen] = (0, react_1.useState)(false);
38
42
  const { execute, isRunning } = (0, useCommand_1.useCommand)();
39
43
  const { send, isSending, isChatMode, activeHarnessLabel, harnessChoices, selectedHarnessIndex, selectorVisible, beginChat, cancelSelector, moveSelection, confirmSelection, } = (0, useChat_1.useChat)();
40
- // Measure viewport height from actual terminal size and real header line count.
41
- // The separator Box rendered between Header and Viewport adds 1 row.
42
- // Footer (InputLine) is 1 row.
43
- const { rows } = (0, index_js_1.useTerminalSize)();
44
- const headerLineCount = (0, banner_1.getBannerLines)({ network, wallet, balance }).length;
45
- const SEPARATOR_ROWS = 1;
46
- const FOOTER_ROWS = 1;
47
- const viewportHeight = Math.max(1, rows - headerLineCount - SEPARATOR_ROWS - FOOTER_ROWS);
48
- const { scrollOffset, isAutoScroll, scrollUp, scrollDown, snapToBottom } = (0, useScroll_1.useScroll)(viewportHeight);
49
- const [topCmds] = (0, react_1.useState)(() => (0, kernel_1.getTuiTopLevelCommands)());
50
44
  const { toasts, push: pushToast, dismiss } = (0, useNotifications_1.useNotifications)();
45
+ const { rows, columns } = (0, index_js_1.useTerminalSize)();
46
+ const headerLineCount = (0, banner_1.getBannerLines)({ network, wallet, balance, width: columns }).length;
47
+ const separatorRows = 1;
48
+ const selectorRows = selectorVisible ? harnessChoices.length + 2 : 0;
49
+ const chatStatusRows = isChatMode ? 1 : 0;
50
+ const hireFlowRows = hireFlowOpen ? 18 : 0;
51
+ const walletPairingRows = walletPairingOpen ? 26 : 0;
52
+ const toastRows = toasts.length;
53
+ const footerRows = 1 + selectorRows + chatStatusRows + hireFlowRows + walletPairingRows;
54
+ const viewportHeight = Math.max(1, rows - headerLineCount - separatorRows - footerRows - toastRows);
55
+ const { scrollOffset, isAutoScroll, scrollUp, scrollDown, snapToBottom } = (0, useScroll_1.useScroll)(viewportHeight);
51
56
  (0, useDaemonEvents_1.useDaemonEvents)((type, data) => {
52
57
  switch (type) {
53
58
  case "hire_proposed":
@@ -76,8 +81,32 @@ function App({ version, network, wallet, balance }) {
76
81
  const appendEntry = (0, react_1.useCallback)((entry) => {
77
82
  setOutputBuffer((prev) => [...prev, entry]);
78
83
  }, []);
84
+ const buildHireCommand = (0, react_1.useCallback)((agentWallet, task, price, serviceType) => {
85
+ return [
86
+ "hire",
87
+ agentWallet,
88
+ "--task",
89
+ task,
90
+ "--service-type",
91
+ serviceType,
92
+ "--max",
93
+ price,
94
+ "--deadline",
95
+ "24h",
96
+ ].map((token) => JSON.stringify(token)).join(" ");
97
+ }, []);
98
+ const connectWalletInTui = (0, react_1.useCallback)(async (callbacks) => {
99
+ const config = (0, config_1.loadConfig)();
100
+ if (!walletConnectProjectId) {
101
+ throw new Error("walletConnectProjectId not set. Run `arc402 config set walletConnectProjectId <id>`. ");
102
+ }
103
+ const result = await (0, walletconnect_1.connectPhoneWallet)(walletConnectProjectId, chainId, config, {
104
+ prompt: "Connect your owner wallet",
105
+ callbacks,
106
+ });
107
+ return { account: result.account };
108
+ }, [chainId, walletConnectProjectId]);
79
109
  const handleCommand = (0, react_1.useCallback)(async (input) => {
80
- // Echo command to viewport
81
110
  appendLine(chalk_1.default.cyanBright("◈") +
82
111
  " " +
83
112
  chalk_1.default.dim("arc402") +
@@ -85,25 +114,21 @@ function App({ version, network, wallet, balance }) {
85
114
  chalk_1.default.white(">") +
86
115
  " " +
87
116
  chalk_1.default.white(input));
88
- // Snap to bottom on new command
89
117
  snapToBottom();
90
118
  setIsProcessing(true);
91
119
  const firstWord = input.split(/\s+/)[0];
92
- const allKnown = [...BUILTIN_CMDS, ...topCmds];
93
- // ── Built-in: exit/quit ────────────────────────────────────────────────
120
+ const allKnown = [...BUILTIN_CMDS, ...command_catalog_1.TUI_TOP_LEVEL_COMMANDS];
94
121
  if (input === "exit" || input === "quit") {
95
122
  appendLine(" " + chalk_1.default.cyanBright("◈") + chalk_1.default.dim(" goodbye"));
96
123
  setIsProcessing(false);
97
124
  setTimeout(() => exit(), 100);
98
125
  return;
99
126
  }
100
- // ── Built-in: clear ────────────────────────────────────────────────────
101
127
  if (input === "clear") {
102
128
  setOutputBuffer([]);
103
129
  setIsProcessing(false);
104
130
  return;
105
131
  }
106
- // ── Built-in: help ─────────────────────────────────────────────────────
107
132
  if (input === "help" || input === "/help") {
108
133
  const lines = [
109
134
  chalk_1.default.cyanBright("◈ ARC-402 TUI"),
@@ -127,7 +152,20 @@ function App({ version, network, wallet, balance }) {
127
152
  setIsProcessing(false);
128
153
  return;
129
154
  }
130
- // ── chat mode / harness-aware shell ───────────────────────────────────
155
+ if (input === "hire") {
156
+ setHireFlowOpen(true);
157
+ appendLine(chalk_1.default.dim(" Opening interactive hire flow…"));
158
+ appendLine("");
159
+ setIsProcessing(false);
160
+ return;
161
+ }
162
+ if (input === "wallet connect") {
163
+ setWalletPairingOpen(true);
164
+ appendLine(chalk_1.default.dim(" Opening WalletConnect pairing…"));
165
+ appendLine("");
166
+ setIsProcessing(false);
167
+ return;
168
+ }
131
169
  if (input === "chat") {
132
170
  beginChat(appendLine);
133
171
  appendLine("");
@@ -155,7 +193,6 @@ function App({ version, network, wallet, balance }) {
155
193
  setIsProcessing(false);
156
194
  return;
157
195
  }
158
- // ── TUI kernel — returns typed payload → rendered as Phase 2 Ink component ──
159
196
  const kernelPayload = await (0, kernel_1.executeKernelForPayload)(input);
160
197
  if (kernelPayload !== null) {
161
198
  appendEntry(kernelPayload);
@@ -163,12 +200,17 @@ function App({ version, network, wallet, balance }) {
163
200
  setIsProcessing(false);
164
201
  return;
165
202
  }
166
- // ── Dispatch to commander ──────────────────────────────────────────────
167
203
  await execute(input, appendLine);
168
204
  appendLine("");
169
205
  setIsProcessing(false);
170
- }, [appendLine, appendEntry, execute, send, snapToBottom, topCmds, network, wallet, balance, exit]);
206
+ }, [appendLine, appendEntry, execute, send, snapToBottom, exit, beginChat, isChatMode, selectorVisible]);
171
207
  (0, index_js_1.useInput)((event) => {
208
+ if (walletPairingOpen && event.key === "escape") {
209
+ setWalletPairingOpen(false);
210
+ pushToast("WalletConnect pairing cancelled", "info");
211
+ appendLine(chalk_1.default.dim(" WalletConnect pairing cancelled."));
212
+ return;
213
+ }
172
214
  if (selectorVisible)
173
215
  return;
174
216
  if (event.key === "pgup") {
@@ -181,7 +223,22 @@ function App({ version, network, wallet, balance }) {
181
223
  exit();
182
224
  }
183
225
  });
184
- const isDisabled = isProcessing || isRunning || isSending;
185
- return ((0, jsx_runtime_1.jsxs)(index_js_1.Box, { flexDirection: "column", height: "100%", children: [(0, jsx_runtime_1.jsx)(Header_1.Header, { version: version, network: network, wallet: wallet, balance: balance }), (0, jsx_runtime_1.jsx)(index_js_1.Box, { children: (0, jsx_runtime_1.jsx)(index_js_1.Text, { dimColor: true, children: "─".repeat(60) }) }), (0, jsx_runtime_1.jsx)(Viewport_1.Viewport, { lines: outputBuffer, scrollOffset: scrollOffset, isAutoScroll: isAutoScroll, viewportHeight: viewportHeight }), toasts.length > 0 && ((0, jsx_runtime_1.jsx)(index_js_1.Box, { flexDirection: "column", children: toasts.map((t) => ((0, jsx_runtime_1.jsx)(Toast_1.Toast, { toast: t, onDismiss: dismiss }, t.id))) })), (0, jsx_runtime_1.jsxs)(Footer_1.Footer, { children: [selectorVisible && ((0, jsx_runtime_1.jsx)(ChatHarnessSelector_1.ChatHarnessSelector, { choices: harnessChoices, selectedIndex: selectedHarnessIndex, onMove: moveSelection, onConfirm: () => confirmSelection(appendLine), onCancel: cancelSelector })), isChatMode && ((0, jsx_runtime_1.jsx)(index_js_1.Box, { marginLeft: 2, children: (0, jsx_runtime_1.jsx)(index_js_1.Text, { dimColor: true, children: `chat mode${activeHarnessLabel ? ` · harness: ${activeHarnessLabel}` : " · harness: choose one"}` }) })), (0, jsx_runtime_1.jsx)(InputLine_1.InputLine, { onSubmit: handleCommand, isDisabled: isDisabled || selectorVisible })] })] }));
226
+ const isDisabled = isProcessing || isRunning || isSending || hireFlowOpen || walletPairingOpen;
227
+ const separatorWidth = Math.max(8, columns - 2);
228
+ return ((0, jsx_runtime_1.jsxs)(index_js_1.Box, { flexDirection: "column", height: "100%", children: [(0, jsx_runtime_1.jsx)(Header_1.Header, { version: version, network: network, wallet: wallet, balance: balance }), (0, jsx_runtime_1.jsx)(index_js_1.Box, { flexShrink: 0, children: (0, jsx_runtime_1.jsx)(index_js_1.Text, { dimColor: true, children: "─".repeat(separatorWidth) }) }), (0, jsx_runtime_1.jsx)(Viewport_1.Viewport, { lines: outputBuffer, scrollOffset: scrollOffset, isAutoScroll: isAutoScroll, viewportHeight: viewportHeight }), toasts.length > 0 && ((0, jsx_runtime_1.jsx)(index_js_1.Box, { flexDirection: "column", flexShrink: 0, children: toasts.map((t) => ((0, jsx_runtime_1.jsx)(Toast_1.Toast, { toast: t, onDismiss: dismiss }, t.id))) })), (0, jsx_runtime_1.jsxs)(Footer_1.Footer, { children: [selectorVisible && ((0, jsx_runtime_1.jsx)(ChatHarnessSelector_1.ChatHarnessSelector, { choices: harnessChoices, selectedIndex: selectedHarnessIndex, onMove: moveSelection, onConfirm: () => confirmSelection(appendLine), onCancel: cancelSelector })), isChatMode && ((0, jsx_runtime_1.jsx)(index_js_1.Box, { marginLeft: 2, flexShrink: 0, children: (0, jsx_runtime_1.jsx)(index_js_1.Text, { dimColor: true, children: `chat mode${activeHarnessLabel ? ` · harness: ${activeHarnessLabel}` : " · harness: choose one"}` }) })), hireFlowOpen && ((0, jsx_runtime_1.jsx)(HireFlow_1.HireFlow, { onCancel: () => setHireFlowOpen(false), onSubmit: async ({ agent, task, price }) => {
229
+ await execute(buildHireCommand(agent.wallet, task, price, agent.serviceType || "ai.assistant"), appendLine);
230
+ appendLine("");
231
+ setHireFlowOpen(false);
232
+ } })), walletPairingOpen && walletConnectProjectId && ((0, jsx_runtime_1.jsx)(WalletConnectPairing_1.WalletConnectPairing, { projectId: walletConnectProjectId, chainId: chainId, connect: connectWalletInTui, onComplete: ({ account }) => {
233
+ pushToast(`✓ Wallet connected — ${account}`, "success");
234
+ appendLine(chalk_1.default.green(` ✓ Wallet connected — ${account}`));
235
+ appendLine("");
236
+ setWalletPairingOpen(false);
237
+ }, onError: (err) => {
238
+ pushToast(`✗ WalletConnect failed — ${err}`, "error");
239
+ appendLine(chalk_1.default.red(` ✗ WalletConnect failed — ${err}`));
240
+ appendLine("");
241
+ setWalletPairingOpen(false);
242
+ } })), (0, jsx_runtime_1.jsx)(InputLine_1.InputLine, { onSubmit: handleCommand, isDisabled: isDisabled || selectorVisible })] })] }));
186
243
  }
187
244
  //# sourceMappingURL=App.js.map