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,139 @@
1
+ # RISE-044: Plan Mode Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/044-plan-mode-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides tools for entering and exiting a dedicated planning mode where the agent operates in read-only mode. In plan mode, the agent can read files, search code, analyze architecture, and generate detailed implementation plans — but it cannot modify files, run destructive commands, or alter project state. This creates a safe space for exploration and analysis before committing to action. The transition between plan and build modes is explicit and visible, giving the developer confidence about when the agent is observing versus acting.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no distinction between analysis and execution — the agent can read and write at any time
14
+ - Developers who want "just look, don't touch" must verbally instruct the agent, which is unreliable
15
+ - There is no visual indicator of whether the agent is in an analysis or execution mindset
16
+ - The agent may begin editing files before fully understanding the codebase — premature action
17
+ - No mechanism to generate a plan as a structured artifact before executing it
18
+ - Accidental file modifications during exploration require manual reversion
19
+
20
+ **Desired State:**
21
+ - A `plan_enter` tool switches the agent to read-only mode with analysis-focused prompting
22
+ - A `plan_exit` tool returns the agent to build mode with full permissions restored
23
+ - During plan mode: file reads, code search, and analysis are enabled; file writes and destructive commands are disabled
24
+ - Plan mode output emphasizes: observations, recommendations, structural analysis, and implementation plans
25
+ - A visual indicator (e.g., `[PLAN]` prefix) shows plan mode is active in the UI
26
+ - Plan mode can generate todo items (RISE-043) for build mode execution
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ The developer types `/plan`. The agent enters plan mode — the prompt changes to `[PLAN] >`, file write tools are disabled, and the system prompt shifts to analysis focus. The developer asks "how should we restructure the auth module?" The agent reads files, analyzes dependencies, and produces a structured plan with 6 implementation steps — each created as a todo item. The developer types `/build`, the agent exits plan mode, reads the todos, and begins executing step 1.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Plan Mode Entry
35
+
36
+ ```typescript
37
+ interface PlanEnterInput {
38
+ focus?: string; // optional focus area for the analysis prompt
39
+ }
40
+ ```
41
+
42
+ When `plan_enter` is invoked:
43
+
44
+ 1. **Permission restriction** — the agent's permission ruleset is temporarily replaced with a read-only variant:
45
+ - File read: allowed
46
+ - File write: denied
47
+ - Code search: allowed
48
+ - Bash execution: restricted to read-only commands (ls, cat, find, grep — not rm, mv, write operations)
49
+ - Web fetch: allowed (reading documentation is part of planning)
50
+ 2. **Prompt augmentation** — the system prompt gains plan-mode instructions:
51
+ - "You are in PLAN mode. Analyze, observe, and recommend — do not modify files or execute destructive commands."
52
+ - "Structure your analysis with clear sections: Current State, Issues, Recommendations, Implementation Steps."
53
+ - "Create todo items for each implementation step to prepare for build mode."
54
+ 3. **UI indicator** — the prompt prefix changes to `[PLAN]` and a status bar shows "Plan Mode Active"
55
+ 4. **Event emission** — `mode.changed` event with `{mode: "plan"}` is broadcast (RISE-002)
56
+
57
+ ### Plan Mode Exit
58
+
59
+ ```typescript
60
+ interface PlanExitInput {} // no parameters needed
61
+ ```
62
+
63
+ When `plan_exit` is invoked:
64
+
65
+ 1. **Permission restoration** — the agent's original permission ruleset is restored
66
+ 2. **Prompt restoration** — the plan-mode system prompt additions are removed
67
+ 3. **UI indicator** — the prompt returns to normal, status bar shows "Build Mode"
68
+ 4. **Event emission** — `mode.changed` event with `{mode: "build"}` is broadcast
69
+ 5. **Todo awareness** — the agent is prompted to check for pending todos created during planning
70
+
71
+ ### Plan Mode Analysis Patterns
72
+
73
+ During plan mode, the agent follows analysis-oriented patterns:
74
+
75
+ **Architecture Analysis:**
76
+ - Read key files (entry points, configs, type definitions)
77
+ - Map dependency relationships
78
+ - Identify patterns and anti-patterns
79
+ - Note coupling points and separation concerns
80
+
81
+ **Codebase Assessment:**
82
+ - Search for code smells (duplicated code, large files, complex functions)
83
+ - Identify test coverage gaps
84
+ - Review documentation completeness
85
+ - Assess dependency health
86
+
87
+ **Implementation Planning:**
88
+ - Break work into discrete, ordered steps
89
+ - Identify dependencies between steps
90
+ - Estimate complexity per step
91
+ - Create todo items with detailed descriptions
92
+
93
+ ### Slash Commands
94
+
95
+ Plan mode integrates with the slash command system:
96
+
97
+ - `/plan` — equivalent to invoking `plan_enter` with no focus
98
+ - `/plan auth module` — enters plan mode with focus on auth module
99
+ - `/build` — equivalent to invoking `plan_exit`
100
+ - `/mode` — shows current mode (plan or build)
101
+
102
+ ### Integration with Todo Tool
103
+
104
+ Plan mode is designed to feed into the todo tool (RISE-043):
105
+
106
+ ```
107
+ During plan mode, the agent creates:
108
+ 1. [todo] Install JWT dependencies (priority: high)
109
+ 2. [todo] Create token utility module (priority: high)
110
+ 3. [todo] Refactor auth middleware (priority: high)
111
+ 4. [todo] Update route handlers (priority: medium)
112
+ 5. [todo] Add integration tests (priority: medium)
113
+ 6. [todo] Update API documentation (priority: low)
114
+ ```
115
+
116
+ When build mode is entered, these todos guide execution in order.
117
+
118
+ ## Supporting Structures
119
+
120
+ - **Tool Registry (RISE-034)** registers plan_enter and plan_exit tools
121
+ - **Agent Permission Rulesets (RISE-011)** provides the read-only permission variant
122
+ - **Plan/Build Mode Toggle (RISE-014)** defines the broader mode switching architecture
123
+ - **Todo Tool (RISE-043)** captures plan outputs as actionable items
124
+ - **Event Bus (RISE-002)** broadcasts mode change events to UI and clients
125
+ - **Keybinding System (RISE-063)** can bind a key to toggle plan/build mode
126
+
127
+ ## Creative Advancement Scenarios
128
+
129
+ **Scenario 1 — Safe Exploration:**
130
+ A new developer opens an unfamiliar codebase and enters plan mode. They ask "explain the architecture." The agent reads key files, maps the module structure, and produces a clear architectural overview — without any risk of accidentally modifying code during its exploration.
131
+
132
+ **Scenario 2 — Plan-Then-Execute:**
133
+ The developer enters plan mode and asks "how should we add WebSocket support?" The agent analyzes the current HTTP setup, identifies integration points, and creates 7 todo items. The developer reviews the plan, adjusts priorities, then enters build mode. The agent begins executing the plan from the todos — the transition from analysis to action is clean and intentional.
134
+
135
+ **Scenario 3 — Code Review Mode:**
136
+ A developer enters plan mode to review a colleague's recent changes. The agent reads the diff, analyzes the changes, identifies potential issues, and writes a structured review — all without modifying any files. Plan mode is naturally suited for read-only review workflows.
137
+
138
+ **Scenario 4 — Interrupted Planning:**
139
+ The developer enters plan mode and starts analyzing the database layer. Mid-analysis, they realize they need to fix a quick bug. They type `/build`, fix the bug, then `/plan` to resume analysis. The mode toggle is instant and non-destructive — the conversation context includes both the plan analysis and the bug fix.
@@ -0,0 +1,146 @@
1
+ # RISE-045: Background Task Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/045-task-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides a task tool that spawns sub-agents to execute work in the background while the main conversation continues. The developer asks a complex question, and instead of blocking for minutes while the agent researches, the task tool launches a sub-agent in a separate context, returns a task ID immediately, and delivers results when ready. Multiple tasks can run concurrently — exploring one part of the codebase while refactoring another. Each task runs in an isolated context with its own tool access, and results are summarized to keep the main conversation clean.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - All agent work is synchronous — the developer waits while the agent processes each request
14
+ - Complex multi-step tasks (full codebase analysis, large refactorings) block the conversation for minutes
15
+ - There is no way to run parallel workstreams — exploring and building cannot happen simultaneously
16
+ - Failed tasks produce verbose error output that pollutes the conversation context
17
+ - The developer cannot ask a follow-up question while the agent is processing the previous one
18
+
19
+ **Desired State:**
20
+ - A `task` tool launches sub-agents in separate contexts for background execution
21
+ - The tool returns a task ID immediately — the main conversation is unblocked
22
+ - Three task types: "explore" (read-only analysis), "task" (command execution), "general" (full capability)
23
+ - Tasks run in isolated contexts — they don't see subsequent main conversation messages
24
+ - Results are summarized: success returns a brief summary; failure returns full output for debugging
25
+ - Multiple tasks can run concurrently with independent completion
26
+ - Task status can be queried at any time
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ The developer asks two things: "analyze the test coverage" and "refactor the logger module." The agent launches two background tasks — an explore task for coverage analysis and a general task for refactoring. Both run concurrently. The coverage analysis completes first and returns "Coverage: 73% overall, gaps in auth/ and billing/." The refactoring completes moments later with "Refactored logger.ts into 3 modules, updated 12 imports." The main conversation stays clean and responsive throughout.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Input Format
35
+
36
+ ```typescript
37
+ interface TaskInput {
38
+ description: string; // task description/prompt
39
+ agentType?: "explore" | "task" | "general"; // sub-agent type (default: "general")
40
+ model?: string; // optional model override
41
+ }
42
+ ```
43
+
44
+ ### Task Types
45
+
46
+ **Explore** — read-only codebase analysis. The sub-agent can read files, search code, and analyze architecture but cannot modify anything. Uses a fast/cheap model by default for rapid iteration. Best for: "find all files that use X", "explain how Y works", "map the dependency graph."
47
+
48
+ **Task** — command execution with brief output. The sub-agent can run commands, read/write files, and execute tools. On success, returns a brief summary ("All 247 tests passed", "Build succeeded in 12s"). On failure, returns full output (stack traces, compiler errors). Best for: "run the tests", "build the project", "lint and fix."
49
+
50
+ **General** — full-capability agent in a separate context. Uses the primary model for high-quality reasoning. Can perform complex multi-step work requiring analysis, planning, and execution. Best for: "refactor this module", "implement this feature", "review and fix these issues."
51
+
52
+ ### Task Lifecycle
53
+
54
+ 1. **Launch** — the main agent calls the task tool with a description and type
55
+ 2. **Return** — the tool returns immediately with a task ID: `{taskId: "task_abc123", status: "running"}`
56
+ 3. **Execution** — the sub-agent works independently in its own context
57
+ 4. **Completion** — results are stored and the main agent is notified
58
+ 5. **Retrieval** — the main agent reads results via `task_result` or they are injected automatically
59
+
60
+ ### Task Context Isolation
61
+
62
+ Each task runs in an isolated context:
63
+
64
+ - **Own message history** — the sub-agent starts with the task description as its first message
65
+ - **Own tool access** — filtered by the task type's permission level
66
+ - **Own model** — configurable, defaults based on task type
67
+ - **No cross-talk** — messages sent in the main conversation after task launch are not visible to the task
68
+ - **Shared filesystem** — the task operates on the same project directory
69
+
70
+ This isolation means tasks are reproducible and predictable — they don't depend on conversation state that may change during execution.
71
+
72
+ ### Result Summarization
73
+
74
+ Task results are formatted based on outcome:
75
+
76
+ **Success (brief):**
77
+ ```json
78
+ {
79
+ "taskId": "task_abc123",
80
+ "status": "completed",
81
+ "summary": "Found 23 files importing SessionStore. Largest consumers: routes.ts (7 imports), middleware.ts (5 imports).",
82
+ "duration": "4.2s"
83
+ }
84
+ ```
85
+
86
+ **Failure (detailed):**
87
+ ```json
88
+ {
89
+ "taskId": "task_def456",
90
+ "status": "failed",
91
+ "error": "Build failed with 3 errors",
92
+ "output": "src/auth.ts:42 - error TS2345: Argument of type...\nsrc/routes.ts:18 - error TS2304...",
93
+ "duration": "8.1s"
94
+ }
95
+ ```
96
+
97
+ Success produces minimal output to preserve main conversation context. Failure produces full output because debugging requires detail.
98
+
99
+ ### Concurrent Execution
100
+
101
+ Multiple tasks can run simultaneously:
102
+
103
+ ```
104
+ Main conversation:
105
+ > Agent: I'll analyze coverage and refactor the logger in parallel.
106
+ → Launched task_001 (explore): "analyze test coverage"
107
+ → Launched task_002 (general): "refactor logger module"
108
+ > Developer: while those run, what's the status of the auth PR?
109
+ > Agent: [answers immediately, not blocked by tasks]
110
+ ← task_001 completed: "Coverage: 73%, gaps in auth/ and billing/"
111
+ ← task_002 completed: "Refactored logger.ts into 3 modules, updated 12 imports"
112
+ ```
113
+
114
+ ### Status Querying
115
+
116
+ The main agent can check task status at any time:
117
+
118
+ ```typescript
119
+ interface TaskStatusInput {
120
+ taskId: string;
121
+ }
122
+ // Returns: { taskId, status: "running" | "completed" | "failed", result?: ... }
123
+ ```
124
+
125
+ ## Supporting Structures
126
+
127
+ - **Tool Registry (RISE-034)** registers the task tool with id `task`
128
+ - **Multi-Agent System (RISE-009)** provides the sub-agent framework that tasks use
129
+ - **Sub-Agent Task Delegation (RISE-015)** defines the delegation protocol
130
+ - **Agent Permission Rulesets (RISE-011)** enforce per-task-type permission boundaries
131
+ - **Event Bus (RISE-002)** notifies the main conversation when tasks complete
132
+ - **Tool Context Injection (RISE-035)** provides cancellation via abort signal
133
+
134
+ ## Creative Advancement Scenarios
135
+
136
+ **Scenario 1 — Parallel Exploration:**
137
+ The developer asks "summarize the auth module and the billing module." The agent launches two explore tasks concurrently. Both complete within seconds, and the agent presents a side-by-side comparison. Serial execution would have taken twice as long.
138
+
139
+ **Scenario 2 — Non-Blocking Build:**
140
+ The agent makes code changes and launches a task: "run the test suite." While tests run (30 seconds), the developer asks a question about the codebase. The agent answers immediately. When tests complete, results appear: "247 passed, 2 failed" with the failure details.
141
+
142
+ **Scenario 3 — Complex Refactoring Delegation:**
143
+ The main agent identifies 3 independent refactoring tasks. It launches each as a general task with a detailed description. All 3 run concurrently, each with full tool access. The main conversation coordinates and verifies results as they complete.
144
+
145
+ **Scenario 4 — Graceful Cancellation:**
146
+ A task is taking too long. The developer says "cancel that search." The agent cancels the task via its abort signal. The task sub-agent stops gracefully and returns partial results.
@@ -0,0 +1,170 @@
1
+ # RISE-046: User Question Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/046-question-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides a question tool that lets the agent ask the user questions during execution — pausing to gather information, confirm decisions, or get preferences rather than guessing. When the agent encounters ambiguity, needs clarification, or faces a decision with multiple valid paths, it uses this tool to present a clear question and wait for the user's response. The tool supports both multiple-choice questions (for fast, structured answers) and freeform input (for open-ended responses). This creates a collaborative dialogue where the agent asks for what it needs instead of making potentially wrong assumptions.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - The agent cannot ask questions during tool execution — it must complete its response before the user can input
14
+ - When facing ambiguity (which config format? which migration strategy?), the agent guesses or picks arbitrarily
15
+ - There is no structured way for the agent to present choices — it embeds questions in free text and hopes the user notices
16
+ - Multiple-choice questions appear as plain text, requiring the user to type exact strings to respond
17
+ - The agent cannot pause mid-operation to confirm a destructive action with specific context
18
+
19
+ **Desired State:**
20
+ - A `question` tool pauses execution, presents a question to the user, and returns their answer
21
+ - Multiple-choice questions display as selectable options with keyboard navigation
22
+ - Freeform input allows open-ended answers with optional validation
23
+ - Questions are formatted distinctively in the UI — clearly separated from agent output
24
+ - Configurable timeout prevents indefinite blocking if the user doesn't respond
25
+ - The agent uses questions strategically — not for every decision, but for genuinely ambiguous ones
26
+
27
+ ## Desired Outcome Definition
28
+
29
+ The agent needs to create a configuration file but there are 3 valid formats (JSON, YAML, TOML). Instead of guessing, it invokes the question tool: "Which config format do you prefer?" with choices ["JSON", "YAML", "TOML"]. The user selects "YAML" from a visual picker. The agent receives "YAML" as the answer and creates the config in YAML format. The interaction took 3 seconds — less than correcting a wrong guess.
30
+
31
+ ## Natural Language Functional Description
32
+
33
+ ### Input Format
34
+
35
+ ```typescript
36
+ interface QuestionInput {
37
+ question: string; // the question text
38
+ choices?: string[]; // optional list of choices for multiple-choice
39
+ allowFreeform?: boolean; // allow free text even with choices (default: false)
40
+ default?: string; // default answer if timeout or empty input
41
+ timeout?: number; // timeout in seconds (default: 300 — 5 minutes)
42
+ context?: string; // optional context shown below the question
43
+ }
44
+ ```
45
+
46
+ ### Question Types
47
+
48
+ **Multiple Choice (choices provided, allowFreeform: false):**
49
+ The user sees a list of options with arrow-key navigation:
50
+
51
+ ```
52
+ 🤔 Which testing framework should I use?
53
+
54
+ › Jest
55
+ Vitest
56
+ Mocha
57
+
58
+ (Use ↑↓ to select, Enter to confirm)
59
+ ```
60
+
61
+ The user navigates with arrow keys and presses Enter. The tool returns the selected option as a string.
62
+
63
+ **Multiple Choice with Freeform (choices provided, allowFreeform: true):**
64
+ Same as above, but with an additional "Other..." option:
65
+
66
+ ```
67
+ 🤔 Which database should I use?
68
+
69
+ › PostgreSQL
70
+ MySQL
71
+ SQLite
72
+ Other (type your answer)
73
+
74
+ (Use ↑↓ to select, Enter to confirm)
75
+ ```
76
+
77
+ If "Other" is selected, the user is prompted to type a custom answer.
78
+
79
+ **Freeform (no choices):**
80
+ The user sees a text input prompt:
81
+
82
+ ```
83
+ 🤔 What should the API endpoint prefix be?
84
+
85
+ > /api/v2
86
+
87
+ (Type your answer, Enter to confirm)
88
+ ```
89
+
90
+ ### Question Display
91
+
92
+ Questions are visually distinct from agent output:
93
+
94
+ - **Icon prefix** — 🤔 indicates a question (not agent commentary)
95
+ - **Visual separation** — horizontal rule or box drawing above and below
96
+ - **Context section** — if provided, shown in muted text below the question
97
+ - **Input area** — clearly separated from the question text
98
+
99
+ Example with context:
100
+
101
+ ```
102
+ 🤔 The auth module has two possible refactoring approaches. Which do you prefer?
103
+
104
+ Context: Approach A keeps backward compatibility but adds complexity.
105
+ Approach B is cleaner but requires updating 12 call sites.
106
+
107
+ › Approach A (backward compatible)
108
+ Approach B (clean break)
109
+ ```
110
+
111
+ ### Timeout Behavior
112
+
113
+ When a timeout is configured:
114
+
115
+ 1. A countdown appears in the question prompt: `(auto-selecting "JSON" in 45s)`
116
+ 2. If the timeout expires, the default value is used
117
+ 3. If no default is provided and timeout expires, the tool returns `{timedOut: true, answer: null}`
118
+ 4. The agent handles timeout by proceeding with a reasonable default or aborting
119
+
120
+ ### Output Format
121
+
122
+ ```json
123
+ {
124
+ "answer": "YAML",
125
+ "timedOut": false,
126
+ "method": "choice" // "choice", "freeform", or "timeout"
127
+ }
128
+ ```
129
+
130
+ ### Strategic Use Guidelines
131
+
132
+ The agent should use the question tool when:
133
+
134
+ - Multiple valid approaches exist and user preference matters
135
+ - A destructive or irreversible action needs confirmation with specific context
136
+ - Required information is genuinely missing (not inferable from context)
137
+ - The decision significantly impacts the result quality
138
+
139
+ The agent should NOT use it for:
140
+
141
+ - Trivially inferable decisions (file naming conventions visible in existing code)
142
+ - Every small choice (this creates "question fatigue")
143
+ - Decisions it can make and easily undo if wrong
144
+
145
+ ### Integration with Permission System
146
+
147
+ The question tool is distinct from the permission system's `ask` mode (RISE-074). Permissions ask "should I be allowed to do X?" — a security question. The question tool asks "what should I do?" — a preference question. Both pause for user input but serve different purposes.
148
+
149
+ ## Supporting Structures
150
+
151
+ - **Tool Registry (RISE-034)** registers the question tool with id `question`
152
+ - **Tool Context Injection (RISE-035)** provides session context for the question display
153
+ - **Permission System (RISE-074)** handles security-oriented permission asks (separate from preference questions)
154
+ - **Rich TUI (RISE-058)** renders the question with visual distinction and keyboard navigation
155
+ - **Event Bus (RISE-002)** broadcasts `question.asked` and `question.answered` events
156
+ - **Keybinding System (RISE-063)** handles arrow-key navigation in multiple-choice mode
157
+
158
+ ## Creative Advancement Scenarios
159
+
160
+ **Scenario 1 — Format Preference:**
161
+ The developer asks "create a CI config." The agent knows the project uses GitHub Actions but could use either YAML or the new JSON format. It asks: "GitHub Actions config format?" with choices ["YAML (standard)", "JSON (experimental)"]. The developer picks YAML. The agent creates `.github/workflows/ci.yml` — the right format on the first try.
162
+
163
+ **Scenario 2 — Migration Strategy:**
164
+ The agent is asked to upgrade a database ORM. There are two migration paths: gradual (dual-write period) and cutover (stop-the-world migration). The agent presents both with context explaining trade-offs. The developer chooses gradual. Without the question, the agent would have guessed — and might have chosen the wrong path for the team's risk tolerance.
165
+
166
+ **Scenario 3 — Freeform Input:**
167
+ The agent needs to create a new API endpoint but doesn't know the preferred URL pattern. It asks: "What should the endpoint path be?" with freeform input and a default of `/api/v1/users`. The developer types `/v2/members`. The agent uses exactly what the developer specified.
168
+
169
+ **Scenario 4 — Timeout with Default:**
170
+ The agent asks a non-critical question with a 60-second timeout and a sensible default. The developer is reviewing another terminal and doesn't respond. After 60 seconds, the agent proceeds with the default: "Using 'src/components/' as the component directory (auto-selected after timeout)." The workflow isn't blocked by a minor decision.
@@ -0,0 +1,166 @@
1
+ # RISE-047: External Directory Access Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/047-external-directory-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides a controlled mechanism for accessing files outside the project directory. By default, all file tools are sandboxed to the project root — the agent cannot read system configs, examine other repositories, or access shared libraries. The external directory tool enables explicit, permissioned access to paths outside this sandbox. Every access is gated by the permission system: if the permission is "ask," the user sees the exact path and operation before access is granted. Write access to external directories is blocked entirely — the tool is read-only by design. This balances the agent's need for broader context with the security principle of least privilege.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code's file tools have no explicit path sandboxing — the underlying CLI may access any path the user can
14
+ - There is no distinction between accessing project files and system files — both are equally unrestricted
15
+ - An agent with file read access can read `/etc/passwd`, `~/.ssh/id_rsa`, or any other sensitive file
16
+ - No audit trail exists for file accesses outside the project directory
17
+ - There is no mechanism to explicitly grant access to a specific external path while keeping everything else restricted
18
+
19
+ **Desired State:**
20
+ - File tools are sandboxed to the project root by default — any path outside it is rejected
21
+ - The external directory tool provides a controlled escape hatch for reading external paths
22
+ - The "external_directory" permission gates access: "allow" permits silently, "ask" prompts the user, "deny" blocks
23
+ - When "ask" mode is active, the user sees the exact path and operation before granting access
24
+ - Write access to external directories is blocked entirely — no exceptions
25
+ - All external access is logged with path, operation, and outcome for audit
26
+
27
+ ## Desired Outcome Definition
28
+
29
+ The developer asks the agent to compare their project's ESLint config with a team-shared config at `/shared/configs/.eslintrc.json`. The agent calls the external directory tool to read the shared config. The user sees: "🔒 Read external file: /shared/configs/.eslintrc.json — Allow?" The user confirms. The agent reads the file, compares both configs, and reports differences. The access is logged. The agent could not write to the external path even if it tried.
30
+
31
+ ## Natural Language Functional Description
32
+
33
+ ### Input Format
34
+
35
+ ```typescript
36
+ interface ExternalDirectoryInput {
37
+ path: string; // absolute path to read
38
+ operation: "read" | "list"; // read file content or list directory
39
+ }
40
+ ```
41
+
42
+ ### Operations
43
+
44
+ **Read** — returns the content of a file at the specified path:
45
+
46
+ ```json
47
+ {
48
+ "operation": "read",
49
+ "path": "/shared/configs/.eslintrc.json",
50
+ "content": "{\n \"extends\": \"@myorg/eslint-config\",\n ...\n}",
51
+ "size": 1234,
52
+ "encoding": "utf-8"
53
+ }
54
+ ```
55
+
56
+ **List** — returns the contents of a directory (non-recursive by default):
57
+
58
+ ```json
59
+ {
60
+ "operation": "list",
61
+ "path": "/shared/configs/",
62
+ "entries": [
63
+ {"name": ".eslintrc.json", "type": "file", "size": 1234},
64
+ {"name": ".prettierrc", "type": "file", "size": 456},
65
+ {"name": "tsconfig/", "type": "directory"}
66
+ ]
67
+ }
68
+ ```
69
+
70
+ ### Permission Enforcement
71
+
72
+ The tool checks the "external_directory" permission before any operation:
73
+
74
+ 1. **"deny" (default)** — the operation is rejected immediately:
75
+ ```json
76
+ {"error": "External directory access denied. Configure 'external_directory' permission to enable."}
77
+ ```
78
+
79
+ 2. **"ask"** — the user is prompted with the specific path:
80
+ ```
81
+ 🔒 External access requested:
82
+ Operation: read
83
+ Path: /shared/configs/.eslintrc.json
84
+
85
+ Allow? (y/n)
86
+ ```
87
+ If the user denies, the operation returns a permission-denied error. If they allow, the operation proceeds and is logged.
88
+
89
+ 3. **"allow"** — the operation proceeds silently (for trusted environments).
90
+
91
+ ### Path Restrictions
92
+
93
+ Even with permission granted, certain paths are always blocked:
94
+
95
+ - `~/.ssh/` — SSH keys and configuration
96
+ - `~/.gnupg/` — GPG keys
97
+ - `~/.aws/credentials` — cloud credentials
98
+ - `/etc/shadow` — system password hashes
99
+ - Any path matching configured blocklist patterns
100
+
101
+ These restrictions cannot be overridden — they are hardcoded security boundaries.
102
+
103
+ ### Write Access
104
+
105
+ Write operations to external directories are unconditionally blocked:
106
+
107
+ ```json
108
+ {
109
+ "error": "Write access to external directories is not supported. External directory access is read-only."
110
+ }
111
+ ```
112
+
113
+ This restriction is by design — the agent should never modify files outside the project. If cross-project changes are needed, the developer should open mia-code in the target project.
114
+
115
+ ### Audit Logging
116
+
117
+ Every external access (whether allowed or denied) is logged:
118
+
119
+ ```json
120
+ {
121
+ "timestamp": "2026-03-01T14:30:00Z",
122
+ "tool": "external_directory",
123
+ "operation": "read",
124
+ "path": "/shared/configs/.eslintrc.json",
125
+ "outcome": "allowed",
126
+ "permission": "ask",
127
+ "sessionId": "sess_abc123",
128
+ "agent": "build"
129
+ }
130
+ ```
131
+
132
+ Logs are written to `.mia-code/audit.log` (append-only) for security review.
133
+
134
+ ### Symlink Resolution
135
+
136
+ When a path within the project directory is a symlink pointing outside the project, the tool:
137
+
138
+ 1. Resolves the symlink to its real path
139
+ 2. Checks if the real path is outside the project root
140
+ 3. If outside, applies external directory permission checks
141
+ 4. If inside, allows normal access
142
+
143
+ This prevents symlink-based sandbox escapes.
144
+
145
+ ## Supporting Structures
146
+
147
+ - **Tool Registry (RISE-034)** registers the external_directory tool with id `external_directory`
148
+ - **Tool Context Injection (RISE-035)** provides session context and the `ask()` function for permission prompts
149
+ - **Permission System (RISE-074)** provides the "external_directory" permission with allow/ask/deny modes
150
+ - **Agent Permission Rulesets (RISE-011)** configure per-agent external access policies
151
+ - **Structured Logging (RISE-007)** records audit entries for external access
152
+ - **File Read/Write Tools (RISE-048)** delegate to this tool when paths are outside the project root
153
+
154
+ ## Creative Advancement Scenarios
155
+
156
+ **Scenario 1 — Shared Configuration Comparison:**
157
+ The developer maintains a shared config repository at `/repos/shared-config/`. They ask the agent to ensure their project's TypeScript config aligns with the shared base. The agent reads the external `tsconfig.json` (after user permission), compares it with the project's config, and identifies 3 misaligned compiler options.
158
+
159
+ **Scenario 2 — Reference Implementation:**
160
+ The developer says "look at how the auth module works in the API project at /repos/api-service/." The agent reads the external auth module files, understands the pattern, and adapts it for the current project. External access enables cross-project learning without copy-pasting.
161
+
162
+ **Scenario 3 — Blocked Sensitive Access:**
163
+ A prompt injection in a README file attempts to make the agent read `~/.ssh/id_rsa`. The hardcoded path blocklist rejects the request regardless of permission settings: "Path ~/.ssh/ is restricted for security." The agent reports the blocked attempt in the audit log.
164
+
165
+ **Scenario 4 — System Config Inspection:**
166
+ The developer asks "why isn't my Node.js version correct?" The agent requests to read `/usr/local/etc/nodenv/version` (external path, user prompted). After permission, it reads the file and identifies a version mismatch with the project's `.node-version` — diagnosing the issue.