turnloop 0.1.0__py3-none-any.whl

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.
Files changed (132) hide show
  1. turnloop/__init__.py +3 -0
  2. turnloop/__main__.py +4 -0
  3. turnloop/agent/__init__.py +0 -0
  4. turnloop/agent/factory.py +175 -0
  5. turnloop/agent/headless.py +150 -0
  6. turnloop/agent/loop.py +396 -0
  7. turnloop/agent/subagent.py +182 -0
  8. turnloop/agent/system_prompt.py +263 -0
  9. turnloop/cli.py +202 -0
  10. turnloop/commands/__init__.py +0 -0
  11. turnloop/commands/dispatch.py +428 -0
  12. turnloop/commands/loader.py +140 -0
  13. turnloop/config.py +425 -0
  14. turnloop/context/__init__.py +0 -0
  15. turnloop/context/budget.py +74 -0
  16. turnloop/context/compaction.py +441 -0
  17. turnloop/context/memory.py +120 -0
  18. turnloop/core/__init__.py +0 -0
  19. turnloop/core/events.py +145 -0
  20. turnloop/core/ids.py +29 -0
  21. turnloop/core/messages.py +217 -0
  22. turnloop/core/tokens.py +104 -0
  23. turnloop/diagnostics.py +233 -0
  24. turnloop/errors.py +64 -0
  25. turnloop/experiments/__init__.py +0 -0
  26. turnloop/experiments/configs/bakeoff.yaml +50 -0
  27. turnloop/experiments/configs/ceiling-check.yaml +31 -0
  28. turnloop/experiments/configs/context-glm.yaml +59 -0
  29. turnloop/experiments/configs/context.yaml +65 -0
  30. turnloop/experiments/configs/glm-selfhosted.yaml +36 -0
  31. turnloop/experiments/configs/groq-free.yaml +28 -0
  32. turnloop/experiments/configs/hard-calibration.yaml +26 -0
  33. turnloop/experiments/configs/hard-glm.yaml +41 -0
  34. turnloop/experiments/configs/loop.yaml +34 -0
  35. turnloop/experiments/configs/nvidia-smoke.yaml +22 -0
  36. turnloop/experiments/configs/reliability.yaml +44 -0
  37. turnloop/experiments/configs/rewrite-calibration.yaml +24 -0
  38. turnloop/experiments/configs/smoke.yaml +22 -0
  39. turnloop/experiments/graders.py +209 -0
  40. turnloop/experiments/report.py +371 -0
  41. turnloop/experiments/runner.py +495 -0
  42. turnloop/experiments/suite/default.yaml +185 -0
  43. turnloop/experiments/suite/fixtures/bulky/module_1.py +670 -0
  44. turnloop/experiments/suite/fixtures/bulky/module_2.py +670 -0
  45. turnloop/experiments/suite/fixtures/bulky/module_3.py +670 -0
  46. turnloop/experiments/suite/fixtures/bulky/module_4.py +670 -0
  47. turnloop/experiments/suite/fixtures/bulky/module_5.py +670 -0
  48. turnloop/experiments/suite/fixtures/bulky/module_6.py +672 -0
  49. turnloop/experiments/suite/fixtures/bulky/module_7.py +670 -0
  50. turnloop/experiments/suite/fixtures/bulky/module_8.py +670 -0
  51. turnloop/experiments/suite/fixtures/circular_import/models.py +11 -0
  52. turnloop/experiments/suite/fixtures/circular_import/services.py +15 -0
  53. turnloop/experiments/suite/fixtures/circular_import/test_cancel.py +12 -0
  54. turnloop/experiments/suite/fixtures/cli_flag/app.py +16 -0
  55. turnloop/experiments/suite/fixtures/cross_file_contract/decode.py +7 -0
  56. turnloop/experiments/suite/fixtures/cross_file_contract/encode.py +10 -0
  57. turnloop/experiments/suite/fixtures/cross_file_contract/test_roundtrip.py +11 -0
  58. turnloop/experiments/suite/fixtures/cross_file_contract/test_wire_format.py +7 -0
  59. turnloop/experiments/suite/fixtures/empty/.keep +1 -0
  60. turnloop/experiments/suite/fixtures/failing_test/calc.py +14 -0
  61. turnloop/experiments/suite/fixtures/failing_test/test_calc.py +17 -0
  62. turnloop/experiments/suite/fixtures/generate_bulky.py +80 -0
  63. turnloop/experiments/suite/fixtures/grep_edit/ingest.py +5 -0
  64. turnloop/experiments/suite/fixtures/grep_edit/load.py +5 -0
  65. turnloop/experiments/suite/fixtures/grep_edit/transform.py +5 -0
  66. turnloop/experiments/suite/fixtures/misleading_traceback/checkout.py +21 -0
  67. turnloop/experiments/suite/fixtures/misleading_traceback/invoice.py +8 -0
  68. turnloop/experiments/suite/fixtures/misleading_traceback/pricing.py +11 -0
  69. turnloop/experiments/suite/fixtures/misleading_traceback/test_checkout.py +12 -0
  70. turnloop/experiments/suite/fixtures/misleading_traceback/test_invoice.py +6 -0
  71. turnloop/experiments/suite/fixtures/needle/inventory.py +18 -0
  72. turnloop/experiments/suite/fixtures/needle/pricing.py +17 -0
  73. turnloop/experiments/suite/fixtures/needle/shipping.py +13 -0
  74. turnloop/experiments/suite/fixtures/regression_trap/test_validators.py +14 -0
  75. turnloop/experiments/suite/fixtures/regression_trap/validators.py +23 -0
  76. turnloop/experiments/suite/fixtures/rename/billing.py +7 -0
  77. turnloop/experiments/suite/fixtures/rename/report.py +5 -0
  78. turnloop/experiments/suite/fixtures/rename/test_billing.py +11 -0
  79. turnloop/experiments/suite/fixtures/spec/parser.py +19 -0
  80. turnloop/experiments/suite/fixtures/spec/test_parser.py +28 -0
  81. turnloop/experiments/suite/fixtures/subtle_spec_edge/leaderboard.py +12 -0
  82. turnloop/experiments/suite/fixtures/subtle_spec_edge/test_leaderboard.py +28 -0
  83. turnloop/experiments/suite/fixtures/util/util.py +9 -0
  84. turnloop/hooks/__init__.py +0 -0
  85. turnloop/hooks/runner.py +221 -0
  86. turnloop/mcp/__init__.py +0 -0
  87. turnloop/mcp/adapter.py +109 -0
  88. turnloop/mcp/client.py +299 -0
  89. turnloop/permissions/__init__.py +0 -0
  90. turnloop/permissions/engine.py +211 -0
  91. turnloop/permissions/rules.py +325 -0
  92. turnloop/providers/__init__.py +0 -0
  93. turnloop/providers/anthropic.py +318 -0
  94. turnloop/providers/base.py +329 -0
  95. turnloop/providers/gemini.py +217 -0
  96. turnloop/providers/mock.py +226 -0
  97. turnloop/providers/openai_compat.py +357 -0
  98. turnloop/providers/pricing.py +148 -0
  99. turnloop/providers/registry.py +75 -0
  100. turnloop/providers/sse.py +114 -0
  101. turnloop/sessions/__init__.py +0 -0
  102. turnloop/sessions/models.py +139 -0
  103. turnloop/sessions/store.py +271 -0
  104. turnloop/tools/__init__.py +0 -0
  105. turnloop/tools/ask.py +133 -0
  106. turnloop/tools/base.py +286 -0
  107. turnloop/tools/bash.py +423 -0
  108. turnloop/tools/builtin.py +63 -0
  109. turnloop/tools/edit.py +238 -0
  110. turnloop/tools/glob.py +235 -0
  111. turnloop/tools/grep.py +314 -0
  112. turnloop/tools/read.py +151 -0
  113. turnloop/tools/runner.py +284 -0
  114. turnloop/tools/shell.py +222 -0
  115. turnloop/tools/skill.py +89 -0
  116. turnloop/tools/task.py +161 -0
  117. turnloop/tools/textio.py +87 -0
  118. turnloop/tools/todo.py +140 -0
  119. turnloop/tools/webfetch.py +235 -0
  120. turnloop/tools/write.py +97 -0
  121. turnloop/tui/__init__.py +0 -0
  122. turnloop/tui/app.py +330 -0
  123. turnloop/tui/app.tcss +84 -0
  124. turnloop/tui/bridge.py +142 -0
  125. turnloop/tui/widgets/__init__.py +0 -0
  126. turnloop/tui/widgets/permission.py +131 -0
  127. turnloop/tui/widgets/status.py +110 -0
  128. turnloop/tui/widgets/transcript.py +146 -0
  129. turnloop-0.1.0.dist-info/METADATA +916 -0
  130. turnloop-0.1.0.dist-info/RECORD +132 -0
  131. turnloop-0.1.0.dist-info/WHEEL +4 -0
  132. turnloop-0.1.0.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,132 @@
