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,108 @@
1
+ # RISE-058: Rich Terminal User Interface
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/058-rich-tui.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code replaces its basic readline-driven interface with a full-featured terminal user interface that treats the terminal as a spatial canvas. Users experience a structured layout — scrollable conversation history, persistent status bar, distinct message bubbles — that makes extended agent sessions legible and navigable. The TUI transforms the terminal from a scroll-only log into an application with panes, focus, and visual hierarchy.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code uses basic readline for input, chalk for colors, and ora for spinners — everything scrolls linearly
14
+ - There is no separation between input area and output area; the input prompt scrolls with agent output
15
+ - Users cannot scroll back through conversation history without terminal scrollback (which mixes mia-code output with other terminal output)
16
+ - No status bar shows session context, active agent, mode, or cost
17
+ - Messages from user and assistant look similar — role distinction relies on text prefixes only
18
+ - Tool execution output is dumped inline with no visual containment or collapsibility
19
+ - The interface assumes infinite vertical scroll and never reclaims vertical space
20
+
21
+ **Desired State:**
22
+ - The terminal is divided into distinct panes: message history (scrollable), status bar (fixed), input area (fixed at bottom)
23
+ - Messages are rendered as visual bubbles with role indicators — user messages right-aligned or distinctly colored, assistant messages left-aligned
24
+ - Tool execution results appear in collapsible panels that show tool name and can be expanded/collapsed
25
+ - A persistent status bar shows: session title, active agent, current mode (plan/build), model name, and cumulative cost
26
+ - The user can scroll through conversation history independent of input focus
27
+ - The interface adapts to terminal width (minimum 80x24) and degrades gracefully in non-TTY environments
28
+
29
+ ## Desired Outcome Definition
30
+
31
+ Running `mia-code` in a TTY terminal presents a split-pane layout. The top region shows scrollable message history with role-colored bubbles. The bottom region is a fixed input area that always has focus. A status bar separates them. Tool outputs appear as collapsible panels within the message flow. In non-TTY environments (pipes, CI), mia-code falls back to basic line-by-line output.
32
+
33
+ ## Natural Language Functional Description
34
+
35
+ ### Layout Structure
36
+
37
+ The TUI divides the terminal into three vertical regions:
38
+
39
+ 1. **Message Pane** — occupies the majority of vertical space. Displays conversation history as styled message blocks. Each message shows a role indicator (🧑 User, 🤖 Assistant, 🔧 Tool). Messages wrap to terminal width with padding. The pane is independently scrollable via keyboard (Page Up/Down, mouse wheel if supported).
40
+
41
+ 2. **Status Bar** — a single fixed line between message pane and input area. Displays: session name or ID, active agent name, current mode (plan/build), model identifier, token count or cost estimate. Updated in real-time as the session progresses.
42
+
43
+ 3. **Input Area** — fixed at the bottom, 1-5 lines tall (auto-expanding for multiline input). Always captures keyboard input. Supports Ctrl+J for newline within input. Enter submits. Shows placeholder text when empty.
44
+
45
+ ### Message Rendering
46
+
47
+ Each message renders as a block with:
48
+ - Role icon and label (colored per role)
49
+ - Timestamp (dim, right-aligned)
50
+ - Content body with markdown rendering (headers, bold, lists, code blocks)
51
+ - Tool call results in bordered sub-panels with tool name header
52
+
53
+ ### Tool Execution Panels
54
+
55
+ When a tool executes, a panel appears in the message flow:
56
+ - Header line: tool name + status (running/complete/failed) + elapsed time
57
+ - Body: tool output, initially collapsed for long outputs (>10 lines)
58
+ - Toggle: keyboard shortcut or click to expand/collapse
59
+ - Running tools show a spinner in the header
60
+
61
+ ### Focus Management
62
+
63
+ - Input area has focus by default — all typing goes to input
64
+ - Ctrl+Up or Page Up switches focus to message pane for scrolling
65
+ - Escape or typing any character returns focus to input
66
+ - Focus indicator: subtle border highlight on the active pane
67
+
68
+ ### Color Theming
69
+
70
+ Themes are defined as JSON objects mapping semantic roles to terminal colors:
71
+ - `userMessage`, `assistantMessage`, `toolPanel`, `statusBar`, `inputBorder`, `error`, `warning`
72
+ - Built-in themes: `dark` (default), `light`, `monochrome`
73
+ - Custom themes loadable from config: `{"theme": "dark"}` or `{"theme": {"userMessage": "blue", ...}}`
74
+
75
+ ### Responsive Behavior
76
+
77
+ - At widths below 80 columns: status bar truncates, message padding reduces
78
+ - At widths below 40 columns: falls back to basic linear mode
79
+ - Terminal resize events trigger re-render of all visible content
80
+ - Minimum supported size: 80 columns × 24 rows
81
+
82
+ ### Graceful Degradation
83
+
84
+ - Non-TTY (piped stdin/stdout): plain text output, no colors, no layout
85
+ - Dumb terminals (TERM=dumb): basic ANSI colors, no cursor positioning
86
+ - Screen readers: message content emitted as plain text blocks
87
+
88
+ ## Supporting Structures
89
+
90
+ - **Streaming Display (RISE-059)** renders agent responses progressively within the message pane
91
+ - **Permission Prompts (RISE-060)** display inline in the input area as modal prompts
92
+ - **Keybinding System (RISE-063)** provides configurable shortcuts for all TUI interactions
93
+ - **Syntax Highlighting (RISE-062)** colors code blocks within messages
94
+ - **Session Navigation (RISE-061)** provides an overlay navigator within the TUI
95
+
96
+ ## Creative Advancement Scenarios
97
+
98
+ **Scenario 1 — Extended Refactoring Session:**
99
+ A developer runs a 45-minute refactoring session. The TUI keeps the status bar showing elapsed time and token cost. When the agent executes 12 file edits, each appears as a collapsible tool panel. The developer scrolls back to review earlier edits while the agent continues working — input focus stays at the bottom, scroll focus is in the history pane.
100
+
101
+ **Scenario 2 — Narrow Terminal on a Laptop:**
102
+ A developer uses mia-code in a split-screen terminal at 90 columns. The TUI adapts: status bar shows abbreviated info, message padding narrows, but all functionality remains. They resize to full-width and the layout instantly reflows.
103
+
104
+ **Scenario 3 — CI Pipeline with No TUI:**
105
+ A CI script pipes a prompt to mia-code: `echo "Review this PR" | mia-code`. The TUI detects non-TTY and emits plain text. No escape sequences, no cursor positioning. The output is clean for log capture.
106
+
107
+ **Scenario 4 — Custom Theme for Accessibility:**
108
+ A developer with color vision differences creates a custom theme in their config that uses high-contrast colors and distinct patterns (bold, underline) instead of relying solely on color. They set `{"theme": {"userMessage": "bold white", "assistantMessage": "underline cyan"}}` and every session uses their preferred visual style.
@@ -0,0 +1,116 @@
1
+ # RISE-059: Streaming Display
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/059-streaming-display.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code renders agent responses as they arrive, token by token and chunk by chunk, creating a fluid, typewriter-like experience that keeps the developer engaged and informed. Rather than waiting for a complete response to appear as a monolithic block, the streaming display reveals the agent's thinking in real-time — making latency invisible and giving developers the ability to interrupt early if the response heads in the wrong direction.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Agent responses arrive as complete blocks after the full generation finishes — developers stare at an ora spinner
14
+ - There is no visual feedback during generation beyond "thinking..." or a spinner animation
15
+ - Tool call results appear all at once after execution completes
16
+ - Code blocks in responses are rendered only after the entire response is assembled
17
+ - Markdown formatting (headers, bold, lists) is applied post-hoc to completed text
18
+ - Ctrl+C during generation kills the entire process rather than gracefully stopping generation
19
+ - Network latency and generation time are indistinguishable to the user
20
+
21
+ **Desired State:**
22
+ - Text appears character-by-character or chunk-by-chunk as the LLM generates it
23
+ - Tool calls are announced immediately when the agent decides to call them, with a spinner during execution
24
+ - Code blocks receive progressive syntax highlighting as content streams in
25
+ - Markdown is rendered incrementally — a `#` becomes a header as soon as the line completes
26
+ - Ctrl+C stops generation cleanly, preserving the partial response in the conversation
27
+ - A blinking cursor at the stream's leading edge shows exactly where new content will appear
28
+ - Tool execution shows elapsed time on a live-updating spinner
29
+
30
+ ## Desired Outcome Definition
31
+
32
+ When the agent generates a response, text appears in the message pane progressively. The user sees words forming in real-time. Tool calls show their name and a spinner while executing, then reveal results. The user can cancel mid-stream with Ctrl+C and the partial response is preserved. Code blocks are syntax-highlighted as they grow. The experience feels immediate and alive.
33
+
34
+ ## Natural Language Functional Description
35
+
36
+ ### Text Streaming
37
+
38
+ As the LLM produces tokens, the TUI appends them to the current message in the message pane:
39
+
40
+ 1. Each chunk received from the provider API (typically 1-5 tokens) is immediately rendered
41
+ 2. The message pane auto-scrolls to keep the latest content visible (unless the user has scrolled up)
42
+ 3. A blinking cursor character (▊) appears at the end of the stream to indicate active generation
43
+ 4. When generation completes, the cursor disappears and the message finalizes
44
+
45
+ ### Markdown Progressive Rendering
46
+
47
+ Markdown elements are rendered as they become complete:
48
+ - **Headers**: `#` characters at line start render as styled headers when the line ends (newline received)
49
+ - **Bold/Italic**: opening `**` or `*` buffers until the closing marker arrives, then applies styling
50
+ - **Lists**: `-` or `1.` at line start indents and applies list styling at newline
51
+ - **Code fences**: opening ``` triggers code block mode; content inside receives syntax highlighting progressively; closing ``` ends the block
52
+ - **Links**: `[text](url)` renders as clickable (where terminal supports) once the closing `)` arrives
53
+
54
+ Incomplete markdown markers are shown as literal characters until their pair arrives.
55
+
56
+ ### Tool Call Display
57
+
58
+ When the agent emits a tool call:
59
+ 1. A tool panel header appears immediately: `🔧 [tool_name] ⏳ 0.0s`
60
+ 2. The elapsed time updates every 100ms while the tool runs
61
+ 3. Tool parameters are shown in a dimmed sub-line (truncated if long)
62
+ 4. When the tool completes, the spinner becomes ✓ (success) or ✗ (failure)
63
+ 5. Tool output is revealed progressively if the tool streams output (e.g., bash command output)
64
+ 6. Long tool outputs (>10 lines) auto-collapse with a "show more" indicator
65
+
66
+ ### Code Block Streaming
67
+
68
+ Code blocks receive special treatment during streaming:
69
+ 1. When ` ``` ` with a language tag is detected, the block enters code mode
70
+ 2. Each new line of code receives syntax highlighting as it arrives
71
+ 3. The code block grows visually line by line with proper indentation preserved
72
+ 4. Line numbers (if enabled) increment as lines arrive
73
+ 5. When the closing ` ``` ` arrives, the block finalizes and a border renders around it
74
+
75
+ ### Streaming Cancellation
76
+
77
+ Ctrl+C during active streaming:
78
+ 1. Sends a cancellation signal to the provider API (aborts the HTTP request)
79
+ 2. The partial response up to the cancellation point is preserved in the message history
80
+ 3. A `[generation cancelled]` indicator appends to the partial message
81
+ 4. The input area re-activates for the next user prompt
82
+ 5. The cancelled message is stored in the session — it does not disappear
83
+
84
+ ### Performance Considerations
85
+
86
+ - Rendering is throttled to 60fps maximum to avoid terminal flicker
87
+ - Large chunks (>1000 characters) are broken into smaller render batches
88
+ - Syntax highlighting runs asynchronously and may lag slightly behind raw text display
89
+ - The message pane only re-renders visible lines; off-screen content is not re-rendered until scrolled into view
90
+
91
+ ### Network Latency Handling
92
+
93
+ - Time-to-first-token is tracked and displayed in debug mode
94
+ - If no chunk arrives within 5 seconds, a subtle "waiting for response..." indicator appears
95
+ - Connection drops during streaming show an error indicator and offer retry
96
+
97
+ ## Supporting Structures
98
+
99
+ - **Rich TUI (RISE-058)** provides the message pane and layout where streaming content renders
100
+ - **Syntax Highlighting (RISE-062)** applies language-aware coloring to code blocks during streaming
101
+ - **Event Bus (RISE-002)** delivers streaming chunks from the agent process to the rendering layer
102
+ - **Client-Server Architecture (RISE-001)** enables SSE-based streaming for remote clients
103
+
104
+ ## Creative Advancement Scenarios
105
+
106
+ **Scenario 1 — Watching Code Emerge:**
107
+ A developer asks the agent to implement a sorting algorithm. They watch the function definition appear line by line, with syntax highlighting applied as each line completes. They see the approach forming and can Ctrl+C if the agent picks the wrong algorithm, saving tokens and time.
108
+
109
+ **Scenario 2 — Long Explanation with Early Insight:**
110
+ The agent begins a detailed explanation. The developer reads the first paragraph as it streams, realizes they already understand, and presses Ctrl+C. The partial explanation is saved. They ask a follow-up question immediately.
111
+
112
+ **Scenario 3 — Multiple Tool Executions:**
113
+ The agent runs three tools in sequence. Each tool panel appears with its spinner, showing elapsed time. The developer sees `bash ✓ 2.3s`, then `file_read ✓ 0.1s`, then `bash ⏳ 15.2s` — they know the third command is slow and can decide whether to wait or cancel.
114
+
115
+ **Scenario 4 — Slow Network Connection:**
116
+ A developer on a train with spotty connectivity uses mia-code. The streaming display handles intermittent chunks gracefully — text appears in bursts rather than a steady flow, but no content is lost. The "waiting for response..." indicator appears during gaps, then disappears when chunks resume.
@@ -0,0 +1,130 @@
1
+ # RISE-060: Permission Prompts
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/060-permission-prompts.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code gives developers fine-grained, moment-of-decision control over what the agent is allowed to do. When a permission rule requires user approval, an interactive prompt appears that clearly describes the operation, its scope, and its risk level — and offers a range of responses from "allow once" to "never allow again." The developer stays in command without being overwhelmed by constant interruptions, because their choices accumulate into a personalized permission profile.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Permission rules in mia-code are either "allow" or "deny" — there is no interactive "ask" mode
14
+ - When an operation is denied, the agent simply cannot proceed; the user has no chance to override
15
+ - There is no visual distinction between low-risk operations (reading a file) and high-risk ones (running `rm -rf`)
16
+ - Permission decisions are static — set once in config, never refined through use
17
+ - The developer must anticipate every tool and command the agent might use and pre-configure permissions
18
+ - No mechanism exists to grant temporary session-scoped permissions
19
+
20
+ **Desired State:**
21
+ - Permission rules support an "ask" mode that pauses execution and prompts the user
22
+ - The prompt shows exactly what the agent wants to do: tool name, operation details, affected paths
23
+ - The user chooses from: allow once (y), deny once (n), always allow (a), never allow (v), session-only (s)
24
+ - "Always" and "never" choices persist to the config file, building the user's permission profile over time
25
+ - "Session" choices persist until the session ends, reducing prompt fatigue for repeated operations
26
+ - Destructive operations (file deletion, arbitrary bash) are visually distinguished from safe ones (file read)
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ When a permission rule is set to "ask" and the agent invokes that tool, execution pauses. A formatted prompt appears in the input area showing the tool name, the specific operation, and the affected resources. The user presses a single key to respond. Their choice is applied immediately and, for persistent choices, written to config.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Prompt Display
35
+
36
+ When a permission check triggers an "ask" prompt, the TUI renders:
37
+
38
+ ```
39
+ ┌─ Permission Required ──────────────────────────────┐
40
+ │ Tool: bash │
41
+ │ Command: npm install express │
42
+ │ │
43
+ │ [y] Allow once [n] Deny once [a] Always allow │
44
+ │ [v] Never allow [s] Allow for session │
45
+ └─────────────────────────────────────────────────────┘
46
+ ```
47
+
48
+ The prompt replaces the input area temporarily. All other input is blocked until the user responds.
49
+
50
+ ### Operation Details
51
+
52
+ The prompt content varies by tool type:
53
+
54
+ - **bash**: Shows the exact command string. Destructive commands (rm, mv to /dev/null, chmod 777) render with a warning color (yellow/red background).
55
+ - **file_write / file_edit**: Shows the file path and operation type (create, overwrite, append, edit). If the file exists, notes "existing file will be modified."
56
+ - **file_read**: Shows the file path. Rendered in info color (blue/cyan) as low-risk.
57
+ - **glob / grep**: Shows the search pattern and scope directory. Low-risk, info color.
58
+ - **Custom tools**: Show tool name and all parameters in a readable format.
59
+
60
+ ### Response Handling
61
+
62
+ Each response key triggers a specific action:
63
+
64
+ | Key | Action | Persistence |
65
+ |-----|--------|-------------|
66
+ | `y` | Allow this specific invocation to proceed | None — next invocation of same tool asks again |
67
+ | `n` | Deny this specific invocation | None — next invocation asks again |
68
+ | `a` | Allow and add a permanent rule to config | Writes to project or global config |
69
+ | `v` | Deny and add a permanent rule to config | Writes to project or global config |
70
+ | `s` | Allow for the remainder of this session | In-memory until session ends |
71
+
72
+ ### Permanent Rule Writing
73
+
74
+ When the user presses `a` (always) or `v` (never):
75
+ 1. The permission rule is added to the nearest writable config (project config if it exists, otherwise global)
76
+ 2. The rule is scoped appropriately: bash commands match the command prefix, file operations match the path pattern
77
+ 3. Example: allowing `npm install express` adds a rule like `{"bash": {"allow": ["npm install *"]}}`
78
+ 4. The user sees a confirmation: "Rule added to .mia-code/config.json"
79
+
80
+ ### Session-Scoped Permissions
81
+
82
+ When the user presses `s` (session):
83
+ 1. The permission is stored in the session's in-memory permission cache
84
+ 2. Subsequent identical tool invocations (same tool + same or similar parameters) are auto-allowed
85
+ 3. The session permission cache is cleared when the session ends
86
+ 4. Session permissions are not written to any file
87
+
88
+ ### Risk-Level Visual Styling
89
+
90
+ Operations are categorized by risk level:
91
+ - **High risk** (red/yellow): bash commands with side effects, file deletion, network requests to unknown hosts
92
+ - **Medium risk** (yellow): file writes, file edits, directory creation
93
+ - **Low risk** (blue/cyan): file reads, grep, glob, LSP queries
94
+ - **Info** (dim): read-only operations that rarely need restriction
95
+
96
+ The prompt border color and icon reflect the risk level.
97
+
98
+ ### Keyboard Shortcut Behavior
99
+
100
+ - Only the documented keys (y, n, a, v, s) are accepted — all other input is ignored
101
+ - Keys are case-insensitive (Y and y both work)
102
+ - No Enter key required — single keypress triggers the action immediately
103
+ - Escape is equivalent to `n` (deny once)
104
+
105
+ ### Timeout Behavior
106
+
107
+ - If no response is received within a configurable timeout (default: 5 minutes), the operation is denied
108
+ - A countdown timer appears in the prompt after 30 seconds of inactivity
109
+ - Timeout behavior is configurable: `{"permissions": {"askTimeout": 300, "askTimeoutAction": "deny"}}`
110
+
111
+ ## Supporting Structures
112
+
113
+ - **Agent Permission Rulesets (RISE-011)** define which operations require "ask" vs. "allow" vs. "deny"
114
+ - **Rich TUI (RISE-058)** provides the input area where permission prompts render
115
+ - **Multi-Level Config (RISE-064)** determines where permanent permission rules are written
116
+ - **Keybinding System (RISE-063)** ensures permission prompt keys don't conflict with other bindings
117
+
118
+ ## Creative Advancement Scenarios
119
+
120
+ **Scenario 1 — First-Time Trust Building:**
121
+ A new user starts mia-code with default permissions set to "ask" for all bash commands. The agent wants to run `git status` — the prompt appears, the user presses `a` to always allow git commands. Over several sessions, they build a personalized permission profile: git always allowed, npm always allowed, rm always denied, everything else asks.
122
+
123
+ **Scenario 2 — Reviewing a Dangerous Command:**
124
+ The agent decides to run `find / -name "*.log" -delete`. The prompt appears with high-risk red styling. The user sees the full command, recognizes the danger, and presses `n`. The agent receives the denial and proposes a safer alternative.
125
+
126
+ **Scenario 3 — Repetitive File Edits:**
127
+ The agent needs to edit 15 files in a refactoring. After the first permission prompt for file_edit, the user presses `s` (session). The remaining 14 edits proceed without prompts. In the next session, permission prompts resume.
128
+
129
+ **Scenario 4 — Team Policy Enforcement:**
130
+ An organization's managed config sets bash commands to "ask" with no override. Even if a developer presses `a`, the managed policy prevents permanent allow rules for bash. The prompt shows: "Organization policy: bash permissions cannot be permanently allowed."
@@ -0,0 +1,155 @@
1
+ # RISE-061: Session Navigation
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/061-session-navigation.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code lets developers move between sessions as fluidly as switching browser tabs. A developer working across multiple features, debugging tasks, or code reviews can jump between sessions without losing context — each session preserved exactly where they left it. The session navigator is a first-class TUI component that makes session management a visual, interactive experience rather than a command-line chore.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Session switching requires knowing the session ID and using a command like `/session <id>`
14
+ - There is no visual overview of available sessions — developers must remember or list them manually
15
+ - Session metadata (last activity, message count, project) is not visible at a glance
16
+ - No search or filter capability exists for sessions
17
+ - Creating a new session requires exiting the current context or using a slash command
18
+ - There is no session preview — switching to a session is the only way to see its content
19
+ - Sessions cannot be archived or deleted from within the TUI
20
+
21
+ **Desired State:**
22
+ - A keyboard shortcut (Ctrl+S) opens an interactive session navigator overlay
23
+ - The navigator shows all sessions in a scrollable list with metadata: title, project, last activity, message count
24
+ - Arrow keys navigate, Enter selects, typing filters the list in real-time
25
+ - Hovering on a session shows a preview of the last few messages
26
+ - Sessions are grouped by project or date for easy browsing
27
+ - The navigator supports creating new sessions and archiving/deleting existing ones
28
+ - Recent sessions (last 5) appear at the top for quick access
29
+
30
+ ## Desired Outcome Definition
31
+
32
+ Pressing Ctrl+S opens a modal overlay listing all sessions. The developer navigates with arrow keys, filters by typing, sees metadata and previews, and selects a session with Enter. The overlay closes and the TUI switches to the selected session. The developer can also create, archive, or delete sessions from the navigator.
33
+
34
+ ## Natural Language Functional Description
35
+
36
+ ### Navigator Overlay
37
+
38
+ The session navigator renders as a full-screen overlay on top of the message pane:
39
+
40
+ ```
41
+ ┌─ Sessions ──────────────────── Filter: _____________┐
42
+ │ │
43
+ │ ★ Recent │
44
+ │ ▸ Refactor auth module myapp 2m ago 47msg│
45
+ │ Debug payment webhook myapp 1h ago 12msg│
46
+ │ Review PR #234 lib 3h ago 8msg│
47
+ │ │
48
+ │ 📁 myapp │
49
+ │ Setup CI pipeline myapp 1d ago 23msg│
50
+ │ Database migration myapp 2d ago 31msg│
51
+ │ │
52
+ │ 📁 lib │
53
+ │ Add streaming support lib 1d ago 55msg│
54
+ │ │
55
+ │ 📦 Archived │
56
+ │ Old debugging session myapp 7d ago 15msg│
57
+ │ │
58
+ ├──────────────────────────────────────────────────────┤
59
+ │ Preview: "Let me refactor the auth middleware to..." │
60
+ │ "I'll update the JWT validation logic..." │
61
+ └──────────────────────────────────────────────────────┘
62
+ ```
63
+
64
+ ### List Rendering
65
+
66
+ Each session row displays:
67
+ - Selection indicator (▸ for current cursor position)
68
+ - Session title (auto-generated from first prompt or user-set)
69
+ - Project name (derived from project root directory name)
70
+ - Relative time since last activity ("2m ago", "1d ago")
71
+ - Message count
72
+ - Status icon: 🟢 active, 📦 archived, ⚡ currently selected
73
+
74
+ ### Navigation Controls
75
+
76
+ | Key | Action |
77
+ |-----|--------|
78
+ | ↑/↓ | Move selection cursor |
79
+ | Enter | Switch to selected session |
80
+ | Ctrl+N | Create new session |
81
+ | Ctrl+D | Archive/delete selected session (with confirmation) |
82
+ | Escape | Close navigator without switching |
83
+ | Any letter | Start filtering by title/project |
84
+ | Backspace | Clear filter character |
85
+ | Tab | Cycle through grouping modes (project, date, status) |
86
+
87
+ ### Filtering
88
+
89
+ Typing any character while the navigator is open enters filter mode:
90
+ - The filter input appears at the top right of the overlay
91
+ - Sessions are filtered in real-time by matching against title, project name, and session ID
92
+ - Filtering is case-insensitive and supports substring matching
93
+ - Empty filter shows all sessions
94
+ - Filter persists until cleared with Backspace or Escape
95
+
96
+ ### Session Grouping
97
+
98
+ Sessions can be grouped by three modes (cycled with Tab):
99
+ 1. **By project**: sessions under their project root directory name
100
+ 2. **By date**: Today, Yesterday, This Week, Older
101
+ 3. **By status**: Active, Archived
102
+
103
+ The current grouping mode is remembered across navigator opens within the same session.
104
+
105
+ ### Session Preview
106
+
107
+ When the cursor rests on a session for more than 300ms:
108
+ - A preview panel appears at the bottom of the overlay
109
+ - Shows the last 2-3 messages (truncated) from that session
110
+ - Preview updates as the cursor moves
111
+ - Preview can be toggled off with `p` key
112
+
113
+ ### Session Management
114
+
115
+ **Create new session**: Ctrl+N opens a minimal dialog asking for an optional title and project root. If no project root is specified, the current working directory is used. The new session is created and immediately selected.
116
+
117
+ **Archive session**: Ctrl+D on a session shows a confirmation prompt ("Archive this session? y/n"). Archived sessions move to the "Archived" group and are hidden by default. They can be shown by switching to "By status" grouping.
118
+
119
+ **Delete session**: Shift+Ctrl+D permanently deletes a session (with confirmation). This removes the session from storage entirely.
120
+
121
+ ### Quick Access
122
+
123
+ The `/sessions` slash command also opens the navigator (alternative to Ctrl+S). Additionally:
124
+ - `/sessions recent` shows only the 5 most recent sessions
125
+ - `/sessions <query>` opens the navigator with a pre-filled filter
126
+
127
+ ### Session Metadata Display
128
+
129
+ The `/session info` command (within an active session) shows extended metadata:
130
+ - Session ID, title, creation time, last activity
131
+ - Message count, total tokens used, estimated cost
132
+ - Model(s) used during the session
133
+ - Project root path
134
+ - Duration (total active time)
135
+
136
+ ## Supporting Structures
137
+
138
+ - **Session Persistence (RISE-018)** stores session data that the navigator reads and displays
139
+ - **Rich TUI (RISE-058)** provides the overlay rendering capability for the navigator
140
+ - **Keybinding System (RISE-063)** maps Ctrl+S and other shortcuts to navigator actions
141
+ - **Session Forking (RISE-020)** can be triggered from the navigator to branch from a selected session
142
+
143
+ ## Creative Advancement Scenarios
144
+
145
+ **Scenario 1 — Multi-Feature Development:**
146
+ A developer works on three features across two projects. They press Ctrl+S, see all five sessions grouped by project, and jump between them as needed. Each session preserves its conversation context — no need to re-explain what they're doing.
147
+
148
+ **Scenario 2 — Finding an Old Discussion:**
149
+ A developer remembers discussing a database schema a few days ago but doesn't remember the session. They open the navigator, type "database", and the filter narrows to two sessions. They hover on each to preview the last messages and find the right one.
150
+
151
+ **Scenario 3 — Session Cleanup:**
152
+ After a productive week, a developer opens the navigator in "By date" grouping. They see 15 sessions from this week. They archive 10 completed ones with Ctrl+D, keeping the navigator clean for active work.
153
+
154
+ **Scenario 4 — Quick Resume After Break:**
155
+ A developer returns from lunch. They press Ctrl+S and see their most recent session at the top of the "Recent" group with the timestamp "47m ago". One Enter press and they're back exactly where they left off.
@@ -0,0 +1,151 @@
1
+ # RISE-062: Syntax Highlighting
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/062-syntax-highlighting.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code renders code in agent responses with the same syntax highlighting developers see in their editors. Code blocks are not flat monochrome text — they are language-aware, color-rich displays that make structure visible at a glance. A developer reading a TypeScript function in an agent response can immediately distinguish keywords from identifiers, strings from comments, and types from values, without having to copy the code into an editor first.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Code blocks in agent responses are rendered as plain monochrome text with chalk — no language awareness
14
+ - Developers must mentally parse code structure without visual cues
15
+ - Diff outputs from tool execution use basic green/red coloring but no syntax awareness within the changed lines
16
+ - File content displayed by tools (file_read) has no highlighting at all
17
+ - There is no distinction between a Python code block and a JavaScript one — both look the same
18
+ - Terminal color capabilities (256-color, 24-bit true color) are not utilized beyond basic ANSI
19
+
20
+ **Desired State:**
21
+ - Code blocks detect their language from markdown fences (```typescript) or content heuristics
22
+ - Keywords, strings, comments, numbers, operators, types, and functions each receive distinct colors
23
+ - Highlighting works in all code-containing contexts: message code blocks, file content displays, diff outputs, tool results
24
+ - A configurable theme system maps syntax categories to terminal colors
25
+ - Highlighting uses the terminal's full color capability (256-color or 24-bit where supported)
26
+ - Large code blocks are highlighted asynchronously to avoid blocking the UI
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ Every code block in mia-code's output is syntax-highlighted according to its language. The highlighting uses a configurable theme with sensible defaults. Highlighting is applied in message code blocks, file read outputs, diff views, and tool results. Performance remains smooth for large files through asynchronous highlighting.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Language Detection
35
+
36
+ Code language is determined in priority order:
37
+ 1. **Explicit fence tag**: ` ```typescript `, ` ```python `, ` ```rust ` — the language identifier after the opening fence
38
+ 2. **File extension inference**: when displaying file content, the file extension determines the language (`.ts` → TypeScript, `.py` → Python)
39
+ 3. **Content heuristic**: if no tag or extension, analyze the first few lines for language markers (shebang lines, import statements, package declarations)
40
+ 4. **Fallback**: if language cannot be determined, apply generic highlighting (strings, numbers, comments with common delimiters)
41
+
42
+ ### Supported Languages
43
+
44
+ At minimum, highlighting supports the languages most common in mia-code usage:
45
+ - TypeScript, JavaScript, JSX, TSX
46
+ - Python, Ruby, Go, Rust, Java, C, C++
47
+ - HTML, CSS, SCSS
48
+ - JSON, YAML, TOML, XML
49
+ - Markdown
50
+ - Shell (bash, zsh, fish)
51
+ - SQL
52
+ - Dockerfile, Makefile
53
+
54
+ Additional languages are supported through the highlighting library's built-in grammar set.
55
+
56
+ ### Syntax Categories and Default Colors
57
+
58
+ | Category | Default Dark Theme | Default Light Theme |
59
+ |----------|-------------------|---------------------|
60
+ | Keywords (`if`, `const`, `def`) | Magenta/Purple | Dark Blue |
61
+ | Strings (`"hello"`, `'world'`) | Green | Dark Green |
62
+ | Comments (`// note`, `# todo`) | Dim Gray | Medium Gray |
63
+ | Numbers (`42`, `3.14`) | Yellow | Dark Yellow |
64
+ | Operators (`+`, `=>`, `===`) | Cyan | Dark Cyan |
65
+ | Types (`string`, `int`) | Blue | Dark Blue |
66
+ | Functions (calls and definitions) | Yellow/Gold | Dark Orange |
67
+ | Built-ins (`console`, `print`) | Cyan | Teal |
68
+ | Punctuation (`{`, `)`, `;`) | Default foreground | Default foreground |
69
+
70
+ ### Highlighting Contexts
71
+
72
+ **Message Code Blocks:**
73
+ Code within ` ``` ` fences in agent messages is highlighted. The language tag (if present) is shown as a dim label above the code block.
74
+
75
+ **File Content Display:**
76
+ When `file_read` or similar tools display file content, the entire output is highlighted based on the file extension. Line numbers (if enabled) are rendered in dim gray to the left.
77
+
78
+ **Diff Output:**
79
+ Diff displays combine syntax highlighting with diff-level coloring:
80
+ - Added lines: green background tint + syntax highlighting on the code
81
+ - Removed lines: red background tint + syntax highlighting on the code
82
+ - Context lines: default background + syntax highlighting
83
+ - Diff markers (`+`, `-`, `@@`) are styled distinctly from code content
84
+
85
+ **Tool Results:**
86
+ Tool outputs that contain code (e.g., grep results, LSP hover information) are highlighted when the language is detectable from context.
87
+
88
+ ### Theme Configuration
89
+
90
+ Themes are configured in the mia-code config file:
91
+
92
+ ```jsonc
93
+ {
94
+ "syntaxTheme": "dark", // built-in theme name
95
+ // OR custom theme:
96
+ "syntaxTheme": {
97
+ "keyword": "magenta",
98
+ "string": "#a8d8a8", // 24-bit hex color
99
+ "comment": "gray",
100
+ "number": "yellow",
101
+ "operator": "cyan",
102
+ "type": "blue",
103
+ "function": "yellow bold"
104
+ }
105
+ }
106
+ ```
107
+
108
+ Built-in themes: `dark` (default), `light`, `monokai`, `solarized-dark`, `solarized-light`.
109
+
110
+ ### Line Numbers
111
+
112
+ Line numbers are optional and controlled by config: `{"syntaxHighlight": {"lineNumbers": true}}`. When enabled:
113
+ - Line numbers are right-aligned in dim gray
114
+ - A thin separator (│) divides line numbers from code content
115
+ - Line numbers do not interfere with copy-paste (they are not selectable in supporting terminals)
116
+
117
+ ### Performance
118
+
119
+ - Highlighting for blocks under 100 lines is synchronous (instant)
120
+ - Blocks over 100 lines are highlighted asynchronously — raw text displays first, highlighting applies after
121
+ - During streaming (RISE-059), highlighting is applied line-by-line as each line completes
122
+ - A highlighting cache stores results for recently displayed blocks to avoid re-highlighting on scroll
123
+
124
+ ### Terminal Capability Detection
125
+
126
+ The highlighter adapts to terminal capabilities:
127
+ - **24-bit color** (COLORTERM=truecolor): full hex color support, richest themes
128
+ - **256-color**: maps theme colors to nearest 256-color palette entry
129
+ - **16-color**: maps to basic ANSI colors with bold/dim modifiers
130
+ - **No color** (NO_COLOR env var or --no-color flag): no highlighting applied
131
+
132
+ ## Supporting Structures
133
+
134
+ - **Rich TUI (RISE-058)** provides the rendering surface where highlighted code appears
135
+ - **Streaming Display (RISE-059)** triggers line-by-line highlighting during progressive rendering
136
+ - **Multi-Level Config (RISE-064)** loads theme preferences from the appropriate config level
137
+ - **JSONC Config (RISE-065)** enables comments in theme configuration files
138
+
139
+ ## Creative Advancement Scenarios
140
+
141
+ **Scenario 1 — Reading Generated Code:**
142
+ The agent generates a 50-line TypeScript function. As it streams, each line receives syntax highlighting — keywords in purple, strings in green, types in blue. The developer reads the code naturally, spotting a type error in a highlighted type annotation before the agent finishes.
143
+
144
+ **Scenario 2 — Reviewing a Diff:**
145
+ The agent runs `git diff` and displays the result. Added lines show green-tinted backgrounds with syntax-highlighted code inside. The developer can see not just what changed, but the syntactic structure of the changes — a renamed variable stands out as a highlighted identifier, not just a text difference.
146
+
147
+ **Scenario 3 — Matching Editor Theme:**
148
+ A developer who uses Monokai in VS Code sets `{"syntaxTheme": "monokai"}` in their mia-code config. Code blocks in agent responses now use familiar colors. The visual transition between editor and agent terminal feels seamless.
149
+
150
+ **Scenario 4 — Large File Display:**
151
+ The agent reads a 500-line Python file. The TUI instantly shows the raw text, then syntax highlighting fades in asynchronously — keywords colorize, strings turn green, comments dim out. The effect is barely noticeable (sub-200ms) but prevents any UI stall.