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,146 @@
1
+ # RISE-015: Subagent Task Delegation
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/015-subagent-task-delegation.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code enables agents to delegate specialized subtasks to other agents, creating a collaborative multi-agent workflow within a single session. When a primary agent encounters a task better suited to a specialist — complex multi-file search, background code analysis, focused review — it spawns a subagent to handle it. The subagent works within its own permission boundary, returns results, and the parent agent synthesizes. This mirrors how effective teams work: leaders delegate, specialists execute, results converge. The `@mention` syntax makes delegation feel natural — like addressing a colleague in a conversation.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code processes every request with a single agent — there is no delegation or task splitting
14
+ - Complex multi-step tasks (e.g., "find all auth patterns and then refactor them") are handled sequentially by one agent, which may lose focus or context across steps
15
+ - The engine (Gemini/Claude) has a single context window — large codebase searches consume tokens that could be used for reasoning
16
+ - There is no way to run a focused search in parallel with an ongoing conversation
17
+ - The unifier interprets all output through one lens, regardless of whether the output came from exploration, analysis, or execution
18
+
19
+ **Desired State:**
20
+ - Primary agents can spawn subagents via `@mention` syntax in user messages or programmatic delegation
21
+ - Subagents run in their own context with their own permissions but share the session's file system state
22
+ - Subagent results flow back to the parent agent, which synthesizes and presents them to the user
23
+ - Delegation is explicit and observable — the user sees when a subtask is delegated and when it completes
24
+ - Subagents have limited tool access compared to primary agents (configurable per agent definition)
25
+ - The parent agent decides when to delegate versus handle directly, based on task complexity and agent availability
26
+
27
+ ## Desired Outcome Definition
28
+
29
+ A user types `@explore find all files importing the Database class` in their message. The active primary agent recognizes the `@explore` mention, extracts the task, and delegates to the explore subagent. The explore agent searches the codebase, returns results, and the primary agent presents the synthesized findings to the user.
30
+
31
+ ## Natural Language Functional Description
32
+
33
+ ### Delegation Syntax
34
+
35
+ Users trigger delegation by prefixing a task with `@agentname`:
36
+
37
+ ```
38
+ @explore find all uses of the createSession function
39
+ @general analyze the dependency graph of the auth module
40
+ @reviewer check the last 3 file changes for security issues
41
+ ```
42
+
43
+ The `@mention` is parsed from the user's message. Everything after the agent name is treated as the delegated task prompt.
44
+
45
+ ### Delegation Flow
46
+
47
+ 1. **Parse**: The system detects `@agentname` in the user's message and extracts the agent name and task
48
+ 2. **Validate**: The named agent must exist and have mode "subagent" or "all" — primary-only agents cannot be invoked as subagents
49
+ 3. **Context Assembly**: The subagent receives: the task prompt, relevant session context (recent messages, current file state), and its own system prompt
50
+ 4. **Execute**: The subagent processes the task within its permission boundary, using its configured model
51
+ 5. **Return**: The subagent's response is returned to the parent agent as a structured result
52
+ 6. **Synthesize**: The parent agent incorporates the subagent's results into its response to the user
53
+ 7. **Display**: The UI shows the delegation as a nested thread — the user sees the subagent's work and the parent's synthesis
54
+
55
+ ### Subagent Context
56
+
57
+ Subagents receive a focused context, not the full conversation history:
58
+
59
+ - **Task prompt**: The text following the `@mention`
60
+ - **Recent context**: The last N messages from the session (configurable, default 5) for conversational continuity
61
+ - **File state**: Full access to the session's file system (subject to the subagent's permissions)
62
+ - **Project metadata**: Project name, root directory, detected language/framework
63
+
64
+ Subagents do not receive:
65
+ - The full message history (to keep their context window focused)
66
+ - The parent agent's system prompt (they use their own)
67
+ - Other subagents' results (unless explicitly included in the task prompt)
68
+
69
+ ### Parent Agent Synthesis
70
+
71
+ When a subagent returns results, the parent agent:
72
+ 1. Receives the subagent's response as a structured message with metadata (agent name, execution time, tool calls made)
73
+ 2. Evaluates the results in the context of the ongoing conversation
74
+ 3. May use the results directly, summarize them, or combine them with its own analysis
75
+ 4. Presents a unified response to the user that credits the subagent's contribution
76
+
77
+ ### UI Representation
78
+
79
+ Delegation appears in the terminal UI as a nested thread:
80
+
81
+ ```
82
+ You: @explore find all files that use the EventBus
83
+
84
+ ┌─ explore agent ──────────────────────────────┐
85
+ │ Searching codebase... │
86
+ │ Found 12 files importing EventBus: │
87
+ │ src/session/manager.ts:3 │
88
+ │ src/engine/gemini.ts:7 │
89
+ │ src/engine/claude.ts:5 │
90
+ │ ... (9 more) │
91
+ │ ⏱ completed in 1.2s │
92
+ └───────────────────────────────────────────────┘
93
+
94
+ 🤖 Build agent: Found 12 files using EventBus. The heaviest usage
95
+ is in the session management layer (4 files) and engine
96
+ adapters (3 files). Want me to refactor any of these?
97
+ ```
98
+
99
+ ### Programmatic Delegation
100
+
101
+ Beyond user-initiated `@mention`, the primary agent can decide to delegate programmatically. When the agent's reasoning determines that a subtask would benefit from delegation, it emits a delegation request:
102
+
103
+ - The agent recognizes a complex search task → delegates to `@explore`
104
+ - The agent needs a focused code review → delegates to `@reviewer`
105
+ - The agent needs multi-step analysis → delegates to `@general`
106
+
107
+ Programmatic delegation uses the same flow as user-initiated delegation but is triggered by the agent's own reasoning rather than an explicit `@mention`.
108
+
109
+ ### Delegation Limits
110
+
111
+ To prevent runaway delegation chains:
112
+ - Maximum delegation depth: 2 (a subagent can delegate to another subagent, but no further)
113
+ - Maximum concurrent subagents: 3 (additional delegations queue)
114
+ - Subagent timeout: 60 seconds default (configurable) — if a subagent exceeds the timeout, its partial results are returned
115
+ - Subagents cannot delegate to primary-mode-only agents
116
+ - A subagent cannot invoke its parent agent (no circular delegation)
117
+
118
+ ### Error Handling
119
+
120
+ When delegation fails:
121
+ - **Agent not found**: The parent agent is informed and can handle the task itself or suggest alternatives
122
+ - **Permission denied**: The subagent's permission ruleset prevented the requested operation — the parent agent is informed with the specific denial reason
123
+ - **Timeout**: Partial results are returned with a timeout indicator — the parent agent decides whether to retry, delegate to a different agent, or handle manually
124
+ - **Subagent error**: Errors are propagated to the parent agent as structured error objects (see RISE-006)
125
+
126
+ ## Supporting Structures
127
+
128
+ - **Multi-Agent System (RISE-009)** defines the agent architecture and mode system that delegation relies on
129
+ - **Agent Permission Rulesets (RISE-011)** enforces permission boundaries for subagents independently
130
+ - **Agent Prompt Templates (RISE-012)** provides subagent-specific system prompts optimized for focused tasks
131
+ - **Agent Model Selection (RISE-016)** enables subagents to use cost-appropriate models for their tasks
132
+ - **Event Bus (RISE-002)** broadcasts delegation events (start, complete, error) to the UI
133
+
134
+ ## Creative Advancement Scenarios
135
+
136
+ **Scenario 1 — Large Codebase Exploration:**
137
+ A developer working in a monorepo asks the build agent to refactor the authentication module. The build agent delegates `@explore find all files importing AuthService and map their dependency relationships` to the explore agent. The explore agent uses a fast model to scan thousands of files in seconds, returns a dependency map. The build agent uses this map to plan a safe refactoring order, then executes the changes file by file.
138
+
139
+ **Scenario 2 — Review Before Commit:**
140
+ After making several changes in build mode, the developer types `@reviewer check all files I modified this session for bugs or security issues`. The reviewer subagent reads the modified files, analyzes the changes, and returns a focused review. The build agent presents the review and asks whether to proceed with committing or address the findings first.
141
+
142
+ **Scenario 3 — Parallel Research:**
143
+ The developer asks: "Refactor the database layer to use connection pooling. @explore find how connections are currently managed. @general research best practices for connection pooling in Node.js." Both subagents execute concurrently. The explore agent maps the current implementation while the general agent provides architectural guidance. The build agent synthesizes both results into a refactoring plan.
144
+
145
+ **Scenario 4 — Cascading Delegation:**
146
+ The developer asks the build agent to migrate a module from JavaScript to TypeScript. The build agent delegates `@explore find all .js files in src/auth/` to map the migration scope. The explore agent returns the file list. The build agent then processes each file, converting it to TypeScript. For complex type inference, it delegates `@general analyze the runtime types used in src/auth/middleware.js` to get detailed type information before converting.
@@ -0,0 +1,151 @@
1
+ # RISE-016: Agent Model Selection
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/016-agent-model-selection.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code enables developers to assign different LLM models to different agents, optimizing for cost, speed, and capability across the agent roster. A fast, cheap model powers rapid codebase exploration. A powerful, expensive model handles complex code generation. A balanced model manages code review. Each agent uses the right tool for its job — the explore agent does not need Opus-level reasoning for `grep` and `glob`, and the build agent should not be constrained to a Flash-tier model for complex refactoring. Model selection turns the agent system into a cost-efficient ensemble.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code selects between two engines: Gemini CLI and Claude CLI — this is a binary choice, not a model selection
14
+ - The engine choice applies globally to the entire session — there is no per-task or per-agent model variation
15
+ - Both engines use their default models (Gemini 2.5 Pro, Claude Sonnet) — there is no mechanism to specify a model variant
16
+ - Cost optimization is impossible — every interaction uses the same model regardless of task complexity
17
+ - Simple tasks (file listing, content search) consume the same expensive tokens as complex tasks (architecture design, code generation)
18
+ - The `engineChoice` field in session state stores "gemini" or "claude" but not a specific model identifier
19
+
20
+ **Desired State:**
21
+ - Each agent definition includes an optional `model` field specifying `{providerID, modelID}`
22
+ - When no model is specified, the agent uses the session's global default
23
+ - Agents use their assigned model for all interactions, regardless of the session default
24
+ - Model selection is independent of agent permissions and prompt — a model change does not affect what the agent can do
25
+ - Users can change an agent's model mid-session via config update
26
+ - The system tracks token usage and cost per agent for visibility
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ Each agent in mia-code uses its configured model for all LLM interactions. The explore agent defaults to a fast model, the build agent to a powerful one, and users can override any agent's model via configuration. Model selection is transparent, cost-aware, and independent of other agent properties.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Model Reference Format
35
+
36
+ A model reference is a two-field object:
37
+
38
+ ```typescript
39
+ interface ModelReference {
40
+ providerID: string; // API provider identifier
41
+ modelID: string; // specific model within the provider
42
+ }
43
+ ```
44
+
45
+ Provider IDs map to configured API endpoints:
46
+ - `"anthropic"` → Anthropic API (Claude models)
47
+ - `"google"` → Google AI API (Gemini models)
48
+ - `"openai"` → OpenAI API (GPT models)
49
+ - `"local"` → Local model server (Ollama, LM Studio, etc.)
50
+
51
+ Model IDs are provider-specific strings:
52
+ - `"claude-sonnet-4-20250514"`, `"claude-opus-4-20250514"`, `"claude-haiku-3-5-20241022"`
53
+ - `"gemini-2.5-pro"`, `"gemini-2.5-flash"`, `"gemini-2.0-flash"`
54
+ - `"gpt-4.1"`, `"o3"`, `"gpt-4.1-mini"`
55
+
56
+ ### Default Model Assignments
57
+
58
+ Built-in agents have these default model preferences:
59
+
60
+ | Agent | Default Model Strategy | Rationale |
61
+ |-------|----------------------|-----------|
62
+ | build | Session default (most capable) | Complex code generation needs top-tier reasoning |
63
+ | plan | Session default | Analysis benefits from strong reasoning |
64
+ | explore | Fast/cheap variant | Search tasks need speed, not deep reasoning |
65
+ | general | Session default | Subagent tasks may be complex |
66
+
67
+ The "fast/cheap variant" is resolved at runtime based on the session's provider:
68
+ - If session uses Anthropic → explore defaults to `claude-haiku-3-5-20241022`
69
+ - If session uses Google → explore defaults to `gemini-2.5-flash`
70
+ - If session uses OpenAI → explore defaults to `gpt-4.1-mini`
71
+
72
+ ### Configuration
73
+
74
+ Users set agent models in `mia-code.json`:
75
+
76
+ ```json
77
+ {
78
+ "agent": {
79
+ "build": {
80
+ "model": {
81
+ "providerID": "anthropic",
82
+ "modelID": "claude-sonnet-4-20250514"
83
+ }
84
+ },
85
+ "explore": {
86
+ "model": {
87
+ "providerID": "google",
88
+ "modelID": "gemini-2.5-flash"
89
+ }
90
+ },
91
+ "reviewer": {
92
+ "model": {
93
+ "providerID": "anthropic",
94
+ "modelID": "claude-opus-4-20250514"
95
+ }
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ Agents can use models from different providers within the same session. The build agent might use Claude while the explore agent uses Gemini Flash — each agent talks to its configured API endpoint independently.
102
+
103
+ ### Model Resolution Order
104
+
105
+ When an agent needs to make an LLM call, the model is resolved in this order:
106
+
107
+ 1. **Agent config override**: The `model` field in the agent's definition (highest priority)
108
+ 2. **Session default**: The model selected when the session started or changed via `/model` command
109
+ 3. **Global default**: The default model from `~/.config/mia-code/config.json`
110
+ 4. **Engine fallback**: The default model of the configured engine (gemini/claude)
111
+
112
+ ### Runtime Model Switching
113
+
114
+ An agent's model can be changed mid-session:
115
+ - Via command: `/model build anthropic/claude-opus-4` changes the build agent's model
116
+ - Via config edit: Modifying `mia-code.json` and reloading
117
+ - The change takes effect on the next message — in-flight operations complete with the previous model
118
+
119
+ ### Cost Tracking
120
+
121
+ The system tracks token usage per agent per session (input tokens, output tokens, estimated cost). Cost data is logged and optionally displayed via `/cost` command, enabling users to see the cost impact of their model choices and optimize accordingly.
122
+
123
+ ### Integration with mia-code Engine System
124
+
125
+ The current mia-code engine system (`gemini` vs `claude` CLI selection) maps to the model reference format: `engineChoice: "gemini"` → `{providerID: "google", modelID: "gemini-2.5-pro"}`, `engineChoice: "claude"` → `{providerID: "anthropic", modelID: "claude-sonnet-4"}`. The model selection system is a superset — the engine choice becomes the session default, and per-agent overrides layer on top, preserving backward compatibility.
126
+
127
+ ### Provider Configuration
128
+
129
+ Each provider requires API credentials and endpoint configuration in a `providers` config section. Environment variable references (prefixed with `$`) are resolved at runtime. Provider configuration is global — not per-agent. Agents reference providers by ID; the system resolves credentials from the provider config.
130
+
131
+ ## Supporting Structures
132
+
133
+ - **Multi-Agent System (RISE-009)** defines the agents that model selection applies to
134
+ - **Agent Definition Config (RISE-010)** provides the configuration format for model overrides
135
+ - **Structured Logging (RISE-007)** records token usage and cost data
136
+ - **Compaction Agent (RISE-017)** benefits from model selection — compaction uses a cheap model to summarize
137
+ - **Instance State (RISE-003)** stores per-session cost tracking data
138
+
139
+ ## Creative Advancement Scenarios
140
+
141
+ **Scenario 1 — Cost-Optimized Development:**
142
+ A solo developer on a budget configures: build agent → Claude Sonnet (balanced cost/quality), explore agent → Gemini Flash (nearly free for search), plan agent → Claude Haiku (cheap analysis). Their daily cost drops from $5 to $1.50 without noticeable quality loss in exploration and planning tasks. Build tasks retain full quality where it matters most.
143
+
144
+ **Scenario 2 — Cross-Provider Ensemble:**
145
+ A team uses Claude Opus for the build agent (best code generation), Gemini Pro for the plan agent (strong analysis at lower cost), and GPT-4.1-mini for the explore agent (fast and cheap). Each model plays to its strengths. The agents don't know or care which provider powers them — the abstraction is complete.
146
+
147
+ **Scenario 3 — Local Model for Sensitive Code:**
148
+ A defense contractor configures the explore agent to use a local Ollama model — no data leaves the network for search operations. The build agent uses Claude via API for complex generation, but only for non-classified code paths. Model selection enables hybrid local/cloud architectures.
149
+
150
+ **Scenario 4 — Mid-Session Upgrade:**
151
+ A developer starts with Sonnet for the build agent. Midway through a complex refactoring, they realize they need stronger reasoning. They run `/model build anthropic/claude-opus-4` and the next message uses Opus. The session context is preserved — only the model changes. When the hard part is done, they switch back to Sonnet to save costs.
@@ -0,0 +1,150 @@
1
+ # RISE-017: Compaction Agent
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/017-compaction-agent.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code enables long-running development sessions without context window exhaustion by employing a specialized compaction agent that summarizes older conversation history into a condensed, high-signal representation. As sessions grow, the compaction agent distills verbose tool outputs, intermediate reasoning, and redundant exchanges into a compact summary that preserves key decisions, file modifications, error resolutions, and current task state. The developer's working context remains sharp and focused no matter how long the session runs — the agent remembers what matters and forgets what doesn't.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code sessions accumulate messages without limit — long sessions consume ever-growing context windows
14
+ - The underlying engines (Gemini/Claude CLI) have finite context limits — exceeding them causes truncation or errors
15
+ - Verbose tool outputs (full file contents, large command outputs, search results) inflate context rapidly
16
+ - There is no mechanism to summarize or compress older messages — every historical message occupies context tokens
17
+ - Long sessions degrade in quality as the model loses access to early decisions obscured by later noise
18
+ - Session persistence (`~/.mia-code-sessions.json`) stores full message history, growing storage over time
19
+ - The unifier's dual perspective adds interpretive text to every exchange, further inflating context
20
+
21
+ **Desired State:**
22
+ - A compaction agent monitors session message count and automatically compresses older messages when a threshold is exceeded
23
+ - Compacted summaries replace detailed history — recent messages remain verbatim
24
+ - The summary preserves: file modification records, key decisions, error resolutions, current task state, and important code snippets
25
+ - The summary discards: verbose tool outputs, intermediate reasoning chains, redundant exchanges, large file contents, and raw search results
26
+ - Compaction runs in the background without interrupting the developer's workflow
27
+ - Multiple compaction rounds can occur in a long session — each round compresses the oldest uncompacted messages
28
+ - The compacted context is smaller but semantically equivalent for ongoing work
29
+
30
+ ## Desired Outcome Definition
31
+
32
+ When a mia-code session exceeds a message threshold (default: 50 messages), the compaction agent automatically summarizes older messages into a condensed context block. Recent messages (default: last 20) remain verbatim. The session continues seamlessly with the compacted history, maintaining coherence while reducing token consumption.
33
+
34
+ ## Natural Language Functional Description
35
+
36
+ ### Compaction Trigger
37
+
38
+ Compaction is triggered when:
39
+ - The session message count exceeds the configured threshold (default: 50)
40
+ - The estimated token count of the conversation exceeds 80% of the model's context window
41
+ - The user explicitly requests compaction via `/compact` command
42
+
43
+ The system checks for compaction need after every agent response. When triggered, compaction runs asynchronously — the developer can continue working while compression happens in the background.
44
+
45
+ ### Compaction Agent Definition
46
+
47
+ The compaction agent is a specialized internal agent:
48
+
49
+ ```json
50
+ {
51
+ "name": "Compaction Agent",
52
+ "mode": "subagent",
53
+ "hidden": true,
54
+ "model": {
55
+ "providerID": "auto",
56
+ "modelID": "cheapest-available"
57
+ },
58
+ "permissions": [
59
+ {"permission": "read", "action": "allow"},
60
+ {"permission": "*", "action": "deny"}
61
+ ]
62
+ }
63
+ ```
64
+
65
+ Key properties:
66
+ - **Hidden**: Does not appear in agent list or Tab switcher
67
+ - **Read-only**: Can only read — cannot edit files, run commands, or modify state
68
+ - **Cheap model**: Uses the most cost-effective model available (e.g., Gemini Flash, Haiku) since summarization does not require top-tier reasoning
69
+ - **Subagent mode**: Only invocable internally by the system, never by the user directly
70
+
71
+ ### Compaction Algorithm
72
+
73
+ **Step 1 — Segment Selection:**
74
+ Divide the conversation into two segments:
75
+ - **Compactable segment**: Messages from the start of the session (or last compaction) up to the retention boundary
76
+ - **Retained segment**: The most recent N messages (default: 20) that remain verbatim
77
+
78
+ **Step 2 — Information Extraction:**
79
+ The compaction agent analyzes the compactable segment and extracts:
80
+ - **File modifications**: Every file created, edited, or deleted, with a summary of changes
81
+ - **Key decisions**: Choices made by the developer or agent that affect the project direction
82
+ - **Error resolutions**: Problems encountered and how they were resolved
83
+ - **Current task state**: What the developer is working on and where they left off
84
+ - **Important code patterns**: Architectural patterns, conventions, or constraints discovered
85
+ - **Tool results summary**: Condensed versions of search results, build outputs, and test results
86
+
87
+ **Step 3 — Summary Generation:**
88
+ The compaction agent generates a structured markdown summary with sections for: File Modifications (files created/edited/deleted with change summaries), Key Decisions (choices affecting project direction), Error Resolutions (problems and fixes), Current Task State (active work and next steps), and Context Notes (project conventions and preferences).
89
+
90
+ **Step 4 — History Replacement:**
91
+ The compacted summary replaces the compactable segment in the session's message history. The conversation now contains:
92
+ 1. The compaction summary (as a system message)
93
+ 2. The retained segment (verbatim recent messages)
94
+
95
+ ### Multiple Compaction Rounds
96
+
97
+ In very long sessions, compaction can occur multiple times. Each round:
98
+ - Takes the current summary + the next batch of compactable messages
99
+ - Generates an updated summary that incorporates the new information
100
+ - The summary grows incrementally, but much slower than the raw message history
101
+
102
+ A session with 200 messages might compact at messages 50, 100, and 150 — each time updating the summary and retaining the latest 20 messages.
103
+
104
+ ### Preserved vs. Discarded Information
105
+
106
+ **Always preserved:**
107
+ - File paths and modification summaries (what changed, not the full diff)
108
+ - Decision rationale (why a particular approach was chosen)
109
+ - Error messages and their resolutions
110
+ - Current task context and next steps
111
+ - Project conventions discovered during the session
112
+ - Configuration changes made
113
+
114
+ **Always discarded:**
115
+ - Full file contents shown during read operations (preserved as "read file X, N lines")
116
+ - Raw bash command output exceeding 10 lines (preserved as "ran command X, output summary")
117
+ - Intermediate reasoning chains that led to dead ends
118
+ - Duplicate questions or re-explanations
119
+ - Verbose tool parameter listings
120
+ - The unifier's 🧠/🌸 commentary on compacted messages (only recent commentary retained)
121
+
122
+ ### User Control
123
+
124
+ Users configure compaction in `mia-code.json` with: `enabled` (default: true), `messageThreshold` (default: 50), `retainCount` (default: 20), `autoCompact` (default: true). The `/compact` command triggers immediate compaction regardless of message count — useful when early conversation is no longer relevant or the session approaches context limits.
125
+
126
+ ### Integration with Session Persistence
127
+
128
+ The full pre-compaction history is archived in a separate file for forensic recovery. The active session file contains only the summary + retained messages, enabling faster loading. The archive is never consulted during normal operation — it exists only for post-session review.
129
+
130
+ ## Supporting Structures
131
+
132
+ - **Multi-Agent System (RISE-009)** provides the subagent architecture the compaction agent uses
133
+ - **Agent Model Selection (RISE-016)** enables the compaction agent to use a cost-effective model
134
+ - **Agent Permission Rulesets (RISE-011)** ensures the compaction agent is read-only
135
+ - **Structured Logging (RISE-007)** records compaction events (when, what was compacted, compression ratio)
136
+ - **Instance State (RISE-003)** tracks compaction state per session
137
+
138
+ ## Creative Advancement Scenarios
139
+
140
+ **Scenario 1 — Marathon Refactoring Session:**
141
+ A developer spends 4 hours refactoring a large module — 150 messages deep. Without compaction, the agent would have lost early context about why certain design decisions were made. With compaction, the session summary carries forward: "Chose strategy pattern over switch-case for handler dispatch (message #12), extracted shared types to avoid circular imports (message #34)." At message 150, the agent still references these early decisions accurately.
142
+
143
+ **Scenario 2 — Multi-Day Session:**
144
+ A developer works on a feature across three days, each time resuming the same session. Compaction runs at the end of each day's work, producing a summary of that day's progress. On day 3, the session contains: Day 1 summary + Day 2 summary + today's verbatim messages. The agent has clear continuity without drowning in three days of raw history.
145
+
146
+ **Scenario 3 — Cost-Conscious Development:**
147
+ A developer on a pay-per-token plan enables aggressive compaction (threshold: 30, retain: 10). The compaction agent uses Gemini Flash at near-zero cost. Each compaction round reduces the active context by ~60%, significantly lowering the token cost of subsequent messages. The developer maintains session coherence while keeping costs predictable.
148
+
149
+ **Scenario 4 — Forensic Recovery:**
150
+ After a complex debugging session, the developer wants to review the full uncompacted history to understand how they arrived at the solution. They access the archived pre-compaction messages via `/history --full`, which loads the complete raw conversation. The archive exists for exactly this purpose — learning from the full journey, not just the destination.
@@ -0,0 +1,125 @@
1
+ # RISE-018: Session Persistence with SQLite
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/018-session-persistence.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code replaces its fragile flat-file session storage with a proper SQLite database. Developers gain transactional integrity, concurrent access safety, and queryable session history — the foundation upon which every other session feature is built. A crash mid-write no longer corrupts the entire session store. The database becomes the single source of truth for all session, message, and part data.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Sessions are stored in `~/.mia-code-sessions.json` as a flat JSON file
14
+ - Each session contains only basic metadata: id, startedAt, model, projectRoot, initialized
15
+ - Every write rewrites the entire file — a crash during write can corrupt all sessions
16
+ - No concurrent access protection: two mia-code instances editing the same file race each other
17
+ - No query capability: finding sessions by project or date requires loading and scanning the full file
18
+ - Message history is not persisted — conversation context is lost between restarts
19
+ - No schema enforcement: any malformed JSON entry silently corrupts the store
20
+
21
+ **Desired State:**
22
+ - A SQLite database at `~/.mia-code/data.db` stores all session data
23
+ - Three normalized tables (sessions, messages, parts) with proper foreign keys
24
+ - Writes are transactional — partial writes never corrupt existing data
25
+ - Multiple mia-code instances can read/write concurrently via SQLite's WAL mode
26
+ - Sessions are queryable by project, date range, status, or any column
27
+ - Full conversation history (messages and their parts) persists across restarts
28
+ - Schema is enforced by the database engine, with migrations for future changes
29
+
30
+ ## Desired Outcome Definition
31
+
32
+ When mia-code starts, it opens (or creates) `~/.mia-code/data.db`. All session CRUD operations go through a typed data access layer backed by SQLite. Existing `~/.mia-code-sessions.json` data is auto-migrated on first run. The JSON file is renamed to `.mia-code-sessions.json.migrated` after successful migration.
33
+
34
+ ## Natural Language Functional Description
35
+
36
+ ### Database Schema
37
+
38
+ The database contains three core tables:
39
+
40
+ **sessions** — one row per conversation session:
41
+ - `id` TEXT PRIMARY KEY — UUID v4
42
+ - `slug` TEXT — human-readable short identifier (e.g. "fix-auth-bug-3")
43
+ - `project_id` TEXT — identifier for the project (derived from directory path hash)
44
+ - `directory` TEXT — absolute path to the project root
45
+ - `parent_id` TEXT nullable — references sessions.id for forked/child sessions
46
+ - `title` TEXT — human-readable session title
47
+ - `version` TEXT — mia-code version that created the session
48
+ - `created_at` INTEGER — Unix timestamp in milliseconds
49
+ - `updated_at` INTEGER — Unix timestamp, updated on every mutation
50
+ - `archived_at` INTEGER nullable — set when session is archived, null when active
51
+
52
+ **messages** — one row per conversation turn:
53
+ - `id` TEXT PRIMARY KEY — UUID v4
54
+ - `session_id` TEXT FOREIGN KEY references sessions.id
55
+ - `role` TEXT — "user", "assistant", or "system"
56
+ - `metadata` JSON — model name, token counts, cost, timing, etc.
57
+ - `created_at` INTEGER — Unix timestamp in milliseconds
58
+
59
+ **parts** — one row per content unit within a message:
60
+ - `id` TEXT PRIMARY KEY — UUID v4
61
+ - `message_id` TEXT FOREIGN KEY references messages.id
62
+ - `type` TEXT — one of: text, tool_call, tool_result, error, image, file
63
+ - `content` JSON — type-specific payload (see RISE-026)
64
+ - `index` INTEGER — ordering within the parent message
65
+ - `created_at` INTEGER — Unix timestamp in milliseconds
66
+
67
+ ### Data Access Layer
68
+
69
+ A `SessionDB` class wraps all database operations:
70
+
71
+ - `open()` — opens the database, runs migrations, enables WAL mode
72
+ - `createSession(opts)` — inserts a session row, returns typed Session object
73
+ - `getSession(id)` — retrieves session with metadata
74
+ - `listSessions(filter?)` — queries sessions with optional project/date/status filters
75
+ - `updateSession(id, patch)` — partial update with automatic `updated_at`
76
+ - `archiveSession(id)` — sets `archived_at` timestamp
77
+ - `addMessage(sessionId, message)` — inserts message and its parts in a transaction
78
+ - `getMessages(sessionId, opts?)` — retrieves messages with parts, supports pagination
79
+ - `deleteSession(id)` — hard delete with cascading part/message removal
80
+
81
+ ### Migration System
82
+
83
+ On first open, the database runs a migration check:
84
+ 1. Read `user_version` pragma from SQLite
85
+ 2. If version < current, apply sequential migration scripts
86
+ 3. Migration 0→1: create sessions, messages, parts tables with indices
87
+ 4. Future migrations increment the version number
88
+
89
+ ### JSON Migration Path
90
+
91
+ When `~/.mia-code-sessions.json` exists and the database is empty:
92
+ 1. Read all sessions from JSON
93
+ 2. Insert each as a session row (mapping startedAt→created_at, projectRoot→directory)
94
+ 3. Verify row count matches
95
+ 4. Rename JSON file to `.mia-code-sessions.json.migrated`
96
+ 5. Log migration summary to structured log
97
+
98
+ ### Performance Indices
99
+
100
+ - `idx_sessions_project` on sessions(project_id)
101
+ - `idx_sessions_directory` on sessions(directory)
102
+ - `idx_sessions_created` on sessions(created_at)
103
+ - `idx_messages_session` on messages(session_id, created_at)
104
+ - `idx_parts_message` on parts(message_id, index)
105
+
106
+ ## Supporting Structures
107
+
108
+ - **Instance State (RISE-003)** scopes database connections per project context
109
+ - **Structured Logging (RISE-007)** traces all database operations for debugging
110
+ - **Zod Schema Validation (RISE-005)** validates data before insertion
111
+ - **Named Error System (RISE-006)** provides typed errors for database failures (MigrationError, CorruptionError, ConcurrencyError)
112
+
113
+ ## Creative Advancement Scenarios
114
+
115
+ **Scenario 1 — Seamless Migration:**
116
+ A developer upgrades mia-code. On first launch, the migration detects 47 sessions in the JSON file. All 47 are imported into SQLite in under a second. The JSON file is renamed. The developer notices nothing except a log line: "Migrated 47 sessions from JSON to SQLite."
117
+
118
+ **Scenario 2 — Concurrent Access:**
119
+ Two terminal tabs run mia-code in the same project. Both create sessions and add messages simultaneously. SQLite's WAL mode handles concurrent writes without corruption. Neither instance blocks the other.
120
+
121
+ **Scenario 3 — Query Power:**
122
+ A developer runs `/sessions --project myapp --since 2025-01-01`. The query hits the `idx_sessions_project` and `idx_sessions_created` indices, returning 12 sessions in milliseconds without loading the entire dataset.
123
+
124
+ **Scenario 4 — Crash Recovery:**
125
+ The process is killed mid-message-write. On restart, the database is intact — the incomplete transaction was rolled back by SQLite. No data corruption, no manual repair needed.