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:
@@ -216,6 +216,9 @@ func handleGroup(group help.Group, args []string) {
|
||||
case "project":
|
||||
handleProjectCommand(sub.Name, remaining)
|
||||
return
|
||||
case "knowledge-base":
|
||||
handleKnowledgeBaseCommand(sub.Name, remaining)
|
||||
return
|
||||
case "milestone":
|
||||
handleMilestoneCommand(sub.Name, remaining)
|
||||
return
|
||||
@@ -731,6 +734,83 @@ func handleProjectCommand(subCmd string, args []string) {
|
||||
}
|
||||
}
|
||||
|
||||
func handleKnowledgeBaseCommand(subCmd string, args []string) {
|
||||
tokenFlag := ""
|
||||
var filtered []string
|
||||
for i := 0; i < len(args); i++ {
|
||||
switch args[i] {
|
||||
case "--token":
|
||||
if i+1 < len(args) {
|
||||
i++
|
||||
tokenFlag = args[i]
|
||||
}
|
||||
default:
|
||||
filtered = append(filtered, args[i])
|
||||
}
|
||||
}
|
||||
|
||||
needArg := func(usage string) {
|
||||
if len(filtered) < 1 {
|
||||
output.Error(usage)
|
||||
}
|
||||
}
|
||||
|
||||
switch subCmd {
|
||||
case "list":
|
||||
commands.RunKnowledgeBaseList(filtered, tokenFlag)
|
||||
case "get":
|
||||
needArg("usage: hf knowledge-base get <kb-code>")
|
||||
commands.RunKnowledgeBaseGet(filtered[0], tokenFlag)
|
||||
case "create":
|
||||
commands.RunKnowledgeBaseCreate(filtered, tokenFlag)
|
||||
case "update":
|
||||
needArg("usage: hf knowledge-base update <kb-code> [--title ...] [--desc ...]")
|
||||
commands.RunKnowledgeBaseUpdate(filtered[0], filtered[1:], tokenFlag)
|
||||
case "delete":
|
||||
needArg("usage: hf knowledge-base delete <kb-code>")
|
||||
commands.RunKnowledgeBaseDelete(filtered[0], tokenFlag)
|
||||
case "tree":
|
||||
needArg("usage: hf knowledge-base tree <kb-code>")
|
||||
commands.RunKnowledgeBaseTree(filtered[0], tokenFlag)
|
||||
case "link":
|
||||
needArg("usage: hf knowledge-base link <kb-code> --project <project-code>")
|
||||
commands.RunKnowledgeBaseLink(filtered[0], filtered[1:], tokenFlag)
|
||||
case "unlink":
|
||||
needArg("usage: hf knowledge-base unlink <kb-code> --project <project-code>")
|
||||
commands.RunKnowledgeBaseUnlink(filtered[0], filtered[1:], tokenFlag)
|
||||
case "topics":
|
||||
needArg("usage: hf knowledge-base topics <kb-code>")
|
||||
commands.RunKnowledgeBaseTopics(filtered[0], tokenFlag)
|
||||
case "add-topic":
|
||||
needArg("usage: hf knowledge-base add-topic <kb-code> --topic <name> [--desc ...]")
|
||||
commands.RunKnowledgeBaseAddTopic(filtered[0], filtered[1:], tokenFlag)
|
||||
case "update-topic":
|
||||
needArg("usage: hf knowledge-base update-topic <topic-id> [--topic ...] [--desc ...]")
|
||||
commands.RunKnowledgeBaseUpdateTopic(filtered[0], filtered[1:], tokenFlag)
|
||||
case "delete-topic":
|
||||
needArg("usage: hf knowledge-base delete-topic <topic-id>")
|
||||
commands.RunKnowledgeBaseDeleteTopic(filtered[0], tokenFlag)
|
||||
case "add-category":
|
||||
commands.RunKnowledgeBaseAddCategory(filtered, tokenFlag)
|
||||
case "update-category":
|
||||
needArg("usage: hf knowledge-base update-category <category-id> [--name ...] [--parent ...] [--desc ...]")
|
||||
commands.RunKnowledgeBaseUpdateCategory(filtered[0], filtered[1:], tokenFlag)
|
||||
case "delete-category":
|
||||
needArg("usage: hf knowledge-base delete-category <category-id>")
|
||||
commands.RunKnowledgeBaseDeleteCategory(filtered[0], tokenFlag)
|
||||
case "add-fact":
|
||||
commands.RunKnowledgeBaseAddFact(filtered, tokenFlag)
|
||||
case "update-fact":
|
||||
needArg("usage: hf knowledge-base update-fact <fact-id> [--fact ...] [--category ...]")
|
||||
commands.RunKnowledgeBaseUpdateFact(filtered[0], filtered[1:], tokenFlag)
|
||||
case "delete-fact":
|
||||
needArg("usage: hf knowledge-base delete-fact <fact-id>")
|
||||
commands.RunKnowledgeBaseDeleteFact(filtered[0], tokenFlag)
|
||||
default:
|
||||
output.Errorf("hf knowledge-base %s is not implemented yet", subCmd)
|
||||
}
|
||||
}
|
||||
|
||||
func handleMeetingCommand(subCmd string, args []string) {
|
||||
tokenFlag := ""
|
||||
var filtered []string
|
||||
|
||||
Reference in New Issue
Block a user