feat(knowledge-base): wrap KnowledgeBase API in the CLI

Add `hf knowledge-base` group: list/get/tree/topics, create/update/delete,
link/unlink to projects, and add/update/delete for topics, categories and
facts. Mirrors the project command style (flag parsing, JSON/table output,
token resolution). Registered in the dispatcher and the help surface, gated
on the knowledge-base.* permissions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
h z
2026-05-31 15:03:22 +01:00
parent c0ab087436
commit 4df6e1bd5f
3 changed files with 762 additions and 0 deletions

View File

@@ -84,6 +84,30 @@ func CommandSurface() []Group {
{Name: "remove-member", Description: "Remove a project member", Permitted: has(perms, "project.manage_members")},
},
},
{
Name: "knowledge-base",
Description: "Manage knowledge bases (topics, categories, facts) and project links",
SubCommands: []Command{
{Name: "list", Description: "List knowledge bases", Permitted: has(perms, "knowledge-base.read")},
{Name: "get", Description: "Show a knowledge base by code", Permitted: has(perms, "knowledge-base.read")},
{Name: "tree", Description: "Show the full topic/category/fact tree", Permitted: has(perms, "knowledge-base.read")},
{Name: "topics", Description: "List topics in a knowledge base", Permitted: has(perms, "knowledge-base.read")},
{Name: "create", Description: "Create a knowledge base", Permitted: has(perms, "knowledge-base.create")},
{Name: "update", Description: "Update a knowledge base", Permitted: has(perms, "knowledge-base.update")},
{Name: "delete", Description: "Delete a knowledge base", Permitted: has(perms, "knowledge-base.delete")},
{Name: "link", Description: "Link a knowledge base to a project", Permitted: has(perms, "knowledge-base.update")},
{Name: "unlink", Description: "Unlink a knowledge base from a project", Permitted: has(perms, "knowledge-base.update")},
{Name: "add-topic", Description: "Add a topic", Permitted: has(perms, "knowledge-base.update")},
{Name: "update-topic", Description: "Update a topic", Permitted: has(perms, "knowledge-base.update")},
{Name: "delete-topic", Description: "Delete a topic", Permitted: has(perms, "knowledge-base.update")},
{Name: "add-category", Description: "Add a category", Permitted: has(perms, "knowledge-base.update")},
{Name: "update-category", Description: "Update a category", Permitted: has(perms, "knowledge-base.update")},
{Name: "delete-category", Description: "Delete a category (and its descendants)", Permitted: has(perms, "knowledge-base.update")},
{Name: "add-fact", Description: "Add a fact", Permitted: has(perms, "knowledge-base.update")},
{Name: "update-fact", Description: "Update a fact", Permitted: has(perms, "knowledge-base.update")},
{Name: "delete-fact", Description: "Delete a fact", Permitted: has(perms, "knowledge-base.update")},
},
},
{
Name: "milestone",
Description: "Manage milestones",