{
  "permissions": {
    "allow": [
      "Bash(python:*)",
      "Bash(ls:*)",
      "Bash(archiver:*)",
      "Bash(mdfind:*)",
      "Bash(open:*)",
      "Bash(git checkout:*)",
      "Bash(./gradlew :app:compileDebugKotlin --no-daemon)",
      "Bash(pip3 show tensorflow tensorflow-lite-transformers)",
      "Bash(pip3 list)",
      "Bash(pip3 install onnxruntime onnx --quiet)",
      "Bash(python3 convert_model.py)",
      "Bash(python3 -c \"\nimport onnx\nmodel = onnx.load\\(''/Users/liushuming/projects/app/app/src/main/assets/glint360k_r50.onnx''\\)\nonnx.checker.check_model\\(model\\)\n\nprint\\(''=== 模型基本信息 ===''\\)\nprint\\(f''模型文件名：glint360k_r50.onnx''\\)\nprint\\(f''IR 版本：{model.ir_version}''\\)\nprint\\(f''OpSet 版本：{model.opset_import[0].version}''\\)\n\nprint\\(''\\\\n=== 输入信息 ===''\\)\nfor inp in model.graph.input:\n    shape = [d.dim_value if d.dim_value > 0 else d.dim_param for d in inp.type.tensor_type.shape.dim]\n    print\\(f''  名称：{inp.name}''\\)\n    print\\(f''  形状：{shape}''\\)\n    print\\(f''  数据类型：{inp.type.tensor_type.elem_type}''\\)\n\nprint\\(''\\\\n=== 输出信息 ===''\\)\nfor out in model.graph.output:\n    shape = [d.dim_value if d.dim_value > 0 else d.dim_param for d in out.type.tensor_type.shape.dim]\n    print\\(f''  名称：{out.name}''\\)\n    print\\(f''  形状：{shape}''\\)\n    print\\(f''  数据类型：{out.type.tensor_type.elem_type}''\\)\n\nprint\\(''\\\\n=== 节点统计 ===''\\)\nprint\\(f''节点数量：{len\\(model.graph.node\\)}''\\)\n\nprint\\(''\\\\n✓ 模型验证通过！''\\)\n\")",
      "Bash(pip3 install 'protobuf<5' --quiet)",
      "Bash(pip3 install 'tensorflow>=2.16.0' --quiet)",
      "Bash(pip3 uninstall onnx-tf -y)",
      "Bash(pip3 install 'onnx==1.15.0' 'onnx-tf==0.6.0' --quiet)",
      "Bash(onnx2tf -i /Users/liushuming/projects/app/app/src/main/assets/glint360k_r50.onnx -o /Users/liushuming/projects/app/app/src/main/assets --not_use_onnxsim)",
      "Bash(ls -lh /Users/liushuming/projects/app/app/src/main/assets/*.tflite)"
    ]
  }
}
