agim-cli 1.2.149 → 1.2.151
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/CHANGELOG.md +156 -0
- package/dist/core/skills/loader.d.ts +92 -0
- package/dist/core/skills/loader.d.ts.map +1 -1
- package/dist/core/skills/loader.js +381 -68
- package/dist/core/skills/loader.js.map +1 -1
- package/dist/web/agim-skills-api.d.ts.map +1 -1
- package/dist/web/agim-skills-api.js +75 -1
- package/dist/web/agim-skills-api.js.map +1 -1
- package/dist/web/public/assets/{a2a-Cll3P4QN.js → a2a-BJ4YL13Y.js} +2 -2
- package/dist/web/public/assets/{a2a-Cll3P4QN.js.map → a2a-BJ4YL13Y.js.map} +1 -1
- package/dist/web/public/assets/{activity-B7T7YFlD.js → activity-Dzy3LsL8.js} +2 -2
- package/dist/web/public/assets/{activity-B7T7YFlD.js.map → activity-Dzy3LsL8.js.map} +1 -1
- package/dist/web/public/assets/{admins-CN7P018S.js → admins-CUAm5mP9.js} +2 -2
- package/dist/web/public/assets/{admins-CN7P018S.js.map → admins-CUAm5mP9.js.map} +1 -1
- package/dist/web/public/assets/{agents-Bqgq7GBF.js → agents-CyDJ89HA.js} +2 -2
- package/dist/web/public/assets/{agents-Bqgq7GBF.js.map → agents-CyDJ89HA.js.map} +1 -1
- package/dist/web/public/assets/{approvals-C8IUJQ_A.js → approvals-i39FaOuk.js} +2 -2
- package/dist/web/public/assets/{approvals-C8IUJQ_A.js.map → approvals-i39FaOuk.js.map} +1 -1
- package/dist/web/public/assets/{arrow-down-SLWKqtDc.js → arrow-down-BQ-kUumo.js} +2 -2
- package/dist/web/public/assets/{arrow-down-SLWKqtDc.js.map → arrow-down-BQ-kUumo.js.map} +1 -1
- package/dist/web/public/assets/{arrow-up-BOADc9ce.js → arrow-up-C8L1uMX_.js} +2 -2
- package/dist/web/public/assets/{arrow-up-BOADc9ce.js.map → arrow-up-C8L1uMX_.js.map} +1 -1
- package/dist/web/public/assets/{asks-C-j-DypC.js → asks-D20T9unh.js} +2 -2
- package/dist/web/public/assets/{asks-C-j-DypC.js.map → asks-D20T9unh.js.map} +1 -1
- package/dist/web/public/assets/{audit-DQb-RuXh.js → audit-DLENxEeu.js} +2 -2
- package/dist/web/public/assets/{audit-DQb-RuXh.js.map → audit-DLENxEeu.js.map} +1 -1
- package/dist/web/public/assets/{bell-CV88-ul6.js → bell-IZMkMv1H.js} +2 -2
- package/dist/web/public/assets/{bell-CV88-ul6.js.map → bell-IZMkMv1H.js.map} +1 -1
- package/dist/web/public/assets/{bgjobs-CDrK0d-W.js → bgjobs-B1lhvGco.js} +2 -2
- package/dist/web/public/assets/{bgjobs-CDrK0d-W.js.map → bgjobs-B1lhvGco.js.map} +1 -1
- package/dist/web/public/assets/{brain-B7HtSOQU.js → brain-R_LZjZV8.js} +2 -2
- package/dist/web/public/assets/{brain-B7HtSOQU.js.map → brain-R_LZjZV8.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-mdzuIa__.js → briefcase-BdiZ_zkr.js} +2 -2
- package/dist/web/public/assets/{briefcase-mdzuIa__.js.map → briefcase-BdiZ_zkr.js.map} +1 -1
- package/dist/web/public/assets/{chat-CSjtY2rN.js → chat-CLZP47Tv.js} +2 -2
- package/dist/web/public/assets/{chat-CSjtY2rN.js.map → chat-CLZP47Tv.js.map} +1 -1
- package/dist/web/public/assets/{chevron-left-uSfPn636.js → chevron-left-Y59fTozP.js} +2 -2
- package/dist/web/public/assets/{chevron-left-uSfPn636.js.map → chevron-left-Y59fTozP.js.map} +1 -1
- package/dist/web/public/assets/{chevron-right-CtelqacW.js → chevron-right-x790nj7i.js} +2 -2
- package/dist/web/public/assets/{chevron-right-CtelqacW.js.map → chevron-right-x790nj7i.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-8dbL-u7O.js → circle-check-DFYX85pc.js} +2 -2
- package/dist/web/public/assets/{circle-check-8dbL-u7O.js.map → circle-check-DFYX85pc.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-D8-svk9a.js → circle-check-big-CSJIRIBe.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-D8-svk9a.js.map → circle-check-big-CSJIRIBe.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-rUxzIz5P.js → circle-x-Bb8WBDc7.js} +2 -2
- package/dist/web/public/assets/{circle-x-rUxzIz5P.js.map → circle-x-Bb8WBDc7.js.map} +1 -1
- package/dist/web/public/assets/{clock-CG5dlBGB.js → clock-CjFbXxT9.js} +2 -2
- package/dist/web/public/assets/{clock-CG5dlBGB.js.map → clock-CjFbXxT9.js.map} +1 -1
- package/dist/web/public/assets/{confirm-dialog-DlUsSur3.js → confirm-dialog-BxRHoNWb.js} +2 -2
- package/dist/web/public/assets/{confirm-dialog-DlUsSur3.js.map → confirm-dialog-BxRHoNWb.js.map} +1 -1
- package/dist/web/public/assets/{copy-DnC76wFT.js → copy-MTv1G7jQ.js} +2 -2
- package/dist/web/public/assets/{copy-DnC76wFT.js.map → copy-MTv1G7jQ.js.map} +1 -1
- package/dist/web/public/assets/{data-table-DswkWUfG.js → data-table-CyskwqK3.js} +2 -2
- package/dist/web/public/assets/{data-table-DswkWUfG.js.map → data-table-CyskwqK3.js.map} +1 -1
- package/dist/web/public/assets/{dialog-Ceo4YuXy.js → dialog-CbUUUyma.js} +2 -2
- package/dist/web/public/assets/{dialog-Ceo4YuXy.js.map → dialog-CbUUUyma.js.map} +1 -1
- package/dist/web/public/assets/{download-DF-46tS4.js → download-Cuz5HSTK.js} +2 -2
- package/dist/web/public/assets/{download-DF-46tS4.js.map → download-Cuz5HSTK.js.map} +1 -1
- package/dist/web/public/assets/{email-CZee26-_.js → email-JVBTD9Cm.js} +2 -2
- package/dist/web/public/assets/{email-CZee26-_.js.map → email-JVBTD9Cm.js.map} +1 -1
- package/dist/web/public/assets/{empty-state-D9Hi0Atm.js → empty-state-mrWiD3Ah.js} +2 -2
- package/dist/web/public/assets/{empty-state-D9Hi0Atm.js.map → empty-state-mrWiD3Ah.js.map} +1 -1
- package/dist/web/public/assets/{external-link-D64iZa9P.js → external-link-B08yOP0L.js} +2 -2
- package/dist/web/public/assets/{external-link-D64iZa9P.js.map → external-link-B08yOP0L.js.map} +1 -1
- package/dist/web/public/assets/{eye-sY6WZb7D.js → eye-BSA7oBlI.js} +2 -2
- package/dist/web/public/assets/{eye-sY6WZb7D.js.map → eye-BSA7oBlI.js.map} +1 -1
- package/dist/web/public/assets/{facts-B7bGGwvi.js → facts-IPC6o6jR.js} +2 -2
- package/dist/web/public/assets/{facts-B7bGGwvi.js.map → facts-IPC6o6jR.js.map} +1 -1
- package/dist/web/public/assets/{goals-BfQbsvZv.js → goals-CQiFEtCu.js} +2 -2
- package/dist/web/public/assets/{goals-BfQbsvZv.js.map → goals-CQiFEtCu.js.map} +1 -1
- package/dist/web/public/assets/{health-Ba_mY0Ts.js → health-C2wwtDRS.js} +2 -2
- package/dist/web/public/assets/{health-Ba_mY0Ts.js.map → health-C2wwtDRS.js.map} +1 -1
- package/dist/web/public/assets/{heart-pulse-BjikOVwU.js → heart-pulse-l8ycLqPJ.js} +2 -2
- package/dist/web/public/assets/{heart-pulse-BjikOVwU.js.map → heart-pulse-l8ycLqPJ.js.map} +1 -1
- package/dist/web/public/assets/{heartbeat-BM8LlPes.js → heartbeat-CxeGyQ1p.js} +2 -2
- package/dist/web/public/assets/{heartbeat-BM8LlPes.js.map → heartbeat-CxeGyQ1p.js.map} +1 -1
- package/dist/web/public/assets/{hot-BtuLL6n8.js → hot-CqahuXWL.js} +2 -2
- package/dist/web/public/assets/{hot-BtuLL6n8.js.map → hot-CqahuXWL.js.map} +1 -1
- package/dist/web/public/assets/{index-DEWFfW_Z.js → index-1mxdI2Ts.js} +11 -11
- package/dist/web/public/assets/index-1mxdI2Ts.js.map +1 -0
- package/dist/web/public/assets/{index-f1K5Q2Yz.css → index-B5zx5382.css} +1 -1
- package/dist/web/public/assets/injection-DTlETF-9.js +2 -0
- package/dist/web/public/assets/injection-DTlETF-9.js.map +1 -0
- package/dist/web/public/assets/installed-BYrIRWsr.js +31 -0
- package/dist/web/public/assets/installed-BYrIRWsr.js.map +1 -0
- package/dist/web/public/assets/{jobs-Ddy81Udm.js → jobs-DGKn7wsS.js} +2 -2
- package/dist/web/public/assets/{jobs-Ddy81Udm.js.map → jobs-DGKn7wsS.js.map} +1 -1
- package/dist/web/public/assets/{layout-Bn2qUxcK.js → layout-5GOGK7pX.js} +2 -2
- package/dist/web/public/assets/{layout-Bn2qUxcK.js.map → layout-5GOGK7pX.js.map} +1 -1
- package/dist/web/public/assets/{layout-BL74fT-L.js → layout-BNsrCbDd.js} +2 -2
- package/dist/web/public/assets/{layout-BL74fT-L.js.map → layout-BNsrCbDd.js.map} +1 -1
- package/dist/web/public/assets/{layout-Bp4SAA8_.js → layout-BRwzzJRD.js} +2 -2
- package/dist/web/public/assets/{layout-Bp4SAA8_.js.map → layout-BRwzzJRD.js.map} +1 -1
- package/dist/web/public/assets/layout-Bov7xJjG.js +2 -0
- package/dist/web/public/assets/layout-Bov7xJjG.js.map +1 -0
- package/dist/web/public/assets/{layout-CZ9pGnW8.js → layout-CxlJCe_U.js} +2 -2
- package/dist/web/public/assets/{layout-CZ9pGnW8.js.map → layout-CxlJCe_U.js.map} +1 -1
- package/dist/web/public/assets/{llm-yp7b5xxL.js → llm-pv7DKMXd.js} +2 -2
- package/dist/web/public/assets/{llm-yp7b5xxL.js.map → llm-pv7DKMXd.js.map} +1 -1
- package/dist/web/public/assets/{loader-circle-Bbw4pEyE.js → loader-circle-D-_gvYI1.js} +2 -2
- package/dist/web/public/assets/{loader-circle-Bbw4pEyE.js.map → loader-circle-D-_gvYI1.js.map} +1 -1
- package/dist/web/public/assets/{map-pin-DIXHUQgM.js → map-pin-B0I4Ww6U.js} +2 -2
- package/dist/web/public/assets/{map-pin-DIXHUQgM.js.map → map-pin-B0I4Ww6U.js.map} +1 -1
- package/dist/web/public/assets/{mcp-DyaljIM_.js → mcp-B4NfRtYe.js} +2 -2
- package/dist/web/public/assets/{mcp-DyaljIM_.js.map → mcp-B4NfRtYe.js.map} +1 -1
- package/dist/web/public/assets/{memos-Dkoc157i.js → memos-C0kKjNm0.js} +2 -2
- package/dist/web/public/assets/{memos-Dkoc157i.js.map → memos-C0kKjNm0.js.map} +1 -1
- package/dist/web/public/assets/{messengers-CcyGDeUI.js → messengers-BRtpzgyO.js} +2 -2
- package/dist/web/public/assets/{messengers-CcyGDeUI.js.map → messengers-BRtpzgyO.js.map} +1 -1
- package/dist/web/public/assets/{mobile-DqzIv4Xb.js → mobile-Csr4VGd9.js} +2 -2
- package/dist/web/public/assets/{mobile-DqzIv4Xb.js.map → mobile-Csr4VGd9.js.map} +1 -1
- package/dist/web/public/assets/{native-agent-BQ7WaRGK.js → native-agent-BBgHqG48.js} +2 -2
- package/dist/web/public/assets/{native-agent-BQ7WaRGK.js.map → native-agent-BBgHqG48.js.map} +1 -1
- package/dist/web/public/assets/{network-B_yUFAqC.js → network-D-_C1Id9.js} +2 -2
- package/dist/web/public/assets/{network-B_yUFAqC.js.map → network-D-_C1Id9.js.map} +1 -1
- package/dist/web/public/assets/{outbox-l8aVOZqO.js → outbox-D-k0S4z0.js} +2 -2
- package/dist/web/public/assets/{outbox-l8aVOZqO.js.map → outbox-D-k0S4z0.js.map} +1 -1
- package/dist/web/public/assets/{pagination-BAKRGKa9.js → pagination-H9_6NsCl.js} +2 -2
- package/dist/web/public/assets/{pagination-BAKRGKa9.js.map → pagination-H9_6NsCl.js.map} +1 -1
- package/dist/web/public/assets/{persona-D3VL9Rg1.js → persona-C_8JNYfR.js} +2 -2
- package/dist/web/public/assets/{persona-D3VL9Rg1.js.map → persona-C_8JNYfR.js.map} +1 -1
- package/dist/web/public/assets/{plans-BBB5e9my.js → plans-D6YmQW_N.js} +2 -2
- package/dist/web/public/assets/{plans-BBB5e9my.js.map → plans-D6YmQW_N.js.map} +1 -1
- package/dist/web/public/assets/{play-7-Wd369f.js → play-CzbLMGqe.js} +2 -2
- package/dist/web/public/assets/{play-7-Wd369f.js.map → play-CzbLMGqe.js.map} +1 -1
- package/dist/web/public/assets/{plus-B0sfZy-j.js → plus-DHmf4GJ2.js} +2 -2
- package/dist/web/public/assets/{plus-B0sfZy-j.js.map → plus-DHmf4GJ2.js.map} +1 -1
- package/dist/web/public/assets/{policy-BM1WRXH0.js → policy-BN_bs6Io.js} +2 -2
- package/dist/web/public/assets/{policy-BM1WRXH0.js.map → policy-BN_bs6Io.js.map} +1 -1
- package/dist/web/public/assets/{qr-code-DcKs5fi3.js → qr-code-DnK1SL3l.js} +2 -2
- package/dist/web/public/assets/{qr-code-DcKs5fi3.js.map → qr-code-DnK1SL3l.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-uNKeBeRl.js → refresh-ccw-DSNfamTD.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-uNKeBeRl.js.map → refresh-ccw-DSNfamTD.js.map} +1 -1
- package/dist/web/public/assets/{reminders-DHM8K0_O.js → reminders-BCfQpyhh.js} +2 -2
- package/dist/web/public/assets/{reminders-DHM8K0_O.js.map → reminders-BCfQpyhh.js.map} +1 -1
- package/dist/web/public/assets/{save-qwJa5_SA.js → save-B6RwcyoS.js} +2 -2
- package/dist/web/public/assets/{save-qwJa5_SA.js.map → save-B6RwcyoS.js.map} +1 -1
- package/dist/web/public/assets/{schedules-Bcd0wbT4.js → schedules-Djaw4gdH.js} +2 -2
- package/dist/web/public/assets/{schedules-Bcd0wbT4.js.map → schedules-Djaw4gdH.js.map} +1 -1
- package/dist/web/public/assets/{search-BUlzNWrj.js → search-DW9n3_SF.js} +2 -2
- package/dist/web/public/assets/{search-BUlzNWrj.js.map → search-DW9n3_SF.js.map} +1 -1
- package/dist/web/public/assets/{search-i1tP2maJ.js → search-Dyl0DQcw.js} +2 -2
- package/dist/web/public/assets/{search-i1tP2maJ.js.map → search-Dyl0DQcw.js.map} +1 -1
- package/dist/web/public/assets/{security-DgJyTT4g.js → security-BLuVCXkh.js} +2 -2
- package/dist/web/public/assets/{security-DgJyTT4g.js.map → security-BLuVCXkh.js.map} +1 -1
- package/dist/web/public/assets/{service-A0Hzear0.js → service-DBpd7pkl.js} +2 -2
- package/dist/web/public/assets/{service-A0Hzear0.js.map → service-DBpd7pkl.js.map} +1 -1
- package/dist/web/public/assets/{shield-alert-DrnN6fz_.js → shield-alert-CdF1C1OF.js} +2 -2
- package/dist/web/public/assets/{shield-alert-DrnN6fz_.js.map → shield-alert-CdF1C1OF.js.map} +1 -1
- package/dist/web/public/assets/{status-badge-Ryzf96Pl.js → status-badge-BCIoenPM.js} +2 -2
- package/dist/web/public/assets/{status-badge-Ryzf96Pl.js.map → status-badge-BCIoenPM.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-Bzh3o3EF.js → subtasks-ZimmkSar.js} +2 -2
- package/dist/web/public/assets/{subtasks-Bzh3o3EF.js.map → subtasks-ZimmkSar.js.map} +1 -1
- package/dist/web/public/assets/{table-BbAOSyc8.js → table-Bm0gEvxM.js} +2 -2
- package/dist/web/public/assets/{table-BbAOSyc8.js.map → table-Bm0gEvxM.js.map} +1 -1
- package/dist/web/public/assets/{topn-DkhYw-Gp.js → topn-CIqrKIEG.js} +2 -2
- package/dist/web/public/assets/{topn-DkhYw-Gp.js.map → topn-CIqrKIEG.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-CA0cLpnU.js → trash-2-C5e_ChRg.js} +2 -2
- package/dist/web/public/assets/{trash-2-CA0cLpnU.js.map → trash-2-C5e_ChRg.js.map} +1 -1
- package/dist/web/public/assets/use-agim-skills-DpOfgXTF.js +2 -0
- package/dist/web/public/assets/use-agim-skills-DpOfgXTF.js.map +1 -0
- package/dist/web/public/assets/{use-background-tasks-B64YjlA8.js → use-background-tasks-P7MRkIjy.js} +2 -2
- package/dist/web/public/assets/{use-background-tasks-B64YjlA8.js.map → use-background-tasks-P7MRkIjy.js.map} +1 -1
- package/dist/web/public/assets/{use-llm-admin-DY2axI4D.js → use-llm-admin-5KWvGX-n.js} +2 -2
- package/dist/web/public/assets/{use-llm-admin-DY2axI4D.js.map → use-llm-admin-5KWvGX-n.js.map} +1 -1
- package/dist/web/public/assets/{use-memory-BYEjVWbU.js → use-memory-D1oAiAgA.js} +2 -2
- package/dist/web/public/assets/{use-memory-BYEjVWbU.js.map → use-memory-D1oAiAgA.js.map} +1 -1
- package/dist/web/public/assets/{use-observability-Coj02yDo.js → use-observability-DmZsQEH6.js} +2 -2
- package/dist/web/public/assets/{use-observability-Coj02yDo.js.map → use-observability-DmZsQEH6.js.map} +1 -1
- package/dist/web/public/assets/{use-settings-i1MhlkyC.js → use-settings-C35Hb-qN.js} +2 -2
- package/dist/web/public/assets/{use-settings-i1MhlkyC.js.map → use-settings-C35Hb-qN.js.map} +1 -1
- package/dist/web/public/assets/{use-workspace-DgEM35PY.js → use-workspace-CMhnIsjv.js} +2 -2
- package/dist/web/public/assets/{use-workspace-DgEM35PY.js.map → use-workspace-CMhnIsjv.js.map} +1 -1
- package/dist/web/public/assets/{useQuery-CY2iazjN.js → useQuery-qIxOSePS.js} +2 -2
- package/dist/web/public/assets/{useQuery-CY2iazjN.js.map → useQuery-qIxOSePS.js.map} +1 -1
- package/dist/web/public/assets/{vector-Ic76u2hY.js → vector-DpAG-MwT.js} +2 -2
- package/dist/web/public/assets/{vector-Ic76u2hY.js.map → vector-DpAG-MwT.js.map} +1 -1
- package/dist/web/public/assets/{viewer-BXbUN1Rl.js → viewer-oV2bNGun.js} +2 -2
- package/dist/web/public/assets/{viewer-BXbUN1Rl.js.map → viewer-oV2bNGun.js.map} +1 -1
- package/dist/web/public/assets/{workspace-CUg0JPn6.js → workspace-ndMN69ms.js} +2 -2
- package/dist/web/public/assets/{workspace-CUg0JPn6.js.map → workspace-ndMN69ms.js.map} +1 -1
- package/dist/web/public/assets/{workspaces-C-wb5FQj.js → workspaces-CQd3UL8p.js} +2 -2
- package/dist/web/public/assets/{workspaces-C-wb5FQj.js.map → workspaces-CQd3UL8p.js.map} +1 -1
- package/dist/web/public/assets/{x-D1iSuoqg.js → x-BbSX_WMw.js} +2 -2
- package/dist/web/public/assets/{x-D1iSuoqg.js.map → x-BbSX_WMw.js.map} +1 -1
- package/dist/web/public/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/public/assets/index-DEWFfW_Z.js.map +0 -1
- package/dist/web/public/assets/installed-Xr8p31ij.js +0 -31
- package/dist/web/public/assets/installed-Xr8p31ij.js.map +0 -1
- package/dist/web/public/assets/layout-pasFRkKV.js +0 -2
- package/dist/web/public/assets/layout-pasFRkKV.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,162 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.2.151] - 2026-06-13
|
|
8
|
+
|
|
9
|
+
### Changed (skills injection — workspace 完整注入铁律 + 编辑入口)
|
|
10
|
+
|
|
11
|
+
v1.2.150 的 cluster 压缩对 workspace 太狠:35 个 `fin-data-*` 折成一行
|
|
12
|
+
`fin-data-* (35): name1 · name2 · …` 后 LLM 路由质量下降——只剩名字猜,没了
|
|
13
|
+
description 关键词。运营者亲装的 workspace skill 是最强 "我要用" 信号,
|
|
14
|
+
不应该为省 token 牺牲精度。
|
|
15
|
+
|
|
16
|
+
#### 铁律:workspace 完整注入,不折叠
|
|
17
|
+
|
|
18
|
+
`buildSkillsSummary` 拆出 `buildAutoInjectionBlock(all)`,bucket 3(workspace)
|
|
19
|
+
重新走 `renderSkillRow`(完整描述行):
|
|
20
|
+
|
|
21
|
+
- bucket 0/1/3 全部 full row(agim 框架 / agim builtin / **workspace**)
|
|
22
|
+
- bucket 2 ECC picks 仍 full row(20 个 curated 推荐)
|
|
23
|
+
- 只有 bucket 4(ECC remainder 210 个)才 cluster
|
|
24
|
+
|
|
25
|
+
#### 渲染顺序调整:0 → 1 → 3 → 2 → 4
|
|
26
|
+
|
|
27
|
+
workspace 排在 ECC picks 之前。运营者亲装 > 框架预选 > ECC remainder。
|
|
28
|
+
|
|
29
|
+
#### cluster refine bug fix
|
|
30
|
+
|
|
31
|
+
旧实现遇到"所有成员都在单个 sub-key 下"(例如全部 `fin-data-*` skill 都共享
|
|
32
|
+
2 段前缀)时 bottom out 不再递归,导致 fin-data 全部折成一行 cluster。
|
|
33
|
+
现在加分支:单 sub-key 占全部成员时自动 `segDepth+1` 继续细分,
|
|
34
|
+
所以 `fin-data-aspd-*` / `fin-data-stock-*` / `fin-data-fund-*` 会拆成
|
|
35
|
+
独立 cluster 而非合并。
|
|
36
|
+
|
|
37
|
+
#### 编辑入口:~/.agim/skill-injection-override.md
|
|
38
|
+
|
|
39
|
+
运营者可以覆盖自动生成的 skill 块。文件存在且非空时,**全文替换** auto block
|
|
40
|
+
(路由头 + always-on body 保留)。三个 helper:
|
|
41
|
+
`readInjectionOverride / writeInjectionOverride / deleteInjectionOverride`。
|
|
42
|
+
环境变量 `IMHUB_SKILLS_INJECTION_OVERRIDE_PATH` 可改路径(测试用)。
|
|
43
|
+
|
|
44
|
+
#### Admin API + SPA 页
|
|
45
|
+
|
|
46
|
+
- `GET /api/agim-skills/injection` → 返回 `{ auto, override, overrideActive, overridePath, maxOverrideChars }`
|
|
47
|
+
- `PUT /api/agim-skills/injection` body `{ body: string }` → 写 override(空 body=删除;>40k 字符 413)
|
|
48
|
+
- `DELETE /api/agim-skills/injection` → 清除 override
|
|
49
|
+
- 受现有 `/api/agim-skills/*` admin allowlist 守卫
|
|
50
|
+
- 新页面 `/settings/agim-skills/injection`:auto 只读 textarea + override 可编辑 textarea +
|
|
51
|
+
Save / Clear / Copy-auto / Refresh 按钮 + 字符计数 + ≥10k 警告
|
|
52
|
+
- 中英 i18n 全套
|
|
53
|
+
|
|
54
|
+
#### 新增 env knob
|
|
55
|
+
|
|
56
|
+
- `IMHUB_SKILLS_ECC_PICKS=name1,name2,...` 覆盖默认 20 picks(推荐池)
|
|
57
|
+
- `IMHUB_SKILLS_INJECT_ECC_REMAINDER=on|off|name-list`:
|
|
58
|
+
- `on`(默认):cluster 模式
|
|
59
|
+
- `off`:完全抑制 ECC remainder 块(省 token)
|
|
60
|
+
- 逗号分隔白名单:只保留指定 skill
|
|
61
|
+
|
|
62
|
+
### Files
|
|
63
|
+
|
|
64
|
+
- `src/core/skills/loader.ts` — workspace 完整注入 + 顺序调整 + refine bug fix +
|
|
65
|
+
env knob 解析(`resolveEccTopPicks` / `resolveEccRemainderMode`)+
|
|
66
|
+
override 文件 helper(read / write / delete / `injectionOverridePath`)+
|
|
67
|
+
`buildAutoInjectionBlock` 导出供 API 预览
|
|
68
|
+
- `src/web/agim-skills-api.ts` — 新 GET/PUT/DELETE `/api/agim-skills/injection`
|
|
69
|
+
- `src/web/agim-skills-api.test.ts` — +5 case(GET 元数据 / PUT 保存 / DELETE / 空 body=删 / 413 超限)
|
|
70
|
+
- `src/web-app/src/hooks/use-agim-skills.ts` — `useSkillInjection / Save / Delete`
|
|
71
|
+
- `src/web-app/src/routes/settings/agim-skills/injection.tsx` — 新页面
|
|
72
|
+
- `src/web-app/src/routes/settings/agim-skills/layout.tsx` — tab 新增"系统提示注入"
|
|
73
|
+
- `src/web-app/src/router.tsx` — 注册新 route
|
|
74
|
+
- `src/web-app/src/i18n/locales/{zh,en}/settings.json` — `skillInjection.*` 文案
|
|
75
|
+
- `src/core/skills/loader.test.ts` — +5 case(refine 单 sub-key 递归 / picks env / remainder off / remainder allowlist / override 全文替换);2 case 旧断言更新(workspace 不聚类 / workspace 排在 ECC picks 前)
|
|
76
|
+
|
|
77
|
+
### Tests
|
|
78
|
+
|
|
79
|
+
- `loader.test.ts`:42/42 全过
|
|
80
|
+
- `agim-skills-api.test.ts`:19/19 全过
|
|
81
|
+
- typecheck 干净(search.tsx 是历史遗留,不归本 PR)
|
|
82
|
+
- SPA build 干净(`injection-*.js` chunk 已生成)
|
|
83
|
+
|
|
84
|
+
## [1.2.150] - 2026-06-12
|
|
85
|
+
|
|
86
|
+
### Changed (skills system-prompt injection — cluster-aware compression)
|
|
87
|
+
|
|
88
|
+
v1.2.149 的固定 32 行排序在 builtin 加了 230 ECC 后产生回归:
|
|
89
|
+
**用户业务 skill(workspace 源的 fin-data-* / ash-* / 白猪 / 等)全部跌出 top 32**,
|
|
90
|
+
LLM 看不到 description → 无法 route。
|
|
91
|
+
|
|
92
|
+
#### 新模型:按桶 + cluster 压缩
|
|
93
|
+
|
|
94
|
+
`buildSkillsSummary` 重写为"按桶+ cluster"输出:
|
|
95
|
+
|
|
96
|
+
- **Bucket 0–2**:逐行完整 description(curated 小集合,需要颗粒度)
|
|
97
|
+
- 0 = `agim-*` 框架(4)
|
|
98
|
+
- 1 = 非 ECC builtin(github / image-generation / long-goal / my / skill-creator / summarize / tmux / weather)
|
|
99
|
+
- 2 = ECC pinned 推荐(20)
|
|
100
|
+
- **Bucket 3(workspace)**:≥3 个同前缀 skill 自动 cluster——一行块标注 `prefix-* (N)` + 全名 + 短指引;singleton 仍 full row。运营者业务 skill(如 60 个 `fin-data-*`)只用 ~500 字符就能让 **LLM 看到所有名字 + 触发关键词**,而非吃掉 12000 字符 description 预算
|
|
101
|
+
- **Bucket 4(ECC 余下 210)**:cluster + name-only 输出(无 trigger hint)。LLM 看得到这 210 个名字,但要触发时按 description 关键词或显式 `read_skill('exact-name')` 拉全文
|
|
102
|
+
|
|
103
|
+
#### `clusterSkills(skills, minSize=3)` 算法(pure helper)
|
|
104
|
+
|
|
105
|
+
按 dash-segment 分层 group:先一段(`fin-*`),≥3 个则尝试细化到二段(`fin-data-*` 单独成 cluster)……最多 3 段深。Cluster prefix 取实际**最长公共段前缀**,所以 35 个 `fin-data-s000..s034` 合成一个 `fin-data` cluster,不是浅 `fin`。
|
|
106
|
+
|
|
107
|
+
#### 重新分桶(rankSkillBucket)
|
|
108
|
+
|
|
109
|
+
- workspace 与 ECC 余下 split 开(之前混在 bucket 3):
|
|
110
|
+
- workspace → bucket 3(按运营者意图—亲装的优先 cluster 露出,trigger hint 详细)
|
|
111
|
+
- ECC 余下 → bucket 4(aggressive cluster,仅名字)
|
|
112
|
+
|
|
113
|
+
#### 实测(agim 默认 builtin)
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
## Framework (agim-* — …) (4)
|
|
117
|
+
- agim-memory: …(full row)
|
|
118
|
+
- agim-reminders: …
|
|
119
|
+
- agim-self: …
|
|
120
|
+
- agim-skill-discovery: …
|
|
121
|
+
|
|
122
|
+
## Agim builtin (8)
|
|
123
|
+
- github: … / image-generation / long-goal / my / skill-creator / summarize / tmux / weather
|
|
124
|
+
|
|
125
|
+
## ECC harness + methodology picks (recommended) (20)
|
|
126
|
+
- agent-eval / agent-harness-construction / agent-introspection-debugging / agentic-engineering
|
|
127
|
+
/ architecture-decision-records / article-writing / autonomous-* / benchmark / blueprint
|
|
128
|
+
/ code-tour / coding-standards / content-engine / context-budget / continuous-learning-v2
|
|
129
|
+
/ cost-aware-llm-pipeline / prompt-optimizer / security-review / tdd-workflow / verification-loop
|
|
130
|
+
|
|
131
|
+
## ECC remainder (read full description via mcp__imhub__read_skill) (210)
|
|
132
|
+
- django-* (5): django-celery · django-patterns · django-security · django-tdd · django-verification
|
|
133
|
+
- kotlin-* (5): kotlin-coroutines-flows · kotlin-exposed-patterns · kotlin-ktor-patterns
|
|
134
|
+
· kotlin-patterns · kotlin-testing
|
|
135
|
+
- laravel-* (5): laravel-{patterns, plugin-discovery, security, tdd, verification}
|
|
136
|
+
- springboot-* (4): springboot-{patterns, security, tdd, verification}
|
|
137
|
+
- quarkus-* (4): quarkus-{patterns, security, tdd, verification}
|
|
138
|
+
- orch-* (6): orch-add-feature · orch-build-mvp · orch-change-feature · …
|
|
139
|
+
- … 14 个 cluster 共 56 skill + (other ECC, 154 个) name 列表
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### Token 预算
|
|
143
|
+
|
|
144
|
+
- v1.2.149 old: 32 行 × ~200 chars = ~1700 tokens(32 个 skill 露脸)
|
|
145
|
+
- v1.2.150 new: ~3300 tokens(**241 builtin + workspace skill 全部露脸**)
|
|
146
|
+
- net: token +~1600,但**每个 skill 的"存在感"露出**——对 LLM routing 是巨大改善
|
|
147
|
+
- 用户有 ~80 workspace skill 时,预计 +~500 tokens 加 workspace cluster;总 ~3800 tokens
|
|
148
|
+
|
|
149
|
+
#### `always: true` 行为
|
|
150
|
+
|
|
151
|
+
原本只走 visible 32;现在改成扫所有 buckets,按 `s.always && s.available` 来内联——
|
|
152
|
+
operator 主动标 `always: true` 的少数 skill 仍可正常 inline。
|
|
153
|
+
|
|
154
|
+
### Files
|
|
155
|
+
|
|
156
|
+
- `src/core/skills/loader.ts` — 新增 `SkillCluster` interface + `clusterSkills` pure function + cluster-aware `buildSkillsSummary` + bucket 3/4 split in `rankSkillBucket`
|
|
157
|
+
- `src/core/skills/loader.test.ts` — 更新 2 case(bucket order workspace=3 / ECC remainder=4;cap test 改为验证 cluster 块)
|
|
158
|
+
|
|
159
|
+
### Tests
|
|
160
|
+
|
|
161
|
+
37/37 全过,typecheck 双绿,build 8.2s。
|
|
162
|
+
|
|
7
163
|
## [1.2.149] - 2026-06-12
|
|
8
164
|
|
|
9
165
|
### Fixed (ECC pack — folded-description parser bug)
|
|
@@ -104,6 +104,40 @@ export declare function getSkillByName(name: string): SkillMeta | null;
|
|
|
104
104
|
* unknown name OR read failure. Honors the MAX_SKILL_BODY_CHARS cap;
|
|
105
105
|
* oversize files come back truncated with a `[truncated …]` footer. */
|
|
106
106
|
export declare function readSkillBody(name: string): string | null;
|
|
107
|
+
/**
|
|
108
|
+
* v1.2.151 — Resolve the active ECC top-pick set. Operators can override
|
|
109
|
+
* via `IMHUB_SKILLS_ECC_PICKS=name1,name2,...`. An empty or unset value
|
|
110
|
+
* falls back to the default 20-name list. Validation is intentionally
|
|
111
|
+
* forgiving: unknown names pass through (they just become no-ops when
|
|
112
|
+
* the named skill isn't installed).
|
|
113
|
+
*/
|
|
114
|
+
export declare function resolveEccTopPicks(): ReadonlySet<string>;
|
|
115
|
+
/**
|
|
116
|
+
* v1.2.151 — ECC remainder injection policy. Default `on` emits the
|
|
117
|
+
* cluster block. `off` suppresses it entirely (token-saving for ops
|
|
118
|
+
* who only want the recommended picks). A comma-list value flips to
|
|
119
|
+
* "allowlist" mode: only remainder skills in the list are emitted.
|
|
120
|
+
*/
|
|
121
|
+
type EccRemainderMode = {
|
|
122
|
+
mode: 'on';
|
|
123
|
+
} | {
|
|
124
|
+
mode: 'off';
|
|
125
|
+
} | {
|
|
126
|
+
mode: 'allowlist';
|
|
127
|
+
names: Set<string>;
|
|
128
|
+
};
|
|
129
|
+
export declare function resolveEccRemainderMode(): EccRemainderMode;
|
|
130
|
+
export declare function injectionOverridePath(): string;
|
|
131
|
+
/** Read the override file. Returns the trimmed body, or null when the
|
|
132
|
+
* file is missing / empty / unreadable. Never throws. */
|
|
133
|
+
export declare function readInjectionOverride(): string | null;
|
|
134
|
+
/** Write (or replace) the override file. The caller is responsible for
|
|
135
|
+
* authorization — this is a thin filesystem helper. Returns true on
|
|
136
|
+
* success, false on any disk error. */
|
|
137
|
+
export declare function writeInjectionOverride(body: string): boolean;
|
|
138
|
+
/** Delete the override file. Returns true when a file was actually
|
|
139
|
+
* removed (or already gone), false on filesystem error. */
|
|
140
|
+
export declare function deleteInjectionOverride(): boolean;
|
|
107
141
|
/**
|
|
108
142
|
* v1.2.149 — Rank a skill into one of four buckets for system-prompt
|
|
109
143
|
* injection. Lower rank wins (fills the visible 32 first). Within a
|
|
@@ -127,5 +161,63 @@ export declare function readSkillBody(name: string): string | null;
|
|
|
127
161
|
* homelab skills. Both belong in the on-demand pool, not the cap.
|
|
128
162
|
*/
|
|
129
163
|
export declare function rankSkillBucket(s: SkillMeta): number;
|
|
164
|
+
/**
|
|
165
|
+
* v1.2.150 — A prefix-based skill cluster. Many skills sharing a name
|
|
166
|
+
* prefix (`fin-data-aspd-*`, `white-pig-*`, …) get collapsed into one
|
|
167
|
+
* block: title + name list + brief trigger hint. The LLM still sees
|
|
168
|
+
* every skill name, just not every full description; it can call
|
|
169
|
+
* `read_skill('exact-name')` for granular content.
|
|
170
|
+
*/
|
|
171
|
+
export interface SkillCluster {
|
|
172
|
+
/** The shared prefix, e.g. "fin-data-aspd" or "white-pig". */
|
|
173
|
+
prefix: string;
|
|
174
|
+
/** Skill names in the cluster, alphabetically sorted. */
|
|
175
|
+
names: string[];
|
|
176
|
+
/** One-line trigger summary derived from member descriptions
|
|
177
|
+
* (best effort). Empty when descriptions are unhelpful. */
|
|
178
|
+
triggerHint: string;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* v1.2.150 — Pure helper: group `skills` into prefix-based clusters.
|
|
182
|
+
*
|
|
183
|
+
* Algorithm:
|
|
184
|
+
* 1. Group by first dash-segment (`fin-data-aspd-*` → key `fin`).
|
|
185
|
+
* 2. For groups of size ≥ minSize, try refining to TWO segments
|
|
186
|
+
* (`fin-data-*`). If at least 2 two-segment sub-groups themselves
|
|
187
|
+
* reach minSize, emit each sub-group as a cluster and the leftover
|
|
188
|
+
* single-segment-only members as a fallback `<seg1>-*` cluster.
|
|
189
|
+
* 3. Sub-clustering attempts also at THREE segments before bottoming
|
|
190
|
+
* out, so `fin-data-aspd-*` peels off `fin-data-aspd` instead of
|
|
191
|
+
* drowning in a generic `fin-data`.
|
|
192
|
+
* 4. Skills that don't land in any cluster (≤ minSize − 1 with their
|
|
193
|
+
* prefix peers) are returned as singletons; the caller renders
|
|
194
|
+
* them as individual rows.
|
|
195
|
+
*
|
|
196
|
+
* Pure / deterministic — same input always yields same output.
|
|
197
|
+
*/
|
|
198
|
+
export declare function clusterSkills(skills: ReadonlyArray<SkillMeta>, minSize?: number): {
|
|
199
|
+
clusters: SkillCluster[];
|
|
200
|
+
singletons: SkillMeta[];
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* v1.2.151 — Build the auto-generated tier-1 block (no header, no
|
|
204
|
+
* always-on bodies — caller wraps). Separated so the SPA editor can
|
|
205
|
+
* preview "what would auto produce right now" via the admin API.
|
|
206
|
+
*
|
|
207
|
+
* Bucket render order:
|
|
208
|
+
* 0 framework → 1 builtin → **3 workspace** → 2 ECC picks → 4 ECC remainder
|
|
209
|
+
*
|
|
210
|
+
* Operator-installed workspace skills out-rank ECC pinned picks because
|
|
211
|
+
* they are the strongest "I want this" signal. ECC picks (curated
|
|
212
|
+
* harness vocabulary) come right after so the LLM still has them
|
|
213
|
+
* within reach. ECC remainder lives at the bottom as the on-demand
|
|
214
|
+
* pool.
|
|
215
|
+
*
|
|
216
|
+
* Buckets 0/1/2/3 all emit full rows (renderSkillRow). Only bucket 4
|
|
217
|
+
* (ECC remainder) clusters — and even then, the cluster path can be
|
|
218
|
+
* disabled or scoped via `IMHUB_SKILLS_INJECT_ECC_REMAINDER`.
|
|
219
|
+
*/
|
|
220
|
+
export declare function buildAutoInjectionBlock(all: ReadonlyArray<SkillMeta>): string;
|
|
130
221
|
export declare function buildSkillsSummary(): string;
|
|
222
|
+
export {};
|
|
131
223
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/skills/loader.ts"],"names":[],"mappings":"AAiDA;;sEAEsE;AACtE,eAAO,MAAM,oBAAoB,QAAS,CAAA;AAE1C;;gDAEgD;AAChD,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC;;oDAEoD;AACpD,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,4EAA4E;IAC5E,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;IAC/B,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAA;IACX;;2DAEuD;IACvD,MAAM,EAAE,OAAO,CAAA;IACf;qCACiC;IACjC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB;0DACsD;IACtD,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB;;0EAEsE;IACtE,SAAS,EAAE,OAAO,CAAA;IAClB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;mEAE+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAmCD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;AA4BxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAiB7C;AAED;sEACsE;AACtE,wBAAgB,oBAAoB,IAAI;IACtC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB,CAOA;AAuBD,wEAAwE;AACxE,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAmB3E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAajD;AAYD;;oDAEoD;AACpD,wBAAgB,UAAU,IAAI,SAAS,EAAE,CAExC;AAED;;6BAE6B;AAC7B,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE7D;AAED;;wEAEwE;AACxE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYzD;AAkDD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/skills/loader.ts"],"names":[],"mappings":"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"}
|