@oflow-ai/core 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -116,11 +116,30 @@ class Conversation {
116
116
  break;
117
117
  }
118
118
  catch (error) {
119
- throw new Error(`Conversation error: ${error instanceof Error ? error.message : String(error)}`);
119
+ // 提供更详细的错误信息
120
+ const errorMessage = error instanceof Error ? error.message : String(error);
121
+ // 检查是否是常见错误
122
+ if (errorMessage.includes('400')) {
123
+ throw new Error(`API请求失败 (400 Bad Request): 可能原因:\n` +
124
+ `1. 模型不支持工具调用,请尝试使用支持工具调用的模型\n` +
125
+ `2. 消息格式不正确\n` +
126
+ `3. API密钥无效或已过期\n` +
127
+ `原始错误: ${errorMessage}`);
128
+ }
129
+ else if (errorMessage.includes('401')) {
130
+ throw new Error(`API认证失败 (401 Unauthorized): 请检查API密钥是否正确`);
131
+ }
132
+ else if (errorMessage.includes('429')) {
133
+ throw new Error(`API请求频率超限 (429 Rate Limit): 请稍后重试`);
134
+ }
135
+ else if (errorMessage.includes('500') || errorMessage.includes('502') || errorMessage.includes('503')) {
136
+ throw new Error(`API服务暂时不可用: 请稍后重试`);
137
+ }
138
+ throw new Error(`对话错误: ${errorMessage}`);
120
139
  }
121
140
  }
122
141
  return finalResponse;
123
142
  }
124
143
  }
