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,139 @@
|
|
|
1
|
+
# RISE-044: Plan Mode Tool
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/044-plan-mode-tool.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
mia-code provides tools for entering and exiting a dedicated planning mode where the agent operates in read-only mode. In plan mode, the agent can read files, search code, analyze architecture, and generate detailed implementation plans — but it cannot modify files, run destructive commands, or alter project state. This creates a safe space for exploration and analysis before committing to action. The transition between plan and build modes is explicit and visible, giving the developer confidence about when the agent is observing versus acting.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- mia-code has no distinction between analysis and execution — the agent can read and write at any time
|
|
14
|
+
- Developers who want "just look, don't touch" must verbally instruct the agent, which is unreliable
|
|
15
|
+
- There is no visual indicator of whether the agent is in an analysis or execution mindset
|
|
16
|
+
- The agent may begin editing files before fully understanding the codebase — premature action
|
|
17
|
+
- No mechanism to generate a plan as a structured artifact before executing it
|
|
18
|
+
- Accidental file modifications during exploration require manual reversion
|
|
19
|
+
|
|
20
|
+
**Desired State:**
|
|
21
|
+
- A `plan_enter` tool switches the agent to read-only mode with analysis-focused prompting
|
|
22
|
+
- A `plan_exit` tool returns the agent to build mode with full permissions restored
|
|
23
|
+
- During plan mode: file reads, code search, and analysis are enabled; file writes and destructive commands are disabled
|
|
24
|
+
- Plan mode output emphasizes: observations, recommendations, structural analysis, and implementation plans
|
|
25
|
+
- A visual indicator (e.g., `[PLAN]` prefix) shows plan mode is active in the UI
|
|
26
|
+
- Plan mode can generate todo items (RISE-043) for build mode execution
|
|
27
|
+
|
|
28
|
+
## Desired Outcome Definition
|
|
29
|
+
|
|
30
|
+
The developer types `/plan`. The agent enters plan mode — the prompt changes to `[PLAN] >`, file write tools are disabled, and the system prompt shifts to analysis focus. The developer asks "how should we restructure the auth module?" The agent reads files, analyzes dependencies, and produces a structured plan with 6 implementation steps — each created as a todo item. The developer types `/build`, the agent exits plan mode, reads the todos, and begins executing step 1.
|
|
31
|
+
|
|
32
|
+
## Natural Language Functional Description
|
|
33
|
+
|
|
34
|
+
### Plan Mode Entry
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
interface PlanEnterInput {
|
|
38
|
+
focus?: string; // optional focus area for the analysis prompt
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
When `plan_enter` is invoked:
|
|
43
|
+
|
|
44
|
+
1. **Permission restriction** — the agent's permission ruleset is temporarily replaced with a read-only variant:
|
|
45
|
+
- File read: allowed
|
|
46
|
+
- File write: denied
|
|
47
|
+
- Code search: allowed
|
|
48
|
+
- Bash execution: restricted to read-only commands (ls, cat, find, grep — not rm, mv, write operations)
|
|
49
|
+
- Web fetch: allowed (reading documentation is part of planning)
|
|
50
|
+
2. **Prompt augmentation** — the system prompt gains plan-mode instructions:
|
|
51
|
+
- "You are in PLAN mode. Analyze, observe, and recommend — do not modify files or execute destructive commands."
|
|
52
|
+
- "Structure your analysis with clear sections: Current State, Issues, Recommendations, Implementation Steps."
|
|
53
|
+
- "Create todo items for each implementation step to prepare for build mode."
|
|
54
|
+
3. **UI indicator** — the prompt prefix changes to `[PLAN]` and a status bar shows "Plan Mode Active"
|
|
55
|
+
4. **Event emission** — `mode.changed` event with `{mode: "plan"}` is broadcast (RISE-002)
|
|
56
|
+
|
|
57
|
+
### Plan Mode Exit
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
interface PlanExitInput {} // no parameters needed
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
When `plan_exit` is invoked:
|
|
64
|
+
|
|
65
|
+
1. **Permission restoration** — the agent's original permission ruleset is restored
|
|
66
|
+
2. **Prompt restoration** — the plan-mode system prompt additions are removed
|
|
67
|
+
3. **UI indicator** — the prompt returns to normal, status bar shows "Build Mode"
|
|
68
|
+
4. **Event emission** — `mode.changed` event with `{mode: "build"}` is broadcast
|
|
69
|
+
5. **Todo awareness** — the agent is prompted to check for pending todos created during planning
|
|
70
|
+
|
|
71
|
+
### Plan Mode Analysis Patterns
|
|
72
|
+
|
|
73
|
+
During plan mode, the agent follows analysis-oriented patterns:
|
|
74
|
+
|
|
75
|
+
**Architecture Analysis:**
|
|
76
|
+
- Read key files (entry points, configs, type definitions)
|
|
77
|
+
- Map dependency relationships
|
|
78
|
+
- Identify patterns and anti-patterns
|
|
79
|
+
- Note coupling points and separation concerns
|
|
80
|
+
|
|
81
|
+
**Codebase Assessment:**
|
|
82
|
+
- Search for code smells (duplicated code, large files, complex functions)
|
|
83
|
+
- Identify test coverage gaps
|
|
84
|
+
- Review documentation completeness
|
|
85
|
+
- Assess dependency health
|
|
86
|
+
|
|
87
|
+
**Implementation Planning:**
|
|
88
|
+
- Break work into discrete, ordered steps
|
|
89
|
+
- Identify dependencies between steps
|
|
90
|
+
- Estimate complexity per step
|
|
91
|
+
- Create todo items with detailed descriptions
|
|
92
|
+
|
|
93
|
+
### Slash Commands
|
|
94
|
+
|
|
95
|
+
Plan mode integrates with the slash command system:
|
|
96
|
+
|
|
97
|
+
- `/plan` — equivalent to invoking `plan_enter` with no focus
|
|
98
|
+
- `/plan auth module` — enters plan mode with focus on auth module
|
|
99
|
+
- `/build` — equivalent to invoking `plan_exit`
|
|
100
|
+
- `/mode` — shows current mode (plan or build)
|
|
101
|
+
|
|
102
|
+
### Integration with Todo Tool
|
|
103
|
+
|
|
104
|
+
Plan mode is designed to feed into the todo tool (RISE-043):
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
During plan mode, the agent creates:
|
|
108
|
+
1. [todo] Install JWT dependencies (priority: high)
|
|
109
|
+
2. [todo] Create token utility module (priority: high)
|
|
110
|
+
3. [todo] Refactor auth middleware (priority: high)
|
|
111
|
+
4. [todo] Update route handlers (priority: medium)
|
|
112
|
+
5. [todo] Add integration tests (priority: medium)
|
|
113
|
+
6. [todo] Update API documentation (priority: low)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
When build mode is entered, these todos guide execution in order.
|
|
117
|
+
|
|
118
|
+
## Supporting Structures
|
|
119
|
+
|
|
120
|
+
- **Tool Registry (RISE-034)** registers plan_enter and plan_exit tools
|
|
121
|
+
- **Agent Permission Rulesets (RISE-011)** provides the read-only permission variant
|
|
122
|
+
- **Plan/Build Mode Toggle (RISE-014)** defines the broader mode switching architecture
|
|
123
|
+
- **Todo Tool (RISE-043)** captures plan outputs as actionable items
|
|
124
|
+
- **Event Bus (RISE-002)** broadcasts mode change events to UI and clients
|
|
125
|
+
- **Keybinding System (RISE-063)** can bind a key to toggle plan/build mode
|
|
126
|
+
|
|
127
|
+
## Creative Advancement Scenarios
|
|
128
|
+
|
|
129
|
+
**Scenario 1 — Safe Exploration:**
|
|
130
|
+
A new developer opens an unfamiliar codebase and enters plan mode. They ask "explain the architecture." The agent reads key files, maps the module structure, and produces a clear architectural overview — without any risk of accidentally modifying code during its exploration.
|
|
131
|
+
|
|
132
|
+
**Scenario 2 — Plan-Then-Execute:**
|
|
133
|
+
The developer enters plan mode and asks "how should we add WebSocket support?" The agent analyzes the current HTTP setup, identifies integration points, and creates 7 todo items. The developer reviews the plan, adjusts priorities, then enters build mode. The agent begins executing the plan from the todos — the transition from analysis to action is clean and intentional.
|
|
134
|
+
|
|
135
|
+
**Scenario 3 — Code Review Mode:**
|
|
136
|
+
A developer enters plan mode to review a colleague's recent changes. The agent reads the diff, analyzes the changes, identifies potential issues, and writes a structured review — all without modifying any files. Plan mode is naturally suited for read-only review workflows.
|
|
137
|
+
|
|
138
|
+
**Scenario 4 — Interrupted Planning:**
|
|
139
|
+
The developer enters plan mode and starts analyzing the database layer. Mid-analysis, they realize they need to fix a quick bug. They type `/build`, fix the bug, then `/plan` to resume analysis. The mode toggle is instant and non-destructive — the conversation context includes both the plan analysis and the bug fix.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# RISE-045: Background Task Tool
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/045-task-tool.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
mia-code provides a task tool that spawns sub-agents to execute work in the background while the main conversation continues. The developer asks a complex question, and instead of blocking for minutes while the agent researches, the task tool launches a sub-agent in a separate context, returns a task ID immediately, and delivers results when ready. Multiple tasks can run concurrently — exploring one part of the codebase while refactoring another. Each task runs in an isolated context with its own tool access, and results are summarized to keep the main conversation clean.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- All agent work is synchronous — the developer waits while the agent processes each request
|
|
14
|
+
- Complex multi-step tasks (full codebase analysis, large refactorings) block the conversation for minutes
|
|
15
|
+
- There is no way to run parallel workstreams — exploring and building cannot happen simultaneously
|
|
16
|
+
- Failed tasks produce verbose error output that pollutes the conversation context
|
|
17
|
+
- The developer cannot ask a follow-up question while the agent is processing the previous one
|
|
18
|
+
|
|
19
|
+
**Desired State:**
|
|
20
|
+
- A `task` tool launches sub-agents in separate contexts for background execution
|
|
21
|
+
- The tool returns a task ID immediately — the main conversation is unblocked
|
|
22
|
+
- Three task types: "explore" (read-only analysis), "task" (command execution), "general" (full capability)
|
|
23
|
+
- Tasks run in isolated contexts — they don't see subsequent main conversation messages
|
|
24
|
+
- Results are summarized: success returns a brief summary; failure returns full output for debugging
|
|
25
|
+
- Multiple tasks can run concurrently with independent completion
|
|
26
|
+
- Task status can be queried at any time
|
|
27
|
+
|
|
28
|
+
## Desired Outcome Definition
|
|
29
|
+
|
|
30
|
+
The developer asks two things: "analyze the test coverage" and "refactor the logger module." The agent launches two background tasks — an explore task for coverage analysis and a general task for refactoring. Both run concurrently. The coverage analysis completes first and returns "Coverage: 73% overall, gaps in auth/ and billing/." The refactoring completes moments later with "Refactored logger.ts into 3 modules, updated 12 imports." The main conversation stays clean and responsive throughout.
|
|
31
|
+
|
|
32
|
+
## Natural Language Functional Description
|
|
33
|
+
|
|
34
|
+
### Input Format
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
interface TaskInput {
|
|
38
|
+
description: string; // task description/prompt
|
|
39
|
+
agentType?: "explore" | "task" | "general"; // sub-agent type (default: "general")
|
|
40
|
+
model?: string; // optional model override
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Task Types
|
|
45
|
+
|
|
46
|
+
**Explore** — read-only codebase analysis. The sub-agent can read files, search code, and analyze architecture but cannot modify anything. Uses a fast/cheap model by default for rapid iteration. Best for: "find all files that use X", "explain how Y works", "map the dependency graph."
|
|
47
|
+
|
|
48
|
+
**Task** — command execution with brief output. The sub-agent can run commands, read/write files, and execute tools. On success, returns a brief summary ("All 247 tests passed", "Build succeeded in 12s"). On failure, returns full output (stack traces, compiler errors). Best for: "run the tests", "build the project", "lint and fix."
|
|
49
|
+
|
|
50
|
+
**General** — full-capability agent in a separate context. Uses the primary model for high-quality reasoning. Can perform complex multi-step work requiring analysis, planning, and execution. Best for: "refactor this module", "implement this feature", "review and fix these issues."
|
|
51
|
+
|
|
52
|
+
### Task Lifecycle
|
|
53
|
+
|
|
54
|
+
1. **Launch** — the main agent calls the task tool with a description and type
|
|
55
|
+
2. **Return** — the tool returns immediately with a task ID: `{taskId: "task_abc123", status: "running"}`
|
|
56
|
+
3. **Execution** — the sub-agent works independently in its own context
|
|
57
|
+
4. **Completion** — results are stored and the main agent is notified
|
|
58
|
+
5. **Retrieval** — the main agent reads results via `task_result` or they are injected automatically
|
|
59
|
+
|
|
60
|
+
### Task Context Isolation
|
|
61
|
+
|
|
62
|
+
Each task runs in an isolated context:
|
|
63
|
+
|
|
64
|
+
- **Own message history** — the sub-agent starts with the task description as its first message
|
|
65
|
+
- **Own tool access** — filtered by the task type's permission level
|
|
66
|
+
- **Own model** — configurable, defaults based on task type
|
|
67
|
+
- **No cross-talk** — messages sent in the main conversation after task launch are not visible to the task
|
|
68
|
+
- **Shared filesystem** — the task operates on the same project directory
|
|
69
|
+
|
|
70
|
+
This isolation means tasks are reproducible and predictable — they don't depend on conversation state that may change during execution.
|
|
71
|
+
|
|
72
|
+
### Result Summarization
|
|
73
|
+
|
|
74
|
+
Task results are formatted based on outcome:
|
|
75
|
+
|
|
76
|
+
**Success (brief):**
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"taskId": "task_abc123",
|
|
80
|
+
"status": "completed",
|
|
81
|
+
"summary": "Found 23 files importing SessionStore. Largest consumers: routes.ts (7 imports), middleware.ts (5 imports).",
|
|
82
|
+
"duration": "4.2s"
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Failure (detailed):**
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"taskId": "task_def456",
|
|
90
|
+
"status": "failed",
|
|
91
|
+
"error": "Build failed with 3 errors",
|
|
92
|
+
"output": "src/auth.ts:42 - error TS2345: Argument of type...\nsrc/routes.ts:18 - error TS2304...",
|
|
93
|
+
"duration": "8.1s"
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Success produces minimal output to preserve main conversation context. Failure produces full output because debugging requires detail.
|
|
98
|
+
|
|
99
|
+
### Concurrent Execution
|
|
100
|
+
|
|
101
|
+
Multiple tasks can run simultaneously:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Main conversation:
|
|
105
|
+
> Agent: I'll analyze coverage and refactor the logger in parallel.
|
|
106
|
+
→ Launched task_001 (explore): "analyze test coverage"
|
|
107
|
+
→ Launched task_002 (general): "refactor logger module"
|
|
108
|
+
> Developer: while those run, what's the status of the auth PR?
|
|
109
|
+
> Agent: [answers immediately, not blocked by tasks]
|
|
110
|
+
← task_001 completed: "Coverage: 73%, gaps in auth/ and billing/"
|
|
111
|
+
← task_002 completed: "Refactored logger.ts into 3 modules, updated 12 imports"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Status Querying
|
|
115
|
+
|
|
116
|
+
The main agent can check task status at any time:
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
interface TaskStatusInput {
|
|
120
|
+
taskId: string;
|
|
121
|
+
}
|
|
122
|
+
// Returns: { taskId, status: "running" | "completed" | "failed", result?: ... }
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Supporting Structures
|
|
126
|
+
|
|
127
|
+
- **Tool Registry (RISE-034)** registers the task tool with id `task`
|
|
128
|
+
- **Multi-Agent System (RISE-009)** provides the sub-agent framework that tasks use
|
|
129
|
+
- **Sub-Agent Task Delegation (RISE-015)** defines the delegation protocol
|
|
130
|
+
- **Agent Permission Rulesets (RISE-011)** enforce per-task-type permission boundaries
|
|
131
|
+
- **Event Bus (RISE-002)** notifies the main conversation when tasks complete
|
|
132
|
+
- **Tool Context Injection (RISE-035)** provides cancellation via abort signal
|
|
133
|
+
|
|
134
|
+
## Creative Advancement Scenarios
|
|
135
|
+
|
|
136
|
+
**Scenario 1 — Parallel Exploration:**
|
|
137
|
+
The developer asks "summarize the auth module and the billing module." The agent launches two explore tasks concurrently. Both complete within seconds, and the agent presents a side-by-side comparison. Serial execution would have taken twice as long.
|
|
138
|
+
|
|
139
|
+
**Scenario 2 — Non-Blocking Build:**
|
|
140
|
+
The agent makes code changes and launches a task: "run the test suite." While tests run (30 seconds), the developer asks a question about the codebase. The agent answers immediately. When tests complete, results appear: "247 passed, 2 failed" with the failure details.
|
|
141
|
+
|
|
142
|
+
**Scenario 3 — Complex Refactoring Delegation:**
|
|
143
|
+
The main agent identifies 3 independent refactoring tasks. It launches each as a general task with a detailed description. All 3 run concurrently, each with full tool access. The main conversation coordinates and verifies results as they complete.
|
|
144
|
+
|
|
145
|
+
**Scenario 4 — Graceful Cancellation:**
|
|
146
|
+
A task is taking too long. The developer says "cancel that search." The agent cancels the task via its abort signal. The task sub-agent stops gracefully and returns partial results.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# RISE-046: User Question Tool
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/046-question-tool.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
mia-code provides a question tool that lets the agent ask the user questions during execution — pausing to gather information, confirm decisions, or get preferences rather than guessing. When the agent encounters ambiguity, needs clarification, or faces a decision with multiple valid paths, it uses this tool to present a clear question and wait for the user's response. The tool supports both multiple-choice questions (for fast, structured answers) and freeform input (for open-ended responses). This creates a collaborative dialogue where the agent asks for what it needs instead of making potentially wrong assumptions.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- The agent cannot ask questions during tool execution — it must complete its response before the user can input
|
|
14
|
+
- When facing ambiguity (which config format? which migration strategy?), the agent guesses or picks arbitrarily
|
|
15
|
+
- There is no structured way for the agent to present choices — it embeds questions in free text and hopes the user notices
|
|
16
|
+
- Multiple-choice questions appear as plain text, requiring the user to type exact strings to respond
|
|
17
|
+
- The agent cannot pause mid-operation to confirm a destructive action with specific context
|
|
18
|
+
|
|
19
|
+
**Desired State:**
|
|
20
|
+
- A `question` tool pauses execution, presents a question to the user, and returns their answer
|
|
21
|
+
- Multiple-choice questions display as selectable options with keyboard navigation
|
|
22
|
+
- Freeform input allows open-ended answers with optional validation
|
|
23
|
+
- Questions are formatted distinctively in the UI — clearly separated from agent output
|
|
24
|
+
- Configurable timeout prevents indefinite blocking if the user doesn't respond
|
|
25
|
+
- The agent uses questions strategically — not for every decision, but for genuinely ambiguous ones
|
|
26
|
+
|
|
27
|
+
## Desired Outcome Definition
|
|
28
|
+
|
|
29
|
+
The agent needs to create a configuration file but there are 3 valid formats (JSON, YAML, TOML). Instead of guessing, it invokes the question tool: "Which config format do you prefer?" with choices ["JSON", "YAML", "TOML"]. The user selects "YAML" from a visual picker. The agent receives "YAML" as the answer and creates the config in YAML format. The interaction took 3 seconds — less than correcting a wrong guess.
|
|
30
|
+
|
|
31
|
+
## Natural Language Functional Description
|
|
32
|
+
|
|
33
|
+
### Input Format
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
interface QuestionInput {
|
|
37
|
+
question: string; // the question text
|
|
38
|
+
choices?: string[]; // optional list of choices for multiple-choice
|
|
39
|
+
allowFreeform?: boolean; // allow free text even with choices (default: false)
|
|
40
|
+
default?: string; // default answer if timeout or empty input
|
|
41
|
+
timeout?: number; // timeout in seconds (default: 300 — 5 minutes)
|
|
42
|
+
context?: string; // optional context shown below the question
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Question Types
|
|
47
|
+
|
|
48
|
+
**Multiple Choice (choices provided, allowFreeform: false):**
|
|
49
|
+
The user sees a list of options with arrow-key navigation:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
🤔 Which testing framework should I use?
|
|
53
|
+
|
|
54
|
+
› Jest
|
|
55
|
+
Vitest
|
|
56
|
+
Mocha
|
|
57
|
+
|
|
58
|
+
(Use ↑↓ to select, Enter to confirm)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The user navigates with arrow keys and presses Enter. The tool returns the selected option as a string.
|
|
62
|
+
|
|
63
|
+
**Multiple Choice with Freeform (choices provided, allowFreeform: true):**
|
|
64
|
+
Same as above, but with an additional "Other..." option:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
🤔 Which database should I use?
|
|
68
|
+
|
|
69
|
+
› PostgreSQL
|
|
70
|
+
MySQL
|
|
71
|
+
SQLite
|
|
72
|
+
Other (type your answer)
|
|
73
|
+
|
|
74
|
+
(Use ↑↓ to select, Enter to confirm)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
If "Other" is selected, the user is prompted to type a custom answer.
|
|
78
|
+
|
|
79
|
+
**Freeform (no choices):**
|
|
80
|
+
The user sees a text input prompt:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
🤔 What should the API endpoint prefix be?
|
|
84
|
+
|
|
85
|
+
> /api/v2
|
|
86
|
+
|
|
87
|
+
(Type your answer, Enter to confirm)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Question Display
|
|
91
|
+
|
|
92
|
+
Questions are visually distinct from agent output:
|
|
93
|
+
|
|
94
|
+
- **Icon prefix** — 🤔 indicates a question (not agent commentary)
|
|
95
|
+
- **Visual separation** — horizontal rule or box drawing above and below
|
|
96
|
+
- **Context section** — if provided, shown in muted text below the question
|
|
97
|
+
- **Input area** — clearly separated from the question text
|
|
98
|
+
|
|
99
|
+
Example with context:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
🤔 The auth module has two possible refactoring approaches. Which do you prefer?
|
|
103
|
+
|
|
104
|
+
Context: Approach A keeps backward compatibility but adds complexity.
|
|
105
|
+
Approach B is cleaner but requires updating 12 call sites.
|
|
106
|
+
|
|
107
|
+
› Approach A (backward compatible)
|
|
108
|
+
Approach B (clean break)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Timeout Behavior
|
|
112
|
+
|
|
113
|
+
When a timeout is configured:
|
|
114
|
+
|
|
115
|
+
1. A countdown appears in the question prompt: `(auto-selecting "JSON" in 45s)`
|
|
116
|
+
2. If the timeout expires, the default value is used
|
|
117
|
+
3. If no default is provided and timeout expires, the tool returns `{timedOut: true, answer: null}`
|
|
118
|
+
4. The agent handles timeout by proceeding with a reasonable default or aborting
|
|
119
|
+
|
|
120
|
+
### Output Format
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"answer": "YAML",
|
|
125
|
+
"timedOut": false,
|
|
126
|
+
"method": "choice" // "choice", "freeform", or "timeout"
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Strategic Use Guidelines
|
|
131
|
+
|
|
132
|
+
The agent should use the question tool when:
|
|
133
|
+
|
|
134
|
+
- Multiple valid approaches exist and user preference matters
|
|
135
|
+
- A destructive or irreversible action needs confirmation with specific context
|
|
136
|
+
- Required information is genuinely missing (not inferable from context)
|
|
137
|
+
- The decision significantly impacts the result quality
|
|
138
|
+
|
|
139
|
+
The agent should NOT use it for:
|
|
140
|
+
|
|
141
|
+
- Trivially inferable decisions (file naming conventions visible in existing code)
|
|
142
|
+
- Every small choice (this creates "question fatigue")
|
|
143
|
+
- Decisions it can make and easily undo if wrong
|
|
144
|
+
|
|
145
|
+
### Integration with Permission System
|
|
146
|
+
|
|
147
|
+
The question tool is distinct from the permission system's `ask` mode (RISE-074). Permissions ask "should I be allowed to do X?" — a security question. The question tool asks "what should I do?" — a preference question. Both pause for user input but serve different purposes.
|
|
148
|
+
|
|
149
|
+
## Supporting Structures
|
|
150
|
+
|
|
151
|
+
- **Tool Registry (RISE-034)** registers the question tool with id `question`
|
|
152
|
+
- **Tool Context Injection (RISE-035)** provides session context for the question display
|
|
153
|
+
- **Permission System (RISE-074)** handles security-oriented permission asks (separate from preference questions)
|
|
154
|
+
- **Rich TUI (RISE-058)** renders the question with visual distinction and keyboard navigation
|
|
155
|
+
- **Event Bus (RISE-002)** broadcasts `question.asked` and `question.answered` events
|
|
156
|
+
- **Keybinding System (RISE-063)** handles arrow-key navigation in multiple-choice mode
|
|
157
|
+
|
|
158
|
+
## Creative Advancement Scenarios
|
|
159
|
+
|
|
160
|
+
**Scenario 1 — Format Preference:**
|
|
161
|
+
The developer asks "create a CI config." The agent knows the project uses GitHub Actions but could use either YAML or the new JSON format. It asks: "GitHub Actions config format?" with choices ["YAML (standard)", "JSON (experimental)"]. The developer picks YAML. The agent creates `.github/workflows/ci.yml` — the right format on the first try.
|
|
162
|
+
|
|
163
|
+
**Scenario 2 — Migration Strategy:**
|
|
164
|
+
The agent is asked to upgrade a database ORM. There are two migration paths: gradual (dual-write period) and cutover (stop-the-world migration). The agent presents both with context explaining trade-offs. The developer chooses gradual. Without the question, the agent would have guessed — and might have chosen the wrong path for the team's risk tolerance.
|
|
165
|
+
|
|
166
|
+
**Scenario 3 — Freeform Input:**
|
|
167
|
+
The agent needs to create a new API endpoint but doesn't know the preferred URL pattern. It asks: "What should the endpoint path be?" with freeform input and a default of `/api/v1/users`. The developer types `/v2/members`. The agent uses exactly what the developer specified.
|
|
168
|
+
|
|
169
|
+
**Scenario 4 — Timeout with Default:**
|
|
170
|
+
The agent asks a non-critical question with a 60-second timeout and a sensible default. The developer is reviewing another terminal and doesn't respond. After 60 seconds, the agent proceeds with the default: "Using 'src/components/' as the component directory (auto-selected after timeout)." The workflow isn't blocked by a minor decision.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# RISE-047: External Directory Access Tool
|
|
2
|
+
|
|
3
|
+
> RISE Framework Specification — Borrowed from OpenCode for mia-code
|
|
4
|
+
> Document: rispecs/borrowed_from_opencode/047-external-directory-tool.rispec.md
|
|
5
|
+
|
|
6
|
+
## Creative Intent
|
|
7
|
+
|
|
8
|
+
mia-code provides a controlled mechanism for accessing files outside the project directory. By default, all file tools are sandboxed to the project root — the agent cannot read system configs, examine other repositories, or access shared libraries. The external directory tool enables explicit, permissioned access to paths outside this sandbox. Every access is gated by the permission system: if the permission is "ask," the user sees the exact path and operation before access is granted. Write access to external directories is blocked entirely — the tool is read-only by design. This balances the agent's need for broader context with the security principle of least privilege.
|
|
9
|
+
|
|
10
|
+
## Structural Tension Analysis
|
|
11
|
+
|
|
12
|
+
**Current Reality:**
|
|
13
|
+
- mia-code's file tools have no explicit path sandboxing — the underlying CLI may access any path the user can
|
|
14
|
+
- There is no distinction between accessing project files and system files — both are equally unrestricted
|
|
15
|
+
- An agent with file read access can read `/etc/passwd`, `~/.ssh/id_rsa`, or any other sensitive file
|
|
16
|
+
- No audit trail exists for file accesses outside the project directory
|
|
17
|
+
- There is no mechanism to explicitly grant access to a specific external path while keeping everything else restricted
|
|
18
|
+
|
|
19
|
+
**Desired State:**
|
|
20
|
+
- File tools are sandboxed to the project root by default — any path outside it is rejected
|
|
21
|
+
- The external directory tool provides a controlled escape hatch for reading external paths
|
|
22
|
+
- The "external_directory" permission gates access: "allow" permits silently, "ask" prompts the user, "deny" blocks
|
|
23
|
+
- When "ask" mode is active, the user sees the exact path and operation before granting access
|
|
24
|
+
- Write access to external directories is blocked entirely — no exceptions
|
|
25
|
+
- All external access is logged with path, operation, and outcome for audit
|
|
26
|
+
|
|
27
|
+
## Desired Outcome Definition
|
|
28
|
+
|
|
29
|
+
The developer asks the agent to compare their project's ESLint config with a team-shared config at `/shared/configs/.eslintrc.json`. The agent calls the external directory tool to read the shared config. The user sees: "🔒 Read external file: /shared/configs/.eslintrc.json — Allow?" The user confirms. The agent reads the file, compares both configs, and reports differences. The access is logged. The agent could not write to the external path even if it tried.
|
|
30
|
+
|
|
31
|
+
## Natural Language Functional Description
|
|
32
|
+
|
|
33
|
+
### Input Format
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
interface ExternalDirectoryInput {
|
|
37
|
+
path: string; // absolute path to read
|
|
38
|
+
operation: "read" | "list"; // read file content or list directory
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Operations
|
|
43
|
+
|
|
44
|
+
**Read** — returns the content of a file at the specified path:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"operation": "read",
|
|
49
|
+
"path": "/shared/configs/.eslintrc.json",
|
|
50
|
+
"content": "{\n \"extends\": \"@myorg/eslint-config\",\n ...\n}",
|
|
51
|
+
"size": 1234,
|
|
52
|
+
"encoding": "utf-8"
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**List** — returns the contents of a directory (non-recursive by default):
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"operation": "list",
|
|
61
|
+
"path": "/shared/configs/",
|
|
62
|
+
"entries": [
|
|
63
|
+
{"name": ".eslintrc.json", "type": "file", "size": 1234},
|
|
64
|
+
{"name": ".prettierrc", "type": "file", "size": 456},
|
|
65
|
+
{"name": "tsconfig/", "type": "directory"}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Permission Enforcement
|
|
71
|
+
|
|
72
|
+
The tool checks the "external_directory" permission before any operation:
|
|
73
|
+
|
|
74
|
+
1. **"deny" (default)** — the operation is rejected immediately:
|
|
75
|
+
```json
|
|
76
|
+
{"error": "External directory access denied. Configure 'external_directory' permission to enable."}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
2. **"ask"** — the user is prompted with the specific path:
|
|
80
|
+
```
|
|
81
|
+
🔒 External access requested:
|
|
82
|
+
Operation: read
|
|
83
|
+
Path: /shared/configs/.eslintrc.json
|
|
84
|
+
|
|
85
|
+
Allow? (y/n)
|
|
86
|
+
```
|
|
87
|
+
If the user denies, the operation returns a permission-denied error. If they allow, the operation proceeds and is logged.
|
|
88
|
+
|
|
89
|
+
3. **"allow"** — the operation proceeds silently (for trusted environments).
|
|
90
|
+
|
|
91
|
+
### Path Restrictions
|
|
92
|
+
|
|
93
|
+
Even with permission granted, certain paths are always blocked:
|
|
94
|
+
|
|
95
|
+
- `~/.ssh/` — SSH keys and configuration
|
|
96
|
+
- `~/.gnupg/` — GPG keys
|
|
97
|
+
- `~/.aws/credentials` — cloud credentials
|
|
98
|
+
- `/etc/shadow` — system password hashes
|
|
99
|
+
- Any path matching configured blocklist patterns
|
|
100
|
+
|
|
101
|
+
These restrictions cannot be overridden — they are hardcoded security boundaries.
|
|
102
|
+
|
|
103
|
+
### Write Access
|
|
104
|
+
|
|
105
|
+
Write operations to external directories are unconditionally blocked:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"error": "Write access to external directories is not supported. External directory access is read-only."
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
This restriction is by design — the agent should never modify files outside the project. If cross-project changes are needed, the developer should open mia-code in the target project.
|
|
114
|
+
|
|
115
|
+
### Audit Logging
|
|
116
|
+
|
|
117
|
+
Every external access (whether allowed or denied) is logged:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"timestamp": "2026-03-01T14:30:00Z",
|
|
122
|
+
"tool": "external_directory",
|
|
123
|
+
"operation": "read",
|
|
124
|
+
"path": "/shared/configs/.eslintrc.json",
|
|
125
|
+
"outcome": "allowed",
|
|
126
|
+
"permission": "ask",
|
|
127
|
+
"sessionId": "sess_abc123",
|
|
128
|
+
"agent": "build"
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Logs are written to `.mia-code/audit.log` (append-only) for security review.
|
|
133
|
+
|
|
134
|
+
### Symlink Resolution
|
|
135
|
+
|
|
136
|
+
When a path within the project directory is a symlink pointing outside the project, the tool:
|
|
137
|
+
|
|
138
|
+
1. Resolves the symlink to its real path
|
|
139
|
+
2. Checks if the real path is outside the project root
|
|
140
|
+
3. If outside, applies external directory permission checks
|
|
141
|
+
4. If inside, allows normal access
|
|
142
|
+
|
|
143
|
+
This prevents symlink-based sandbox escapes.
|
|
144
|
+
|
|
145
|
+
## Supporting Structures
|
|
146
|
+
|
|
147
|
+
- **Tool Registry (RISE-034)** registers the external_directory tool with id `external_directory`
|
|
148
|
+
- **Tool Context Injection (RISE-035)** provides session context and the `ask()` function for permission prompts
|
|
149
|
+
- **Permission System (RISE-074)** provides the "external_directory" permission with allow/ask/deny modes
|
|
150
|
+
- **Agent Permission Rulesets (RISE-011)** configure per-agent external access policies
|
|
151
|
+
- **Structured Logging (RISE-007)** records audit entries for external access
|
|
152
|
+
- **File Read/Write Tools (RISE-048)** delegate to this tool when paths are outside the project root
|
|
153
|
+
|
|
154
|
+
## Creative Advancement Scenarios
|
|
155
|
+
|
|
156
|
+
**Scenario 1 — Shared Configuration Comparison:**
|
|
157
|
+
The developer maintains a shared config repository at `/repos/shared-config/`. They ask the agent to ensure their project's TypeScript config aligns with the shared base. The agent reads the external `tsconfig.json` (after user permission), compares it with the project's config, and identifies 3 misaligned compiler options.
|
|
158
|
+
|
|
159
|
+
**Scenario 2 — Reference Implementation:**
|
|
160
|
+
The developer says "look at how the auth module works in the API project at /repos/api-service/." The agent reads the external auth module files, understands the pattern, and adapts it for the current project. External access enables cross-project learning without copy-pasting.
|
|
161
|
+
|
|
162
|
+
**Scenario 3 — Blocked Sensitive Access:**
|
|
163
|
+
A prompt injection in a README file attempts to make the agent read `~/.ssh/id_rsa`. The hardcoded path blocklist rejects the request regardless of permission settings: "Path ~/.ssh/ is restricted for security." The agent reports the blocked attempt in the audit log.
|
|
164
|
+
|
|
165
|
+
**Scenario 4 — System Config Inspection:**
|
|
166
|
+
The developer asks "why isn't my Node.js version correct?" The agent requests to read `/usr/local/etc/nodenv/version` (external path, user prompted). After permission, it reads the file and identifies a version mismatch with the project's `.node-version` — diagnosing the issue.
|