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,143 @@
1
+ # RISE-040: Code Search Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/040-code-search-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides a code search tool that reaches beyond the local filesystem to search across GitHub repositories, organizations, and the broader open-source ecosystem. When the agent needs to find usage patterns, discover implementations, or reference code outside the current project, it uses GitHub's code search API with its rich query syntax. For local searches, the tool falls back to ripgrep — ensuring fast, reliable results whether the target is remote or local. The agent gains the same code discovery capability a human developer has when searching on github.com.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - Code search is limited to the local project directory via the CLI's built-in grep/find tools
14
+ - The agent cannot search across an organization's repositories to find usage patterns
15
+ - Discovering how other projects solve a similar problem requires the developer to manually search and paste results
16
+ - There is no integration with GitHub's search syntax (language filters, org scopes, path patterns)
17
+ - Local search via grep is powerful but produces raw line matches without repository or file context
18
+ - The agent cannot answer questions like "how does our auth library handle token refresh across all our services?"
19
+
20
+ **Desired State:**
21
+ - A `code_search` tool accepts queries in GitHub code search syntax
22
+ - Remote search returns: matching files with code snippets, repository info, file paths, and match highlights
23
+ - Pagination support for large result sets
24
+ - GitHub authentication enables searching private repositories and organization code
25
+ - Local fallback via ripgrep when GitHub is unavailable or when searching the current project
26
+ - Results formatted as code blocks with file and repository context for clear presentation
27
+ - Rate limiting handled transparently with automatic retry
28
+
29
+ ## Desired Outcome Definition
30
+
31
+ The developer asks: "How do other services in our org handle rate limiting?" The agent issues a code search: `"rate limit" language:TypeScript org:myorg`. GitHub returns 23 matching files across 8 repositories. The agent presents the top results with code snippets, identifies common patterns, and recommends an approach consistent with the organization's existing code.
32
+
33
+ ## Natural Language Functional Description
34
+
35
+ ### Input Format
36
+
37
+ ```typescript
38
+ interface CodeSearchInput {
39
+ query: string; // GitHub search syntax query
40
+ scope?: "github" | "local"; // default: "github", falls back to "local" if unavailable
41
+ page?: number; // pagination (default: 1)
42
+ perPage?: number; // results per page (default: 20, max: 100)
43
+ }
44
+ ```
45
+
46
+ ### GitHub Search Syntax
47
+
48
+ The tool supports GitHub's full code search syntax:
49
+
50
+ - `content:authenticate` — search for specific content
51
+ - `language:TypeScript` — filter by programming language
52
+ - `org:myorg` — scope to an organization
53
+ - `repo:owner/name` — scope to a specific repository
54
+ - `path:src/auth` — filter by file path
55
+ - `extension:ts` — filter by file extension
56
+ - Boolean operators: `AND`, `OR`, `NOT`
57
+
58
+ Examples:
59
+ - `"useEffect" language:TypeScript org:myorg` — find React hooks usage across org
60
+ - `content:authenticate path:middleware extension:ts` — find auth middleware in TypeScript
61
+ - `"TODO" repo:myorg/backend` — find TODOs in a specific repo
62
+
63
+ ### Remote Search (GitHub)
64
+
65
+ When scope is "github" (default):
66
+
67
+ 1. Authenticate using the configured GitHub token (RISE-029)
68
+ 2. Send the query to GitHub's code search API
69
+ 3. Parse results into structured format with code snippets
70
+ 4. Handle rate limiting: if 403 with rate limit headers, wait and retry
71
+ 5. Return paginated results with metadata
72
+
73
+ ### Local Search (ripgrep fallback)
74
+
75
+ When scope is "local" or GitHub is unavailable:
76
+
77
+ 1. Convert the query to ripgrep arguments (basic pattern extraction)
78
+ 2. Execute `rg --json` for structured output
79
+ 3. Format results to match the remote result structure
80
+ 4. No pagination needed — results stream directly
81
+
82
+ The fallback is automatic: if the GitHub API returns a network error, the tool silently falls back to local search and notes this in the result metadata.
83
+
84
+ ### Output Format
85
+
86
+ ```json
87
+ {
88
+ "source": "github",
89
+ "totalCount": 23,
90
+ "page": 1,
91
+ "results": [
92
+ {
93
+ "repository": "myorg/auth-service",
94
+ "path": "src/middleware/rateLimiter.ts",
95
+ "url": "https://github.com/myorg/auth-service/blob/main/src/middleware/rateLimiter.ts",
96
+ "snippet": "export function rateLimiter(limit: number, window: number) {\n const tokens = new Map<string, number>();\n ...\n}",
97
+ "matchLines": [12, 13, 14],
98
+ "language": "TypeScript"
99
+ }
100
+ ]
101
+ }
102
+ ```
103
+
104
+ ### Rate Limit Management
105
+
106
+ GitHub's search API has strict rate limits (30 requests/minute for authenticated users). The tool:
107
+
108
+ - Tracks remaining requests from response headers
109
+ - Waits automatically when rate limited (using `retry-after` or calculated backoff)
110
+ - Reports rate limit status in result metadata
111
+ - Suggests local search when rate limit is exhausted
112
+
113
+ ### Authentication
114
+
115
+ The tool requires a GitHub token for:
116
+ - Searching private repositories
117
+ - Higher rate limits (30/min vs 10/min unauthenticated)
118
+ - Organization-scoped searches
119
+
120
+ If no token is configured, the tool searches only public repositories and warns about limited access.
121
+
122
+ ## Supporting Structures
123
+
124
+ - **Tool Registry (RISE-034)** registers the code_search tool with id `code_search`
125
+ - **Tool Context Injection (RISE-035)** provides session context and cancellation signal
126
+ - **Provider Authentication (RISE-029)** supplies GitHub authentication tokens
127
+ - **Tool Output Truncation (RISE-036)** truncates large result sets to prevent context overflow
128
+ - **Web Fetch Tool (RISE-041)** provides the HTTP client used for GitHub API requests
129
+ - **Named Error System (RISE-006)** provides CodeSearchRateLimitError, CodeSearchAuthError
130
+
131
+ ## Creative Advancement Scenarios
132
+
133
+ **Scenario 1 — Cross-Org Pattern Discovery:**
134
+ The developer asks "how do our services implement health checks?" The agent searches `path:health language:TypeScript org:ourcompany`. It finds 12 implementations across 8 services, identifies that 10 use the same pattern (express endpoint returning JSON status), and recommends following the established convention.
135
+
136
+ **Scenario 2 — Open Source Reference:**
137
+ The agent needs to implement a trie data structure. It searches `"class Trie" language:TypeScript stars:>100`. It finds well-tested implementations in popular repositories and adapts the approach for the current project, citing the source.
138
+
139
+ **Scenario 3 — Automatic Local Fallback:**
140
+ The developer is on a plane with no internet. The agent tries a GitHub search, gets a network error, automatically falls back to `rg` for local search, and notes "Searched locally (GitHub unavailable)." The workflow continues uninterrupted.
141
+
142
+ **Scenario 4 — Usage Impact Analysis:**
143
+ Before renaming a shared utility function, the agent searches `content:parseConfig repo:myorg/shared-utils` across all organization repos that import the shared library. It finds 34 consumers and estimates the impact of the rename. The developer now has data to decide whether to rename or deprecate.
@@ -0,0 +1,131 @@
1
+ # RISE-041: Web Fetch Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/041-web-fetch-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides a web fetch tool that retrieves content from URLs, transforming raw web responses into agent-friendly formats. HTML pages become readable markdown. JSON responses are formatted and navigable. Binary content is identified and handled gracefully. The agent can read documentation, inspect API endpoints, fetch configuration files, and access any publicly available web resource — extending its knowledge beyond the local filesystem and its training data. Security boundaries ensure the tool cannot be used to probe internal networks or access local files via URL schemes.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - The agent cannot access web content directly — it relies on training data and user-pasted content
14
+ - When the agent needs to read documentation, the developer must manually copy-paste relevant sections
15
+ - API responses cannot be inspected interactively — the developer runs curl and pastes output
16
+ - There is no content transformation — raw HTML is unusable in a conversation context
17
+ - No security boundaries exist for URL access — a tool with unrestricted fetch could probe internal services
18
+
19
+ **Desired State:**
20
+ - A `web_fetch` tool retrieves content from any URL with configurable method, headers, and body
21
+ - HTML responses are automatically converted to clean markdown for readable consumption
22
+ - JSON responses are pretty-formatted with optional path navigation
23
+ - Binary content is detected and returns metadata (size, content-type) instead of raw bytes
24
+ - Configurable response size limits prevent context overflow from large pages
25
+ - URL allowlist/blocklist prevents access to internal networks and `file://` schemes
26
+ - Timeout and streaming support for large or slow responses
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ The developer says "check what the Express.js middleware docs say about error handling." The agent fetches the Express error handling documentation URL, receives clean markdown conversion of the HTML page, extracts the relevant section, and presents a summary with a link to the source. The entire round-trip is one tool call.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Input Format
35
+
36
+ ```typescript
37
+ interface WebFetchInput {
38
+ url: string;
39
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD"; // default: GET
40
+ headers?: Record<string, string>;
41
+ body?: string;
42
+ maxBytes?: number; // max response size (default: 100KB)
43
+ timeout?: number; // request timeout in ms (default: 30000)
44
+ format?: "auto" | "raw" | "markdown"; // output format (default: auto)
45
+ }
46
+ ```
47
+
48
+ ### Content Processing Pipeline
49
+
50
+ Responses pass through a format-specific processing pipeline:
51
+
52
+ 1. **Content-Type detection** — inspect the `Content-Type` response header
53
+ 2. **HTML → Markdown** — strip scripts/styles, convert semantic HTML to markdown, preserve code blocks, links, and headings. Uses a turndown-style converter.
54
+ 3. **JSON → Formatted JSON** — pretty-print with 2-space indentation. Large arrays are summarized.
55
+ 4. **Plain text** — pass through unchanged
56
+ 5. **Binary** — return metadata only: `{type: "binary", contentType: "image/png", size: 45312}`
57
+ 6. **Size limiting** — if processed content exceeds `maxBytes`, truncate with a note
58
+
59
+ ### Output Format
60
+
61
+ ```json
62
+ {
63
+ "status": 200,
64
+ "contentType": "text/html",
65
+ "url": "https://expressjs.com/en/guide/error-handling.html",
66
+ "content": "# Error Handling\n\nExpress comes with a built-in error handler...",
67
+ "format": "markdown",
68
+ "fetchedBytes": 34567,
69
+ "truncated": false
70
+ }
71
+ ```
72
+
73
+ ### Security Controls
74
+
75
+ The tool enforces strict URL security:
76
+
77
+ - **Blocked schemes** — `file://`, `ftp://`, `data:` (only `http://` and `https://` allowed)
78
+ - **Blocked hosts** — `localhost`, `127.0.0.1`, `::1`, `0.0.0.0`, `169.254.*` (link-local), `10.*`, `172.16-31.*`, `192.168.*` (private ranges)
79
+ - **Configurable allowlist** — projects can explicitly allow specific internal URLs via config
80
+ - **Configurable blocklist** — organizations can block specific domains
81
+
82
+ These defaults prevent the agent from being used to probe internal infrastructure. The allowlist enables intentional access to internal documentation servers or staging APIs.
83
+
84
+ ### User Agent and Identification
85
+
86
+ Requests include a descriptive User-Agent header:
87
+
88
+ ```
89
+ User-Agent: mia-code/1.0 (AI coding agent; +https://github.com/mia-code)
90
+ ```
91
+
92
+ This enables web servers to identify requests from coding agents and serve appropriate content.
93
+
94
+ ### Timeout and Streaming
95
+
96
+ - **Connection timeout** — 10 seconds to establish TCP connection
97
+ - **Response timeout** — configurable total response time (default: 30 seconds)
98
+ - **Streaming** — for responses larger than `maxBytes`, the tool reads only up to the limit and closes the connection, avoiding memory pressure from large downloads
99
+
100
+ ### Error Handling
101
+
102
+ Common failure modes and their responses:
103
+
104
+ - **DNS failure** — `{error: "DNS resolution failed for example.invalid"}`
105
+ - **Connection refused** — `{error: "Connection refused at https://..."}`
106
+ - **Timeout** — `{error: "Request timed out after 30000ms"}`
107
+ - **HTTP errors** — returned as results with status code (4xx/5xx are not tool errors)
108
+ - **Blocked URL** — `{error: "URL blocked by security policy: private network access denied"}`
109
+
110
+ ## Supporting Structures
111
+
112
+ - **Tool Registry (RISE-034)** registers the web_fetch tool with id `web_fetch`
113
+ - **Tool Context Injection (RISE-035)** provides abort signal for cancellation
114
+ - **Tool Output Truncation (RISE-036)** applies secondary truncation if content exceeds context limits
115
+ - **Multi-Level Config (RISE-064)** provides URL allowlist/blocklist configuration
116
+ - **Permission System (RISE-074)** gates web fetch behind the "network" permission
117
+ - **Named Error System (RISE-006)** provides FetchSecurityError, FetchTimeoutError
118
+
119
+ ## Creative Advancement Scenarios
120
+
121
+ **Scenario 1 — Documentation Lookup:**
122
+ The developer asks "what's the correct way to use Zod's `.transform()`?" The agent fetches the Zod documentation page, converts it to markdown, extracts the `.transform()` section, and presents a clear explanation with code examples — all from the latest docs, not training data.
123
+
124
+ **Scenario 2 — API Endpoint Testing:**
125
+ The developer says "check if the staging API health endpoint is responding." The agent fetches `https://staging.example.com/health` (allowed in the project's URL allowlist) and reports: "Status 200, response: `{status: 'ok', version: '2.1.3', uptime: '4d 3h'}`."
126
+
127
+ **Scenario 3 — Security Boundary:**
128
+ The agent attempts to fetch `http://169.254.169.254/latest/meta-data/` (AWS metadata endpoint). The tool blocks it: "URL blocked by security policy: private network access denied." The agent cannot exfiltrate cloud credentials even if instructed to do so.
129
+
130
+ **Scenario 4 — Large Page Handling:**
131
+ The agent fetches a lengthy API reference page (500KB HTML). The tool converts it to 200KB of markdown, which exceeds the 100KB default limit. The content is truncated with a note: "Content truncated at 100KB (full page: 200KB). Refine your query or increase maxBytes." The agent works with the first 100KB or asks a more specific question.
@@ -0,0 +1,159 @@
1
+ # RISE-042: Web Search Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/042-web-search-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides a web search tool that queries the internet for current information, returning ranked results with titles, URLs, and content snippets. The agent can answer questions about recent developments, find documentation for unfamiliar libraries, discover solutions to error messages, and access information beyond its training data cutoff. Search results include source citations, enabling the developer to verify claims and follow links for deeper reading. The tool transforms the agent from a static knowledge base into a research-capable assistant.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - The agent's knowledge is frozen at its training data cutoff — it cannot answer questions about recent releases, new APIs, or current best practices
14
+ - When the developer encounters an unfamiliar error, they must search the web themselves and paste relevant results
15
+ - The agent cannot discover documentation for newly released libraries or breaking changes in dependencies
16
+ - There is no way to verify the agent's claims against current sources — hallucination risk increases for recent topics
17
+ - Finding solutions to environment-specific issues (platform bugs, version conflicts) requires human research
18
+
19
+ **Desired State:**
20
+ - A `web_search` tool accepts natural language queries and returns search results
21
+ - Results include: title, URL, relevance snippet, and optionally fetched-and-summarized content
22
+ - The search provider is configurable (default: integrated search API)
23
+ - Results are deduplicated and ranked by relevance
24
+ - Source citations are included in every result for verifiability
25
+ - Rate limiting is handled transparently with queued retries
26
+ - The agent uses search proactively when it detects knowledge gaps
27
+
28
+ ## Desired Outcome Definition
29
+
30
+ The developer asks "what changed in React 19?" The agent searches the web, finds the React 19 blog post, the migration guide, and three tutorial articles. It synthesizes the results into a concise summary of key changes — Server Components as default, new hooks, compiler — with citations linking to each source. The developer gets current, verified information without leaving their terminal.
31
+
32
+ ## Natural Language Functional Description
33
+
34
+ ### Input Format
35
+
36
+ ```typescript
37
+ interface WebSearchInput {
38
+ query: string; // natural language search query
39
+ maxResults?: number; // max results to return (default: 10)
40
+ fetchContent?: boolean; // fetch and include page content (default: false)
41
+ contentMaxBytes?: number; // max content per result when fetching (default: 10KB)
42
+ }
43
+ ```
44
+
45
+ ### Search Execution
46
+
47
+ 1. **Query submission** — send the query to the configured search provider
48
+ 2. **Result parsing** — extract title, URL, and snippet from each result
49
+ 3. **Deduplication** — remove duplicate URLs and near-duplicate snippets
50
+ 4. **Optional content fetch** — if `fetchContent: true`, fetch the top N result URLs via the web fetch tool (RISE-041) and include processed content
51
+ 5. **Formatting** — structure results with clear titles, snippets, and source URLs
52
+
53
+ ### Output Format
54
+
55
+ ```json
56
+ {
57
+ "query": "React 19 new features",
58
+ "resultCount": 8,
59
+ "results": [
60
+ {
61
+ "title": "React 19 — What's New",
62
+ "url": "https://react.dev/blog/2025/04/react-19",
63
+ "snippet": "React 19 introduces Server Components as a first-class feature, a new React Compiler, and simplified ref handling...",
64
+ "source": "react.dev"
65
+ },
66
+ {
67
+ "title": "Migrating to React 19 — Complete Guide",
68
+ "url": "https://example.com/react-19-migration",
69
+ "snippet": "This guide covers every breaking change in React 19 and how to update your codebase...",
70
+ "source": "example.com"
71
+ }
72
+ ],
73
+ "citations": [
74
+ "[1] https://react.dev/blog/2025/04/react-19",
75
+ "[2] https://example.com/react-19-migration"
76
+ ]
77
+ }
78
+ ```
79
+
80
+ ### Content Fetching Mode
81
+
82
+ When `fetchContent: true`, the tool uses the web fetch tool (RISE-041) to retrieve page content for the top results:
83
+
84
+ ```json
85
+ {
86
+ "results": [
87
+ {
88
+ "title": "React 19 — What's New",
89
+ "url": "https://react.dev/blog/2025/04/react-19",
90
+ "snippet": "React 19 introduces Server Components...",
91
+ "content": "# React 19\n\n## Server Components\n\nServer Components are now...",
92
+ "contentTruncated": true
93
+ }
94
+ ]
95
+ }
96
+ ```
97
+
98
+ This enables the agent to provide detailed answers without the developer needing to read the source pages.
99
+
100
+ ### Search Provider Configuration
101
+
102
+ The search provider is configurable in project or global configuration:
103
+
104
+ ```json
105
+ {
106
+ "tools": {
107
+ "web_search": {
108
+ "provider": "default",
109
+ "apiKey": "${WEB_SEARCH_API_KEY}"
110
+ }
111
+ }
112
+ }
113
+ ```
114
+
115
+ The default provider uses an integrated search API. Custom providers can be configured for organizational search proxies or alternative search engines.
116
+
117
+ ### Rate Limiting
118
+
119
+ Search APIs have strict rate limits. The tool handles them by:
120
+
121
+ - Tracking request counts per time window
122
+ - Queuing requests when approaching the limit
123
+ - Displaying "⏳ Search rate limited, waiting..." when throttled
124
+ - Returning cached results for identical queries within a short window (5 minutes)
125
+
126
+ ### Citation Format
127
+
128
+ Every search result includes a numbered citation. When the agent uses search results in its response, it can reference sources:
129
+
130
+ ```
131
+ React 19 introduces Server Components as a default feature [1] and includes a new
132
+ compiler that automatically optimizes re-renders [2].
133
+
134
+ [1] https://react.dev/blog/2025/04/react-19
135
+ [2] https://react.dev/blog/2025/04/react-compiler
136
+ ```
137
+
138
+ ## Supporting Structures
139
+
140
+ - **Tool Registry (RISE-034)** registers the web_search tool with id `web_search`
141
+ - **Tool Context Injection (RISE-035)** provides session context and cancellation
142
+ - **Web Fetch Tool (RISE-041)** fetches page content for content-enriched results
143
+ - **Tool Output Truncation (RISE-036)** truncates large result sets
144
+ - **Multi-Level Config (RISE-064)** provides search provider configuration
145
+ - **Permission System (RISE-074)** gates web search behind the "network" permission
146
+
147
+ ## Creative Advancement Scenarios
148
+
149
+ **Scenario 1 — Error Message Research:**
150
+ The developer encounters `ENOSPC: System limit for number of file watchers reached`. The agent searches this error message, finds the standard fix (increasing `fs.inotify.max_user_watches`), and provides the exact command with a citation to the relevant Node.js documentation.
151
+
152
+ **Scenario 2 — Library Evaluation:**
153
+ The developer asks "should I use Drizzle or Prisma for this project?" The agent searches for recent comparisons, finds benchmark data and community opinions from the last 3 months, and presents a balanced summary with citations — far more current than anything in training data.
154
+
155
+ **Scenario 3 — Breaking Change Discovery:**
156
+ During a dependency upgrade, tests fail with a cryptic error. The agent searches `"libraryX 3.0 breaking changes"`, finds the migration guide, identifies the specific change causing the failure, and applies the fix — all without the developer leaving the conversation.
157
+
158
+ **Scenario 4 — Current Documentation:**
159
+ The developer asks about a new cloud provider feature released last week. The agent searches, finds the announcement blog post and API documentation, and explains the feature with accurate, current details. Without web search, it would either hallucinate or admit ignorance.
@@ -0,0 +1,156 @@
1
+ # RISE-043: Built-in Todo Tool
2
+
3
+ > RISE Framework Specification — Borrowed from OpenCode for mia-code
4
+ > Document: rispecs/borrowed_from_opencode/043-todo-tool.rispec.md
5
+
6
+ ## Creative Intent
7
+
8
+ mia-code provides a built-in task tracking tool that lets the agent create, manage, and track todo items within a session. When the agent plans a multi-step implementation, it creates todos for each step, updates their status as it works, and marks them done on completion. The developer sees a living task list that reflects the agent's progress and intent. This is not a project management system — it is a lightweight, session-scoped scratchpad that makes the agent's plan visible and trackable. The developer can also interact with todos directly via a `/todos` slash command.
9
+
10
+ ## Structural Tension Analysis
11
+
12
+ **Current Reality:**
13
+ - The agent keeps its plan in free-form text within the conversation — there is no structured task tracking
14
+ - Multi-step tasks are easy to lose track of — the agent may forget steps after context compaction
15
+ - There is no visible indicator of progress through a plan — the developer must read conversation history
16
+ - The developer cannot see what the agent intends to do next or what remains
17
+ - Interrupted sessions lose all planning context — resuming requires re-explanation
18
+
19
+ **Desired State:**
20
+ - A `todo` tool with two operations: `read` (list/filter todos) and `write` (create/update/delete todos)
21
+ - Todo items have: id, title, description, status (pending/in_progress/done/blocked), priority, timestamps
22
+ - Todos persist per session in the database (RISE-080) — they survive compaction and session restarts
23
+ - The agent creates todos during planning, updates status during execution, and marks done on completion
24
+ - A `/todos` slash command lets the developer view, add, and manage todos directly
25
+ - Todo status integrates with the UI to show progress indicators
26
+
27
+ ## Desired Outcome Definition
28
+
29
+ The developer asks "refactor the auth module to use JWT." The agent creates 5 todos: install jsonwebtoken, create token utils, update auth middleware, update login handler, update tests. As it works through each step, the todo status updates from pending → in_progress → done. The developer sees a progress bar: "3/5 tasks complete." If the session is interrupted and resumed, the todo list persists with accurate status.
30
+
31
+ ## Natural Language Functional Description
32
+
33
+ ### Tool Operations
34
+
35
+ The todo tool supports two operations via a single tool with mode parameter:
36
+
37
+ **Read Operation:**
38
+ ```typescript
39
+ interface TodoReadInput {
40
+ mode: "read";
41
+ filter?: {
42
+ status?: "pending" | "in_progress" | "done" | "blocked";
43
+ priority?: "low" | "medium" | "high";
44
+ };
45
+ }
46
+ ```
47
+
48
+ **Write Operation:**
49
+ ```typescript
50
+ interface TodoWriteInput {
51
+ mode: "write";
52
+ action: "add" | "update" | "remove";
53
+ todo?: {
54
+ id?: string; // required for update/remove
55
+ title?: string; // required for add
56
+ description?: string;
57
+ status?: "pending" | "in_progress" | "done" | "blocked";
58
+ priority?: "low" | "medium" | "high";
59
+ };
60
+ }
61
+ ```
62
+
63
+ ### Todo Data Model
64
+
65
+ ```typescript
66
+ interface Todo {
67
+ id: string; // auto-generated UUID or descriptive kebab-case
68
+ title: string; // brief task description
69
+ description: string; // detailed task description with context
70
+ status: TodoStatus; // current state
71
+ priority: TodoPriority; // urgency level
72
+ createdAt: string; // ISO 8601 timestamp
73
+ updatedAt: string; // ISO 8601 timestamp
74
+ }
75
+
76
+ type TodoStatus = "pending" | "in_progress" | "done" | "blocked";
77
+ type TodoPriority = "low" | "medium" | "high";
78
+ ```
79
+
80
+ ### Persistence
81
+
82
+ Todos are stored in the session's SQLite database (RISE-080):
83
+
84
+ ```sql
85
+ CREATE TABLE todos (
86
+ id TEXT PRIMARY KEY,
87
+ session_id TEXT NOT NULL,
88
+ title TEXT NOT NULL,
89
+ description TEXT DEFAULT '',
90
+ status TEXT DEFAULT 'pending',
91
+ priority TEXT DEFAULT 'medium',
92
+ created_at TEXT DEFAULT (datetime('now')),
93
+ updated_at TEXT DEFAULT (datetime('now'))
94
+ );
95
+ ```
96
+
97
+ Todos are scoped to the current session — they do not leak across sessions. They persist through session compaction (RISE-019) because they are stored in the database, not in conversation history.
98
+
99
+ ### Output Formatting
100
+
101
+ The read operation returns a formatted todo list:
102
+
103
+ ```
104
+ 📋 Todos (3/5 complete):
105
+
106
+ ✅ [done] Install jsonwebtoken package
107
+ ✅ [done] Create src/utils/token.ts with sign/verify functions
108
+ ✅ [done] Update auth middleware to validate JWT
109
+ 🔄 [in_progress] Update login handler to return JWT
110
+ ⬜ [pending] Update auth tests for JWT flow
111
+ ```
112
+
113
+ Status icons: ⬜ pending, 🔄 in_progress, ✅ done, 🚫 blocked
114
+
115
+ ### Agent Integration Pattern
116
+
117
+ The agent follows a consistent pattern with todos:
118
+
119
+ 1. **Planning phase** — create todos for each identified step, ordered by dependency
120
+ 2. **Execution phase** — before starting a step, update its todo to `in_progress`; after completing, update to `done`
121
+ 3. **Blocked handling** — if a step cannot proceed, update to `blocked` with a description of why
122
+ 4. **Completion** — after all todos are done, summarize the completed work
123
+
124
+ ### Slash Command: `/todos`
125
+
126
+ The developer can interact with todos directly:
127
+
128
+ - `/todos` — list all todos with status
129
+ - `/todos add <title>` — add a new todo
130
+ - `/todos done <id>` — mark a todo as done
131
+ - `/todos clear` — remove all completed todos
132
+
133
+ This gives the developer direct control alongside the agent's automated management.
134
+
135
+ ## Supporting Structures
136
+
137
+ - **Tool Registry (RISE-034)** registers the todo tool with id `todo`
138
+ - **Tool Context Injection (RISE-035)** provides session ID for scoping
139
+ - **SQLite Storage (RISE-080)** persists todos in the session database
140
+ - **Session Persistence (RISE-018)** ensures todos survive session restarts
141
+ - **Session Compaction (RISE-019)** preserves todos during context compaction
142
+ - **Keybinding System (RISE-063)** can bind a key to show todos
143
+
144
+ ## Creative Advancement Scenarios
145
+
146
+ **Scenario 1 — Visible Progress:**
147
+ The developer asks for a complex refactoring. The agent creates 8 todos. As it works, the TUI shows a progress bar updating in real-time: "3/8 ▓▓▓░░░░░". The developer knows exactly where things stand without reading the full conversation.
148
+
149
+ **Scenario 2 — Session Resumption:**
150
+ The developer stops mid-refactoring and resumes the session later. The agent reads the todo list: 4 done, 1 in_progress, 3 pending. It picks up exactly where it left off — "Resuming from step 5: update the API routes" — without the developer needing to re-explain the plan.
151
+
152
+ **Scenario 3 — Developer Adds Context:**
153
+ While the agent works on auth refactoring, the developer types `/todos add "also update the logout endpoint"`. The agent sees the new todo on its next read and incorporates it into the plan naturally.
154
+
155
+ **Scenario 4 — Blocked Task Handling:**
156
+ The agent marks "deploy to staging" as `blocked` with description: "Requires CI pipeline access — cannot proceed without deploy token." The developer sees the blocked item, provides the token, and the agent unblocks and continues.