// 两种拒绝错误
export class RejectedError extends Error {
constructor() {
super("The user rejected permission to use this specific tool call.")
}
}
export class CorrectedError extends Error {
constructor(message: string) {
super(`The user rejected permission to use this specific tool call ` +
`with the following feedback: ${message}`)
}
}
// permission/arity.ts
export namespace BashArity {
export function prefix(tokens: string[]) {
for (let len = tokens.length; len > 0; len--) {
const prefix = tokens.slice(0, len).join(" ")
const arity = ARITY[prefix]
if (arity !== undefined) return tokens.slice(0, arity)
}
if (tokens.length === 0) return []
return tokens.slice(0, 1) // 默认:取第一个 token
}
const ARITY: Record<string, number> = {
cat: 1, // cat file.txt → "cat"
git: 2, // git checkout main → "git checkout"
npm: 2, // npm install → "npm install"
"npm run": 3, // npm run dev → "npm run dev"
docker: 2, // docker run nginx → "docker run"
"docker compose": 3, // docker compose up → "docker compose up"
// ... 总共 100+ 个命令的元数定义
}
}