Skip to content

Commit a9eee5c

Browse files
authored
Merge pull request #104 from zevorn/claw/skill-dispatch-fix
claw: fix skill dispatch and rename /skill to /skills
2 parents 9d31538 + a8490a9 commit a9eee5c

4 files changed

Lines changed: 50 additions & 30 deletions

File tree

claw/shell/shell_commands.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ static void cmd_memories(int argc, char **argv)
285285
#ifdef CONFIG_RTCLAW_SKILL_ENABLE
286286
#define SKILL_REPLY_SIZE 2048
287287

288-
static void cmd_skill(int argc, char **argv)
288+
static void cmd_skills(int argc, char **argv)
289289
{
290290
if (argc < 2) {
291291
char buf[512];
@@ -438,7 +438,7 @@ const shell_cmd_t shell_common_commands[] = {
438438
SHELL_CMD("/forget", cmd_forget, "Delete a long-term memory"),
439439
SHELL_CMD("/memories", cmd_memories, "List long-term memories"),
440440
#ifdef CONFIG_RTCLAW_SKILL_ENABLE
441-
SHELL_CMD("/skill", cmd_skill, "List or execute a skill"),
441+
SHELL_CMD("/skills", cmd_skills, "List or execute a skill"),
442442
#endif
443443
#ifdef CONFIG_RTCLAW_SCHED_ENABLE
444444
SHELL_CMD("/task", cmd_task, "Tasks [rm <name>]"),

platform/common/espressif/esp_shell.c

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -499,17 +499,24 @@ static void dispatch_command(char *line)
499499
#ifdef CONFIG_RTCLAW_SKILL_ENABLE
500500
/* Try dynamic skill as last resort */
501501
{
502-
char *skill_reply = claw_malloc(SKILL_REPLY_SIZE);
503-
if (skill_reply && ai_skill_try_command(argv[0], argc, argv,
504-
skill_reply,
505-
SKILL_REPLY_SIZE)
506-
== CLAW_OK) {
507-
printf("\n" CLR_GREEN "rt-claw> " CLR_RESET "%s\n",
508-
skill_reply);
509-
claw_free(skill_reply);
502+
const char *sname = argv[0];
503+
if (sname[0] == '/') {
504+
sname++;
505+
}
506+
if (ai_skill_find(sname)) {
507+
char *skill_reply = claw_malloc(SKILL_REPLY_SIZE);
508+
if (skill_reply) {
509+
if (ai_skill_try_command(argv[0], argc, argv,
510+
skill_reply,
511+
SKILL_REPLY_SIZE)
512+
== CLAW_OK) {
513+
printf("\n" CLR_GREEN "rt-claw> " CLR_RESET
514+
"%s\n", skill_reply);
515+
}
516+
claw_free(skill_reply);
517+
}
510518
return;
511519
}
512-
claw_free(skill_reply);
513520
}
514521
#endif
515522

platform/linux/shell.c

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -428,17 +428,24 @@ static void dispatch_command(char *line)
428428

429429
#ifdef CONFIG_RTCLAW_SKILL_ENABLE
430430
{
431-
char *skill_reply = claw_malloc(SKILL_REPLY_SIZE);
432-
if (skill_reply &&
433-
ai_skill_try_command(argv[0], argc, argv,
434-
skill_reply,
435-
SKILL_REPLY_SIZE) == CLAW_OK) {
436-
printf("\n" CLR_GREEN "rt-claw> " CLR_RESET
437-
"%s\n", skill_reply);
438-
claw_free(skill_reply);
431+
const char *sname = argv[0];
432+
if (sname[0] == '/') {
433+
sname++;
434+
}
435+
if (ai_skill_find(sname)) {
436+
char *skill_reply = claw_malloc(SKILL_REPLY_SIZE);
437+
if (skill_reply) {
438+
if (ai_skill_try_command(argv[0], argc, argv,
439+
skill_reply,
440+
SKILL_REPLY_SIZE)
441+
== CLAW_OK) {
442+
printf("\n" CLR_GREEN "rt-claw> " CLR_RESET
443+
"%s\n", skill_reply);
444+
}
445+
claw_free(skill_reply);
446+
}
439447
return;
440448
}
441-
claw_free(skill_reply);
442449
}
443450
#endif
444451

platform/zynq-a9/shell.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -473,19 +473,25 @@ static void dispatch_command(char *line)
473473
}
474474

475475
#ifdef CONFIG_RTCLAW_SKILL_ENABLE
476-
/* Try dynamic skill as last resort */
477476
{
478-
char *skill_reply = claw_malloc(SKILL_REPLY_SIZE);
479-
if (skill_reply && ai_skill_try_command(argv[0], argc, argv,
480-
skill_reply,
481-
SKILL_REPLY_SIZE)
482-
== CLAW_OK) {
483-
printf("\n" CLR_GREEN "rt-claw> " CLR_RESET "%s\n",
484-
skill_reply);
485-
claw_free(skill_reply);
477+
const char *sname = argv[0];
478+
if (sname[0] == '/') {
479+
sname++;
480+
}
481+
if (ai_skill_find(sname)) {
482+
char *skill_reply = claw_malloc(SKILL_REPLY_SIZE);
483+
if (skill_reply) {
484+
if (ai_skill_try_command(argv[0], argc, argv,
485+
skill_reply,
486+
SKILL_REPLY_SIZE)
487+
== CLAW_OK) {
488+
printf("\n" CLR_GREEN "rt-claw> " CLR_RESET
489+
"%s\n", skill_reply);
490+
}
491+
claw_free(skill_reply);
492+
}
486493
return;
487494
}
488-
claw_free(skill_reply);
489495
}
490496
#endif
491497

0 commit comments

Comments
 (0)