mia-code 0.2.0 → 0.3.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 (410) hide show
  1. package/.miette/260321.md +1 -0
  2. package/.miette/260323.md +9 -0
  3. package/.miette/260331.md +2 -0
  4. package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/2604020008--d3417f2c-df12-4f0f-8a1b-d88e7968f822/d3417f2c-df12-4f0f-8a1b-d88e7968f822.md +63 -0
  5. package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/2604020008--e6c3fc5d-4a70-4523-ba7d-a3250da4c235/e6c3fc5d-4a70-4523-ba7d-a3250da4c235.md +72 -0
  6. package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/2604020008--efeb00a2-b17a-4d32-b1f0-b90c37a8d24e/efeb00a2-b17a-4d32-b1f0-b90c37a8d24e.md +62 -0
  7. package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/83a2d7f9-24a5-4cf4-98d5-036c82f872e8.json +302 -0
  8. package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/83a2d7f9-24a5-4cf4-98d5-036c82f872e8.md +149 -0
  9. package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/AGENTS.md +31 -0
  10. package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/meta-decomposition-3-children.md +67 -0
  11. package/.pde/2604040129--61f9dd4d-7aa6-45e6-a58b-e480b1aa6737/61f9dd4d-7aa6-45e6-a58b-e480b1aa6737--from-mia-openclaw-workspace.md +125 -0
  12. package/.pde/2604040129--61f9dd4d-7aa6-45e6-a58b-e480b1aa6737/STATUS.md +1 -0
  13. package/.pde/4f02ba94-9f52-422e-9389-b16f9b37f358.json +177 -0
  14. package/.pde/4f02ba94-9f52-422e-9389-b16f9b37f358.md +77 -0
  15. package/.pde/6ad9244d-5340-490f-b76c-c86728b9de52.json +222 -0
  16. package/.pde/6ad9244d-5340-490f-b76c-c86728b9de52.md +99 -0
  17. package/.pde/8b566792-ed15-4606-96f9-2b6f593d7e6b.json +111 -0
  18. package/.pde/8b566792-ed15-4606-96f9-2b6f593d7e6b.md +67 -0
  19. package/.pde/c7f1e74b-05a5-40e2-9f01-4cc48d2528f7.json +349 -0
  20. package/.pde/c7f1e74b-05a5-40e2-9f01-4cc48d2528f7.md +147 -0
  21. package/.pde/dfc00a78-1da0-4c09-8a16-c6982644051b.json +118 -0
  22. package/.pde/dfc00a78-1da0-4c09-8a16-c6982644051b.md +64 -0
  23. package/GUILLAUME.md +8 -0
  24. package/KINSHIP.md +9 -0
  25. package/MIA_CODE_ARCHITECTURE_REPORT.md +718 -0
  26. package/contextual_research/260119-MIA-CODE--98090899-8aff-4e11-9dc3-8b99466d1.md +1101 -0
  27. package/contextual_research/MIA.md +38 -0
  28. package/contextual_research/MIAWAPASCONE.md +59 -0
  29. package/contextual_research/MIETTE.md +38 -0
  30. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/2504.00218v2.pdf +7483 -12
  31. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/2505.00212v3.pdf +0 -0
  32. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/CONTENT.md +1014 -0
  33. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/DESIGN.gemini.md +242 -0
  34. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/INDEX.md +45 -0
  35. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2504.00218v2.md +2025 -0
  36. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2504.00218v2.pdf +7483 -12
  37. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2505.00212v3.md +1755 -0
  38. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2505.00212v3.pdf +0 -0
  39. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_12_decomposed_prompting.pdf +0 -0
  40. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_19_hugginggpt_planning.pdf +0 -0
  41. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_1_coordination_challenges.md +766 -0
  42. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_1_coordination_challenges.pdf +3431 -4
  43. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_28_guardrails_multi_agent.md +260 -0
  44. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_28_guardrails_multi_agent.pdf +0 -0
  45. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_2_navigating_complexity.md +558 -0
  46. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_2_navigating_complexity.pdf +0 -0
  47. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_34_hierarchical_multi_agent.pdf +0 -0
  48. package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_5_open_intent_extraction.pdf +0 -0
  49. package/contextual_research/PODCAST.md +109 -0
  50. package/contextual_research/langchain-principles-roadmap.md +157 -0
  51. package/contextual_research/persona-to-narrative-character-inquiry_260201.md +50 -0
  52. package/dist/cli.js +35 -11
  53. package/dist/geminiHeadless.js +8 -2
  54. package/dist/index.js +2 -1
  55. package/dist/mcp/miaco-server.js +10 -1
  56. package/dist/mcp/miatel-server.js +10 -1
  57. package/dist/mcp/miawa-server.js +10 -1
  58. package/dist/mcp/utils.d.ts +6 -1
  59. package/dist/mcp/utils.js +24 -3
  60. package/dist/sessionStore.d.ts +8 -2
  61. package/dist/sessionStore.js +39 -3
  62. package/dist/types.d.ts +1 -0
  63. package/miaco/README.md +124 -0
  64. package/miaco/dist/commands/chart.d.ts +6 -0
  65. package/miaco/dist/commands/chart.d.ts.map +1 -0
  66. package/miaco/dist/commands/chart.js +222 -0
  67. package/miaco/dist/commands/chart.js.map +1 -0
  68. package/miaco/dist/commands/decompose.d.ts +6 -0
  69. package/miaco/dist/commands/decompose.d.ts.map +1 -0
  70. package/miaco/dist/commands/decompose.js +98 -0
  71. package/miaco/dist/commands/decompose.js.map +1 -0
  72. package/miaco/dist/commands/schema.d.ts +6 -0
  73. package/miaco/dist/commands/schema.d.ts.map +1 -0
  74. package/miaco/dist/commands/schema.js +66 -0
  75. package/miaco/dist/commands/schema.js.map +1 -0
  76. package/miaco/dist/commands/stc.d.ts +11 -0
  77. package/miaco/dist/commands/stc.d.ts.map +1 -0
  78. package/miaco/dist/commands/stc.js +590 -0
  79. package/miaco/dist/commands/stc.js.map +1 -0
  80. package/miaco/dist/commands/trace.d.ts +6 -0
  81. package/miaco/dist/commands/trace.d.ts.map +1 -0
  82. package/miaco/dist/commands/trace.js +83 -0
  83. package/miaco/dist/commands/trace.js.map +1 -0
  84. package/miaco/dist/commands/validate.d.ts +6 -0
  85. package/miaco/dist/commands/validate.d.ts.map +1 -0
  86. package/miaco/dist/commands/validate.js +58 -0
  87. package/miaco/dist/commands/validate.js.map +1 -0
  88. package/miaco/dist/decompose.d.ts +93 -0
  89. package/miaco/dist/decompose.d.ts.map +1 -0
  90. package/miaco/dist/decompose.js +562 -0
  91. package/miaco/dist/decompose.js.map +1 -0
  92. package/miaco/dist/index.d.ts +18 -0
  93. package/miaco/dist/index.d.ts.map +1 -0
  94. package/miaco/dist/index.js +83 -0
  95. package/miaco/dist/index.js.map +1 -0
  96. package/miaco/dist/storage.d.ts +60 -0
  97. package/miaco/dist/storage.d.ts.map +1 -0
  98. package/miaco/dist/storage.js +100 -0
  99. package/miaco/dist/storage.js.map +1 -0
  100. package/miaco/package-lock.json +4103 -0
  101. package/miaco/package.json +40 -0
  102. package/miaco/tsconfig.json +18 -0
  103. package/miaco/version-patch-commit-and-publish.sh +1 -0
  104. package/miatel/MISSION_251231.md +3 -0
  105. package/miatel/README.md +107 -0
  106. package/miatel/dist/commands/analyze.d.ts +6 -0
  107. package/miatel/dist/commands/analyze.d.ts.map +1 -0
  108. package/miatel/dist/commands/analyze.js +100 -0
  109. package/miatel/dist/commands/analyze.js.map +1 -0
  110. package/miatel/dist/commands/arc.d.ts +6 -0
  111. package/miatel/dist/commands/arc.d.ts.map +1 -0
  112. package/miatel/dist/commands/arc.js +71 -0
  113. package/miatel/dist/commands/arc.js.map +1 -0
  114. package/miatel/dist/commands/beat.d.ts +6 -0
  115. package/miatel/dist/commands/beat.d.ts.map +1 -0
  116. package/miatel/dist/commands/beat.js +165 -0
  117. package/miatel/dist/commands/beat.js.map +1 -0
  118. package/miatel/dist/commands/theme.d.ts +6 -0
  119. package/miatel/dist/commands/theme.d.ts.map +1 -0
  120. package/miatel/dist/commands/theme.js +54 -0
  121. package/miatel/dist/commands/theme.js.map +1 -0
  122. package/miatel/dist/index.d.ts +18 -0
  123. package/miatel/dist/index.d.ts.map +1 -0
  124. package/miatel/dist/index.js +80 -0
  125. package/miatel/dist/index.js.map +1 -0
  126. package/miatel/dist/storage.d.ts +55 -0
  127. package/miatel/dist/storage.d.ts.map +1 -0
  128. package/miatel/dist/storage.js +100 -0
  129. package/miatel/dist/storage.js.map +1 -0
  130. package/miatel/package-lock.json +4103 -0
  131. package/miatel/package.json +35 -0
  132. package/miatel/src/commands/analyze.ts +109 -0
  133. package/miatel/src/commands/arc.ts +78 -0
  134. package/miatel/src/commands/beat.ts +176 -0
  135. package/miatel/src/commands/theme.ts +60 -0
  136. package/miatel/src/index.ts +94 -0
  137. package/miatel/src/storage.ts +156 -0
  138. package/miatel/tsconfig.json +18 -0
  139. package/miawa/MISSION_251231.md +144 -0
  140. package/miawa/README.md +133 -0
  141. package/miawa/dist/commands/beat.d.ts +6 -0
  142. package/miawa/dist/commands/beat.d.ts.map +1 -0
  143. package/miawa/dist/commands/beat.js +69 -0
  144. package/miawa/dist/commands/beat.js.map +1 -0
  145. package/miawa/dist/commands/ceremony.d.ts +6 -0
  146. package/miawa/dist/commands/ceremony.d.ts.map +1 -0
  147. package/miawa/dist/commands/ceremony.js +239 -0
  148. package/miawa/dist/commands/ceremony.js.map +1 -0
  149. package/miawa/dist/commands/circle.d.ts +6 -0
  150. package/miawa/dist/commands/circle.d.ts.map +1 -0
  151. package/miawa/dist/commands/circle.js +75 -0
  152. package/miawa/dist/commands/circle.js.map +1 -0
  153. package/miawa/dist/commands/eva.d.ts +6 -0
  154. package/miawa/dist/commands/eva.d.ts.map +1 -0
  155. package/miawa/dist/commands/eva.js +73 -0
  156. package/miawa/dist/commands/eva.js.map +1 -0
  157. package/miawa/dist/commands/wound.d.ts +6 -0
  158. package/miawa/dist/commands/wound.d.ts.map +1 -0
  159. package/miawa/dist/commands/wound.js +74 -0
  160. package/miawa/dist/commands/wound.js.map +1 -0
  161. package/miawa/dist/index.d.ts +19 -0
  162. package/miawa/dist/index.d.ts.map +1 -0
  163. package/miawa/dist/index.js +91 -0
  164. package/miawa/dist/index.js.map +1 -0
  165. package/miawa/dist/storage.d.ts +73 -0
  166. package/miawa/dist/storage.d.ts.map +1 -0
  167. package/miawa/dist/storage.js +100 -0
  168. package/miawa/dist/storage.js.map +1 -0
  169. package/miawa/package-lock.json +4103 -0
  170. package/miawa/package.json +36 -0
  171. package/miawa/src/commands/beat.ts +74 -0
  172. package/miawa/src/commands/ceremony.ts +256 -0
  173. package/miawa/src/commands/circle.ts +83 -0
  174. package/miawa/src/commands/eva.ts +84 -0
  175. package/miawa/src/commands/wound.ts +79 -0
  176. package/miawa/src/index.ts +108 -0
  177. package/miawa/src/storage.ts +179 -0
  178. package/miawa/tsconfig.json +18 -0
  179. package/package.json +7 -5
  180. package/references/acp/CLAUDE.md +7 -0
  181. package/references/acp/agent-plan.md +84 -0
  182. package/references/acp/clients.md +31 -0
  183. package/references/acp/extensibility.md +137 -0
  184. package/references/acp/initialization.md +225 -0
  185. package/references/acp/prompt-turn.md +321 -0
  186. package/references/acp/proxy-chains.md +562 -0
  187. package/references/acp/schema.md +3171 -0
  188. package/references/acp/session-list.md +334 -0
  189. package/references/acp/session-modes.md +170 -0
  190. package/references/acp/slash-commands.md +99 -0
  191. package/references/acp/terminals.md +281 -0
  192. package/references/acp/tool-calls.md +311 -0
  193. package/references/acp/typescript.md +29 -0
  194. package/references/claude/agent-teams.md +399 -0
  195. package/references/claude/chrome.md +231 -0
  196. package/references/claude/headless.md +158 -0
  197. package/references/claude/hooks-guide.md +708 -0
  198. package/references/claude/output-styles.md +112 -0
  199. package/references/claude/plugins.md +432 -0
  200. package/references/claude/skills.md +693 -0
  201. package/references/claude/sub-agents.md +816 -0
  202. package/references/copilot/acp/agents.md +32 -0
  203. package/references/copilot/acp/architecture.md +37 -0
  204. package/references/copilot/acp/clients.md +31 -0
  205. package/references/copilot/acp/introduction.md +42 -0
  206. package/references/copilot/acp/registry.md +339 -0
  207. package/references/copilot/acp-server.md +117 -0
  208. package/references/copilot/create-copilot-instructions.md +840 -0
  209. package/references/langchain/llms.txt +833 -0
  210. package/references/langchain/python/agents.md +677 -0
  211. package/references/langchain/python/context-engineering.md +1195 -0
  212. package/references/langchain/python/human-in-the-loop.md +326 -0
  213. package/references/langchain/python/long-term-memory.md +168 -0
  214. package/references/langchain/python/mcp.md +949 -0
  215. package/references/langchain/python/multi-agents/custom-workflow.md +187 -0
  216. package/references/langchain/python/multi-agents/handoffs.md +436 -0
  217. package/references/langchain/python/multi-agents/overview.md +295 -0
  218. package/references/langchain/python/multi-agents/router.md +150 -0
  219. package/references/langchain/python/multi-agents/skills.md +92 -0
  220. package/references/langchain/python/multi-agents/subagents.md +486 -0
  221. package/references/langchain/python/retrieval.md +320 -0
  222. package/references/langchain/python/runtime.md +141 -0
  223. package/references/langchain/python/short-term-memory.md +658 -0
  224. package/references/langchain/python/structured-output.md +712 -0
  225. package/references/langfuse/llms.txt +148 -0
  226. package/references/langgraph/javascript/llms.txt +275 -0
  227. package/references/skills/home.md +259 -0
  228. package/references/skills/integrate-skills.md +103 -0
  229. package/references/skills/specification.md +254 -0
  230. package/references/skills/what-are-skills.md +74 -0
  231. package/rispecs/README.md +164 -0
  232. package/rispecs/_sync_/miadi-code/SPEC.md +313 -0
  233. package/rispecs/_sync_/miadi-code/STATUS.md +177 -0
  234. package/rispecs/_sync_/miadi-code/dashboard/SPEC.md +465 -0
  235. package/rispecs/_sync_/miadi-code/dashboard/STATUS.md +212 -0
  236. package/rispecs/_sync_/miadi-code/multiline-input/SPEC.md +232 -0
  237. package/rispecs/_sync_/miadi-code/multiline-input/STATUS.md +108 -0
  238. package/rispecs/_sync_/miadi-code/pde/SPEC.md +253 -0
  239. package/rispecs/_sync_/miadi-code/pde/STATUS.md +56 -0
  240. package/rispecs/_sync_/miadi-code/stc/SPEC.md +397 -0
  241. package/rispecs/_sync_/miadi-code/stc/STATUS.md +70 -0
  242. package/rispecs/ava-langstack/inquiry-routing-upgrade.spec.md +119 -0
  243. package/rispecs/borrowed_from_opencode/001-client-server-architecture.rispec.md +98 -0
  244. package/rispecs/borrowed_from_opencode/002-event-bus-system.rispec.md +125 -0
  245. package/rispecs/borrowed_from_opencode/003-instance-state-pattern.rispec.md +136 -0
  246. package/rispecs/borrowed_from_opencode/004-namespace-module-pattern.rispec.md +151 -0
  247. package/rispecs/borrowed_from_opencode/005-zod-schema-validation.rispec.md +139 -0
  248. package/rispecs/borrowed_from_opencode/006-named-error-system.rispec.md +155 -0
  249. package/rispecs/borrowed_from_opencode/007-structured-logging.rispec.md +138 -0
  250. package/rispecs/borrowed_from_opencode/008-lazy-initialization.rispec.md +127 -0
  251. package/rispecs/borrowed_from_opencode/009-multi-agent-system.rispec.md +97 -0
  252. package/rispecs/borrowed_from_opencode/010-agent-definition-config.rispec.md +135 -0
  253. package/rispecs/borrowed_from_opencode/011-agent-permission-rulesets.rispec.md +151 -0
  254. package/rispecs/borrowed_from_opencode/012-agent-prompt-templates.rispec.md +141 -0
  255. package/rispecs/borrowed_from_opencode/013-agent-generation.rispec.md +142 -0
  256. package/rispecs/borrowed_from_opencode/014-plan-build-mode-toggle.rispec.md +155 -0
  257. package/rispecs/borrowed_from_opencode/015-subagent-task-delegation.rispec.md +146 -0
  258. package/rispecs/borrowed_from_opencode/016-agent-model-selection.rispec.md +151 -0
  259. package/rispecs/borrowed_from_opencode/017-compaction-agent.rispec.md +150 -0
  260. package/rispecs/borrowed_from_opencode/018-session-persistence.rispec.md +125 -0
  261. package/rispecs/borrowed_from_opencode/019-session-compaction.rispec.md +132 -0
  262. package/rispecs/borrowed_from_opencode/020-session-forking.rispec.md +134 -0
  263. package/rispecs/borrowed_from_opencode/021-session-revert-snapshot.rispec.md +135 -0
  264. package/rispecs/borrowed_from_opencode/022-session-sharing.rispec.md +165 -0
  265. package/rispecs/borrowed_from_opencode/023-session-summary-diffs.rispec.md +165 -0
  266. package/rispecs/borrowed_from_opencode/024-child-sessions.rispec.md +164 -0
  267. package/rispecs/borrowed_from_opencode/025-session-title-generation.rispec.md +162 -0
  268. package/rispecs/borrowed_from_opencode/026-message-parts-model.rispec.md +201 -0
  269. package/rispecs/borrowed_from_opencode/027-streaming-message-deltas.rispec.md +212 -0
  270. package/rispecs/borrowed_from_opencode/028-multi-provider-architecture.rispec.md +184 -0
  271. package/rispecs/borrowed_from_opencode/029-provider-authentication.rispec.md +225 -0
  272. package/rispecs/borrowed_from_opencode/030-model-registry.rispec.md +222 -0
  273. package/rispecs/borrowed_from_opencode/031-cost-tracking.rispec.md +243 -0
  274. package/rispecs/borrowed_from_opencode/032-provider-transform-pipeline.rispec.md +282 -0
  275. package/rispecs/borrowed_from_opencode/033-provider-sdk-abstraction.rispec.md +338 -0
  276. package/rispecs/borrowed_from_opencode/034-tool-registry.rispec.md +110 -0
  277. package/rispecs/borrowed_from_opencode/035-tool-context-injection.rispec.md +155 -0
  278. package/rispecs/borrowed_from_opencode/036-tool-output-truncation.rispec.md +138 -0
  279. package/rispecs/borrowed_from_opencode/037-batch-tool.rispec.md +129 -0
  280. package/rispecs/borrowed_from_opencode/038-multi-edit-tool.rispec.md +167 -0
  281. package/rispecs/borrowed_from_opencode/039-apply-patch-tool.rispec.md +161 -0
  282. package/rispecs/borrowed_from_opencode/040-code-search-tool.rispec.md +143 -0
  283. package/rispecs/borrowed_from_opencode/041-web-fetch-tool.rispec.md +131 -0
  284. package/rispecs/borrowed_from_opencode/042-web-search-tool.rispec.md +159 -0
  285. package/rispecs/borrowed_from_opencode/043-todo-tool.rispec.md +156 -0
  286. package/rispecs/borrowed_from_opencode/044-plan-mode-tool.rispec.md +139 -0
  287. package/rispecs/borrowed_from_opencode/045-task-tool.rispec.md +146 -0
  288. package/rispecs/borrowed_from_opencode/046-question-tool.rispec.md +170 -0
  289. package/rispecs/borrowed_from_opencode/047-external-directory-tool.rispec.md +166 -0
  290. package/rispecs/borrowed_from_opencode/048-file-read-write-tools.rispec.md +205 -0
  291. package/rispecs/borrowed_from_opencode/049-lsp-server-management.rispec.md +104 -0
  292. package/rispecs/borrowed_from_opencode/050-lsp-hover-completion.rispec.md +102 -0
  293. package/rispecs/borrowed_from_opencode/051-lsp-diagnostics.rispec.md +86 -0
  294. package/rispecs/borrowed_from_opencode/052-lsp-root-detection.rispec.md +109 -0
  295. package/rispecs/borrowed_from_opencode/053-remote-mcp-servers.rispec.md +119 -0
  296. package/rispecs/borrowed_from_opencode/054-mcp-oauth-flow.rispec.md +107 -0
  297. package/rispecs/borrowed_from_opencode/055-mcp-tool-conversion.rispec.md +118 -0
  298. package/rispecs/borrowed_from_opencode/056-mcp-connection-monitoring.rispec.md +106 -0
  299. package/rispecs/borrowed_from_opencode/057-local-mcp-servers.rispec.md +116 -0
  300. package/rispecs/borrowed_from_opencode/058-rich-tui.rispec.md +108 -0
  301. package/rispecs/borrowed_from_opencode/059-streaming-display.rispec.md +116 -0
  302. package/rispecs/borrowed_from_opencode/060-permission-prompts.rispec.md +130 -0
  303. package/rispecs/borrowed_from_opencode/061-session-navigation.rispec.md +155 -0
  304. package/rispecs/borrowed_from_opencode/062-syntax-highlighting.rispec.md +151 -0
  305. package/rispecs/borrowed_from_opencode/063-keybinding-system.rispec.md +181 -0
  306. package/rispecs/borrowed_from_opencode/064-multi-level-config.rispec.md +155 -0
  307. package/rispecs/borrowed_from_opencode/065-jsonc-config.rispec.md +190 -0
  308. package/rispecs/borrowed_from_opencode/066-config-env-variables.rispec.md +153 -0
  309. package/rispecs/borrowed_from_opencode/067-config-deep-merging.rispec.md +178 -0
  310. package/rispecs/borrowed_from_opencode/068-remote-org-config.rispec.md +183 -0
  311. package/rispecs/borrowed_from_opencode/069-config-markdown-frontmatter.rispec.md +206 -0
  312. package/rispecs/borrowed_from_opencode/070-managed-config-directory.rispec.md +232 -0
  313. package/rispecs/borrowed_from_opencode/071-plugin-architecture.rispec.md +104 -0
  314. package/rispecs/borrowed_from_opencode/072-plugin-hooks.rispec.md +123 -0
  315. package/rispecs/borrowed_from_opencode/073-plugin-auto-install.rispec.md +115 -0
  316. package/rispecs/borrowed_from_opencode/074-permission-system.rispec.md +133 -0
  317. package/rispecs/borrowed_from_opencode/075-git-worktree-management.rispec.md +126 -0
  318. package/rispecs/borrowed_from_opencode/076-snapshot-system.rispec.md +124 -0
  319. package/rispecs/borrowed_from_opencode/077-snapshot-diff.rispec.md +117 -0
  320. package/rispecs/borrowed_from_opencode/078-snapshot-restore.rispec.md +128 -0
  321. package/rispecs/borrowed_from_opencode/079-worktree-branch-naming.rispec.md +122 -0
  322. package/rispecs/borrowed_from_opencode/080-sqlite-storage.rispec.md +134 -0
  323. package/rispecs/borrowed_from_opencode/081-database-migrations.rispec.md +148 -0
  324. package/rispecs/borrowed_from_opencode/082-database-transactions.rispec.md +138 -0
  325. package/rispecs/borrowed_from_opencode/083-deferred-effects.rispec.md +148 -0
  326. package/rispecs/borrowed_from_opencode/084-permission-rules.rispec.md +123 -0
  327. package/rispecs/borrowed_from_opencode/085-permission-glob-patterns.rispec.md +113 -0
  328. package/rispecs/borrowed_from_opencode/086-permission-merging.rispec.md +134 -0
  329. package/rispecs/borrowed_from_opencode/087-permission-modes.rispec.md +145 -0
  330. package/rispecs/borrowed_from_opencode/088-http-api-server.rispec.md +165 -0
  331. package/rispecs/borrowed_from_opencode/089-openapi-spec-generation.rispec.md +164 -0
  332. package/rispecs/borrowed_from_opencode/090-websocket-support.rispec.md +136 -0
  333. package/rispecs/borrowed_from_opencode/091-sse-streaming.rispec.md +168 -0
  334. package/rispecs/borrowed_from_opencode/092-mdns-discovery.rispec.md +145 -0
  335. package/rispecs/borrowed_from_opencode/093-javascript-sdk.rispec.md +200 -0
  336. package/rispecs/borrowed_from_opencode/094-skill-system.rispec.md +187 -0
  337. package/rispecs/borrowed_from_opencode/095-skill-discovery.rispec.md +182 -0
  338. package/rispecs/borrowed_from_opencode/096-desktop-remote-driving.rispec.md +175 -0
  339. package/rispecs/borrowed_from_opencode/INDEX.md +255 -0
  340. package/rispecs/core.rispecs.md +261 -0
  341. package/rispecs/engines.rispecs.md +241 -0
  342. package/rispecs/formatting.rispecs.md +252 -0
  343. package/rispecs/living-specifications.rispecs.md +361 -0
  344. package/rispecs/mcp.rispecs.md +197 -0
  345. package/rispecs/pde.rispecs.md +399 -0
  346. package/rispecs/pi-mono-envisionning/ENVISIONING.md +366 -0
  347. package/rispecs/pi-mono-envisionning/storytelling-horizon.rispecs.md +76 -0
  348. package/rispecs/pi-mono-envisionning/widget.rispecs.md +2 -0
  349. package/rispecs/relation-to-mcp-structural-thinking.kin.md +72 -0
  350. package/rispecs/research-for-better-framework/CLAUDE.md +7 -0
  351. package/rispecs/research-for-better-framework/survey-pi-openclaw-opencode-openhands.md +210 -0
  352. package/rispecs/session.rispecs.md +277 -0
  353. package/rispecs/stc.rispecs.md +138 -0
  354. package/rispecs/unifier.rispecs.md +317 -0
  355. package/scripts/LAUNCH--mcp-mia-code--testing--2603141315--ac705a66-2c15-4a1c-a26d-9491018c5ba8.sh +2 -0
  356. package/scripts/RESUME--mia-code--mcps--260313--ac705a66-2c15-4a1c-a26d-9491018c5ba8.sh +1 -0
  357. package/scripts/install-widget-in-home-pi-agent-extensions.sh +4 -0
  358. package/scripts/sample-decompose--2604011535-prompt.sh +1 -0
  359. package/skills/deep-search/AGENTS.md +17 -0
  360. package/skills/deep-search/SKILL.md +281 -0
  361. package/skills/deep-search/agent-templates.md +224 -0
  362. package/skills/deep-search/orchestration-patterns.md +95 -0
  363. package/skills/miaco-pde-inquiry-routing-deep-search/AGENTS.md +13 -0
  364. package/skills/miaco-pde-inquiry-routing-deep-search/SKILL.md +136 -0
  365. package/skills/miaco-pde-inquiry-routing-internal-external-relationship/AGENTS.md +4 -0
  366. package/skills/miaco-pde-inquiry-routing-internal-external-relationship/SKILL.md +157 -0
  367. package/skills/miaco-pde-inquiry-routing-local-qmd/AGENTS.md +42 -0
  368. package/skills/miaco-pde-inquiry-routing-local-qmd/SKILL.md +135 -0
  369. package/skills/qmd/AGENTS.md +3 -0
  370. package/skills/qmd/SKILL.md +144 -0
  371. package/skills/qmd/references/mcp-setup.md +102 -0
  372. package/skills/rise-pde-inquiry-session-multi-agents-v3/SKILL.md +234 -0
  373. package/skills/rise-pde-inquiry-session-multi-agents-v3/agent-templates.md +436 -0
  374. package/skills/rise-pde-inquiry-session-multi-agents-v3/orchestration-patterns.md +197 -0
  375. package/skills/rise-pde-inquiry-session-multi-agents-v3/references/ceremonial-technology.md +102 -0
  376. package/skills/rise-pde-inquiry-session-multi-agents-v3/references/creative-orientation.md +99 -0
  377. package/skills/rise-pde-inquiry-session-multi-agents-v3/references/prompt-decomposition.md +73 -0
  378. package/skills/rise-pde-inquiry-session-multi-agents-v3/references/rise-framework.md +74 -0
  379. package/skills/rise-pde-inquiry-session-multi-agents-v3/references/structural-tension.md +82 -0
  380. package/src/cli.ts +35 -11
  381. package/src/geminiHeadless.ts +7 -2
  382. package/src/index.ts +2 -1
  383. package/src/mcp/miaco-server.ts +13 -1
  384. package/src/mcp/miatel-server.ts +13 -1
  385. package/src/mcp/miawa-server.ts +13 -1
  386. package/src/mcp/utils.ts +41 -8
  387. package/src/sessionStore.ts +44 -4
  388. package/src/types.ts +2 -1
  389. package/widget/mia-ceremony/README.md +36 -0
  390. package/widget/mia-ceremony/index.ts +143 -0
  391. package/widget/mia-interceptor/README.md +39 -0
  392. package/widget/mia-interceptor/index.ts +221 -0
  393. package/widget/mia-tools/README.md +37 -0
  394. package/widget/mia-tools/index.ts +569 -0
  395. package/widget/miette-echo/README.md +44 -0
  396. package/widget/miette-echo/index.ts +164 -0
  397. package/.claude/settings.local.json +0 -9
  398. package/.hch/issue_.env +0 -4
  399. package/.hch/issue_add__2601211715.json +0 -77
  400. package/.hch/issue_add__2601211715.md +0 -4
  401. package/.hch/issue_add__2602242020.json +0 -78
  402. package/.hch/issue_add__2602242020.md +0 -7
  403. package/.hch/issues.json +0 -2312
  404. package/.hch/issues.md +0 -30
  405. package/WS__mia-code__260214__IAIP_PDE.code-workspace +0 -29
  406. package/WS__mia-code__src332__260122.code-workspace +0 -23
  407. package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/checkpoints/index.md +0 -6
  408. package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/events.jsonl +0 -213
  409. package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/plan.md +0 -243
  410. package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/workspace.yaml +0 -5
