Dropstone CLI

அனுமதிகள்

எந்த செயல்களுக்கு ஒப்புதல் தேவை என்பதை கட்டுப்படுத்தவும்.

Dropstone ஒரு குறிப்பிட்ட செயல் தானாக இயங்க வேண்டுமா, உங்களிடம் கேட்க வேண்டுமா, அல்லது தடுக்கப்பட வேண்டுமா என்பதை முடிவு செய்ய permission கட்டமைப்பைப் பயன்படுத்துகிறது.

பழைய tools பூலியன் கட்டமைப்பு காலாவதியானது; அது permission உடன் இணைக்கப்பட்டுள்ளது. பழைய tools கட்டமைப்பு பின்னோக்கி இணக்கத்திற்காக இன்னும் ஆதரிக்கப்படுகிறது.


செயல்கள்

ஒவ்வொரு அனுமதி விதியும் பின்வருவனவற்றில் ஒன்றாக தீர்க்கப்படுகிறது:

  • "allow": ஒப்புதல் இல்லாமல் இயக்கவும்
  • "ask": ஒப்புதலுக்காக கேட்கவும்
  • "deny": செயலைத் தடுக்கவும்

கட்டமைப்பு

நீங்கள் அனுமதிகளை உலகளவில் (* உடன்) அமைக்கலாம், மேலும் குறிப்பிட்ட கருவிகளை மேலெழுதலாம்.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "*": "ask",
    "bash": "allow",
    "edit": "deny"
  }
}

நீங்கள் அனைத்து அனுமதிகளையும் ஒரே நேரத்தில் அமைக்கலாம்:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": "allow"
}

நுணுக்கமான விதிகள் (பொருள் தொடரியல்)

பெரும்பாலான அனுமதிகளுக்கு, கருவி உள்ளீட்டின் அடிப்படையில் வெவ்வேறு செயல்களைப் பயன்படுத்த நீங்கள் ஒரு பொருளைப் பயன்படுத்தலாம்.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "bash": {
      "*": "ask",
      "git *": "allow",
      "npm *": "allow",
      "rm *": "deny",
      "grep *": "allow"
    },
    "edit": {
      "*": "deny",
      "packages/web/src/content/docs/*.mdx": "allow"
    }
  }
}

விதிகள் முறைமை பொருத்தத்தால் மதிப்பீடு செய்யப்படுகின்றன, கடைசியாக பொருந்தும் விதி வெற்றி பெறும். ஒரு பொதுவான முறைமை என்னவென்றால், catch-all "*" விதியை முதலில் வைத்து, அதற்குப் பிறகு குறிப்பிட்ட விதிகளை வைப்பது.

வைல்ட்கார்டுகள்

அனுமதி முறைமைகள் எளிய வைல்ட்கார்டு பொருத்தத்தைப் பயன்படுத்துகின்றன:

  • * எந்த எழுத்துக்களின் பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்டவற்றை பொருத்துகிறது
  • ? சரியாக ஒரு எழுத்தை பொருத்துகிறது
  • மற்ற அனைத்து எழுத்துகளும் நேரடியாக பொருத்தப்படுகின்றன

வீட்டு அடைவு விரிவாக்கம்

