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