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