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,115 @@
1
+ # RISE-073: Plugin Auto-Install
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/073-plugin-auto-install.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ Plugin adoption becomes frictionless — a developer adds a plugin name to their config and mia-code handles the rest. No manual `npm install`, no version hunting, no PATH wrangling. The gap between "I want this plugin" and "the plugin is running" collapses to a single config line and one startup cycle.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no plugin system, so no installation mechanism exists
14
+ - Users manually install npm packages for any external dependency
15
+ - No lock file tracks what was installed or at what version
16
+ - No auto-resolution of missing packages — failures are opaque ("MODULE_NOT_FOUND")
17
+ - Different package managers (npm, pnpm, bun) are in use across projects with no detection
18
+ - No offline fallback — network failures during install block startup entirely
19
+
20
+ **Desired State:**
21
+ - Config references a plugin by name; mia-code resolves, installs, and loads it automatically
22
+ - Version pinning via semver ranges (`"my-plugin@^2.0.0"`) gives control without manual management
23
+ - Installation uses the detected package manager or falls back to npm
24
+ - A lock file (`.mia-code/plugin-lock.json`) records exact installed versions for reproducibility
25
+ - Offline mode gracefully degrades — uses cached installations, skips missing plugins
26
+ - User sees clear feedback: "Installing plugin my-plugin@2.1.0..." with progress
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ A developer adds `"plugin": ["mia-code-plugin-terraform@^1.0.0"]` to their `mia-code.json`. On next startup, mia-code checks `~/.mia-code/plugins/node_modules/` for the package. Not found — mia-code runs `npm install mia-code-plugin-terraform@^1.0.0` into that directory, displays progress, records the resolved version in the lock file, and loads the plugin. Next startup: package found in cache, version satisfies range, skip install, load directly.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Resolution Process
35
+
36
+ For each entry in the `plugin` config array:
37
+
38
+ 1. **Classify** — determine if the entry is a local path (starts with `./` or `/`), a built-in name, or an NPM package reference.
39
+ 2. **Local paths** — resolve relative to project root. No installation needed. Skip to load.
40
+ 3. **Built-in names** — resolve to internal module. No installation needed. Skip to load.
41
+ 4. **NPM packages** — proceed to installation check.
42
+
43
+ ### Installation Check
44
+
45
+ For NPM package references:
46
+
47
+ 1. **Parse** — extract package name and optional version range from the entry (e.g., `"my-plugin@^2.0.0"` → name: `my-plugin`, range: `^2.0.0`).
48
+ 2. **Check lock file** — read `.mia-code/plugin-lock.json`. If package exists with a version satisfying the range, check filesystem.
49
+ 3. **Check filesystem** — look for the package in `~/.mia-code/plugins/node_modules/{name}/`. Verify `package.json` version matches lock file.
50
+ 4. **If found and valid** — skip installation, proceed to load.
51
+ 5. **If not found or outdated** — proceed to installation.
52
+
53
+ ### Installation
54
+
55
+ 1. **Detect package manager** — check for `bun.lockb` (bun), `pnpm-lock.yaml` (pnpm), or default to npm.
56
+ 2. **Execute install** — run `{pm} install {name}@{version}` with `cwd` set to `~/.mia-code/plugins/`.
57
+ 3. **Timeout** — 30-second limit. If exceeded, log warning and skip plugin.
58
+ 4. **Retry** — on network failure, retry up to 3 times with exponential backoff (1s, 2s, 4s).
59
+ 5. **Update lock file** — record `{name: version}` in `.mia-code/plugin-lock.json`.
60
+ 6. **Notify user** — print "✓ Installed plugin my-plugin@2.1.0" on success.
61
+
62
+ ### Lock File Format
63
+
64
+ ```json
65
+ {
66
+ "version": 1,
67
+ "plugins": {
68
+ "mia-code-plugin-terraform": {
69
+ "version": "1.2.3",
70
+ "resolved": "https://registry.npmjs.org/mia-code-plugin-terraform/-/...",
71
+ "installedAt": "2025-02-17T12:00:00Z"
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### Install Location
78
+
79
+ Plugins install into `~/.mia-code/plugins/node_modules/` — a global location shared across projects. This avoids polluting project `node_modules/` and allows plugin reuse. A `package.json` is auto-created in `~/.mia-code/plugins/` if not present.
80
+
81
+ ### Offline Mode
82
+
83
+ When `--offline` flag is set or network is unavailable:
84
+ - Skip all auto-install attempts
85
+ - Use only plugins already present in cache
86
+ - Log which plugins were skipped: "Plugin my-plugin not cached, skipping (offline mode)"
87
+ - Never fail startup due to missing optional plugins
88
+
89
+ ### Version Updates
90
+
91
+ When config specifies a range and a newer version exists:
92
+ - Auto-update is **not** performed by default — stability over freshness
93
+ - `mia-code plugin update` command explicitly checks and updates all plugins
94
+ - Lock file prevents accidental upgrades between runs
95
+
96
+ ## Supporting Structures
97
+
98
+ - **Plugin Architecture (RISE-071)** defines the plugin interface that installed packages must conform to
99
+ - **Multi-Level Config (RISE-064)** provides the `plugin` array from merged configuration
100
+ - **Managed Config Directory (RISE-070)** manages `~/.mia-code/` where plugins are installed
101
+ - **Structured Logging (RISE-007)** records installation attempts, successes, and failures
102
+
103
+ ## Creative Advancement Scenarios
104
+
105
+ **Scenario 1 — Zero-Friction Adoption:**
106
+ A developer reads about `mia-code-plugin-eslint` in a blog post. They add one line to their config. Next time they run mia-code, the plugin auto-installs in 3 seconds and the agent gains ESLint integration. No terminal commands, no README hunting.
107
+
108
+ **Scenario 2 — Team-Wide Plugin Standardization:**
109
+ A team commits `.mia-code.json` with `"plugin": ["mia-code-plugin-jira@^1.0.0", "mia-code-plugin-datadog@^2.0.0"]`. Every developer who clones the repo gets the same plugins auto-installed on first run. The lock file ensures version consistency.
110
+
111
+ **Scenario 3 — Offline Development:**
112
+ A developer works on an airplane. mia-code starts with `--offline`. Plugins installed from previous sessions load normally from cache. A newly added plugin in config is skipped with a clear message. The developer continues working with reduced but functional capabilities.
113
+
114
+ **Scenario 4 — Install Failure Recovery:**
115
+ NPM registry is temporarily down. mia-code attempts to install a new plugin, times out after 30 seconds, retries twice, then logs: "Failed to install my-plugin: network timeout. Plugin disabled for this session." The agent starts normally with all other plugins active. Next session, auto-install succeeds.
@@ -0,0 +1,133 @@
1
+ # RISE-074: Permission System
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/074-permission-system.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ Every agent action passes through a permission gate that balances autonomy with safety. Developers define granular rules — allow file reads everywhere, deny writes to lock files, ask before running shell commands — creating a trust boundary that lets the agent work freely within defined limits while requiring human approval at the edges.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no formal permission system — the agent can read, write, and execute anything
14
+ - Users must trust the agent entirely or not use it at all — no middle ground
15
+ - No way to restrict the agent from modifying sensitive files (`.env`, `package-lock.json`, production configs)
16
+ - Shell command execution has no guardrails — the agent can run destructive commands
17
+ - Different projects have different security requirements but share the same unrestricted agent
18
+ - Session-level permission grants ("always allow" / "never allow") are not tracked
19
+
20
+ **Desired State:**
21
+ - A rules-based permission model evaluates every agent action before execution
22
+ - Rules specify permission (tool/action), optional file pattern (glob), and action (allow/deny/ask)
23
+ - Rules are evaluated in order — first match wins, no match defaults to "ask"
24
+ - Permissions layer across sources: built-in defaults → global config → project config → session overrides
25
+ - Developers can lock down sensitive paths while leaving routine operations unrestricted
26
+ - Session-scoped overrides accumulate as users respond to "ask" prompts with "always" or "never"
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ A project's `.mia-code.json` contains permission rules that allow all file reads, deny writes to `*.lock` files, and ask before any bash execution. The agent reads files freely, is blocked from modifying lock files with a clear message, and prompts the user before running shell commands. The user responds "always allow" to bash — this override persists for the session.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Permission Rule Model
35
+
36
+ Each rule is an object with three fields:
37
+
38
+ ```typescript
39
+ interface PermissionRule {
40
+ permission: string; // tool or action identifier, or "*" for all
41
+ pattern?: string; // glob pattern for file paths (optional)
42
+ action: "allow" | "deny" | "ask";
43
+ }
44
+ ```
45
+
46
+ ### Covered Permissions
47
+
48
+ The system recognizes these permission identifiers:
49
+
50
+ - `read` — file reading operations
51
+ - `write` — file creation or full overwrite
52
+ - `edit` — file modification (partial edits)
53
+ - `bash` — shell command execution
54
+ - `question` — asking the user a question
55
+ - `external_directory` — accessing files outside the project root
56
+ - `plan_enter` — entering plan mode
57
+ - `plan_exit` — exiting plan mode
58
+ - `todo_create`, `todo_update`, `todo_delete` — todo operations
59
+ - Any tool ID (e.g., `grep`, `glob`, `web_fetch`) — tool-specific permissions
60
+
61
+ ### Rule Evaluation
62
+
63
+ When the agent attempts an action:
64
+
65
+ 1. Determine the permission identifier (e.g., `write` for file creation).
66
+ 2. Determine the target path if applicable (e.g., `src/auth.ts`).
67
+ 3. Iterate through the merged rules array in order.
68
+ 4. For each rule: if `permission` matches (exact or wildcard) AND `pattern` matches the path (or no pattern specified), return the rule's `action`.
69
+ 5. If no rule matches, default to `"ask"`.
70
+
71
+ ### Configuration
72
+
73
+ Rules are defined in `mia-code.json` at any config level:
74
+
75
+ ```json
76
+ {
77
+ "permissions": [
78
+ {"permission": "read", "action": "allow"},
79
+ {"permission": "write", "pattern": "*.lock", "action": "deny"},
80
+ {"permission": "write", "pattern": "*.env*", "action": "deny"},
81
+ {"permission": "bash", "action": "ask"},
82
+ {"permission": "external_directory", "action": "deny"}
83
+ ]
84
+ }
85
+ ```
86
+
87
+ ### Layered Resolution
88
+
89
+ Permissions merge across configuration layers with later layers taking precedence:
90
+
91
+ 1. **Built-in defaults** — sensible base: allow reads, ask for writes and bash
92
+ 2. **Global config** (`~/.mia-code.json`) — user-wide preferences
93
+ 3. **Project config** (`.mia-code.json` in project root) — project-specific restrictions
94
+ 4. **Agent-specific** — agents can have tailored permissions (e.g., a review agent gets read-only)
95
+ 5. **Session overrides** — accumulated from "always"/"never" responses during the session
96
+
97
+ ### Session-Scoped Overrides
98
+
99
+ When the user responds to an "ask" prompt:
100
+ - **"yes"** — allow this specific invocation only
101
+ - **"always"** — add a session-scoped `allow` rule for this permission+pattern
102
+ - **"no"** — deny this specific invocation only
103
+ - **"never"** — add a session-scoped `deny` rule for this permission+pattern
104
+
105
+ Session overrides are prepended to the rules array (checked first) and discarded when the session ends.
106
+
107
+ ### Deny Behavior
108
+
109
+ When a permission is denied:
110
+ - The tool execution is skipped
111
+ - A clear message is returned to the agent: "Permission denied: cannot write to package-lock.json (matched rule: deny writes to *.lock)"
112
+ - The agent can acknowledge and proceed with alternative approaches
113
+
114
+ ## Supporting Structures
115
+
116
+ - **Plugin Hooks (RISE-072)** exposes `permission.ask` hook for plugins to participate in permission decisions
117
+ - **Multi-Level Config (RISE-064)** provides the layered configuration that permissions merge across
118
+ - **Agent Definition (RISE-010)** allows per-agent permission profiles
119
+ - **Permission Prompts (RISE-060)** handles the TUI rendering of ask/allow/deny prompts
120
+
121
+ ## Creative Advancement Scenarios
122
+
123
+ **Scenario 1 — Read-Only Review Agent:**
124
+ A code review agent is configured with `{"permission": "*", "action": "deny"}` followed by `{"permission": "read", "action": "allow"}` and `{"permission": "grep", "action": "allow"}`. The agent can explore the codebase but cannot modify anything. Perfect for automated review workflows where the agent should only observe and report.
125
+
126
+ **Scenario 2 — Locked Production Configs:**
127
+ A project's `.mia-code.json` denies writes to `*.env*`, `docker-compose.yml`, and `terraform/*.tf`. The agent freely refactors application code but cannot touch infrastructure or secrets. A developer working on Terraform explicitly overrides with "always allow" when needed.
128
+
129
+ **Scenario 3 — Progressive Trust Building:**
130
+ A new user starts with default permissions (ask for everything). Over several sessions, they respond "always" to file reads, writes to `src/`, and test execution. Their comfort grows. Eventually they configure explicit allow rules in their global config, keeping "ask" only for bash commands and external directory access.
131
+
132
+ **Scenario 4 — Team Security Policy:**
133
+ A team commits strict permissions in their project `.mia-code.json`: no bash commands allowed, no external directory access, writes only to `src/` and `tests/`. Individual developers can add session overrides for their workflows, but the base policy ensures the agent stays within safe boundaries for everyone.
@@ -0,0 +1,126 @@
1
+ # RISE-075: Git Worktree Management
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/075-git-worktree-management.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ Agents gain the ability to work in isolated sandboxes without touching the developer's working tree. By leveraging git worktrees, mia-code creates parallel workspaces where experimental changes live on their own branches — enabling fearless exploration, parallel investigations, and clean rollback without ever disrupting the main branch or the developer's uncommitted work.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code operates directly on the developer's working directory — all changes are immediately visible and risky
14
+ - The agent's experimental modifications mix with the developer's in-progress work
15
+ - No mechanism exists to isolate speculative changes (e.g., "try refactoring this two different ways")
16
+ - Reverting agent changes requires manual `git checkout` or `git stash`, which may conflict with developer's own changes
17
+ - Parallel investigations are impossible — the agent can only work in one directory state at a time
18
+ - Git awareness is basic — mia-code uses CLI git commands but has no worktree management layer
19
+
20
+ **Desired State:**
21
+ - Agents can create git worktrees for isolated experimentation with a single operation
22
+ - Each worktree gets a uniquely named branch (`mia-code/adjective-noun`) for easy identification
23
+ - Multiple worktrees can coexist, enabling parallel approaches to the same problem
24
+ - Worktree cleanup is complete — removing a worktree also deletes its branch
25
+ - Submodules and project initialization (npm install, etc.) are handled automatically
26
+ - The developer's main working tree is never modified by worktree operations
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ The agent receives a task to "try two different approaches to optimizing the database queries." It creates two worktrees: `mia-code/swift-falcon` and `mia-code/calm-brook`. In each, it applies a different optimization strategy. The developer reviews both, picks the better one, and merges that branch. The other worktree is removed cleanly — branch deleted, directory gone, no traces.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Worktree Operations
35
+
36
+ The worktree module exposes four operations:
37
+
38
+ **Create** — `worktree.create(name?: string)`
39
+ 1. Generate a branch name: `mia-code/{adjective}-{noun}` (or use provided name).
40
+ 2. Verify no existing branch or directory conflicts.
41
+ 3. Run `git worktree add .mia-code/worktrees/{name} -b mia-code/{name}` from the repository root.
42
+ 4. If the project has submodules, run `git submodule update --init --recursive` in the new worktree.
43
+ 5. If start scripts are configured (e.g., `npm install`), execute them in the new worktree.
44
+ 6. Return the worktree path and branch name.
45
+
46
+ **Remove** — `worktree.remove(name: string)`
47
+ 1. Run `git worktree remove .mia-code/worktrees/{name} --force`.
48
+ 2. Delete the branch: `git branch -D mia-code/{name}`.
49
+ 3. Run `git worktree prune` to clean stale references.
50
+
51
+ **Reset** — `worktree.reset(name: string)`
52
+ 1. In the worktree, run `git checkout -- .` and `git clean -fd`.
53
+ 2. Reset to the default branch state: `git reset --hard origin/main` (or detected default branch).
54
+
55
+ **List** — `worktree.list()`
56
+ 1. Run `git worktree list --porcelain`.
57
+ 2. Parse output into structured data: `{name, path, branch, head}[]`.
58
+ 3. Filter to only mia-code-managed worktrees (branch prefix `mia-code/`).
59
+
60
+ ### Worktree Directory Structure
61
+
62
+ ```
63
+ project-root/
64
+ ├── .mia-code/
65
+ │ └── worktrees/
66
+ │ ├── swift-falcon/ ← full working copy
67
+ │ │ ├── src/
68
+ │ │ ├── package.json
69
+ │ │ └── ...
70
+ │ └── calm-brook/ ← another full working copy
71
+ │ ├── src/
72
+ │ ├── package.json
73
+ │ └── ...
74
+ ├── src/ ← developer's main working tree (untouched)
75
+ └── ...
76
+ ```
77
+
78
+ ### Naming Convention
79
+
80
+ Branch names follow the pattern `mia-code/{adjective}-{noun}`:
81
+ - Adjective pool: ~50 positive, memorable adjectives (swift, bright, calm, clear, crisp, deep, fair, keen, kind, lean, mild, neat, pure, rich, sage, warm, wise...)
82
+ - Noun pool: ~50 nature/animal nouns (brook, cedar, crane, dawn, eagle, flame, grove, hawk, jade, lake, maple, oak, peak, ridge, tide, vale, wave, wolf...)
83
+ - Selection: random pairing from each pool
84
+ - Collision handling: if the combination exists (branch or directory), try another random pair up to 10 times, then append a numeric counter
85
+
86
+ ### Start Scripts
87
+
88
+ After worktree creation, mia-code can run initialization commands:
89
+
90
+ ```json
91
+ {
92
+ "worktree": {
93
+ "startScripts": ["npm install", "npm run build"]
94
+ }
95
+ }
96
+ ```
97
+
98
+ These run in the worktree directory, ensuring dependencies are installed and the project is buildable in the new workspace.
99
+
100
+ ### Conflict Avoidance
101
+
102
+ Before creating a worktree:
103
+ - Check `git branch --list mia-code/{name}` — fail if branch exists
104
+ - Check filesystem for `.mia-code/worktrees/{name}/` — fail if directory exists
105
+ - Check `git worktree list` — fail if worktree already registered
106
+
107
+ ## Supporting Structures
108
+
109
+ - **Branch Naming (RISE-079)** defines the adjective-noun naming convention in detail
110
+ - **Snapshot System (RISE-076)** can capture state within worktrees for undo support
111
+ - **Permission System (RISE-074)** governs whether the agent is allowed to create worktrees
112
+ - **Structured Logging (RISE-007)** records worktree lifecycle events
113
+
114
+ ## Creative Advancement Scenarios
115
+
116
+ **Scenario 1 — Parallel Refactoring Strategies:**
117
+ The agent creates two worktrees to try different approaches to a performance issue. In `swift-falcon`, it rewrites the hot path with caching. In `calm-brook`, it parallelizes the computation. Both build and pass tests. The developer compares benchmarks and merges the winner.
118
+
119
+ **Scenario 2 — Safe Experimentation:**
120
+ A developer asks "can you try upgrading React to v19?" The agent creates a worktree, performs the upgrade, fixes breaking changes, and runs tests — all without touching the developer's working tree. If tests fail, the worktree is removed and the developer's code is untouched.
121
+
122
+ **Scenario 3 — Code Review Isolation:**
123
+ The agent creates a worktree to apply suggested changes from a PR review. The reviewer can inspect the worktree to verify the changes look correct before the PR author applies them to their branch.
124
+
125
+ **Scenario 4 — Cleanup After Exploration:**
126
+ A developer has three old worktrees from previous sessions. They run `worktree.list()` and see `swift-falcon` (3 days old), `calm-brook` (1 week old), `deep-ridge` (2 weeks old). They remove the stale ones — branches are deleted, directories cleaned, git refs pruned.
@@ -0,0 +1,124 @@
1
+ # RISE-076: Snapshot System
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/076-snapshot-system.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ Every file-modifying action the agent takes is preceded by an invisible checkpoint. These git-based snapshots create a complete timeline of the workspace state throughout a session — enabling undo, diff, audit, and revert without relying on the project's own git history. The developer gains the confidence to let the agent work freely, knowing any change can be precisely unwound.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no formal snapshot system — file modifications are permanent once written
14
+ - Undoing agent changes requires manual `git checkout` or `git stash`, mixing agent and developer changes
15
+ - No record exists of what the workspace looked like before a specific tool call
16
+ - The project's git history is the only recovery mechanism, but uncommitted changes are invisible to it
17
+ - Multi-step agent operations have no intermediate save points — failure mid-sequence leaves partial changes
18
+ - No audit trail captures the exact sequence of file modifications within a session
19
+
20
+ **Desired State:**
21
+ - Before every file-modifying operation, a snapshot captures the current state of all tracked files
22
+ - Snapshots are stored in a hidden git repository separate from the project's git, avoiding history pollution
23
+ - Each snapshot records the tree hash, affected files, timestamp, and associated message/tool IDs
24
+ - Snapshots enable undo (revert last change), diff (compare states), and session revert (go back to start)
25
+ - Binary and large files are handled gracefully — detected and excluded from snapshots
26
+ - Old snapshots are pruned automatically to prevent unbounded storage growth
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ The agent edits three files during a session. Before each edit, a snapshot is silently captured. The developer says "undo that last change." mia-code restores the files to the snapshot taken before the third edit. The developer says "show me what changed since the session started." mia-code diffs snapshot #0 (session start) against the current state and displays a unified diff of all three files.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Snapshot Capture
35
+
36
+ Before any file-modifying operation (write, edit, bash that may modify files), the snapshot system:
37
+
38
+ 1. **Stage tracked files** — run `git add -A` in the snapshot repository to capture current state.
39
+ 2. **Write tree** — run `git write-tree` to create a tree object representing the complete directory state.
40
+ 3. **Store metadata** — record the tree hash with associated context:
41
+
42
+ ```typescript
43
+ interface Snapshot {
44
+ hash: string; // git tree hash
45
+ files: string[]; // list of files in the tree
46
+ timestamp: number; // Unix timestamp
47
+ messageId: string; // associated session message
48
+ toolCallId: string; // specific tool invocation that triggered this
49
+ }
50
+ ```
51
+
52
+ 4. **Index** — append snapshot metadata to the session's snapshot index for fast lookup.
53
+
54
+ ### Snapshot Repository
55
+
56
+ Snapshots use a hidden git repository at `.mia-code/snapshots/`:
57
+
58
+ ```
59
+ .mia-code/
60
+ └── snapshots/
61
+ ├── .git/ ← bare-ish git repo for object storage
62
+ └── index.json ← snapshot metadata index
63
+ ```
64
+
65
+ This repository is separate from the project's git. It uses git's object storage for efficient deduplication (unchanged files share objects across snapshots) without affecting the project's history, branches, or remote.
66
+
67
+ ### Automatic Snapshot Triggers
68
+
69
+ Snapshots are captured automatically before:
70
+ - `file_write` — creating or overwriting a file
71
+ - `file_edit` — modifying part of a file
72
+ - `bash` — executing shell commands (which may modify files unpredictably)
73
+ - `file_delete` — removing a file
74
+
75
+ The snapshot captures the state **before** the operation, so restoring it undoes that specific change.
76
+
77
+ ### Binary File Handling
78
+
79
+ Before including a file in a snapshot:
80
+ - Check the first 8KB for null bytes — if found, treat as binary
81
+ - Files matching common binary patterns (`*.png`, `*.jpg`, `*.wasm`, `*.bin`) are excluded
82
+ - Excluded files are noted in the snapshot metadata but not stored
83
+
84
+ ### Large File Handling
85
+
86
+ - Files exceeding 1MB are flagged but still included (git handles large files efficiently)
87
+ - Extended path support handles deeply nested directories (git's default 4096-char limit)
88
+ - Symlinks are stored as symlinks, not dereferenced
89
+
90
+ ### Snapshot Cleanup
91
+
92
+ To prevent unbounded growth:
93
+ - Keep the last 100 snapshots per session
94
+ - On session end, prune unreferenced git objects: `git prune` and `git gc`
95
+ - Snapshots older than 30 days are eligible for removal
96
+ - The session-start snapshot is always preserved (never pruned)
97
+
98
+ ### Session Integration
99
+
100
+ Each session tracks its snapshots:
101
+ - Session start triggers an initial snapshot (baseline state)
102
+ - The snapshot index maps message IDs to snapshot hashes for efficient lookup
103
+ - Session metadata includes snapshot count and total storage size
104
+
105
+ ## Supporting Structures
106
+
107
+ - **Snapshot Diff (RISE-077)** compares snapshots to generate human-readable diffs
108
+ - **Snapshot Restore (RISE-078)** uses snapshots to revert files to previous states
109
+ - **Session Persistence (RISE-018)** stores snapshot references alongside session data
110
+ - **Structured Logging (RISE-007)** records snapshot capture events for debugging
111
+
112
+ ## Creative Advancement Scenarios
113
+
114
+ **Scenario 1 — Undo Last Edit:**
115
+ The agent modifies `src/auth.ts` but introduces a bug. The developer says "undo." mia-code identifies the most recent snapshot (taken before the edit), restores `src/auth.ts` to its previous state, and confirms: "Restored src/auth.ts to state before file_edit."
116
+
117
+ **Scenario 2 — Session Impact Review:**
118
+ After a long session with 20+ tool calls, the developer asks "what did you change?" mia-code diffs the session-start snapshot against the current state, producing a complete summary: 5 files modified, 2 created, 120 lines added, 45 deleted.
119
+
120
+ **Scenario 3 — Mid-Session Recovery:**
121
+ The agent runs a bash command that unexpectedly modifies several config files. The developer notices and says "revert to before that bash command." mia-code finds the snapshot taken before the bash execution and restores all affected files.
122
+
123
+ **Scenario 4 — Audit Trail:**
124
+ A developer reviews what happened during an overnight agent session. The snapshot index shows 15 snapshots with timestamps and associated tool calls. They can step through the timeline, diffing adjacent snapshots to see exactly what changed at each step.
@@ -0,0 +1,117 @@
1
+ # RISE-077: Snapshot Diff
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/077-snapshot-diff.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ Any two snapshots become comparable — revealing exactly what changed between two points in time. Developers see precise, syntax-highlighted diffs that answer "what did the agent do?" at any granularity: between individual tool calls, across message groups, or over an entire session. The workspace timeline becomes fully transparent.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no snapshot system, so no diff between workspace states is possible
14
+ - The only diff available is `git diff` against the project's last commit, which includes developer changes too
15
+ - No way to isolate "what the agent changed" from "what the developer changed"
16
+ - No per-tool-call change tracking — understanding the impact of a specific operation requires manual inspection
17
+ - Session summaries are narrative (LLM-generated text), not precise (actual file diffs)
18
+ - No statistics on agent impact — lines added, files modified, scope of changes
19
+
20
+ **Desired State:**
21
+ - Any two snapshot hashes can be compared to produce a structured diff
22
+ - Diffs include file-level status (added, deleted, modified), line-level changes (additions, deletions), and statistics
23
+ - Display formatting includes syntax highlighting, color-coded additions/deletions, and clear file headers
24
+ - Session-level diffs (start → current) give a complete picture of agent impact
25
+ - Tool-call-level diffs (before → after) show exactly what one operation changed
26
+ - Diffs can be exported as patches for application elsewhere
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ The developer asks "what changed in the last tool call?" mia-code compares the snapshot before the tool call with the snapshot after, producing a colored diff showing 2 files modified: `src/api.ts` (+15 lines, -3 lines) and `tests/api.test.ts` (+22 lines). The developer asks "show me everything since session start" — mia-code diffs snapshot #0 against current state, showing 5 files changed with aggregate statistics.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Diff Operations
35
+
36
+ Two primary diff operations:
37
+
38
+ **Text Diff** — `diff(hashA: string, hashB: string): string`
39
+ - Uses `git diff-tree` to compare two tree hashes from the snapshot repository
40
+ - Returns unified diff format text with context lines
41
+ - Suitable for display in terminal or piping to tools
42
+
43
+ **Structured Diff** — `diffFull(hashA: string, hashB: string): FileDiff[]`
44
+ - Parses the raw diff into structured objects per file
45
+ - Each object contains before/after content, change counts, and status
46
+
47
+ ### FileDiff Model
48
+
49
+ ```typescript
50
+ interface FileDiff {
51
+ file: string; // relative file path
52
+ before: string; // full file content before
53
+ after: string; // full file content after
54
+ additions: number; // lines added
55
+ deletions: number; // lines deleted
56
+ status: "added" | "deleted" | "modified"; // file-level change type
57
+ hunks: Hunk[]; // grouped changes
58
+ }
59
+
60
+ interface Hunk {
61
+ startBefore: number; // starting line in before-version
62
+ startAfter: number; // starting line in after-version
63
+ lines: DiffLine[]; // individual line changes
64
+ }
65
+
66
+ interface DiffLine {
67
+ type: "add" | "delete" | "context";
68
+ content: string;
69
+ lineNumber: number;
70
+ }
71
+ ```
72
+
73
+ ### Display Formatting
74
+
75
+ Diffs are rendered with terminal formatting:
76
+ - File headers in bold with status badge: `■ src/api.ts [modified]`
77
+ - Added lines in green with `+` prefix
78
+ - Deleted lines in red with `-` prefix
79
+ - Context lines in dim gray
80
+ - Hunk headers showing line ranges: `@@ -10,5 +10,8 @@`
81
+ - Syntax highlighting applied to diff content based on file extension
82
+ - Statistics summary at the bottom: "3 files changed, 45 insertions(+), 12 deletions(-)"
83
+
84
+ ### Common Diff Scenarios
85
+
86
+ - **Tool call diff:** compare snapshot before and after a specific tool execution
87
+ - **Session diff:** compare session-start snapshot with current state for complete session impact
88
+ - **Message diff:** compare state before a message's first tool call with state after its last tool call
89
+
90
+ ### Patch Generation
91
+
92
+ `toPatch(diffs: FileDiff[]): string` generates standard unified diff format applicable with `git apply` or `patch -p1` — useful for sharing agent changes as portable patches.
93
+
94
+ ### Statistics
95
+
96
+ Aggregate `DiffStats` computed from `FileDiff[]`: `filesChanged`, `filesAdded`, `filesDeleted`, `filesModified`, `totalAdditions`, `totalDeletions`, and `estimatedLOCImpact` (additions minus deletions).
97
+
98
+ ## Supporting Structures
99
+
100
+ - **Snapshot System (RISE-076)** provides the tree hashes that diff operations compare
101
+ - **Snapshot Restore (RISE-078)** uses diff display to show what a restore operation will change
102
+ - **Syntax Highlighting (RISE-062)** applies language-aware coloring to diff content
103
+ - **Streaming Display (RISE-059)** renders large diffs incrementally in the TUI
104
+
105
+ ## Creative Advancement Scenarios
106
+
107
+ **Scenario 1 — Tool Call Inspection:**
108
+ The agent ran `bash npm run build` and the developer suspects it modified generated files. They ask "what did that bash command change?" mia-code diffs the pre-bash snapshot against post-bash state, revealing that `dist/bundle.js` was regenerated (+500 lines changed) — expected behavior, no concern.
109
+
110
+ **Scenario 2 — Session Summary Report:**
111
+ At session end, the developer asks for a summary. mia-code generates a session diff: 8 files modified across `src/` and `tests/`, 234 lines added, 67 deleted. The developer reviews the complete diff to verify all changes before committing.
112
+
113
+ **Scenario 3 — Selective Understanding:**
114
+ The agent made 12 tool calls across 5 messages. The developer wants to understand what message #3 did specifically. mia-code diffs the snapshots bracketing message #3's tool calls, showing only the 2 files that message touched.
115
+
116
+ **Scenario 4 — Patch Export for Review:**
117
+ The developer asks the agent to generate a patch of all session changes. mia-code produces a unified diff file that the developer attaches to a PR or sends to a colleague for review — portable, standard format, applicable with `git apply`.