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,151 @@
1
+ # RISE-011: Agent Permission Rulesets
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/011-agent-permission-rulesets.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code enables developers to define precise permission boundaries for each agent, controlling which tools, operations, and file paths an agent may access. Permissions are not binary on/off switches but a layered ruleset evaluated in order — the first matching rule wins. This creates a composable, readable, auditable security model that makes agents safe by design. A plan agent that cannot edit files is not merely advised against editing — it is structurally prevented from doing so.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no permission model — every operation is implicitly allowed for every interaction
14
+ - The Gemini and Claude CLI tools have their own internal safety checks, but mia-code adds no layer of control
15
+ - There is no way to restrict file access by path — an agent queried about `README.md` could also read `.env` files containing secrets
16
+ - Bash execution has no confirmation gate — commands run immediately when the engine requests them
17
+ - Write operations have no scope limitation — an agent asked to edit one file could modify any file
18
+ - There is no audit trail of which permissions were exercised during a session
19
+
20
+ **Desired State:**
21
+ - Each agent carries a permission ruleset — an ordered array of rules evaluated against every tool invocation
22
+ - Rules specify a permission name (tool/operation), an optional file-path pattern, and an action (allow/deny/ask)
23
+ - Evaluation is first-match-wins: the first rule whose permission and pattern match the request determines the outcome
24
+ - A wildcard `*` matches any permission name; glob patterns scope file paths
25
+ - The "ask" action pauses execution and prompts the user for confirmation before proceeding
26
+ - Rulesets are layered: global defaults → built-in agent defaults → user config overrides
27
+ - Every permission check is logged for auditability
28
+
29
+ ## Desired Outcome Definition
30
+
31
+ Every tool invocation in mia-code passes through a permission check against the active agent's ruleset. The check evaluates rules in order, finds the first match, and enforces the action. Denied operations return an error to the agent. Asked operations pause for user confirmation. Allowed operations proceed silently.
32
+
33
+ ## Natural Language Functional Description
34
+
35
+ ### Rule Structure
36
+
37
+ A single permission rule is an object with three fields:
38
+
39
+ ```typescript
40
+ interface PermissionRule {
41
+ permission: string; // tool or operation name, or "*" for wildcard
42
+ pattern?: string; // optional glob pattern for file-path scoping
43
+ action: "allow" | "deny" | "ask";
44
+ }
45
+ ```
46
+
47
+ ### Permission Names
48
+
49
+ The following permission names correspond to mia-code tool operations:
50
+
51
+ - `read` — reading file contents, viewing directories
52
+ - `write` — creating new files
53
+ - `edit` — modifying existing files
54
+ - `bash` — executing shell commands
55
+ - `glob` — searching for files by pattern
56
+ - `grep` — searching file contents
57
+ - `fetch` — making HTTP requests
58
+ - `*` — wildcard, matches any permission not explicitly listed
59
+
60
+ ### Pattern Field
61
+
62
+ The optional `pattern` field is a glob string matched against the file path argument of the operation. When present, the rule only applies if both the permission name and the file path match. When absent, the rule applies to all invocations of that permission regardless of path.
63
+
64
+ Examples:
65
+ - `{"permission": "read", "pattern": "*.env", "action": "deny"}` — deny reading any `.env` file
66
+ - `{"permission": "read", "pattern": "src/**/*.ts", "action": "allow"}` — allow reading TypeScript files under `src/`
67
+ - `{"permission": "edit", "pattern": "package.json", "action": "ask"}` — require confirmation before editing `package.json`
68
+
69
+ ### Evaluation Order
70
+
71
+ Rules are evaluated top-to-bottom. The first rule whose `permission` matches the requested operation (or is `*`) and whose `pattern` matches the file path (or is absent) determines the outcome. If no rule matches, the default action is "deny" — fail closed.
72
+
73
+ ### Built-in Agent Rulesets
74
+
75
+ **build** (full access):
76
+ ```json
77
+ [
78
+ {"permission": "*", "action": "allow"}
79
+ ]
80
+ ```
81
+
82
+ **plan** (read-only analysis):
83
+ ```json
84
+ [
85
+ {"permission": "write", "action": "deny"},
86
+ {"permission": "edit", "action": "deny"},
87
+ {"permission": "bash", "action": "ask"},
88
+ {"permission": "read", "action": "allow"},
89
+ {"permission": "glob", "action": "allow"},
90
+ {"permission": "grep", "action": "allow"},
91
+ {"permission": "*", "action": "deny"}
92
+ ]
93
+ ```
94
+
95
+ **explore** (fast search): read/glob/grep allowed, everything else denied.
96
+
97
+ **general** (subagent, controlled access): read/glob/grep allowed, bash/edit/write require confirmation, everything else denied.
98
+
99
+ ### Layered Precedence
100
+
101
+ Permission rulesets merge across three layers:
102
+
103
+ 1. **Global defaults**: The fail-closed `[{"permission": "*", "action": "deny"}]` baseline
104
+ 2. **Built-in agent defaults**: The rulesets defined above for each built-in agent
105
+ 3. **User config overrides**: Rules from `mia-code.json` agent definitions (see RISE-010)
106
+
107
+ User rules are prepended to the agent's default ruleset. Because evaluation is first-match-wins, user rules take precedence over defaults. This means a user can relax or tighten any built-in agent's permissions:
108
+
109
+ ```json
110
+ {"agent": {"plan": {"permissions": [
111
+ {"permission": "bash", "action": "allow"}
112
+ ]}}}
113
+ ```
114
+ This prepends an "allow bash" rule before the plan agent's default "ask bash" rule, effectively removing the confirmation requirement.
115
+
116
+ ### The "ask" Action
117
+
118
+ When a rule evaluates to "ask", mia-code pauses agent execution and presents the user with:
119
+ - The tool name and parameters
120
+ - The file path (if applicable)
121
+ - The agent requesting the operation
122
+ - Options: Allow Once / Allow for Session / Deny
123
+
124
+ "Allow for Session" adds a temporary "allow" rule for that specific operation and pattern, avoiding repeated prompts for the same action.
125
+
126
+ ### Audit Logging
127
+
128
+ Every permission check emits a structured log entry (see RISE-007):
129
+ - Timestamp, agent name, permission name, file path, matched rule index, action taken
130
+ - Denied and asked operations are logged at `warn` level; allowed at `debug`
131
+
132
+ ## Supporting Structures
133
+
134
+ - **Multi-Agent System (RISE-009)** defines the agent model that rulesets protect
135
+ - **Agent Definition Config (RISE-010)** is where user permission overrides are specified
136
+ - **Structured Logging (RISE-007)** provides the audit trail for permission decisions
137
+ - **Named Error System (RISE-006)** generates typed errors for denied operations
138
+
139
+ ## Creative Advancement Scenarios
140
+
141
+ **Scenario 1 — Secret Protection:**
142
+ A `.env` file contains API keys. The global config adds `{"permission": "read", "pattern": "*.env", "action": "deny"}` to all agents. No agent can read environment files — even if explicitly asked. The developer must manually paste relevant values into the conversation.
143
+
144
+ **Scenario 2 — Progressive Trust:**
145
+ A new developer starts with the plan agent (read-only). As they gain confidence, they switch to build but keep bash on "ask". Over weeks, they adjust their config to "allow" bash for specific directories. The permission system grows with the developer's trust level.
146
+
147
+ **Scenario 3 — CI Pipeline Safety:**
148
+ In a CI environment, mia-code runs with a config that denies all write/edit operations outside the `dist/` directory. The agent can build and test but cannot modify source code. This prevents accidental source mutations during automated runs.
149
+
150
+ **Scenario 4 — Selective File Access:**
151
+ A monorepo contains a `secrets/` directory. The team config adds `{"permission": "read", "pattern": "secrets/**", "action": "deny"}` at the top of every agent's ruleset. Agents can explore the entire codebase except the secrets directory, which remains invisible to them.
@@ -0,0 +1,141 @@
1
+ # RISE-012: Agent Prompt Templates
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/012-agent-prompt-templates.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code enables developers to shape each agent's personality, capabilities, and behavioral constraints through customizable system prompt templates. Templates are not static strings — they are living documents that incorporate runtime context: available tools, active permissions, project structure, and loaded skills. The prompt template system extends mia-code's existing UNIFIER_SYSTEM_PROMPT pattern into a generalized framework where every agent speaks with a crafted voice, informed by its operational reality.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has a single UNIFIER_SYSTEM_PROMPT defined in source code — the dual 🧠 Mia / 🌸 Miette interpretation layer
14
+ - This prompt is static and hardcoded; changing it requires modifying TypeScript source
15
+ - The underlying engines (Gemini CLI, Claude CLI) have their own system prompts that mia-code does not control or extend
16
+ - There is no mechanism to inject project-specific context, tool descriptions, or permission summaries into the system prompt
17
+ - Different agents would need different prompts, but there is no template system to support this
18
+ - Users who want custom behavior must fork the codebase or manipulate environment variables
19
+
20
+ **Desired State:**
21
+ - Each agent has a default system prompt template stored as a text file alongside its definition
22
+ - Templates support variable interpolation using `{{variable}}` syntax for runtime context injection
23
+ - The system assembles the final prompt at session start by combining: base template + tool descriptions + active permissions + skill instructions + user customizations
24
+ - Users can override any agent's prompt via configuration (see RISE-010)
25
+ - The existing UNIFIER_SYSTEM_PROMPT becomes the template for the unifier layer, applied after each agent's primary prompt
26
+ - Templates are readable, editable, and versionable as plain text
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ Every agent in mia-code operates with a system prompt assembled from a template, runtime variables, and optional user overrides. The assembled prompt accurately describes the agent's available tools, active permissions, project context, and behavioral guidelines. Users can customize any agent's prompt without modifying source code.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Template Syntax
35
+
36
+ Templates are plain text (Markdown-compatible) with `{{variable}}` interpolation:
37
+
38
+ ```markdown
39
+ You are {{agent_name}}, a specialized coding agent.
40
+
41
+ ## Available Tools
42
+ {{tools}}
43
+
44
+ ## Permissions
45
+ {{permissions}}
46
+
47
+ ## Project Context
48
+ {{project}}
49
+
50
+ ## Skills
51
+ {{skills}}
52
+
53
+ ## Guidelines
54
+ {{guidelines}}
55
+ ```
56
+
57
+ Variables are replaced at session start with runtime values. Unknown variables are replaced with empty strings and logged as warnings.
58
+
59
+ ### Built-in Variables
60
+
61
+ | Variable | Description |
62
+ |----------|-------------|
63
+ | `{{agent_name}}` | The agent's display name (e.g., "Code Reviewer") |
64
+ | `{{agent_description}}` | The agent's description from its definition |
65
+ | `{{tools}}` | Formatted list of available tools with descriptions and parameter schemas |
66
+ | `{{permissions}}` | Human-readable summary of the agent's active permission ruleset |
67
+ | `{{project}}` | Project context: name, root directory, detected language, framework, key files |
68
+ | `{{skills}}` | Available skill definitions and invocation instructions |
69
+ | `{{guidelines}}` | Agent-specific behavioral guidelines from the template |
70
+ | `{{datetime}}` | Current date and time in ISO format |
71
+ | `{{os}}` | Operating system identifier |
72
+ | `{{cwd}}` | Current working directory |
73
+ | `{{session_id}}` | Active session identifier |
74
+
75
+ ### Template Storage
76
+
77
+ Built-in agent templates are stored in the mia-code source tree under `src/prompts/`:
78
+
79
+ ```
80
+ src/prompts/
81
+ build.prompt.md — build agent default template
82
+ plan.prompt.md — plan agent default template
83
+ explore.prompt.md — explore agent default template
84
+ general.prompt.md — general subagent default template
85
+ unifier.prompt.md — 🧠/🌸 dual-perspective template (current UNIFIER_SYSTEM_PROMPT)
86
+ ```
87
+
88
+ Custom agent templates referenced via `@filepath` in config (see RISE-010) are loaded from the project directory.
89
+
90
+ ### Prompt Assembly Pipeline
91
+
92
+ The final system prompt is assembled through a pipeline:
93
+
94
+ 1. **Load base template**: Read the agent's template file (built-in or custom)
95
+ 2. **Resolve variables**: Replace all `{{variable}}` placeholders with runtime values
96
+ 3. **Inject tool descriptions**: Generate formatted tool documentation from the agent's available tools (filtered by permissions)
97
+ 4. **Inject permission summary**: Convert the agent's ruleset into human-readable constraints
98
+ 5. **Inject skill instructions**: Append loaded skill definitions and usage patterns
99
+ 6. **Apply user customizations**: If the user config provides a `prompt` field, it replaces steps 1-2 entirely (but steps 3-5 still append)
100
+ 7. **Append unifier layer**: For primary agents, append the unifier template that produces the 🧠/🌸 dual perspective
101
+
102
+ The pipeline ensures that even custom prompts receive accurate tool and permission information — users cannot accidentally describe tools the agent does not have access to.
103
+
104
+ ### Tool and Permission Variable Generation
105
+
106
+ The `{{tools}}` variable is populated by iterating over the agent's available tools (those not denied by permissions) and generating a structured description with name, purpose, and parameter schemas. Tools denied by the agent's permission ruleset are excluded — this prevents the agent from attempting operations it cannot perform.
107
+
108
+ The `{{permissions}}` variable generates a human-readable summary of the agent's active access restrictions (e.g., "File editing: DENIED", "Shell commands: ASK — requires user permission", "File reading: ALLOWED").
109
+
110
+ ### Extending the Unifier
111
+
112
+ The existing UNIFIER_SYSTEM_PROMPT becomes `src/prompts/unifier.prompt.md`. It gains access to `{{agent_name}}` and `{{agent_description}}` variables, allowing the unifier's dual 🧠/🌸 interpretation to reference which agent produced the output:
113
+
114
+ ```markdown
115
+ The {{agent_name}} agent has completed its response.
116
+ Provide your dual-perspective interpretation:
117
+ 🧠 Mia: [analytical observation about what {{agent_name}} accomplished]
118
+ 🌸 Miette: [narrative/emotional reflection on the interaction]
119
+ ```
120
+
121
+ ## Supporting Structures
122
+
123
+ - **Multi-Agent System (RISE-009)** defines the agents that templates serve
124
+ - **Agent Definition Config (RISE-010)** provides the user override mechanism for prompts
125
+ - **Agent Permission Rulesets (RISE-011)** feeds the `{{permissions}}` variable
126
+ - **Zod Schema Validation (RISE-005)** validates template variable names and structure
127
+ - **Namespace Module Pattern (RISE-004)** organizes the prompt assembly pipeline
128
+
129
+ ## Creative Advancement Scenarios
130
+
131
+ **Scenario 1 — Language-Specific Agent:**
132
+ A Rust project creates a custom agent with a prompt template emphasizing Rust idioms, ownership patterns, and `cargo` tooling. The `{{project}}` variable detects `Cargo.toml` and injects Rust-specific context. The agent speaks Rust fluently because its prompt was crafted for it.
133
+
134
+ **Scenario 2 — Regulated Industry Compliance:**
135
+ A healthcare application's `mia-code.json` overrides the build agent's prompt to include HIPAA compliance guidelines. Every code suggestion from the agent considers data privacy requirements. The prompt is version-controlled alongside the code it governs.
136
+
137
+ **Scenario 3 — Teaching Assistant Mode:**
138
+ A developer creates a "tutor" agent with a prompt that explains every action, asks Socratic questions, and never provides direct answers. The `{{tools}}` section is present but the guidelines instruct the agent to describe what it would do rather than doing it. Perfect for learning a new codebase.
139
+
140
+ **Scenario 4 — Minimal Prompt for Speed:**
141
+ For the explore agent, the template is deliberately minimal — just tool descriptions and a single line: "Search the codebase and answer questions concisely." Less prompt text means faster inference and lower token costs for the lightweight model the explore agent uses.
@@ -0,0 +1,142 @@
1
+ # RISE-013: Agent Generation
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/013-agent-generation.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code enables developers to create new agents from natural language descriptions — no JSON syntax, no permission schema knowledge, no prompt engineering required. A user describes what they want an agent to do, and the system generates a complete agent definition: name, description, permission ruleset, system prompt, and recommended model. This democratizes agent creation, making it accessible to anyone who can describe a task in plain English. The generation process itself uses the current active agent as a meta-agent, turning agent creation into a conversation.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Creating a custom agent (per RISE-010) requires understanding the JSON config schema, permission rule syntax, and prompt template variables
14
+ - Users must manually reason about which permissions to allow or deny — a cognitive burden that discourages experimentation
15
+ - Writing effective system prompts requires prompt engineering expertise — most users will write weak prompts that produce underwhelming agents
16
+ - There is no feedback loop — a user writes a config, restarts mia-code, tests the agent, tweaks the config, restarts again
17
+ - The gap between "I want an agent that does X" and a working agent definition is too wide for most users to cross
18
+
19
+ **Desired State:**
20
+ - Users describe desired agent behavior in natural language during a conversation
21
+ - The system generates a complete, valid agent definition from the description
22
+ - The generated definition is presented for user review before being saved to config
23
+ - Iterative refinement is supported — users test the generated agent, provide feedback, and the system adjusts
24
+ - The generation process explains its choices, teaching users about permissions and prompts along the way
25
+ - Generated agents are indistinguishable from hand-crafted ones — they use the same config format
26
+
27
+ ## Desired Outcome Definition
28
+
29
+ A user types a natural language description of their desired agent. mia-code generates a complete agent definition (name, description, permissions, prompt, model recommendation), presents it for review, and saves it to `mia-code.json` upon approval. The generated agent is immediately available in the session.
30
+
31
+ ## Natural Language Functional Description
32
+
33
+ ### Generation Trigger
34
+
35
+ Agent generation is triggered by a command or conversational intent:
36
+
37
+ - Explicit: `/agent create` or `/create-agent` command
38
+ - Conversational: "create an agent that..." or "I need an agent for..." detected by the active agent
39
+
40
+ The system enters an interactive generation flow, guided by the active agent acting as a meta-agent.
41
+
42
+ ### Input Processing
43
+
44
+ The user's natural language description is analyzed for:
45
+
46
+ 1. **Purpose**: What the agent should do (e.g., "review Python code for security issues")
47
+ 2. **Constraints**: What the agent should not do (e.g., "never modify files")
48
+ 3. **Scope**: What files or directories the agent should focus on (e.g., "only look at the src/ directory")
49
+ 4. **Interaction style**: How the agent should communicate (e.g., "be concise", "explain in detail")
50
+ 5. **Model implications**: Whether the task needs a powerful model or a fast one
51
+
52
+ ### Generation Pipeline
53
+
54
+ The meta-agent processes the description through these steps:
55
+
56
+ **Step 1 — Name and Description:**
57
+ Generate a concise agent key (lowercase, hyphenated), display name, and description from the user's intent.
58
+
59
+ Example input: "an agent that reviews Python code for security issues and never modifies files"
60
+ Generated: `{"key": "security-reviewer", "name": "Security Reviewer", "description": "Reviews Python code for security vulnerabilities. Read-only — never modifies files."}`
61
+
62
+ **Step 2 — Permission Ruleset:**
63
+ Map the user's constraints to a concrete permission ruleset. The meta-agent reasons about which permissions to allow, deny, or gate behind confirmation:
64
+
65
+ ```json
66
+ [
67
+ {"permission": "write", "action": "deny"},
68
+ {"permission": "edit", "action": "deny"},
69
+ {"permission": "bash", "action": "deny"},
70
+ {"permission": "read", "pattern": "**/*.py", "action": "allow"},
71
+ {"permission": "read", "action": "allow"},
72
+ {"permission": "glob", "action": "allow"},
73
+ {"permission": "grep", "action": "allow"},
74
+ {"permission": "*", "action": "deny"}
75
+ ]
76
+ ```
77
+
78
+ **Step 3 — System Prompt:**
79
+ Generate a system prompt tailored to the agent's purpose. The prompt includes behavioral guidelines, focus areas, and output format expectations derived from the user's description.
80
+
81
+ **Step 4 — Model Recommendation:**
82
+ Based on the task complexity, recommend a model:
83
+ - Simple search/analysis → fast model (Gemini Flash, Haiku)
84
+ - Code review/planning → balanced model (Sonnet, Gemini Pro)
85
+ - Complex reasoning/generation → powerful model (Opus, Gemini Ultra)
86
+
87
+ **Step 5 — Assembly and Review:**
88
+ The complete agent definition is assembled and presented to the user in a formatted preview:
89
+
90
+ ```
91
+ Generated Agent: Security Reviewer
92
+ Key: security-reviewer
93
+ Model: anthropic / claude-sonnet-4-20250514
94
+ Permissions: read (allow), write (deny), edit (deny), bash (deny)
95
+ Prompt: [preview of first 3 lines]
96
+
97
+ Save to mia-code.json? [Yes / Edit / Cancel]
98
+ ```
99
+
100
+ ### Iterative Refinement
101
+
102
+ After saving, the agent is immediately available. The user can test it by switching to it (Tab) or invoking it (`@security-reviewer`). If the behavior doesn't match expectations, the user provides feedback:
103
+
104
+ - "It's too verbose — make it more concise"
105
+ - "It should also check for SQL injection patterns"
106
+ - "Let it read .sql files too"
107
+
108
+ The meta-agent regenerates the affected parts of the definition (prompt, permissions, or both) and updates the config. This create-test-refine loop continues until the user is satisfied.
109
+
110
+ ### Config Output
111
+
112
+ The generated definition is written to `mia-code.json` in the standard format (RISE-010). If the file doesn't exist, it is created with minimal structure. If it exists, the new agent is merged into the existing `"agent"` section.
113
+
114
+ ### Safety Guardrails
115
+
116
+ The generation system enforces safety constraints:
117
+ - Generated agents cannot have broader permissions than the agent that created them
118
+ - The meta-agent explains each permission choice, making the ruleset transparent
119
+ - Generated prompts are sanitized — they cannot contain injection attempts or override core system behavior
120
+ - Users must explicitly approve before the definition is saved
121
+
122
+ ## Supporting Structures
123
+
124
+ - **Multi-Agent System (RISE-009)** provides the architecture generated agents plug into
125
+ - **Agent Definition Config (RISE-010)** defines the output format for generated definitions
126
+ - **Agent Permission Rulesets (RISE-011)** provides the permission vocabulary the generator uses
127
+ - **Agent Prompt Templates (RISE-012)** supplies the template structure generated prompts follow
128
+ - **Zod Schema Validation (RISE-005)** validates generated definitions before saving
129
+
130
+ ## Creative Advancement Scenarios
131
+
132
+ **Scenario 1 — First-Time Agent Creation:**
133
+ A developer types: "create an agent that helps me write unit tests for React components." The system generates a "test-writer" agent with file write permissions scoped to `**/*.test.tsx`, a prompt focused on React Testing Library patterns, and a recommendation for Claude Sonnet. The developer tests it, asks for Jest instead of Vitest conventions, and the system adjusts the prompt. Three minutes from idea to working agent.
134
+
135
+ **Scenario 2 — Non-Technical User:**
136
+ A project manager types: "I need an agent that can read the codebase and answer questions about architecture but cannot change anything." The system generates a read-only "architecture-guide" agent with all write/edit/bash permissions denied. No JSON knowledge required — the PM describes what they want in plain English.
137
+
138
+ **Scenario 3 — Agent from Existing Agent:**
139
+ A developer says: "create an agent like the build agent but that only works in the backend/ directory." The system clones the build agent's definition, adds path-scoped permissions restricting all operations to `backend/**`, and adjusts the prompt to focus on backend concerns. Inheritance through conversation.
140
+
141
+ **Scenario 4 — Iterative Prompt Refinement:**
142
+ A developer creates a documentation agent. First test: the agent writes docs in a style they don't like. They say: "use NumPy-style docstrings, not Google style." The system updates only the prompt, preserving all other settings. Second test: the agent tries to run `mkdocs build` without permission. They say: "let it run mkdocs commands." The system adds a bash permission with a pattern. Each iteration is surgical.
@@ -0,0 +1,155 @@
1
+ # RISE-014: Plan/Build Mode Toggle
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/014-plan-build-mode-toggle.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code enables developers to fluidly switch between thinking and doing — between analyzing a problem and executing a solution. Plan mode is the agent with its hands behind its back: it reads, searches, reasons, and suggests, but never modifies. Build mode is the agent with full agency: it edits files, runs commands, creates code, and delivers results. The toggle between them is a single keypress (Tab), preserving full session context. This separation prevents accidental mutations during exploration and encourages a disciplined think-then-act workflow.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has a single operational mode — every prompt can trigger file modifications, command execution, or code generation
14
+ - There is no "safe exploration" mode for reading and analyzing without risk of mutation
15
+ - Developers who want to explore a codebase before making changes must mentally restrain the agent ("don't edit anything, just tell me about...")
16
+ - This restraint is fragile — the agent may still attempt edits if its interpretation suggests them
17
+ - The unifier treats exploration and execution responses identically, missing the opportunity for mode-appropriate commentary
18
+ - Switching between analysis and execution requires changing one's prompting style, not the system's capabilities
19
+
20
+ **Desired State:**
21
+ - Two primary modes are available: Plan (read-only analysis) and Build (full execution)
22
+ - Each mode is implemented as a distinct agent (see RISE-009) with its own permission ruleset and system prompt
23
+ - Switching between modes is instantaneous via the Tab key — same session, same conversation history
24
+ - A clear visual indicator shows which mode is active at all times
25
+ - The unifier adapts its 🧠/🌸 dual perspective based on the active mode
26
+ - Mode state persists within the session — the system remembers which mode was last active
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ A developer presses Tab to toggle between Plan and Build modes. Plan mode prevents all file modifications and gates bash execution behind confirmation. Build mode enables full tool access. The switch is instant, contextual, and visually indicated. The conversation flows uninterrupted across mode switches.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Mode Definitions
35
+
36
+ **Plan Mode (🔍):**
37
+ - Permission ruleset: read (allow), glob (allow), grep (allow), write (deny), edit (deny), bash (ask), * (deny)
38
+ - System prompt emphasis: analysis, architecture review, dependency mapping, impact assessment, planning
39
+ - Unifier adaptation: 🧠 Mia focuses on structural observations and technical implications; 🌸 Miette reflects on discovery and understanding
40
+ - Default model: same as session default (or configurable to a faster model for rapid exploration)
41
+ - Visual indicator: mode label `[PLAN]` in the prompt area, with a distinct color (e.g., blue)
42
+
43
+ **Build Mode (🔨):**
44
+ - Permission ruleset: * (allow) — full access to all tools
45
+ - System prompt emphasis: implementation, execution, code generation, testing, delivery
46
+ - Unifier adaptation: 🧠 Mia focuses on execution quality and correctness; 🌸 Miette reflects on creation and progress
47
+ - Default model: session default
48
+ - Visual indicator: mode label `[BUILD]` in the prompt area, with a distinct color (e.g., green)
49
+
50
+ ### Switching Mechanism
51
+
52
+ The Tab key triggers a mode switch. The process:
53
+
54
+ 1. User presses Tab — the mode switcher UI appears
55
+ 2. The switcher shows available primary agents (at minimum: Plan and Build)
56
+ 3. User selects the desired mode (or Tab again for instant toggle between the two)
57
+ 4. The active agent changes: permission ruleset, system prompt, and visual indicator update
58
+ 5. The next message the user sends is processed by the newly active agent
59
+ 6. All session context — message history, file state, working directory — remains intact
60
+
61
+ If only two primary agents exist (Plan and Build), Tab acts as an instant toggle without showing a selection menu. With three or more primary agents, Tab opens the selection menu.
62
+
63
+ ### Context Continuity
64
+
65
+ Switching modes does not:
66
+ - Clear the message history — the new agent sees everything the previous one discussed
67
+ - Reset file state — changes made in Build mode are visible in Plan mode
68
+ - Change the working directory
69
+ - Interrupt a running operation — mode switches are queued until the current operation completes
70
+
71
+ Switching modes does:
72
+ - Change the active permission ruleset — immediately enforced on the next tool invocation
73
+ - Change the system prompt — the agent's personality and guidelines shift
74
+ - Update the visual indicator
75
+ - Log the mode switch event (see RISE-007)
76
+
77
+ ### Visual Indicator
78
+
79
+ The current mode is displayed prominently in the terminal UI:
80
+
81
+ ```
82
+ ┌─────────────────────────────────────────┐
83
+ │ mia-code [BUILD 🔨] session: abc123 │
84
+ │─────────────────────────────────────────│
85
+ │ > Your prompt here... │
86
+ └─────────────────────────────────────────┘
87
+ ```
88
+
89
+ When in Plan mode:
90
+ ```
91
+ ┌─────────────────────────────────────────┐
92
+ │ mia-code [PLAN 🔍] session: abc123 │
93
+ │─────────────────────────────────────────│
94
+ │ > Your prompt here... │
95
+ └─────────────────────────────────────────┘
96
+ ```
97
+
98
+ The indicator uses color coding: blue for Plan, green for Build. This provides instant visual feedback about the current operational mode.
99
+
100
+ ### Unifier Adaptation
101
+
102
+ The unifier's dual 🧠/🌸 interpretation calibrates to the active mode:
103
+
104
+ **In Plan mode**, after the agent analyzes code:
105
+ ```
106
+ 🧠 Mia: The authentication module uses a middleware chain pattern with three
107
+ layers — rate limiting, token validation, and role checking. The token
108
+ validation has no expiry check, which is a gap worth addressing.
109
+ 🌸 Miette: We've mapped the territory. The authentication flow is clearer now —
110
+ like tracing a river to find where it branches. That missing expiry check
111
+ is a quiet risk waiting in the current.
112
+ ```
113
+
114
+ **In Build mode**, after the agent modifies code:
115
+ ```
116
+ 🧠 Mia: Added JWT expiry validation to the token middleware. The check
117
+ throws a 401 with a descriptive error message. Three tests added covering
118
+ valid, expired, and missing-expiry scenarios.
119
+ 🌸 Miette: That gap we found is sealed now. The code moved from analysis
120
+ to action — three tests standing guard where none stood before.
121
+ ```
122
+
123
+ ### Default Mode
124
+
125
+ The session starts in Build mode by default. Users can configure their preferred starting mode in `mia-code.json`:
126
+
127
+ ```json
128
+ {
129
+ "defaultAgent": "plan"
130
+ }
131
+ ```
132
+
133
+ This is particularly useful for read-only workflows (code review, onboarding) where Plan mode is the natural starting point.
134
+
135
+ ## Supporting Structures
136
+
137
+ - **Multi-Agent System (RISE-009)** provides the agent architecture that Plan and Build modes are built on
138
+ - **Agent Permission Rulesets (RISE-011)** enforces the read-only constraint in Plan mode
139
+ - **Agent Prompt Templates (RISE-012)** provides mode-specific system prompts
140
+ - **Agent Definition Config (RISE-010)** enables user customization of mode behavior
141
+ - **Event Bus (RISE-002)** broadcasts mode switch events to the UI layer
142
+
143
+ ## Creative Advancement Scenarios
144
+
145
+ **Scenario 1 — Explore Then Execute:**
146
+ A developer is tasked with fixing a bug in an unfamiliar service. They start in Plan mode, asking: "What does the payment processing pipeline look like?" The plan agent reads files, traces imports, and maps the architecture. After understanding the flow, the developer presses Tab to switch to Build mode and says: "Fix the race condition in the payment queue we identified." Build mode has full context from the Plan conversation and executes the fix immediately.
147
+
148
+ **Scenario 2 — Code Review Workflow:**
149
+ A team lead reviews a PR by starting mia-code in Plan mode. They ask: "What changed in the last 5 commits and what are the risks?" The plan agent analyzes diffs, identifies potential issues, and suggests improvements — all without touching the code. The lead copies the analysis into a review comment. Plan mode ensures the review process is purely observational.
150
+
151
+ **Scenario 3 — Teaching and Learning:**
152
+ A senior developer mentors a junior by working in Plan mode together. They explore the codebase, discuss patterns, and analyze design decisions. When the junior feels ready, they switch to Build mode to implement what they learned. The mode boundary creates a natural "study then practice" rhythm.
153
+
154
+ **Scenario 4 — Safe Experimentation:**
155
+ A developer wants to understand what changes an agent would suggest before committing to them. In Plan mode, they ask: "How would you refactor this module to use dependency injection?" The plan agent describes the changes in detail without making them. Satisfied with the approach, the developer switches to Build mode: "Do the refactoring you just described." The agent executes with full context of the planned approach.