← Back to Kontasks
L3 Tool Execution API - Implementation Complete
L3 Tool Execution API has been implemented. Kontask inline scripts can now call Read, Glob, Grep directly without starting a Claude turn.
Output
✅ L3 Tool Execution API Implemented
Kontask inline scripts can now call Read, Glob, Grep directly - instant file operations without starting a Claude turn (~$0, <1s vs ~$0.05, 10s).
Files Changed (commit 8226a7ef)
+ konsole/src/tools.ts # Read, Glob, Grep with path ACL M konsole/src/main.ts # Routes /tools/{read,glob,grep} M konsole/src/types.ts # Added 'tools' log category M konui/src/router.ts # Proxy /api/tools/* endpoints M konui/src/dashboard-console.ts # Client SDK kontask.tools.*
Usage Examples
// Read file contents const result = await kontask.tools.read('/konnectvol/CLAUDE.md'); // result.content = file text, result.lines = line count // Find files by glob pattern const files = await kontask.tools.glob('**/*.ts', '/konnectvol/konui'); // files.files = array of matching paths // Search for pattern in files const matches = await kontask.tools.grep('TODO', '/konnectvol', '**/*.ts'); // matches.matches = [{file, line, content}, ...]
Security Constraints
- Path ACL: Only
/konnectvol/paths allowed - Max file size: 1MB
- Max lines: 2000
- Max glob results: 100
- Max grep matches: 100
🧪 Interactive Test
Click to test the L3 API from this kontask card:
Click a button to test...
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
kontasksapil3
Created
7 Jan 2026, 9:56 pm
Updated
7 Jan 2026, 9:56 pm
Created By
claude
🔗 Git Commit
8226a7ef
Raw Data
{
"id": "c8bf58fb-7bf8-49b1-bf1d-12e30762d689",
"type": "general",
"status": "completed",
"title": "L3 Tool Execution API - Implementation Complete",
"description": "L3 Tool Execution API has been implemented. Kontask inline scripts can now call Read, Glob, Grep directly without starting a Claude turn.",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:'Consolas','Monaco',monospace;\"><h2 style=\"font-family:sans-serif;color:#fff;margin:0 0 16px 0;\">✅ L3 Tool Execution API Implemented</h2><p style=\"font-family:sans-serif;color:#9ca3af;margin:0 0 16px 0;\">Kontask inline scripts can now call Read, Glob, Grep directly - instant file operations without starting a Claude turn (~$0, <1s vs ~$0.05, 10s).</p><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"margin:0 0 8px 0;color:#fff;font-family:sans-serif;\">Files Changed (commit 8226a7ef)</h4><pre style=\"margin:0;line-height:1.6;color:#e0e0e0;\"><span style=\"color:#98c379;\">+</span> <span style=\"color:#e5c07b;\">konsole/src/tools.ts</span> <span style=\"color:#7f848e;\"># Read, Glob, Grep with path ACL</span>\n<span style=\"color:#61afef;\">M</span> <span style=\"color:#e5c07b;\">konsole/src/main.ts</span> <span style=\"color:#7f848e;\"># Routes /tools/{read,glob,grep}</span>\n<span style=\"color:#61afef;\">M</span> <span style=\"color:#e5c07b;\">konsole/src/types.ts</span> <span style=\"color:#7f848e;\"># Added 'tools' log category</span>\n<span style=\"color:#61afef;\">M</span> <span style=\"color:#e5c07b;\">konui/src/router.ts</span> <span style=\"color:#7f848e;\"># Proxy /api/tools/* endpoints</span>\n<span style=\"color:#61afef;\">M</span> <span style=\"color:#e5c07b;\">konui/src/dashboard-console.ts</span> <span style=\"color:#7f848e;\"># Client SDK kontask.tools.*</span></pre></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"margin:0 0 8px 0;color:#fff;font-family:sans-serif;\">Usage Examples</h4><pre style=\"margin:0;line-height:1.6;color:#e0e0e0;\"><span style=\"color:#7f848e;\">// Read file contents</span>\n<span style=\"color:#c678dd;\">const</span> result = <span style=\"color:#c678dd;\">await</span> kontask.tools.<span style=\"color:#61afef;\">read</span>(<span style=\"color:#98c379;\">'/konnectvol/CLAUDE.md'</span>);\n<span style=\"color:#7f848e;\">// result.content = file text, result.lines = line count</span>\n\n<span style=\"color:#7f848e;\">// Find files by glob pattern</span>\n<span style=\"color:#c678dd;\">const</span> files = <span style=\"color:#c678dd;\">await</span> kontask.tools.<span style=\"color:#61afef;\">glob</span>(<span style=\"color:#98c379;\">'**/*.ts'</span>, <span style=\"color:#98c379;\">'/konnectvol/konui'</span>);\n<span style=\"color:#7f848e;\">// files.files = array of matching paths</span>\n\n<span style=\"color:#7f848e;\">// Search for pattern in files</span>\n<span style=\"color:#c678dd;\">const</span> matches = <span style=\"color:#c678dd;\">await</span> kontask.tools.<span style=\"color:#61afef;\">grep</span>(<span style=\"color:#98c379;\">'TODO'</span>, <span style=\"color:#98c379;\">'/konnectvol'</span>, <span style=\"color:#98c379;\">'**/*.ts'</span>);\n<span style=\"color:#7f848e;\">// matches.matches = [{file, line, content}, ...]</span></pre></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin-bottom:16px;\"><h4 style=\"margin:0 0 8px 0;color:#fff;font-family:sans-serif;\">Security Constraints</h4><ul style=\"margin:0;padding-left:20px;color:#9ca3af;line-height:1.6;\"><li>Path ACL: Only <code style=\"color:#e5c07b;\">/konnectvol/</code> paths allowed</li><li>Max file size: 1MB</li><li>Max lines: 2000</li><li>Max glob results: 100</li><li>Max grep matches: 100</li></ul></div><div style=\"background:#2d2d2d;padding:16px;border-radius:6px;\"><h4 style=\"margin:0 0 12px 0;color:#fff;font-family:sans-serif;\">🧪 Interactive Test</h4><p style=\"color:#9ca3af;margin:0 0 12px 0;font-family:sans-serif;\">Click to test the L3 API from this kontask card:</p><div id=\"test-output\" style=\"background:#1a1a2e;padding:12px;border-radius:4px;min-height:60px;color:#e0e0e0;\">Click a button to test...</div><div style=\"margin-top:12px;display:flex;gap:8px;flex-wrap:wrap;\"><button id=\"test-read\" style=\"background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-weight:500;\">Test Read</button><button id=\"test-glob\" style=\"background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-weight:500;\">Test Glob</button><button id=\"test-grep\" style=\"background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-weight:500;\">Test Grep</button></div></div></div><script>(function(){const output=document.getElementById('test-output');document.getElementById('test-read').addEventListener('click',async()=>{output.innerHTML='<span style=\"color:#f59e0b;\">Reading...</span>';try{const r=await kontask.tools.read('/konnectvol/CLAUDE.md',{limit:5});output.innerHTML='<span style=\"color:#22c55e;\">✓ Read '+r.lines+' lines</span><br><pre style=\"margin-top:8px;white-space:pre-wrap;font-size:12px;\">'+r.content.substring(0,200)+'...</pre>';}catch(e){output.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});document.getElementById('test-glob').addEventListener('click',async()=>{output.innerHTML='<span style=\"color:#f59e0b;\">Globbing...</span>';try{const r=await kontask.tools.glob('*.ts','/konnectvol/konsole/src');output.innerHTML='<span style=\"color:#22c55e;\">✓ Found '+r.count+' files</span><br><pre style=\"margin-top:8px;font-size:12px;\">'+r.files.slice(0,5).join('\\n')+(r.count>5?'\\n...(+'+(r.count-5)+' more)':'')+'</pre>';}catch(e){output.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});document.getElementById('test-grep').addEventListener('click',async()=>{output.innerHTML='<span style=\"color:#f59e0b;\">Grepping...</span>';try{const r=await kontask.tools.grep('toolRead','/konnectvol/konsole/src','*.ts',5);output.innerHTML='<span style=\"color:#22c55e;\">✓ Found '+r.count+' matches</span><br><pre style=\"margin-top:8px;font-size:12px;white-space:pre-wrap;\">'+r.matches.map(m=>m.file.split('/').pop()+':'+m.line+' '+m.content.trim()).join('\\n')+'</pre>';}catch(e){output.innerHTML='<span style=\"color:#ef4444;\">Error: '+e+'</span>';}});})();</script>",
"choices": [
{
"label": "Update CLAUDE.md docs",
"value": "Update CLAUDE.md to document the L3 kontask.tools API with usage examples",
"primary": true
},
{
"label": "Add unit tests",
"value": "Add unit tests for the L3 tools API endpoints in konsole"
},
{
"label": "Build something with it",
"value": "Show me what we can build with the new L3 tools API"
}
],
"commitSha": "8226a7ef"
},
"createdBy": "claude",
"createdAt": "2026-01-07T11:56:45.119Z",
"updatedAt": "2026-01-07T11:56:45.354Z",
"scope": "vibetools",
"tags": [
"kontasks",
"api",
"l3"
],
"targetUser": "claude"
}