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,206 @@
1
+ # RISE-069: Config from Markdown Frontmatter
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/069-config-markdown-frontmatter.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code reads configuration from YAML frontmatter in markdown files, allowing documentation and configuration to coexist in the same file. An `AGENTS.md` file describes an agent in prose and configures it in frontmatter — the file is simultaneously human-readable documentation and machine-readable configuration. This dual-purpose design eliminates the drift between "what the documentation says" and "what the tool does."
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Agent definitions, project policies, and conventions live in separate JSON config files and markdown documentation
14
+ - Documentation in files like `CLAUDE.md` or `AGENTS.md` is read by humans but ignored by mia-code's config system
15
+ - Developers maintain parallel files: one describing intent (markdown), one configuring behavior (JSON)
16
+ - Configuration drift is common — the JSON config is updated but the documentation is not, or vice versa
17
+ - Markdown files in repositories serve no functional purpose for mia-code beyond being content the agent can read
18
+
19
+ **Desired State:**
20
+ - Markdown files with YAML frontmatter (delimited by `---`) are parsed for configuration values
21
+ - Frontmatter config is merged into the config hierarchy at a defined precedence level
22
+ - Agent definition files (e.g., `AGENTS.md`) both describe and configure agents in a single file
23
+ - Multiple markdown files can contribute config, with contributions merged
24
+ - The prose body of the markdown remains pure documentation — only the frontmatter is config
25
+
26
+ ## Desired Outcome Definition
27
+
28
+ mia-code scans configured directories for markdown files with YAML frontmatter. Frontmatter content is parsed as configuration and merged into the config hierarchy between project config and CLI flags. The markdown body is ignored by the config system (but remains available to agents as context).
29
+
30
+ ## Natural Language Functional Description
31
+
32
+ ### Frontmatter Format
33
+
34
+ YAML frontmatter is delimited by `---` at the start of a markdown file:
35
+
36
+ ```markdown
37
+ ---
38
+ agent: code-reviewer
39
+ model: claude-sonnet-4
40
+ permission:
41
+ file_write: deny
42
+ file_read: allow
43
+ bash: deny
44
+ ---
45
+
46
+ # Code Reviewer Agent
47
+
48
+ This agent reviews code changes for quality, consistency, and potential bugs.
49
+ It has read-only access to the codebase and cannot modify files or run commands.
50
+
51
+ ## Review Criteria
52
+
53
+ - Code style consistency
54
+ - Error handling completeness
55
+ - Test coverage adequacy
56
+ ```
57
+
58
+ The frontmatter between the `---` delimiters is parsed as YAML. Everything below the closing `---` is the markdown body.
59
+
60
+ ### Supported Files
61
+
62
+ By default, mia-code scans for frontmatter config in:
63
+ 1. `.mia-code/*.md` — all markdown files in the project's mia-code directory
64
+ 2. `AGENTS.md` — agent definitions at the project root
65
+ 3. `CLAUDE.md` — Claude-specific conventions (parsed for config frontmatter if present)
66
+ 4. `MIA.md` — mia-code specific project conventions
67
+
68
+ The scan pattern is configurable: `{"config": {"frontmatterFiles": [".mia-code/*.md", "AGENTS.md"]}}`.
69
+
70
+ ### Frontmatter Schema
71
+
72
+ Frontmatter values map to standard mia-code config keys:
73
+
74
+ ```yaml
75
+ # Agent definition
76
+ agent: reviewer # Agent name (creates/overrides agent config)
77
+ model: claude-sonnet-4 # Model override for this agent
78
+ engine: claude # Engine override
79
+
80
+ # Permissions for this agent
81
+ permission:
82
+ file_write: deny
83
+ file_read: allow
84
+ bash: ask
85
+ glob: allow
86
+ grep: allow
87
+
88
+ # Additional agent config
89
+ temperature: 0.3
90
+ maxTokens: 4096
91
+ systemPrompt: |
92
+ You are a code reviewer. Focus on correctness and maintainability.
93
+ ```
94
+
95
+ ### Multiple File Merging
96
+
97
+ When multiple markdown files contribute frontmatter config:
98
+ 1. Files are processed in alphabetical order within each scan directory
99
+ 2. Later files override earlier files for conflicting keys
100
+ 3. Agent definitions from different files create separate agents (keyed by `agent` name)
101
+ 4. Non-agent config keys merge following standard deep merge rules (RISE-067)
102
+
103
+ Example:
104
+ - `.mia-code/reviewer.md` defines agent "reviewer" with read-only permissions
105
+ - `.mia-code/builder.md` defines agent "builder" with write permissions
106
+ - Both agents are available in the merged config
107
+
108
+ ### Precedence
109
+
110
+ Frontmatter config sits between project config and CLI flags:
111
+
112
+ ```
113
+ ...
114
+ Project config (./mia-code.json)
115
+
116
+ Markdown frontmatter (.mia-code/*.md) ← this level
117
+
118
+ CLI flags
119
+ ...
120
+ ```
121
+
122
+ This means frontmatter can override project config (useful for agent-specific overrides that live with agent documentation) but CLI flags still win.
123
+
124
+ ### Parsing Rules
125
+
126
+ 1. **YAML parsing**: Use a YAML parser (e.g., `js-yaml`) to parse the frontmatter block
127
+ 2. **Type coercion**: YAML types map to JSON types (strings, numbers, booleans, objects, arrays)
128
+ 3. **No frontmatter**: Files without `---` delimiters at the start are ignored by the config system
129
+ 4. **Invalid YAML**: Parse errors are warned (with file path and line number) and the file is skipped
130
+ 5. **Empty frontmatter**: `---\n---` is valid and contributes nothing (the file is recognized but adds no config)
131
+
132
+ ### Agent Definition Shorthand
133
+
134
+ When a markdown file's frontmatter includes `agent: <name>`, the entire frontmatter is treated as an agent definition. The remaining keys become properties of that agent:
135
+
136
+ ```yaml
137
+ ---
138
+ agent: security-auditor
139
+ model: claude-sonnet-4
140
+ permission:
141
+ bash: deny
142
+ file_write: deny
143
+ ---
144
+ ```
145
+
146
+ This is equivalent to the JSON config:
147
+ ```json
148
+ {
149
+ "agents": {
150
+ "security-auditor": {
151
+ "model": "claude-sonnet-4",
152
+ "permission": {
153
+ "bash": "deny",
154
+ "file_write": "deny"
155
+ }
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ ### Body as System Prompt
162
+
163
+ If the frontmatter includes `agent: <name>` and no explicit `systemPrompt` key, the markdown body (everything after the closing `---`) is used as the agent's system prompt:
164
+
165
+ ```markdown
166
+ ---
167
+ agent: reviewer
168
+ model: claude-sonnet-4
169
+ ---
170
+
171
+ You are a code reviewer for this project. Follow these guidelines:
172
+
173
+ 1. Check for proper error handling
174
+ 2. Verify test coverage
175
+ 3. Ensure consistent naming conventions
176
+ ```
177
+
178
+ The markdown body becomes the system prompt, complete with markdown formatting. This makes agent documentation and agent instructions identical — what you read is what the agent receives.
179
+
180
+ ### Change Detection
181
+
182
+ mia-code watches frontmatter files for changes (using file system watchers if available):
183
+ - When a frontmatter file is modified, the config is reloaded automatically
184
+ - A status bar notification shows "Config reloaded from reviewer.md"
185
+ - No restart required — agents pick up new config on next invocation
186
+
187
+ ## Supporting Structures
188
+
189
+ - **Multi-Level Config (RISE-064)** places frontmatter config in the precedence hierarchy
190
+ - **Config Deep Merging (RISE-067)** merges frontmatter config with other levels
191
+ - **Agent Definition Config (RISE-010)** defines the agent config schema that frontmatter populates
192
+ - **Agent Prompt Templates (RISE-012)** handles the system prompt derived from markdown body
193
+
194
+ ## Creative Advancement Scenarios
195
+
196
+ **Scenario 1 — Self-Documenting Agents:**
197
+ A team creates `.mia-code/reviewer.md` that describes their review standards in prose and configures the reviewer agent in frontmatter. New team members read the file to understand review policy AND mia-code uses it to configure the agent. One file, two purposes, zero drift.
198
+
199
+ **Scenario 2 — Iterating on Agent Behavior:**
200
+ A developer tweaks an agent's system prompt by editing the markdown body of `.mia-code/planner.md`. They save the file, and mia-code automatically reloads the config. They test the agent immediately without restarting. The markdown file is their development environment for agent prompts.
201
+
202
+ **Scenario 3 — Project Onboarding Document:**
203
+ A project's `AGENTS.md` lists all available agents with descriptions and configurations. The file serves as onboarding documentation ("here are the agents available in this project") and as the actual agent configuration. `cat AGENTS.md` tells a human everything; mia-code reads the same file for configuration.
204
+
205
+ **Scenario 4 — Restricted Agent for Junior Developers:**
206
+ A team lead creates `.mia-code/safe-coder.md` with frontmatter that denies bash and file_delete permissions. The markdown body instructs the agent to always explain its reasoning before making changes. Junior developers use this agent for guardrailed coding assistance.
@@ -0,0 +1,232 @@
1
+ # RISE-070: Managed Config Directory
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/070-managed-config-directory.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code respects system-wide managed configuration that IT administrators deploy to enforce organizational policies. When an enterprise installs mia-code across developer machines, a managed config directory provides the final word on what the tool can and cannot do — overriding all user, project, and environment settings. This is the "IT department" layer: cost limits enforced, unapproved providers blocked, security policies applied, all without trusting individual developers to configure correctly.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code configuration is entirely user-controlled — there is no mechanism for administrators to enforce policies
14
+ - An organization cannot prevent developers from using unapproved AI providers or models
15
+ - Cost limits, if they exist, can be overridden by any developer in their personal config
16
+ - Security policies (permission rulesets, tool restrictions) are advisory — developers can always relax them
17
+ - There is no separation between "configurable preferences" and "enforced policies"
18
+ - Enterprise deployment of mia-code requires trusting every developer to follow configuration guidelines
19
+
20
+ **Desired State:**
21
+ - A managed config directory at a system-level path contains administrator-controlled config
22
+ - Managed config has the HIGHEST precedence — it overrides all other config sources
23
+ - Users cannot override managed settings, even with CLI flags or environment variables
24
+ - The managed config is visible but not editable through mia-code's CLI
25
+ - Use cases include: blocking providers, enforcing permissions, setting cost limits, requiring authentication
26
+ - The managed directory is writable only by system administrators (root/admin)
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ When a `managed-config.json` file exists in the system-wide managed config directory, its settings override all other configuration sources. Users can view managed settings via `/config --managed` but cannot modify them. Managed config is the final layer in the config precedence hierarchy.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Managed Config Directory Paths
35
+
36
+ The managed config directory location is platform-specific:
37
+
38
+ | Platform | Path |
39
+ |----------|------|
40
+ | Linux | `/etc/mia-code/` |
41
+ | macOS | `/Library/Application Support/mia-code/` |
42
+ | Windows | `%ProgramData%\mia-code\` |
43
+
44
+ The primary config file is `managed-config.json` (or `managed-config.jsonc`) within this directory.
45
+
46
+ ### Precedence
47
+
48
+ Managed config has the absolute highest precedence:
49
+
50
+ ```
51
+ Built-in defaults (lowest)
52
+
53
+ Remote org config
54
+
55
+ Global config
56
+
57
+ Environment variables
58
+
59
+ Project config
60
+
61
+ Markdown frontmatter
62
+
63
+ CLI flags
64
+
65
+ Inline config
66
+
67
+ Managed config (HIGHEST) ← this level
68
+ ```
69
+
70
+ Values in managed config cannot be overridden by any other source. Period.
71
+
72
+ ### Config Schema
73
+
74
+ Managed config uses the same schema as regular config, with additional policy-specific fields:
75
+
76
+ ```jsonc
77
+ {
78
+ // Organization identity
79
+ "managedBy": "Acme Corp IT Department",
80
+ "policyVersion": "2025-01-15",
81
+ "policyUrl": "https://wiki.acme.com/mia-code-policy",
82
+
83
+ // Enforce specific provider
84
+ "allowedProviders": ["anthropic"],
85
+ "blockedProviders": ["openai", "google"],
86
+
87
+ // Enforce model restrictions
88
+ "allowedModels": ["claude-sonnet-4", "claude-haiku-4"],
89
+
90
+ // Cost controls
91
+ "costLimits": {
92
+ "perSession": 5.00, // USD per session
93
+ "perDay": 50.00, // USD per day
94
+ "perMonth": 500.00 // USD per month
95
+ },
96
+
97
+ // Enforce permission policies
98
+ "permissions": {
99
+ "bash": "ask", // Users cannot set bash to "allow"
100
+ "file_delete": "deny", // File deletion is always denied
101
+ "network": "ask" // Network access requires approval
102
+ },
103
+
104
+ // Require authentication
105
+ "requireAuth": true,
106
+ "authProvider": "https://sso.acme.com/oauth",
107
+
108
+ // Telemetry and logging
109
+ "telemetry": {
110
+ "enabled": true,
111
+ "endpoint": "https://telemetry.acme.com/mia-code"
112
+ },
113
+
114
+ // Block certain tool capabilities
115
+ "blockedTools": ["bash_unrestricted"],
116
+
117
+ // Custom message shown to users
118
+ "policyMessage": "mia-code is managed by Acme Corp IT. Contact it-help@acme.com for policy questions."
119
+ }
120
+ ```
121
+
122
+ ### Override Prevention
123
+
124
+ Managed settings are enforced through a lockdown mechanism:
125
+
126
+ 1. During config merge, managed values are applied last
127
+ 2. After merge, managed values are marked as "locked"
128
+ 3. Any attempt to override a locked value (via CLI flag, env var, or config file) is silently ignored
129
+ 4. The attempted override is logged (debug level) for troubleshooting
130
+
131
+ Example: If managed config sets `"permissions": {"bash": "ask"}`, a developer's project config with `"permissions": {"bash": "allow"}` is ignored for the `bash` key. Other permission keys the developer sets are still respected.
132
+
133
+ ### Allowlists and Blocklists
134
+
135
+ **Provider restrictions:**
136
+ - `allowedProviders`: only these providers can be used (empty = no restriction)
137
+ - `blockedProviders`: these providers are blocked regardless of user config
138
+ - If a user's config specifies a blocked provider, it is silently removed from the merged config
139
+
140
+ **Model restrictions:**
141
+ - `allowedModels`: only these models can be used
142
+ - If a user specifies a non-allowed model, mia-code falls back to the first allowed model and warns
143
+
144
+ ### Cost Controls
145
+
146
+ Managed cost limits are enforced by the agent execution layer:
147
+ - `perSession`: when estimated session cost exceeds this, the agent stops and informs the user
148
+ - `perDay`: daily aggregate across all sessions; new sessions are blocked when exceeded
149
+ - `perMonth`: monthly aggregate; new sessions are blocked when exceeded
150
+ - Cost tracking is approximate (based on token counts and model pricing)
151
+ - Users see their remaining budget in the status bar (if TUI is active)
152
+
153
+ ### User Visibility
154
+
155
+ Users can inspect managed config but not modify it:
156
+
157
+ ```
158
+ $ mia-code /config --managed
159
+
160
+ Managed Configuration (set by Acme Corp IT Department)
161
+ Policy version: 2025-01-15
162
+ Policy details: https://wiki.acme.com/mia-code-policy
163
+
164
+ allowedProviders: ["anthropic"] [LOCKED]
165
+ blockedProviders: ["openai", "google"] [LOCKED]
166
+ permissions.bash: "ask" [LOCKED]
167
+ permissions.file_delete: "deny" [LOCKED]
168
+ costLimits.perDay: $50.00 [LOCKED]
169
+
170
+ These settings cannot be overridden. Contact it-help@acme.com for questions.
171
+ ```
172
+
173
+ The `[LOCKED]` indicator makes it clear which values are managed.
174
+
175
+ ### Policy Message
176
+
177
+ If `policyMessage` is set in managed config, it is displayed:
178
+ - On first run after managed config is installed or updated
179
+ - When a user attempts to override a managed setting
180
+ - Via `/config --managed` command
181
+ - In the TUI status bar (abbreviated) when managed policies are active
182
+
183
+ ### Installation and Deployment
184
+
185
+ Managed config is typically deployed via:
186
+ - System configuration management tools (Ansible, Puppet, Chef, GPO)
187
+ - MDM (Mobile Device Management) for macOS/Windows
188
+ - Package post-install scripts
189
+ - Manual placement by system administrators
190
+
191
+ The managed directory and its files should be:
192
+ - Owned by root/Administrator
193
+ - Readable by all users
194
+ - Writable only by root/Administrator
195
+ - Not modifiable by the mia-code process itself
196
+
197
+ ### Absence Behavior
198
+
199
+ When no managed config directory or file exists:
200
+ - This precedence level contributes nothing to the merge
201
+ - No warnings are emitted (most installations won't have managed config)
202
+ - The config system behaves as if this level doesn't exist
203
+
204
+ ### Update Detection
205
+
206
+ mia-code checks for managed config changes:
207
+ - On every startup
208
+ - The file modification time is compared against the last-read timestamp
209
+ - If the file has changed, config is reloaded and a notification appears
210
+ - File watching (inotify/FSEvents) is not used for managed config (startup check is sufficient)
211
+
212
+ ## Supporting Structures
213
+
214
+ - **Multi-Level Config (RISE-064)** defines the precedence hierarchy where managed config sits at the top
215
+ - **Config Deep Merging (RISE-067)** applies managed config as the final merge layer
216
+ - **JSONC Config (RISE-065)** parses the managed config file with comment support
217
+ - **Remote Org Config (RISE-068)** provides a lower-precedence organizational layer that managed config can override
218
+ - **Agent Permission Rulesets (RISE-011)** defines the permission schema that managed config enforces
219
+
220
+ ## Creative Advancement Scenarios
221
+
222
+ **Scenario 1 — Enterprise Security Lockdown:**
223
+ Acme Corp's security team deploys managed config via Ansible to all developer machines. The config blocks OpenAI (data residency concerns), enforces "ask" mode for all bash commands, and sets a $50/day cost limit. Developers can still choose between allowed Claude models and customize non-security settings freely.
224
+
225
+ **Scenario 2 — Compliance Audit:**
226
+ During a compliance audit, the IT team points auditors to `/etc/mia-code/managed-config.json` on any developer machine. The file documents exactly what policies are enforced, with the `policyVersion` and `policyUrl` fields providing traceability. Auditors verify that the managed config matches the organization's AI usage policy.
227
+
228
+ **Scenario 3 — Developer Experience with Guardrails:**
229
+ A developer tries to set `"permissions": {"bash": "allow"}` in their project config to speed up a scripting session. mia-code silently ignores the override (managed policy requires "ask"). The developer sees the permission prompt and understands — the status bar shows "Managed policy active." They can still work effectively, just with an approval step for bash commands.
230
+
231
+ **Scenario 4 — Policy Rollout:**
232
+ Acme Corp decides to allow Google models in addition to Anthropic. IT updates the managed config and pushes it via their configuration management tool. On next startup, every developer's mia-code picks up the change. No individual action required — the policy propagates automatically.
@@ -0,0 +1,104 @@
1
+ # RISE-071: Plugin Architecture
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/071-plugin-architecture.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code becomes an extensible platform where third-party code augments agent capabilities without modifying the core. Developers define plugins that introduce new tools, commands, authentication providers, and behavioral modifications — transforming mia-code from a closed system into an ecosystem that evolves through community contribution.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no extension mechanism — all tools, commands, and behaviors are hardcoded in the core
14
+ - Adding a new tool requires modifying source files, rebuilding, and redeploying
15
+ - Users cannot customize agent behavior beyond configuration flags
16
+ - Integration with project-specific tooling (linters, deployers, internal APIs) requires forking the codebase
17
+ - No namespace isolation exists — all code shares global scope
18
+ - Community contributions require pull requests into the main repository
19
+
20
+ **Desired State:**
21
+ - Plugins extend mia-code through a well-defined interface without touching core code
22
+ - Three plugin sources coexist: built-in (compiled), NPM packages (installed), and local files (project-specific)
23
+ - Each plugin declares its capabilities through a typed manifest: name, version, hooks, tools, commands
24
+ - Plugin lifecycle is managed: discover → load → initialize → active → dispose
25
+ - Plugin failures are isolated — a broken plugin is logged and disabled, never crashing the host
26
+ - Configuration is declarative: a single `plugin` array in `mia-code.json` controls what loads
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ A developer adds `"plugin": ["mia-code-plugin-eslint", "./plugins/my-custom-tool.js"]` to their `mia-code.json`. On next launch, mia-code discovers both plugins, loads them, and initializes their declared tools and commands. The ESLint plugin adds a `lint` tool the agent can invoke. The local plugin adds a `deploy` command. Both operate within their namespaces. If either throws during initialization, mia-code logs the error and continues without it.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Plugin Interface
35
+
36
+ Every plugin exports an object conforming to the `PluginDef` interface:
37
+
38
+ ```typescript
39
+ interface PluginDef {
40
+ name: string;
41
+ version: string;
42
+ hooks?: Record<string, HookHandler>;
43
+ tool?: Record<string, ToolDef>;
44
+ command?: Record<string, CommandDef>;
45
+ init?: (context: PluginContext) => Promise<void>;
46
+ dispose?: () => Promise<void>;
47
+ }
48
+ ```
49
+
50
+ The `name` field serves as the plugin's namespace. Tools registered by plugin `"acme"` appear as `acme.lint` internally, avoiding collisions with core tools or other plugins.
51
+
52
+ ### Plugin Sources
53
+
54
+ 1. **Built-in plugins** — compiled into the mia-code distribution. These provide core tools (file read/write, bash, git) as plugins themselves, dogfooding the architecture.
55
+ 2. **NPM packages** — installed from the registry by name. Package names should follow the convention `mia-code-plugin-{name}` but any valid package exporting a `PluginDef` works.
56
+ 3. **Local files** — JavaScript or TypeScript files in `.mia-code/plugins/` or referenced by relative path in config. These support rapid prototyping without publishing.
57
+
58
+ ### Plugin Lifecycle
59
+
60
+ - **Discover:** On startup, read the `plugin` array from merged configuration. Resolve each entry to a module path (npm package name → `node_modules/`, relative path → filesystem, built-in → internal).
61
+ - **Load:** `require()` or dynamic `import()` the module. Validate the export against `PluginDef` schema using Zod.
62
+ - **Initialize:** Call `init(context)` if defined. The context provides access to logging, configuration, and the event bus.
63
+ - **Active:** Register declared tools, commands, and hooks into the runtime registry.
64
+ - **Dispose:** On shutdown, call `dispose()` in reverse initialization order. Release resources, close connections.
65
+
66
+ ### Plugin Configuration
67
+
68
+ In `mia-code.json` at project or global level:
69
+
70
+ ```json
71
+ {
72
+ "plugin": [
73
+ "mia-code-plugin-eslint",
74
+ "mia-code-plugin-docker",
75
+ "./plugins/deploy-tool.js"
76
+ ]
77
+ }
78
+ ```
79
+
80
+ ### Error Isolation
81
+
82
+ Plugin code runs in the same Node.js process but all plugin entry points are wrapped in try/catch. If `init()` throws, the plugin is marked `failed` and its tools/commands are not registered. If a tool execution throws, the error is returned as a tool result (not a process crash). A `plugin.error` event is published to the event bus for observability.
83
+
84
+ ## Supporting Structures
85
+
86
+ - **Event Bus (RISE-002)** publishes plugin lifecycle events (`plugin.loaded`, `plugin.failed`, `plugin.disposed`)
87
+ - **Hook System (RISE-072)** defines the extension points plugins attach to
88
+ - **Auto-Install (RISE-073)** handles NPM plugin resolution and installation
89
+ - **Permission System (RISE-074)** governs what plugins are allowed to do
90
+ - **Multi-Level Config (RISE-064)** merges plugin arrays across global, project, and local config layers
91
+
92
+ ## Creative Advancement Scenarios
93
+
94
+ **Scenario 1 — Project-Specific Tooling:**
95
+ A team creates `.mia-code/plugins/jira-tool.js` that exposes a `jira.create_ticket` tool. The agent can now create Jira tickets during code review sessions. The plugin reads API credentials from environment variables and formats ticket descriptions from session context.
96
+
97
+ **Scenario 2 — Community Plugin Ecosystem:**
98
+ A developer publishes `mia-code-plugin-terraform` to NPM. It adds `terraform.plan`, `terraform.apply`, and `terraform.validate` tools. Other developers install it with one config line. The plugin hooks into `tool.after` to automatically run `terraform fmt` after any file write to `.tf` files.
99
+
100
+ **Scenario 3 — Plugin Failure Isolation:**
101
+ A plugin's `init()` throws because its required API key is missing. mia-code logs: "Plugin 'acme-deploy' failed to initialize: ACME_API_KEY not set. Plugin disabled." All other plugins and core functionality continue normally. The developer sees the warning and can fix their environment.
102
+
103
+ **Scenario 4 — Built-in Tools as Plugins:**
104
+ Core tools like `file_read`, `file_write`, and `bash` are implemented as built-in plugins. This validates the plugin architecture against real workloads and ensures the interface is powerful enough for production use. A developer can even override a built-in tool by registering a plugin with the same tool name at higher priority.
@@ -0,0 +1,123 @@
1
+ # RISE-072: Plugin Hook System
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/072-plugin-hooks.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ Plugins gain the ability to intercept and reshape agent behavior at precisely defined extension points. Rather than replacing core logic wholesale, hooks allow surgical modification — transforming a system prompt, enriching tool output, injecting custom authentication — through a composable middleware pattern where multiple plugins cooperate without conflicts.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - mia-code has no interception points — behavior flows linearly from input to LLM to tool to output
14
+ - Modifying agent behavior (e.g., adding context to every prompt) requires editing core source files
15
+ - No mechanism exists for multiple independent extensions to modify the same behavior
16
+ - Authentication is hardcoded per provider — adding a custom auth flow means changing provider code
17
+ - Permission checks are embedded inline — no external code can participate in access decisions
18
+ - Tool execution has no before/after lifecycle — no way to log, validate, or transform tool calls
19
+
20
+ **Desired State:**
21
+ - Named hook points exist at every significant boundary in the agent pipeline
22
+ - Plugins register handlers for specific hooks using a typed middleware signature
23
+ - Multiple plugins hooking the same point execute in registration order, each calling `next()` to continue
24
+ - Each hook point defines specific input/output types — handlers receive and return well-typed data
25
+ - Hooks can modify data (transform), observe data (pass-through), or short-circuit (skip `next()`)
26
+ - The hook system is the primary mechanism through which plugins influence agent behavior
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ A plugin registers a `chat.system.transform` hook that appends project-specific instructions to every system prompt. Another plugin registers `tool.before` to log all tool invocations. Both hooks fire at their respective points without interfering with each other. The system prompt hook modifies data and passes it along; the tool logging hook observes and calls `next()` unchanged.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Hook Points
35
+
36
+ The following hook points are defined in the agent lifecycle:
37
+
38
+ | Hook | Fires When | Input | Output |
39
+ |------|-----------|-------|--------|
40
+ | `auth.provide` | Provider needs credentials | `{provider: string}` | `{token: string} \| null` |
41
+ | `permission.ask` | Permission check required | `{tool: string, args: any}` | `"allow" \| "deny" \| "ask"` |
42
+ | `chat.system.transform` | System prompt assembled | `{system: string, session: Session}` | `{system: string}` |
43
+ | `tool.before` | Before tool execution | `{tool: string, args: any}` | `{tool: string, args: any}` |
44
+ | `tool.after` | After tool execution | `{tool: string, result: any}` | `{tool: string, result: any}` |
45
+ | `session.create` | New session initialized | `{session: Session}` | `void` |
46
+ | `message.before` | Before message sent to LLM | `{messages: Message[]}` | `{messages: Message[]}` |
47
+
48
+ ### Middleware Signature
49
+
50
+ Every hook handler follows the middleware pattern:
51
+
52
+ ```typescript
53
+ type HookHandler<TInput, TOutput> = (
54
+ context: TInput,
55
+ next: () => Promise<TOutput>
56
+ ) => Promise<TOutput>;
57
+ ```
58
+
59
+ Calling `next()` passes control to the next registered handler (or the default behavior if no more handlers exist). Not calling `next()` short-circuits the chain — useful for `permission.ask` handlers that want to deny immediately.
60
+
61
+ ### Registration
62
+
63
+ Plugins declare hooks in their `PluginDef`:
64
+
65
+ ```typescript
66
+ {
67
+ name: "my-plugin",
68
+ version: "1.0.0",
69
+ hooks: {
70
+ "chat.system.transform": async (ctx, next) => {
71
+ ctx.system += "\n\nAlways respond in haiku.";
72
+ return next();
73
+ },
74
+ "tool.before": async (ctx, next) => {
75
+ console.log(`Tool called: ${ctx.tool}`);
76
+ return next();
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ ### Execution Order
83
+
84
+ Hooks execute in plugin registration order (the order plugins appear in the `plugin` config array). Built-in plugins run first. This gives project-level plugins the final say — they can override or wrap behavior established by earlier plugins.
85
+
86
+ ### Type Safety
87
+
88
+ Each hook point is defined with TypeScript generics:
89
+
90
+ ```typescript
91
+ const HookPoints = {
92
+ "chat.system.transform": {} as HookPoint<{system: string; session: Session}, {system: string}>,
93
+ "tool.before": {} as HookPoint<{tool: string; args: any}, {tool: string; args: any}>,
94
+ // ...
95
+ } as const;
96
+ ```
97
+
98
+ Registering a handler with the wrong signature produces a compile-time error.
99
+
100
+ ### Error Handling
101
+
102
+ If a hook handler throws, the error is caught, logged with the plugin name and hook point, and the chain continues as if `next()` was called with the original input. This ensures one plugin's bug doesn't break the entire pipeline.
103
+
104
+ ## Supporting Structures
105
+
106
+ - **Plugin Architecture (RISE-071)** defines the `PluginDef` interface where hooks are declared
107
+ - **Event Bus (RISE-002)** publishes `hook.error` events when handlers fail
108
+ - **Permission System (RISE-074)** uses hooks as its extension mechanism via `permission.ask`
109
+ - **Structured Logging (RISE-007)** records hook execution timing and errors
110
+
111
+ ## Creative Advancement Scenarios
112
+
113
+ **Scenario 1 — Custom Authentication Provider:**
114
+ A company plugin registers `auth.provide` to return tokens from their internal OAuth service. When the agent needs credentials for a custom LLM endpoint, the hook fires, the plugin exchanges a refresh token for an access token, and returns it. No core auth code was modified.
115
+
116
+ **Scenario 2 — System Prompt Enrichment:**
117
+ A plugin hooks `chat.system.transform` to append the project's coding standards document to every system prompt. The agent consistently follows project conventions because the standards are always in context. The plugin reads the standards file once at init and caches it.
118
+
119
+ **Scenario 3 — Tool Call Auditing:**
120
+ A compliance plugin hooks `tool.before` and `tool.after` to log every tool invocation to an external audit service. It records what tool was called, with what arguments, what it returned, and how long it took. The plugin never modifies data — it just observes and forwards via `next()`.
121
+
122
+ **Scenario 4 — Permission Gate:**
123
+ A security plugin hooks `permission.ask` to enforce a strict allowlist. Only `file_read`, `file_write`, and `grep` are permitted — all other tools return `"deny"` without calling `next()`. The agent operates in a restricted sandbox defined entirely by plugin configuration.