125
144
  exports.Conversation = Conversation;
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxtQ0FBNEU7QUFjNUUsTUFBYSxZQUFZO0lBQ2YsUUFBUSxHQUFjLEVBQUUsQ0FBQztJQUN6QixRQUFRLENBQWE7SUFDckIsWUFBWSxDQUFlO0lBQzNCLE9BQU8sQ0FBc0I7SUFFckMsWUFBWSxPQUE0QjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLHVCQUFlLEdBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYztRQUM1Qix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDL0QseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQW1CO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFB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TCxDQUFDO29CQUVELDhDQUE4QztvQkFDOUMsU0FBUztnQkFDWCxDQUFDO2dCQUVELDRDQUE0QztnQkFDNUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztnQkFDL0IsTUFBTTtZQUVSLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkcsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUEvSUQsb0NBK0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZSwgQ2hhdENvbXBsZXRpb25PcHRpb25zLCBUb29sQ2FsbCwgU3RyZWFtQ2h1bmsgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFJUHJvdmlkZXIgfSBmcm9tICcuL2FpL29wZW5haS1wcm92aWRlcic7XG5pbXBvcnQgeyBUb29sUmVnaXN0cnksIGdldFRvb2xSZWdpc3RyeSwgVG9vbEV4ZWN1dGVPcHRpb25zIH0gZnJvbSAnLi90b29scyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2F0aW9uT3B0aW9ucyB7XG4gIHByb3ZpZGVyOiBBSVByb3ZpZGVyO1xuICB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuICBtYXhUb2tlbnM/OiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICBzaG93VGhpbmtpbmc/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgJ3ogIPov4fnqItcbiAgb25Db250ZW50PzogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZDtcbiAgb25UaGlua2luZz86ICh0aGlua2luZzogc3RyaW5nKSA9PiB2b2lkOyAvLyDmgJ3ogIPov4fnqIvlm57osINcbiAgb25Ub29sQ2FsbD86ICh0b29sQ2FsbDogVG9vbENhbGwpID0+IHZvaWQ7XG4gIG9uVG9vbFJlc3VsdD86IChyZXN1bHQ6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvbiB7XG4gIHByaXZhdGUgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuICBwcml2YXRlIHByb3ZpZGVyOiBBSVByb3ZpZGVyO1xuICBwcml2YXRlIHRvb2xSZWdpc3RyeTogVG9vbFJlZ2lzdHJ5O1xuICBwcml2YXRlIG9wdGlvbnM6IENvbnZlcnNhdGlvbk9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29udmVyc2F0aW9uT3B0aW9ucykge1xuICAgIHRoaXMucHJvdmlkZXIgPSBvcHRpb25zLnByb3ZpZGVyO1xuICAgIHRoaXMudG9vbFJlZ2lzdHJ5ID0gZ2V0VG9vbFJlZ2lzdHJ5KCk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGFkZE1lc3NhZ2UobWVzc2FnZTogTWVzc2FnZSk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZXMucHVzaChtZXNzYWdlKTtcbiAgfVxuXG4gIHNldFN5c3RlbVByb21wdChwcm9tcHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFJlbW92ZSBleGlzdGluZyBzeXN0ZW0gcHJvbXB0IGlmIGFueVxuICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzLmZpbHRlcihtID0+IG0ucm9sZSAhPT0gJ3N5c3RlbScpO1xuICAgIC8vIEFkZCBuZXcgc3lzdGVtIHByb21wdCBhdCB0aGUgYmVnaW5uaW5nXG4gICAgdGhpcy5tZXNzYWdlcy51bnNoaWZ0KHsgcm9sZTogJ3N5c3RlbScsIGNvbnRlbnQ6IHByb21wdCB9KTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VzKCk6IE1lc3NhZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZXM7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gIH1cblxuICBhc3luYyBzZW5kTWVzc2FnZSh1c2VyTWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLmFkZE1lc3NhZ2UoeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IHVzZXJNZXNzYWdlIH0pO1xuICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb252ZXJzYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0NvbnZlcnNhdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCBmaW5hbFJlc3BvbnNlID0gJyc7XG4gICAgbGV0IGl0ZXJhdGlvbnMgPSAwO1xuICAgIGNvbnN0IG1heEl0ZXJhdGlvbnMgPSAyMDsgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wc1xuXG4gICAgd2hpbGUgKGl0ZXJhdGlvbnMgPCBtYXhJdGVyYXRpb25zKSB7XG4gICAgICBpdGVyYXRpb25zKys7XG5cbiAgICAgIGNvbnN0IGNoYXRPcHRpb25zOiBDaGF0Q29tcGxldGlvbk9wdGlvbnMgPSB7XG4gICAgICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzLFxuICAgICAgICB0b29sczogdGhpcy50b29sUmVnaXN0cnkuZ2V0RGVmaW5pdGlvbnMoKSxcbiAgICAgICAgdG9vbENob2ljZTogJ2F1dG8nLFxuICAgICAgICBtYXhUb2tlbnM6IHRoaXMub3B0aW9ucy5tYXhUb2tlbnMgfHwgNDA5NixcbiAgICAgICAgdGVtcGVyYXR1cmU6IHRoaXMub3B0aW9ucy50ZW1wZXJhdHVyZSB8fCAwLjcsXG4gICAgICAgIHN0cmVhbTogdHJ1ZVxuICAgICAgfTtcblxuICAgICAgbGV0IGN1cnJlbnRDb250ZW50ID0gJyc7XG4gICAgICBsZXQgY3VycmVudFRoaW5raW5nID0gJyc7XG4gICAgICBsZXQgdG9vbENhbGxzOiBUb29sQ2FsbFtdID0gW107XG4gICAgICBsZXQgY3VycmVudElkID0gJyc7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIuY2hhdFN0cmVhbShjaGF0T3B0aW9ucywgKGNodW5rOiBTdHJlYW1DaHVuaykgPT4ge1xuICAgICAgICAgIGN1cnJlbnRJZCA9IGNodW5rLmlkO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIOWkhOeQhuaAneiAg+i/h+eoi1xuICAgICAgICAgIGlmIChjaHVuay5kZWx0YS5yZWFzb25pbmcgJiYgdGhpcy5vcHRpb25zLnNob3dUaGlua2luZykge1xuICAgICAgICAgICAgY3VycmVudFRoaW5raW5nICs9IGNodW5rLmRlbHRhLnJlYXNvbmluZztcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vblRoaW5raW5nPy4oY2h1bmsuZGVsdGEucmVhc29uaW5nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2h1bmsuZGVsdGEuY29udGVudCkge1xuICAgICAgICAgICAgY3VycmVudENvbnRlbnQgKz0gY2h1bmsuZGVsdGEuY29udGVudDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbkNvbnRlbnQ/LihjaHVuay5kZWx0YS5jb250ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2h1bmsuZGVsdGEudG9vbENhbGxzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRjIG9mIGNodW5rLmRlbHRhLnRvb2xDYWxscykge1xuICAgICAgICAgICAgICBpZiAodGMuaWQgJiYgdGMuZnVuY3Rpb24/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0b29sQ2FsbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICBpZDogdGMuaWQsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgZnVuY3Rpb246IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdGMuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzOiB0Yy5mdW5jdGlvbi5hcmd1bWVudHMgfHwgJydcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgdG9vbCBjYWxsXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSB0b29sQ2FsbHMuZmluZCh0ID0+IHQuaWQgPT09IHRjLmlkKTtcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgJiYgdGMuZnVuY3Rpb24/LmFyZ3VtZW50cykge1xuICAgICAgICAgICAgICAgICAgZXhpc3RpbmcuZnVuY3Rpb24uYXJndW1lbnRzICs9IHRjLmZ1bmN0aW9uLmFyZ3VtZW50cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCBhc3Npc3RhbnQgbWVzc2FnZVxuICAgICAgICBjb25zdCBhc3Npc3RhbnRNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgICAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgICAgIGNvbnRlbnQ6IGN1cnJlbnRDb250ZW50IHx8ICcnXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRvb2xDYWxscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXNzaXN0YW50TWVzc2FnZS50b29sQ2FsbHMgPSB0b29sQ2FsbHM7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goYXNzaXN0YW50TWVzc2FnZSk7XG5cbiAgICAgICAgLy8gUHJvY2VzcyB0b29sIGNhbGxzXG4gICAgICAgIGlmICh0b29sQ2FsbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZvciAoY29uc3QgdG9vbENhbGwgb2YgdG9vbENhbGxzKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMub25Ub29sQ2FsbD8uKHRvb2xDYWxsKTtcblxuICAgICAgICAgICAgY29uc3QgdG9vbE9wdGlvbnM6IFRvb2xFeGVjdXRlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogdGhpcy5vcHRpb25zLndvcmtpbmdEaXJlY3RvcnlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudG9vbFJlZ2lzdHJ5LmV4ZWN1dGUodG9vbENhbGwsIHRvb2xPcHRpb25zKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uVG9vbFJlc3VsdD8uKHJlc3VsdC5jb250ZW50KTtcblxuICAgICAgICAgICAgLy8gQWRkIHRvb2wgcmVzdWx0IG1lc3NhZ2VcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgIHJvbGU6ICd0b29sJyxcbiAgICAgICAgICAgICAgdG9vbENhbGxJZDogdG9vbENhbGwuaWQsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHJlc3VsdC5jb250ZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb250aW51ZSBjb252ZXJzYXRpb24gdG8gZ2V0IGZpbmFsIHJlc3BvbnNlXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBObyB0b29sIGNhbGxzLCB3ZSBoYXZlIHRoZSBmaW5hbCByZXNwb25zZVxuICAgICAgICBmaW5hbFJlc3BvbnNlID0gY3VycmVudENvbnRlbnQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbnZlcnNhdGlvbiBlcnJvcjogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsUmVzcG9uc2U7XG4gIH1cbn1cbiJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxtQ0FBNEU7QUFjNUUsTUFBYSxZQUFZO0lBQ2YsUUFBUSxHQUFjLEVBQUUsQ0FBQztJQUN6QixRQUFRLENBQWE7SUFDckIsWUFBWSxDQUFlO0lBQzNCLE9BQU8sQ0FBc0I7SUFFckMsWUFBWSxPQUE0QjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLHVCQUFlLEdBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYztRQUM1Qix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDL0QseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQW1CO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFB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YUFBYSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQWpLRCxvQ0FpS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlLCBDaGF0Q29tcGxldGlvbk9wdGlvbnMsIFRvb2xDYWxsLCBTdHJlYW1DaHVuayB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQUlQcm92aWRlciB9IGZyb20gJy4vYWkvb3BlbmFpLXByb3ZpZGVyJztcbmltcG9ydCB7IFRvb2xSZWdpc3RyeSwgZ2V0VG9vbFJlZ2lzdHJ5LCBUb29sRXhlY3V0ZU9wdGlvbnMgfSBmcm9tICcuL3Rvb2xzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25PcHRpb25zIHtcbiAgcHJvdmlkZXI6IEFJUHJvdmlkZXI7XG4gIHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHNob3dUaGlua2luZz86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAneiAg+i/h+eoi1xuICBvbkNvbnRlbnQ/OiAoY29udGVudDogc3RyaW5nKSA9PiB2b2lkO1xuICBvblRoaW5raW5nPzogKHRoaW5raW5nOiBzdHJpbmcpID0+IHZvaWQ7IC8vIOaAneiAg+i/h+eoi+Wbnuiwg1xuICBvblRvb2xDYWxsPzogKHRvb2xDYWxsOiBUb29sQ2FsbCkgPT4gdm9pZDtcbiAgb25Ub29sUmVzdWx0PzogKHJlc3VsdDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uIHtcbiAgcHJpdmF0ZSBtZXNzYWdlczogTWVzc2FnZVtdID0gW107XG4gIHByaXZhdGUgcHJvdmlkZXI6IEFJUHJvdmlkZXI7XG4gIHByaXZhdGUgdG9vbFJlZ2lzdHJ5OiBUb29sUmVnaXN0cnk7XG4gIHByaXZhdGUgb3B0aW9uczogQ29udmVyc2F0aW9uT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb252ZXJzYXRpb25PcHRpb25zKSB7XG4gICAgdGhpcy5wcm92aWRlciA9IG9wdGlvbnMucHJvdmlkZXI7XG4gICAgdGhpcy50b29sUmVnaXN0cnkgPSBnZXRUb29sUmVnaXN0cnkoKTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgYWRkTWVzc2FnZShtZXNzYWdlOiBNZXNzYWdlKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuICB9XG5cbiAgc2V0U3lzdGVtUHJvbXB0KHByb21wdDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIHN5c3RlbSBwcm9tcHQgaWYgYW55XG4gICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMuZmlsdGVyKG0gPT4gbS5yb2xlICE9PSAnc3lzdGVtJyk7XG4gICAgLy8gQWRkIG5ldyBzeXN0ZW0gcHJvbXB0IGF0IHRoZSBiZWdpbm5pbmdcbiAgICB0aGlzLm1lc3NhZ2VzLnVuc2hpZnQoeyByb2xlOiAnc3lzdGVtJywgY29udGVudDogcHJvbXB0IH0pO1xuICB9XG5cbiAgZ2V0TWVzc2FnZXMoKTogTWVzc2FnZVtdIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlcztcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZXMgPSBbXTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlKHVzZXJNZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMuYWRkTWVzc2FnZSh7IHJvbGU6ICd1c2VyJywgY29udGVudDogdXNlck1lc3NhZ2UgfSk7XG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NvbnZlcnNhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzQ29udmVyc2F0aW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IGZpbmFsUmVzcG9uc2UgPSAnJztcbiAgICBsZXQgaXRlcmF0aW9ucyA9IDA7XG4gICAgY29uc3QgbWF4SXRlcmF0aW9ucyA9IDIwOyAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3BzXG5cbiAgICB3aGlsZSAoaXRlcmF0aW9ucyA8IG1heEl0ZXJhdGlvbnMpIHtcbiAgICAgIGl0ZXJhdGlvbnMrKztcblxuICAgICAgY29uc3QgY2hhdE9wdGlvbnM6IENoYXRDb21wbGV0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgbWVzc2FnZXM6IHRoaXMubWVzc2FnZXMsXG4gICAgICAgIHRvb2xzOiB0aGlzLnRvb2xSZWdpc3RyeS5nZXREZWZpbml0aW9ucygpLFxuICAgICAgICB0b29sQ2hvaWNlOiAnYXV0bycsXG4gICAgICAgIG1heFRva2VuczogdGhpcy5vcHRpb25zLm1heFRva2VucyB8fCA0MDk2LFxuICAgICAgICB0ZW1wZXJhdHVyZTogdGhpcy5vcHRpb25zLnRlbXBlcmF0dXJlIHx8IDAuNyxcbiAgICAgICAgc3RyZWFtOiB0cnVlXG4gICAgICB9O1xuXG4gICAgICBsZXQgY3VycmVudENvbnRlbnQgPSAnJztcbiAgICAgIGxldCBjdXJyZW50VGhpbmtpbmcgPSAnJztcbiAgICAgIGxldCB0b29sQ2FsbHM6IFRvb2xDYWxsW10gPSBbXTtcbiAgICAgIGxldCBjdXJyZW50SWQgPSAnJztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm92aWRlci5jaGF0U3RyZWFtKGNoYXRPcHRpb25zLCAoY2h1bms6IFN0cmVhbUNodW5rKSA9PiB7XG4gICAgICAgICAgY3VycmVudElkID0gY2h1bmsuaWQ7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8g5aSE55CG5oCd6ICD6L+H56iLXG4gICAgICAgICAgaWYgKGNodW5rLmRlbHRhLnJlYXNvbmluZyAmJiB0aGlzLm9wdGlvbnMuc2hvd1RoaW5raW5nKSB7XG4gICAgICAgICAgICBjdXJyZW50VGhpbmtpbmcgKz0gY2h1bmsuZGVsdGEucmVhc29uaW5nO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uVGhpbmtpbmc/LihjaHVuay5kZWx0YS5yZWFzb25pbmcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjaHVuay5kZWx0YS5jb250ZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50Q29udGVudCArPSBjaHVuay5kZWx0YS5jb250ZW50O1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uQ29udGVudD8uKGNodW5rLmRlbHRhLmNvbnRlbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjaHVuay5kZWx0YS50b29sQ2FsbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGMgb2YgY2h1bmsuZGVsdGEudG9vbENhbGxzKSB7XG4gICAgICAgICAgICAgIGlmICh0Yy5pZCAmJiB0Yy5mdW5jdGlvbj8ubmFtZSkge1xuICAgICAgICAgICAgICAgIHRvb2xDYWxscy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIGlkOiB0Yy5pZCxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0Yy5mdW5jdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM6IHRjLmZ1bmN0aW9uLmFyZ3VtZW50cyB8fCAnJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyB0b29sIGNhbGxcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IHRvb2xDYWxscy5maW5kKHQgPT4gdC5pZCA9PT0gdGMuaWQpO1xuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiB0Yy5mdW5jdGlvbj8uYXJndW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICBleGlzdGluZy5mdW5jdGlvbi5hcmd1bWVudHMgKz0gdGMuZnVuY3Rpb24uYXJndW1lbnRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIGFzc2lzdGFudCBtZXNzYWdlXG4gICAgICAgIGNvbnN0IGFzc2lzdGFudE1lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICAgICAgY29udGVudDogY3VycmVudENvbnRlbnQgfHwgJydcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodG9vbENhbGxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhc3Npc3RhbnRNZXNzYWdlLnRvb2xDYWxscyA9IHRvb2xDYWxscztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVzc2FnZXMucHVzaChhc3Npc3RhbnRNZXNzYWdlKTtcblxuICAgICAgICAvLyBQcm9jZXNzIHRvb2wgY2FsbHNcbiAgICAgICAgaWYgKHRvb2xDYWxscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB0b29sQ2FsbCBvZiB0b29sQ2FsbHMpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vblRvb2xDYWxsPy4odG9vbENhbGwpO1xuXG4gICAgICAgICAgICBjb25zdCB0b29sT3B0aW9uczogVG9vbEV4ZWN1dGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB0aGlzLm9wdGlvbnMud29ya2luZ0RpcmVjdG9yeVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy50b29sUmVnaXN0cnkuZXhlY3V0ZSh0b29sQ2FsbCwgdG9vbE9wdGlvbnMpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMub25Ub29sUmVzdWx0Py4ocmVzdWx0LmNvbnRlbnQpO1xuXG4gICAgICAgICAgICAvLyBBZGQgdG9vbCByZXN1bHQgbWVzc2FnZVxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgcm9sZTogJ3Rvb2wnLFxuICAgICAgICAgICAgICB0b29sQ2FsbElkOiB0b29sQ2FsbC5pZCxcbiAgICAgICAgICAgICAgY29udGVudDogcmVzdWx0LmNvbnRlbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbnRpbnVlIGNvbnZlcnNhdGlvbiB0byBnZXQgZmluYWwgcmVzcG9uc2VcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vIHRvb2wgY2FsbHMsIHdlIGhhdmUgdGhlIGZpbmFsIHJlc3BvbnNlXG4gICAgICAgIGZpbmFsUmVzcG9uc2UgPSBjdXJyZW50Q29udGVudDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIOaPkOS+m+abtOivpue7hueahOmUmeivr+S/oeaBr1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIFxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKbmmK/luLjop4HplJnor69cbiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5pbmNsdWRlcygnNDAwJykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFQSeivt+axguWksei0pSAoNDAwIEJhZCBSZXF1ZXN0KTog5Y+v6IO95Y6f5ZugOlxcbmAgK1xuICAgICAgICAgICAgYDEuIOaooeWei+S4jeaUr+aMgeW3peWFt+iwg+eUqO+8jOivt+WwneivleS9v+eUqOaUr+aMgeW3peWFt+iwg+eUqOeahOaooeWei1xcbmAgK1xuICAgICAgICAgICAgYDIuIOa2iOaBr+agvOW8j+S4jeato+ehrlxcbmAgK1xuICAgICAgICAgICAgYDMuIEFQSeWvhumSpeaXoOaViOaIluW3sui/h+acn1xcbmAgK1xuICAgICAgICAgICAgYOWOn+Wni+mUmeivrzogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCc0MDEnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVBJ6K6k6K+B5aSx6LSlICg0MDEgVW5hdXRob3JpemVkKTog6K+35qOA5p+lQVBJ5a+G6ZKl5piv5ZCm5q2j56GuYCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCc0MjknKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVBJ6K+35rGC6aKR546H6LaF6ZmQICg0MjkgUmF0ZSBMaW1pdCk6IOivt+eojeWQjumHjeivlWApO1xuICAgICAgICB9IGVsc2UgaWYgKGVycm9yTWVzc2FnZS5pbmNsdWRlcygnNTAwJykgfHwgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCc1MDInKSB8fCBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJzUwMycpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUEnmnI3liqHmmoLml7bkuI3lj6/nlKg6IOivt+eojeWQjumHjeivlWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYOWvueivnemUmeivrzogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsUmVzcG9uc2U7XG4gIH1cbn0iXX0=
@@ -14,3 +14,10 @@ export declare abstract class BaseTool<TParams = Record<string, unknown>> {
14
14
  }