@@ -0,0 +1,465 @@
1
+ # RISE Specification: Interactive Terminal Dashboard (TUI)
2
+
3
+ ## Status: IMPLEMENTED ✅
4
+
5
+ **Version**: 1.0.0
6
+ **Module**: `miadi-code/src/dashboard.ts`
7
+ **Document ID**: miadi-code-dashboard-rise-spec-v1
8
+ **Last Updated**: 2026-01-31
9
+
10
+ ---
11
+
12
+ ## Core Creative Intent
13
+
14
+ The Interactive Terminal Dashboard empowers CLI agent developers to create **rich, menu-driven terminal user interfaces** within any interactive command-line application. This pattern enables:
15
+
16
+ - Full-screen terminal rendering with visual hierarchy
17
+ - Interactive menu selection with keyboard navigation
18
+ - Real-time data refresh and progress visualization
19
+ - Graceful TTY detection and fallback modes
20
+ - Isolated input handling to prevent readline conflicts
21
+
22
+ ---
23
+
24
+ ## R - Reverse Engineering
25
+
26
+ ### Current State Analysis
27
+
28
+ The dashboard module (`dashboard.ts`) implements a **Structural Tension Interface (STI)** - a TUI for visualizing and managing Structural Tension Charts within the miadi-code CLI.
29
+
30
+ ### File Structure
31
+
32
+ ```
33
+ miadi-code/src/
34
+ ├── dashboard.ts # Main dashboard class (StructuralTensionDashboard)
35
+ ├── dashboard.test.ts # Data adapter and rendering tests
36
+ ├── cli.ts # Integration point (/dashboard, /ui commands)
37
+ └── stc/
38
+ └── workspace-client.ts # API client used by dashboard
39
+ ```
40
+
41
+ ### Architectural Pattern
42
+
43
+ ```
44
+ User Input (/dashboard)
45
+
46
+ ┌──────────────────────────────────────────────────────────────────────┐
47
+ │ StructuralTensionDashboard │
48
+ ├──────────────────────────────────────────────────────────────────────┤
49
+ │ ┌───────────────┐ ┌───────────────┐ ┌────────────────────────────┐│
50
+ │ │ TTY Detection │ │ Health Check │ │ Repo Auto-Detection ││
51
+ │ │ & Fallback │ │ (API reachable)│ │ (git remote get-url origin)││
52
+ │ └───────┬───────┘ └───────┬───────┘ └───────────┬────────────────┘│
53
+ │ │ │ │ │
54
+ │ ▼ ▼ ▼ │
55
+ │ ┌────────────────────────────────────────────────────────────────┐ │
56
+ │ │ MAIN LOOP │ │
57
+ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
58
+ │ │ │ Render │→ │ Show Menu│→ │ Handle │→ │ Refresh │→ LOOP │ │
59
+ │ │ │ Screen │ │ (Enquirer)│ │ Selection│ │ Data │ │ │
60
+ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
61
+ │ └────────────────────────────────────────────────────────────────┘ │
62
+ ├──────────────────────────────────────────────────────────────────────┤
63
+ │ ┌───────────────────────────────────────────────────────────────┐ │
64
+ │ │ RENDER COMPONENTS │ │
65
+ │ │ Header: Title bar with desired outcome │ │
66
+ │ │ Tension Field: Progress bar, action steps, narrative beats │ │
67
+ │ │ Footer: Current reality observations │ │
68
+ │ │ Status: Error/success message display │ │
69
+ │ └───────────────────────────────────────────────────────────────┘ │
70
+ └──────────────────────────────────────────────────────────────────────┘
71
+
72
+ STCWorkspaceClient (HTTP → Miadi Platform /api/stc/*)
73
+ ```
74
+
75
+ ### Core Dependencies
76
+
77
+ | Dependency | Purpose | Import Pattern |
78
+ |------------|---------|----------------|
79
+ | `chalk` | Terminal colors and styling | `import chalk from 'chalk'` |
80
+ | `enquirer` | Interactive prompts (select, input) | `import Enquirer from 'enquirer'` |
81
+ | `child_process.execSync` | Git command execution | `import { execSync } from 'child_process'` |
82
+ | `readline` | TTY detection | `import { createInterface } from 'readline'` |
83
+
84
+ ---
85
+
86
+ ## I - Intent Extraction
87
+
88
+ ### Primary Intent
89
+
90
+ Enable developers of interactive CLI agents to create **rich terminal dashboards** with:
91
+
92
+ 1. **Full-screen rendering** - Clear screen, draw structured layout
93
+ 2. **Interactive menus** - Arrow key navigation, selection
94
+ 3. **Real-time updates** - Data refresh on user actions
95
+ 4. **Input isolation** - Prevent readline listener conflicts
96
+ 5. **Graceful degradation** - Static view when TTY unavailable
97
+
98
+ ### User Stories
99
+
100
+ 1. **As a CLI developer**, I want to create interactive menus so users can navigate complex data without typing commands.
101
+
102
+ 2. **As a terminal user**, I want a visual dashboard showing my progress toward goals with clear visual hierarchy.
103
+
104
+ 3. **As an agent developer**, I want to integrate TUI elements without breaking existing readline-based chat interfaces.
105
+
106
+ 4. **As an operator**, I want dashboards to fail gracefully when run in non-interactive contexts (CI, pipes).
107
+
108
+ ### Success Criteria
109
+
110
+ - [x] Full-screen terminal rendering with console.clear()
111
+ - [x] Interactive menu with arrow keys via Enquirer
112
+ - [x] Data adapter pattern for server-to-UI transformation
113
+ - [x] TTY detection with read-only fallback
114
+ - [x] Readline listener isolation for integration with chat modes
115
+ - [x] Error and status message display
116
+ - [x] Progress bar visualization
117
+ - [x] Automated sync after mutations
118
+
119
+ ---
120
+
121
+ ## S - Specification
122
+
123
+ ### Class: StructuralTensionDashboard
124
+
125
+ ```typescript
126
+ export class StructuralTensionDashboard {
127
+ private client: STCWorkspaceClient;
128
+ private currentChart: STCChart | null;
129
+ private currentRepo: string | null;
130
+ private isRunning: boolean;
131
+ private errorMessage: string | null;
132
+ private statusMessage: string | null;
133
+ private isTTY: boolean;
134
+
135
+ constructor(repo?: string);
136
+
137
+ // Lifecycle
138
+ public async start(): Promise<void>;
139
+
140
+ // Rendering
141
+ private render(): void;
142
+ private renderReadOnly(): void;
143
+ private renderHeader(): void;
144
+ private renderTensionField(): void;
145
+ private renderFooter(): void;
146
+
147
+ // Interaction
148
+ private async showMenu(): Promise<void>;
149
+ private async promptObserve(): Promise<void>;
150
+ private async promptAction(): Promise<void>;
151
+ private async promptComplete(): Promise<void>;
152
+
153
+ // Data
154
+ private async refreshData(): Promise<void>;
155
+ private calculateProgress(actions: RawAction[]): number;
156
+
157
+ // Utilities
158
+ private detectRepositoryFromPath(projectRoot: string): string | undefined;
159
+ private centerText(text: string, width: number): string;
160
+ }
161
+ ```
162
+
163
+ ### Data Adapter Pattern
164
+
165
+ The dashboard transforms server data structures to UI-friendly formats:
166
+
167
+ ```typescript
168
+ // Server format (FullWorkspaceChart from API)
169
+ interface RawChart {
170
+ chartId?: string;
171
+ desiredOutcome?: { observations?: string[] };
172
+ currentReality?: { observations?: string[] };
173
+ actions?: RawAction[];
174
+ narrativeBeats?: RawBeat[];
175
+ chartEntity?: { metadata?: { createdAt?: string; updatedAt?: string } };
176
+ }
177
+
178
+ // UI format (STCChart for rendering)
179
+ interface STCChart {
180
+ id: string;
181
+ desiredOutcome: string;
182
+ currentReality: string[];
183
+ actionSteps: STCActionStep[];
184
+ narrativeBeats: STCNarrativeBeat[];
185
+ progress: number; // Calculated from completed/total
186
+ createdAt: string;
187
+ updatedAt: string;
188
+ }
189
+
190
+ // Adapter function
191
+ function adaptChartData(rawChart: RawChart): STCChart;
192
+ ```
193
+
194
+ ### Menu Definition Pattern
195
+
196
+ ```typescript
197
+ const response = await prompt<{ choice: string }>({
198
+ type: 'select',
199
+ name: 'choice',
200
+ message: 'Actions:',
201
+ choices: [
202
+ { name: 'observe', message: '👁️ Add Observation', hint: 'Add to current reality' },
203
+ { name: 'action', message: '⚡ Add Action Step', hint: 'Add to path' },
204
+ { name: 'complete', message: '✅ Complete Action', hint: 'Mark step done' },
205
+ { name: 'sync', message: '🔄 Sync & Refresh', hint: 'Force file sync' },
206
+ { name: 'quit', message: '❌ Quit Dashboard', hint: 'Return to chat' }
207
+ ]
208
+ });
209
+ ```
210
+
211
+ ### TTY Detection & Fallback
212
+
213
+ ```typescript
214
+ constructor(repo?: string) {
215
+ this.isTTY = process.stdin.isTTY ?? false;
216
+ }
217
+
218
+ public async start(): Promise<void> {
219
+ // ...health checks and setup...
220
+
221
+ if (!this.isTTY) {
222
+ console.log(chalk.yellow('\n⚠️ Dashboard requires an interactive terminal.'));
223
+ console.log(chalk.dim('Run miadi-code directly (not through a pipe) to use the dashboard.'));
224
+
225
+ // Show read-only snapshot instead
226
+ await this.refreshData();
227
+ this.renderReadOnly();
228
+ return;
229
+ }
230
+
231
+ // Interactive mode continues...
232
+ }
233
+ ```
234
+
235
+ ### Readline Isolation Pattern
236
+
237
+ ```typescript
238
+ // In cli.ts - before launching dashboard
239
+ case 'dashboard':
240
+ case 'ui':
241
+ try {
242
+ requiresFeature(config.engine, 'charts');
243
+ const dashboard = new StructuralTensionDashboard();
244
+
245
+ // COMPLETELY ISOLATE STDIN - prevent readline conflicts
246
+ const listeners = rl.listeners('line');
247
+ rl.removeAllListeners('line');
248
+ rl.pause();
249
+
250
+ await dashboard.start();
251
+
252
+ // RESTORE LISTENERS after dashboard exits
253
+ rl.resume();
254
+ listeners.forEach(l => rl.on('line', l as any));
255
+ rl.prompt();
256
+ } catch (e: any) {
257
+ console.log(formatError(e.message));
258
+ }
259
+ break;
260
+ ```
261
+
262
+ ### Progress Bar Rendering
263
+
264
+ ```typescript
265
+ function getProgressBar(progress: number, width: number = 20): string {
266
+ const filled = Math.round(progress * width);
267
+ const empty = width - filled;
268
+ return '█'.repeat(filled) + '░'.repeat(empty);
269
+ }
270
+
271
+ // Usage in render
272
+ const bar = getProgressBar(this.currentChart.progress, 40);
273
+ console.log(` 🚀 PATH PROGRESS: [${chalk.cyan(bar)}] ${Math.round(progress * 100)}%`);
274
+ ```
275
+
276
+ ### Full-Screen Layout Structure
277
+
278
+ ```
279
+ ┌──────────────────────────────────────────────────────────────────────┐
280
+ │ STRUCTURAL TENSION INTERFACE │
281
+ │━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━│
282
+ │ 🎯 DESIRED OUTCOME: [Goal text from chart] │
283
+ │━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━│
284
+ │ │
285
+ │ 🚀 PATH PROGRESS: [████████████████░░░░] 80% │
286
+ │ │
287
+ │ 🗺️ PATH OF LEAST RESISTANCE (Latest Action Steps): │
288
+ │ ✅ Completed action 1 │
289
+ │ ✅ Completed action 2 │
290
+ │ ⏳ Pending action 3 │
291
+ │ ⏳ Pending action 4 │
292
+ │ │
293
+ │ 🎭 NARRATIVE BEATS (Latest): │
294
+ │ ✨ [Act 1] Initial setup complete │
295
+ │ ✨ [Act 2] Integration milestone │
296
+ │ │
297
+ │━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━│
298
+ │ 🧱 CURRENT REALITY (Latest): │
299
+ │ 👁️ Observation 1 │
300
+ │ 👁️ Observation 2 │
301
+ │ 👁️ Observation 3 │
302
+ │━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━│
303
+ │ │
304
+ │ ✨ [Status message if any] │
305
+ │ │
306
+ │ ? Actions: (Use arrow keys) │
307
+ │ ❯ 👁️ Add Observation │
308
+ │ ⚡ Add Action Step │
309
+ │ ✅ Complete Action │
310
+ │ 🔄 Sync & Refresh │
311
+ │ ❌ Quit Dashboard │
312
+ └──────────────────────────────────────────────────────────────────────┘
313
+ ```
314
+
315
+ ---
316
+
317
+ ## E - Export Optimization
318
+
319
+ ### CLI Commands
320
+
321
+ | Command | Description |
322
+ |---------|-------------|
323
+ | `/dashboard` | Launch interactive TUI dashboard |
324
+ | `/ui` | Alias for /dashboard |
325
+
326
+ ### Programmatic API
327
+
328
+ ```typescript
329
+ import { StructuralTensionDashboard } from './dashboard.js';
330
+
331
+ // Basic usage
332
+ const dashboard = new StructuralTensionDashboard();
333
+ await dashboard.start();
334
+
335
+ // With specific repository
336
+ const dashboard = new StructuralTensionDashboard('owner/repo');
337
+ await dashboard.start();
338
+ ```
339
+
340
+ ### Integration Pattern for Other CLI Agents
341
+
342
+ To add a similar dashboard to any CLI agent:
343
+
344
+ ```typescript
345
+ // 1. Create a dashboard class with the pattern
346
+ class MyDashboard {
347
+ private isRunning = false;
348
+ private isTTY = process.stdin.isTTY ?? false;
349
+
350
+ async start() {
351
+ if (!this.isTTY) {
352
+ this.renderReadOnly();
353
+ return;
354
+ }
355
+
356
+ this.isRunning = true;
357
+ while (this.isRunning) {
358
+ this.render();
359
+ await this.showMenu();
360
+ }
361
+ }
362
+
363
+ private render() {
364
+ console.clear();
365
+ // Draw your UI with chalk
366
+ }
367
+
368
+ private async showMenu() {
369
+ const { prompt } = Enquirer;
370
+ const response = await prompt({
371
+ type: 'select',
372
+ name: 'choice',
373
+ message: 'Select:',
374
+ choices: ['Option 1', 'Option 2', 'Quit']
375
+ });
376
+ // Handle selection
377
+ }
378
+ }
379
+
380
+ // 2. Isolate readline when launching
381
+ const listeners = rl.listeners('line');
382
+ rl.removeAllListeners('line');
383
+ rl.pause();
384
+
385
+ await new MyDashboard().start();
386
+
387
+ rl.resume();
388
+ listeners.forEach(l => rl.on('line', l as any));
389
+ rl.prompt();
390
+ ```
391
+
392
+ ### Key Implementation Guidelines
393
+
394
+ 1. **Always check TTY** - `process.stdin.isTTY` before interactive mode
395
+ 2. **Use console.clear()** - Full-screen rendering each frame
396
+ 3. **Chalk for styling** - Colors, bold, dim for visual hierarchy
397
+ 4. **Enquirer for menus** - Handles arrow keys, selection
398
+ 5. **Isolate readline** - Pause and restore listeners
399
+ 6. **Data adapter pattern** - Transform API data to UI-friendly format
400
+ 7. **Status messages** - Temporary feedback after actions
401
+ 8. **Error handling** - Display errors without crashing loop
402
+
403
+ ---
404
+
405
+ ## Testing Patterns
406
+
407
+ ### Data Adapter Tests
408
+
409
+ ```typescript
410
+ describe('Dashboard Data Adapter', () => {
411
+ it('should handle empty chart data', () => {
412
+ const raw = {};
413
+ const result = adaptChartData(raw);
414
+ assert.strictEqual(result.id, 'unknown');
415
+ assert.strictEqual(result.desiredOutcome, 'No Goal Set');
416
+ });
417
+
418
+ it('should calculate progress correctly', () => {
419
+ const actions = [
420
+ { name: 'a1', metadata: { completionStatus: true } },
421
+ { name: 'a2', metadata: { completionStatus: false } },
422
+ ];
423
+ assert.strictEqual(calculateProgress(actions), 0.5);
424
+ });
425
+ });
426
+ ```
427
+
428
+ ### Rendering Helper Tests
429
+
430
+ ```typescript
431
+ describe('Dashboard Rendering Helpers', () => {
432
+ it('should render progress bar for 50%', () => {
433
+ const bar = getProgressBar(0.5, 10);
434
+ assert.strictEqual(bar, '█████░░░░░');
435
+ });
436
+ });
437
+ ```
438
+
439
+ ---
440
+
441
+ ## Known Limitations
442
+
443
+ 1. **Terminal Flickering** - Rapid render cycles may cause visual artifacts
444
+ 2. **Settle Delay** - API mutations require 1.5s wait for server sync
445
+ 3. **Input Bleeding** - Some terminal multiplexers leak buffered input
446
+ 4. **Schema Drift** - Manual adapter updates needed for API changes
447
+
448
+ ---
449
+
450
+ ## Dependencies
451
+
452
+ | Package | Version | Purpose |
453
+ |---------|---------|---------|
454
+ | `chalk` | ^5.x | Terminal styling |
455
+ | `enquirer` | ^2.x | Interactive prompts |
456
+ | Node.js | 18+ | TTY support, async/await |
457
+
458
+ ---
459
+
460
+ ## References
461
+
462
+ - miadi-code implementation: `miadi-code/src/dashboard.ts`
463
+ - Test suite: `miadi-code/src/dashboard.test.ts`
464
+ - CLI integration: `miadi-code/src/cli.ts` (lines 855-875)
465
+ - API client: `miadi-code/src/stc/workspace-client.ts`
@@ -0,0 +1,212 @@
1
+ # Interactive Terminal Dashboard (TUI) - STATUS
2
+
3
+ **Version**: 1.1
4
+ **Date**: 2026-01-31
5
+ **Status**: ✅ ENHANCED
6
+
7
+ ---
8
+
9
+ ## Implementation Checklist
10
+
11
+ ### ✅ Phase 1: Core Architecture (COMPLETE)
12
+ - [x] Create `src/dashboard.ts` - Main dashboard class
13
+ - [x] Implement TTY detection with fallback
14
+ - [x] Implement repository auto-detection via git remote
15
+ - [x] Implement health check for API availability
16
+
17
+ ### ✅ Phase 2: Rendering System (COMPLETE)
18
+ - [x] Full-screen rendering with `console.clear()`
19
+ - [x] Header with desired outcome display
20
+ - [x] Tension field with progress bar
21
+ - [x] Action steps list (completed/pending)
22
+ - [x] Narrative beats section
23
+ - [x] Footer with current reality observations
24
+ - [x] Status/error message display
25
+
26
+ ### ✅ Phase 3: Interaction Layer (ENHANCED)
27
+ - [x] Menu system with Enquirer
28
+ - [x] Observe action (add observation)
29
+ - [x] Action step addition
30
+ - [x] Action completion via selection menu
31
+ - [x] Sync & refresh operation
32
+ - [x] Quit with graceful cleanup
33
+ - [x] **NEW**: Dynamic menu hints showing operation availability
34
+ - [x] **NEW**: Prerequisite checks before prompting
35
+
36
+ ### ✅ Phase 4: Data Layer (COMPLETE)
37
+ - [x] Data adapter: FullWorkspaceChart → STCChart
38
+ - [x] Progress calculation from action completion
39
+ - [x] Handle nested/complex data structures
40
+ - [x] Graceful handling of missing fields
41
+
42
+ ### ✅ Phase 5: CLI Integration (COMPLETE)
43
+ - [x] `/dashboard` command in cli.ts
44
+ - [x] `/ui` alias
45
+ - [x] Readline listener isolation
46
+ - [x] Listener restoration after exit
47
+
48
+ ### ✅ Phase 6: Testing (COMPLETE)
49
+ - [x] Data adapter tests (11 tests)
50
+ - [x] Progress calculation tests (5 tests)
51
+ - [x] Rendering helper tests (4 tests)
52
+ - [x] Edge case tests (4 tests)
53
+ - [x] Total: 24 dashboard-specific tests passing
54
+
55
+ ---
56
+
57
+ ## Files Created
58
+
59
+ | File | Purpose | Lines |
60
+ |------|---------|-------|
61
+ | `src/dashboard.ts` | Main dashboard class | ~365 |
62
+ | `src/dashboard.test.ts` | Data adapter & rendering tests | ~355 |
63
+
64
+ ## Files Modified
65
+
66
+ | File | Changes |
67
+ |------|---------|
68
+ | `src/cli.ts` | Added `/dashboard` and `/ui` command handlers |
69
+ | `src/formatting.ts` | Help text updated (if applicable) |
70
+
71
+ ---
72
+
73
+ ## Feature Summary
74
+
75
+ ### Commands
76
+ | Command | Status |
77
+ |---------|--------|
78
+ | `/dashboard` | ✅ Working |
79
+ | `/ui` | ✅ Working (alias) |
80
+
81
+ ### Capabilities
82
+ | Feature | Status | Notes |
83
+ |---------|--------|-------|
84
+ | Full-screen rendering | ✅ | Uses console.clear() |
85
+ | TTY detection | ✅ | Falls back to read-only |
86
+ | Repo auto-detection | ✅ | Via git remote |
87
+ | Interactive menu | ✅ | Enquirer select |
88
+ | Add observation | ✅ | With auto-sync |
89
+ | Add action step | ✅ | With auto-sync |
90
+ | Complete action | ✅ | Selection from list |
91
+ | Progress visualization | ✅ | Unicode progress bar |
92
+ | Readline isolation | ✅ | Prevents chat conflicts |
93
+ | Error display | ✅ | Non-crashing |
94
+ | Status messages | ✅ | Temporary feedback |
95
+
96
+ ---
97
+
98
+ ## Test Coverage
99
+
100
+ ```
101
+ Dashboard Data Adapter
102
+ ✓ should handle empty chart data
103
+ ✓ should extract desired outcome from observations array
104
+ ✓ should extract current reality observations
105
+ ✓ should transform action steps correctly
106
+ ✓ should transform narrative beats correctly
107
+ ✓ should preserve chart timestamps
108
+
109
+ calculateProgress
110
+ ✓ should return 0 for empty actions
111
+ ✓ should return 0 for no completed actions
112
+ ✓ should return 1 for all completed actions
113
+ ✓ should return correct ratio for partial completion
114
+ ✓ should handle missing metadata gracefully
115
+
116
+ Dashboard Rendering Helpers
117
+ ✓ should render empty progress bar for 0%
118
+ ✓ should render full progress bar for 100%
119
+ ✓ should render half progress bar for 50%
120
+ ✓ should handle custom widths
121
+
122
+ Dashboard Data Edge Cases
123
+ ✓ should handle actions without observations
124
+ ✓ should handle narrative beats with nested description
125
+ ✓ should fall back to observations when narrative.description is missing
126
+ ✓ should handle real-world complex chart structure
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Known Limitations
132
+
133
+ | Limitation | Description | Mitigation |
134
+ |------------|-------------|------------|
135
+ | Settle delay | 1.5s wait after mutations for server sync | Documented, may improve with WebSocket |
136
+ | Input bleeding | Some terminals leak input after exit | Readline isolation pattern |
137
+ | Flickering | Rapid render cycles cause artifacts | Reduce refresh rate |
138
+ | Schema drift | API changes require adapter updates | Type-safe adapter pattern |
139
+
140
+ ---
141
+
142
+ ## Usage Examples
143
+
144
+ ### Basic Launch
145
+ ```bash
146
+ miadi
147
+ > /dashboard
148
+ ```
149
+
150
+ ### From Specific Repository
151
+ ```bash
152
+ cd /path/to/my/repo
153
+ miadi
154
+ > /dashboard
155
+ # Auto-detects repository from git remote
156
+ ```
157
+
158
+ ### Non-TTY Fallback
159
+ ```bash
160
+ echo "/dashboard" | miadi
161
+ # Shows read-only snapshot instead of interactive mode
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Dependencies
167
+
168
+ | Package | Version | Used For |
169
+ |---------|---------|----------|
170
+ | `chalk` | ^5.x | Terminal colors |
171
+ | `enquirer` | ^2.x | Interactive menus |
172
+ | Node.js | 18+ | TTY support |
173
+
174
+ ---
175
+
176
+ ## Architecture Diagram
177
+
178
+ ```
179
+ ┌─────────────────────────────────────────────────────────────┐
180
+ │ /dashboard command │
181
+ └────────────────────────────┬────────────────────────────────┘
182
+
183
+
184
+ ┌─────────────────────────────────────────────────────────────┐
185
+ │ StructuralTensionDashboard │
186
+ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
187
+ │ │ TTY Check │ │ Health │ │ Repo │ │
188
+ │ │ │ │ Check │ │ Detection │ │
189
+ │ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │
190
+ │ │ │ │ │
191
+ │ └───────────────┼───────────────┘ │
192
+ │ │ │
193
+ │ ▼ │
194
+ │ ┌─────────────────────────────────────────────────────┐ │
195
+ │ │ MAIN LOOP │ │
196
+ │ │ │ │
197
+ │ │ render() → showMenu() → handleAction() → refresh() │ │
198
+ │ │ ↑ │ │ │
199
+ │ │ └───────────────────────────────────────┘ │ │
200
+ │ └─────────────────────────────────────────────────────┘ │
201
+ │ │ │
202
+ │ ▼ │
203
+ │ ┌─────────────────────────────────────────────────────┐ │
204
+ │ │ STCWorkspaceClient │ │
205
+ │ │ HTTP → Miadi Platform /api/stc/* │ │
206
+ │ └─────────────────────────────────────────────────────┘ │
207
+ └─────────────────────────────────────────────────────────────┘
208
+ ```
209
+
210
+ ---
211
+
212
+ **Last Updated**: 2026-01-31T20:00:00Z