sapper-iq 1.1.22 → 1.1.24
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.
- package/package.json +1 -1
- package/sapper.mjs +9 -3
package/package.json
CHANGED
package/sapper.mjs
CHANGED
|
@@ -814,8 +814,8 @@ async function runSapper() {
|
|
|
814
814
|
|
|
815
815
|
messages.push({ role: 'assistant', content: msg });
|
|
816
816
|
|
|
817
|
-
// Fixed regex: [^\]]
|
|
818
|
-
const toolMatches = [...msg.matchAll(/\[TOOL:(\w+)\]([^\]]
|
|
817
|
+
// Fixed regex: [^\]]* allows empty path (AI sometimes sends [TOOL:LIST][/TOOL])
|
|
818
|
+
const toolMatches = [...msg.matchAll(/\[TOOL:(\w+)\]([^\]]*)(?:\]([\s\S]*?))?\[\/TOOL\]/g)];
|
|
819
819
|
|
|
820
820
|
// Debug mode: show what regex sees
|
|
821
821
|
if (debugMode) {
|
|
@@ -874,7 +874,13 @@ async function runSapper() {
|
|
|
874
874
|
if (type.toLowerCase() === 'list') result = tools.list(path);
|
|
875
875
|
else if (type.toLowerCase() === 'read') result = tools.read(path);
|
|
876
876
|
else if (type.toLowerCase() === 'mkdir') result = tools.mkdir(path);
|
|
877
|
-
else if (type.toLowerCase() === 'write')
|
|
877
|
+
else if (type.toLowerCase() === 'write') {
|
|
878
|
+
if (!content || content.trim() === '') {
|
|
879
|
+
result = 'Error: WRITE requires content. Use [TOOL:WRITE]path]content here[/TOOL]';
|
|
880
|
+
} else {
|
|
881
|
+
result = await tools.write(path, content);
|
|
882
|
+
}
|
|
883
|
+
}
|
|
878
884
|
else if (type.toLowerCase() === 'patch') {
|
|
879
885
|
// PATCH format: [TOOL:PATCH]path]OLD_TEXT|||NEW_TEXT[/TOOL]
|
|
880
886
|
const parts = content?.split('|||');
|