1
+ turnloop/__init__.py,sha256=Y644jA4Y1p-ZeEOMxwRQeyJhxQIdtJTldpP_kNqcBhY,80
2
+ turnloop/__main__.py,sha256=u148odO822DW-BLEjPMxZtJZgtPsoQhWsMDeowusm9M,87
3
+ turnloop/cli.py,sha256=lb-UwMnL2e94mqaU9lGK8Mrqg--uDnb2eQLKVUiO_l4,7476
4
+ turnloop/config.py,sha256=SUMq6qMXbV21Qbmmbe44wI6TLgPUQ0Gt8Xb5vSMoQ50,14798
5
+ turnloop/diagnostics.py,sha256=xkusv15a8L9qtWUEIZ3L217RdJVS1ISxANmC3105L6I,8208
6
+ turnloop/errors.py,sha256=zvrT0lEGrJ7LWhE8xufxKDPO0vht6MmP3mFxVrfXFiI,2051
7
+ turnloop/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ turnloop/agent/factory.py,sha256=17zougdD5j0bF2YTJF6ZSIYtYbZoOxaM6QGs1TnrXck,5575
9
+ turnloop/agent/headless.py,sha256=SB2SoEqUFWbPEek7wmiJ2gJuQ0Z2OXg4DYLjy62CkLo,5518
10
+ turnloop/agent/loop.py,sha256=QOeFjntrNH-QK5NFgDcATseOh6Nsql-LR3vH2FqJwe4,16446
11
+ turnloop/agent/subagent.py,sha256=SUVksHOPaaO2-3ZW-BcfA7ZRHCP-W8ToPFmJhEfTq24,5990
12
+ turnloop/agent/system_prompt.py,sha256=QOvnCdGbN1HuooFpdC6WZoIwPZ3CKEFUIzXIm2qW3zI,10907
13
+ turnloop/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ turnloop/commands/dispatch.py,sha256=cIPN6ikHG9cglt7kHMz08w_sNlB0Uc_0PxWZCI_mGqw,15984
15
+ turnloop/commands/loader.py,sha256=n6v01DRMBCCyhyIO0pxdQUlL_DGnqKjcw3-2K0bUJP8,4515
16
+ turnloop/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ turnloop/context/budget.py,sha256=VTTkX_nnEDuAaAFThB0Q2NdilKxDNSPpk3rk71L5iIY,2386
18
+ turnloop/context/compaction.py,sha256=pTV5pNqVKes4p-UyOJXVtEyrc1bXYnT9hBjfMgu9tfg,17993
19
+ turnloop/context/memory.py,sha256=6bKuIhv9OcesKkUm6iAvTOq19p-x7YPgwWnZ7N0E2XI,3658
20
+ turnloop/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ turnloop/core/events.py,sha256=Oo0q_j8ju9p8v3xDg9mMbg5PdoXa4NaFeUpskutDVGg,3276
22
+ turnloop/core/ids.py,sha256=RV9O4XNn0m86E2hszWJuAobGbU3ZZzk1-7wCqq8e0SI,700
23
+ turnloop/core/messages.py,sha256=ogzFKvjJtrtXB5eQHzIlLp7dukFbl9ftL6ZMZsAz8Uc,6933
24
+ turnloop/core/tokens.py,sha256=XHuTosybE-ccAMqhkM0SPZTb5Ot9xON5mJZ141XMNjQ,3481
25
+ turnloop/experiments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ turnloop/experiments/graders.py,sha256=99MM4y7NLpCq2YTo7LIKkqrKklg0es1KkC0_JhZ-reU,8059
27
+ turnloop/experiments/report.py,sha256=HXYkw7qdZNI8YQwseh39PeD-rkcwzJDJOzFbkBFs-g0,14852
28
+ turnloop/experiments/runner.py,sha256=eGzI95i7eNw5YAb110qxiqVc3TPYraQ-IIpJOoOuNJ0,18589
29
+ turnloop/experiments/configs/bakeoff.yaml,sha256=xwBI3PRLhXtpnMbs4Gd9A_GCH1Q_cv-z3EA7pNjKirE,1350
30
+ turnloop/experiments/configs/ceiling-check.yaml,sha256=Y1GmFcKY3VvVrsLq_3OTv7qI-TFhkOG6EqR4byyWP3Q,1180
31
+ turnloop/experiments/configs/context-glm.yaml,sha256=ByUDaihAcJ2CCb684AbkXIhb7PtfbvD995eFyrjhvrA,1699
32
+ turnloop/experiments/configs/context.yaml,sha256=qI6W2bLLDDFZE6sOJPaFW1iznR7gWPyuVKoHcX2Hfu8,1937
33
+ turnloop/experiments/configs/glm-selfhosted.yaml,sha256=gnmnDCJ0WsCKkjElkfFxoq62FeWwN8ndLN84vlrjM5Q,1356
34
+ turnloop/experiments/configs/groq-free.yaml,sha256=Vutr3MCNRuT0D2OYueg2PGKKNhyTXFoeEOTlUmLVAcU,818
35
+ turnloop/experiments/configs/hard-calibration.yaml,sha256=28fwP3V8tI8gx2UZa-j7A8FCA9CW_fH2SD1MfHeSUsA,853
36
+ turnloop/experiments/configs/hard-glm.yaml,sha256=uK6R6ak1NZuT_E-g8FxHDljrxDujC5YRZZFJJJO0-aE,1785
37
+ turnloop/experiments/configs/loop.yaml,sha256=1okrCTcbiRbQQR5e363dmS8yyVt80DygsqLGdLULeT0,941
38
+ turnloop/experiments/configs/nvidia-smoke.yaml,sha256=MCRkx42mQKJtR2jhCvNUK2QyD8h9D6ZMScgBlhl8kJw,536
39
+ turnloop/experiments/configs/reliability.yaml,sha256=qfArqZt1GZaSUeBg4tgN6HXxeueF51D9iY3yz-LR8pE,1509
40
+ turnloop/experiments/configs/rewrite-calibration.yaml,sha256=Jcmd6pg4wmlZK5aQOwxiqg9oqu6VZ8WtbZZqFDLTiiI,805
41
+ turnloop/experiments/configs/smoke.yaml,sha256=sm8OXr1f_i7rgL1IUuHDPLaBK6mNfgALzf1PXUmdNoc,513
42
+ turnloop/experiments/suite/default.yaml,sha256=CvXpwuSxunIiPhwQY5h_WVveSdNvdLyyOxtwFbdXmQg,6850
43
+ turnloop/experiments/suite/fixtures/generate_bulky.py,sha256=wP2iTzQnXO_h2XgXCQ-riTww-mHg15aSaEFQMPUcSGg,3236
44
+ turnloop/experiments/suite/fixtures/bulky/module_1.py,sha256=zNhNygUtsl6aS3qoL9KhwxmFd68Mnc0lPIN1-OReOPQ,60152
45
+ turnloop/experiments/suite/fixtures/bulky/module_2.py,sha256=ankjJm3PaZNks8VsyB-aj6mDz78pfk-vs_EQFhpSoHQ,60152
46
+ turnloop/experiments/suite/fixtures/bulky/module_3.py,sha256=0eCfFYC51R6DdaWB_WXQxsZ_dkHjztbsvpGuhQv9OVM,60152
47
+ turnloop/experiments/suite/fixtures/bulky/module_4.py,sha256=DgdaWFYi99hESzRQX7cC5MfpV4-BoRATQJrBp5rLFPo,60152
48
+ turnloop/experiments/suite/fixtures/bulky/module_5.py,sha256=psCdGBh53aYj_UVOWEl7AbL8z5CRzpBCo35ghoO6vPI,60152
49
+ turnloop/experiments/suite/fixtures/bulky/module_6.py,sha256=IlfSOsouShoq7nr33pMS081TqnvTvqMJjgWUGgfimVI,60179
50
+ turnloop/experiments/suite/fixtures/bulky/module_7.py,sha256=ENKfus5mqXmNNOZk8nUOM_NSJwYUIAcxkrnXEEiopoA,60152
51
+ turnloop/experiments/suite/fixtures/bulky/module_8.py,sha256=HzwHijPG3xHmInuFlQ94mB2OjN4-pfIXSrWepzgUac8,60152
52
+ turnloop/experiments/suite/fixtures/circular_import/models.py,sha256=Bk8qllnlVI2e2JRRKR9dst-h5ND3KPcqjmbkOvybKcg,258
53
+ turnloop/experiments/suite/fixtures/circular_import/services.py,sha256=O_BAnEce8z1yLdOueMzQj_c0hOMfgdilgIeuAoR2Eaw,292
54
+ turnloop/experiments/suite/fixtures/circular_import/test_cancel.py,sha256=PR0TH89k9mh-k2jyi4Sl3eL4JKivwIzBR5_FxlCPxMg,301
55
+ turnloop/experiments/suite/fixtures/cli_flag/app.py,sha256=iDN0sVYVkH4V4V8uaA9WVO96hz7RSFOUIfGXg5zf-20,282
56
+ turnloop/experiments/suite/fixtures/cross_file_contract/decode.py,sha256=iyRMA_yMpyr6JThgE1YH4EDSTB2m4nnSR4KGU2ndfFo,176
57
+ turnloop/experiments/suite/fixtures/cross_file_contract/encode.py,sha256=J5PZvIsarQEEJgkKghaBandPlVIqdupFjwO44tkiMjI,330
58
+ turnloop/experiments/suite/fixtures/cross_file_contract/test_roundtrip.py,sha256=RHkbbCmnq4tNhfGtMvIA-UcyFBwsprI_c3KHb-xj2qc,298
59
+ turnloop/experiments/suite/fixtures/cross_file_contract/test_wire_format.py,sha256=YLutA6Ft7t4MRUJCvi91F1WQfgXDEf_Vi18J8Q8l-Iw,280
60
+ turnloop/experiments/suite/fixtures/empty/.keep,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
61
+ turnloop/experiments/suite/fixtures/failing_test/calc.py,sha256=2tlz8ZKsn8J6k1--wIQ7Y5IV1CcsDamvNdQdIXfCEf0,267
62
+ turnloop/experiments/suite/fixtures/failing_test/test_calc.py,sha256=D48mgknwgwy0HB3c8gtpuXUkqrM9zdTxAUEo6Wjgq3E,289
63
+ turnloop/experiments/suite/fixtures/grep_edit/ingest.py,sha256=uOSyLEAIMGMrO9ukbS6_vY8pGxSfQ9AvMzccqYlZj_E,157
64
+ turnloop/experiments/suite/fixtures/grep_edit/load.py,sha256=BglieaPIA1dfnmv1aIFZ9Ndnh1zj_Dj4vuodfsJsPNI,149
65
+ turnloop/experiments/suite/fixtures/grep_edit/transform.py,sha256=Nox3vhO1hsBrHCvP2OxZ7vcUTdnQ3QAmvmWZrG6R_hw,169
66
+ turnloop/experiments/suite/fixtures/misleading_traceback/checkout.py,sha256=f9BFOroSW5YxcWlPUp5c5pBd0pmr3gys0PEXu9W8bDA,685
67
+ turnloop/experiments/suite/fixtures/misleading_traceback/invoice.py,sha256=gQTLOJjovpyfO_LYbibB7Q6N0laz_hYo8U0B04CzF5s,303
68
+ turnloop/experiments/suite/fixtures/misleading_traceback/pricing.py,sha256=wIMWlssSDpgB_TOd8RzwwC8BX2JOle1NkEPVb3LsJbw,434
69
+ turnloop/experiments/suite/fixtures/misleading_traceback/test_checkout.py,sha256=kRfBR8A9T8Kyc1dyqXo0hkcIS8dv9sMyVNPKX_WchUc,364
70
+ turnloop/experiments/suite/fixtures/misleading_traceback/test_invoice.py,sha256=A6boUcBPzIyVEZMgbTamoH-kT-qngXIaBOn3Zk2Ol_Y,217
71
+ turnloop/experiments/suite/fixtures/needle/inventory.py,sha256=pOTf1tvjAQA1G1euRy68ot_MIEhCtSTLZXR6Plbj9W4,356
72
+ turnloop/experiments/suite/fixtures/needle/pricing.py,sha256=0B8fIPk5S146oP5zGxzT9BexqEcCH-a8p6cmm1KUAYI,507
73
+ turnloop/experiments/suite/fixtures/needle/shipping.py,sha256=O3-RdlOk-whzi7_XzHJqygPl-2N-Z2-QNcX1VI_T5vY,352
74
+ turnloop/experiments/suite/fixtures/regression_trap/test_validators.py,sha256=GPjqw3Rx4yhO-01t78C-VUvHpmf4Jak0HdsVyTlViVo,386
75
+ turnloop/experiments/suite/fixtures/regression_trap/validators.py,sha256=590A20wstukC-eWcfEBlalfVxVVHqdHbpixSZ2dJ5GI,730
76
+ turnloop/experiments/suite/fixtures/rename/billing.py,sha256=u9fXJrVz6m6t53rQ0BW7TCUg_AfSednKaGsG2Kktkq8,198
77
+ turnloop/experiments/suite/fixtures/rename/report.py,sha256=Xjy-caz3SRT7tIaVQWS2T_M60IWfdh-LLWYunuVBNck,124
78
+ turnloop/experiments/suite/fixtures/rename/test_billing.py,sha256=NlOwv3q-qJEaMbyu2pc5C7Dyd5UfWUCM5AZ9MzuDS40,233
79
+ turnloop/experiments/suite/fixtures/spec/parser.py,sha256=1SIqVTHZB95-16ubrHN8hquk2eMJQXR2EXMgEoIqiP4,677
80
+ turnloop/experiments/suite/fixtures/spec/test_parser.py,sha256=1sEo0jgL-Iaa7gRSOVgK50qAEvtrn7Z-QAl9oSvIj5I,558
81
+ turnloop/experiments/suite/fixtures/subtle_spec_edge/leaderboard.py,sha256=NG525gNQDCQ8ygwOsU6BVMbw7CbHNUV-U1s87_gwXkY,501
82
+ turnloop/experiments/suite/fixtures/subtle_spec_edge/test_leaderboard.py,sha256=PhYKp5zVxFKzV9i5ZM9MLdaGeQTHzyCYVKSqDw1yjKU,947
83
+ turnloop/experiments/suite/fixtures/util/util.py,sha256=_d6FE9INeizmANal-fXKswGpFUcoUgMhLh3ru1WKSxQ,196
84
+ turnloop/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ turnloop/hooks/runner.py,sha256=LB5YevoPLUvffSySku9DizRKJjkLHHCIO7jT_aw3H0Y,8143
86
+ turnloop/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ turnloop/mcp/adapter.py,sha256=xgFpTjsK_BzX-hq4J1sSsvRu2B3m-iUxTbJpGq5SlYc,3938
88
+ turnloop/mcp/client.py,sha256=oaYg9Yjyhi1eF9OsrJCT2zvYvolil81A7AUo5qC9bus,11280
89
+ turnloop/permissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
+ turnloop/permissions/engine.py,sha256=8en04QmiE7r_4j6CE-LeZWN47eBL7i6O5tefZ2vm_w8,7297
91
+ turnloop/permissions/rules.py,sha256=pDbcx4zTGxR7i-6K8jnk7r6BsxWs-xH46y74hyMMB88,10399
92
+ turnloop/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ turnloop/providers/anthropic.py,sha256=KE0-YUWbUoWf0kxrxGaFMXJ5DxocONtDEQiff4QN3jE,12535
94
+ turnloop/providers/base.py,sha256=fdxgyJ36Z1Lf-SvNzofmli8Fp3W6DUtLq9vJIiUSG0s,13685
95
+ turnloop/providers/gemini.py,sha256=64bLLklIE2IfYmdoYaxUlET7XlQ1l-RNhIOwtmV5ijg,8450
96
+ turnloop/providers/mock.py,sha256=8OC0Pk_5wP8sA20ZPa_uSGUP7lPLuCCWJNCDdqytnus,8837
97
+ turnloop/providers/openai_compat.py,sha256=KUi2AeCK7TP6XeN202iGriS81q0fKt2eY-RvSvaDIbc,13552
98
+ turnloop/providers/pricing.py,sha256=6HNnIO2I4O2rpKXAUQXJlH3VGHCB-KEDvbhBxkSDg4w,7208
99
+ turnloop/providers/registry.py,sha256=Tu0ZhI22gldb4Yf75vMdAc_5hm0tJVyfDwlGG9wnYww,2424
100
+ turnloop/providers/sse.py,sha256=OWyL8Ilg-75h-na36oJnKhckidOoEYcy1JNfJXbuczY,3576
101
+ turnloop/sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
+ turnloop/sessions/models.py,sha256=pYycb27mLA8DDrg2LHxoy4BMbgW1nbIg3UxIEuEsFvI,4772
103
+ turnloop/sessions/store.py,sha256=bTL7DSekZGlMKtT-kJFegC5Fhw1skOsC9gCMswvam7U,9700
104
+ turnloop/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ turnloop/tools/ask.py,sha256=PAQ6PX2xq1htqoZRmJyz3GbQG-MK6q6oIQBhgvcpaqc,5405
106
+ turnloop/tools/base.py,sha256=GQccppJCI8c4EdGxzSFWxlZAfQqL_3DseA3gSw8dTIg,10350
107
+ turnloop/tools/bash.py,sha256=q1qZQmYRgm6fj7-2tTAJb_VY4ksZo-j5MM9-6dIKEIE,16321
108
+ turnloop/tools/builtin.py,sha256=wUox6CcXZCnbsXjWyvS1l6xuIBe6VJjklsL3_WvQDUw,1942
109
+ turnloop/tools/edit.py,sha256=xip1y8Bo3bPTuLiz70DjhX4nvn0edjZK242JpRY44rs,9523
110
+ turnloop/tools/glob.py,sha256=uu7BUR2WGOvCkoL1gICeR6YRL_0pHAV_Yq4DiENns_c,8336
111
+ turnloop/tools/grep.py,sha256=uqVIx6737I7U3LSsbH0mfz0t4Gt7w0GigIukCCcvBeA,11766
112
+ turnloop/tools/read.py,sha256=Xy2wPwQxqTYn4RaNXNaYqlIBY-vdPx6gSpZj-TkJVNU,5717
113
+ turnloop/tools/runner.py,sha256=Yz9BhtdC6Re3jwkg2jVH5f7ajoPjkBpK1AnyMAfKjD8,11358
114
+ turnloop/tools/shell.py,sha256=Tgwhi0uplta1vpyF7J3T0KR2XQVV_Rg08SEHhFHpAFg,7920
115
+ turnloop/tools/skill.py,sha256=f_Ga_jzcNEGWTnIONr8vUcethTjZyAYXvCb4AL_j2tM,3319
116
+ turnloop/tools/task.py,sha256=HcV8lDHjR0G22seotRQZFRJ3CfcfFHNZJZ-H4sJWnU8,6630
117
+ turnloop/tools/textio.py,sha256=vtgXXpVrIJ6ElktSuc6HMhm81B_LdPuK9S8hsjm-EHA,2993
118
+ turnloop/tools/todo.py,sha256=i4qUKJSZvkGst-alsJUb3rCf1v5uVoIQCdTGVDsN1WI,5580
119
+ turnloop/tools/webfetch.py,sha256=l4rHjE79l0kuAoMMZRhYfu-_twjZyKGeHq5mQ-EY9v0,8896
120
+ turnloop/tools/write.py,sha256=YiaQq30AY67aBkdRBrJW-kKseJgcAr18URhT7NUiK-w,3984
121
+ turnloop/tui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
+ turnloop/tui/app.py,sha256=qdsy3tRWokyW_J4TEmUCiSrhFGDCryjOmeJyVii2idY,13059
123
+ turnloop/tui/app.tcss,sha256=WcNyErE74raQ6zUKE2SJWTB9IUErz0w945iLhKBDAgA,1039
124
+ turnloop/tui/bridge.py,sha256=3TjgbAyrwtd3zg1K0XpKUDgByERdJWWeEH_YeCV-2DY,5205
125
+ turnloop/tui/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
+ turnloop/tui/widgets/permission.py,sha256=UQ6KaJUmMaBjdt8KNxajzYGppwCAKZTKr5aeRJy9JhY,4665
127
+ turnloop/tui/widgets/status.py,sha256=SLwMrOCAHnggyitjri_LRV7rnV9LTr2UPvFBFDmtJxA,3649
128
+ turnloop/tui/widgets/transcript.py,sha256=sO1AW9wFdhXM29xdAi5CcXWumj3FuYe2sK4jscwGLS4,5667
129
+ turnloop-0.1.0.dist-info/METADATA,sha256=ysOOMoxIzVOH5ZUAF5rdlAoXsnXa-9OZTwtGhx_o0lA,40996
130
+ turnloop-0.1.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
131
+ turnloop-0.1.0.dist-info/entry_points.txt,sha256=Fe-djOTpH7x5NS1GitpsQSkROpR38H4oPirZ_FKyTj8,70
132
+ turnloop-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.31.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ tl = turnloop.cli:main
3
+ turnloop = turnloop.cli:main