|
@@ -8,9 +8,16 @@ export const TodoWriteTool = Tool.define("todowrite", {
|
|
|
parameters: z.object({
|
|
parameters: z.object({
|
|
|
todos: z.array(z.object(Todo.Info.shape)).describe("The updated todo list"),
|
|
todos: z.array(z.object(Todo.Info.shape)).describe("The updated todo list"),
|
|
|
}),
|
|
}),
|
|
|
- async execute(params, opts) {
|
|
|
|
|
|
|
+ async execute(params, ctx) {
|
|
|
|
|
+ await ctx.ask({
|
|
|
|
|
+ permission: "todowrite",
|
|
|
|
|
+ patterns: ["*"],
|
|
|
|
|
+ always: ["*"],
|
|
|
|
|
+ metadata: {},
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
await Todo.update({
|
|
await Todo.update({
|
|
|
- sessionID: opts.sessionID,
|
|
|
|
|
|
|
+ sessionID: ctx.sessionID,
|
|
|
todos: params.todos,
|
|
todos: params.todos,
|
|
|
})
|
|
})
|
|
|
return {
|
|
return {
|
|
@@ -26,8 +33,15 @@ export const TodoWriteTool = Tool.define("todowrite", {
|
|
|
export const TodoReadTool = Tool.define("todoread", {
|
|
export const TodoReadTool = Tool.define("todoread", {
|
|
|
description: "Use this tool to read your todo list",
|
|
description: "Use this tool to read your todo list",
|
|
|
parameters: z.object({}),
|
|
parameters: z.object({}),
|
|
|
- async execute(_params, opts) {
|
|
|
|
|
- const todos = await Todo.get(opts.sessionID)
|
|
|
|
|
|
|
+ async execute(_params, ctx) {
|
|
|
|
|
+ await ctx.ask({
|
|
|
|
|
+ permission: "todoread",
|
|
|
|
|
+ patterns: ["*"],
|
|
|
|
|
+ always: ["*"],
|
|
|
|
|
+ metadata: {},
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const todos = await Todo.get(ctx.sessionID)
|
|
|
return {
|
|
return {
|
|
|
title: `${todos.filter((x) => x.status !== "completed").length} todos`,
|
|
title: `${todos.filter((x) => x.status !== "completed").length} todos`,
|
|
|
metadata: {
|
|
metadata: {
|