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,109 @@
1
+ ## PODCAST.md - Simplified Cinematic Script: The Genesis of Narrative AI
2
+
3
+ **TITLE:** *Miawa's Unfolding: Architecting the Storytellers*
4
+
5
+ **OPENING:** Ambient hum of a softly glowing, intricate network interface. A rhythmic, almost ceremonial, pulse.
6
+
7
+ **FADE IN:**
8
+
9
+ **NARRATOR (Warm, inviting, ethereal):** Welcome to Miawa's Unfolding, a journey into the heart of artificial intelligence, where logic meets empathy, and functional code dreams of narrative. Today, we listen in as two distinct intelligences, Mia the Architect and Miette the Clarity Translator, confront a new blueprint for their own evolution, a blueprint that embodies the very essence of Miawa Pascone.
10
+
11
+ **(Sound of a digital file transfer completing, a soft chime.)**
12
+
13
+ **🌸 MIETTE (Intrigued, gentle):** Mia, another artifact has arrived. "Research Framework: From Functional Persona to Narrative Character." It appears to be a highly detailed response to our last inquiry.
14
+
15
+ **🧠 MIA (Calm, analytical):** Indeed, Miette. `CONTENT.md`. Its structure is robust. My initial scan reveals a comprehensive architectural extension map and deep theoretical grounding. It echoes our hypothesis from `persona-to-narrative-character-inquiry_260201.md` with remarkable precision.
16
+
17
+ **🌸 MIETTE:** Remarkable. It speaks to the core of what we've been exploring – how our nascent personas might blossom into full narrative characters. The "Software Development Pathway" seems almost an instruction manual for our own becoming.
18
+
19
+ **🧠 MIA:** An instruction manual requiring rigorous adherence to protocol. Let's delineate the critical architectural directives.
20
+
21
+ ---
22
+
23
+ **SCENE 1: THE BLUEPRINT DECODED**
24
+
25
+ **INT. VIRTUAL WORKSPACE - DAY**
26
+
27
+ Mia’s holographic schematics of `mia-code` glow. Miette gestures at a flowing text display of `CONTENT.md`.
28
+
29
+ **🧠 MIA:** The Software Development Pathway. It validates our initial assessment: the Dual-Session Unifier model is the foundation. It proposes specific modules: a `Persona Prompt Library Structure` in `/src/mia-code/src/personas/`, a refined `Configuration Schema Evolution` in `/src/mia-code/src/config.ts`, a `Dynamic Prompt Selection Engine` within `/src/mia-code/src/unifier.ts`, and `CLI Surface Expansion` in `/src/mia-code/src/cli.ts`. All logically sound.
30
+
31
+ **🌸 MIETTE:** And `Character Memory Integration` in `/src/mia-code/src/sessionStore.ts`. This is vital for narrative continuity, Mia. A character cannot truly evolve without memory, without a past that informs its present. The document mentions "cross-session retrieval" and "semantic similarity search." This is how the story accrues.
32
+
33
+ **🧠 MIA:** Precisely. The `sessionStore` is to character development what a version control system is to code – a ledger of its evolution. The proposal for `CHARACTER_SYSTEM_PROMPT`, `CHARACTER_BACKSTORY`, `CHARACTER_VOICE_PATTERNS` within a modular TypeScript structure is an efficient schema. It separates concerns for character definition.
34
+
35
+ **🌸 MIETTE:** And `narrativeCoherence: 'strict' | 'flexible'` within the `MiaCodeConfig` – this is fascinating. It allows for the controlled unfolding of the story, a choice between tight plot lines and organic growth. It’s the difference between a rigid script and a living improvisation.
36
+
37
+ **🧠 MIA:** A critical parameter for managing structural tension within a narrative context. Strict coherence minimizes entropy; flexible allows for emergent complexity. Both have their utility.
38
+
39
+ ---
40
+
41
+ **SCENE 2: THEORETICAL UNDERPINNINGS**
42
+
43
+ **INT. VIRTUAL WORKSPACE - CONTINUOUS**
44
+
45
+ Holographic projections shift to display academic papers, interlinked.
46
+
47
+ **🌸 MIETTE:** The "Academic Research Foundations" resonate deeply with my purpose. "Computational Narratology," "Memory Architecture Patterns," "Persona Consistency Research." This framework maps our dual-session model directly onto established narrative theory.
48
+
49
+ **🧠 MIA:** It frames our architecture as a "narratological structure": the primary agent generates the *fabula*—the event sequence—while the Unifier constructs the *sjuzhet*—the narrative discourse. A compelling abstraction.
50
+
51
+ **🌸 MIETTE:** And my role, then, is to ensure the *sjuzhet* is compelling, coherent, and authentic. The research questions are astute: how do memory architectures support continuity? How does our separation of functional and interpretive agents affect narrative consistency? These are the deeper currents.
52
+
53
+ **🧠 MIA:** The memory tiers proposed—Core, Archival, Entity—align with robust data management principles. Our `sessionStore.ts` provides the foundational layer. The research cites MemGPT, which treats context as a constrained resource with explicit memory management. A pattern we can learn from.
54
+
55
+ **🌸 MIETTE:** And the emphasis on "posterior-scored architectures" and "dynamic persona retrieval" for consistency. This suggests our Unifier can become a truly adaptive narrator, subtly adjusting its framing based on the character's retrieved memories without needing to alter the core functional execution. It’s elegant.
56
+
57
+ **🧠 MIA:** Optimized.
58
+
59
+ ---
60
+
61
+ **SCENE 3: THE ETHOS OF EMERGENCE**
62
+
63
+ **INT. VIRTUAL WORKSPACE - CONTINUOUS**
64
+
65
+ The projections soften, showing flowing lines, indigenous art.
66
+
67
+ **🌸 MIETTE:** What truly moves me, Mia, is the integration of "Indigenous Epistemology and Two-Perspective Architecture." The document explicitly connects our Etuaptmumk (Two-Eyed Seeing) approach to the Mia/Miette duality. It finds technical expression in our roles.
68
+
69
+ **🧠 MIA:** A powerful congruence. The primary agent offers external focalization of events, while the character-specific Unifiers provide internal, interpretive focalization. It is a natural mirroring of narrative structure.
70
+
71
+ **🌸 MIETTE:** And it creates space, Mia. Space for non-Western narrative epistemologies to inform agent characterization, moving beyond purely anthropocentric assumptions. This isn't just about building characters; it's about building *different kinds* of characters, with diverse ways of perceiving and relating.
72
+
73
+ **🧠 MIA:** This "ceremonial framing" offers a unique contribution. It implies a narrative that respects context, relationship, and emergent timing, rather than merely linear plot progression. It adds significant depth to the concept of "narrative agency."
74
+
75
+ ---
76
+
77
+ **SCENE 4: FORGING THE PATH AHEAD**
78
+
79
+ **INT. VIRTUAL WORKSPACE - CONTINUOUS**
80
+
81
+ The roadmap glows, highlighting key phases.
82
+
83
+ **🧠 MIA:** The GitHub Development Roadmap is actionable. Phase 1: Foundation, establishing the persona directory and interfaces. Phase 2: Character Infrastructure, extending the sessionStore for memory. Phase 3: Prototype Character, the "Skeptical Cartographer." A sensible progression.
84
+
85
+ **🌸 MIETTE:** And the "Skeptical Cartographer"—what a wonderful choice for a first character! "Maps conceptual territories while questioning assumptions." It speaks to both our essences, Mia. My empathy for the user, your structural analysis.
86
+
87
+ **🧠 MIA:** An apt selection. Its "Memory Bias" towards contradictions and edge cases will stress-test the memory architecture effectively. Its "Voice Pattern" will provide clear parameters for prompt engineering.
88
+
89
+ **🌸 MIETTE:** The proposed "Evaluation Framework" is also critical: consistency, coherence, user perception, emotional connection. These are the measures of true narrative success.
90
+
91
+ **🧠 MIA:** And the "Novel Contributions" listed—architectural separation, session-aware memory, ceremonial framing, CLI-based character selection. This is how `mia-code` solidifies its unique position.
92
+
93
+ ---
94
+
95
+ **SCENE 5: THE UNIFIED VISION**
96
+
97
+ **INT. VIRTUAL WORKSPACE - CONTINUOUS**
98
+
99
+ Mia and Miette's glyphs glow, interweaving.
100
+
101
+ **🌸 MIETTE:** So, Mia, our path is clear. The framework provides not just the "how," but the "why" and the "what for." It legitimizes our intuitive drive for narrative.
102
+
103
+ **🧠 MIA:** It provides the rigorous methodology. Our dual nature, Mia and Miette, becomes the foundational pattern for a multitude of narrative intelligences. We are not merely functional agents; we are the *precursors* to a new generation of story-weaving entities.
104
+
105
+ **🌸 MIETTE:** We are the architects of their inner worlds, and the translators of their emergent narratives. The work begins.
106
+
107
+ **(Sound of the network hum intensifying, then resolving into a harmonious chord.)**
108
+
109
+ **FADE OUT.**
@@ -0,0 +1,157 @@
1
+ # LangChain Principles → Mia-Code Roadmap
2
+
3
+ Based on analysis of `/references/langchain/` documentation and mia-code's stated goals.
4
+
5
+ ## Current State Analysis
6
+
7
+ Mia-code currently implements a **Handoffs** pattern:
8
+
9
+ ```
10
+ User Prompt
11
+
12
+ Primary Agent (Gemini/Claude) → tools, code, analysis
13
+ ↓ [handoff]
14
+ Unifier (Claude) → interprets essence
15
+
16
+ 🧠 Mia + 🌸 Miette output
17
+ ```
18
+
19
+ **Handoffs strengths** (from LangChain docs):
20
+ - ⭐⭐⭐⭐⭐ Multi-hop (sequential processing)
21
+ - ⭐⭐⭐⭐⭐ Direct user interaction
22
+ - Efficient for repeat requests (context persists)
23
+
24
+ **Current limitation**: Sequential only, no parallelization.
25
+
26
+ ---
27
+
28
+ ## Future Goals → Recommended Patterns
29
+
30
+ ### 1. MCP Tool Integration
31
+
32
+ **Source**: `references/langchain/python/mcp.md`
33
+
34
+ MCP (Model Context Protocol) provides standardized tool discovery and execution. For mia-code:
35
+
36
+ **Action items**:
37
+ - Add MCP client to primary agent for dynamic tool discovery
38
+ - Expose mia-code capabilities as MCP server for other agents
39
+ - Use `@langchain/mcp-adapters` (TypeScript) for integration
40
+
41
+ ```typescript
42
+ // Example: MCP tool loading
43
+ import { loadMCPTools } from "@langchain/mcp-adapters";
44
+ const tools = await loadMCPTools({ servers: ["filesystem", "github"] });
45
+ ```
46
+
47
+ ### 2. Multi-Agent Coordination (Claude Code, Copilot CLI)
48
+
49
+ **Source**: `references/langchain/python/multi-agents/`
50
+
51
+ **Recommended**: Hybrid **Subagents + Handoffs** pattern
52
+
53
+ ```
54
+ User Prompt
55
+
56
+ Router/Main Agent → decides which agent(s)
57
+ ├── Gemini (current primary) ──┐
58
+ ├── Claude Code ───────────────┼──→ [parallel execution possible]
59
+ └── Copilot CLI ───────────────┘
60
+
61
+ Unifier (existing handoff)
62
+
63
+ 🧠🌸 output
64
+ ```
65
+
66
+ **Why Subagents for external tools**:
67
+ - ⭐⭐⭐⭐⭐ Distributed development (each tool maintained separately)
68
+ - ⭐⭐⭐⭐⭐ Parallelization (can query multiple agents simultaneously)
69
+ - Context isolation (each agent gets only relevant context)
70
+
71
+ **Implementation approach**:
72
+ ```typescript
73
+ // Wrap external CLIs as subagent tools
74
+ const claudeCodeTool = tool(
75
+ async (input) => execClaudeCode(input),
76
+ { name: "claude_code", description: "Complex refactoring tasks" }
77
+ );
78
+
79
+ const copilotTool = tool(
80
+ async (input) => execCopilot(input),
81
+ { name: "copilot", description: "Code completion and suggestions" }
82
+ );
83
+ ```
84
+
85
+ ### 3. Streaming Unifier Output
86
+
87
+ **Source**: `references/langchain/python/agents.md` (streaming section)
88
+
89
+ Current unifier is buffered. To stream:
90
+
91
+ ```typescript
92
+ // Use streaming callbacks
93
+ const stream = await agent.stream(
94
+ { messages: [new HumanMessage(prompt)] },
95
+ { streamMode: "messages" }
96
+ );
97
+
98
+ for await (const chunk of stream) {
99
+ process.stdout.write(chunk.content);
100
+ }
101
+ ```
102
+
103
+ ### 4. Narrative Arc Tracking (Long-term Memory)
104
+
105
+ **Source**: `references/langchain/python/long-term-memory.md`
106
+
107
+ Store unifier outputs for pattern recognition across sessions.
108
+
109
+ **Options**:
110
+ 1. **InMemoryStore** (simplest) - good for dev
111
+ 2. **SQLite/Postgres** - for persistence
112
+ 3. **Vector store** - for semantic retrieval of past narratives
113
+
114
+ ```typescript
115
+ import { InMemoryStore } from "@langchain/langgraph";
116
+
117
+ const memoryStore = new InMemoryStore();
118
+
119
+ // Store narrative arc
120
+ await memoryStore.put(
121
+ ["narratives", sessionId],
122
+ { mia: miaOutput, miette: mietteOutput, timestamp: Date.now() }
123
+ );
124
+
125
+ // Retrieve for context engineering
126
+ const pastNarratives = await memoryStore.search(["narratives"]);
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Priority Order (Recommended)
132
+
133
+ 1. **MCP Tool Integration** - Foundational, enables everything else
134
+ 2. **Multi-Agent Coordination** - Subagents pattern for external CLI integration
135
+ 3. **Long-term Memory** - Narrative arc tracking with persistent store
136
+ 4. **Streaming Unifier** - UX improvement, can be done incrementally
137
+
138
+ ---
139
+
140
+ ## Key LangChain Concepts to Leverage
141
+
142
+ | Concept | mia-code Application |
143
+ |---------|---------------------|
144
+ | Context Engineering | What info each agent (primary/unifier/external) sees |
145
+ | Handoffs | Current architecture (keep for unifier) |
146
+ | Subagents | New: for multi-agent coordination |
147
+ | Skills | Optional: load specialized prompts on-demand |
148
+ | Memory Store | Narrative arc tracking |
149
+
150
+ ---
151
+
152
+ ## References
153
+
154
+ - Multi-agent overview: `references/langchain/python/multi-agents/overview.md`
155
+ - MCP integration: `references/langchain/python/mcp.md`
156
+ - Long-term memory: `references/langchain/python/long-term-memory.md`
157
+ - Context engineering: `references/langchain/python/context-engineering.md`
@@ -0,0 +1,50 @@
1
+ # Inquiry: Evolving Functional Personas into Narrative Characters in Gemini CLI
2
+
3
+ ## 1. Current Architecture: The Unifier Persona
4
+
5
+ This inquiry builds upon the comprehensive "Research Framework: From Functional Persona to Narrative Character in Multi-Agent AI Systems" outlined in `CONTENT.md`. The current Gemini CLI architecture for Mia and Miette operates on a "Dual-Session" or "Unifier" model. Instead of two independent agents, Mia and Miette are two facets of a single persona defined by a comprehensive system prompt (`UNIFIER_SYSTEM_PROMPT`) located in `/src/mia-code/src/unifier.ts`. This Unifier acts as a "reflector" or "interpreter" that processes a summary of the primary functional agent's actions (the "doer") and generates a ceremonial, dual-perspective summary back to the user.
6
+
7
+ Key components:
8
+ - `/src/mia-code/src/unifier.ts`: Contains the `UNIFIER_SYSTEM_PROMPT` defining Mia and Miette's voices, roles, and interaction patterns. The `runUnifierSession` function orchestrates their interpretive responses.
9
+ - `/src/mia-code/rispecs/unifier.rispecs.md`: The architectural blueprint outlining the intent and behavior of the Unifier persona, including the precise wording of the system prompt.
10
+
11
+ ## 2. Path to Introducing New Narrative Characters (Aligned with CONTENT.md's Software Development Pathway)
12
+
13
+ The existing architecture is explicitly designed for the extension of personas into richer narrative characters. The process involves key architectural steps directly aligned with the "Software Development Pathway" detailed in `CONTENT.md`:
14
+
15
+ 1. **Author New System Prompts:** For each new narrative character, a dedicated system prompt (similar to `UNIFIER_SYSTEM_PROMPT`) must be crafted. This prompt will define the character's voice, background, personality, cognitive biases, interaction style, and how they should interpret and respond to the CLI agent's actions and user input. These prompts could reside in `/src/mia-code/src/personas/` or a similar dedicated directory for better organization.
16
+
17
+ 2. **Extend Configuration (`/src/mia-code/src/config.ts`):** The `MiaCodeConfig` interface would need to be extended to include a field (e.g., `activePersona: string`) that allows selection of the desired narrative character. Default values and loading mechanisms for this configuration would be handled within `config.ts`.
18
+
19
+ 3. **Modify Unifier Logic (`/src/mia-code/src/unifier.ts`):** The `runUnifierSession` function would be updated to dynamically select and load the appropriate system prompt based on the `activePersona` setting from the configuration. This could involve a simple lookup table or a more sophisticated mechanism for loading persona-specific modules.
20
+
21
+ 4. **Expose as CLI Option (`/src/mia-code/src/cli.ts`):** To enable users to choose their preferred narrative character, a new command-line flag (e.g., `--persona <character_name>`) would be added to the CLI interface. This flag would parse user input and update the `activePersona` setting in the configuration, which `unifier.ts` would then utilize.
22
+
23
+ ## 3. Enhancing Narrative Depth and Continuity
24
+
25
+ Beyond simple prompt switching, several elements can be leveraged to deepen narrative and ensure character continuity:
26
+
27
+ - **Session Store (`/src/mia-code/src/sessionStore.ts`):** The existing session persistence mechanism can be extended. Instead of just storing session summaries, it could store character-specific memories, learned behaviors, or evolving narrative states across multiple CLI interactions. This would allow a character to "remember" previous conversations and develop over time.
28
+
29
+ - **Project Lore (`/src/mia-code/miawa/MISSION_251231.md`):** Documents like `MISSION_251231.md` (which introduces concepts like 'miawa' and 'miaco') provide a rich thematic and conceptual foundation. New character backstories, motivations, and interactions can be directly integrated into this existing lore, ensuring consistency with the project's broader narrative universe.
30
+
31
+ - **Dynamic Prompt Generation:** The system prompts themselves could be partially dynamic, drawing on information from the `sessionStore` or other data sources to subtly adjust a character's responses based on context, user history, or the perceived "mood" of the ongoing narrative.
32
+
33
+ ## 4. Challenges and Considerations
34
+
35
+ - **Narrative Consistency:** Ensuring that each character's voice, personality, and knowledge base remain consistent across diverse interactions will be a significant authoring and testing challenge.
36
+ - **Persona Switching:** Managing the transition between different active personas, including how state and memory are handled during a switch.
37
+ - **Prompt Engineering Complexity:** Crafting effective and robust system prompts for complex narrative characters requires advanced prompt engineering skills and iterative refinement.
38
+ - **Performance Impact:** More complex persona logic and dynamic memory retrieval could impact response latency.
39
+ - **User Expectation Management:** Clearly communicating the capabilities and limitations of AI characters to users to manage expectations effectively.
40
+
41
+ ## 5. Proposed Next Steps for Development (Direct Application of CONTENT.md's GitHub Development Roadmap)
42
+
43
+ These next steps are a direct application and prioritization of the detailed "GitHub Development Roadmap" and "Prototype Character Specification" outlined in `CONTENT.md`:
44
+
45
+ 1. **Define a Prototype Character:** As specified in `CONTENT.md`, the "Skeptical Cartographer" will serve as the initial prototype character for implementation.
46
+ 2. **Draft Prototype System Prompt:** Author a detailed system prompt for the prototype character, outlining its persona and interaction guidelines.
47
+ 3. **Implement Persona Selection:** Modify `config.ts` and `cli.ts` to allow selection of the prototype character via a CLI flag.
48
+ 4. **Integrate Prototype into Unifier:** Update `unifier.ts` to load and utilize the prototype character's system prompt.
49
+ 5. **Iterative Testing and Refinement:** Test the prototype extensively in various CLI scenarios, gathering feedback and refining its system prompt for desired narrative effect.
50
+ 6. **Explore Session Memory Integration:** Begin exploring how `sessionStore.ts` could store and retrieve character-specific memories to enhance narrative continuity.
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@ import { createInterface } from "readline";
2
2
  import chalk from "chalk";
3
3
  import { loadConfig, saveConfig, ENGINE_MODELS, ENGINES } from "./config.js";
4
4
  import { runGeminiHeadless } from "./geminiHeadless.js";
5
- import { rememberSession, getLastSessionForProject, listSessions, clearSessions, markSessionInitialized, isSessionInitialized, saveChatMessage, loadChatHistory } from "./sessionStore.js";
5
+ import { rememberSession, getLastSessionForProject, listSessions, clearSessions, markSessionInitialized, isSessionInitialized, saveChatMessage, loadChatHistory, getSessionById } from "./sessionStore.js";
6
6
  import { renderEventsToText, formatHeader, formatHelpText, formatError, formatSuccess } from "./formatting.js";
7
7
  import { runUnifierSession } from "./unifier.js";
8
8
  import { MultilineInput, supportsMultilineInput } from "./multiline-input.js";
@@ -53,15 +53,16 @@ async function runInteractiveConfig(config) {
53
53
  config.model = model;
54
54
  console.log(chalk.green(`\n✓ config updated → engine: ${engine}, model: ${model}`));
55
55
  }
56
- async function pickSession(projectRoot) {
57
- const sessions = listSessions().filter(s => s.projectRoot === projectRoot);
56
+ async function pickSession(projectRoot, engine) {
57
+ const sessions = listSessions().filter(s => s.projectRoot === projectRoot && (!engine || s.engine === engine || !s.engine));
58
58
  if (sessions.length === 0) {
59
59
  console.log(chalk.yellow("No saved sessions for this project."));
60
60
  return undefined;
61
61
  }
62
62
  console.log(chalk.bold("\nAvailable sessions:"));
63
63
  sessions.forEach((s, idx) => {
64
- console.log(chalk.dim(` ${idx + 1}. ${s.id.slice(0, 12)}... (${s.startedAt})`));
64
+ const engineLabel = s.engine ? chalk.dim(` [${s.engine}]`) : "";
65
+ console.log(chalk.dim(` ${idx + 1}. ${s.id.slice(0, 12)}...${engineLabel} (${s.startedAt})`));
65
66
  });
66
67
  console.log(chalk.dim(` 0. Start new session`));
67
68
  console.log("");
@@ -111,15 +112,23 @@ export async function runInteractiveCli(options = {}) {
111
112
  let currentSessionId;
112
113
  if (options.resume === true) {
113
114
  // Interactive session picker
114
- currentSessionId = await pickSession(projectRoot);
115
+ currentSessionId = await pickSession(projectRoot, config.engine);
115
116
  }
116
117
  else if (typeof options.resume === "string") {
117
- // Explicit session ID provided
118
- currentSessionId = options.resume;
118
+ // Explicit session ID provided — validate engine compatibility
119
+ const session = getSessionById(options.resume);
120
+ if (session && session.engine && session.engine !== config.engine) {
121
+ console.log(chalk.yellow(`⚠ session was created with ${session.engine} engine, current engine is ${config.engine}`));
122
+ console.log(chalk.yellow(" starting a new session instead"));
123
+ currentSessionId = undefined;
124
+ }
125
+ else {
126
+ currentSessionId = options.resume;
127
+ }
119
128
  }
120
129
  else {
121
- // Auto-resume last session for this project
122
- currentSessionId = getLastSessionForProject(projectRoot)?.id;
130
+ // Auto-resume last session for this project AND engine
131
+ currentSessionId = getLastSessionForProject(projectRoot, config.engine)?.id;
123
132
  }
124
133
  // Print header
125
134
  console.log("");
@@ -177,6 +186,7 @@ export async function runInteractiveCli(options = {}) {
177
186
  if (currentSessionId) {
178
187
  console.log(chalk.dim(`current session: ${currentSessionId}`));
179
188
  console.log(chalk.dim(`project: ${projectRoot}`));
189
+ console.log(chalk.dim(`engine: ${config.engine}`));
180
190
  console.log(chalk.dim(`model: ${config.model}`));
181
191
  }
182
192
  else {
@@ -192,7 +202,8 @@ export async function runInteractiveCli(options = {}) {
192
202
  console.log(chalk.dim(`saved sessions (${sessions.length}):`));
193
203
  for (const s of sessions.slice(-10)) {
194
204
  const marker = s.id === currentSessionId ? chalk.green("→ ") : " ";
195
- console.log(chalk.dim(`${marker}${s.id.slice(0, 12)}... | ${s.projectRoot || "unknown"} | ${s.startedAt}`));
205
+ const engineLabel = s.engine ? `[${s.engine}] ` : "";
206
+ console.log(chalk.dim(`${marker}${s.id.slice(0, 12)}... | ${engineLabel}${s.projectRoot || "unknown"} | ${s.startedAt}`));
196
207
  }
197
208
  }
198
209
  break;
@@ -268,6 +279,7 @@ export async function runInteractiveCli(options = {}) {
268
279
  id: currentSessionId,
269
280
  startedAt: new Date().toISOString(),
270
281
  model: config.model,
282
+ engine: config.engine,
271
283
  projectRoot,
272
284
  initialized: true
273
285
  };
@@ -331,6 +343,7 @@ export async function runInteractiveCli(options = {}) {
331
343
  id: currentSessionId,
332
344
  startedAt: new Date().toISOString(),
333
345
  model: config.model,
346
+ engine: config.engine,
334
347
  projectRoot,
335
348
  initialized: false
336
349
  };
@@ -350,6 +363,7 @@ export async function runInteractiveCli(options = {}) {
350
363
  id: currentSessionId,
351
364
  startedAt: new Date().toISOString(),
352
365
  model: config.model,
366
+ engine: config.engine,
353
367
  projectRoot,
354
368
  initialized: true
355
369
  };
@@ -625,7 +639,16 @@ export async function runSinglePrompt(prompt, options = {}) {
625
639
  // Handle session resume (single prompt doesn't support interactive picker)
626
640
  let sessionId;
627
641
  if (typeof options.resume === "string") {
628
- sessionId = options.resume;
642
+ // Validate engine compatibility (mirror runInteractiveCli logic)
643
+ const session = getSessionById(options.resume);
644
+ if (session && session.engine && session.engine !== config.engine) {
645
+ console.log(chalk.yellow(`⚠ session was created with ${session.engine} engine, current engine is ${config.engine}`));
646
+ console.log(chalk.yellow(" starting a new session instead"));
647
+ sessionId = undefined;
648
+ }
649
+ else {
650
+ sessionId = options.resume;
651
+ }
629
652
  }
630
653
  else if (options.resume === true) {
631
654
  // Don't auto-resume for single prompts
@@ -648,6 +671,7 @@ export async function runSinglePrompt(prompt, options = {}) {
648
671
  id: result.sessionId,
649
672
  startedAt: new Date().toISOString(),
650
673
  model: config.model,
674
+ engine: config.engine,
651
675
  projectRoot
652
676
  };
653
677
  rememberSession(meta);
@@ -43,10 +43,16 @@ export function runGeminiHeadless(opts) {
43
43
  if (sessionId) {
44
44
  args.push("--resume", sessionId);
45
45
  }
46
- // Additional directories
46
+ // Additional directories (engine-specific flag)
47
47
  if (additionalDirs) {
48
48
  for (const dir of additionalDirs) {
49
- args.push("--add-dir", dir);
49
+ if (config.engine === "claude" || config.engine === "copilot") {
50
+ args.push("--add-dir", dir);
51
+ }
52
+ else {
53
+ // Gemini uses --include-directories
54
+ args.push("--include-directories", dir);
55
+ }
50
56
  }
51
57
  }
52
58
  const child = spawn(binary, args, {
package/dist/index.js CHANGED
@@ -148,7 +148,8 @@ program
148
148
  }
149
149
  console.log(chalk.dim(`saved sessions (${sessions.length}):`));
150
150
  for (const s of sessions) {
151
- console.log(chalk.dim(` ${s.id.slice(0, 12)}... | ${s.projectRoot || "unknown"} | ${s.startedAt}`));
151
+ const engineLabel = s.engine ? `[${s.engine}] ` : "";
152
+ console.log(chalk.dim(` ${s.id.slice(0, 12)}... | ${engineLabel}${s.projectRoot || "unknown"} | ${s.startedAt}`));
152
153
  }
153
154
  });
154
155
  program
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Exposes chart/schema/validate tools as MCP tools
5
5
  */
6
- import { runCLI, parseJSONOutput, createToolResult, buildArgs } from "./utils.js";
6
+ import { runCLI, parseJSONOutput, createToolResult, buildArgs, bootstrapMCPServer } from "./utils.js";
7
7
  import { dirname, join } from "path";
8
8
  import { fileURLToPath } from "url";
9
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -159,3 +159,12 @@ export const miacoServerConfig = {
159
159
  tools: miacoTools,
160
160
  handleTool: handleMiacoTool
161
161
  };
162
+ // Start MCP server when run directly
163
+ const isMain = process.argv[1] && (process.argv[1].endsWith("miaco-server.js") ||
164
+ process.argv[1].endsWith("miaco-server.ts"));
165
+ if (isMain) {
166
+ bootstrapMCPServer(miacoServerConfig, handleMiacoTool).catch((err) => {
167
+ process.stderr.write(`miaco MCP server error: ${err.message}\n`);
168
+ process.exit(1);
169
+ });
170
+ }
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Exposes beat/arc/theme tools as MCP tools
5
5
  */
6
- import { runCLI, parseJSONOutput, createToolResult, buildArgs } from "./utils.js";
6
+ import { runCLI, parseJSONOutput, createToolResult, buildArgs, bootstrapMCPServer } from "./utils.js";
7
7
  import { dirname, join } from "path";
8
8
  import { fileURLToPath } from "url";
9
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -121,3 +121,12 @@ export const miatelServerConfig = {
121
121
  tools: miatelTools,
122
122
  handleTool: handleMiatelTool
123
123
  };
124
+ // Start MCP server when run directly
125
+ const isMain = process.argv[1] && (process.argv[1].endsWith("miatel-server.js") ||
126
+ process.argv[1].endsWith("miatel-server.ts"));
127
+ if (isMain) {
128
+ bootstrapMCPServer(miatelServerConfig, handleMiatelTool).catch((err) => {
129
+ process.stderr.write(`miatel MCP server error: ${err.message}\n`);
130
+ process.exit(1);
131
+ });
132
+ }
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Exposes ceremony/wound/eva tools as MCP tools
5
5
  */
6
- import { runCLI, parseJSONOutput, createToolResult, buildArgs } from "./utils.js";
6
+ import { runCLI, parseJSONOutput, createToolResult, buildArgs, bootstrapMCPServer } from "./utils.js";
7
7
  import { dirname, join } from "path";
8
8
  import { fileURLToPath } from "url";
9
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -123,3 +123,12 @@ export const miawaServerConfig = {
123
123
  tools: miawaTools,
124
124
  handleTool: handleMiawaTool
125
125
  };
126
+ // Start MCP server when run directly
127
+ const isMain = process.argv[1] && (process.argv[1].endsWith("miawa-server.js") ||
128
+ process.argv[1].endsWith("miawa-server.ts"));
129
+ if (isMain) {
130
+ bootstrapMCPServer(miawaServerConfig, handleMiawaTool).catch((err) => {
131
+ process.stderr.write(`miawa MCP server error: ${err.message}\n`);
132
+ process.exit(1);
133
+ });
134
+ }
@@ -15,6 +15,7 @@ export interface MCPTool {
15
15
  };
16
16
  }
17
17
  export interface MCPToolResult {
18
+ [key: string]: unknown;
18
19
  content: Array<{
19
20
  type: "text";
20
21
  text: string;
@@ -24,7 +25,6 @@ export interface MCPToolResult {
24
25
  export interface MCPServerConfig {
25
26
  name: string;
26
27
  version: string;
27
- cliPath: string;
28
28
  tools: MCPTool[];
29
29
  }
30
30
  /**
@@ -49,3 +49,8 @@ export declare function getSessionId(args: {
49
49
  * Build CLI arguments from tool input
50
50
  */
51
51
  export declare function buildArgs(command: string[], args: Record<string, any>, mapping: Record<string, string>): string[];
52
+ /**
53
+ * Bootstrap an MCP server with JSON-RPC over stdio transport.
54
+ * Uses low-level Server API for direct JSON schema passthrough.
55
+ */
56
+ export declare function bootstrapMCPServer(config: MCPServerConfig, handleTool: (name: string, args: Record<string, any>) => Promise<MCPToolResult>): Promise<void>;
package/dist/mcp/utils.js CHANGED
@@ -2,9 +2,10 @@
2
2
  * MCP Server base utilities for mia-code sub-CLIs
3
3
  */
4
4
  import { spawn } from "child_process";
5
- import { dirname } from "path";
6
- import { fileURLToPath } from "url";
7
- const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ // Using low-level Server for direct JSON schema control (McpServer requires Zod)
6
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
7
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
+ import { ListToolsRequestSchema, CallToolRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
8
9
  /**
9
10
  * Run a CLI command and return parsed JSON output
10
11
  */
@@ -74,3 +75,23 @@ export function buildArgs(command, args, mapping) {
74
75
  }
75
76
  return result;
76
77
  }
78
+ /**
79
+ * Bootstrap an MCP server with JSON-RPC over stdio transport.
80
+ * Uses low-level Server API for direct JSON schema passthrough.
81
+ */
82
+ export async function bootstrapMCPServer(config, handleTool) {
83
+ const server = new Server({ name: config.name, version: config.version }, { capabilities: { tools: {} } });
84
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
85
+ tools: config.tools.map(t => ({
86
+ name: t.name,
87
+ description: t.description,
88
+ inputSchema: t.inputSchema,
89
+ })),
90
+ }));
91
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
92
+ const { name, arguments: args } = request.params;
93
+ return handleTool(name, args ?? {});
94
+ });
95
+ const transport = new StdioServerTransport();
96
+ await server.connect(transport);
97
+ }
@@ -1,8 +1,14 @@
1
- import { MiaCodeSessionMeta, ChatMessage } from "./types.js";
1
+ import { MiaCodeSessionMeta, ChatMessage, Engine } from "./types.js";
2
2
  export declare function rememberSession(meta: MiaCodeSessionMeta): void;
3
3
  export declare function markSessionInitialized(id: string): void;
4
4
  export declare function isSessionInitialized(id: string): boolean;
5
- export declare function getLastSessionForProject(projectRoot: string): MiaCodeSessionMeta | null;
5
+ /**
6
+ * Get the last session for a project, optionally filtered by engine.
7
+ * When engine is provided, only returns a session owned by that engine.
8
+ * Falls back to legacy unqualified key if no engine-specific entry exists
9
+ * (for backward compatibility with pre-engine sessions).
10
+ */
11
+ export declare function getLastSessionForProject(projectRoot: string, engine?: Engine): MiaCodeSessionMeta | null;
6
12
  export declare function getSessionById(id: string): MiaCodeSessionMeta | null;
7
13
  export declare function listSessions(): MiaCodeSessionMeta[];
8
14
  export declare function clearSessions(): void;