உங்கள் வீட்டு அடைவைக் குறிப்பிட ஒரு முறைமையின் தொடக்கத்தில் ~ அல்லது $HOME ஐப் பயன்படுத்தலாம். இது external_directory விதிகளுக்கு குறிப்பாக பயனுள்ளதாக இருக்கும்.

  • ~/projects/* -> /Users/username/projects/*
  • $HOME/projects/* -> /Users/username/projects/*
  • ~ -> /Users/username

வெளிப்புற அடைவுகள்

Dropstone தொடங்கப்பட்ட வேலை அடைவுக்கு வெளியே உள்ள பாதைகளைத் தொடும் கருவி அழைப்புகளை அனுமதிக்க external_directory ஐப் பயன்படுத்தவும். இது பாதையை உள்ளீடாக எடுக்கும் எந்த கருவிக்கும் பொருந்தும் (எடுத்துக்காட்டாக read, edit, glob, grep, மற்றும் பல bash கட்டளைகள்).

வீட்டு விரிவாக்கம் ( ~/... போன்றவை) ஒரு முறைமை எழுதப்படும் விதத்தை மட்டுமே பாதிக்கிறது. இது ஒரு வெளிப்புற பாதையை தற்போதைய பணியிடத்தின் பகுதியாக மாற்றாது, எனவே வேலை அடைவுக்கு வெளியே உள்ள பாதைகள் இன்னும் external_directory வழியாக அனுமதிக்கப்பட வேண்டும்.

எடுத்துக்காட்டாக, இது ~/projects/personal/ கீழ் உள்ள அனைத்தையும் அணுக அனுமதிக்கிறது:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "external_directory": {
      "~/projects/personal/**": "allow"
    }
  }
}

இங்கு அனுமதிக்கப்பட்ட எந்த அடைவும் தற்போதைய பணியிடத்தின் அதே இயல்புநிலைகளைப் பெறுகிறது. [read இயல்புநிலையாக allow ஆக இருப்பதால்](#defaults), மேலெழுதப்படாவிட்டால் external_directory` கீழ் உள்ள உள்ளீடுகளுக்கும் வாசிப்புகள் அனுமதிக்கப்படுகின்றன. இந்த பாதைகளில் ஒரு கருவி கட்டுப்படுத்தப்பட வேண்டும்போது வெளிப்படையான விதிகளைச் சேர்க்கவும், எடுத்துக்காட்டாக வாசிப்புகளை வைத்திருக்கும்போது திருத்தங்களைத் தடுக்க:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "external_directory": {
      "~/projects/personal/**": "allow"
    },
    "edit": {
      "~/projects/personal/**": "deny"
    }
  }
}

பட்டியலை நம்பகமான பாதைகளில் குவிய வைக்கவும், மற்ற கருவிகளுக்கு (எடுத்துக்காட்டாக bash) தேவையான கூடுதல் அனுமதி அல்லது மறுப்பு விதிகளை அடுக்கவும்.


கிடைக்கக்கூடிய அனுமதிகள்

Dropstone அனுமதிகள் கருவி பெயரால் விசைப்படுத்தப்படுகின்றன, மேலும் இரண்டு பாதுகாப்பு காவலர்களும்:

  • read: ஒரு கோப்பை வாசித்தல் (கோப்பு பாதையை பொருத்துகிறது)
  • edit: அனைத்து கோப்பு மாற்றங்களும் (edit, write, patch ஐ உள்ளடக்கியது)
  • glob: கோப்பு குளோபிங் (குளோப் முறைமையை பொருத்துகிறது)
  • grep: உள்ளடக்க தேடல் (ரீஜெக்ஸ் முறைமையை பொருத்துகிறது)
  • bash: ஷெல் கட்டளைகளை இயக்குதல் (git status --porcelain போன்ற பகுப்பாய்வு செய்யப்பட்ட கட்டளைகளை பொருத்துகிறது)
  • task: துணை முகவர்களைத் தொடங்குதல் (துணை முகவர் வகையை பொருத்துகிறது)
  • skill: ஒரு திறனை ஏற்றுதல் (திறன் பெயரை பொருத்துகிறது)
  • lsp: LSP வினவல்களை இயக்குதல் (தற்போது நுணுக்கமற்றது)
  • question: செயல்பாட்டின் போது பயனரிடம் கேள்விகள் கேட்பது
  • webfetch: ஒரு URL ஐப் பெறுதல் (URL ஐ பொருத்துகிறது)
  • websearch: வலை தேடல் (வினவலை பொருத்துகிறது)
  • external_directory: ஒரு கருவி திட்ட வேலை அடைவுக்கு வெளியே உள்ள பாதைகளைத் தொடும்போது தூண்டப்படுகிறது
  • doom_loop: அதே கருவி அழைப்பு ஒரே உள்ளீட்டுடன் 3 முறை மீண்டும் மீண்டும் செய்யப்படும்போது தூண்டப்படுகிறது

இயல்புநிலைகள்

நீங்கள் எதையும் குறிப்பிடவில்லை என்றால், இயல்புநிலை build முகவர் எல்லாவற்றிற்கும் முன்பு கேட்கிறது. ஒப்புதல் என்பது விதிவிலக்கு அல்ல, இயல்புநிலை:

{
  "permission": {
    "*": "ask",
    "read": {
      "*": "ask",
      "*.env": "ask",
      "*.env.*": "ask",
      "*.env.example": "ask"
    },
    "external_directory": { "*": "ask" },
    "question": "deny",
    "plan_enter": "deny",
    "plan_exit": "deny",
    "mode_switch": "deny"
  }
}

நீங்கள் ஏற்கனவே அங்கீகரித்த அடைவுகள் அமர்வின் எஞ்சிய பகுதிக்கு external_directory இல் "allow" ஆக சேர்க்கப்படுகின்றன.

உங்கள் கட்டமைப்பு இந்த இயல்புநிலைகளின் மேல் இணைக்கப்படுகிறது, மேலும் உங்கள் விதிகள் வெற்றி பெறுகின்றன. இது அவற்றை மாற்றாது: edit"allow" ஆக அமைப்பது read"ask" இல் விட்டுவிடுகிறது, எனவே நீங்கள் மாற்ற விரும்பும் ஒவ்வொரு அனுமதியையும் பெயரிடுங்கள்.

accept all முகவர் அதற்கு பதிலாக "*": "allow" இலிருந்து தொடங்குகிறது, external_directory முழுமையாக அனுமதிக்கப்படுகிறது. .env மற்றும் .env.* வாசிப்புகள் இன்னும் கேட்கின்றன, ஏனெனில் ஒரு இயக்கத்தை தானாக அங்கீகரிப்பது ரகசியங்களை ஒப்படைக்க ஒப்புக்கொள்வதற்கு சமமானதல்ல.


தலை இல்லாத மற்றும் சேவையக முறை

ஊடாடும் வகையில், "ask" பாதிப்பில்லாதது: நீங்கள் கேட்கப்படுவீர்கள் மற்றும் அங்கீகரிக்கிறீர்கள். dropstone serve கீழ், CI இல், அல்லது விசைப்பலகையில் நபர் இல்லாத வேறு எங்கும், கேட்க யாரும் இல்லை, எனவே அழைப்பு "status": "running" இல் அமர்ந்து கோரிக்கை தோல்வியடைவதற்கு பதிலாக தொங்குகிறது. நேர வரம்பு இல்லை மற்றும் பிடிக்க பிழை இல்லை.

build முகவர் எல்லாவற்றிற்கும் முன்பு கேட்பதால், இது ஒரு விளிம்பு வழக்கு அல்ல, இயல்புநிலை விளைவு. ஒரு பகுதி கட்டமைப்பு உங்களை காப்பாற்றாது: edit ஐ அனுமதிப்பது read"ask" இல் விட்டுவிடுகிறது, மேலும் முகவர் ஒரு கோப்பைத் திறக்கும் முதல் முறை இயக்கம் தொங்குகிறது.

அதை சரிசெய்ய இரண்டு வழிகள். accept all முகவரை இயக்கவும், இது "*": "allow" இலிருந்து தொடங்குகிறது:

curl -X POST ".../session/$SID/message" -d '{ "agent": "accept all", ... }'

அல்லது build இல் இருந்து முழு அனுமதி பட்டியலைக் கூறவும், இயல்புநிலையாக மறுத்து, பின்னர் வெளியிடப்பட்ட ஒரு கருவி உங்கள் இயக்கங்களை அமைதியாக தொங்கவிட முடியாது:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "*": "deny",
    "read": "allow",
    "edit": "allow",
    "glob": "allow",
    "grep": "allow",
    "bash": "allow"
  }
}

வேலைக்கு உண்மையில் தேவையானதற்கு அதை சுருக்கவும். வாசித்து அறிக்கை செய்யும் ஒரு முகவருக்கு edit அல்லது bash வைத்திருக்க எந்த காரணமும் இல்லை.

accept all இன்னும் .env மற்றும் .env.* வாசிப்பதற்கு முன் கேட்கிறது என்பதை கவனிக்கவும். ஒரு கண்காணிப்பு இல்லாத இயக்கம் ஒன்றை வாசிக்க வேண்டுமானால், அதை வெளிப்படையாக அனுமதித்து அதைப் பற்றி வேண்டுமென்றே இருங்கள்.

Note

ஒரு தலை இல்லாத இயக்கம் வெளியீட்டை உருவாக்குவதை நிறுத்தி ஒருபோதும் திரும்பவில்லை என்றால், GET /session/:id/message உடன் அமர்வில் கடைசி செய்தியை சரிபார்க்கவும். "status": "running" இல் சிக்கியிருக்கும் ஒரு கருவி பகுதி இந்த பிரச்சனை, மெதுவான மாதிரி அல்ல.


"Ask" என்ன செய்கிறது

Dropstone ஒப்புதலுக்காக கேட்கும்போது, UI மூன்று முடிவுகளை வழங்குகிறது:

  • once: இந்த கோரிக்கையை மட்டும் அங்கீகரிக்கவும்
  • always: பரிந்துரைக்கப்பட்ட முறைமைகளுடன் பொருந்தும் எதிர்கால கோரிக்கைகளை அங்கீகரிக்கவும் (தற்போதைய Dropstone அமர்வின் எஞ்சிய பகுதிக்கு)
  • reject: கோரிக்கையை மறுக்கவும்

always அங்கீகரிக்கும் முறைமைகளின் தொகுப்பு கருவியால் வழங்கப்படுகிறது (எடுத்துக்காட்டாக, bash அங்கீகாரங்கள் பொதுவாக git status* போன்ற பாதுகாப்பான கட்டளை முன்னொட்டை வெள்ளை பட்டியலிடுகின்றன).


முகவர்கள்

நீங்கள் ஒவ்வொரு முகவருக்கும் அனுமதிகளை மேலெழுதலாம். முகவர் அனுமதிகள் உலகளாவிய கட்டமைப்புடன் இணைக்கப்படுகின்றன, மேலும் முகவர் விதிகள் முன்னுரிமை பெறுகின்றன. முகவர் அனுமதிகள் பற்றி மேலும் அறிக.

Note

மேலும் விரிவான முறைமை பொருத்த எடுத்துக்காட்டுகளுக்கு மேலே உள்ள நுணுக்கமான விதிகள் (பொருள் தொடரியல்) பகுதியைப் பார்க்கவும்.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "bash": {
      "*": "ask",
      "git *": "allow",
      "git commit *": "deny",
      "git push *": "deny",
      "grep *": "allow"
    }
  },
  "agent": {
    "build": {
      "permission": {
        "bash": {
          "*": "ask",
          "git *": "allow",
          "git commit *": "ask",
          "git push *": "deny",
          "grep *": "allow"
        }
      }
    }
  }
}

நீங்கள் Markdown இல் முகவர் அனுமதிகளையும் கட்டமைக்கலாம்:

---
description: திருத்தங்கள் இல்லாமல் குறியீடு மதிப்பாய்வு
mode: subagent
permission:
  edit: deny
  bash: ask
  webfetch: deny
---

குறியீட்டை மட்டும் பகுப்பாய்வு செய்து மாற்றங்களை பரிந்துரைக்கவும்.

Tip

வாதங்களுடன் கட்டளைகளுக்கு முறைமை பொருத்தத்தைப் பயன்படுத்தவும். "grep *" grep pattern file.txt ஐ அனுமதிக்கிறது, அதே நேரத்தில் "grep" மட்டும் அதைத் தடுக்கும். git status போன்ற கட்டளைகள் இயல்புநிலை நடத்தைக்கு வேலை செய்கின்றன, ஆனால் வாதங்கள் அனுப்பப்படும்போது வெளிப்படையான அனுமதி ( "git status *" போன்றவை) தேவைப்படுகிறது.

Ctrl+I