drydock-cli 2.7.0__tar.gz → 2.7.1__tar.gz
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.
- drydock_cli-2.7.1/.auto_release.lock +1 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/PKG-INFO +1 -1
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/pyproject.toml +1 -1
- drydock_cli-2.7.1/research/config_best.toml +147 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/domain_spec.md +19 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/experimenter.py +42 -13
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/proposer.py +58 -1
- drydock_cli-2.7.1/research/results.tsv +45 -0
- drydock_cli-2.7.0/research/config_best.toml → drydock_cli-2.7.1/research/staged/exp_1776807445_0002.toml +2 -1
- drydock_cli-2.7.1/research/staged/exp_1776807750_0003.toml +146 -0
- drydock_cli-2.7.1/research/staged/exp_1776808098_0004.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776808492_0005.toml +146 -0
- drydock_cli-2.7.1/research/staged/exp_1776820249_0001.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776820673_0002.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776821040_0003.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776821477_0004.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776821854_0005.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776822269_0006.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776822696_0007.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776823138_0008.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776823585_0009.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776823944_0010.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776824339_0011.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776824782_0012.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776825164_0001.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776825493_0002.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776825824_0003.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776826146_0004.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776826467_0005.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776826797_0006.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776827130_0007.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776827455_0008.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776827776_0009.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776828107_0010.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776828439_0011.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776828760_0012.toml +147 -0
- drydock_cli-2.7.1/research/staged/exp_1776829085_0013.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776829414_0014.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776829750_0015.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776830082_0016.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776830402_0017.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776830726_0018.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776831046_0019.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776831369_0020.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776831700_0021.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776832036_0022.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776832354_0023.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776832680_0024.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776833002_0025.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776833328_0026.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776833652_0027.toml +148 -0
- drydock_cli-2.7.1/research/staged/exp_1776833976_0028.toml +148 -0
- drydock_cli-2.7.1/research/traces/exp_1776807135_0001/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776807135_0001/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776807135_0001/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776807445_0002/messages.jsonl +46 -0
- drydock_cli-2.7.1/research/traces/exp_1776807445_0002/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776807445_0002/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776807750_0003/messages.jsonl +58 -0
- drydock_cli-2.7.1/research/traces/exp_1776807750_0003/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776807750_0003/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776808098_0004/messages.jsonl +45 -0
- drydock_cli-2.7.1/research/traces/exp_1776808098_0004/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776808098_0004/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776808098_0004/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776808492_0005/messages.jsonl +46 -0
- drydock_cli-2.7.1/research/traces/exp_1776808492_0005/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776808492_0005/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776808492_0005/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776820249_0001/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776820249_0001/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776820249_0001/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776820249_0001/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776820673_0002/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776820673_0002/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776820673_0002/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776820673_0002/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776821040_0003/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776821040_0003/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776821040_0003/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776821040_0003/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776821477_0004/messages.jsonl +59 -0
- drydock_cli-2.7.1/research/traces/exp_1776821477_0004/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776821477_0004/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776821477_0004/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776821854_0005/messages.jsonl +59 -0
- drydock_cli-2.7.1/research/traces/exp_1776821854_0005/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776821854_0005/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776821854_0005/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776822269_0006/messages.jsonl +42 -0
- drydock_cli-2.7.1/research/traces/exp_1776822269_0006/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776822269_0006/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776822269_0006/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776822696_0007/messages.jsonl +44 -0
- drydock_cli-2.7.1/research/traces/exp_1776822696_0007/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776822696_0007/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776822696_0007/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776823138_0008/messages.jsonl +47 -0
- drydock_cli-2.7.1/research/traces/exp_1776823138_0008/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776823138_0008/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776823138_0008/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776823585_0009/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776823585_0009/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776823585_0009/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776823585_0009/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776823944_0010/messages.jsonl +46 -0
- drydock_cli-2.7.1/research/traces/exp_1776823944_0010/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776823944_0010/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776823944_0010/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776824339_0011/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776824339_0011/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776824339_0011/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776824339_0011/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776825164_0001/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776825164_0001/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776825164_0001/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776825164_0001/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776825493_0002/messages.jsonl +44 -0
- drydock_cli-2.7.1/research/traces/exp_1776825493_0002/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776825493_0002/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776825493_0002/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776825824_0003/messages.jsonl +44 -0
- drydock_cli-2.7.1/research/traces/exp_1776825824_0003/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776825824_0003/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776825824_0003/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776826146_0004/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776826146_0004/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776826146_0004/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776826146_0004/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776826467_0005/messages.jsonl +47 -0
- drydock_cli-2.7.1/research/traces/exp_1776826467_0005/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776826467_0005/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776826467_0005/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776826797_0006/messages.jsonl +41 -0
- drydock_cli-2.7.1/research/traces/exp_1776826797_0006/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776826797_0006/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776826797_0006/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776827130_0007/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776827130_0007/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776827130_0007/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776827130_0007/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776827455_0008/messages.jsonl +58 -0
- drydock_cli-2.7.1/research/traces/exp_1776827455_0008/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776827455_0008/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776827455_0008/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776827776_0009/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776827776_0009/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776827776_0009/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776827776_0009/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776828107_0010/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776828107_0010/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776828107_0010/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776828107_0010/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776828439_0011/messages.jsonl +45 -0
- drydock_cli-2.7.1/research/traces/exp_1776828439_0011/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776828439_0011/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776828439_0011/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776828760_0012/messages.jsonl +46 -0
- drydock_cli-2.7.1/research/traces/exp_1776828760_0012/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776828760_0012/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776828760_0012/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776829085_0013/messages.jsonl +59 -0
- drydock_cli-2.7.1/research/traces/exp_1776829085_0013/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776829085_0013/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776829085_0013/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776829414_0014/messages.jsonl +42 -0
- drydock_cli-2.7.1/research/traces/exp_1776829414_0014/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776829414_0014/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776829414_0014/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776829750_0015/messages.jsonl +43 -0
- drydock_cli-2.7.1/research/traces/exp_1776829750_0015/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776829750_0015/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776829750_0015/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776830082_0016/messages.jsonl +42 -0
- drydock_cli-2.7.1/research/traces/exp_1776830082_0016/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776830082_0016/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776830082_0016/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776830402_0017/messages.jsonl +45 -0
- drydock_cli-2.7.1/research/traces/exp_1776830402_0017/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776830402_0017/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776830402_0017/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776830726_0018/messages.jsonl +45 -0
- drydock_cli-2.7.1/research/traces/exp_1776830726_0018/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776830726_0018/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776830726_0018/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776831046_0019/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776831046_0019/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776831046_0019/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776831046_0019/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776831369_0020/messages.jsonl +37 -0
- drydock_cli-2.7.1/research/traces/exp_1776831369_0020/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776831369_0020/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776831369_0020/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776831700_0021/messages.jsonl +43 -0
- drydock_cli-2.7.1/research/traces/exp_1776831700_0021/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776831700_0021/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776831700_0021/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776832036_0022/messages.jsonl +46 -0
- drydock_cli-2.7.1/research/traces/exp_1776832036_0022/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776832036_0022/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776832036_0022/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776832354_0023/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776832354_0023/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776832354_0023/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776832354_0023/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776832680_0024/messages.jsonl +46 -0
- drydock_cli-2.7.1/research/traces/exp_1776832680_0024/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776832680_0024/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776832680_0024/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776833002_0025/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776833002_0025/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776833002_0025/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776833002_0025/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776833328_0026/messages.jsonl +56 -0
- drydock_cli-2.7.1/research/traces/exp_1776833328_0026/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776833328_0026/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776833328_0026/summary.json +14 -0
- drydock_cli-2.7.1/research/traces/exp_1776833652_0027/messages.jsonl +46 -0
- drydock_cli-2.7.1/research/traces/exp_1776833652_0027/meta.json +859 -0
- drydock_cli-2.7.1/research/traces/exp_1776833652_0027/rec_check.jsonl +0 -0
- drydock_cli-2.7.1/research/traces/exp_1776833652_0027/summary.json +14 -0
- drydock_cli-2.7.1/scripts/research_babysitter.sh +99 -0
- drydock_cli-2.7.1/tests/backend/__init__.py +0 -0
- drydock_cli-2.7.1/tests/cli/textual_ui/__init__.py +0 -0
- drydock_cli-2.7.1/tests/mock/__init__.py +0 -0
- drydock_cli-2.7.0/.auto_release.lock +0 -1
- drydock_cli-2.7.0/research/results.tsv +0 -2
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.claude/scheduled_tasks.lock +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/CODEOWNERS +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/build-and-upload.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/ci.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/issue-labeler.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.github/workflows/release.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.gitignore +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.pre-commit-config.yaml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.python-version +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.typos.toml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.vscode/extensions.json +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.vscode/launch.json +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/.vscode/settings.json +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/AGENTS.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/Admiral.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/BASELINE_412.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/CHANGELOG.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/CLAUDE.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/CONTRIBUTING.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/DEPLOYMENT.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/Drydock_rebrand.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/LICENSE +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/MODEL_SHORTCOMINGS.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/NOTICE +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/OVERNIGHT_PROGRESS.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/OVERNIGHT_REPORT_2026_04_13.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/PRD.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/README.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/action.yml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/README.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results1.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results13.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results14.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results15.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results16.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results17.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results18.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results19.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results2.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results20.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results3.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results4.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results5.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results6.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results7.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results8.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results9.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/baseline_history/results_evolved_v1.tsv +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/distribution/zed/LICENSE +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/distribution/zed/extension.toml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/distribution/zed/icons/mistral_vibe.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/docs/README.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/docs/acp-setup.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/docs/proxy-setup.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/acp_agent_loop.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/acp_logger.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/entrypoint.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/base.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/bash.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/todo.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/tools/session_update.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/acp/utils.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/detectors.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/history.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/interventions.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/llm_analyzer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/metrics.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/opus_escalator.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/persistence.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/policy.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/proposer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/stager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/task_classifier.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/tuning.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/validator.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/admiral/worker.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/base.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/path_completion.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/autocompletion/slash_command.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/cli.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/clipboard.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/commands.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/entrypoint.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/history_manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/plan_offer/adapters/http_whoami_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/plan_offer/decide_plan_offer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/plan_offer/ports/whoami_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/terminal_setup.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/ansi_markdown.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/app.tcss +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/external_editor.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/handlers/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/handlers/event_handler.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/ports/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/notifications/ports/notification_port.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/approval_app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/banner/banner.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/banner/petit_chat.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/braille_renderer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/body.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/completion_manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/completion_popup.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/container.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/chat_input/text_area.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/checkpoint_picker.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/compact.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/config_app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/context_progress.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/load_more.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/loading.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/messages.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/no_markup_static.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/path_display.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/proxy_setup_app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/question_app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/session_picker.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/spinner.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/status_message.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/teleport_message.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/tool_widgets.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/tools.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/widgets/vscode_compat.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/history.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/history_windowing.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/textual_ui/windowing/state.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/adapters/filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/adapters/github_update_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/adapters/pypi_update_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/ports/update_cache_repository.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/ports/update_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/update.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/cli/update_notifier/whats_new.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agent_loop.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agents/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agents/manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/agents/models.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/auth/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/auth/crypto.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/auth/github.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/completers.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/ignore_rules.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/indexer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/store.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/file_indexer/watcher.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/fuzzy.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/path_prompt.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/autocompletion/path_prompt_adapter.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/build_orchestrator.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/checkpoint.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/_settings.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/doctor.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/harness_files/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/harness_files/_harness_manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/config/harness_files/_paths.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/consultant.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/drydock_states.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/hooks.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/anthropic.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/base.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/factory.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/generic.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/mistral.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/reasoning_adapter.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/backend/vertex.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/exceptions.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/format.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/message_utils.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/llm/types.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/logger.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/middleware.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/output_formatters.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/_drydock_home.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/_local_config_walk.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/paths/conventions.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/plan_session.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/plugins.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/programmatic.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/builder.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/cli.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/compact.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/dangerous_directory.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/diagnostic.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/explore.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/gemma4.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/planner.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/project_context.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/prompts/tests.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/proxy_setup.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/agent_memory.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/checkpoints.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/session_loader.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/session_logger.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/session_migration.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session/state_file.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/session_checker.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/models.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/skills/parser.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/slug.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/system_prompt.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/telemetry/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/telemetry/send.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/errors.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/git.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/nuage.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/teleport.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/teleport/types.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/base.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/_task_manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/ask_user_question.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/bash.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/cron.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/exit_plan_mode.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/glob_tool.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/grep.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/invoke_skill.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/lsp.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/mcp_resources.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/notebook_edit.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/powershell.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/ask_user_question.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/bash.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/cron.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/glob.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/grep.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/invoke_skill.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/lsp.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/mcp_resources.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/notebook_edit.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/powershell.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/read_file.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/search_replace.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/swe_bench.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/task.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/task_manager.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/todo.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/tool_search.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/webfetch.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/websearch.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/worktree.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/prompts/write_file.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/read_file.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/search_replace.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/task.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/todo.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/tool_search.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/webfetch.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/websearch.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/worktree.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/builtins/write_file.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/injection_guard.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp/registry.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp/tools.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/mcp_sampling.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/ui.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/tools/utils.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/trusted_folders.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/types.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/core/utils.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/base.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/onboarding.tcss +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/api_key.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/choice.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/local_model.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/onboarding/screens/welcome.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/trusted_folders/trust_folder_dialog.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/setup/trusted_folders/trust_folder_dialog.tcss +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/api-design/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/audit-tests/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/batch/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/commit-code/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/context-summary/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/create-presentation/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/deep-research/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/deploy/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/diff-review/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/doc-gen/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/explain-code/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/explore-code/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/fix-issue/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/git-ops/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/init-project/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/investigate/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/loop/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/migrate/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/perf-analyze/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/plan-impl/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/pr-review/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/refactor/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/regex-help/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/review/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/security-review/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/ship/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/simplify/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/strong-tests/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/skills/test-verify/SKILL.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock/whats_new.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock-acp.spec +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/drydock_terms.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/flake.lock +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/flake.nix +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/README.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/config_base.toml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/kernel.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/mini_prd.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/mini_prompts.txt +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776806574_0001.toml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776806920_0002.toml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776807004_0001.toml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/staged/exp_1776807135_0001.toml +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/traces/exp_1776806574_0001/rec_check.jsonl +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/research/traces/exp_1776806574_0001/summary.json +0 -0
- /drydock_cli-2.7.0/tests/backend/__init__.py → /drydock_cli-2.7.1/research/traces/exp_1776807135_0001/rec_check.jsonl +0 -0
- /drydock_cli-2.7.0/tests/cli/textual_ui/__init__.py → /drydock_cli-2.7.1/research/traces/exp_1776807445_0002/rec_check.jsonl +0 -0
- /drydock_cli-2.7.0/tests/mock/__init__.py → /drydock_cli-2.7.1/research/traces/exp_1776807750_0003/rec_check.jsonl +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/README.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/admiral_probe.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/audit_sampler.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/auto_generate_tests.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/auto_release.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/auto_test_loop.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/backup.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/bump_version.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/comprehensive_loop.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/deploy_to_github.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/discover_cli_tools.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/evolve_tests.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/gen_2000_prompts.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/install.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/llm_balancer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/mega_loop.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/meta_ralph_loop.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/monitor_swebench.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/monitor_test_battery.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/notify_release.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/oss_task_harness.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/overnight_agents_test.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/poll_issues.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/port_task.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/prepare_release.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/publish_to_pypi.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/ralph_loop.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/session_loop_audit.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_interactive.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_regression.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_suite.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/shakedown_variance.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_babysitter.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_50.txt +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_realuser.txt +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_tool_agent.txt +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_prompts_tool_agent_2000.txt +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_shakedown.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_telegram_status.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/stress_watcher.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/telegram_bot.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_bank.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_full.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_smoke.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/test_tui_path.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/tui_test.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/scripts/vllm_failover.sh +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/conftest.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_acp.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_agent_thought.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_bash.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_compact_session_updates.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_content.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_initialize.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_list_sessions.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_load_session.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_multi_session.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_new_session.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_proxy_setup_acp.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_read_file.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_search_replace.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_set_config_option.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_set_mode.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_set_model.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_tool_call_session_update.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_utils.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/acp/test_write_file.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_file_indexer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_fuzzy.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_completer_fuzzy.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_completer_recursive.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_completion_controller.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_path_prompt_transformer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_slash_command_controller.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/autocompletion/test_ui_chat_autocompletion.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/data/__init__.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/data/fireworks.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/data/mistral.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_anthropic_adapter.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_backend.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_reasoning_adapter.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/backend/test_vertex_anthropic_adapter.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/plan_offer/test_decide_plan_offer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/plan_offer/test_http_whoami_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_bell_notifications.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_braille_renderer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_clipboard.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_commands.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_copy_shortcuts.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_external_editor.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_no_markup_static.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_question_app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_spinner.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_switching_mode.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_clipboard_notifications.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_session_incremental_renderer.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_session_resume.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/test_ui_skill_dispatch.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/cli/textual_ui/test_session_picker.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/conftest.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_agents.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_auth_crypto.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_auth_github.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_config_load_dotenv.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_config_paths.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_config_resolution.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_file_logging.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_plan_session.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_proxy_setup.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_slug.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_telemetry_send.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_teleport_git.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_teleport_nuage.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_teleport_service.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_trusted_folders.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/core/test_utils.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/common.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/conftest.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/mock_server.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/test_cli_tui_onboarding.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/test_cli_tui_streaming.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/e2e/test_cli_tui_tool_approval.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/fixtures/doc_qa_system_prd.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/mock/mock_backend_factory.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/mock/mock_entrypoint.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/mock/utils.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/onboarding/test_run_onboarding.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/onboarding/test_ui_onboarding.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/session/test_session_loader.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/session/test_session_logger.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/session/test_session_migration.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/conftest.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/test_manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/test_models.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/skills/test_parser.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/base_snapshot_test_app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/conftest.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/snap_compare.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_ask_user_question.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_basic_conversation.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_modes.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_proxy_setup.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_question_app.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_reasoning_content.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_release_update_notification.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_session_resume.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_teleport.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/snapshots/test_ui_snapshot_whats_new.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/stubs/fake_backend.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/stubs/fake_client.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/stubs/fake_tool.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_admiral.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_admiral_phase3.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_auto_compact.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_backend.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_observer_streaming.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_stats.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_tasks.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agent_tool_call.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_agents.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_build.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_debug.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_multiagent.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_prd.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_prd_extended.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_tools.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_bank_update.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_build_projects.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_checkpoint.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_cli_programmatic_preload.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_current_bugs.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_drydock_regression.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_drydock_tasks.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_full_regression.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_history_manager.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_integration.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_issue_fixes.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_loop_detection.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_message_id.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_message_merging.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_middleware.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_multi_agent.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_real_failures.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_real_issues.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_real_workflow.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_reasoning_content.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_smoke.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_system_prompt.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_tagged_text.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_tool_args.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_ui_external_editor.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_ui_input_history.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_user_issues.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/test_workloads.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/testbank_helpers.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_ask_user_question.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_bash.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_exit_plan_mode.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_grep.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_invoke_context.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_manager_get_tool_config.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_mcp.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_mcp_sampling.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_task.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_ui_bash_execution.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_webfetch.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/tools/test_websearch.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/adapters/fake_update_cache_repository.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/adapters/fake_update_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_do_update.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_filesystem_update_cache_repository.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_github_update_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_pypi_update_gateway.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_ui_update_notification.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_update_use_case.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/tests/update_notifier/test_whats_new.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/uv.lock +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/README.md +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/cli_subcommand_dispatch.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/lookup.json +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/sql_parser.py +0 -0
- {drydock_cli-2.7.0 → drydock_cli-2.7.1}/worked_examples/tree_walking_interpreter.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2859910
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drydock-cli
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.1
|
|
4
4
|
Summary: Local-first CLI coding agent — tested with Gemma 4 26B via vLLM
|
|
5
5
|
Project-URL: Homepage, https://github.com/fbobe321/drydock
|
|
6
6
|
Project-URL: Repository, https://github.com/fbobe321/drydock
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
[target]
|
|
2
|
+
model = "mistral-vibe-cli-latest"
|
|
3
|
+
task = "unknown"
|
|
4
|
+
|
|
5
|
+
[[knob]]
|
|
6
|
+
name = "per_prompt_budget_sec"
|
|
7
|
+
default = 300
|
|
8
|
+
min = 300
|
|
9
|
+
max = 3600
|
|
10
|
+
mutable = true
|
|
11
|
+
why = "Hard ceiling on a single user turn. Too low wastes work; too high lets loops run wild."
|
|
12
|
+
value = 900
|
|
13
|
+
|
|
14
|
+
[[knob]]
|
|
15
|
+
name = "hard_stop_tool_calls"
|
|
16
|
+
default = 100
|
|
17
|
+
min = 30
|
|
18
|
+
max = 250
|
|
19
|
+
mutable = true
|
|
20
|
+
why = "HARD_STOP_CALLS in agent_loop. Cap on tool-call depth per user turn."
|
|
21
|
+
|
|
22
|
+
[[knob]]
|
|
23
|
+
name = "wrap_up_warn_at"
|
|
24
|
+
default = 40
|
|
25
|
+
min = 10
|
|
26
|
+
max = 100
|
|
27
|
+
mutable = true
|
|
28
|
+
why = "First progressive nudge. Earlier = tighter turns, may lose quality."
|
|
29
|
+
|
|
30
|
+
[[knob]]
|
|
31
|
+
name = "stop_now_warn_at"
|
|
32
|
+
default = 60
|
|
33
|
+
min = 20
|
|
34
|
+
max = 150
|
|
35
|
+
mutable = true
|
|
36
|
+
why = "Second progressive nudge. Gemma often ignores the wrap-up; this is the harder prod."
|
|
37
|
+
|
|
38
|
+
[[knob]]
|
|
39
|
+
name = "temperature"
|
|
40
|
+
default = 0.3
|
|
41
|
+
min = 0.0
|
|
42
|
+
max = 0.9
|
|
43
|
+
mutable = true
|
|
44
|
+
why = "Sampling temperature. Lower = more deterministic; higher = more exploration."
|
|
45
|
+
value = 0.1
|
|
46
|
+
|
|
47
|
+
[[knob]]
|
|
48
|
+
name = "loop_detector_window"
|
|
49
|
+
default = 3
|
|
50
|
+
min = 2
|
|
51
|
+
max = 6
|
|
52
|
+
mutable = true
|
|
53
|
+
why = "How many consecutive identical tool calls trigger the loop advisor."
|
|
54
|
+
|
|
55
|
+
[[knob]]
|
|
56
|
+
name = "struggle_threshold"
|
|
57
|
+
default = 20
|
|
58
|
+
min = 10
|
|
59
|
+
max = 40
|
|
60
|
+
mutable = true
|
|
61
|
+
why = "Reads-without-a-write before admiral fires the struggle directive."
|
|
62
|
+
value = 40
|
|
63
|
+
|
|
64
|
+
[env_flags]
|
|
65
|
+
DRYDOCK_AUTO_CONTINUE_DISABLE = "1"
|
|
66
|
+
|
|
67
|
+
[prompts.gemma4]
|
|
68
|
+
source_path = ""
|
|
69
|
+
mutable = true
|
|
70
|
+
why = "Single highest-leverage mutable target. Governs how Gemma 4 interprets every turn."
|
|
71
|
+
|
|
72
|
+
[prompts.cli]
|
|
73
|
+
source_path = ""
|
|
74
|
+
mutable = true
|
|
75
|
+
why = "Alternate non-Gemma system prompt. Rarely the right target but available for cross-model experiments."
|
|
76
|
+
|
|
77
|
+
[[harness_threshold]]
|
|
78
|
+
name = "MAX_CONSECUTIVE_SKIPS_BEFORE_RESET"
|
|
79
|
+
default = 2
|
|
80
|
+
min = 1
|
|
81
|
+
max = 5
|
|
82
|
+
mutable = true
|
|
83
|
+
why = "Force ESC+/clear after N consecutive SKIPs. Lower = aggressive recycling; higher = tolerant of transient wedges."
|
|
84
|
+
|
|
85
|
+
[[harness_threshold]]
|
|
86
|
+
name = "SESSION_RESET_EVERY"
|
|
87
|
+
default = 15
|
|
88
|
+
min = 5
|
|
89
|
+
max = 50
|
|
90
|
+
mutable = true
|
|
91
|
+
why = "Periodic /clear cadence in prompts. Tight cadence bounds context but costs reset overhead every N prompts."
|
|
92
|
+
|
|
93
|
+
[[harness_threshold]]
|
|
94
|
+
name = "SEND_PROMPT_RETRY_COUNT"
|
|
95
|
+
default = 3
|
|
96
|
+
min = 1
|
|
97
|
+
max = 6
|
|
98
|
+
mutable = true
|
|
99
|
+
why = "How many times send_prompt_and_confirm re-types before marking SKIP. Each retry is ~120s."
|
|
100
|
+
|
|
101
|
+
[[harness_threshold]]
|
|
102
|
+
name = "SEND_PROMPT_WAIT_PER_RETRY_SEC"
|
|
103
|
+
default = 120
|
|
104
|
+
min = 30
|
|
105
|
+
max = 300
|
|
106
|
+
mutable = true
|
|
107
|
+
why = "Seconds to wait for user-msg confirmation before retyping. Tighter = faster SKIP, may miss slow prompts."
|
|
108
|
+
|
|
109
|
+
[[admiral_detector]]
|
|
110
|
+
name = "REPEAT_WARNING_THRESHOLD"
|
|
111
|
+
default = 4
|
|
112
|
+
min = 2
|
|
113
|
+
max = 8
|
|
114
|
+
mutable = true
|
|
115
|
+
why = "Consecutive identical tool calls before a WARNING. Lower = early nudge; higher = tolerant of legit repetition."
|
|
116
|
+
|
|
117
|
+
[[admiral_detector]]
|
|
118
|
+
name = "REPEAT_FORCE_STOP_THRESHOLD"
|
|
119
|
+
default = 8
|
|
120
|
+
min = 4
|
|
121
|
+
max = 20
|
|
122
|
+
mutable = true
|
|
123
|
+
why = "Consecutive identical tool calls before FORCE_STOP. Must be >= REPEAT_WARNING_THRESHOLD."
|
|
124
|
+
|
|
125
|
+
[[admiral_detector]]
|
|
126
|
+
name = "EMPTY_RESULT_THRESHOLD"
|
|
127
|
+
default = 3
|
|
128
|
+
min = 2
|
|
129
|
+
max = 6
|
|
130
|
+
mutable = true
|
|
131
|
+
why = "Check 0 (empty-result loop). Fire FORCE_STOP after N identical-call + empty-result in a row."
|
|
132
|
+
|
|
133
|
+
[[admiral_detector]]
|
|
134
|
+
name = "SAME_TOOL_NAME_REPEAT_LIMIT_BASH"
|
|
135
|
+
default = 5
|
|
136
|
+
min = 3
|
|
137
|
+
max = 10
|
|
138
|
+
mutable = true
|
|
139
|
+
why = "Same-tool repetition limit for bash. Different from read/grep which need more headroom."
|
|
140
|
+
|
|
141
|
+
[[admiral_detector]]
|
|
142
|
+
name = "SAME_TOOL_NAME_REPEAT_LIMIT_READ"
|
|
143
|
+
default = 7
|
|
144
|
+
min = 4
|
|
145
|
+
max = 12
|
|
146
|
+
mutable = true
|
|
147
|
+
why = "Same-tool repetition limit for read_file + grep. Investigation tools legitimately repeat more."
|
|
@@ -4,6 +4,25 @@ Produced per stanford-iris-lab/meta-harness ONBOARDING.md template.
|
|
|
4
4
|
First-cut spec; refine as the proposer exposes failure modes the
|
|
5
5
|
current evaluation set doesn't distinguish.
|
|
6
6
|
|
|
7
|
+
## Non-Negotiable: Air-Gap-Safe Proposer
|
|
8
|
+
|
|
9
|
+
Drydock's positioning is **self-hosted AI coding agents for air-gapped
|
|
10
|
+
and regulated environments** (defense/gov vertical, 90-day pilot plan).
|
|
11
|
+
That pitch collapses the moment any component — including the
|
|
12
|
+
self-tuning loop — phones home to a cloud LLM.
|
|
13
|
+
|
|
14
|
+
**The Meta-Harness proposer MUST use the local vLLM endpoint** (the
|
|
15
|
+
same one drydock's TUI uses). The `local` proposer mode is the
|
|
16
|
+
default in `experimenter.py` and `research_babysitter.sh`. The `opus`
|
|
17
|
+
mode exists for development when a stronger reasoner is convenient,
|
|
18
|
+
but it requires `DRYDOCK_RESEARCH_ALLOW_OPUS=1` to actually dispatch
|
|
19
|
+
cloud calls — otherwise it silently falls back to local.
|
|
20
|
+
|
|
21
|
+
Any future change that makes cloud the default (or silently enables
|
|
22
|
+
cloud without the explicit env var) is a regression. See
|
|
23
|
+
`research/proposer.py::propose` — the local-first dispatch is the
|
|
24
|
+
load-bearing guarantee.
|
|
25
|
+
|
|
7
26
|
## Domain Summary
|
|
8
27
|
|
|
9
28
|
**What the user is trying to improve:** drydock's acceptance rate,
|
|
@@ -30,6 +30,7 @@ from __future__ import annotations
|
|
|
30
30
|
|
|
31
31
|
import argparse
|
|
32
32
|
import copy
|
|
33
|
+
import os
|
|
33
34
|
import random
|
|
34
35
|
import shutil
|
|
35
36
|
import signal
|
|
@@ -158,22 +159,40 @@ def mutate_opus(cfg: dict) -> tuple[dict, str] | None:
|
|
|
158
159
|
else:
|
|
159
160
|
return None
|
|
160
161
|
|
|
162
|
+
# Label says "llm" to avoid implying we called Opus even in local
|
|
163
|
+
# mode (proposer transport chooses local-first when ALLOW_OPUS=0).
|
|
164
|
+
# Keeps the results.tsv "note" column truthful when read later.
|
|
161
165
|
if target == "prompt":
|
|
162
166
|
size = len(str(value))
|
|
163
|
-
desc = f"
|
|
167
|
+
desc = f"llm prompt:{name} -> [{size} chars] ({reason})"
|
|
164
168
|
else:
|
|
165
|
-
desc = f"
|
|
169
|
+
desc = f"llm {target}:{name} -> {value} ({reason})"
|
|
166
170
|
return new, desc
|
|
167
171
|
|
|
168
172
|
|
|
169
173
|
def mutate(cfg: dict, rng: random.Random, mode: str) -> tuple[dict, str]:
|
|
170
|
-
"""Dispatch to the requested proposer.
|
|
171
|
-
random if the proposer doesn't deliver.
|
|
172
|
-
|
|
173
|
-
|
|
174
|
+
"""Dispatch to the requested proposer. LLM modes fall back to
|
|
175
|
+
random if the proposer doesn't deliver.
|
|
176
|
+
|
|
177
|
+
`local` and `opus` share the same proposer code; the difference is
|
|
178
|
+
the transport (proposer.py decides based on
|
|
179
|
+
DRYDOCK_RESEARCH_ALLOW_OPUS). `opus` only contacts the cloud if
|
|
180
|
+
the operator explicitly set the env var; otherwise it behaves like
|
|
181
|
+
`local` (which calls the on-box vLLM endpoint).
|
|
182
|
+
"""
|
|
183
|
+
if mode in ("opus", "local"):
|
|
184
|
+
# Hint to the proposer's transport preference via env var.
|
|
185
|
+
# propose() checks this before reaching for the cloud.
|
|
186
|
+
if mode == "opus":
|
|
187
|
+
os.environ["DRYDOCK_RESEARCH_ALLOW_OPUS"] = "1"
|
|
188
|
+
else:
|
|
189
|
+
# Local mode: disable cloud fallback regardless of ambient env.
|
|
190
|
+
os.environ["DRYDOCK_RESEARCH_ALLOW_OPUS"] = "0"
|
|
191
|
+
r = mutate_opus(cfg) # function name is historical; contract unchanged
|
|
174
192
|
if r is not None:
|
|
175
193
|
return r
|
|
176
|
-
print("
|
|
194
|
+
print(f" {mode} mutator returned nothing; falling back to random",
|
|
195
|
+
flush=True)
|
|
177
196
|
return mutate_random(cfg, rng)
|
|
178
197
|
|
|
179
198
|
|
|
@@ -264,12 +283,22 @@ def main() -> int:
|
|
|
264
283
|
ap.add_argument("--cooldown-s", type=float, default=10.0,
|
|
265
284
|
help="Sleep between experiments (lets GPU settle).")
|
|
266
285
|
ap.add_argument("--results-tsv", type=Path, default=DEFAULT_RESULTS)
|
|
267
|
-
ap.add_argument("--proposer", choices=("random", "opus"),
|
|
268
|
-
default="
|
|
269
|
-
help="
|
|
270
|
-
"
|
|
271
|
-
"
|
|
272
|
-
"
|
|
286
|
+
ap.add_argument("--proposer", choices=("random", "local", "opus"),
|
|
287
|
+
default="local",
|
|
288
|
+
help="local = Meta-Harness LLM proposer against the "
|
|
289
|
+
"local vLLM endpoint (drydock's own model). "
|
|
290
|
+
"THIS IS THE DEFAULT. Keeps the self-tuning loop "
|
|
291
|
+
"air-gap-safe — matches the 'self-hosted agents "
|
|
292
|
+
"for regulated environments' positioning. "
|
|
293
|
+
"random = bounded uniform + nudge sampling, no "
|
|
294
|
+
"LLM involved. "
|
|
295
|
+
"opus = cloud proposer via ANTHROPIC_API_KEY or "
|
|
296
|
+
"the `claude` CLI — NOT AIRGAP-SAFE; only use "
|
|
297
|
+
"for development when you want a smarter "
|
|
298
|
+
"reasoner. Also requires setting env "
|
|
299
|
+
"DRYDOCK_RESEARCH_ALLOW_OPUS=1 to actually "
|
|
300
|
+
"dispatch cloud calls. Falls back to random "
|
|
301
|
+
"otherwise.")
|
|
273
302
|
args = ap.parse_args()
|
|
274
303
|
|
|
275
304
|
signal.signal(signal.SIGTERM, _handle_signal)
|
|
@@ -49,11 +49,58 @@ RESEARCH_DIR = Path(__file__).resolve().parent
|
|
|
49
49
|
DRYDOCK_ROOT = RESEARCH_DIR.parent # /data3/drydock — repo root
|
|
50
50
|
OPUS_MODEL = "claude-opus-4-7"
|
|
51
51
|
OPUS_TIMEOUT_SEC = 120
|
|
52
|
+
# Local proposer endpoint. Defaults to the same balancer drydock uses
|
|
53
|
+
# so the proposer is air-gap-compatible — the whole pitch collapses
|
|
54
|
+
# if the self-tuning loop phones home.
|
|
55
|
+
LOCAL_ENDPOINT = os.environ.get("DRYDOCK_RESEARCH_PROPOSER_URL",
|
|
56
|
+
"http://localhost:8001/v1")
|
|
57
|
+
LOCAL_MODEL = os.environ.get("DRYDOCK_RESEARCH_PROPOSER_MODEL", "gemma4")
|
|
58
|
+
LOCAL_TIMEOUT_SEC = 180 # Gemma 4 thinks longer than Opus
|
|
52
59
|
MAX_TRACES_EACH_SIDE = 3 # top-N + bottom-N contrastive
|
|
53
60
|
MAX_TRACE_MESSAGES_CHARS = 4000 # truncate each trace's messages to this
|
|
54
61
|
MAX_SOURCE_EXCERPT_CHARS = 8000 # truncate agent_loop.py to this
|
|
55
62
|
|
|
56
63
|
|
|
64
|
+
def _try_local_llm(prompt: str) -> str | None:
|
|
65
|
+
"""Call the local vLLM endpoint. OpenAI-compatible chat completions.
|
|
66
|
+
|
|
67
|
+
Default proposer transport for air-gap-safe operation. A defense/gov
|
|
68
|
+
prospect cannot use a self-tuning loop that phones home to Anthropic;
|
|
69
|
+
the whole self-tuning pitch collapses the moment a remote API shows
|
|
70
|
+
up in the loop.
|
|
71
|
+
|
|
72
|
+
Uses `httpx` directly (already a drydock transitive dep) rather than
|
|
73
|
+
pulling in the `openai` SDK. Endpoint from
|
|
74
|
+
DRYDOCK_RESEARCH_PROPOSER_URL; model from
|
|
75
|
+
DRYDOCK_RESEARCH_PROPOSER_MODEL (default 'gemma4').
|
|
76
|
+
"""
|
|
77
|
+
try:
|
|
78
|
+
import httpx
|
|
79
|
+
except ImportError:
|
|
80
|
+
print(" proposer: httpx not available — cannot call local LLM",
|
|
81
|
+
file=sys.stderr)
|
|
82
|
+
return None
|
|
83
|
+
url = LOCAL_ENDPOINT.rstrip("/") + "/chat/completions"
|
|
84
|
+
payload = {
|
|
85
|
+
"model": LOCAL_MODEL,
|
|
86
|
+
"max_tokens": 1200,
|
|
87
|
+
"messages": [{"role": "user", "content": prompt}],
|
|
88
|
+
}
|
|
89
|
+
try:
|
|
90
|
+
r = httpx.post(url, json=payload, timeout=LOCAL_TIMEOUT_SEC)
|
|
91
|
+
r.raise_for_status()
|
|
92
|
+
data = r.json()
|
|
93
|
+
choices = data.get("choices") or []
|
|
94
|
+
if not choices:
|
|
95
|
+
return None
|
|
96
|
+
msg = choices[0].get("message") or {}
|
|
97
|
+
content = (msg.get("content") or "").strip()
|
|
98
|
+
return content or None
|
|
99
|
+
except Exception as e:
|
|
100
|
+
print(f" proposer: local LLM call failed: {e}", file=sys.stderr)
|
|
101
|
+
return None
|
|
102
|
+
|
|
103
|
+
|
|
57
104
|
def _try_anthropic_sdk(prompt: str) -> str | None:
|
|
58
105
|
api_key = os.getenv("ANTHROPIC_API_KEY")
|
|
59
106
|
if not api_key:
|
|
@@ -307,7 +354,17 @@ def propose(config_base_path: Path, config_best_path: Path | None,
|
|
|
307
354
|
|
|
308
355
|
prompt = _build_prompt(config_base, config_best, ranked)
|
|
309
356
|
|
|
310
|
-
|
|
357
|
+
# Local-first is non-negotiable: the defense/gov pitch (air-gapped
|
|
358
|
+
# self-tuning agents) collapses the moment the proposer phones home.
|
|
359
|
+
# Only fall back to Opus / Claude CLI if DRYDOCK_RESEARCH_ALLOW_OPUS=1
|
|
360
|
+
# is explicitly set AND the local endpoint returned nothing useful.
|
|
361
|
+
# The experimenter's default (--proposer local) skips opus entirely.
|
|
362
|
+
response = _try_local_llm(prompt)
|
|
363
|
+
if not response and os.environ.get("DRYDOCK_RESEARCH_ALLOW_OPUS") == "1":
|
|
364
|
+
print(" proposer: local returned nothing, falling back to cloud "
|
|
365
|
+
"(DRYDOCK_RESEARCH_ALLOW_OPUS=1). This is NOT airgap-safe.",
|
|
366
|
+
file=sys.stderr)
|
|
367
|
+
response = _try_anthropic_sdk(prompt) or _try_claude_cli(prompt)
|
|
311
368
|
if not response:
|
|
312
369
|
print(" proposer: no response from Opus", file=sys.stderr)
|
|
313
370
|
return None
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
ts exp_id git_commit config_sha metric done skip timeout recycle elapsed_s note
|
|
2
|
+
1776806910 exp_1776806574_0001 74075e4 81d102021a 0.000 0 6 0 0 329.5 opus knob:per_prompt_budget_sec -> 600 (No trace history yet. Seed search from a tighter per-turn budget (600s vs defaul
|
|
3
|
+
1776807435 exp_1776807135_0001 ec58651 4c88fdcfdf 4.486 22 0 0 0 294.3 opus knob:per_prompt_budget_sec -> 900 (Only seed run used 600s and got 0 done / 6 skipped in 329s — prompts skipping be
|
|
4
|
+
1776807740 exp_1776807445_0002 ec58651 1124958468 4.167 20 0 0 0 288.0 opus knob:stop_now_warn_at -> 50 (Top run (22 done, 0 skips, 294s) stayed well under hard_stop=100. Tighten second-nudge
|
|
5
|
+
1776808088 exp_1776807750_0003 ec58651 368e85f341 4.528 22 0 0 0 291.5 opus knob:temperature -> 0.1 (Both top runs (4.486, 4.167) finished 20-22 prompts with 0 skips and hit 288-294s on the 3
|
|
6
|
+
1776808481 exp_1776808098_0004 ec58651 6523365e69 4.142 20 0 0 0 289.7 opus harness_threshold:SESSION_RESET_EVERY -> 25 (Top runs finish 20-22 prompts in 287-294s bounded by elapsed cap, not
|
|
7
|
+
1776808822 exp_1776808492_0005 ec58651 f06cf95f58 4.123 20 0 0 0 291.0 opus knob:temperature -> 0.0 (All 3 top runs bounded by 5min elapsed cap (287-294s), 0 skips. 0.3→0.1 mutation already i
|
|
8
|
+
1776820643 exp_1776820249_0001 940ce5c 4fdd88a7ef 4.512 22 0 0 0 292.6 opus knob:wrap_up_warn_at -> 100 (Every trace tail shows 'Previous turn ended; awaiting your next instruction.' after ~4
|
|
9
|
+
1776821009 exp_1776820673_0002 940ce5c 936650dbd3 4.492 22 0 0 0 293.9 opus knob:stop_now_warn_at -> 150 (Every trace tail (top AND bottom) shows 'Previous turn ended; awaiting your next inst
|
|
10
|
+
1776821447 exp_1776821040_0003 940ce5c 4885d356ac 4.490 22 0 0 0 294.0 opus knob:struggle_threshold -> 40 (All top traces show 'Previous turn ended; awaiting your next instruction.' hijacking
|
|
11
|
+
1776821824 exp_1776821477_0004 940ce5c 4885d356ac 4.725 23 0 0 0 292.1 opus knob:struggle_threshold -> 40 (Every trace tail shows 'Previous turn ended; awaiting your next instruction.' hijack
|
|
12
|
+
1776822239 exp_1776821854_0005 940ce5c b8de17fe55 4.653 23 0 0 0 296.6 opus knob:wrap_up_warn_at -> 100 (Traces show 'Previous turn ended' hijack fires at ~40 tool calls across all runs. exp_
|
|
13
|
+
1776822665 exp_1776822269_0006 940ce5c cd348b52aa 3.935 19 0 0 0 289.7 opus knob:stop_now_warn_at -> 150 (Every top+bottom trace tail shows admiral's 'Previous turn ended; awaiting your next
|
|
14
|
+
1776823108 exp_1776822696_0007 940ce5c 57b880a66e 4.104 20 0 0 0 292.4 random stop_now_warn_at: 60.0 -> 64
|
|
15
|
+
1776823555 exp_1776823138_0008 940ce5c 399281d361 4.258 21 0 0 0 295.9 random temperature: 0.1 -> 0.867
|
|
16
|
+
1776823914 exp_1776823585_0009 940ce5c 31699d8902 4.607 22 0 0 0 286.5 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Stress prompts are simple Q&A (sha1sum, rot13, rev, wc, et
|
|
17
|
+
1776824309 exp_1776823944_0010 940ce5c 31699d8902 4.110 20 0 0 0 292.0 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (exp_0009 (4.61) proved BASH=10 fixes 'Previous turn ended'
|
|
18
|
+
1776824751 exp_1776824339_0011 940ce5c c8a775a416 4.517 22 0 0 0 292.2 random loop_detector_window: 3.0 -> 3
|
|
19
|
+
1776825463 exp_1776825164_0001 7f5e6d8 b8de17fe55 4.558 22 0 0 0 289.6 opus knob:wrap_up_warn_at -> 100 (Traces show a 'Previous turn ended' hijack mid-session after ~40 tool calls. Top perfo
|
|
20
|
+
1776825794 exp_1776825493_0002 7f5e6d8 b8de17fe55 4.121 20 0 0 0 291.2 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, exp_0005) use higher wrap_up_warn_at values to prevent the '
|
|
21
|
+
1776826116 exp_1776825824_0003 7f5e6d8 b8de17fe55 4.127 20 0 0 0 290.8 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) consistently push wrap_up_warn_at higher to delay the
|
|
22
|
+
1776826437 exp_1776826146_0004 7f5e6d8 b8de17fe55 4.569 22 0 0 0 288.9 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) both increased wrap_up_warn_at to 100 to delay the 'Pr
|
|
23
|
+
1776826766 exp_1776826467_0005 7f5e6d8 31699d8902 4.282 21 0 0 0 294.2 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Trace contrast shows BASH=10 (exp_0009) outperforms BASH=5
|
|
24
|
+
1776827100 exp_1776826797_0006 7f5e6d8 b8de17fe55 3.935 19 0 0 0 289.7 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, exp_0005) use wrap_up=100 to prevent the 'Previous turn ende
|
|
25
|
+
1776827425 exp_1776827130_0007 7f5e6d8 b8de17fe55 4.557 22 0 0 0 289.7 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) use higher wrap_up_warn_at to prevent the 'Previous tu
|
|
26
|
+
1776827746 exp_1776827455_0008 7f5e6d8 31699d8902 4.615 22 0 0 0 286.0 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Top performers (exp_0009) used BASH=10 to prevent 'Previou
|
|
27
|
+
1776828077 exp_1776827776_0009 7f5e6d8 6cc8996dd4 4.525 22 0 0 0 291.7 random temperature: 0.1 -> 0.76
|
|
28
|
+
1776828409 exp_1776828107_0010 7f5e6d8 31699d8902 4.519 22 0 0 0 292.1 opus admiral_detector:SAME_TOOL_NAME_REPEAT_LIMIT_BASH -> 10 (Top performers (exp_0008, 0004) avoid 'Previous turn ended
|
|
29
|
+
1776828730 exp_1776828439_0011 7f5e6d8 1521a6d5df 4.192 20 0 0 0 286.3 opus knob:struggle_threshold -> 30 (Top performers (exp_0004, 0005) show 'Previous turn ended' hijacks after ~20-40 read
|
|
30
|
+
1776829054 exp_1776828760_0012 7f5e6d8 4885d356ac 4.149 20 0 0 0 289.2 opus knob:struggle_threshold -> 40 (Top performers (exp_0004, 0005) use struggle_threshold=40 to prevent 'Previous turn
|
|
31
|
+
1776829384 exp_1776829085_0013 7f5e6d8 b8de17fe55 4.687 23 0 0 0 294.4 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
|
|
32
|
+
1776829720 exp_1776829414_0014 7f5e6d8 b8de17fe55 4.053 20 0 0 0 296.1 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005, 0013) all set wrap_up_warn_at to 100 to delay the 'Pre
|
|
33
|
+
1776830052 exp_1776829750_0015 7f5e6d8 b8de17fe55 4.099 20 0 0 0 292.7 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
|
|
34
|
+
1776830372 exp_1776830082_0016 7f5e6d8 b8de17fe55 3.970 19 0 0 0 287.1 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) show that increasing wrap_up_warn_at to 100 delays the
|
|
35
|
+
1776830696 exp_1776830402_0017 7f5e6d8 b8de17fe55 4.141 20 0 0 0 289.8 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
|
|
36
|
+
1776831016 exp_1776830726_0018 7f5e6d8 b8de17fe55 4.167 20 0 0 0 288.0 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) both increased wrap_up_warn_at to 100 to delay the 'Pr
|
|
37
|
+
1776831339 exp_1776831046_0019 7f5e6d8 7afdaaa642 4.569 22 0 0 0 288.9 random stop_now_warn_at: 60.0 -> 47
|
|
38
|
+
1776831670 exp_1776831369_0020 7f5e6d8 b8de17fe55 3.849 19 1 0 0 296.1 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) demonstrate that increasing wrap_up_warn_at to 100 pre
|
|
39
|
+
1776832006 exp_1776831700_0021 7f5e6d8 b8de17fe55 4.050 20 0 0 0 296.3 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) show 'Previous turn ended' hijacks after ~40 tool call
|
|
40
|
+
1776832324 exp_1776832036_0022 7f5e6d8 b8de17fe55 4.196 20 0 0 0 286.0 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
|
|
41
|
+
1776832649 exp_1776832354_0023 7f5e6d8 b8de17fe55 4.519 22 0 0 0 292.1 opus knob:wrap_up_warn_at -> 100 (Trace contrast shows the 'Previous turn ended' hijack occurs around 40 tool calls. Inc
|
|
42
|
+
1776832972 exp_1776832680_0024 7f5e6d8 b8de17fe55 4.173 20 0 0 0 287.6 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
|
|
43
|
+
1776833298 exp_1776833002_0025 7f5e6d8 b8de17fe55 4.542 22 0 0 0 290.6 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) both increased wrap_up_warn_at to 100 to delay the 'Pr
|
|
44
|
+
1776833622 exp_1776833328_0026 7f5e6d8 b8de17fe55 4.567 22 0 0 0 289.0 opus knob:wrap_up_warn_at -> 100 (Top performers (exp_0004, 0005) delay the 'Previous turn ended' hijack by increasing w
|
|
45
|
+
1776833946 exp_1776833652_0027 7f5e6d8 b8de17fe55 4.146 20 0 0 0 289.4 opus knob:wrap_up_warn_at -> 100 (Trace analysis shows 'Previous turn ended' hijacking occurs at ~40 tool calls. Increas
|
|
@@ -9,7 +9,7 @@ min = 300
|
|
|
9
9
|
max = 3600
|
|
10
10
|
mutable = true
|
|
11
11
|
why = "Hard ceiling on a single user turn. Too low wastes work; too high lets loops run wild."
|
|
12
|
-
value =
|
|
12
|
+
value = 900
|
|
13
13
|
|
|
14
14
|
[[knob]]
|
|
15
15
|
name = "hard_stop_tool_calls"
|
|
@@ -34,6 +34,7 @@ min = 20
|
|
|
34
34
|
max = 150
|
|
35
35
|
mutable = true
|
|
36
36
|
why = "Second progressive nudge. Gemma often ignores the wrap-up; this is the harder prod."
|
|
37
|
+
value = 50
|
|
37
38
|
|
|
38
39
|
[[knob]]
|
|
39
40
|
name = "temperature"
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
[target]
|
|
2
|
+
model = "mistral-vibe-cli-latest"
|
|
3
|
+
task = "unknown"
|
|
4
|
+
|
|
5
|
+
[[knob]]
|
|
6
|
+
name = "per_prompt_budget_sec"
|
|
7
|
+
default = 300
|
|
8
|
+
min = 300
|
|
9
|
+
max = 3600
|
|
10
|
+
mutable = true
|
|
11
|
+
why = "Hard ceiling on a single user turn. Too low wastes work; too high lets loops run wild."
|
|
12
|
+
value = 900
|
|
13
|
+
|
|
14
|
+
[[knob]]
|
|
15
|
+
name = "hard_stop_tool_calls"
|
|
16
|
+
default = 100
|
|
17
|
+
min = 30
|
|
18
|
+
max = 250
|
|
19
|
+
mutable = true
|
|
20
|
+
why = "HARD_STOP_CALLS in agent_loop. Cap on tool-call depth per user turn."
|
|
21
|
+
|
|
22
|
+
[[knob]]
|
|
23
|
+
name = "wrap_up_warn_at"
|
|
24
|
+
default = 40
|
|
25
|
+
min = 10
|
|
26
|
+
max = 100
|
|
27
|
+
mutable = true
|
|
28
|
+
why = "First progressive nudge. Earlier = tighter turns, may lose quality."
|
|
29
|
+
|
|
30
|
+
[[knob]]
|
|
31
|
+
name = "stop_now_warn_at"
|
|
32
|
+
default = 60
|
|
33
|
+
min = 20
|
|
34
|
+
max = 150
|
|
35
|
+
mutable = true
|
|
36
|
+
why = "Second progressive nudge. Gemma often ignores the wrap-up; this is the harder prod."
|
|
37
|
+
|
|
38
|
+
[[knob]]
|
|
39
|
+
name = "temperature"
|
|
40
|
+
default = 0.3
|
|
41
|
+
min = 0.0
|
|
42
|
+
max = 0.9
|
|
43
|
+
mutable = true
|
|
44
|
+
why = "Sampling temperature. Lower = more deterministic; higher = more exploration."
|
|
45
|
+
value = 0.1
|
|
46
|
+
|
|
47
|
+
[[knob]]
|
|
48
|
+
name = "loop_detector_window"
|
|
49
|
+
default = 3
|
|
50
|
+
min = 2
|
|
51
|
+
max = 6
|
|
52
|
+
mutable = true
|
|
53
|
+
why = "How many consecutive identical tool calls trigger the loop advisor."
|
|
54
|
+
|
|
55
|
+
[[knob]]
|
|
56
|
+
name = "struggle_threshold"
|
|
57
|
+
default = 20
|
|
58
|
+
min = 10
|
|
59
|
+
max = 40
|
|
60
|
+
mutable = true
|
|
61
|
+
why = "Reads-without-a-write before admiral fires the struggle directive."
|
|
62
|
+
|
|
63
|
+
[env_flags]
|
|
64
|
+
DRYDOCK_AUTO_CONTINUE_DISABLE = "1"
|
|
65
|
+
|
|
66
|
+
[prompts.gemma4]
|
|
67
|
+
source_path = ""
|
|
68
|
+
mutable = true
|
|
69
|
+
why = "Single highest-leverage mutable target. Governs how Gemma 4 interprets every turn."
|
|
70
|
+
|
|
71
|
+
[prompts.cli]
|
|
72
|
+
source_path = ""
|
|
73
|
+
mutable = true
|
|
74
|
+
why = "Alternate non-Gemma system prompt. Rarely the right target but available for cross-model experiments."
|
|
75
|
+
|
|
76
|
+
[[harness_threshold]]
|
|
77
|
+
name = "MAX_CONSECUTIVE_SKIPS_BEFORE_RESET"
|
|
78
|
+
default = 2
|
|
79
|
+
min = 1
|
|
80
|
+
max = 5
|
|
81
|
+
mutable = true
|
|
82
|
+
why = "Force ESC+/clear after N consecutive SKIPs. Lower = aggressive recycling; higher = tolerant of transient wedges."
|
|
83
|
+
|
|
84
|
+
[[harness_threshold]]
|
|
85
|
+
name = "SESSION_RESET_EVERY"
|
|
86
|
+
default = 15
|
|
87
|
+
min = 5
|
|
88
|
+
max = 50
|
|
89
|
+
mutable = true
|
|
90
|
+
why = "Periodic /clear cadence in prompts. Tight cadence bounds context but costs reset overhead every N prompts."
|
|
91
|
+
|
|
92
|
+
[[harness_threshold]]
|
|
93
|
+
name = "SEND_PROMPT_RETRY_COUNT"
|
|
94
|
+
default = 3
|
|
95
|
+
min = 1
|
|
96
|
+
max = 6
|
|
97
|
+
mutable = true
|
|
98
|
+
why = "How many times send_prompt_and_confirm re-types before marking SKIP. Each retry is ~120s."
|
|
99
|
+
|
|
100
|
+
[[harness_threshold]]
|
|
101
|
+
name = "SEND_PROMPT_WAIT_PER_RETRY_SEC"
|
|
102
|
+
default = 120
|
|
103
|
+
min = 30
|
|
104
|
+
max = 300
|
|
105
|
+
mutable = true
|
|
106
|
+
why = "Seconds to wait for user-msg confirmation before retyping. Tighter = faster SKIP, may miss slow prompts."
|
|
107
|
+
|
|
108
|
+
[[admiral_detector]]
|
|
109
|
+
name = "REPEAT_WARNING_THRESHOLD"
|
|
110
|
+
default = 4
|
|
111
|
+
min = 2
|
|
112
|
+
max = 8
|
|
113
|
+
mutable = true
|
|
114
|
+
why = "Consecutive identical tool calls before a WARNING. Lower = early nudge; higher = tolerant of legit repetition."
|
|
115
|
+
|
|
116
|
+
[[admiral_detector]]
|
|
117
|
+
name = "REPEAT_FORCE_STOP_THRESHOLD"
|
|
118
|
+
default = 8
|
|
119
|
+
min = 4
|
|
120
|
+
max = 20
|
|
121
|
+
mutable = true
|
|
122
|
+
why = "Consecutive identical tool calls before FORCE_STOP. Must be >= REPEAT_WARNING_THRESHOLD."
|
|
123
|
+
|
|
124
|
+
[[admiral_detector]]
|
|
125
|
+
name = "EMPTY_RESULT_THRESHOLD"
|
|
126
|
+
default = 3
|
|
127
|
+
min = 2
|
|
128
|
+
max = 6
|
|
129
|
+
mutable = true
|
|
130
|
+
why = "Check 0 (empty-result loop). Fire FORCE_STOP after N identical-call + empty-result in a row."
|
|
131
|
+
|
|
132
|
+
[[admiral_detector]]
|
|
133
|
+
name = "SAME_TOOL_NAME_REPEAT_LIMIT_BASH"
|
|
134
|
+
default = 5
|
|
135
|
+
min = 3
|
|
136
|
+
max = 10
|
|
137
|
+
mutable = true
|
|
138
|
+
why = "Same-tool repetition limit for bash. Different from read/grep which need more headroom."
|
|
139
|
+
|
|
140
|
+
[[admiral_detector]]
|
|
141
|
+
name = "SAME_TOOL_NAME_REPEAT_LIMIT_READ"
|
|
142
|
+
default = 7
|
|
143
|
+
min = 4
|
|
144
|
+
max = 12
|
|
145
|
+
mutable = true
|
|
146
|
+
why = "Same-tool repetition limit for read_file + grep. Investigation tools legitimately repeat more."
|