15
15
  export declare function createToolResult(toolCallId: string, content: string, isError?: boolean): ToolResult;
16
16
  export declare function formatToolError(error: unknown): string;
17
+ export declare const BASE_SCHEMAS: {
18
+ stringProperty: (description: string) => Record<string, unknown>;
19
+ numberProperty: (description: string) => Record<string, unknown>;
20
+ booleanProperty: (description: string) => Record<string, unknown>;
21
+ arrayProperty: (description: string, items: Record<string, unknown>) => Record<string, unknown>;
22
+ objectProperty: (description: string, properties: Record<string, unknown>, required?: string[]) => Record<string, unknown>;
23
+ };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseTool = void 0;
3
+ exports.BASE_SCHEMAS = exports.BaseTool = void 0;
4
4
  exports.createToolResult = createToolResult;
5
5
  exports.formatToolError = formatToolError;
6
6
  class BaseTool {
@@ -36,4 +36,30 @@ function formatToolError(error) {
36
36
  }
37
37
  return `Error: ${String(error)}`;
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNDQSw0Q0FVQztBQUVELDBDQUtDO0FBL0NELE1BQXNCLFFBQVE7SUFLNUIsYUFBYTtRQUNYLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzVCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFPUyxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsUUFBa0I7UUFDNUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLE1BQU0sQ0FBQyxHQUFvQixDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE1QkQsNEJBNEJDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixPQUFPLEdBQUcsS0FBSztJQUVmLE9BQU87UUFDTCxVQUFVO1FBQ1YsT0FBTztRQUNQLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sVUFBVSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sVUFBVSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9vbERlZmluaXRpb24sIFRvb2xSZXN1bHQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbEV4ZWN1dGVPcHRpb25zIHtcbiAgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbiAgc2FuZGJveD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVG9vbDxUUGFyYW1zID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBhYnN0cmFjdCByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhYnN0cmFjdCByZWFkb25seSBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBnZXREZWZpbml0aW9uKCk6IFRvb2xEZWZpbml0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICAgIGZ1bmN0aW9uOiB7XG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVyc1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBhYnN0cmFjdCBleGVjdXRlKFxuICAgIHBhcmFtczogVFBhcmFtcyxcbiAgICBvcHRpb25zPzogVG9vbEV4ZWN1dGVPcHRpb25zXG4gICk6IFByb21pc2U8c3RyaW5nPjtcblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVSZXF1aXJlZChwYXJhbXM6IFRQYXJhbXMsIHJlcXVpcmVkOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHJlcXVpcmVkKSB7XG4gICAgICBpZiAocGFyYW1zW2tleSBhcyBrZXlvZiBUUGFyYW1zXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXI6ICR7a2V5fWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9vbFJlc3VsdChcbiAgdG9vbENhbGxJZDogc3RyaW5nLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIGlzRXJyb3IgPSBmYWxzZVxuKTogVG9vbFJlc3VsdCB7XG4gIHJldHVybiB7XG4gICAgdG9vbENhbGxJZCxcbiAgICBjb250ZW50LFxuICAgIGlzRXJyb3JcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRvb2xFcnJvcihlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmV0dXJuIGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWA7XG4gIH1cbiAgcmV0dXJuIGBFcnJvcjogJHtTdHJpbmcoZXJyb3IpfWA7XG59XG4iXX0=
39
+ // 基础工具参数Schema - 符合OpenAI JSON Schema规范
40
+ exports.BASE_SCHEMAS = {
41
+ stringProperty: (description) => ({
42
+ type: 'string',
43
+ description
44
+ }),
45
+ numberProperty: (description) => ({
46
+ type: 'number',
47
+ description
48
+ }),
49
+ booleanProperty: (description) => ({
50
+ type: 'boolean',
51
+ description
52
+ }),
53
+ arrayProperty: (description, items) => ({
54
+ type: 'array',
55
+ description,
56
+ items
57
+ }),
58
+ objectProperty: (description, properties, required) => ({
59
+ type: 'object',
60
+ description,
61
+ properties,
62
+ required: required || Object.keys(properties)
63
+ })
64
+ };
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNDQSw0Q0FVQztBQUVELDBDQUtDO0FBL0NELE1BQXNCLFFBQVE7SUFLNUIsYUFBYTtRQUNYLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzVCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFPUyxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsUUFBa0I7UUFDNUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLE1BQU0sQ0FBQyxHQUFvQixDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE1QkQsNEJBNEJDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLFVBQWtCLEVBQ2xCLE9BQWUsRUFDZixPQUFPLEdBQUcsS0FBSztJQUVmLE9BQU87UUFDTCxVQUFVO1FBQ1YsT0FBTztRQUNQLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sVUFBVSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sVUFBVSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsd0NBQXdDO0FBQzNCLFFBQUEsWUFBWSxHQUFHO0lBQzFCLGNBQWMsRUFBRSxDQUFDLFdBQW1CLEVBQTJCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVztLQUNaLENBQUM7SUFDRixjQUFjLEVBQUUsQ0FBQyxXQUFtQixFQUEyQixFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVc7S0FDWixDQUFDO0lBQ0YsZUFBZSxFQUFFLENBQUMsV0FBbUIsRUFBMkIsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXO0tBQ1osQ0FBQztJQUNGLGFBQWEsRUFBRSxDQUFDLFdBQW1CLEVBQUUsS0FBOEIsRUFBMkIsRUFBRSxDQUFDLENBQUM7UUFDaEcsSUFBSSxFQUFFLE9BQU87UUFDYixXQUFXO1FBQ1gsS0FBSztLQUNOLENBQUM7SUFDRixjQUFjLEVBQUUsQ0FBQyxXQUFtQixFQUFFLFVBQW1DLEVBQUUsUUFBbUIsRUFBMkIsRUFBRSxDQUFDLENBQUM7UUFDM0gsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXO1FBQ1gsVUFBVTtRQUNWLFFBQVEsRUFBRSxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7S0FDOUMsQ0FBQztDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sRGVmaW5pdGlvbiwgVG9vbFJlc3VsdCB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUb29sRXhlY3V0ZU9wdGlvbnMge1xuICB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICBzYW5kYm94PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUb29sPFRQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBhYnN0cmFjdCByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFic3RyYWN0IHJlYWRvbmx5IHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIGdldERlZmluaXRpb24oKTogVG9vbERlZmluaXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICAgICAgZnVuY3Rpb246IHtcbiAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFic3RyYWN0IGV4ZWN1dGUoXG4gICAgcGFyYW1zOiBUUGFyYW1zLFxuICAgIG9wdGlvbnM/OiBUb29sRXhlY3V0ZU9wdGlvbnNcbiAgKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVJlcXVpcmVkKHBhcmFtczogVFBhcmFtcywgcmVxdWlyZWQ6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgcmVxdWlyZWQpIHtcbiAgICAgIGlmIChwYXJhbXNba2V5IGFzIGtleW9mIFRQYXJhbXNdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcjogJHtrZXl9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb29sUmVzdWx0KFxuICB0b29sQ2FsbElkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgaXNFcnJvciA9IGZhbHNlXG4pOiBUb29sUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICB0b29sQ2FsbElkLFxuICAgIGNvbnRlbnQsXG4gICAgaXNFcnJvclxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VG9vbEVycm9yKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gYEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgfVxuICByZXR1cm4gYEVycm9yOiAke1N0cmluZyhlcnJvcil9YDtcbn1cblxuLy8g5Z+656GA5bel5YW35Y+C5pWwU2NoZW1hIC0g56ym5ZCIT3BlbkFJIEpTT04gU2NoZW1h6KeE6IyDXG5leHBvcnQgY29uc3QgQkFTRV9TQ0hFTUFTID0ge1xuICBzdHJpbmdQcm9wZXJ0eTogKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAoe1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIGRlc2NyaXB0aW9uXG4gIH0pLFxuICBudW1iZXJQcm9wZXJ0eTogKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAoe1xuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlc2NyaXB0aW9uXG4gIH0pLFxuICBib29sZWFuUHJvcGVydHk6IChkZXNjcmlwdGlvbjogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4gKHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVzY3JpcHRpb25cbiAgfSksXG4gIGFycmF5UHJvcGVydHk6IChkZXNjcmlwdGlvbjogc3RyaW5nLCBpdGVtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAoe1xuICAgIHR5cGU6ICdhcnJheScsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgaXRlbXNcbiAgfSksXG4gIG9iamVjdFByb3BlcnR5OiAoZGVzY3JpcHRpb246IHN0cmluZywgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJlcXVpcmVkPzogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAoe1xuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcmVxdWlyZWQ6IHJlcXVpcmVkIHx8IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpXG4gIH0pXG59OyJdfQ==
@@ -2,6 +2,7 @@ import { BaseTool, ToolExecuteOptions } from './base';
2
2
  interface GlobParams {
3
3
  pattern: string;
4
4
  path?: string;
5
+ case_sensitive?: boolean;
5
6
  }
6
7
  export declare class GlobTool extends BaseTool<GlobParams> {
7
8
  name: string;
@@ -17,11 +18,14 @@ export declare class GlobTool extends BaseTool<GlobParams> {
17
18
  type: string;
18
19
  description: string;
19
20
  };
21
+ case_sensitive: {
22
+ type: string;
23
+ description: string;
24
+ };
20
25
  };
21
26
  required: string[];
27
+ additionalProperties: boolean;
22
28
  };
