기본 보기를 타일 그리드로 전환하고 사용자가 카테고리를 직접 추가할 수 있게 함. 문법/단어/문화 질문에 답하는 "선생님" 채팅 패널 신설(/api/language/ask-teacher). 선생님 답변의 마크다운(표·볼드·목록·인용)이 그대로 노출되던 버그를 자체 렌더러로 수정.
221 lines
12 KiB
JSON
221 lines
12 KiB
JSON
{
|
|
"permissions": {
|
|
"allow": [
|
|
"Bash(npx tsc *)",
|
|
"Bash(mv ./workspace/papa/uploads/* ./workspace/uploads/)",
|
|
"Bash(C:\\\\Program Files\\\\LibreOffice\\\\program\\\\soffice.exe *)",
|
|
"Bash(python scripts/pptx_gen.py --help)",
|
|
"Bash(python *)",
|
|
"Bash(grep -n \"{\\\\\\\\*path\\\\|index.html\\\\|catch-all\")",
|
|
"Bash(npx tsx *)",
|
|
"Bash(node *)",
|
|
"Bash(tasklist)",
|
|
"Bash(netstat -ano)",
|
|
"Bash(ps *)",
|
|
"PowerShell(Get-Process *)",
|
|
"Bash(file *)",
|
|
"Bash(unzip -l 양_갤러리_프레젠테이션.pptx)",
|
|
"Bash(cd /d D:\\\\smallclaw\\\\workspace\\\\양_갤러리_프레젠테이션)",
|
|
"Bash(powershell -Command \"Expand-Archive -Path '양_갤러리_프레젠테이션.pptx' -DestinationPath 'pptx_extracted' -Force\")",
|
|
"Bash(powershell *)",
|
|
"Bash(unzip -l 강아지_사진.pptx)",
|
|
"Bash(unzip -l \"workspace/강아지_사진/강아지_사진.pptx\")",
|
|
"Bash(unzip -l \"./강아지_사진.pptx\")",
|
|
"Bash(python3 *)",
|
|
"Bash(unzip -l \"./workspace/고양이_사진/고양이_사진.pptx\")",
|
|
"Bash(pip list *)",
|
|
"Bash(/c/Users/kimsg/anaconda3/python scripts/pptx_gen.py --help)",
|
|
"Bash(npm run *)",
|
|
"Bash(curl *)",
|
|
"Bash(ollama list *)",
|
|
"WebSearch",
|
|
"Bash(pdftotext -v)",
|
|
"Bash(pm2 list *)",
|
|
"Bash(npm install *)",
|
|
"Bash(pkill -f \"node dist/cli/index.js\")",
|
|
"Bash(nohup node *)",
|
|
"Bash(echo \"PID $!\")",
|
|
"Bash(node dist/cli/index.js)",
|
|
"Bash(echo \"PID: $!\")",
|
|
"Bash(dig +short mail.evangel.xyz A)",
|
|
"Bash(nc -zw5 mail.evangel.xyz 993)",
|
|
"Bash(nc -zw5 mail.evangel.xyz 587)",
|
|
"Bash(pkill -f \"gateway start\")",
|
|
"Bash(timeout 10 openssl s_client *)",
|
|
"Bash(awk '/async function executeTool/,/^async function [a-zA-Z_]/' /home/kim/homeclaw/src/gateway/server-v2.ts)",
|
|
"Bash(grep -n \"^ default:\\\\|^ default:\\\\|^ }$\\\\|^ }$\" /home/kim/homeclaw/src/gateway/server-v2.ts)",
|
|
"Bash(awk -F: '$1>2436 && $1<3700')",
|
|
"Bash(awk 'NR>=3450 && NR<=3550' /home/kim/homeclaw/src/gateway/server-v2.ts)",
|
|
"Bash(awk '{print \"server-v2.ts lines:\", $1}')",
|
|
"Bash(docker --version)",
|
|
"Bash(mkdir -p ~/searxng)",
|
|
"Read(//home/kim/**)",
|
|
"Bash(awk '/^function |^const |^interface |^class |^type /{fn=NR\": \"$0} /^app\\\\.\\(get|post|put|delete|patch\\)\\\\b/{print fn; print NR\": \"$0; print \"---\"}' src/gateway/server-v2.ts)",
|
|
"Bash(awk *)",
|
|
"Bash(grep -v '^[[:space:]]*$')",
|
|
"Bash(grep -v '`')",
|
|
"Bash(grep -v '\\\\$')",
|
|
"Bash(git -C /home/kim/homeclaw status)",
|
|
"Bash(git -C /home/kim/homeclaw log --oneline -10)",
|
|
"Bash(git *)",
|
|
"Bash(grep -E \"\\\\.ts$\")",
|
|
"Bash(cat)",
|
|
"Bash(bash /tmp/analyze.sh)",
|
|
"Bash(mv -v magnesium_membrane_GBR_2022.pdf magnesium_membrane_GBR_2022.md)",
|
|
"Bash(mv -v magnesium_membrane_review_2023.pdf magnesium_membrane_review_2023.md)",
|
|
"Bash(npx playwright *)",
|
|
"Bash(timeout 20 bash -c ' *)",
|
|
"Bash(netstat -tlnp)",
|
|
"Bash(namei *)",
|
|
"Bash(snap list *)",
|
|
"Bash(pkill *)",
|
|
"Bash(grep -rn \"getUserWorkspace\\\\|userWorkspace\\\\|users/\\\\${username}\" /home/kim/homeclaw/src/config/config.ts)",
|
|
"Bash(grep *)",
|
|
"Bash(dd if=/home/kim/homeclaw/.smallclaw/users/cherry/workspace/.smallclaw/vault/vault.enc bs=1 skip=620 count=80)",
|
|
"Bash(claude plugin *)",
|
|
"Bash(claude mcp *)",
|
|
"Bash(/home/kim/.opencode/bin/opencode --help)",
|
|
"Bash(/home/kim/.opencode/bin/opencode mcp *)",
|
|
"Bash(dpkg -l)",
|
|
"Bash(ffmpeg -version)",
|
|
"Bash(whisper-cli --help)",
|
|
"Bash(piper --version)",
|
|
"Read(//usr/local/bin/**)",
|
|
"Bash(whisper-cli *)",
|
|
"Bash(journalctl --user --no-pager --since \"1 hour ago\")",
|
|
"Bash(journalctl --user --no-pager --since \"2 hours ago\")",
|
|
"Bash(journalctl *)",
|
|
"Bash(xxd)",
|
|
"Read(//tmp/**)",
|
|
"Bash(xargs ls -la)",
|
|
"Bash(pip3 show *)",
|
|
"Bash(pip3 install *)",
|
|
"Bash(npx @modelcontextprotocol/server-sqlite --version)",
|
|
"Bash(npm list *)",
|
|
"Bash(npx --yes @modelcontextprotocol/server-sqlite --help)",
|
|
"Bash(npm search *)",
|
|
"Bash(pip3 list *)",
|
|
"Bash(systemctl --user restart homeclaw)",
|
|
"Bash(systemctl --user status homeclaw)",
|
|
"WebFetch(domain:kads.or.kr)",
|
|
"Bash(sqlite3 /home/kim/homeclaw/.smallclaw/databases/dental_dict.db \"SELECT id, korean, english FROM terms ORDER BY id;\")",
|
|
"Bash(sqlite3 /home/kim/homeclaw/.smallclaw/databases/dental_dict.db \"SELECT id, name FROM categories ORDER BY id;\")",
|
|
"Bash(sqlite3 *)",
|
|
"WebFetch(domain:data.mendeley.com)",
|
|
"Bash(pip install *)",
|
|
"Bash(kaggle --version)",
|
|
"Bash(kaggle datasets *)",
|
|
"Bash(unzip -q panoramic-dental-radiography-dataset.zip)",
|
|
"Bash(unzip -q dental-opg-xray-dataset.zip)",
|
|
"Bash(unzip -q dental-periapical-x-rayss.zip)",
|
|
"Bash(echo \"J0pMEBJl4EF4XgwpU0vz\")",
|
|
"Bash(chmod 600 /home/kim/homeclaw/.smallclaw/roboflow_api_key.txt)",
|
|
"Bash(kill 49665 49695 51680)",
|
|
"Bash(kill -9 49665 49695 51680 51748)",
|
|
"Bash(echo \"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\")",
|
|
"Bash(chmod 600 /home/kim/homeclaw/.smallclaw/huggingface_api_key.txt)",
|
|
"Bash(export HF_TOKEN=$\\(cat /home/kim/homeclaw/.smallclaw/huggingface_api_key.txt\\))",
|
|
"Bash(unzip -q huggingface_dentex_full/DENTEX/training_data.zip -d huggingface_dentex_full/DENTEX/training/)",
|
|
"Bash(unzip -q huggingface_dentex_full/DENTEX/validation_data.zip -d huggingface_dentex_full/DENTEX/validation/)",
|
|
"Bash(unzip -q huggingface_dentex_full/DENTEX/test_data.zip -d huggingface_dentex_full/DENTEX/test/)",
|
|
"Bash(unzip -q huggingface_xray/dental-xray-segmentation.zip -d huggingface_xray/)",
|
|
"WebFetch(domain:raw.githubusercontent.com)",
|
|
"WebFetch(domain:github.com)",
|
|
"Bash(unzip -q huggingface_implant/Teeth-Segmentation-ToothFairy-1-enahnced.zip -d huggingface_implant/extracted/)",
|
|
"Bash(kill 65523 68084)",
|
|
"WebFetch(domain:pubmed.ncbi.nlm.nih.gov)",
|
|
"WebFetch(domain:commons.wikimedia.org)",
|
|
"WebFetch(domain:en.wikipedia.org)",
|
|
"Bash(read -r f)",
|
|
"Bash([ ! -f \"/home/kim/homeclaw/.smallclaw/databases/$f\" ])",
|
|
"Bash(echo \"PDFs moved to source_url: $\\(sqlite3 /home/kim/homeclaw/.smallclaw/databases/dental_dict.db 'SELECT changes\\(\\)'\\)\")",
|
|
"Bash(echo \"utm_source params removed: $\\(sqlite3 /home/kim/homeclaw/.smallclaw/databases/dental_dict.db 'SELECT changes\\(\\)'\\)\")",
|
|
"Bash(echo \"Removed $\\(sqlite3 /home/kim/homeclaw/.smallclaw/databases/dental_dict.db 'SELECT changes\\(\\)'\\) bad images\")",
|
|
"WebFetch(domain:pmc.ncbi.nlm.nih.gov)",
|
|
"WebFetch(domain:openi.nlm.nih.gov)",
|
|
"WebFetch(domain:catalog.data.gov)",
|
|
"WebFetch(domain:universe.roboflow.com)",
|
|
"WebFetch(domain:zenodo.org)",
|
|
"WebFetch(domain:medpix.nlm.nih.gov)",
|
|
"WebFetch(domain:lhncbc.nlm.nih.gov)",
|
|
"WebFetch(domain:osf.io)",
|
|
"Bash(pstree -p 123876)",
|
|
"Bash(systemctl --user status homeclaw --no-pager)",
|
|
"Bash(tee /tmp/validate_log.txt)",
|
|
"Bash(systemctl --user is-active homeclaw)",
|
|
"Bash(find /home/kim/homeclaw/.smallclaw/databases/dental_images/kaggle -path */__TRACKED_VAR__/* -type f)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'orthodontic bracket' --csv)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'braces dental' --csv)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'dental wire archwire' --csv)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'malocclusion teeth' --csv)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'clear aligner invisalign' --csv)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'tooth alignment' --csv)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'dental crowding teeth classification' --csv)",
|
|
"Bash(KAGGLE_USERNAME=sanggyookim KAGGLE_KEY=KGAT_b7b02fe869d6f59c75f5e63662921bbd kaggle datasets list -s 'teeth intraoral photo' --csv)",
|
|
"Bash(systemctl --user cat homeclaw)",
|
|
"Bash(mkdir -p .smallclaw/databases/scratch)",
|
|
"WebFetch(domain:docs.figshare.com)",
|
|
"WebFetch(domain:developers.wellcomecollection.org)",
|
|
"WebFetch(domain:api.figshare.com)",
|
|
"WebFetch(domain:api.wellcomecollection.org)",
|
|
"Bash(kill 224034)",
|
|
"Bash(chmod +x scratch/auto_chain_20260516.sh)",
|
|
"Bash(nohup bash scratch/auto_chain_20260516.sh)",
|
|
"Bash(disown)",
|
|
"Bash(echo \"auto-chain wrapper PID: $!\")",
|
|
"Bash(kill 266290)",
|
|
"Bash(chmod +x /home/kim/homeclaw/.smallclaw/databases/scratch/chain_20260516_clinical.sh)",
|
|
"Bash(nohup bash scratch/chain_20260516_clinical.sh)",
|
|
"Bash(echo \"PID=$!\")",
|
|
"Bash(chmod +x /home/kim/homeclaw/.smallclaw/databases/scratch/chain_pathology.sh)",
|
|
"Bash(nohup bash /home/kim/homeclaw/.smallclaw/databases/scratch/chain_pathology.sh)",
|
|
"Bash(top -bn1)",
|
|
"Bash(fuser /home/kim/homeclaw/.smallclaw/databases/dental_dict.db)",
|
|
"Bash(fuser -v /home/kim/homeclaw/.smallclaw/databases/dental_dict.db)",
|
|
"Bash(bash -c ' *)",
|
|
"Bash(echo \"백그라운드 대기 PID: $!\")",
|
|
"Bash(kill 287920)",
|
|
"Bash(echo \"대기 PID: $!\")",
|
|
"Bash(pdfimages --help)",
|
|
"Bash(pdftoppm --help)",
|
|
"Bash(pdfimages -all '/home/kim/homeclaw/.smallclaw/users/papa/workspace/uploads/1995 violin, viola, TMD_260517_133510.pdf' /home/kim/homeclaw/.smallclaw/users/papa/workspace/uploads/1995__violin__viola__TMD_260517_133510-images/img)",
|
|
"Bash(pdftoppm -png -r 150 '/home/kim/homeclaw/.smallclaw/users/papa/workspace/uploads/1995 violin, viola, TMD_260517_133510.pdf' /home/kim/homeclaw/.smallclaw/users/papa/workspace/uploads/1995__violin__viola__TMD_260517_133510-images/page)",
|
|
"Bash(convert --version)",
|
|
"Bash(sort -t/ -k1)",
|
|
"Bash(cp \"/home/kim/homeclaw/.smallclaw/users/papa/workspace/violin_viola_tmd_study/violin_viola_tmd_study.pptx\" .)",
|
|
"Bash(unzip -l violin_viola_tmd_study.pptx)",
|
|
"Bash(unzip -p violin_viola_tmd_study.pptx ppt/slides/slide1.xml)",
|
|
"Bash(rm -rf pdf_test)",
|
|
"Bash(mkdir pdf_test)",
|
|
"Bash(pdftoppm -png -r 150 \"/home/kim/homeclaw/.smallclaw/users/papa/workspace/uploads/1995 violin, viola, TMD_260517_133510_1779000665055.pdf\" pdf_test/page)",
|
|
"Bash(echo \"모니터링 시작 \\(PID $!\\)\")",
|
|
"Bash(tesseract --version)",
|
|
"Read(//usr/share/**)",
|
|
"Read(//usr/**)",
|
|
"Bash(apt-cache search *)",
|
|
"Bash(chmod +x /home/kim/homeclaw/scripts/install-image-deps.sh)",
|
|
"Bash(bash /home/kim/homeclaw/scripts/install-image-deps.sh)",
|
|
"Bash(apt-cache show *)",
|
|
"Bash(npm info *)",
|
|
"Bash(lilypond --svg -o output input.ly)",
|
|
"Bash(lilypond -dpreview --svg -o preview input.ly)",
|
|
"Bash(midi2ly output.midi -o from_midi.ly)",
|
|
"Bash(lilypond --pdf -o pdf_test input.ly)",
|
|
"Bash(mktemp -d)",
|
|
"WebFetch(domain:pcsp.nationalregister.org)",
|
|
"Bash(mkdir -p pptx)",
|
|
"Bash(mv sinus *)",
|
|
"Bash(~/.local/bin/arduino-cli core *)",
|
|
"Bash(nvidia-smi --query-gpu=memory.used,memory.total,memory.free --format=csv)",
|
|
"Bash(/home/kim/homeclaw/.smallclaw/voice-venv/bin/pip list *)",
|
|
"Bash(apt-cache policy *)",
|
|
"Bash(find / -maxdepth 4 -iname \"config.json\" -path \"*smallclaw*\")",
|
|
"Read(//root/**)",
|
|
"Bash(echo \"done, exit=$?\")"
|
|
]
|
|
},
|
|
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
|
|
"ANTHROPIC_API_KEY": "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",
|
|
"ANTHROPIC_MODEL": "nvidia/nemotron-3-super-120b-a12b:free"
|
|
}
|