|
skills: agent-written skills and protocol proposals with chat buttons
A skill the agent writes now lands in the catalog on its own; a protocol never does. `skills(op="propose")` stores the document in `skill_proposals` and returns a card through the tool result's `ui_component` metadata — no `render_component` call, so profiles without `navi_ui` get the card too. The decision is the server's: the browser sends `skill_proposal` over the WebSocket, `SkillStore.decide_proposal` writes the catalog row from the *stored* document, names the clicking user as the author, and answers with `skill_proposal_decided`. The agent learns the outcome as a hidden user message, the same path a `navi_ui` form submission takes. `create`/`update` refuse protocol documents and point at `propose` with `replaces_id`, so the version history of a protocol always starts from a user's yes. The chat store now renders `ui_component` from any tool whose result carries one, not only from `mcp__navi_ui__render_component`. |
|---|
|
|
| docs/skills.md |
|---|
| manuals/skills.md |
|---|
| navi/api/routes/skills.py |
|---|
| navi/api/websocket.py |
|---|
| navi/skills/__init__.py |
|---|
| navi/skills/store.py |
|---|
| navi/tools/skills.py |
|---|
| tests/unit/skills/test_skill_store.py |
|---|
| tests/unit/tools/test_skills.py |
|---|
| webclient/dist/assets/index-Blo-O92P.css 100644 → 0 |
|---|
| webclient/dist/assets/index-ChK6n5aK.js 0 → 100644 |
|---|
|
Not supported
|
| webclient/dist/assets/index-SW1nQB25.css 0 → 100644 |
|---|
| webclient/dist/assets/index-Yyi3-5xJ.js 100644 → 0 |
|---|
|
Not supported
|
| webclient/dist/index.html |
|---|
| webclient/dist/sw.js |
|---|
| webclient/src/api/index.js |
|---|
| webclient/src/components/ui/SkillProposal.vue 0 → 100644 |
|---|
| webclient/src/composables/useWebSocket.js |
|---|
| webclient/src/i18n/messages/en.js |
|---|
| webclient/src/i18n/messages/ru.js |
|---|
| webclient/src/i18n/messages/uk.js |
|---|
| webclient/src/stores/chat.js |
|---|
| webclient/tests/unit/components/ui/skillProposal.test.js 0 → 100644 |
|---|
| webclient/tests/unit/stores/chat.test.js |
|---|