23
29
  execute(params: GlobParams, options?: ToolExecuteOptions): Promise<string>;
24
- private walkDir;
25
- private matchPattern;
26
30
  }
27
31
  export {};
@@ -1,125 +1,66 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.GlobTool = void 0;
37
4
  const base_1 = require("./base");
38
- const fs = __importStar(require("fs/promises"));
39
- const path = __importStar(require("path"));
5
+ const glob_1 = require("glob");
40
6
  class GlobTool extends base_1.BaseTool {
41
7
  name = 'glob';
42
- description = 'Finds files matching specific glob patterns, returning absolute paths sorted by modification time.';
8
+ description = 'Efficiently finds files matching specific glob patterns (e.g., `src/**/*.ts`, `**/*.md`), returning absolute paths sorted by modification time (newest first). Ideal for quickly locating files based on their name or path structure, especially in large codebases.';
43
9
  parameters = {
44
10
  type: 'object',
45
11
  properties: {
46
12
  pattern: {
47
13
  type: 'string',
48
- description: 'The glob pattern to match (e.g., **/*.ts, src/**/*.js)'
14
+ description: 'The glob pattern to match against (e.g., \'**/*.py\', \'docs/*.md\').'
49
15
  },
50
16
  path: {
51
17
  type: 'string',
52
- description: 'Optional: The absolute path to search within'
18
+ description: 'Optional: The absolute path to the directory to search within. If omitted, searches the root directory.'
19
+ },
20
+ case_sensitive: {
21
+ type: 'boolean',
22
+ description: 'Optional: Whether the search should be case-sensitive. Defaults to false.'
53
23
  }
54
24
  },
55
- required: ['pattern']
25
+ required: ['pattern'],
26
+ additionalProperties: false
56
27
  };
57
28
  async execute(params, options) {
58
29
  this.validateRequired(params, ['pattern']);
59
30
  const workingDir = options?.workingDirectory || process.cwd();
60
31
  const searchPath = params.path || workingDir;
61
32
  try {
62
- const results = [];
63
- await this.walkDir(searchPath, params.pattern, results);
64
- if (results.length === 0) {
65
- return `No files found matching pattern: ${params.pattern}`;
33
+ const files = await (0, glob_1.glob)(params.pattern, {
34
+ cwd: searchPath,
35
+ absolute: true,
36
+ nocase: !params.case_sensitive,
37
+ nodir: false
38
+ });
39
+ if (files.length === 0) {
40
+ return `No files found matching pattern "${params.pattern}" in ${searchPath}`;
66
41
  }
67
42
  // Sort by modification time (newest first)
68
- const withStats = await Promise.all(results.map(async (file) => {
43
+ const fs = require('fs');
44
+ const filesWithStats = await Promise.all(files.map(async (file) => {
69
45
  try {
70
- const stat = await fs.stat(file);
46
+ const stat = fs.statSync(file);
71
47
  return { file, mtime: stat.mtime.getTime() };
72
48
  }
73
49
  catch {
74
50
  return { file, mtime: 0 };
75
51
  }
76
52
  }));
77
- withStats.sort((a, b) => b.mtime - a.mtime);
78
- return `Found ${withStats.length} files:\n\n${withStats.map(r => r.file).join('\n')}`;
53
+ filesWithStats.sort((a, b) => b.mtime - a.mtime);
54
+ let result = `Found ${files.length} files matching "${params.pattern}":\n\n`;
55
+ filesWithStats.forEach((f) => {
56
+ result += `${f.file}\n`;
57
+ });
58
+ return result;
79
59
  }
80
60
  catch (error) {
81
61
  return (0, base_1.formatToolError)(error);
82
62
  }
83
63
  }
84
- async walkDir(dir, pattern, results) {
85
- const entries = await fs.readdir(dir, { withFileTypes: true });
86
- for (const entry of entries) {
87
- const fullPath = path.join(dir, entry.name);
88
- if (entry.isDirectory()) {
89
- // Skip common ignored directories
90
- if (['node_modules', '.git', 'dist', 'build', '.next'].includes(entry.name)) {
91
- continue;
92
- }
93
- await this.walkDir(fullPath, pattern, results);
94
- }
95
- else if (entry.isFile()) {
96
- if (this.matchPattern(fullPath, pattern)) {
97
- results.push(fullPath);
98
- }
99
- }
100
- }
101
- }
102
- matchPattern(filePath, pattern) {
103
- // Simple glob matching
104
- const fileName = path.basename(filePath);
105
- // Handle **/*.ext pattern
106
- if (pattern.startsWith('**/*.')) {
107
- const ext = pattern.slice(4);
108
- return fileName.endsWith(ext);
109
- }
110
- // Handle *.ext pattern
111
- if (pattern.startsWith('*.')) {
112
- const ext = pattern.slice(1);
113
- return fileName.endsWith(ext);
114
- }
115
- // Handle **/name pattern
116
- if (pattern.startsWith('**/')) {
117
- const name = pattern.slice(3);
118
- return fileName.includes(name);
119
- }
120
- // Direct match
121
- return fileName.includes(pattern);
122
- }
123
64
  }
124
65
  exports.GlobTool = GlobTool;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9nbG9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUF1RTtBQUN2RSxnREFBa0M7QUFDbEMsMkNBQTZCO0FBTzdCLE1BQWEsUUFBUyxTQUFRLGVBQW9CO0lBQ2hELElBQUksR0FBRyxNQUFNLENBQUM7SUFDZCxXQUFXLEdBQUcsb0dBQW9HLENBQUM7SUFDbkgsVUFBVSxHQUFHO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHdEQUF3RDthQUN0RTtZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsOENBQThDO2FBQzVEO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7S0FDdEIsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBa0IsRUFBRSxPQUE0QjtRQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUUzQyxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBRTdDLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFeEQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLG9DQUFvQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUQsQ0FBQztZQUVELDJDQUEyQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQy9DLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUM1QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUVGLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxPQUFPLFNBQVMsU0FBUyxDQUFDLE1BQU0sY0FBYyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hGLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFBLHNCQUFlLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsT0FBaUI7UUFDbkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRS9ELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7WUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTVDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLGtDQUFrQztnQkFDbEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzVFLFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRCxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7Z0JBQzFCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFnQixFQUFFLE9BQWU7UUFDcEQsdUJBQXVCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELHlCQUF5QjtRQUN6QixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsZUFBZTtRQUNmLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFqR0QsNEJBaUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRvb2wsIFRvb2xFeGVjdXRlT3B0aW9ucywgZm9ybWF0VG9vbEVycm9yIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmludGVyZmFjZSBHbG9iUGFyYW1zIHtcbiAgcGF0dGVybjogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgR2xvYlRvb2wgZXh0ZW5kcyBCYXNlVG9vbDxHbG9iUGFyYW1zPiB7XG4gIG5hbWUgPSAnZ2xvYic7XG4gIGRlc2NyaXB0aW9uID0gJ0ZpbmRzIGZpbGVzIG1hdGNoaW5nIHNwZWNpZmljIGdsb2IgcGF0dGVybnMsIHJldHVybmluZyBhYnNvbHV0ZSBwYXRocyBzb3J0ZWQgYnkgbW9kaWZpY2F0aW9uIHRpbWUuJztcbiAgcGFyYW1ldGVycyA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBwYXR0ZXJuOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBnbG9iIHBhdHRlcm4gdG8gbWF0Y2ggKGUuZy4sICoqLyoudHMsIHNyYy8qKi8qLmpzKSdcbiAgICAgIH0sXG4gICAgICBwYXRoOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGlvbmFsOiBUaGUgYWJzb2x1dGUgcGF0aCB0byBzZWFyY2ggd2l0aGluJ1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsncGF0dGVybiddXG4gIH07XG5cbiAgYXN5bmMgZXhlY3V0ZShwYXJhbXM6IEdsb2JQYXJhbXMsIG9wdGlvbnM/OiBUb29sRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMudmFsaWRhdGVSZXF1aXJlZChwYXJhbXMsIFsncGF0dGVybiddKTtcblxuICAgIGNvbnN0IHdvcmtpbmdEaXIgPSBvcHRpb25zPy53b3JraW5nRGlyZWN0b3J5IHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3Qgc2VhcmNoUGF0aCA9IHBhcmFtcy5wYXRoIHx8IHdvcmtpbmdEaXI7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGF3YWl0IHRoaXMud2Fsa0RpcihzZWFyY2hQYXRoLCBwYXJhbXMucGF0dGVybiwgcmVzdWx0cyk7XG5cbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYE5vIGZpbGVzIGZvdW5kIG1hdGNoaW5nIHBhdHRlcm46ICR7cGFyYW1zLnBhdHRlcm59YDtcbiAgICAgIH1cblxuICAgICAgLy8gU29ydCBieSBtb2RpZmljYXRpb24gdGltZSAobmV3ZXN0IGZpcnN0KVxuICAgICAgY29uc3Qgd2l0aFN0YXRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHJlc3VsdHMubWFwKGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXQgPSBhd2FpdCBmcy5zdGF0KGZpbGUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgZmlsZSwgbXRpbWU6IHN0YXQubXRpbWUuZ2V0VGltZSgpIH07XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4geyBmaWxlLCBtdGltZTogMCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHdpdGhTdGF0cy5zb3J0KChhLCBiKSA9PiBiLm10aW1lIC0gYS5tdGltZSk7XG5cbiAgICAgIHJldHVybiBgRm91bmQgJHt3aXRoU3RhdHMubGVuZ3RofSBmaWxlczpcXG5cXG4ke3dpdGhTdGF0cy5tYXAociA9PiByLmZpbGUpLmpvaW4oJ1xcbicpfWA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmb3JtYXRUb29sRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2Fsa0RpcihkaXI6IHN0cmluZywgcGF0dGVybjogc3RyaW5nLCByZXN1bHRzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihkaXIsIGVudHJ5Lm5hbWUpO1xuXG4gICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAvLyBTa2lwIGNvbW1vbiBpZ25vcmVkIGRpcmVjdG9yaWVzXG4gICAgICAgIGlmIChbJ25vZGVfbW9kdWxlcycsICcuZ2l0JywgJ2Rpc3QnLCAnYnVpbGQnLCAnLm5leHQnXS5pbmNsdWRlcyhlbnRyeS5uYW1lKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMud2Fsa0RpcihmdWxsUGF0aCwgcGF0dGVybiwgcmVzdWx0cyk7XG4gICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpKSB7XG4gICAgICAgIGlmICh0aGlzLm1hdGNoUGF0dGVybihmdWxsUGF0aCwgcGF0dGVybikpIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2goZnVsbFBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaFBhdHRlcm4oZmlsZVBhdGg6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gU2ltcGxlIGdsb2IgbWF0Y2hpbmdcbiAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZVBhdGgpO1xuICAgIFxuICAgIC8vIEhhbmRsZSAqKi8qLmV4dCBwYXR0ZXJuXG4gICAgaWYgKHBhdHRlcm4uc3RhcnRzV2l0aCgnKiovKi4nKSkge1xuICAgICAgY29uc3QgZXh0ID0gcGF0dGVybi5zbGljZSg0KTtcbiAgICAgIHJldHVybiBmaWxlTmFtZS5lbmRzV2l0aChleHQpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSAqLmV4dCBwYXR0ZXJuXG4gICAgaWYgKHBhdHRlcm4uc3RhcnRzV2l0aCgnKi4nKSkge1xuICAgICAgY29uc3QgZXh0ID0gcGF0dGVybi5zbGljZSgxKTtcbiAgICAgIHJldHVybiBmaWxlTmFtZS5lbmRzV2l0aChleHQpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSAqKi9uYW1lIHBhdHRlcm5cbiAgICBpZiAocGF0dGVybi5zdGFydHNXaXRoKCcqKi8nKSkge1xuICAgICAgY29uc3QgbmFtZSA9IHBhdHRlcm4uc2xpY2UoMyk7XG4gICAgICByZXR1cm4gZmlsZU5hbWUuaW5jbHVkZXMobmFtZSk7XG4gICAgfVxuXG4gICAgLy8gRGlyZWN0IG1hdGNoXG4gICAgcmV0dXJuIGZpbGVOYW1lLmluY2x1ZGVzKHBhdHRlcm4pO1xuICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9nbG9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUF1RTtBQUN2RSwrQkFBc0M7QUFRdEMsTUFBYSxRQUFTLFNBQVEsZUFBb0I7SUFDaEQsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNkLFdBQVcsR0FBRyx1UUFBdVEsQ0FBQztJQUN0UixVQUFVLEdBQUc7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsdUVBQXVFO2FBQ3JGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSx5R0FBeUc7YUFDdkg7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsV0FBVyxFQUFFLDJFQUEyRTthQUN6RjtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3JCLG9CQUFvQixFQUFFLEtBQUs7S0FDNUIsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBa0IsRUFBRSxPQUE0QjtRQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUUzQyxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO1FBRTdDLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBQSxXQUFNLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDekMsR0FBRyxFQUFFLFVBQVU7Z0JBQ2YsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWM7Z0JBQzlCLEtBQUssRUFBRSxLQUFLO2FBQ2IsQ0FBQyxDQUFDO1lBRUgsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLG9DQUFvQyxNQUFNLENBQUMsT0FBTyxRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2hGLENBQUM7WUFFRCwyQ0FBMkM7WUFDM0MsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sY0FBYyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBWSxFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQztvQkFDSCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQy9DLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUM1QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUVGLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUzRCxJQUFJLE1BQU0sR0FBRyxTQUFTLEtBQUssQ0FBQyxNQUFNLG9CQUFvQixNQUFNLENBQUMsT0FBTyxRQUFRLENBQUM7WUFDN0UsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUNoQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBQSxzQkFBZSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFsRUQsNEJBa0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRvb2wsIFRvb2xFeGVjdXRlT3B0aW9ucywgZm9ybWF0VG9vbEVycm9yIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IGdsb2IgYXMgZ2xvYkZuIH0gZnJvbSAnZ2xvYic7XG5cbmludGVyZmFjZSBHbG9iUGFyYW1zIHtcbiAgcGF0dGVybjogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBjYXNlX3NlbnNpdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBHbG9iVG9vbCBleHRlbmRzIEJhc2VUb29sPEdsb2JQYXJhbXM+IHtcbiAgbmFtZSA9ICdnbG9iJztcbiAgZGVzY3JpcHRpb24gPSAnRWZmaWNpZW50bHkgZmluZHMgZmlsZXMgbWF0Y2hpbmcgc3BlY2lmaWMgZ2xvYiBwYXR0ZXJucyAoZS5nLiwgYHNyYy8qKi8qLnRzYCwgYCoqLyoubWRgKSwgcmV0dXJuaW5nIGFic29sdXRlIHBhdGhzIHNvcnRlZCBieSBtb2RpZmljYXRpb24gdGltZSAobmV3ZXN0IGZpcnN0KS4gSWRlYWwgZm9yIHF1aWNrbHkgbG9jYXRpbmcgZmlsZXMgYmFzZWQgb24gdGhlaXIgbmFtZSBvciBwYXRoIHN0cnVjdHVyZSwgZXNwZWNpYWxseSBpbiBsYXJnZSBjb2RlYmFzZXMuJztcbiAgcGFyYW1ldGVycyA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBwYXR0ZXJuOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBnbG9iIHBhdHRlcm4gdG8gbWF0Y2ggYWdhaW5zdCAoZS5nLiwgXFwnKiovKi5weVxcJywgXFwnZG9jcy8qLm1kXFwnKS4nIFxuICAgICAgfSxcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWw6IFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgdG8gc2VhcmNoIHdpdGhpbi4gSWYgb21pdHRlZCwgc2VhcmNoZXMgdGhlIHJvb3QgZGlyZWN0b3J5LidcbiAgICAgIH0sXG4gICAgICBjYXNlX3NlbnNpdGl2ZToge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWw6IFdoZXRoZXIgdGhlIHNlYXJjaCBzaG91bGQgYmUgY2FzZS1zZW5zaXRpdmUuIERlZmF1bHRzIHRvIGZhbHNlLidcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ3BhdHRlcm4nXSxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VcbiAgfTtcblxuICBhc3luYyBleGVjdXRlKHBhcmFtczogR2xvYlBhcmFtcywgb3B0aW9ucz86IFRvb2xFeGVjdXRlT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdGhpcy52YWxpZGF0ZVJlcXVpcmVkKHBhcmFtcywgWydwYXR0ZXJuJ10pO1xuXG4gICAgY29uc3Qgd29ya2luZ0RpciA9IG9wdGlvbnM/LndvcmtpbmdEaXJlY3RvcnkgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBzZWFyY2hQYXRoID0gcGFyYW1zLnBhdGggfHwgd29ya2luZ0RpcjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JGbihwYXJhbXMucGF0dGVybiwge1xuICAgICAgICBjd2Q6IHNlYXJjaFBhdGgsXG4gICAgICAgIGFic29sdXRlOiB0cnVlLFxuICAgICAgICBub2Nhc2U6ICFwYXJhbXMuY2FzZV9zZW5zaXRpdmUsXG4gICAgICAgIG5vZGlyOiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGBObyBmaWxlcyBmb3VuZCBtYXRjaGluZyBwYXR0ZXJuIFwiJHtwYXJhbXMucGF0dGVybn1cIiBpbiAke3NlYXJjaFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgLy8gU29ydCBieSBtb2RpZmljYXRpb24gdGltZSAobmV3ZXN0IGZpcnN0KVxuICAgICAgY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xuICAgICAgY29uc3QgZmlsZXNXaXRoU3RhdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGZpbGUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgZmlsZSwgbXRpbWU6IHN0YXQubXRpbWUuZ2V0VGltZSgpIH07XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4geyBmaWxlLCBtdGltZTogMCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGZpbGVzV2l0aFN0YXRzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBiLm10aW1lIC0gYS5tdGltZSk7XG5cbiAgICAgIGxldCByZXN1bHQgPSBgRm91bmQgJHtmaWxlcy5sZW5ndGh9IGZpbGVzIG1hdGNoaW5nIFwiJHtwYXJhbXMucGF0dGVybn1cIjpcXG5cXG5gO1xuICAgICAgZmlsZXNXaXRoU3RhdHMuZm9yRWFjaCgoZjogYW55KSA9PiB7XG4gICAgICAgIHJlc3VsdCArPSBgJHtmLmZpbGV9XFxuYDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZm9ybWF0VG9vbEVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cbn0iXX0=
@@ -22,6 +22,7 @@ export declare class ListDirectoryTool extends BaseTool<ListDirectoryParams> {
22
22
  };
23
23
  };
24
24
  required: string[];
25
+ additionalProperties: boolean;
25
26
  };
26
27
  execute(params: ListDirectoryParams, options?: ToolExecuteOptions): Promise<string>;
27
28
  }
@@ -39,13 +39,13 @@ const fs = __importStar(require("fs/promises"));
39
39
  const path = __importStar(require("path"));
40
40
  class ListDirectoryTool extends base_1.BaseTool {
41
41
  name = 'list_directory';
42
- description = 'Lists the names of files and subdirectories directly within a specified directory path.';
42
+ description = 'Lists the names of files and subdirectories directly within a specified directory path. Can optionally ignore entries matching provided glob patterns.';
43
43
  parameters = {
44
44
  type: 'object',
45
45
  properties: {
46
46
  path: {
47
47
  type: 'string',
48
- description: 'The absolute path to the directory to list'
48
+ description: 'The absolute path to the directory to list (must be absolute, not relative)'
49
49
  },
50
50
  ignore: {
51
51
  type: 'array',
@@ -53,7 +53,8 @@ class ListDirectoryTool extends base_1.BaseTool {
53
53
  description: 'List of glob patterns to ignore'
54
54
  }
55
55
  },
56
- required: ['path']
56
+ required: ['path'],
57
+ additionalProperties: false
57
58
  };
58
59
  async execute(params, options) {
59
60
  this.validateRequired(params, ['path']);
@@ -62,28 +63,32 @@ class ListDirectoryTool extends base_1.BaseTool {
62
63
  const resolvedPath = path.isAbsolute(dirPath) ? dirPath : path.join(workingDir, dirPath);
63
64
  try {
64
65
  const entries = await fs.readdir(resolvedPath, { withFileTypes: true });
65
- let items = entries.map(entry => {
66
- const prefix = entry.isDirectory() ? '📁 ' : '📄 ';
67
- return prefix + entry.name;
68
- });
69
- // Apply ignore patterns if provided
70
- if (params.ignore && params.ignore.length > 0) {
71
- const ignorePatterns = params.ignore;
72
- items = items.filter(item => {
73
- const name = item.substring(2); // Remove prefix
74
- return !ignorePatterns.some(pattern => {
75
- if (pattern.includes('*')) {
76
- const regex = new RegExp(pattern.replace(/\*/g, '.*'));
77
- return regex.test(name);
78
- }
79
- return name === pattern;
66
+ let result = `Directory: ${resolvedPath}\n\n`;
67
+ const directories = [];
68
+ const files = [];
69
+ for (const entry of entries) {
70
+ // Apply ignore patterns if provided
71
+ if (params.ignore && params.ignore.length > 0) {
72
+ const shouldIgnore = params.ignore.some(pattern => {
73
+ // Simple glob matching
74
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
75
+ return regex.test(entry.name);
80
76
  });
81
- });
77
+ if (shouldIgnore)
78
+ continue;
79
+ }
80
+ if (entry.isDirectory()) {
81
+ directories.push(entry.name + '/');
82
+ }
83
+ else {
84
+ files.push(entry.name);
85
+ }
82
86
  }
83
- if (items.length === 0) {
84
- return `Directory ${resolvedPath} is empty.`;
85
- }
86
- return `Contents of ${resolvedPath}:\n\n${items.join('\n')}`;
87
+ // Sort and format
88
+ directories.sort().forEach(d => result += `[DIR] ${d}\n`);
89
+ files.sort().forEach(f => result += `[FILE] ${f}\n`);
90
+ result += `\nTotal: ${directories.length} directories, ${files.length} files`;
91
+ return result;
87
92
  }
88
93
  catch (error) {
89
94
  return (0, base_1.formatToolError)(error);
@@ -91,4 +96,4 @@ class ListDirectoryTool extends base_1.BaseTool {
91
96
  }
92
97
  }
93
98
  exports.ListDirectoryTool = ListDirectoryTool;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1kaXJlY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvbGlzdC1kaXJlY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQXVFO0FBQ3ZFLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFPN0IsTUFBYSxpQkFBa0IsU0FBUSxlQUE2QjtJQUNsRSxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFDeEIsV0FBVyxHQUFHLHlGQUF5RixDQUFDO0lBQ3hHLFVBQVUsR0FBRztRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSw0Q0FBNEM7YUFDMUQ7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQkFDekIsV0FBVyxFQUFFLGlDQUFpQzthQUMvQztTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO0tBQ25CLENBQUM7SUFFRixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQTJCLEVBQUUsT0FBNEI7UUFDckUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM1QixNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXhFLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ25ELE9BQU8sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7WUFFSCxvQ0FBb0M7WUFDcEMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUNyQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtvQkFDaEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3BDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUN2RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzFCLENBQUM7d0JBQ0QsT0FBTyxJQUFJLEtBQUssT0FBTyxDQUFDO29CQUMxQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sYUFBYSxZQUFZLFlBQVksQ0FBQztZQUMvQyxDQUFDO1lBRUQsT0FBTyxlQUFlLFlBQVksUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDL0QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUEsc0JBQWUsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBMURELDhDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUb29sLCBUb29sRXhlY3V0ZU9wdGlvbnMsIGZvcm1hdFRvb2xFcnJvciB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbnRlcmZhY2UgTGlzdERpcmVjdG9yeVBhcmFtcyB7XG4gIHBhdGg6IHN0cmluZztcbiAgaWdub3JlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0RGlyZWN0b3J5VG9vbCBleHRlbmRzIEJhc2VUb29sPExpc3REaXJlY3RvcnlQYXJhbXM+IHtcbiAgbmFtZSA9ICdsaXN0X2RpcmVjdG9yeSc7XG4gIGRlc2NyaXB0aW9uID0gJ0xpc3RzIHRoZSBuYW1lcyBvZiBmaWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMgZGlyZWN0bHkgd2l0aGluIGEgc3BlY2lmaWVkIGRpcmVjdG9yeSBwYXRoLic7XG4gIHBhcmFtZXRlcnMgPSB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRvIGxpc3QnXG4gICAgICB9LFxuICAgICAgaWdub3JlOiB7XG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBvZiBnbG9iIHBhdHRlcm5zIHRvIGlnbm9yZSdcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ3BhdGgnXVxuICB9O1xuXG4gIGFzeW5jIGV4ZWN1dGUocGFyYW1zOiBMaXN0RGlyZWN0b3J5UGFyYW1zLCBvcHRpb25zPzogVG9vbEV4ZWN1dGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWQocGFyYW1zLCBbJ3BhdGgnXSk7XG5cbiAgICBjb25zdCBkaXJQYXRoID0gcGFyYW1zLnBhdGg7XG4gICAgY29uc3Qgd29ya2luZ0RpciA9IG9wdGlvbnM/LndvcmtpbmdEaXJlY3RvcnkgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCByZXNvbHZlZFBhdGggPSBwYXRoLmlzQWJzb2x1dGUoZGlyUGF0aCkgPyBkaXJQYXRoIDogcGF0aC5qb2luKHdvcmtpbmdEaXIsIGRpclBhdGgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBmcy5yZWFkZGlyKHJlc29sdmVkUGF0aCwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgICAgXG4gICAgICBsZXQgaXRlbXMgPSBlbnRyaWVzLm1hcChlbnRyeSA9PiB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IGVudHJ5LmlzRGlyZWN0b3J5KCkgPyAn8J+TgSAnIDogJ/Cfk4QgJztcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIGVudHJ5Lm5hbWU7XG4gICAgICB9KTtcblxuICAgICAgLy8gQXBwbHkgaWdub3JlIHBhdHRlcm5zIGlmIHByb3ZpZGVkXG4gICAgICBpZiAocGFyYW1zLmlnbm9yZSAmJiBwYXJhbXMuaWdub3JlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgaWdub3JlUGF0dGVybnMgPSBwYXJhbXMuaWdub3JlO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICBjb25zdCBuYW1lID0gaXRlbS5zdWJzdHJpbmcoMik7IC8vIFJlbW92ZSBwcmVmaXhcbiAgICAgICAgICByZXR1cm4gIWlnbm9yZVBhdHRlcm5zLnNvbWUocGF0dGVybiA9PiB7XG4gICAgICAgICAgICBpZiAocGF0dGVybi5pbmNsdWRlcygnKicpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuLnJlcGxhY2UoL1xcKi9nLCAnLionKSk7XG4gICAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IHBhdHRlcm47XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBgRGlyZWN0b3J5ICR7cmVzb2x2ZWRQYXRofSBpcyBlbXB0eS5gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYENvbnRlbnRzIG9mICR7cmVzb2x2ZWRQYXRofTpcXG5cXG4ke2l0ZW1zLmpvaW4oJ1xcbicpfWA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmb3JtYXRUb29sRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1kaXJlY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvbGlzdC1kaXJlY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQXVFO0FBQ3ZFLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFPN0IsTUFBYSxpQkFBa0IsU0FBUSxlQUE2QjtJQUNsRSxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFDeEIsV0FBVyxHQUFHLHdKQUF3SixDQUFDO0lBQ3ZLLFVBQVUsR0FBRztRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSw2RUFBNkU7YUFDM0Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQkFDekIsV0FBVyxFQUFFLGlDQUFpQzthQUMvQztTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2xCLG9CQUFvQixFQUFFLEtBQUs7S0FDNUIsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBMkIsRUFBRSxPQUE0QjtRQUNyRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUV4QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV6RixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFeEUsSUFBSSxNQUFNLEdBQUcsY0FBYyxZQUFZLE1BQU0sQ0FBQztZQUU5QyxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1lBRTNCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzVCLG9DQUFvQztnQkFDcEMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDaEQsdUJBQXVCO3dCQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7d0JBQ25FLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksWUFBWTt3QkFBRSxTQUFTO2dCQUM3QixDQUFDO2dCQUVELElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7b0JBQ3hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDckMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QixDQUFDO1lBQ0gsQ0FBQztZQUVELGtCQUFrQjtZQUNsQixXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzRCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVyRCxNQUFNLElBQUksWUFBWSxXQUFXLENBQUMsTUFBTSxpQkFBaUIsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO1lBRTlFLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFBLHNCQUFlLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWhFRCw4Q0FnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVG9vbCwgVG9vbEV4ZWN1dGVPcHRpb25zLCBmb3JtYXRUb29sRXJyb3IgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW50ZXJmYWNlIExpc3REaXJlY3RvcnlQYXJhbXMge1xuICBwYXRoOiBzdHJpbmc7XG4gIGlnbm9yZT86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdERpcmVjdG9yeVRvb2wgZXh0ZW5kcyBCYXNlVG9vbDxMaXN0RGlyZWN0b3J5UGFyYW1zPiB7XG4gIG5hbWUgPSAnbGlzdF9kaXJlY3RvcnknO1xuICBkZXNjcmlwdGlvbiA9ICdMaXN0cyB0aGUgbmFtZXMgb2YgZmlsZXMgYW5kIHN1YmRpcmVjdG9yaWVzIGRpcmVjdGx5IHdpdGhpbiBhIHNwZWNpZmllZCBkaXJlY3RvcnkgcGF0aC4gQ2FuIG9wdGlvbmFsbHkgaWdub3JlIGVudHJpZXMgbWF0Y2hpbmcgcHJvdmlkZWQgZ2xvYiBwYXR0ZXJucy4nO1xuICBwYXJhbWV0ZXJzID0ge1xuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSB0byBsaXN0IChtdXN0IGJlIGFic29sdXRlLCBub3QgcmVsYXRpdmUpJ1xuICAgICAgfSxcbiAgICAgIGlnbm9yZToge1xuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0xpc3Qgb2YgZ2xvYiBwYXR0ZXJucyB0byBpZ25vcmUnXG4gICAgICB9XG4gICAgfSxcbiAgICByZXF1aXJlZDogWydwYXRoJ10sXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4gIH07XG5cbiAgYXN5bmMgZXhlY3V0ZShwYXJhbXM6IExpc3REaXJlY3RvcnlQYXJhbXMsIG9wdGlvbnM/OiBUb29sRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMudmFsaWRhdGVSZXF1aXJlZChwYXJhbXMsIFsncGF0aCddKTtcblxuICAgIGNvbnN0IGRpclBhdGggPSBwYXJhbXMucGF0aDtcbiAgICBjb25zdCB3b3JraW5nRGlyID0gb3B0aW9ucz8ud29ya2luZ0RpcmVjdG9yeSB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHBhdGguaXNBYnNvbHV0ZShkaXJQYXRoKSA/IGRpclBhdGggOiBwYXRoLmpvaW4od29ya2luZ0RpciwgZGlyUGF0aCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW50cmllcyA9IGF3YWl0IGZzLnJlYWRkaXIocmVzb2x2ZWRQYXRoLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgICBcbiAgICAgIGxldCByZXN1bHQgPSBgRGlyZWN0b3J5OiAke3Jlc29sdmVkUGF0aH1cXG5cXG5gO1xuICAgICAgXG4gICAgICBjb25zdCBkaXJlY3Rvcmllczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgXG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgLy8gQXBwbHkgaWdub3JlIHBhdHRlcm5zIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmIChwYXJhbXMuaWdub3JlICYmIHBhcmFtcy5pZ25vcmUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHNob3VsZElnbm9yZSA9IHBhcmFtcy5pZ25vcmUuc29tZShwYXR0ZXJuID0+IHtcbiAgICAgICAgICAgIC8vIFNpbXBsZSBnbG9iIG1hdGNoaW5nXG4gICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJ14nICsgcGF0dGVybi5yZXBsYWNlKC9cXCovZywgJy4qJykgKyAnJCcpO1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoZW50cnkubmFtZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHNob3VsZElnbm9yZSkgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgZGlyZWN0b3JpZXMucHVzaChlbnRyeS5uYW1lICsgJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWxlcy5wdXNoKGVudHJ5Lm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIFNvcnQgYW5kIGZvcm1hdFxuICAgICAgZGlyZWN0b3JpZXMuc29ydCgpLmZvckVhY2goZCA9PiByZXN1bHQgKz0gYFtESVJdICAke2R9XFxuYCk7XG4gICAgICBmaWxlcy5zb3J0KCkuZm9yRWFjaChmID0+IHJlc3VsdCArPSBgW0ZJTEVdICR7Zn1cXG5gKTtcbiAgICAgIFxuICAgICAgcmVzdWx0ICs9IGBcXG5Ub3RhbDogJHtkaXJlY3Rvcmllcy5sZW5ndGh9IGRpcmVjdG9yaWVzLCAke2ZpbGVzLmxlbmd0aH0gZmlsZXNgO1xuICAgICAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZm9ybWF0VG9vbEVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cbn0iXX0=
@@ -24,6 +24,7 @@ export declare class ReadFileTool extends BaseTool<ReadFileParams> {
24
24
  };
25
25
  };
26
26
  required: string[];
27
+ additionalProperties: boolean;
27
28
  };
28
29
  execute(params: ReadFileParams, options?: ToolExecuteOptions): Promise<string>;
29
30
  private getMimeType;
@@ -39,24 +39,25 @@ const fs = __importStar(require("fs/promises"));
39
39
  const path = __importStar(require("path"));
40
40
  class ReadFileTool extends base_1.BaseTool {
41
41
  name = 'read_file';
42
- description = 'Reads and returns the content of a specified file from the local filesystem. Handles text files, images, PDF files, and more. For text files, it can read specific line ranges.';
42
+ description = 'Reads and returns the content of a specified file from the local filesystem. Handles text files, images (PNG, JPG, GIF, WEBP, SVG, BMP), PDF files (extracts text content), DOCX files (extracts text content), and Excel files (converts to text table format). For text files, it can read specific line ranges. Note: Text content is limited to 30,000 characters; if exceeded, output will be truncated with continuation instructions.';
43
43
  parameters = {
44
44
  type: 'object',
45
45
  properties: {
46
46
  absolute_path: {
47
47
  type: 'string',
48
- description: 'The absolute path to the file to read'
48
+ description: 'The absolute path to the file to read (e.g., \'/home/user/project/file.txt\'). Relative paths are not supported. You must provide an absolute path.'
49
49
  },
50
50
  offset: {
51
51
  type: 'number',
52
- description: 'Optional: For text files, the 0-based line number to start reading from'
52
+ description: 'Optional: For text files, the 0-based line number to start reading from. Requires \'limit\' to be set. Use for paginating through large files.'
53
53
  },
54
54
  limit: {
55
55
  type: 'number',
56
- description: 'Optional: For text files, maximum number of lines to read'
56
+ description: 'Optional: For text files, maximum number of lines to read. Use with \'offset\' to paginate through large files. If omitted, reads the entire file (if feasible, up to a default limit).'
57
57
  }
58
58
  },
59
- required: ['absolute_path']
59
+ required: ['absolute_path'],
60
+ additionalProperties: false
60
61
  };
61
62
  async execute(params, options) {
62
63
  this.validateRequired(params, ['absolute_path']);
@@ -113,4 +114,4 @@ class ReadFileTool extends base_1.BaseTool {
113
114
  }
114
115
  }
115
116
  exports.ReadFileTool = ReadFileTool;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3JlYWQtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBdUU7QUFDdkUsZ0RBQWtDO0FBQ2xDLDJDQUE2QjtBQVE3QixNQUFhLFlBQWEsU0FBUSxlQUF3QjtJQUN4RCxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQ25CLFdBQVcsR0FBRyxpTEFBaUwsQ0FBQztJQUNoTSxVQUFVLEdBQUc7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLGFBQWEsRUFBRTtnQkFDYixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsdUNBQXVDO2FBQ3JEO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSx5RUFBeUU7YUFDdkY7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLDJEQUEyRDthQUN6RTtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsZUFBZSxDQUFDO0tBQzVCLENBQUM7SUFFRixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQXNCLEVBQUUsT0FBNEI7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFakQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxD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aW1wb3J0IHsgQmFzZVRvb2wsIFRvb2xFeGVjdXRlT3B0aW9ucywgZm9ybWF0VG9vbEVycm9yIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmludGVyZmFjZSBSZWFkRmlsZVBhcmFtcyB7XG4gIGFic29sdXRlX3BhdGg6IHN0cmluZztcbiAgb2Zmc2V0PzogbnVtYmVyO1xuICBsaW1pdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFJlYWRGaWxlVG9vbCBleHRlbmRzIEJhc2VUb29sPFJlYWRGaWxlUGFyYW1zPiB7XG4gIG5hbWUgPSAncmVhZF9maWxlJztcbiAgZGVzY3JpcHRpb24gPSAnUmVhZHMgYW5kIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgYSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBsb2NhbCBmaWxlc3lzdGVtLiBIYW5kbGVzIHRleHQgZmlsZXMsIGltYWdlcywgUERGIGZpbGVzLCBhbmQgbW9yZS4gRm9yIHRleHQgZmlsZXMsIGl0IGNhbiByZWFkIHNwZWNpZmljIGxpbmUgcmFuZ2VzLic7XG4gIHBhcmFtZXRlcnMgPSB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgYWJzb2x1dGVfcGF0aDoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSB0byByZWFkJ1xuICAgICAgfSxcbiAgICAgIG9mZnNldDoge1xuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbDogRm9yIHRleHQgZmlsZXMsIHRoZSAwLWJhc2VkIGxpbmUgbnVtYmVyIHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSdcbiAgICAgIH0sXG4gICAgICBsaW1pdDoge1xuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbDogRm9yIHRleHQgZmlsZXMsIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIHJlYWQnXG4gICAgICB9XG4gICAgfSxcbiAgICByZXF1aXJlZDogWydhYnNvbHV0ZV9wYXRoJ11cbiAgfTtcblxuICBhc3luYyBleGVjdXRlKHBhcmFtczogUmVhZEZpbGVQYXJhbXMsIG9wdGlvbnM/OiBUb29sRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMudmFsaWRhdGVSZXF1aXJlZChwYXJhbXMsIFsnYWJzb2x1dGVfcGF0aCddKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gcGFyYW1zLmFic29sdXRlX3BhdGg7XG4gICAgY29uc3Qgd29ya2luZ0RpciA9IG9wdGlvbnM/LndvcmtpbmdEaXJlY3RvcnkgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCByZXNvbHZlZFBhdGggPSBwYXRoLmlzQWJzb2x1dGUoZmlsZVBhdGgpID8gZmlsZVBhdGggOiBwYXRoLmpvaW4od29ya2luZ0RpciwgZmlsZVBhdGgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgZnMuc3RhdChyZXNvbHZlZFBhdGgpO1xuICAgICAgXG4gICAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICByZXR1cm4gYEVycm9yOiAke3Jlc29sdmVkUGF0aH0gaXMgYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuIFVzZSBsaXN0X2RpcmVjdG9yeSBpbnN0ZWFkLmA7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZpbGUgdHlwZVxuICAgICAgY29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKHJlc29sdmVkUGF0aCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGltYWdlRXh0cyA9IFsnLnBuZycsICcuanBnJywgJy5qcGVnJywgJy5naWYnLCAnLndlYnAnLCAnLnN2ZycsICcuYm1wJ107XG4gICAgICBcbiAgICAgIGlmIChpbWFnZUV4dHMuaW5jbHVkZXMoZXh0KSkge1xuICAgICAgICAvLyBGb3IgaW1hZ2VzLCByZXR1cm4gYmFzZTY0IGluZm9cbiAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZnMucmVhZEZpbGUocmVzb2x2ZWRQYXRoKTtcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgY29uc3QgbWltZVR5cGUgPSB0aGlzLmdldE1pbWVUeXBlKGV4dCk7XG4gICAgICAgIHJldHVybiBgSW1hZ2UgZmlsZTogJHtyZXNvbHZlZFBhdGh9XFxuQmFzZTY0IGRhdGE6IGRhdGE6JHttaW1lVHlwZX07YmFzZTY0LCR7YmFzZTY0LnN1YnN0cmluZygwLCAxMDApfS4uLlxcbltCYXNlNjQgZGF0YSB0b28gbG9uZyB0byBkaXNwbGF5LCB1c2UgaW1hZ2VfcmVhZCB0b29sIGZvciBmdWxsIGNvbnRlbnRdYDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVhZCBhcyB0ZXh0XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocmVzb2x2ZWRQYXRoLCAndXRmLTgnKTtcbiAgICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGlmIChwYXJhbXMub2Zmc2V0ICE9PSB1bmRlZmluZWQgfHwgcGFyYW1zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcGFyYW1zLm9mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBsaW1pdCA9IHBhcmFtcy5saW1pdCB8fCBsaW5lcy5sZW5ndGggLSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTGluZXMgPSBsaW5lcy5zbGljZShvZmZzZXQsIG9mZnNldCArIGxpbWl0KTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkTGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIExpbWl0IG91dHB1dCBmb3IgdmVyeSBsYXJnZSBmaWxlc1xuICAgICAgaWYgKGNvbnRlbnQubGVuZ3RoID4gMTAwMDAwKSB7XG4gICAgICAgIGNvbnN0IHRydW5jYXRlZExpbmVzID0gbGluZXMuc2xpY2UoMCwgNTAwKTtcbiAgICAgICAgcmV0dXJuIHRydW5jYXRlZExpbmVzLmpvaW4oJ1xcbicpICsgXG4gICAgICAgICAgYFxcblxcbi4uLiBbRmlsZSB0cnVuY2F0ZWQsIHNob3dpbmcgZmlyc3QgNTAwIGxpbmVzIG9mICR7bGluZXMubGVuZ3RofSB0b3RhbCBsaW5lc11gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZvcm1hdFRvb2xFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW1lVHlwZShleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWltZVR5cGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICcuanBnJzogJ2ltYWdlL2pwZWcnLFxuICAgICAgJy5qcGVnJzogJ2ltYWdlL2pwZWcnLFxuICAgICAgJy5naWYnOiAnaW1hZ2UvZ2lmJyxcbiAgICAgICcud2VicCc6ICdpbWFnZS93ZWJwJyxcbiAgICAgICcuc3ZnJzogJ2ltYWdlL3N2Zyt4bWwnLFxuICAgICAgJy5ibXAnOiAnaW1hZ2UvYm1wJ1xuICAgIH07XG4gICAgcmV0dXJuIG1pbWVUeXBlc1tleHRdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICB9XG59XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3JlYWQtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBcUY7QUFDckYsZ0RBQWtDO0FBQ2xDLDJDQUE2QjtBQVE3QixNQUFhLFlBQWEsU0FBUSxlQUF3QjtJQUN4RCxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQ25CLFdBQVcsR0FBRyw4YUFBOGEsQ0FBQztJQUM3YixVQUFVLEdBQUc7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLGFBQWEsRUFBRTtnQkFDYixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUscUpBQXFKO2FBQ25LO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxnSkFBZ0o7YUFDOUo7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHlMQUF5TDthQUN2TTtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsZUFBZSxDQUFDO1FBQzNCLG9CQUFvQixFQUFFLEtBQUs7S0FDNUIsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBc0IsRUFBRSxPQUE0QjtRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUVqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFB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RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVG9vbCwgVG9vbEV4ZWN1dGVPcHRpb25zLCBmb3JtYXRUb29sRXJyb3IsIEJBU0VfU0NIRU1BUyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbnRlcmZhY2UgUmVhZEZpbGVQYXJhbXMge1xuICBhYnNvbHV0ZV9wYXRoOiBzdHJpbmc7XG4gIG9mZnNldD86IG51bWJlcjtcbiAgbGltaXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBSZWFkRmlsZVRvb2wgZXh0ZW5kcyBCYXNlVG9vbDxSZWFkRmlsZVBhcmFtcz4ge1xuICBuYW1lID0gJ3JlYWRfZmlsZSc7XG4gIGRlc2NyaXB0aW9uID0gJ1JlYWRzIGFuZCByZXR1cm5zIHRoZSBjb250ZW50IG9mIGEgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgbG9jYWwgZmlsZXN5c3RlbS4gSGFuZGxlcyB0ZXh0IGZpbGVzLCBpbWFnZXMgKFBORywgSlBHLCBHSUYsIFdFQlAsIFNWRywgQk1QKSwgUERGIGZpbGVzIChleHRyYWN0cyB0ZXh0IGNvbnRlbnQpLCBET0NYIGZpbGVzIChleHRyYWN0cyB0ZXh0IGNvbnRlbnQpLCBhbmQgRXhjZWwgZmlsZXMgKGNvbnZlcnRzIHRvIHRleHQgdGFibGUgZm9ybWF0KS4gRm9yIHRleHQgZmlsZXMsIGl0IGNhbiByZWFkIHNwZWNpZmljIGxpbmUgcmFuZ2VzLiBOb3RlOiBUZXh0IGNvbnRlbnQgaXMgbGltaXRlZCB0byAzMCwwMDAgY2hhcmFjdGVyczsgaWYgZXhjZWVkZWQsIG91dHB1dCB3aWxsIGJlIHRydW5jYXRlZCB3aXRoIGNvbnRpbnVhdGlvbiBpbnN0cnVjdGlvbnMuJztcbiAgcGFyYW1ldGVycyA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBhYnNvbHV0ZV9wYXRoOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBmaWxlIHRvIHJlYWQgKGUuZy4sIFxcJy9ob21lL3VzZXIvcHJvamVjdC9maWxlLnR4dFxcJykuIFJlbGF0aXZlIHBhdGhzIGFyZSBub3Qgc3VwcG9ydGVkLiBZb3UgbXVzdCBwcm92aWRlIGFuIGFic29sdXRlIHBhdGguJ1xuICAgICAgfSxcbiAgICAgIG9mZnNldDoge1xuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbDogRm9yIHRleHQgZmlsZXMsIHRoZSAwLWJhc2VkIGxpbmUgbnVtYmVyIHRvIHN0YXJ0IHJlYWRpbmcgZnJvbS4gUmVxdWlyZXMgXFwnbGltaXRcXCcgdG8gYmUgc2V0LiBVc2UgZm9yIHBhZ2luYXRpbmcgdGhyb3VnaCBsYXJnZSBmaWxlcy4nXG4gICAgICB9LFxuICAgICAgbGltaXQ6IHtcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWw6IEZvciB0ZXh0IGZpbGVzLCBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byByZWFkLiBVc2Ugd2l0aCBcXCdvZmZzZXRcXCcgdG8gcGFnaW5hdGUgdGhyb3VnaCBsYXJnZSBmaWxlcy4gSWYgb21pdHRlZCwgcmVhZHMgdGhlIGVudGlyZSBmaWxlIChpZiBmZWFzaWJsZSwgdXAgdG8gYSBkZWZhdWx0IGxpbWl0KS4nXG4gICAgICB9XG4gICAgfSxcbiAgICByZXF1aXJlZDogWydhYnNvbHV0ZV9wYXRoJ10sXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlXG4gIH07XG5cbiAgYXN5bmMgZXhlY3V0ZShwYXJhbXM6IFJlYWRGaWxlUGFyYW1zLCBvcHRpb25zPzogVG9vbEV4ZWN1dGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWQocGFyYW1zLCBbJ2Fic29sdXRlX3BhdGgnXSk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhcmFtcy5hYnNvbHV0ZV9wYXRoO1xuICAgIGNvbnN0IHdvcmtpbmdEaXIgPSBvcHRpb25zPy53b3JraW5nRGlyZWN0b3J5IHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcGF0aC5pc0Fic29sdXRlKGZpbGVQYXRoKSA/IGZpbGVQYXRoIDogcGF0aC5qb2luKHdvcmtpbmdEaXIsIGZpbGVQYXRoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnN0YXQocmVzb2x2ZWRQYXRoKTtcbiAgICAgIFxuICAgICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgcmV0dXJuIGBFcnJvcjogJHtyZXNvbHZlZFBhdGh9IGlzIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLiBVc2UgbGlzdF9kaXJlY3RvcnkgaW5zdGVhZC5gO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmaWxlIHR5cGVcbiAgICAgIGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShyZXNvbHZlZFBhdGgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBpbWFnZUV4dHMgPSBbJy5wbmcnLCAnLmpwZycsICcuanBlZycsICcuZ2lmJywgJy53ZWJwJywgJy5zdmcnLCAnLmJtcCddO1xuICAgICAgXG4gICAgICBpZiAoaW1hZ2VFeHRzLmluY2x1ZGVzKGV4dCkpIHtcbiAgICAgICAgLy8gRm9yIGltYWdlcywgcmV0dXJuIGJhc2U2NCBpbmZvXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGZzLnJlYWRGaWxlKHJlc29sdmVkUGF0aCk7XG4gICAgICAgIGNvbnN0IGJhc2U2NCA9IGJ1ZmZlci50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIGNvbnN0IG1pbWVUeXBlID0gdGhpcy5nZXRNaW1lVHlwZShleHQpO1xuICAgICAgICByZXR1cm4gYEltYWdlIGZpbGU6ICR7cmVzb2x2ZWRQYXRofVxcbkJhc2U2NCBkYXRhOiBkYXRhOiR7bWltZVR5cGV9O2Jhc2U2NCwke2Jhc2U2NC5zdWJzdHJpbmcoMCwgMTAwKX0uLi5cXG5bQmFzZTY0IGRhdGEgdG9vIGxvbmcgdG8gZGlzcGxheSwgdXNlIGltYWdlX3JlYWQgdG9vbCBmb3IgZnVsbCBjb250ZW50XWA7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlYWQgYXMgdGV4dFxuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKHJlc29sdmVkUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuXG4gICAgICBpZiAocGFyYW1zLm9mZnNldCAhPT0gdW5kZWZpbmVkIHx8IHBhcmFtcy5saW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHBhcmFtcy5vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgbGltaXQgPSBwYXJhbXMubGltaXQgfHwgbGluZXMubGVuZ3RoIC0gb2Zmc2V0O1xuICAgICAgICBjb25zdCBzZWxlY3RlZExpbmVzID0gbGluZXMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsaW1pdCk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZExpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW1pdCBvdXRwdXQgZm9yIHZlcnkgbGFyZ2UgZmlsZXNcbiAgICAgIGlmIChjb250ZW50Lmxlbmd0aCA+IDEwMDAwMCkge1xuICAgICAgICBjb25zdCB0cnVuY2F0ZWRMaW5lcyA9IGxpbmVzLnNsaWNlKDAsIDUwMCk7XG4gICAgICAgIHJldHVybiB0cnVuY2F0ZWRMaW5lcy5qb2luKCdcXG4nKSArIFxuICAgICAgICAgIGBcXG5cXG4uLi4gW0ZpbGUgdHJ1bmNhdGVkLCBzaG93aW5nIGZpcnN0IDUwMCBsaW5lcyBvZiAke2xpbmVzLmxlbmd0aH0gdG90YWwgbGluZXNdYDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmb3JtYXRUb29sRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWltZVR5cGUoZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1pbWVUeXBlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICcucG5nJzogJ2ltYWdlL3BuZycsXG4gICAgICAnLmpwZyc6ICdpbWFnZS9qcGVnJyxcbiAgICAgICcuanBlZyc6ICdpbWFnZS9qcGVnJyxcbiAgICAgICcuZ2lmJzogJ2ltYWdlL2dpZicsXG4gICAgICAnLndlYnAnOiAnaW1hZ2Uvd2VicCcsXG4gICAgICAnLnN2Zyc6ICdpbWFnZS9zdmcreG1sJyxcbiAgICAgICcuYm1wJzogJ2ltYWdlL2JtcCdcbiAgICB9O1xuICAgIHJldHVybiBtaW1lVHlwZXNbZXh0XSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfVxufSJdfQ==
@@ -29,6 +29,7 @@ export declare class ReplaceTool extends BaseTool<ReplaceParams> {
29
29
  };
30
30
  };
31
31
  required: string[];
32
+ additionalProperties: boolean;
32
33
  };
33
34
  execute(params: ReplaceParams, options?: ToolExecuteOptions): Promise<string>;
34
35
  }