agentix-cli 0.23.0 → 0.25.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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -103
  3. package/agentx.example.json +9 -3
  4. package/dist/App-6Y7B3YQH.js +8 -0
  5. package/dist/App-6Y7B3YQH.js.map +1 -0
  6. package/dist/ChatApp-KIEUJ2DS.js +7 -0
  7. package/dist/ChatApp-KIEUJ2DS.js.map +1 -0
  8. package/dist/{agent-FSE4KRLX.js → agent-QGZIAZMY.js} +2 -2
  9. package/dist/architect-SEPWMWS4.js +2 -0
  10. package/dist/{board-dashboard-PUACKWAN.js → board-dashboard-CQ5F4GPD.js} +3756 -1010
  11. package/dist/board-dashboard-CQ5F4GPD.js.map +1 -0
  12. package/dist/builtin-FRKAQMFS.js +2 -0
  13. package/dist/chunk-2WVX3LEC.js +2 -0
  14. package/dist/chunk-2WVX3LEC.js.map +1 -0
  15. package/dist/chunk-3WQFCIB6.js +24 -0
  16. package/dist/chunk-3WQFCIB6.js.map +1 -0
  17. package/dist/chunk-53GCFZPR.js +116 -0
  18. package/dist/chunk-53GCFZPR.js.map +1 -0
  19. package/dist/{chunk-IKBHHTIT.js → chunk-5U35WAZF.js} +2 -2
  20. package/dist/chunk-67Q4DCPS.js +54 -0
  21. package/dist/chunk-67Q4DCPS.js.map +1 -0
  22. package/dist/chunk-76Z4VHDX.js +8 -0
  23. package/dist/chunk-76Z4VHDX.js.map +1 -0
  24. package/dist/{chunk-7P5QRX5W.js → chunk-BFXONUUN.js} +2 -2
  25. package/dist/{chunk-DXTIG5YV.js → chunk-FDMWOPEL.js} +2 -2
  26. package/dist/chunk-FDWOECJY.js +54 -0
  27. package/dist/chunk-FDWOECJY.js.map +1 -0
  28. package/dist/chunk-G57RZCXM.js +5 -0
  29. package/dist/chunk-G57RZCXM.js.map +1 -0
  30. package/dist/{chunk-NOF4HSGK.js → chunk-H5D7ATXS.js} +2 -2
  31. package/dist/chunk-HA3XI7Z2.js +155 -0
  32. package/dist/chunk-HA3XI7Z2.js.map +1 -0
  33. package/dist/chunk-HR4JSRZS.js +3 -0
  34. package/dist/{chunk-A6BKSZQA.js.map → chunk-HR4JSRZS.js.map} +1 -1
  35. package/dist/chunk-I3SIXTJO.js +44 -0
  36. package/dist/chunk-I3SIXTJO.js.map +1 -0
  37. package/dist/chunk-ISEBLHWX.js +118 -0
  38. package/dist/chunk-ISEBLHWX.js.map +1 -0
  39. package/dist/{chunk-4ITQP3XL.js → chunk-JP5IEXR7.js} +2 -2
  40. package/dist/chunk-JXWAGMI2.js +13 -0
  41. package/dist/chunk-JXWAGMI2.js.map +1 -0
  42. package/dist/chunk-KUCCW2VG.js +431 -0
  43. package/dist/chunk-KUCCW2VG.js.map +1 -0
  44. package/dist/chunk-LDHPMJ7M.js +257 -0
  45. package/dist/chunk-LDHPMJ7M.js.map +1 -0
  46. package/dist/{chunk-KWUWZQGV.js → chunk-LNXCJWOU.js} +29 -30
  47. package/dist/chunk-LNXCJWOU.js.map +1 -0
  48. package/dist/chunk-M4AMWP3H.js +178 -0
  49. package/dist/chunk-M4AMWP3H.js.map +1 -0
  50. package/dist/chunk-NGSIRE4X.js +126 -0
  51. package/dist/chunk-NGSIRE4X.js.map +1 -0
  52. package/dist/{chunk-CNNLREHD.js → chunk-P4VWIVKN.js} +268 -410
  53. package/dist/chunk-P4VWIVKN.js.map +1 -0
  54. package/dist/chunk-Q6YO7LYE.js +47 -0
  55. package/dist/chunk-Q6YO7LYE.js.map +1 -0
  56. package/dist/chunk-TMKLHTCG.js +971 -0
  57. package/dist/chunk-TMKLHTCG.js.map +1 -0
  58. package/dist/chunk-TRJTTBE2.js +7 -0
  59. package/dist/chunk-TRJTTBE2.js.map +1 -0
  60. package/dist/chunk-U2CKL755.js +4 -0
  61. package/dist/chunk-U2CKL755.js.map +1 -0
  62. package/dist/chunk-UCQ2N3KO.js +9 -0
  63. package/dist/chunk-UCQ2N3KO.js.map +1 -0
  64. package/dist/chunk-W4YR2RO2.js +2 -0
  65. package/dist/chunk-W4YR2RO2.js.map +1 -0
  66. package/dist/cli.js +1 -1
  67. package/dist/cli.js.map +1 -1
  68. package/dist/client-GGVVLOOF.js +2 -0
  69. package/dist/{compaction-BTUJJ3LJ.js → compaction-NWEMOSHA.js} +3 -3
  70. package/dist/config-7FSZFRTQ.js +2 -0
  71. package/dist/config-mutator-POCOYYJ4.js +2 -0
  72. package/dist/{context-planner-I7ID7XF3.js → context-planner-45GEWKGL.js} +2 -2
  73. package/dist/doctor-DHLBEKA4.js +2 -0
  74. package/dist/heal-HZ3EQD52.js +2 -0
  75. package/dist/index.d.ts +1193 -225
  76. package/dist/index.js +12 -12
  77. package/dist/index.js.map +1 -1
  78. package/dist/memory-extract-AENFVVO5.js +2 -0
  79. package/dist/processes-UIC4XXA6.js +2 -0
  80. package/dist/program-WVAVJFND.js +2 -0
  81. package/dist/projects-api-KRME2YKZ.js +2 -0
  82. package/dist/projects-api-KRME2YKZ.js.map +1 -0
  83. package/dist/projects-mutate-3NHVG437.js +7 -0
  84. package/dist/projects-mutate-3NHVG437.js.map +1 -0
  85. package/dist/providers-L27BJ5A6.js +2 -0
  86. package/dist/registry-T36ZIAWV.js +2 -0
  87. package/dist/rotation-memo-B3EXXSEH.js +13 -0
  88. package/dist/rotation-memo-B3EXXSEH.js.map +1 -0
  89. package/dist/scheduler-GH7TIKYS.js +2 -0
  90. package/dist/surface-usage-PRL6Z4U3.js +2 -0
  91. package/dist/wiki-M6YNRFC4.js +2 -0
  92. package/dist/workflows/templates/branching.yaml +75 -0
  93. package/dist/workflows/templates/extract.yaml +59 -0
  94. package/dist/workflows/templates/linear.yaml +37 -0
  95. package/dist/workflows/templates/retry.yaml +61 -0
  96. package/dist/workspace-setup-TBQAHYHJ.js +2 -0
  97. package/package.json +10 -3
  98. package/dist/board-dashboard-PUACKWAN.js.map +0 -1
  99. package/dist/builtin-TQKMR42Z.js +0 -2
  100. package/dist/chunk-3SHMHYPD.js +0 -450
  101. package/dist/chunk-3SHMHYPD.js.map +0 -1
  102. package/dist/chunk-4INOOHND.js +0 -6
  103. package/dist/chunk-4INOOHND.js.map +0 -1
  104. package/dist/chunk-5F3J55LG.js +0 -2
  105. package/dist/chunk-5F3J55LG.js.map +0 -1
  106. package/dist/chunk-72PAN7UI.js +0 -103
  107. package/dist/chunk-72PAN7UI.js.map +0 -1
  108. package/dist/chunk-A6BKSZQA.js +0 -3
  109. package/dist/chunk-BHSPAP4U.js +0 -44
  110. package/dist/chunk-BHSPAP4U.js.map +0 -1
  111. package/dist/chunk-BOUKM2PS.js +0 -163
  112. package/dist/chunk-BOUKM2PS.js.map +0 -1
  113. package/dist/chunk-CDNWCYF7.js +0 -2
  114. package/dist/chunk-CDNWCYF7.js.map +0 -1
  115. package/dist/chunk-CNNLREHD.js.map +0 -1
  116. package/dist/chunk-EK37JHJI.js +0 -13
  117. package/dist/chunk-EK37JHJI.js.map +0 -1
  118. package/dist/chunk-EQPUB7CZ.js +0 -685
  119. package/dist/chunk-EQPUB7CZ.js.map +0 -1
  120. package/dist/chunk-EW27SCCC.js +0 -2
  121. package/dist/chunk-EW27SCCC.js.map +0 -1
  122. package/dist/chunk-GOLZ6NEL.js +0 -111
  123. package/dist/chunk-GOLZ6NEL.js.map +0 -1
  124. package/dist/chunk-JGXE2YNV.js +0 -46
  125. package/dist/chunk-JGXE2YNV.js.map +0 -1
  126. package/dist/chunk-KWUWZQGV.js.map +0 -1
  127. package/dist/chunk-MTRWXRFF.js +0 -380
  128. package/dist/chunk-MTRWXRFF.js.map +0 -1
  129. package/dist/chunk-N67JZAXU.js +0 -2
  130. package/dist/chunk-N67JZAXU.js.map +0 -1
  131. package/dist/chunk-PD5Q7D6Z.js +0 -7
  132. package/dist/chunk-PD5Q7D6Z.js.map +0 -1
  133. package/dist/chunk-Q6CAFGXT.js +0 -118
  134. package/dist/chunk-Q6CAFGXT.js.map +0 -1
  135. package/dist/chunk-WJXU5F4Z.js +0 -53
  136. package/dist/chunk-WJXU5F4Z.js.map +0 -1
  137. package/dist/chunk-ZZFXI3CS.js +0 -8
  138. package/dist/chunk-ZZFXI3CS.js.map +0 -1
  139. package/dist/config-ADS54KLC.js +0 -2
  140. package/dist/config-mutator-WTRMBZTO.js +0 -2
  141. package/dist/doctor-T6RB4Q5X.js +0 -2
  142. package/dist/editor-chat-RVLCKKB7.js +0 -137
  143. package/dist/editor-chat-RVLCKKB7.js.map +0 -1
  144. package/dist/heal-YEQYWX2L.js +0 -2
  145. package/dist/inbox-BIN2S5XN.js +0 -2
  146. package/dist/memory-extract-KRCHD3OP.js +0 -2
  147. package/dist/processes-RJ6RDP32.js +0 -2
  148. package/dist/program-V7NGFB2R.js +0 -2
  149. package/dist/providers-WVCMIW67.js +0 -2
  150. package/dist/registry-42HEWCLA.js +0 -2
  151. package/dist/rotation-memo-GMTZPMNE.js +0 -13
  152. package/dist/rotation-memo-GMTZPMNE.js.map +0 -1
  153. package/dist/scheduler-C56ABAVP.js +0 -2
  154. package/dist/slack-6P7ZJ32Y.js +0 -3
  155. package/dist/slack-6P7ZJ32Y.js.map +0 -1
  156. package/dist/store-BAPDZHXE.js +0 -2
  157. package/dist/task-store-RHISEU6V.js +0 -2
  158. package/dist/telegram-PIYDRM46.js +0 -3
  159. package/dist/telegram-PIYDRM46.js.map +0 -1
  160. package/dist/types-ZRLHHCGB.js +0 -2
  161. package/dist/web/workflow-editor.global.js +0 -1452
  162. package/dist/web/workflow-editor.global.js.map +0 -1
  163. package/dist/whatsapp-PFRDMUMT.js +0 -3
  164. package/dist/whatsapp-PFRDMUMT.js.map +0 -1
  165. package/dist/wiki-53W5NLZV.js +0 -2
  166. package/dist/workspace-setup-DQCZX2NE.js +0 -2
  167. package/dist/workspace-setup-DQCZX2NE.js.map +0 -1
  168. /package/dist/{agent-FSE4KRLX.js.map → agent-QGZIAZMY.js.map} +0 -0
  169. /package/dist/{builtin-TQKMR42Z.js.map → architect-SEPWMWS4.js.map} +0 -0
  170. /package/dist/{config-ADS54KLC.js.map → builtin-FRKAQMFS.js.map} +0 -0
  171. /package/dist/{chunk-IKBHHTIT.js.map → chunk-5U35WAZF.js.map} +0 -0
  172. /package/dist/{chunk-7P5QRX5W.js.map → chunk-BFXONUUN.js.map} +0 -0
  173. /package/dist/{chunk-DXTIG5YV.js.map → chunk-FDMWOPEL.js.map} +0 -0
  174. /package/dist/{chunk-NOF4HSGK.js.map → chunk-H5D7ATXS.js.map} +0 -0
  175. /package/dist/{chunk-4ITQP3XL.js.map → chunk-JP5IEXR7.js.map} +0 -0
  176. /package/dist/{config-mutator-WTRMBZTO.js.map → client-GGVVLOOF.js.map} +0 -0
  177. /package/dist/{compaction-BTUJJ3LJ.js.map → compaction-NWEMOSHA.js.map} +0 -0
  178. /package/dist/{doctor-T6RB4Q5X.js.map → config-7FSZFRTQ.js.map} +0 -0
  179. /package/dist/{heal-YEQYWX2L.js.map → config-mutator-POCOYYJ4.js.map} +0 -0
  180. /package/dist/{context-planner-I7ID7XF3.js.map → context-planner-45GEWKGL.js.map} +0 -0
  181. /package/dist/{inbox-BIN2S5XN.js.map → doctor-DHLBEKA4.js.map} +0 -0
  182. /package/dist/{memory-extract-KRCHD3OP.js.map → heal-HZ3EQD52.js.map} +0 -0
  183. /package/dist/{processes-RJ6RDP32.js.map → memory-extract-AENFVVO5.js.map} +0 -0
  184. /package/dist/{program-V7NGFB2R.js.map → processes-UIC4XXA6.js.map} +0 -0
  185. /package/dist/{providers-WVCMIW67.js.map → program-WVAVJFND.js.map} +0 -0
  186. /package/dist/{registry-42HEWCLA.js.map → providers-L27BJ5A6.js.map} +0 -0
  187. /package/dist/{scheduler-C56ABAVP.js.map → registry-T36ZIAWV.js.map} +0 -0
  188. /package/dist/{store-BAPDZHXE.js.map → scheduler-GH7TIKYS.js.map} +0 -0
  189. /package/dist/{task-store-RHISEU6V.js.map → surface-usage-PRL6Z4U3.js.map} +0 -0
  190. /package/dist/{types-ZRLHHCGB.js.map → wiki-M6YNRFC4.js.map} +0 -0
  191. /package/dist/{wiki-53W5NLZV.js.map → workspace-setup-TBQAHYHJ.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tui/ChatApp.tsx","../src/tui/theme.ts"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport { Box, Text, useApp, useInput, useStdout } from \"ink\"\nimport { randomUUID } from \"crypto\"\nimport { fetchAgents, streamTask, type AgentRow, type DaemonConn } from \"./client.js\"\nimport { renderMarkdown } from \"./markdown.js\"\nimport { advanceMention, mentionSuggestions, type MentionCycle } from \"./mention-complete.js\"\nimport { classifyComposerInput } from \"./composer-input.js\"\nimport { WorkingStatus } from \"./working-status.js\"\nimport { theme, BRAND, GUTTER } from \"./theme.js\"\nimport { resolveProvider, shortModel } from \"./provider.js\"\n\n// --- Claude-Code-style chat REPL (Ink) ---\n//\n// <Static> holds the committed transcript (rendered once, never repainted);\n// the in-flight turn renders in a live region that updates as tokens and\n// tool events stream in, followed by the composer. Agent text is shown raw\n// while streaming (partial markdown is jumpy) and re-rendered as markdown\n// once the turn commits.\n\ninterface Seg {\n type: \"text\" | \"tool\"\n content?: string // text segments\n name?: string // tool segments\n arg?: string // tool argument preview\n error?: boolean\n}\n\ninterface Turn {\n id: string\n you: string\n agentId: string\n segs: Seg[]\n live: boolean\n /** Accumulated reasoning text (forwarded `thinking` frames). Empty for\n * claude-code agents — the headless CLI redacts thinking text. */\n thinking?: string\n startedAt: number\n elapsedMs?: number\n outTokens?: number\n error?: string\n interrupted?: boolean\n}\n\nexport interface ChatAppProps {\n conn: DaemonConn\n agentId: string\n channel: string\n chatId: string\n agents: AgentRow[]\n}\n\nconst HELP = \"/help /agent <id> /agents /clear /who /exit\"\n\nconst COMMANDS: Array<{ cmd: string; desc: string }> = [\n { cmd: \"/agent\", desc: \"switch the target agent (/agent <id>)\" },\n { cmd: \"/agents\", desc: \"list registered agents\" },\n { cmd: \"/clear\", desc: \"start a fresh session\" },\n { cmd: \"/who\", desc: \"show agent + chat id\" },\n { cmd: \"/help\", desc: \"list commands\" },\n { cmd: \"/exit\", desc: \"quit the chat\" },\n]\n\nexport function ChatApp({ conn, agentId: initialAgent, channel, chatId: initialChatId, agents: initialAgents }: ChatAppProps) {\n const { exit } = useApp()\n const { stdout } = useStdout()\n const width = Math.max(40, Math.min((stdout?.columns || 80) - 4, 100))\n\n const [turns, setTurns] = useState<Turn[]>([])\n const [active, setActive] = useState<Turn | null>(null)\n const [agentId, setAgentId] = useState(initialAgent)\n const [agents, setAgents] = useState(initialAgents)\n const [chatId, setChatId] = useState(initialChatId)\n const [input, setInput] = useState(\"\")\n const [notice, setNotice] = useState<string>(\"\")\n\n const history = useRef<string[]>([])\n const histIdx = useRef<number>(-1)\n const cycle = useRef<MentionCycle | null>(null)\n const abortRef = useRef<AbortController | null>(null)\n const busy = active?.live ?? false\n\n // `@`-mention autocomplete for the current buffer (agents + cwd files).\n const suggest = useMemo(\n () => mentionSuggestions(input, agents.map((a) => a.id), process.cwd()),\n [input, agents],\n )\n\n // `/`-command menu — active while typing a command (slash + partial word).\n const slashSuggest = useMemo(() => {\n const m = /^\\/(\\w*)$/.exec(input)\n if (!m) return null\n const items = COMMANDS.filter((c) => c.cmd.slice(1).startsWith(m[1].toLowerCase()))\n return items.length ? items : null\n }, [input])\n\n const pushNotice = (m: string) => setNotice(m)\n\n const runTurn = useCallback(\n (text: string) => {\n const id = randomUUID().slice(0, 8)\n const startedAt = Date.now()\n const ac = new AbortController()\n abortRef.current = ac\n\n // Mutable ref to the current turn so streaming callbacks coalesce\n // without stale-closure races; we mirror it into state to repaint.\n const turn: Turn = { id, you: text, agentId, segs: [], live: true, startedAt }\n setActive({ ...turn })\n const repaint = () => setActive({ ...turn, segs: turn.segs.map((s) => ({ ...s })) })\n\n void (async () => {\n try {\n const r = await streamTask(conn, agentId, text, {\n channel,\n chatId,\n signal: ac.signal,\n onText: (t) => {\n const last = turn.segs[turn.segs.length - 1]\n if (last && last.type === \"text\") last.content = (last.content ?? \"\") + t\n else turn.segs.push({ type: \"text\", content: t })\n repaint()\n },\n onThinking: (t) => { turn.thinking = (turn.thinking ?? \"\") + t; repaint() },\n onTool: (tool) => {\n if (tool.status === \"start\" && tool.name) {\n turn.segs.push({ type: \"tool\", name: tool.name, arg: tool.arg })\n repaint()\n } else if (tool.status === \"result\" && tool.error) {\n turn.segs.push({ type: \"tool\", name: tool.name ?? \"tool\", error: true })\n repaint()\n }\n },\n })\n setTurns((prev) => [...prev, {\n ...turn, live: false, elapsedMs: Date.now() - startedAt, outTokens: r.usage?.outputTokens, error: r.error,\n }])\n setActive(null)\n } catch (e: any) {\n const interrupted = ac.signal.aborted || e?.name === \"AbortError\"\n setTurns((prev) => [...prev, {\n ...turn, live: false, elapsedMs: Date.now() - startedAt,\n interrupted, error: interrupted ? undefined : (e?.message || String(e)),\n }])\n setActive(null)\n } finally {\n if (abortRef.current === ac) abortRef.current = null\n }\n })()\n },\n [conn, agentId, channel, chatId],\n )\n\n const submit = useCallback(\n (raw: string) => {\n const text = raw.trim()\n if (!text) return\n history.current.push(text)\n histIdx.current = -1\n\n if (text === \"/exit\" || text === \"/quit\") { exit(); return }\n if (text === \"/help\") { pushNotice(HELP); return }\n if (text === \"/who\") { pushNotice(`@${agentId} · chatId=${chatId} · channel=${channel}`); return }\n if (text === \"/clear\") {\n const next = `chat-cli:${randomUUID().slice(0, 12)}`\n setChatId(next)\n setTurns([])\n pushNotice(`fresh chatId=${next} (warm process dropped)`)\n return\n }\n if (text === \"/agents\") {\n void fetchAgents(conn).then((a) => {\n setAgents(a)\n pushNotice(a.map((x) => (x.id === agentId ? `[${x.id}]` : x.id)).join(\" \"))\n }).catch((e) => pushNotice(`failed to list agents: ${e?.message || e}`))\n return\n }\n if (text.startsWith(\"/agent \")) {\n const next = text.slice(7).replace(/^@/, \"\").trim()\n if (!next) { pushNotice(\"usage: /agent <id>\"); return }\n if (!agents.find((a) => a.id === next)) { pushNotice(`unknown agent: @${next}`); return }\n setAgentId(next)\n pushNotice(`now talking to @${next}`)\n return\n }\n if (text.startsWith(\"/\")) { pushNotice(`unknown command · ${HELP}`); return }\n\n runTurn(text)\n },\n [conn, agentId, agents, channel, chatId, exit, runTurn],\n )\n\n useInput((ch, key) => {\n if (key.ctrl && ch === \"c\") { exit(); return }\n // Esc interrupts a live turn; when idle it exits.\n if (key.escape) {\n if (busy && abortRef.current) { abortRef.current.abort(); return }\n exit()\n return\n }\n // Tab completes a slash command, or accepts/cycles an @-mention.\n if (key.tab) {\n if (slashSuggest) { setInput(slashSuggest[0].cmd + \" \"); return }\n const applied = advanceMention(input, cycle, agents.map((a) => a.id), process.cwd())\n if (applied !== null) { setInput(applied); histIdx.current = -1 }\n return\n }\n if (key.upArrow) {\n const h = history.current\n if (!h.length) return\n histIdx.current = histIdx.current < 0 ? h.length - 1 : Math.max(0, histIdx.current - 1)\n setInput(h[histIdx.current] ?? \"\")\n return\n }\n if (key.downArrow) {\n const h = history.current\n if (histIdx.current < 0) return\n histIdx.current = histIdx.current + 1\n if (histIdx.current >= h.length) { histIdx.current = -1; setInput(\"\"); return }\n setInput(h[histIdx.current] ?? \"\")\n return\n }\n if (key.backspace || key.delete) { cycle.current = null; setInput((s) => s.slice(0, -1)); return }\n\n // Everything else routes through the shared composer classifier: a real\n // Enter (or single-line text+newline) submits, a multi-line paste is\n // preserved, a trailing backslash continues on a new line.\n if (key.ctrl || key.meta) return\n const action = classifyComposerInput(ch ?? \"\", key.return, input)\n switch (action.kind) {\n case \"paste\": cycle.current = null; setInput((s) => s + action.text); histIdx.current = -1; return\n case \"type\": cycle.current = null; setInput((s) => s + action.text); histIdx.current = -1; return\n case \"continue\": setInput(action.buffer); return\n case \"submit\":\n if (busy) return\n cycle.current = null\n setInput(\"\")\n submit(action.text)\n return\n case \"none\": return\n }\n })\n\n const accent = busy ? theme.working : theme.accent\n const inputLines = input.length ? input.split(\"\\n\") : [\"\"]\n const agentRow = agents.find((a) => a.id === agentId)\n const provider = resolveProvider(agentRow?.tier ?? \"\", agentRow?.model)\n const rows = stdout?.rows || 24\n // Bottom-anchored transcript window: render a bounded tail (older turns\n // clip off the top), so the composer stays flush with the terminal's\n // bottom edge like a fixed footer.\n const visibleTurns = turns.slice(-40)\n return (\n <Box flexDirection=\"column\" height={rows}>\n {/* Transcript — fills the space above the footer, anchored to bottom. */}\n <Box flexDirection=\"column\" flexGrow={1} justifyContent=\"flex-end\" overflow=\"hidden\">\n {turns.length === 0 && !active ? (\n <Box flexDirection=\"column\">\n <Text><Text color={theme.accent} bold>{BRAND}</Text><Text dimColor> — chat with </Text><Text color={theme.accent}>@{agentId}</Text><Text dimColor> via </Text><Text color={provider.color} bold>{provider.glyph} {provider.label}</Text>{agentRow?.model ? <Text dimColor> ({agentRow.model})</Text> : null}</Text>\n <Text dimColor>streaming · markdown · tools · type a message, or / for commands</Text>\n </Box>\n ) : null}\n {visibleTurns.map((t) => <TurnView key={t.id} turn={t} width={width} />)}\n {active ? <TurnView turn={active} width={width} /> : null}\n </Box>\n\n {/* Footer: command menu / suggestions, the input bar, and the status line. */}\n {/* command menu / @-suggestions / transient notice, above the input */}\n {slashSuggest ? (\n <Box flexDirection=\"column\" marginTop={1}>\n {slashSuggest.map((c, i) => (\n <Box key={c.cmd}>\n <Text color={i === 0 ? theme.accent : theme.muted} bold={i === 0}>{c.cmd.padEnd(10)}</Text>\n <Text dimColor>{c.desc}</Text>\n </Box>\n ))}\n </Box>\n ) : suggest ? (\n <Box marginTop={1}>\n <Text color={theme.accent}>↹ </Text>\n {suggest.items.map((it, i) => (\n <Text key={i} color={i === 0 ? theme.accent : theme.muted}>{it}{i < suggest.items.length - 1 ? \" \" : \"\"}</Text>\n ))}\n </Box>\n ) : notice ? (\n <Box marginTop={1}><Text dimColor>{notice}</Text></Box>\n ) : null}\n\n {/* Full-width input — top + bottom rules only, pinned to the bottom. */}\n <Box\n borderStyle=\"single\"\n borderColor={accent}\n borderLeft={false}\n borderRight={false}\n borderDimColor={!busy}\n width=\"100%\"\n >\n <Box flexDirection=\"column\" width=\"100%\">\n {inputLines.map((ln, i, arr) => (\n <Box key={i}>\n <Text color={accent} bold>{i === 0 ? \"› \" : \" \"}</Text>\n <Text>{ln}</Text>\n {i === arr.length - 1 && !busy ? <Text color={accent}>▏</Text> : null}\n </Box>\n ))}\n </Box>\n </Box>\n\n {/* Status bar — reflects the underlying provider/command running the agent. */}\n <Box justifyContent=\"space-between\">\n <Text>\n <Text color={theme.accent} bold>{BRAND}</Text>\n <Text dimColor> · @{agentId} · </Text>\n <Text color={provider.color} bold>{provider.glyph} {provider.label}</Text>\n {agentRow?.model ? <Text dimColor> {shortModel(agentRow.model)}</Text> : null}\n </Text>\n <Text dimColor>↵ send / cmds @ mention esc {busy ? \"stop\" : \"exit\"}</Text>\n </Box>\n </Box>\n )\n}\n\nfunction TurnView({ turn, width }: { turn: Turn; width: number }) {\n const body = useMemo(() => renderSegs(turn, width), [turn, width])\n const hasText = turn.segs.some((s) => s.type === \"text\" && s.content)\n return (\n <Box flexDirection=\"column\" marginBottom={1}>\n <Text color={theme.accent} bold>{GUTTER} you</Text>\n {turn.you.split(\"\\n\").map((ln, i) => <Text key={`u${i}`} color=\"white\"> {ln}</Text>)}\n <Text color={theme.agent} bold>{GUTTER} {turn.agentId ?? \"agent\"}</Text>\n {turn.thinking ? (\n <Box flexDirection=\"column\">\n {tail(turn.thinking, turn.live ? 3 : 2).map((ln, i) => (\n <Text key={`th${i}`} dimColor italic> {ln}</Text>\n ))}\n </Box>\n ) : null}\n {body}\n {turn.live ? (\n <WorkingStatus startedAt={turn.startedAt} phase={hasText ? \"responding\" : \"thinking\"} hint=\"esc to interrupt\" />\n ) : turn.interrupted ? (\n <Text dimColor> ⊘ interrupted · {(turn.elapsedMs! / 1000).toFixed(1)}s</Text>\n ) : turn.error ? (\n <Text color=\"red\"> ✗ {turn.error}</Text>\n ) : turn.elapsedMs != null ? (\n <Text dimColor> · {(turn.elapsedMs / 1000).toFixed(1)}s{turn.outTokens != null ? `, ${turn.outTokens} tok` : \"\"}</Text>\n ) : null}\n </Box>\n )\n}\n\n/** Last `n` non-empty lines of a block (for a compact thinking preview). */\nfunction tail(text: string, n: number): string[] {\n const lines = text.split(\"\\n\").filter((l) => l.trim())\n return lines.slice(-n)\n}\n\n/** Render a turn's segments: tool badges + agent text. Text is raw while the\n * turn streams, markdown-rendered once committed. */\nfunction renderSegs(turn: Turn, width: number): React.ReactNode {\n const nodes: React.ReactNode[] = []\n turn.segs.forEach((s, i) => {\n if (s.type === \"tool\") {\n nodes.push(\n <Text key={i} color={s.error ? \"red\" : \"green\"}>\n {\" \"}● <Text bold={!s.error} dimColor={s.error}>{s.name}{s.arg ? <Text dimColor>({s.arg})</Text> : null}{s.error ? \" failed\" : \"\"}</Text>\n </Text>,\n )\n } else if (s.content) {\n // Render markdown live as it streams — balancing open markers while the\n // turn is live so partial spans (**bold, `code) render styled, never raw.\n nodes.push(<Text key={i}>{indent(renderMarkdown(s.content, width, { balance: turn.live }))}</Text>)\n }\n })\n return nodes\n}\n\nfunction indent(text: string): string {\n return text\n .split(\"\\n\")\n .map((l) => (l.length ? \" \" + l : l))\n .join(\"\\n\")\n}\n","// agentx chat — a distinct visual identity (not a Claude Code clone).\n// One cyan-forward accent, a violet \"working\" state, green for the agent,\n// and a consistent brand mark. Centralised so every surface stays cohesive.\n\nexport const theme = {\n /** Primary brand accent — user prompt, borders, highlights. */\n accent: \"cyan\" as const,\n /** The agent's voice. */\n agent: \"green\" as const,\n /** Active/working state (spinner, busy border). */\n working: \"magenta\" as const,\n /** Errors. */\n error: \"red\" as const,\n /** Secondary text. */\n muted: \"gray\" as const,\n}\n\n/** Brand mark shown in the header / welcome. */\nexport const BRAND = \"◇ agentx\"\n\n/** Left gutter glyphs for message framing. */\nexport const GUTTER = \"▌\"\n"],"mappings":"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","names":["useCallback","useMemo","useRef","useState","Box","Text","useApp","useInput","useStdout","randomUUID","theme","BRAND","GUTTER","jsx","jsxs","HELP","COMMANDS","ChatApp","conn","initialAgent","channel","initialChatId","initialAgents","exit","useApp","stdout","useStdout","width","turns","setTurns","useState","active","setActive","agentId","setAgentId","agents","setAgents","chatId","setChatId","input","setInput","notice","setNotice","history","useRef","histIdx","cycle","abortRef","busy","suggest","useMemo","mentionSuggestions","a","slashSuggest","m","items","c","pushNotice","runTurn","useCallback","text","id","randomUUID","startedAt","ac","turn","repaint","s","r","streamTask","t","last","tool","prev","e","interrupted","submit","raw","next","fetchAgents","x","useInput","ch","key","applied","advanceMention","h","action","classifyComposerInput","accent","theme","inputLines","agentRow","provider","resolveProvider","rows","visibleTurns","Box","Text","BRAND","TurnView","i","it","ln","arr","shortModel","body","renderSegs","hasText","GUTTER","tail","WorkingStatus","n","l","nodes","indent","renderMarkdown"]}
@@ -1,2 +1,2 @@
1
- import{A as a,B as b,C as c}from"./chunk-Q6CAFGXT.js";import"./chunk-SFQUP3BP.js";import"./chunk-JGXE2YNV.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";export{a as createAgentContext,b as generate,c as generateStream};
2
- //# sourceMappingURL=agent-FSE4KRLX.js.map
1
+ import{A as a,B as b,C as c}from"./chunk-NGSIRE4X.js";import"./chunk-SFQUP3BP.js";import"./chunk-FDWOECJY.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";export{a as createAgentContext,b as generate,c as generateStream};
2
+ //# sourceMappingURL=agent-QGZIAZMY.js.map
@@ -0,0 +1,2 @@
1
+ import{c as a,d as b}from"./chunk-ISEBLHWX.js";import"./chunk-4YCH6IZV.js";export{b as architectWorkflowFromTrace,a as architectWorkflowViaAgent};
2
+ //# sourceMappingURL=architect-SEPWMWS4.js.map