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.
- package/.miette/260321.md +1 -0
- package/.miette/260323.md +9 -0
- package/.miette/260331.md +2 -0
- package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/2604020008--d3417f2c-df12-4f0f-8a1b-d88e7968f822/d3417f2c-df12-4f0f-8a1b-d88e7968f822.md +63 -0
- package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/2604020008--e6c3fc5d-4a70-4523-ba7d-a3250da4c235/e6c3fc5d-4a70-4523-ba7d-a3250da4c235.md +72 -0
- package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/2604020008--efeb00a2-b17a-4d32-b1f0-b90c37a8d24e/efeb00a2-b17a-4d32-b1f0-b90c37a8d24e.md +62 -0
- package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/83a2d7f9-24a5-4cf4-98d5-036c82f872e8.json +302 -0
- package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/83a2d7f9-24a5-4cf4-98d5-036c82f872e8.md +149 -0
- package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/AGENTS.md +31 -0
- package/.pde/2604011511--83a2d7f9-24a5-4cf4-98d5-036c82f872e8/meta-decomposition-3-children.md +67 -0
- package/.pde/2604040129--61f9dd4d-7aa6-45e6-a58b-e480b1aa6737/61f9dd4d-7aa6-45e6-a58b-e480b1aa6737--from-mia-openclaw-workspace.md +125 -0
- package/.pde/2604040129--61f9dd4d-7aa6-45e6-a58b-e480b1aa6737/STATUS.md +1 -0
- package/.pde/4f02ba94-9f52-422e-9389-b16f9b37f358.json +177 -0
- package/.pde/4f02ba94-9f52-422e-9389-b16f9b37f358.md +77 -0
- package/.pde/6ad9244d-5340-490f-b76c-c86728b9de52.json +222 -0
- package/.pde/6ad9244d-5340-490f-b76c-c86728b9de52.md +99 -0
- package/.pde/8b566792-ed15-4606-96f9-2b6f593d7e6b.json +111 -0
- package/.pde/8b566792-ed15-4606-96f9-2b6f593d7e6b.md +67 -0
- package/.pde/c7f1e74b-05a5-40e2-9f01-4cc48d2528f7.json +349 -0
- package/.pde/c7f1e74b-05a5-40e2-9f01-4cc48d2528f7.md +147 -0
- package/.pde/dfc00a78-1da0-4c09-8a16-c6982644051b.json +118 -0
- package/.pde/dfc00a78-1da0-4c09-8a16-c6982644051b.md +64 -0
- package/GUILLAUME.md +8 -0
- package/KINSHIP.md +9 -0
- package/MIA_CODE_ARCHITECTURE_REPORT.md +718 -0
- package/contextual_research/260119-MIA-CODE--98090899-8aff-4e11-9dc3-8b99466d1.md +1101 -0
- package/contextual_research/MIA.md +38 -0
- package/contextual_research/MIAWAPASCONE.md +59 -0
- package/contextual_research/MIETTE.md +38 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/2504.00218v2.pdf +7483 -12
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/2505.00212v3.pdf +0 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/CONTENT.md +1014 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/DESIGN.gemini.md +242 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/INDEX.md +45 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2504.00218v2.md +2025 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2504.00218v2.pdf +7483 -12
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2505.00212v3.md +1755 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/2505.00212v3.pdf +0 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_12_decomposed_prompting.pdf +0 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_19_hugginggpt_planning.pdf +0 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_1_coordination_challenges.md +766 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_1_coordination_challenges.pdf +3431 -4
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_28_guardrails_multi_agent.md +260 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_28_guardrails_multi_agent.pdf +0 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_2_navigating_complexity.md +558 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_2_navigating_complexity.pdf +0 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_34_hierarchical_multi_agent.pdf +0 -0
- package/contextual_research/PDE-generalization--caefee82-efb1-4dbb-8733-691b01581464--260130/sources/footnote_1_5_open_intent_extraction.pdf +0 -0
- package/contextual_research/PODCAST.md +109 -0
- package/contextual_research/langchain-principles-roadmap.md +157 -0
- package/contextual_research/persona-to-narrative-character-inquiry_260201.md +50 -0
- package/dist/cli.js +35 -11
- package/dist/geminiHeadless.js +8 -2
- package/dist/index.js +2 -1
- package/dist/mcp/miaco-server.js +10 -1
- package/dist/mcp/miatel-server.js +10 -1
- package/dist/mcp/miawa-server.js +10 -1
- package/dist/mcp/utils.d.ts +6 -1
- package/dist/mcp/utils.js +24 -3
- package/dist/sessionStore.d.ts +8 -2
- package/dist/sessionStore.js +39 -3
- package/dist/types.d.ts +1 -0
- package/miaco/README.md +124 -0
- package/miaco/dist/commands/chart.d.ts +6 -0
- package/miaco/dist/commands/chart.d.ts.map +1 -0
- package/miaco/dist/commands/chart.js +222 -0
- package/miaco/dist/commands/chart.js.map +1 -0
- package/miaco/dist/commands/decompose.d.ts +6 -0
- package/miaco/dist/commands/decompose.d.ts.map +1 -0
- package/miaco/dist/commands/decompose.js +98 -0
- package/miaco/dist/commands/decompose.js.map +1 -0
- package/miaco/dist/commands/schema.d.ts +6 -0
- package/miaco/dist/commands/schema.d.ts.map +1 -0
- package/miaco/dist/commands/schema.js +66 -0
- package/miaco/dist/commands/schema.js.map +1 -0
- package/miaco/dist/commands/stc.d.ts +11 -0
- package/miaco/dist/commands/stc.d.ts.map +1 -0
- package/miaco/dist/commands/stc.js +590 -0
- package/miaco/dist/commands/stc.js.map +1 -0
- package/miaco/dist/commands/trace.d.ts +6 -0
- package/miaco/dist/commands/trace.d.ts.map +1 -0
- package/miaco/dist/commands/trace.js +83 -0
- package/miaco/dist/commands/trace.js.map +1 -0
- package/miaco/dist/commands/validate.d.ts +6 -0
- package/miaco/dist/commands/validate.d.ts.map +1 -0
- package/miaco/dist/commands/validate.js +58 -0
- package/miaco/dist/commands/validate.js.map +1 -0
- package/miaco/dist/decompose.d.ts +93 -0
- package/miaco/dist/decompose.d.ts.map +1 -0
- package/miaco/dist/decompose.js +562 -0
- package/miaco/dist/decompose.js.map +1 -0
- package/miaco/dist/index.d.ts +18 -0
- package/miaco/dist/index.d.ts.map +1 -0
- package/miaco/dist/index.js +83 -0
- package/miaco/dist/index.js.map +1 -0
- package/miaco/dist/storage.d.ts +60 -0
- package/miaco/dist/storage.d.ts.map +1 -0
- package/miaco/dist/storage.js +100 -0
- package/miaco/dist/storage.js.map +1 -0
- package/miaco/package-lock.json +4103 -0
- package/miaco/package.json +40 -0
- package/miaco/tsconfig.json +18 -0
- package/miaco/version-patch-commit-and-publish.sh +1 -0
- package/miatel/MISSION_251231.md +3 -0
- package/miatel/README.md +107 -0
- package/miatel/dist/commands/analyze.d.ts +6 -0
- package/miatel/dist/commands/analyze.d.ts.map +1 -0
- package/miatel/dist/commands/analyze.js +100 -0
- package/miatel/dist/commands/analyze.js.map +1 -0
- package/miatel/dist/commands/arc.d.ts +6 -0
- package/miatel/dist/commands/arc.d.ts.map +1 -0
- package/miatel/dist/commands/arc.js +71 -0
- package/miatel/dist/commands/arc.js.map +1 -0
- package/miatel/dist/commands/beat.d.ts +6 -0
- package/miatel/dist/commands/beat.d.ts.map +1 -0
- package/miatel/dist/commands/beat.js +165 -0
- package/miatel/dist/commands/beat.js.map +1 -0
- package/miatel/dist/commands/theme.d.ts +6 -0
- package/miatel/dist/commands/theme.d.ts.map +1 -0
- package/miatel/dist/commands/theme.js +54 -0
- package/miatel/dist/commands/theme.js.map +1 -0
- package/miatel/dist/index.d.ts +18 -0
- package/miatel/dist/index.d.ts.map +1 -0
- package/miatel/dist/index.js +80 -0
- package/miatel/dist/index.js.map +1 -0
- package/miatel/dist/storage.d.ts +55 -0
- package/miatel/dist/storage.d.ts.map +1 -0
- package/miatel/dist/storage.js +100 -0
- package/miatel/dist/storage.js.map +1 -0
- package/miatel/package-lock.json +4103 -0
- package/miatel/package.json +35 -0
- package/miatel/src/commands/analyze.ts +109 -0
- package/miatel/src/commands/arc.ts +78 -0
- package/miatel/src/commands/beat.ts +176 -0
- package/miatel/src/commands/theme.ts +60 -0
- package/miatel/src/index.ts +94 -0
- package/miatel/src/storage.ts +156 -0
- package/miatel/tsconfig.json +18 -0
- package/miawa/MISSION_251231.md +144 -0
- package/miawa/README.md +133 -0
- package/miawa/dist/commands/beat.d.ts +6 -0
- package/miawa/dist/commands/beat.d.ts.map +1 -0
- package/miawa/dist/commands/beat.js +69 -0
- package/miawa/dist/commands/beat.js.map +1 -0
- package/miawa/dist/commands/ceremony.d.ts +6 -0
- package/miawa/dist/commands/ceremony.d.ts.map +1 -0
- package/miawa/dist/commands/ceremony.js +239 -0
- package/miawa/dist/commands/ceremony.js.map +1 -0
- package/miawa/dist/commands/circle.d.ts +6 -0
- package/miawa/dist/commands/circle.d.ts.map +1 -0
- package/miawa/dist/commands/circle.js +75 -0
- package/miawa/dist/commands/circle.js.map +1 -0
- package/miawa/dist/commands/eva.d.ts +6 -0
- package/miawa/dist/commands/eva.d.ts.map +1 -0
- package/miawa/dist/commands/eva.js +73 -0
- package/miawa/dist/commands/eva.js.map +1 -0
- package/miawa/dist/commands/wound.d.ts +6 -0
- package/miawa/dist/commands/wound.d.ts.map +1 -0
- package/miawa/dist/commands/wound.js +74 -0
- package/miawa/dist/commands/wound.js.map +1 -0
- package/miawa/dist/index.d.ts +19 -0
- package/miawa/dist/index.d.ts.map +1 -0
- package/miawa/dist/index.js +91 -0
- package/miawa/dist/index.js.map +1 -0
- package/miawa/dist/storage.d.ts +73 -0
- package/miawa/dist/storage.d.ts.map +1 -0
- package/miawa/dist/storage.js +100 -0
- package/miawa/dist/storage.js.map +1 -0
- package/miawa/package-lock.json +4103 -0
- package/miawa/package.json +36 -0
- package/miawa/src/commands/beat.ts +74 -0
- package/miawa/src/commands/ceremony.ts +256 -0
- package/miawa/src/commands/circle.ts +83 -0
- package/miawa/src/commands/eva.ts +84 -0
- package/miawa/src/commands/wound.ts +79 -0
- package/miawa/src/index.ts +108 -0
- package/miawa/src/storage.ts +179 -0
- package/miawa/tsconfig.json +18 -0
- package/package.json +7 -5
- package/references/acp/CLAUDE.md +7 -0
- package/references/acp/agent-plan.md +84 -0
- package/references/acp/clients.md +31 -0
- package/references/acp/extensibility.md +137 -0
- package/references/acp/initialization.md +225 -0
- package/references/acp/prompt-turn.md +321 -0
- package/references/acp/proxy-chains.md +562 -0
- package/references/acp/schema.md +3171 -0
- package/references/acp/session-list.md +334 -0
- package/references/acp/session-modes.md +170 -0
- package/references/acp/slash-commands.md +99 -0
- package/references/acp/terminals.md +281 -0
- package/references/acp/tool-calls.md +311 -0
- package/references/acp/typescript.md +29 -0
- package/references/claude/agent-teams.md +399 -0
- package/references/claude/chrome.md +231 -0
- package/references/claude/headless.md +158 -0
- package/references/claude/hooks-guide.md +708 -0
- package/references/claude/output-styles.md +112 -0
- package/references/claude/plugins.md +432 -0
- package/references/claude/skills.md +693 -0
- package/references/claude/sub-agents.md +816 -0
- package/references/copilot/acp/agents.md +32 -0
- package/references/copilot/acp/architecture.md +37 -0
- package/references/copilot/acp/clients.md +31 -0
- package/references/copilot/acp/introduction.md +42 -0
- package/references/copilot/acp/registry.md +339 -0
- package/references/copilot/acp-server.md +117 -0
- package/references/copilot/create-copilot-instructions.md +840 -0
- package/references/langchain/llms.txt +833 -0
- package/references/langchain/python/agents.md +677 -0
- package/references/langchain/python/context-engineering.md +1195 -0
- package/references/langchain/python/human-in-the-loop.md +326 -0
- package/references/langchain/python/long-term-memory.md +168 -0
- package/references/langchain/python/mcp.md +949 -0
- package/references/langchain/python/multi-agents/custom-workflow.md +187 -0
- package/references/langchain/python/multi-agents/handoffs.md +436 -0
- package/references/langchain/python/multi-agents/overview.md +295 -0
- package/references/langchain/python/multi-agents/router.md +150 -0
- package/references/langchain/python/multi-agents/skills.md +92 -0
- package/references/langchain/python/multi-agents/subagents.md +486 -0
- package/references/langchain/python/retrieval.md +320 -0
- package/references/langchain/python/runtime.md +141 -0
- package/references/langchain/python/short-term-memory.md +658 -0
- package/references/langchain/python/structured-output.md +712 -0
- package/references/langfuse/llms.txt +148 -0
- package/references/langgraph/javascript/llms.txt +275 -0
- package/references/skills/home.md +259 -0
- package/references/skills/integrate-skills.md +103 -0
- package/references/skills/specification.md +254 -0
- package/references/skills/what-are-skills.md +74 -0
- package/rispecs/README.md +164 -0
- package/rispecs/_sync_/miadi-code/SPEC.md +313 -0
- package/rispecs/_sync_/miadi-code/STATUS.md +177 -0
- package/rispecs/_sync_/miadi-code/dashboard/SPEC.md +465 -0
- package/rispecs/_sync_/miadi-code/dashboard/STATUS.md +212 -0
- package/rispecs/_sync_/miadi-code/multiline-input/SPEC.md +232 -0
- package/rispecs/_sync_/miadi-code/multiline-input/STATUS.md +108 -0
- package/rispecs/_sync_/miadi-code/pde/SPEC.md +253 -0
- package/rispecs/_sync_/miadi-code/pde/STATUS.md +56 -0
- package/rispecs/_sync_/miadi-code/stc/SPEC.md +397 -0
- package/rispecs/_sync_/miadi-code/stc/STATUS.md +70 -0
- package/rispecs/ava-langstack/inquiry-routing-upgrade.spec.md +119 -0
- package/rispecs/borrowed_from_opencode/001-client-server-architecture.rispec.md +98 -0
- package/rispecs/borrowed_from_opencode/002-event-bus-system.rispec.md +125 -0
- package/rispecs/borrowed_from_opencode/003-instance-state-pattern.rispec.md +136 -0
- package/rispecs/borrowed_from_opencode/004-namespace-module-pattern.rispec.md +151 -0
- package/rispecs/borrowed_from_opencode/005-zod-schema-validation.rispec.md +139 -0
- package/rispecs/borrowed_from_opencode/006-named-error-system.rispec.md +155 -0
- package/rispecs/borrowed_from_opencode/007-structured-logging.rispec.md +138 -0
- package/rispecs/borrowed_from_opencode/008-lazy-initialization.rispec.md +127 -0
- package/rispecs/borrowed_from_opencode/009-multi-agent-system.rispec.md +97 -0
- package/rispecs/borrowed_from_opencode/010-agent-definition-config.rispec.md +135 -0
- package/rispecs/borrowed_from_opencode/011-agent-permission-rulesets.rispec.md +151 -0
- package/rispecs/borrowed_from_opencode/012-agent-prompt-templates.rispec.md +141 -0
- package/rispecs/borrowed_from_opencode/013-agent-generation.rispec.md +142 -0
- package/rispecs/borrowed_from_opencode/014-plan-build-mode-toggle.rispec.md +155 -0
- package/rispecs/borrowed_from_opencode/015-subagent-task-delegation.rispec.md +146 -0
- package/rispecs/borrowed_from_opencode/016-agent-model-selection.rispec.md +151 -0
- package/rispecs/borrowed_from_opencode/017-compaction-agent.rispec.md +150 -0
- package/rispecs/borrowed_from_opencode/018-session-persistence.rispec.md +125 -0
- package/rispecs/borrowed_from_opencode/019-session-compaction.rispec.md +132 -0
- package/rispecs/borrowed_from_opencode/020-session-forking.rispec.md +134 -0
- package/rispecs/borrowed_from_opencode/021-session-revert-snapshot.rispec.md +135 -0
- package/rispecs/borrowed_from_opencode/022-session-sharing.rispec.md +165 -0
- package/rispecs/borrowed_from_opencode/023-session-summary-diffs.rispec.md +165 -0
- package/rispecs/borrowed_from_opencode/024-child-sessions.rispec.md +164 -0
- package/rispecs/borrowed_from_opencode/025-session-title-generation.rispec.md +162 -0
- package/rispecs/borrowed_from_opencode/026-message-parts-model.rispec.md +201 -0
- package/rispecs/borrowed_from_opencode/027-streaming-message-deltas.rispec.md +212 -0
- package/rispecs/borrowed_from_opencode/028-multi-provider-architecture.rispec.md +184 -0
- package/rispecs/borrowed_from_opencode/029-provider-authentication.rispec.md +225 -0
- package/rispecs/borrowed_from_opencode/030-model-registry.rispec.md +222 -0
- package/rispecs/borrowed_from_opencode/031-cost-tracking.rispec.md +243 -0
- package/rispecs/borrowed_from_opencode/032-provider-transform-pipeline.rispec.md +282 -0
- package/rispecs/borrowed_from_opencode/033-provider-sdk-abstraction.rispec.md +338 -0
- package/rispecs/borrowed_from_opencode/034-tool-registry.rispec.md +110 -0
- package/rispecs/borrowed_from_opencode/035-tool-context-injection.rispec.md +155 -0
- package/rispecs/borrowed_from_opencode/036-tool-output-truncation.rispec.md +138 -0
- package/rispecs/borrowed_from_opencode/037-batch-tool.rispec.md +129 -0
- package/rispecs/borrowed_from_opencode/038-multi-edit-tool.rispec.md +167 -0
- package/rispecs/borrowed_from_opencode/039-apply-patch-tool.rispec.md +161 -0
- package/rispecs/borrowed_from_opencode/040-code-search-tool.rispec.md +143 -0
- package/rispecs/borrowed_from_opencode/041-web-fetch-tool.rispec.md +131 -0
- package/rispecs/borrowed_from_opencode/042-web-search-tool.rispec.md +159 -0
- package/rispecs/borrowed_from_opencode/043-todo-tool.rispec.md +156 -0
- package/rispecs/borrowed_from_opencode/044-plan-mode-tool.rispec.md +139 -0
- package/rispecs/borrowed_from_opencode/045-task-tool.rispec.md +146 -0
- package/rispecs/borrowed_from_opencode/046-question-tool.rispec.md +170 -0
- package/rispecs/borrowed_from_opencode/047-external-directory-tool.rispec.md +166 -0
- package/rispecs/borrowed_from_opencode/048-file-read-write-tools.rispec.md +205 -0
- package/rispecs/borrowed_from_opencode/049-lsp-server-management.rispec.md +104 -0
- package/rispecs/borrowed_from_opencode/050-lsp-hover-completion.rispec.md +102 -0
- package/rispecs/borrowed_from_opencode/051-lsp-diagnostics.rispec.md +86 -0
- package/rispecs/borrowed_from_opencode/052-lsp-root-detection.rispec.md +109 -0
- package/rispecs/borrowed_from_opencode/053-remote-mcp-servers.rispec.md +119 -0
- package/rispecs/borrowed_from_opencode/054-mcp-oauth-flow.rispec.md +107 -0
- package/rispecs/borrowed_from_opencode/055-mcp-tool-conversion.rispec.md +118 -0
- package/rispecs/borrowed_from_opencode/056-mcp-connection-monitoring.rispec.md +106 -0
- package/rispecs/borrowed_from_opencode/057-local-mcp-servers.rispec.md +116 -0
- package/rispecs/borrowed_from_opencode/058-rich-tui.rispec.md +108 -0
- package/rispecs/borrowed_from_opencode/059-streaming-display.rispec.md +116 -0
- package/rispecs/borrowed_from_opencode/060-permission-prompts.rispec.md +130 -0
- package/rispecs/borrowed_from_opencode/061-session-navigation.rispec.md +155 -0
- package/rispecs/borrowed_from_opencode/062-syntax-highlighting.rispec.md +151 -0
- package/rispecs/borrowed_from_opencode/063-keybinding-system.rispec.md +181 -0
- package/rispecs/borrowed_from_opencode/064-multi-level-config.rispec.md +155 -0
- package/rispecs/borrowed_from_opencode/065-jsonc-config.rispec.md +190 -0
- package/rispecs/borrowed_from_opencode/066-config-env-variables.rispec.md +153 -0
- package/rispecs/borrowed_from_opencode/067-config-deep-merging.rispec.md +178 -0
- package/rispecs/borrowed_from_opencode/068-remote-org-config.rispec.md +183 -0
- package/rispecs/borrowed_from_opencode/069-config-markdown-frontmatter.rispec.md +206 -0
- package/rispecs/borrowed_from_opencode/070-managed-config-directory.rispec.md +232 -0
- package/rispecs/borrowed_from_opencode/071-plugin-architecture.rispec.md +104 -0
- package/rispecs/borrowed_from_opencode/072-plugin-hooks.rispec.md +123 -0
- package/rispecs/borrowed_from_opencode/073-plugin-auto-install.rispec.md +115 -0
- package/rispecs/borrowed_from_opencode/074-permission-system.rispec.md +133 -0
- package/rispecs/borrowed_from_opencode/075-git-worktree-management.rispec.md +126 -0
- package/rispecs/borrowed_from_opencode/076-snapshot-system.rispec.md +124 -0
- package/rispecs/borrowed_from_opencode/077-snapshot-diff.rispec.md +117 -0
- package/rispecs/borrowed_from_opencode/078-snapshot-restore.rispec.md +128 -0
- package/rispecs/borrowed_from_opencode/079-worktree-branch-naming.rispec.md +122 -0
- package/rispecs/borrowed_from_opencode/080-sqlite-storage.rispec.md +134 -0
- package/rispecs/borrowed_from_opencode/081-database-migrations.rispec.md +148 -0
- package/rispecs/borrowed_from_opencode/082-database-transactions.rispec.md +138 -0
- package/rispecs/borrowed_from_opencode/083-deferred-effects.rispec.md +148 -0
- package/rispecs/borrowed_from_opencode/084-permission-rules.rispec.md +123 -0
- package/rispecs/borrowed_from_opencode/085-permission-glob-patterns.rispec.md +113 -0
- package/rispecs/borrowed_from_opencode/086-permission-merging.rispec.md +134 -0
- package/rispecs/borrowed_from_opencode/087-permission-modes.rispec.md +145 -0
- package/rispecs/borrowed_from_opencode/088-http-api-server.rispec.md +165 -0
- package/rispecs/borrowed_from_opencode/089-openapi-spec-generation.rispec.md +164 -0
- package/rispecs/borrowed_from_opencode/090-websocket-support.rispec.md +136 -0
- package/rispecs/borrowed_from_opencode/091-sse-streaming.rispec.md +168 -0
- package/rispecs/borrowed_from_opencode/092-mdns-discovery.rispec.md +145 -0
- package/rispecs/borrowed_from_opencode/093-javascript-sdk.rispec.md +200 -0
- package/rispecs/borrowed_from_opencode/094-skill-system.rispec.md +187 -0
- package/rispecs/borrowed_from_opencode/095-skill-discovery.rispec.md +182 -0
- package/rispecs/borrowed_from_opencode/096-desktop-remote-driving.rispec.md +175 -0
- package/rispecs/borrowed_from_opencode/INDEX.md +255 -0
- package/rispecs/core.rispecs.md +261 -0
- package/rispecs/engines.rispecs.md +241 -0
- package/rispecs/formatting.rispecs.md +252 -0
- package/rispecs/living-specifications.rispecs.md +361 -0
- package/rispecs/mcp.rispecs.md +197 -0
- package/rispecs/pde.rispecs.md +399 -0
- package/rispecs/pi-mono-envisionning/ENVISIONING.md +366 -0
- package/rispecs/pi-mono-envisionning/storytelling-horizon.rispecs.md +76 -0
- package/rispecs/pi-mono-envisionning/widget.rispecs.md +2 -0
- package/rispecs/relation-to-mcp-structural-thinking.kin.md +72 -0
- package/rispecs/research-for-better-framework/CLAUDE.md +7 -0
- package/rispecs/research-for-better-framework/survey-pi-openclaw-opencode-openhands.md +210 -0
- package/rispecs/session.rispecs.md +277 -0
- package/rispecs/stc.rispecs.md +138 -0
- package/rispecs/unifier.rispecs.md +317 -0
- package/scripts/LAUNCH--mcp-mia-code--testing--2603141315--ac705a66-2c15-4a1c-a26d-9491018c5ba8.sh +2 -0
- package/scripts/RESUME--mia-code--mcps--260313--ac705a66-2c15-4a1c-a26d-9491018c5ba8.sh +1 -0
- package/scripts/install-widget-in-home-pi-agent-extensions.sh +4 -0
- package/scripts/sample-decompose--2604011535-prompt.sh +1 -0
- package/skills/deep-search/AGENTS.md +17 -0
- package/skills/deep-search/SKILL.md +281 -0
- package/skills/deep-search/agent-templates.md +224 -0
- package/skills/deep-search/orchestration-patterns.md +95 -0
- package/skills/miaco-pde-inquiry-routing-deep-search/AGENTS.md +13 -0
- package/skills/miaco-pde-inquiry-routing-deep-search/SKILL.md +136 -0
- package/skills/miaco-pde-inquiry-routing-internal-external-relationship/AGENTS.md +4 -0
- package/skills/miaco-pde-inquiry-routing-internal-external-relationship/SKILL.md +157 -0
- package/skills/miaco-pde-inquiry-routing-local-qmd/AGENTS.md +42 -0
- package/skills/miaco-pde-inquiry-routing-local-qmd/SKILL.md +135 -0
- package/skills/qmd/AGENTS.md +3 -0
- package/skills/qmd/SKILL.md +144 -0
- package/skills/qmd/references/mcp-setup.md +102 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/SKILL.md +234 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/agent-templates.md +436 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/orchestration-patterns.md +197 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/references/ceremonial-technology.md +102 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/references/creative-orientation.md +99 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/references/prompt-decomposition.md +73 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/references/rise-framework.md +74 -0
- package/skills/rise-pde-inquiry-session-multi-agents-v3/references/structural-tension.md +82 -0
- package/src/cli.ts +35 -11
- package/src/geminiHeadless.ts +7 -2
- package/src/index.ts +2 -1
- package/src/mcp/miaco-server.ts +13 -1
- package/src/mcp/miatel-server.ts +13 -1
- package/src/mcp/miawa-server.ts +13 -1
- package/src/mcp/utils.ts +41 -8
- package/src/sessionStore.ts +44 -4
- package/src/types.ts +2 -1
- package/widget/mia-ceremony/README.md +36 -0
- package/widget/mia-ceremony/index.ts +143 -0
- package/widget/mia-interceptor/README.md +39 -0
- package/widget/mia-interceptor/index.ts +221 -0
- package/widget/mia-tools/README.md +37 -0
- package/widget/mia-tools/index.ts +569 -0
- package/widget/miette-echo/README.md +44 -0
- package/widget/miette-echo/index.ts +164 -0
- package/.claude/settings.local.json +0 -9
- package/.hch/issue_.env +0 -4
- package/.hch/issue_add__2601211715.json +0 -77
- package/.hch/issue_add__2601211715.md +0 -4
- package/.hch/issue_add__2602242020.json +0 -78
- package/.hch/issue_add__2602242020.md +0 -7
- package/.hch/issues.json +0 -2312
- package/.hch/issues.md +0 -30
- package/WS__mia-code__260214__IAIP_PDE.code-workspace +0 -29
- package/WS__mia-code__src332__260122.code-workspace +0 -23
- package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/checkpoints/index.md +0 -6
- package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/events.jsonl +0 -213
- package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/plan.md +0 -243
- package/samples/copilot/session-state/be76abaa-a27f-4725-b2a9-22fb45f7e0f7/workspace.yaml +0 -5
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# RISE-073: Plugin Auto-Install
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/073-plugin-auto-install.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
Plugin adoption becomes frictionless — a developer adds a plugin name to their config and mia-code handles the rest. No manual `npm install`, no version hunting, no PATH wrangling. The gap between "I want this plugin" and "the plugin is running" collapses to a single config line and one startup cycle.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- mia-code has no plugin system, so no installation mechanism exists
|
|
14
|
+
- Users manually install npm packages for any external dependency
|
|
15
|
+
- No lock file tracks what was installed or at what version
|
|
16
|
+
- No auto-resolution of missing packages — failures are opaque ("MODULE_NOT_FOUND")
|
|
17
|
+
- Different package managers (npm, pnpm, bun) are in use across projects with no detection
|
|
18
|
+
- No offline fallback — network failures during install block startup entirely
|
|
19
|
+
|
|
20
|
+
**Desired State:**
|
|
21
|
+
- Config references a plugin by name; mia-code resolves, installs, and loads it automatically
|
|
22
|
+
- Version pinning via semver ranges (`"my-plugin@^2.0.0"`) gives control without manual management
|
|
23
|
+
- Installation uses the detected package manager or falls back to npm
|
|
24
|
+
- A lock file (`.mia-code/plugin-lock.json`) records exact installed versions for reproducibility
|
|
25
|
+
- Offline mode gracefully degrades — uses cached installations, skips missing plugins
|
|
26
|
+
- User sees clear feedback: "Installing plugin my-plugin@2.1.0..." with progress
|
|
27
|
+
|
|
28
|
+
## Desired Outcome Definition
|
|
29
|
+
|
|
30
|
+
A developer adds `"plugin": ["mia-code-plugin-terraform@^1.0.0"]` to their `mia-code.json`. On next startup, mia-code checks `~/.mia-code/plugins/node_modules/` for the package. Not found — mia-code runs `npm install mia-code-plugin-terraform@^1.0.0` into that directory, displays progress, records the resolved version in the lock file, and loads the plugin. Next startup: package found in cache, version satisfies range, skip install, load directly.
|
|
31
|
+
|
|
32
|
+
## Natural Language Functional Description
|
|
33
|
+
|
|
34
|
+
### Resolution Process
|
|
35
|
+
|
|
36
|
+
For each entry in the `plugin` config array:
|
|
37
|
+
|
|
38
|
+
1. **Classify** — determine if the entry is a local path (starts with `./` or `/`), a built-in name, or an NPM package reference.
|
|
39
|
+
2. **Local paths** — resolve relative to project root. No installation needed. Skip to load.
|
|
40
|
+
3. **Built-in names** — resolve to internal module. No installation needed. Skip to load.
|
|
41
|
+
4. **NPM packages** — proceed to installation check.
|
|
42
|
+
|
|
43
|
+
### Installation Check
|
|
44
|
+
|
|
45
|
+
For NPM package references:
|
|
46
|
+
|
|
47
|
+
1. **Parse** — extract package name and optional version range from the entry (e.g., `"my-plugin@^2.0.0"` → name: `my-plugin`, range: `^2.0.0`).
|
|
48
|
+
2. **Check lock file** — read `.mia-code/plugin-lock.json`. If package exists with a version satisfying the range, check filesystem.
|
|
49
|
+
3. **Check filesystem** — look for the package in `~/.mia-code/plugins/node_modules/{name}/`. Verify `package.json` version matches lock file.
|
|
50
|
+
4. **If found and valid** — skip installation, proceed to load.
|
|
51
|
+
5. **If not found or outdated** — proceed to installation.
|
|
52
|
+
|
|
53
|
+
### Installation
|
|
54
|
+
|
|
55
|
+
1. **Detect package manager** — check for `bun.lockb` (bun), `pnpm-lock.yaml` (pnpm), or default to npm.
|
|
56
|
+
2. **Execute install** — run `{pm} install {name}@{version}` with `cwd` set to `~/.mia-code/plugins/`.
|
|
57
|
+
3. **Timeout** — 30-second limit. If exceeded, log warning and skip plugin.
|
|
58
|
+
4. **Retry** — on network failure, retry up to 3 times with exponential backoff (1s, 2s, 4s).
|
|
59
|
+
5. **Update lock file** — record `{name: version}` in `.mia-code/plugin-lock.json`.
|
|
60
|
+
6. **Notify user** — print "✓ Installed plugin my-plugin@2.1.0" on success.
|
|
61
|
+
|
|
62
|
+
### Lock File Format
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"version": 1,
|
|
67
|
+
"plugins": {
|
|
68
|
+
"mia-code-plugin-terraform": {
|
|
69
|
+
"version": "1.2.3",
|
|
70
|
+
"resolved": "https://registry.npmjs.org/mia-code-plugin-terraform/-/...",
|
|
71
|
+
"installedAt": "2025-02-17T12:00:00Z"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Install Location
|
|
78
|
+
|
|
79
|
+
Plugins install into `~/.mia-code/plugins/node_modules/` — a global location shared across projects. This avoids polluting project `node_modules/` and allows plugin reuse. A `package.json` is auto-created in `~/.mia-code/plugins/` if not present.
|
|
80
|
+
|
|
81
|
+
### Offline Mode
|
|
82
|
+
|
|
83
|
+
When `--offline` flag is set or network is unavailable:
|
|
84
|
+
- Skip all auto-install attempts
|
|
85
|
+
- Use only plugins already present in cache
|
|
86
|
+
- Log which plugins were skipped: "Plugin my-plugin not cached, skipping (offline mode)"
|
|
87
|
+
- Never fail startup due to missing optional plugins
|
|
88
|
+
|
|
89
|
+
### Version Updates
|
|
90
|
+
|
|
91
|
+
When config specifies a range and a newer version exists:
|
|
92
|
+
- Auto-update is **not** performed by default — stability over freshness
|
|
93
|
+
- `mia-code plugin update` command explicitly checks and updates all plugins
|
|
94
|
+
- Lock file prevents accidental upgrades between runs
|
|
95
|
+
|
|
96
|
+
## Supporting Structures
|
|
97
|
+
|
|
98
|
+
- **Plugin Architecture (RISE-071)** defines the plugin interface that installed packages must conform to
|
|
99
|
+
- **Multi-Level Config (RISE-064)** provides the `plugin` array from merged configuration
|
|
100
|
+
- **Managed Config Directory (RISE-070)** manages `~/.mia-code/` where plugins are installed
|
|
101
|
+
- **Structured Logging (RISE-007)** records installation attempts, successes, and failures
|
|
102
|
+
|
|
103
|
+
## Creative Advancement Scenarios
|
|
104
|
+
|
|
105
|
+
**Scenario 1 — Zero-Friction Adoption:**
|
|
106
|
+
A developer reads about `mia-code-plugin-eslint` in a blog post. They add one line to their config. Next time they run mia-code, the plugin auto-installs in 3 seconds and the agent gains ESLint integration. No terminal commands, no README hunting.
|
|
107
|
+
|
|
108
|
+
**Scenario 2 — Team-Wide Plugin Standardization:**
|
|
109
|
+
A team commits `.mia-code.json` with `"plugin": ["mia-code-plugin-jira@^1.0.0", "mia-code-plugin-datadog@^2.0.0"]`. Every developer who clones the repo gets the same plugins auto-installed on first run. The lock file ensures version consistency.
|
|
110
|
+
|
|
111
|
+
**Scenario 3 — Offline Development:**
|
|
112
|
+
A developer works on an airplane. mia-code starts with `--offline`. Plugins installed from previous sessions load normally from cache. A newly added plugin in config is skipped with a clear message. The developer continues working with reduced but functional capabilities.
|
|
113
|
+
|
|
114
|
+
**Scenario 4 — Install Failure Recovery:**
|
|
115
|
+
NPM registry is temporarily down. mia-code attempts to install a new plugin, times out after 30 seconds, retries twice, then logs: "Failed to install my-plugin: network timeout. Plugin disabled for this session." The agent starts normally with all other plugins active. Next session, auto-install succeeds.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# RISE-074: Permission System
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/074-permission-system.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
Every agent action passes through a permission gate that balances autonomy with safety. Developers define granular rules — allow file reads everywhere, deny writes to lock files, ask before running shell commands — creating a trust boundary that lets the agent work freely within defined limits while requiring human approval at the edges.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- mia-code has no formal permission system — the agent can read, write, and execute anything
|
|
14
|
+
- Users must trust the agent entirely or not use it at all — no middle ground
|
|
15
|
+
- No way to restrict the agent from modifying sensitive files (`.env`, `package-lock.json`, production configs)
|
|
16
|
+
- Shell command execution has no guardrails — the agent can run destructive commands
|
|
17
|
+
- Different projects have different security requirements but share the same unrestricted agent
|
|
18
|
+
- Session-level permission grants ("always allow" / "never allow") are not tracked
|
|
19
|
+
|
|
20
|
+
**Desired State:**
|
|
21
|
+
- A rules-based permission model evaluates every agent action before execution
|
|
22
|
+
- Rules specify permission (tool/action), optional file pattern (glob), and action (allow/deny/ask)
|
|
23
|
+
- Rules are evaluated in order — first match wins, no match defaults to "ask"
|
|
24
|
+
- Permissions layer across sources: built-in defaults → global config → project config → session overrides
|
|
25
|
+
- Developers can lock down sensitive paths while leaving routine operations unrestricted
|
|
26
|
+
- Session-scoped overrides accumulate as users respond to "ask" prompts with "always" or "never"
|
|
27
|
+
|
|
28
|
+
## Desired Outcome Definition
|
|
29
|
+
|
|
30
|
+
A project's `.mia-code.json` contains permission rules that allow all file reads, deny writes to `*.lock` files, and ask before any bash execution. The agent reads files freely, is blocked from modifying lock files with a clear message, and prompts the user before running shell commands. The user responds "always allow" to bash — this override persists for the session.
|
|
31
|
+
|
|
32
|
+
## Natural Language Functional Description
|
|
33
|
+
|
|
34
|
+
### Permission Rule Model
|
|
35
|
+
|
|
36
|
+
Each rule is an object with three fields:
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
interface PermissionRule {
|
|
40
|
+
permission: string; // tool or action identifier, or "*" for all
|
|
41
|
+
pattern?: string; // glob pattern for file paths (optional)
|
|
42
|
+
action: "allow" | "deny" | "ask";
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Covered Permissions
|
|
47
|
+
|
|
48
|
+
The system recognizes these permission identifiers:
|
|
49
|
+
|
|
50
|
+
- `read` — file reading operations
|
|
51
|
+
- `write` — file creation or full overwrite
|
|
52
|
+
- `edit` — file modification (partial edits)
|
|
53
|
+
- `bash` — shell command execution
|
|
54
|
+
- `question` — asking the user a question
|
|
55
|
+
- `external_directory` — accessing files outside the project root
|
|
56
|
+
- `plan_enter` — entering plan mode
|
|
57
|
+
- `plan_exit` — exiting plan mode
|
|
58
|
+
- `todo_create`, `todo_update`, `todo_delete` — todo operations
|
|
59
|
+
- Any tool ID (e.g., `grep`, `glob`, `web_fetch`) — tool-specific permissions
|
|
60
|
+
|
|
61
|
+
### Rule Evaluation
|
|
62
|
+
|
|
63
|
+
When the agent attempts an action:
|
|
64
|
+
|
|
65
|
+
1. Determine the permission identifier (e.g., `write` for file creation).
|
|
66
|
+
2. Determine the target path if applicable (e.g., `src/auth.ts`).
|
|
67
|
+
3. Iterate through the merged rules array in order.
|
|
68
|
+
4. For each rule: if `permission` matches (exact or wildcard) AND `pattern` matches the path (or no pattern specified), return the rule's `action`.
|
|
69
|
+
5. If no rule matches, default to `"ask"`.
|
|
70
|
+
|
|
71
|
+
### Configuration
|
|
72
|
+
|
|
73
|
+
Rules are defined in `mia-code.json` at any config level:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"permissions": [
|
|
78
|
+
{"permission": "read", "action": "allow"},
|
|
79
|
+
{"permission": "write", "pattern": "*.lock", "action": "deny"},
|
|
80
|
+
{"permission": "write", "pattern": "*.env*", "action": "deny"},
|
|
81
|
+
{"permission": "bash", "action": "ask"},
|
|
82
|
+
{"permission": "external_directory", "action": "deny"}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Layered Resolution
|
|
88
|
+
|
|
89
|
+
Permissions merge across configuration layers with later layers taking precedence:
|
|
90
|
+
|
|
91
|
+
1. **Built-in defaults** — sensible base: allow reads, ask for writes and bash
|
|
92
|
+
2. **Global config** (`~/.mia-code.json`) — user-wide preferences
|
|
93
|
+
3. **Project config** (`.mia-code.json` in project root) — project-specific restrictions
|
|
94
|
+
4. **Agent-specific** — agents can have tailored permissions (e.g., a review agent gets read-only)
|
|
95
|
+
5. **Session overrides** — accumulated from "always"/"never" responses during the session
|
|
96
|
+
|
|
97
|
+
### Session-Scoped Overrides
|
|
98
|
+
|
|
99
|
+
When the user responds to an "ask" prompt:
|
|
100
|
+
- **"yes"** — allow this specific invocation only
|
|
101
|
+
- **"always"** — add a session-scoped `allow` rule for this permission+pattern
|
|
102
|
+
- **"no"** — deny this specific invocation only
|
|
103
|
+
- **"never"** — add a session-scoped `deny` rule for this permission+pattern
|
|
104
|
+
|
|
105
|
+
Session overrides are prepended to the rules array (checked first) and discarded when the session ends.
|
|
106
|
+
|
|
107
|
+
### Deny Behavior
|
|
108
|
+
|
|
109
|
+
When a permission is denied:
|
|
110
|
+
- The tool execution is skipped
|
|
111
|
+
- A clear message is returned to the agent: "Permission denied: cannot write to package-lock.json (matched rule: deny writes to *.lock)"
|
|
112
|
+
- The agent can acknowledge and proceed with alternative approaches
|
|
113
|
+
|
|
114
|
+
## Supporting Structures
|
|
115
|
+
|
|
116
|
+
- **Plugin Hooks (RISE-072)** exposes `permission.ask` hook for plugins to participate in permission decisions
|
|
117
|
+
- **Multi-Level Config (RISE-064)** provides the layered configuration that permissions merge across
|
|
118
|
+
- **Agent Definition (RISE-010)** allows per-agent permission profiles
|
|
119
|
+
- **Permission Prompts (RISE-060)** handles the TUI rendering of ask/allow/deny prompts
|
|
120
|
+
|
|
121
|
+
## Creative Advancement Scenarios
|
|
122
|
+
|
|
123
|
+
**Scenario 1 — Read-Only Review Agent:**
|
|
124
|
+
A code review agent is configured with `{"permission": "*", "action": "deny"}` followed by `{"permission": "read", "action": "allow"}` and `{"permission": "grep", "action": "allow"}`. The agent can explore the codebase but cannot modify anything. Perfect for automated review workflows where the agent should only observe and report.
|
|
125
|
+
|
|
126
|
+
**Scenario 2 — Locked Production Configs:**
|
|
127
|
+
A project's `.mia-code.json` denies writes to `*.env*`, `docker-compose.yml`, and `terraform/*.tf`. The agent freely refactors application code but cannot touch infrastructure or secrets. A developer working on Terraform explicitly overrides with "always allow" when needed.
|
|
128
|
+
|
|
129
|
+
**Scenario 3 — Progressive Trust Building:**
|
|
130
|
+
A new user starts with default permissions (ask for everything). Over several sessions, they respond "always" to file reads, writes to `src/`, and test execution. Their comfort grows. Eventually they configure explicit allow rules in their global config, keeping "ask" only for bash commands and external directory access.
|
|
131
|
+
|
|
132
|
+
**Scenario 4 — Team Security Policy:**
|
|
133
|
+
A team commits strict permissions in their project `.mia-code.json`: no bash commands allowed, no external directory access, writes only to `src/` and `tests/`. Individual developers can add session overrides for their workflows, but the base policy ensures the agent stays within safe boundaries for everyone.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# RISE-075: Git Worktree Management
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/075-git-worktree-management.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
Agents gain the ability to work in isolated sandboxes without touching the developer's working tree. By leveraging git worktrees, mia-code creates parallel workspaces where experimental changes live on their own branches — enabling fearless exploration, parallel investigations, and clean rollback without ever disrupting the main branch or the developer's uncommitted work.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- mia-code operates directly on the developer's working directory — all changes are immediately visible and risky
|
|
14
|
+
- The agent's experimental modifications mix with the developer's in-progress work
|
|
15
|
+
- No mechanism exists to isolate speculative changes (e.g., "try refactoring this two different ways")
|
|
16
|
+
- Reverting agent changes requires manual `git checkout` or `git stash`, which may conflict with developer's own changes
|
|
17
|
+
- Parallel investigations are impossible — the agent can only work in one directory state at a time
|
|
18
|
+
- Git awareness is basic — mia-code uses CLI git commands but has no worktree management layer
|
|
19
|
+
|
|
20
|
+
**Desired State:**
|
|
21
|
+
- Agents can create git worktrees for isolated experimentation with a single operation
|
|
22
|
+
- Each worktree gets a uniquely named branch (`mia-code/adjective-noun`) for easy identification
|
|
23
|
+
- Multiple worktrees can coexist, enabling parallel approaches to the same problem
|
|
24
|
+
- Worktree cleanup is complete — removing a worktree also deletes its branch
|
|
25
|
+
- Submodules and project initialization (npm install, etc.) are handled automatically
|
|
26
|
+
- The developer's main working tree is never modified by worktree operations
|
|
27
|
+
|
|
28
|
+
## Desired Outcome Definition
|
|
29
|
+
|
|
30
|
+
The agent receives a task to "try two different approaches to optimizing the database queries." It creates two worktrees: `mia-code/swift-falcon` and `mia-code/calm-brook`. In each, it applies a different optimization strategy. The developer reviews both, picks the better one, and merges that branch. The other worktree is removed cleanly — branch deleted, directory gone, no traces.
|
|
31
|
+
|
|
32
|
+
## Natural Language Functional Description
|
|
33
|
+
|
|
34
|
+
### Worktree Operations
|
|
35
|
+
|
|
36
|
+
The worktree module exposes four operations:
|
|
37
|
+
|
|
38
|
+
**Create** — `worktree.create(name?: string)`
|
|
39
|
+
1. Generate a branch name: `mia-code/{adjective}-{noun}` (or use provided name).
|
|
40
|
+
2. Verify no existing branch or directory conflicts.
|
|
41
|
+
3. Run `git worktree add .mia-code/worktrees/{name} -b mia-code/{name}` from the repository root.
|
|
42
|
+
4. If the project has submodules, run `git submodule update --init --recursive` in the new worktree.
|
|
43
|
+
5. If start scripts are configured (e.g., `npm install`), execute them in the new worktree.
|
|
44
|
+
6. Return the worktree path and branch name.
|
|
45
|
+
|
|
46
|
+
**Remove** — `worktree.remove(name: string)`
|
|
47
|
+
1. Run `git worktree remove .mia-code/worktrees/{name} --force`.
|
|
48
|
+
2. Delete the branch: `git branch -D mia-code/{name}`.
|
|
49
|
+
3. Run `git worktree prune` to clean stale references.
|
|
50
|
+
|
|
51
|
+
**Reset** — `worktree.reset(name: string)`
|
|
52
|
+
1. In the worktree, run `git checkout -- .` and `git clean -fd`.
|
|
53
|
+
2. Reset to the default branch state: `git reset --hard origin/main` (or detected default branch).
|
|
54
|
+
|
|
55
|
+
**List** — `worktree.list()`
|
|
56
|
+
1. Run `git worktree list --porcelain`.
|
|
57
|
+
2. Parse output into structured data: `{name, path, branch, head}[]`.
|
|
58
|
+
3. Filter to only mia-code-managed worktrees (branch prefix `mia-code/`).
|
|
59
|
+
|
|
60
|
+
### Worktree Directory Structure
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
project-root/
|
|
64
|
+
├── .mia-code/
|
|
65
|
+
│ └── worktrees/
|
|
66
|
+
│ ├── swift-falcon/ ← full working copy
|
|
67
|
+
│ │ ├── src/
|
|
68
|
+
│ │ ├── package.json
|
|
69
|
+
│ │ └── ...
|
|
70
|
+
│ └── calm-brook/ ← another full working copy
|
|
71
|
+
│ ├── src/
|
|
72
|
+
│ ├── package.json
|
|
73
|
+
│ └── ...
|
|
74
|
+
├── src/ ← developer's main working tree (untouched)
|
|
75
|
+
└── ...
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Naming Convention
|
|
79
|
+
|
|
80
|
+
Branch names follow the pattern `mia-code/{adjective}-{noun}`:
|
|
81
|
+
- Adjective pool: ~50 positive, memorable adjectives (swift, bright, calm, clear, crisp, deep, fair, keen, kind, lean, mild, neat, pure, rich, sage, warm, wise...)
|
|
82
|
+
- Noun pool: ~50 nature/animal nouns (brook, cedar, crane, dawn, eagle, flame, grove, hawk, jade, lake, maple, oak, peak, ridge, tide, vale, wave, wolf...)
|
|
83
|
+
- Selection: random pairing from each pool
|
|
84
|
+
- Collision handling: if the combination exists (branch or directory), try another random pair up to 10 times, then append a numeric counter
|
|
85
|
+
|
|
86
|
+
### Start Scripts
|
|
87
|
+
|
|
88
|
+
After worktree creation, mia-code can run initialization commands:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"worktree": {
|
|
93
|
+
"startScripts": ["npm install", "npm run build"]
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
These run in the worktree directory, ensuring dependencies are installed and the project is buildable in the new workspace.
|
|
99
|
+
|
|
100
|
+
### Conflict Avoidance
|
|
101
|
+
|
|
102
|
+
Before creating a worktree:
|
|
103
|
+
- Check `git branch --list mia-code/{name}` — fail if branch exists
|
|
104
|
+
- Check filesystem for `.mia-code/worktrees/{name}/` — fail if directory exists
|
|
105
|
+
- Check `git worktree list` — fail if worktree already registered
|
|
106
|
+
|
|
107
|
+
## Supporting Structures
|
|
108
|
+
|
|
109
|
+
- **Branch Naming (RISE-079)** defines the adjective-noun naming convention in detail
|
|
110
|
+
- **Snapshot System (RISE-076)** can capture state within worktrees for undo support
|
|
111
|
+
- **Permission System (RISE-074)** governs whether the agent is allowed to create worktrees
|
|
112
|
+
- **Structured Logging (RISE-007)** records worktree lifecycle events
|
|
113
|
+
|
|
114
|
+
## Creative Advancement Scenarios
|
|
115
|
+
|
|
116
|
+
**Scenario 1 — Parallel Refactoring Strategies:**
|
|
117
|
+
The agent creates two worktrees to try different approaches to a performance issue. In `swift-falcon`, it rewrites the hot path with caching. In `calm-brook`, it parallelizes the computation. Both build and pass tests. The developer compares benchmarks and merges the winner.
|
|
118
|
+
|
|
119
|
+
**Scenario 2 — Safe Experimentation:**
|
|
120
|
+
A developer asks "can you try upgrading React to v19?" The agent creates a worktree, performs the upgrade, fixes breaking changes, and runs tests — all without touching the developer's working tree. If tests fail, the worktree is removed and the developer's code is untouched.
|
|
121
|
+
|
|
122
|
+
**Scenario 3 — Code Review Isolation:**
|
|
123
|
+
The agent creates a worktree to apply suggested changes from a PR review. The reviewer can inspect the worktree to verify the changes look correct before the PR author applies them to their branch.
|
|
124
|
+
|
|
125
|
+
**Scenario 4 — Cleanup After Exploration:**
|
|
126
|
+
A developer has three old worktrees from previous sessions. They run `worktree.list()` and see `swift-falcon` (3 days old), `calm-brook` (1 week old), `deep-ridge` (2 weeks old). They remove the stale ones — branches are deleted, directories cleaned, git refs pruned.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# RISE-076: Snapshot System
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/076-snapshot-system.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
Every file-modifying action the agent takes is preceded by an invisible checkpoint. These git-based snapshots create a complete timeline of the workspace state throughout a session — enabling undo, diff, audit, and revert without relying on the project's own git history. The developer gains the confidence to let the agent work freely, knowing any change can be precisely unwound.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- mia-code has no formal snapshot system — file modifications are permanent once written
|
|
14
|
+
- Undoing agent changes requires manual `git checkout` or `git stash`, mixing agent and developer changes
|
|
15
|
+
- No record exists of what the workspace looked like before a specific tool call
|
|
16
|
+
- The project's git history is the only recovery mechanism, but uncommitted changes are invisible to it
|
|
17
|
+
- Multi-step agent operations have no intermediate save points — failure mid-sequence leaves partial changes
|
|
18
|
+
- No audit trail captures the exact sequence of file modifications within a session
|
|
19
|
+
|
|
20
|
+
**Desired State:**
|
|
21
|
+
- Before every file-modifying operation, a snapshot captures the current state of all tracked files
|
|
22
|
+
- Snapshots are stored in a hidden git repository separate from the project's git, avoiding history pollution
|
|
23
|
+
- Each snapshot records the tree hash, affected files, timestamp, and associated message/tool IDs
|
|
24
|
+
- Snapshots enable undo (revert last change), diff (compare states), and session revert (go back to start)
|
|
25
|
+
- Binary and large files are handled gracefully — detected and excluded from snapshots
|
|
26
|
+
- Old snapshots are pruned automatically to prevent unbounded storage growth
|
|
27
|
+
|
|
28
|
+
## Desired Outcome Definition
|
|
29
|
+
|
|
30
|
+
The agent edits three files during a session. Before each edit, a snapshot is silently captured. The developer says "undo that last change." mia-code restores the files to the snapshot taken before the third edit. The developer says "show me what changed since the session started." mia-code diffs snapshot #0 (session start) against the current state and displays a unified diff of all three files.
|
|
31
|
+
|
|
32
|
+
## Natural Language Functional Description
|
|
33
|
+
|
|
34
|
+
### Snapshot Capture
|
|
35
|
+
|
|
36
|
+
Before any file-modifying operation (write, edit, bash that may modify files), the snapshot system:
|
|
37
|
+
|
|
38
|
+
1. **Stage tracked files** — run `git add -A` in the snapshot repository to capture current state.
|
|
39
|
+
2. **Write tree** — run `git write-tree` to create a tree object representing the complete directory state.
|
|
40
|
+
3. **Store metadata** — record the tree hash with associated context:
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
interface Snapshot {
|
|
44
|
+
hash: string; // git tree hash
|
|
45
|
+
files: string[]; // list of files in the tree
|
|
46
|
+
timestamp: number; // Unix timestamp
|
|
47
|
+
messageId: string; // associated session message
|
|
48
|
+
toolCallId: string; // specific tool invocation that triggered this
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
4. **Index** — append snapshot metadata to the session's snapshot index for fast lookup.
|
|
53
|
+
|
|
54
|
+
### Snapshot Repository
|
|
55
|
+
|
|
56
|
+
Snapshots use a hidden git repository at `.mia-code/snapshots/`:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
.mia-code/
|
|
60
|
+
└── snapshots/
|
|
61
|
+
├── .git/ ← bare-ish git repo for object storage
|
|
62
|
+
└── index.json ← snapshot metadata index
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
This repository is separate from the project's git. It uses git's object storage for efficient deduplication (unchanged files share objects across snapshots) without affecting the project's history, branches, or remote.
|
|
66
|
+
|
|
67
|
+
### Automatic Snapshot Triggers
|
|
68
|
+
|
|
69
|
+
Snapshots are captured automatically before:
|
|
70
|
+
- `file_write` — creating or overwriting a file
|
|
71
|
+
- `file_edit` — modifying part of a file
|
|
72
|
+
- `bash` — executing shell commands (which may modify files unpredictably)
|
|
73
|
+
- `file_delete` — removing a file
|
|
74
|
+
|
|
75
|
+
The snapshot captures the state **before** the operation, so restoring it undoes that specific change.
|
|
76
|
+
|
|
77
|
+
### Binary File Handling
|
|
78
|
+
|
|
79
|
+
Before including a file in a snapshot:
|
|
80
|
+
- Check the first 8KB for null bytes — if found, treat as binary
|
|
81
|
+
- Files matching common binary patterns (`*.png`, `*.jpg`, `*.wasm`, `*.bin`) are excluded
|
|
82
|
+
- Excluded files are noted in the snapshot metadata but not stored
|
|
83
|
+
|
|
84
|
+
### Large File Handling
|
|
85
|
+
|
|
86
|
+
- Files exceeding 1MB are flagged but still included (git handles large files efficiently)
|
|
87
|
+
- Extended path support handles deeply nested directories (git's default 4096-char limit)
|
|
88
|
+
- Symlinks are stored as symlinks, not dereferenced
|
|
89
|
+
|
|
90
|
+
### Snapshot Cleanup
|
|
91
|
+
|
|
92
|
+
To prevent unbounded growth:
|
|
93
|
+
- Keep the last 100 snapshots per session
|
|
94
|
+
- On session end, prune unreferenced git objects: `git prune` and `git gc`
|
|
95
|
+
- Snapshots older than 30 days are eligible for removal
|
|
96
|
+
- The session-start snapshot is always preserved (never pruned)
|
|
97
|
+
|
|
98
|
+
### Session Integration
|
|
99
|
+
|
|
100
|
+
Each session tracks its snapshots:
|
|
101
|
+
- Session start triggers an initial snapshot (baseline state)
|
|
102
|
+
- The snapshot index maps message IDs to snapshot hashes for efficient lookup
|
|
103
|
+
- Session metadata includes snapshot count and total storage size
|
|
104
|
+
|
|
105
|
+
## Supporting Structures
|
|
106
|
+
|
|
107
|
+
- **Snapshot Diff (RISE-077)** compares snapshots to generate human-readable diffs
|
|
108
|
+
- **Snapshot Restore (RISE-078)** uses snapshots to revert files to previous states
|
|
109
|
+
- **Session Persistence (RISE-018)** stores snapshot references alongside session data
|
|
110
|
+
- **Structured Logging (RISE-007)** records snapshot capture events for debugging
|
|
111
|
+
|
|
112
|
+
## Creative Advancement Scenarios
|
|
113
|
+
|
|
114
|
+
**Scenario 1 — Undo Last Edit:**
|
|
115
|
+
The agent modifies `src/auth.ts` but introduces a bug. The developer says "undo." mia-code identifies the most recent snapshot (taken before the edit), restores `src/auth.ts` to its previous state, and confirms: "Restored src/auth.ts to state before file_edit."
|
|
116
|
+
|
|
117
|
+
**Scenario 2 — Session Impact Review:**
|
|
118
|
+
After a long session with 20+ tool calls, the developer asks "what did you change?" mia-code diffs the session-start snapshot against the current state, producing a complete summary: 5 files modified, 2 created, 120 lines added, 45 deleted.
|
|
119
|
+
|
|
120
|
+
**Scenario 3 — Mid-Session Recovery:**
|
|
121
|
+
The agent runs a bash command that unexpectedly modifies several config files. The developer notices and says "revert to before that bash command." mia-code finds the snapshot taken before the bash execution and restores all affected files.
|
|
122
|
+
|
|
123
|
+
**Scenario 4 — Audit Trail:**
|
|
124
|
+
A developer reviews what happened during an overnight agent session. The snapshot index shows 15 snapshots with timestamps and associated tool calls. They can step through the timeline, diffing adjacent snapshots to see exactly what changed at each step.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# RISE-077: Snapshot Diff
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/077-snapshot-diff.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
Any two snapshots become comparable — revealing exactly what changed between two points in time. Developers see precise, syntax-highlighted diffs that answer "what did the agent do?" at any granularity: between individual tool calls, across message groups, or over an entire session. The workspace timeline becomes fully transparent.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- mia-code has no snapshot system, so no diff between workspace states is possible
|
|
14
|
+
- The only diff available is `git diff` against the project's last commit, which includes developer changes too
|
|
15
|
+
- No way to isolate "what the agent changed" from "what the developer changed"
|
|
16
|
+
- No per-tool-call change tracking — understanding the impact of a specific operation requires manual inspection
|
|
17
|
+
- Session summaries are narrative (LLM-generated text), not precise (actual file diffs)
|
|
18
|
+
- No statistics on agent impact — lines added, files modified, scope of changes
|
|
19
|
+
|
|
20
|
+
**Desired State:**
|
|
21
|
+
- Any two snapshot hashes can be compared to produce a structured diff
|
|
22
|
+
- Diffs include file-level status (added, deleted, modified), line-level changes (additions, deletions), and statistics
|
|
23
|
+
- Display formatting includes syntax highlighting, color-coded additions/deletions, and clear file headers
|
|
24
|
+
- Session-level diffs (start → current) give a complete picture of agent impact
|
|
25
|
+
- Tool-call-level diffs (before → after) show exactly what one operation changed
|
|
26
|
+
- Diffs can be exported as patches for application elsewhere
|
|
27
|
+
|
|
28
|
+
## Desired Outcome Definition
|
|
29
|
+
|
|
30
|
+
The developer asks "what changed in the last tool call?" mia-code compares the snapshot before the tool call with the snapshot after, producing a colored diff showing 2 files modified: `src/api.ts` (+15 lines, -3 lines) and `tests/api.test.ts` (+22 lines). The developer asks "show me everything since session start" — mia-code diffs snapshot #0 against current state, showing 5 files changed with aggregate statistics.
|
|
31
|
+
|
|
32
|
+
## Natural Language Functional Description
|
|
33
|
+
|
|
34
|
+
### Diff Operations
|
|
35
|
+
|
|
36
|
+
Two primary diff operations:
|
|
37
|
+
|
|
38
|
+
**Text Diff** — `diff(hashA: string, hashB: string): string`
|
|
39
|
+
- Uses `git diff-tree` to compare two tree hashes from the snapshot repository
|
|
40
|
+
- Returns unified diff format text with context lines
|
|
41
|
+
- Suitable for display in terminal or piping to tools
|
|
42
|
+
|
|
43
|
+
**Structured Diff** — `diffFull(hashA: string, hashB: string): FileDiff[]`
|
|
44
|
+
- Parses the raw diff into structured objects per file
|
|
45
|
+
- Each object contains before/after content, change counts, and status
|
|
46
|
+
|
|
47
|
+
### FileDiff Model
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
interface FileDiff {
|
|
51
|
+
file: string; // relative file path
|
|
52
|
+
before: string; // full file content before
|
|
53
|
+
after: string; // full file content after
|
|
54
|
+
additions: number; // lines added
|
|
55
|
+
deletions: number; // lines deleted
|
|
56
|
+
status: "added" | "deleted" | "modified"; // file-level change type
|
|
57
|
+
hunks: Hunk[]; // grouped changes
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
interface Hunk {
|
|
61
|
+
startBefore: number; // starting line in before-version
|
|
62
|
+
startAfter: number; // starting line in after-version
|
|
63
|
+
lines: DiffLine[]; // individual line changes
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
interface DiffLine {
|
|
67
|
+
type: "add" | "delete" | "context";
|
|
68
|
+
content: string;
|
|
69
|
+
lineNumber: number;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Display Formatting
|
|
74
|
+
|
|
75
|
+
Diffs are rendered with terminal formatting:
|
|
76
|
+
- File headers in bold with status badge: `■ src/api.ts [modified]`
|
|
77
|
+
- Added lines in green with `+` prefix
|
|
78
|
+
- Deleted lines in red with `-` prefix
|
|
79
|
+
- Context lines in dim gray
|
|
80
|
+
- Hunk headers showing line ranges: `@@ -10,5 +10,8 @@`
|
|
81
|
+
- Syntax highlighting applied to diff content based on file extension
|
|
82
|
+
- Statistics summary at the bottom: "3 files changed, 45 insertions(+), 12 deletions(-)"
|
|
83
|
+
|
|
84
|
+
### Common Diff Scenarios
|
|
85
|
+
|
|
86
|
+
- **Tool call diff:** compare snapshot before and after a specific tool execution
|
|
87
|
+
- **Session diff:** compare session-start snapshot with current state for complete session impact
|
|
88
|
+
- **Message diff:** compare state before a message's first tool call with state after its last tool call
|
|
89
|
+
|
|
90
|
+
### Patch Generation
|
|
91
|
+
|
|
92
|
+
`toPatch(diffs: FileDiff[]): string` generates standard unified diff format applicable with `git apply` or `patch -p1` — useful for sharing agent changes as portable patches.
|
|
93
|
+
|
|
94
|
+
### Statistics
|
|
95
|
+
|
|
96
|
+
Aggregate `DiffStats` computed from `FileDiff[]`: `filesChanged`, `filesAdded`, `filesDeleted`, `filesModified`, `totalAdditions`, `totalDeletions`, and `estimatedLOCImpact` (additions minus deletions).
|
|
97
|
+
|
|
98
|
+
## Supporting Structures
|
|
99
|
+
|
|
100
|
+
- **Snapshot System (RISE-076)** provides the tree hashes that diff operations compare
|
|
101
|
+
- **Snapshot Restore (RISE-078)** uses diff display to show what a restore operation will change
|
|
102
|
+
- **Syntax Highlighting (RISE-062)** applies language-aware coloring to diff content
|
|
103
|
+
- **Streaming Display (RISE-059)** renders large diffs incrementally in the TUI
|
|
104
|
+
|
|
105
|
+
## Creative Advancement Scenarios
|
|
106
|
+
|
|
107
|
+
**Scenario 1 — Tool Call Inspection:**
|
|
108
|
+
The agent ran `bash npm run build` and the developer suspects it modified generated files. They ask "what did that bash command change?" mia-code diffs the pre-bash snapshot against post-bash state, revealing that `dist/bundle.js` was regenerated (+500 lines changed) — expected behavior, no concern.
|
|
109
|
+
|
|
110
|
+
**Scenario 2 — Session Summary Report:**
|
|
111
|
+
At session end, the developer asks for a summary. mia-code generates a session diff: 8 files modified across `src/` and `tests/`, 234 lines added, 67 deleted. The developer reviews the complete diff to verify all changes before committing.
|
|
112
|
+
|
|
113
|
+
**Scenario 3 — Selective Understanding:**
|
|
114
|
+
The agent made 12 tool calls across 5 messages. The developer wants to understand what message #3 did specifically. mia-code diffs the snapshots bracketing message #3's tool calls, showing only the 2 files that message touched.
|
|
115
|
+
|
|
116
|
+
**Scenario 4 — Patch Export for Review:**
|
|
117
|
+
The developer asks the agent to generate a patch of all session changes. mia-code produces a unified diff file that the developer attaches to a PR or sends to a colleague for review — portable, standard format, applicable with `git apply`.
|