promptosaurus 0.0.0.dev145109__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.
Files changed (329) hide show
  1. promptosaurus-0.0.0.dev145109/.coverage +0 -0
  2. promptosaurus-0.0.0.dev145109/.editorconfig +30 -0
  3. promptosaurus-0.0.0.dev145109/.github/scripts/calculate_version.py +188 -0
  4. promptosaurus-0.0.0.dev145109/.github/workflows/ci-cd.yml +526 -0
  5. promptosaurus-0.0.0.dev145109/.gitignore +77 -0
  6. promptosaurus-0.0.0.dev145109/.kilocode/rules/conventions-python.md +416 -0
  7. promptosaurus-0.0.0.dev145109/.kilocode/rules/conventions.md +150 -0
  8. promptosaurus-0.0.0.dev145109/.kilocode/rules/session.md +420 -0
  9. promptosaurus-0.0.0.dev145109/.kilocode/rules/system.md +225 -0
  10. promptosaurus-0.0.0.dev145109/.kilocode/rules-architect/data-model.md +41 -0
  11. promptosaurus-0.0.0.dev145109/.kilocode/rules-architect/scaffold.md +22 -0
  12. promptosaurus-0.0.0.dev145109/.kilocode/rules-architect/task-breakdown.md +33 -0
  13. promptosaurus-0.0.0.dev145109/.kilocode/rules-ask/decision-log-template.md +387 -0
  14. promptosaurus-0.0.0.dev145109/.kilocode/rules-ask/decision-log.md +57 -0
  15. promptosaurus-0.0.0.dev145109/.kilocode/rules-ask/docs.md +55 -0
  16. promptosaurus-0.0.0.dev145109/.kilocode/rules-ask/testing.md +111 -0
  17. promptosaurus-0.0.0.dev145109/.kilocode/rules-code/boilerplate.md +25 -0
  18. promptosaurus-0.0.0.dev145109/.kilocode/rules-code/feature.md +31 -0
  19. promptosaurus-0.0.0.dev145109/.kilocode/rules-code/house-style.md +27 -0
  20. promptosaurus-0.0.0.dev145109/.kilocode/rules-compliance/review.md +184 -0
  21. promptosaurus-0.0.0.dev145109/.kilocode/rules-debug/log-analysis.md +26 -0
  22. promptosaurus-0.0.0.dev145109/.kilocode/rules-debug/root-cause.md +35 -0
  23. promptosaurus-0.0.0.dev145109/.kilocode/rules-debug/rubber-duck.md +27 -0
  24. promptosaurus-0.0.0.dev145109/.kilocode/rules-debug/session-troubleshooting.md +471 -0
  25. promptosaurus-0.0.0.dev145109/.kilocode/rules-document/strategy-for-applications.md +128 -0
  26. promptosaurus-0.0.0.dev145109/.kilocode/rules-enforcement/enforcement.md +163 -0
  27. promptosaurus-0.0.0.dev145109/.kilocode/rules-explain/strategy.md +113 -0
  28. promptosaurus-0.0.0.dev145109/.kilocode/rules-migration/dependency-upgrade.md +30 -0
  29. promptosaurus-0.0.0.dev145109/.kilocode/rules-migration/migration.md +30 -0
  30. promptosaurus-0.0.0.dev145109/.kilocode/rules-migration/strategy.md +119 -0
  31. promptosaurus-0.0.0.dev145109/.kilocode/rules-migration/upgrade.md +30 -0
  32. promptosaurus-0.0.0.dev145109/.kilocode/rules-orchestrator/devops.md +52 -0
  33. promptosaurus-0.0.0.dev145109/.kilocode/rules-orchestrator/meta.md +34 -0
  34. promptosaurus-0.0.0.dev145109/.kilocode/rules-orchestrator/pr-description.md +210 -0
  35. promptosaurus-0.0.0.dev145109/.kilocode/rules-planning/planning.md +292 -0
  36. promptosaurus-0.0.0.dev145109/.kilocode/rules-refactor/refactor.md +31 -0
  37. promptosaurus-0.0.0.dev145109/.kilocode/rules-refactor/strategy.md +108 -0
  38. promptosaurus-0.0.0.dev145109/.kilocode/rules-review/accessibility.md +82 -0
  39. promptosaurus-0.0.0.dev145109/.kilocode/rules-review/code.md +308 -0
  40. promptosaurus-0.0.0.dev145109/.kilocode/rules-review/performance.md +77 -0
  41. promptosaurus-0.0.0.dev145109/.kilocode/rules-security/review.md +142 -0
  42. promptosaurus-0.0.0.dev145109/.kilocode/rules-test/strategy.md +107 -0
  43. promptosaurus-0.0.0.dev145109/.kilocodemodes +308 -0
  44. promptosaurus-0.0.0.dev145109/.kiloignore +34 -0
  45. promptosaurus-0.0.0.dev145109/.pre-commit-config.yaml +30 -0
  46. promptosaurus-0.0.0.dev145109/.promptosaurus/.promptosaurus.yaml +21 -0
  47. promptosaurus-0.0.0.dev145109/AGENTS.md +48 -0
  48. promptosaurus-0.0.0.dev145109/CONTRIBUTING.md +108 -0
  49. promptosaurus-0.0.0.dev145109/PKG-INFO +154 -0
  50. promptosaurus-0.0.0.dev145109/README.md +123 -0
  51. promptosaurus-0.0.0.dev145109/docs/architecture.md +730 -0
  52. promptosaurus-0.0.0.dev145109/docs/ard/builder-architecture-refactoring.md +101 -0
  53. promptosaurus-0.0.0.dev145109/docs/ard/cli-switch-update-commands.md +515 -0
  54. promptosaurus-0.0.0.dev145109/docs/ard/feature-enhancements-batch-1.md +427 -0
  55. promptosaurus-0.0.0.dev145109/docs/ard/session-context-persistence.md +1069 -0
  56. promptosaurus-0.0.0.dev145109/docs/prd/builder-architecture-refactoring.md +54 -0
  57. promptosaurus-0.0.0.dev145109/docs/prd/cli-switch-update-commands.md +275 -0
  58. promptosaurus-0.0.0.dev145109/docs/prd/feature-enhancements-batch-1.md +226 -0
  59. promptosaurus-0.0.0.dev145109/docs/prd/session-context-persistence.md +423 -0
  60. promptosaurus-0.0.0.dev145109/plans/builder-refactoring-plan.md +86 -0
  61. promptosaurus-0.0.0.dev145109/plans/kilo-builder-cli-ide-targets.md +108 -0
  62. promptosaurus-0.0.0.dev145109/promptosaurus/PROMPTOSAURUS.md +281 -0
  63. promptosaurus-0.0.0.dev145109/promptosaurus/__init__.py +10 -0
  64. promptosaurus-0.0.0.dev145109/promptosaurus/artifacts.py +197 -0
  65. promptosaurus-0.0.0.dev145109/promptosaurus/builders/BUILDERS.md +257 -0
  66. promptosaurus-0.0.0.dev145109/promptosaurus/builders/__init__.py +15 -0
  67. promptosaurus-0.0.0.dev145109/promptosaurus/builders/builder.py +109 -0
  68. promptosaurus-0.0.0.dev145109/promptosaurus/builders/cline.py +113 -0
  69. promptosaurus-0.0.0.dev145109/promptosaurus/builders/config.py +226 -0
  70. promptosaurus-0.0.0.dev145109/promptosaurus/builders/copilot.py +226 -0
  71. promptosaurus-0.0.0.dev145109/promptosaurus/builders/cursor.py +158 -0
  72. promptosaurus-0.0.0.dev145109/promptosaurus/builders/ignore_generator.py +215 -0
  73. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/AGENTS_KILO_CLI.md +59 -0
  74. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/AGENTS_KILO_IDE.md +48 -0
  75. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/KILO.md +264 -0
  76. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/__init__.py +25 -0
  77. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/kilo_cli.py +199 -0
  78. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/kilo_code_builder.py +486 -0
  79. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/kilo_ide.py +259 -0
  80. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/kilo_language_file_map.yaml +34 -0
  81. promptosaurus-0.0.0.dev145109/promptosaurus/builders/kilo/kilo_modes.yaml +308 -0
  82. promptosaurus-0.0.0.dev145109/promptosaurus/builders/utils.py +113 -0
  83. promptosaurus-0.0.0.dev145109/promptosaurus/cli.py +489 -0
  84. promptosaurus-0.0.0.dev145109/promptosaurus/cli_utils.py +104 -0
  85. promptosaurus-0.0.0.dev145109/promptosaurus/config_handler.py +208 -0
  86. promptosaurus-0.0.0.dev145109/promptosaurus/config_options.py +250 -0
  87. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/architect/subagents/architect-data-model.md +41 -0
  88. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/architect/subagents/architect-scaffold.md +22 -0
  89. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/architect/subagents/architect-task-breakdown.md +33 -0
  90. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/ask/subagents/ask-decision-log.md +57 -0
  91. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/ask/subagents/ask-docs.md +55 -0
  92. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/ask/subagents/ask-testing.md +111 -0
  93. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/code/subagents/code-boilerplate.md +25 -0
  94. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/code/subagents/code-dependency-upgrade.md +30 -0
  95. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/code/subagents/code-feature.md +31 -0
  96. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/code/subagents/code-house-style.md +27 -0
  97. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/code/subagents/code-migration.md +30 -0
  98. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/code/subagents/code-refactor.md +31 -0
  99. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/compliance/subagents/compliance-review.md +184 -0
  100. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-c.md +83 -0
  101. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-clojure.md +38 -0
  102. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-cpp.md +86 -0
  103. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-csharp.md +90 -0
  104. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-dart.md +49 -0
  105. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-elixir.md +99 -0
  106. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-elm.md +81 -0
  107. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-fsharp.md +37 -0
  108. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-golang.md +125 -0
  109. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-groovy.md +34 -0
  110. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-haskell.md +38 -0
  111. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-html.md +76 -0
  112. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-java.md +113 -0
  113. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-javascript.md +87 -0
  114. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-julia.md +36 -0
  115. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-kotlin.md +87 -0
  116. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-lua.md +36 -0
  117. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-objc.md +51 -0
  118. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-php.md +76 -0
  119. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-python.md +416 -0
  120. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-r.md +82 -0
  121. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-ruby.md +77 -0
  122. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-rust.md +110 -0
  123. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-scala.md +89 -0
  124. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-shell.md +42 -0
  125. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-sql.md +131 -0
  126. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-swift.md +83 -0
  127. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-terraform.md +113 -0
  128. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions-typescript.md +127 -0
  129. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-conventions.md +150 -0
  130. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-decision-log-template.md +387 -0
  131. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-session-troubleshooting.md +471 -0
  132. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-session.md +429 -0
  133. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/core/core-system.md +248 -0
  134. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/debug/subagents/debug-log-analysis.md +26 -0
  135. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/debug/subagents/debug-root-cause.md +35 -0
  136. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/debug/subagents/debug-rubber-duck.md +27 -0
  137. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/document/subagents/document-strategy-for-applications.md +128 -0
  138. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/enforcement/enforcement.md +163 -0
  139. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/explain/subagents/explain-strategy.md +113 -0
  140. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/migration/subagents/migration-strategy.md +119 -0
  141. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/orchestrator/subagents/orchestrator-devops.md +52 -0
  142. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/orchestrator/subagents/orchestrator-meta.md +34 -0
  143. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/orchestrator/subagents/orchestrator-pr-description.md +210 -0
  144. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/project_planning/planning.md +292 -0
  145. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/refactor/subagents/refactor-strategy.md +108 -0
  146. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/review/subagents/review-accessibility.md +82 -0
  147. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/review/subagents/review-code.md +308 -0
  148. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/review/subagents/review-performance.md +77 -0
  149. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/security/subagents/security-review.md +142 -0
  150. promptosaurus-0.0.0.dev145109/promptosaurus/prompts/agents/test/subagents/test-strategy.md +107 -0
  151. promptosaurus-0.0.0.dev145109/promptosaurus/questions/QUESTIONS.md +236 -0
  152. promptosaurus-0.0.0.dev145109/promptosaurus/questions/__init__.py +0 -0
  153. promptosaurus-0.0.0.dev145109/promptosaurus/questions/base/__init__.py +0 -0
  154. promptosaurus-0.0.0.dev145109/promptosaurus/questions/base/constants.py +7 -0
  155. promptosaurus-0.0.0.dev145109/promptosaurus/questions/base/folder_mapping_question.py +37 -0
  156. promptosaurus-0.0.0.dev145109/promptosaurus/questions/base/question.py +224 -0
  157. promptosaurus-0.0.0.dev145109/promptosaurus/questions/base/repository_type_question.py +41 -0
  158. promptosaurus-0.0.0.dev145109/promptosaurus/questions/clojure/__init__.py +0 -0
  159. promptosaurus-0.0.0.dev145109/promptosaurus/questions/clojure/clojure_build_tool_question.py +39 -0
  160. promptosaurus-0.0.0.dev145109/promptosaurus/questions/clojure/clojure_version_question.py +38 -0
  161. promptosaurus-0.0.0.dev145109/promptosaurus/questions/csharp/__init__.py +1 -0
  162. promptosaurus-0.0.0.dev145109/promptosaurus/questions/csharp/csharp_framework_question.py +39 -0
  163. promptosaurus-0.0.0.dev145109/promptosaurus/questions/csharp/csharp_test_framework_question.py +38 -0
  164. promptosaurus-0.0.0.dev145109/promptosaurus/questions/csharp/csharp_version_question.py +40 -0
  165. promptosaurus-0.0.0.dev145109/promptosaurus/questions/dart/__init__.py +0 -0
  166. promptosaurus-0.0.0.dev145109/promptosaurus/questions/dart/dart_test_framework_question.py +37 -0
  167. promptosaurus-0.0.0.dev145109/promptosaurus/questions/dart/dart_version_question.py +39 -0
  168. promptosaurus-0.0.0.dev145109/promptosaurus/questions/elixir/__init__.py +0 -0
  169. promptosaurus-0.0.0.dev145109/promptosaurus/questions/elixir/elixir_test_framework_question.py +37 -0
  170. promptosaurus-0.0.0.dev145109/promptosaurus/questions/elixir/elixir_version_question.py +39 -0
  171. promptosaurus-0.0.0.dev145109/promptosaurus/questions/elm/__init__.py +0 -0
  172. promptosaurus-0.0.0.dev145109/promptosaurus/questions/elm/elm_test_framework_question.py +37 -0
  173. promptosaurus-0.0.0.dev145109/promptosaurus/questions/elm/elm_version_question.py +37 -0
  174. promptosaurus-0.0.0.dev145109/promptosaurus/questions/fsharp/__init__.py +0 -0
  175. promptosaurus-0.0.0.dev145109/promptosaurus/questions/fsharp/fsharp_framework_question.py +39 -0
  176. promptosaurus-0.0.0.dev145109/promptosaurus/questions/fsharp/fsharp_version_question.py +39 -0
  177. promptosaurus-0.0.0.dev145109/promptosaurus/questions/go/__init__.py +0 -0
  178. promptosaurus-0.0.0.dev145109/promptosaurus/questions/go/go_formatter_question.py +43 -0
  179. promptosaurus-0.0.0.dev145109/promptosaurus/questions/go/go_linter_question.py +43 -0
  180. promptosaurus-0.0.0.dev145109/promptosaurus/questions/go/go_test_framework_question.py +38 -0
  181. promptosaurus-0.0.0.dev145109/promptosaurus/questions/go/go_version_question.py +41 -0
  182. promptosaurus-0.0.0.dev145109/promptosaurus/questions/groovy/__init__.py +0 -0
  183. promptosaurus-0.0.0.dev145109/promptosaurus/questions/groovy/groovy_version_question.py +38 -0
  184. promptosaurus-0.0.0.dev145109/promptosaurus/questions/handlers/__init__.py +0 -0
  185. promptosaurus-0.0.0.dev145109/promptosaurus/questions/handlers/handle_single_language_questions.py +90 -0
  186. promptosaurus-0.0.0.dev145109/promptosaurus/questions/handlers/language_question_handler.py +25 -0
  187. promptosaurus-0.0.0.dev145109/promptosaurus/questions/haskell/__init__.py +0 -0
  188. promptosaurus-0.0.0.dev145109/promptosaurus/questions/haskell/haskell_build_tool_question.py +38 -0
  189. promptosaurus-0.0.0.dev145109/promptosaurus/questions/haskell/haskell_compiler_question.py +37 -0
  190. promptosaurus-0.0.0.dev145109/promptosaurus/questions/html/__init__.py +0 -0
  191. promptosaurus-0.0.0.dev145109/promptosaurus/questions/html/html_formatter_question.py +40 -0
  192. promptosaurus-0.0.0.dev145109/promptosaurus/questions/html/html_linter_question.py +40 -0
  193. promptosaurus-0.0.0.dev145109/promptosaurus/questions/html/html_version_question.py +39 -0
  194. promptosaurus-0.0.0.dev145109/promptosaurus/questions/java/__init__.py +1 -0
  195. promptosaurus-0.0.0.dev145109/promptosaurus/questions/java/java_build_tool_question.py +39 -0
  196. promptosaurus-0.0.0.dev145109/promptosaurus/questions/java/java_linter_question.py +43 -0
  197. promptosaurus-0.0.0.dev145109/promptosaurus/questions/java/java_test_framework_question.py +38 -0
  198. promptosaurus-0.0.0.dev145109/promptosaurus/questions/java/java_version_question.py +41 -0
  199. promptosaurus-0.0.0.dev145109/promptosaurus/questions/julia/__init__.py +0 -0
  200. promptosaurus-0.0.0.dev145109/promptosaurus/questions/julia/julia_package_manager_question.py +37 -0
  201. promptosaurus-0.0.0.dev145109/promptosaurus/questions/julia/julia_version_question.py +39 -0
  202. promptosaurus-0.0.0.dev145109/promptosaurus/questions/kotlin/__init__.py +0 -0
  203. promptosaurus-0.0.0.dev145109/promptosaurus/questions/kotlin/kotlin_build_tool_question.py +37 -0
  204. promptosaurus-0.0.0.dev145109/promptosaurus/questions/kotlin/kotlin_version_question.py +39 -0
  205. promptosaurus-0.0.0.dev145109/promptosaurus/questions/language.py +176 -0
  206. promptosaurus-0.0.0.dev145109/promptosaurus/questions/lua/__init__.py +0 -0
  207. promptosaurus-0.0.0.dev145109/promptosaurus/questions/lua/lua_test_framework_question.py +37 -0
  208. promptosaurus-0.0.0.dev145109/promptosaurus/questions/lua/lua_version_question.py +39 -0
  209. promptosaurus-0.0.0.dev145109/promptosaurus/questions/php/__init__.py +0 -0
  210. promptosaurus-0.0.0.dev145109/promptosaurus/questions/php/php_package_manager_question.py +36 -0
  211. promptosaurus-0.0.0.dev145109/promptosaurus/questions/php/php_test_framework_question.py +37 -0
  212. promptosaurus-0.0.0.dev145109/promptosaurus/questions/php/php_version_question.py +40 -0
  213. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/__init__.py +0 -0
  214. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_abstract_class_style_question.py +36 -0
  215. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_coverage_targets_question.py +58 -0
  216. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_coverage_tool_question.py +36 -0
  217. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_formatter_question.py +43 -0
  218. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_linter_question.py +50 -0
  219. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_mocking_library_question.py +56 -0
  220. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_mutation_tool_question.py +43 -0
  221. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_package_manager_question.py +41 -0
  222. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_runtime_question.py +42 -0
  223. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_test_framework_question.py +38 -0
  224. promptosaurus-0.0.0.dev145109/promptosaurus/questions/python/python_test_runner_question.py +38 -0
  225. promptosaurus-0.0.0.dev145109/promptosaurus/questions/question_pipelines.yaml +131 -0
  226. promptosaurus-0.0.0.dev145109/promptosaurus/questions/r/__init__.py +0 -0
  227. promptosaurus-0.0.0.dev145109/promptosaurus/questions/r/r_package_manager_question.py +38 -0
  228. promptosaurus-0.0.0.dev145109/promptosaurus/questions/r/r_version_question.py +39 -0
  229. promptosaurus-0.0.0.dev145109/promptosaurus/questions/ruby/__init__.py +0 -0
  230. promptosaurus-0.0.0.dev145109/promptosaurus/questions/ruby/ruby_linter_question.py +41 -0
  231. promptosaurus-0.0.0.dev145109/promptosaurus/questions/ruby/ruby_package_manager_question.py +37 -0
  232. promptosaurus-0.0.0.dev145109/promptosaurus/questions/ruby/ruby_test_framework_question.py +37 -0
  233. promptosaurus-0.0.0.dev145109/promptosaurus/questions/ruby/ruby_version_question.py +40 -0
  234. promptosaurus-0.0.0.dev145109/promptosaurus/questions/rust/__init__.py +0 -0
  235. promptosaurus-0.0.0.dev145109/promptosaurus/questions/rust/rust_formatter_question.py +38 -0
  236. promptosaurus-0.0.0.dev145109/promptosaurus/questions/rust/rust_linter_question.py +41 -0
  237. promptosaurus-0.0.0.dev145109/promptosaurus/questions/rust/rust_package_manager_question.py +38 -0
  238. promptosaurus-0.0.0.dev145109/promptosaurus/questions/rust/rust_test_framework_question.py +36 -0
  239. promptosaurus-0.0.0.dev145109/promptosaurus/questions/rust/rust_version_question.py +41 -0
  240. promptosaurus-0.0.0.dev145109/promptosaurus/questions/scala/__init__.py +0 -0
  241. promptosaurus-0.0.0.dev145109/promptosaurus/questions/scala/scala_build_tool_question.py +39 -0
  242. promptosaurus-0.0.0.dev145109/promptosaurus/questions/scala/scala_test_framework_question.py +39 -0
  243. promptosaurus-0.0.0.dev145109/promptosaurus/questions/scala/scala_version_question.py +39 -0
  244. promptosaurus-0.0.0.dev145109/promptosaurus/questions/shell/__init__.py +0 -0
  245. promptosaurus-0.0.0.dev145109/promptosaurus/questions/shell/shell_linter_question.py +37 -0
  246. promptosaurus-0.0.0.dev145109/promptosaurus/questions/shell/shell_type_question.py +39 -0
  247. promptosaurus-0.0.0.dev145109/promptosaurus/questions/sql/__init__.py +0 -0
  248. promptosaurus-0.0.0.dev145109/promptosaurus/questions/sql/sql_dialect_question.py +40 -0
  249. promptosaurus-0.0.0.dev145109/promptosaurus/questions/swift/__init__.py +0 -0
  250. promptosaurus-0.0.0.dev145109/promptosaurus/questions/swift/swift_package_manager_question.py +39 -0
  251. promptosaurus-0.0.0.dev145109/promptosaurus/questions/swift/swift_test_framework_question.py +37 -0
  252. promptosaurus-0.0.0.dev145109/promptosaurus/questions/swift/swift_version_question.py +39 -0
  253. promptosaurus-0.0.0.dev145109/promptosaurus/questions/terraform/__init__.py +0 -0
  254. promptosaurus-0.0.0.dev145109/promptosaurus/questions/terraform/terraform_version_question.py +39 -0
  255. promptosaurus-0.0.0.dev145109/promptosaurus/questions/typescript/__init__.py +0 -0
  256. promptosaurus-0.0.0.dev145109/promptosaurus/questions/typescript/typescript_framework_question.py +43 -0
  257. promptosaurus-0.0.0.dev145109/promptosaurus/questions/typescript/typescript_package_manager_question.py +39 -0
  258. promptosaurus-0.0.0.dev145109/promptosaurus/questions/typescript/typescript_test_framework_question.py +39 -0
  259. promptosaurus-0.0.0.dev145109/promptosaurus/questions/typescript/typescript_version_question.py +40 -0
  260. promptosaurus-0.0.0.dev145109/promptosaurus/registry.py +671 -0
  261. promptosaurus-0.0.0.dev145109/promptosaurus/ui/UI.md +263 -0
  262. promptosaurus-0.0.0.dev145109/promptosaurus/ui/__init__.py +60 -0
  263. promptosaurus-0.0.0.dev145109/promptosaurus/ui/_selector.py +162 -0
  264. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/__init__.py +1 -0
  265. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/command.py +78 -0
  266. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/confirm.py +56 -0
  267. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/explain.py +16 -0
  268. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/navigate.py +21 -0
  269. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/noop.py +13 -0
  270. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/quit.py +13 -0
  271. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/result.py +22 -0
  272. promptosaurus-0.0.0.dev145109/promptosaurus/ui/commands/select.py +23 -0
  273. promptosaurus-0.0.0.dev145109/promptosaurus/ui/domain/__init__.py +1 -0
  274. promptosaurus-0.0.0.dev145109/promptosaurus/ui/domain/context.py +188 -0
  275. promptosaurus-0.0.0.dev145109/promptosaurus/ui/domain/events.py +85 -0
  276. promptosaurus-0.0.0.dev145109/promptosaurus/ui/domain/input_provider.py +72 -0
  277. promptosaurus-0.0.0.dev145109/promptosaurus/ui/domain/renderer.py +55 -0
  278. promptosaurus-0.0.0.dev145109/promptosaurus/ui/exceptions.py +7 -0
  279. promptosaurus-0.0.0.dev145109/promptosaurus/ui/input/__init__.py +1 -0
  280. promptosaurus-0.0.0.dev145109/promptosaurus/ui/input/fallback.py +45 -0
  281. promptosaurus-0.0.0.dev145109/promptosaurus/ui/input/unix.py +66 -0
  282. promptosaurus-0.0.0.dev145109/promptosaurus/ui/input/windows.py +54 -0
  283. promptosaurus-0.0.0.dev145109/promptosaurus/ui/pipeline/__init__.py +1 -0
  284. promptosaurus-0.0.0.dev145109/promptosaurus/ui/pipeline/command_factory.py +31 -0
  285. promptosaurus-0.0.0.dev145109/promptosaurus/ui/pipeline/orchestrator.py +184 -0
  286. promptosaurus-0.0.0.dev145109/promptosaurus/ui/pipeline/render_stage.py +52 -0
  287. promptosaurus-0.0.0.dev145109/promptosaurus/ui/pipeline/state_update_stage.py +13 -0
  288. promptosaurus-0.0.0.dev145109/promptosaurus/ui/render/__init__.py +1 -0
  289. promptosaurus-0.0.0.dev145109/promptosaurus/ui/render/columns.py +34 -0
  290. promptosaurus-0.0.0.dev145109/promptosaurus/ui/render/explain.py +27 -0
  291. promptosaurus-0.0.0.dev145109/promptosaurus/ui/render/renderer.py +11 -0
  292. promptosaurus-0.0.0.dev145109/promptosaurus/ui/render/vertical.py +37 -0
  293. promptosaurus-0.0.0.dev145109/promptosaurus/ui/state/__init__.py +1 -0
  294. promptosaurus-0.0.0.dev145109/promptosaurus/ui/state/multi_selection_state.py +147 -0
  295. promptosaurus-0.0.0.dev145109/promptosaurus/ui/state/mutual_exclusion_multi_selection_state.py +89 -0
  296. promptosaurus-0.0.0.dev145109/promptosaurus/ui/state/selection_state.py +103 -0
  297. promptosaurus-0.0.0.dev145109/promptosaurus/ui/state/single_selection_state.py +135 -0
  298. promptosaurus-0.0.0.dev145109/promptosaurus/ui/ui_factory.py +56 -0
  299. promptosaurus-0.0.0.dev145109/pyproject.toml +111 -0
  300. promptosaurus-0.0.0.dev145109/tests/__init__.py +1 -0
  301. promptosaurus-0.0.0.dev145109/tests/conftest.py +19 -0
  302. promptosaurus-0.0.0.dev145109/tests/integration/__init__.py +1 -0
  303. promptosaurus-0.0.0.dev145109/tests/integration/test_integration.py +11 -0
  304. promptosaurus-0.0.0.dev145109/tests/security/__init__.py +1 -0
  305. promptosaurus-0.0.0.dev145109/tests/security/test_security.py +15 -0
  306. promptosaurus-0.0.0.dev145109/tests/slow/__init__.py +1 -0
  307. promptosaurus-0.0.0.dev145109/tests/slow/test_slow.py +14 -0
  308. promptosaurus-0.0.0.dev145109/tests/unit/__init__.py +1 -0
  309. promptosaurus-0.0.0.dev145109/tests/unit/builders/__init__.py +1 -0
  310. promptosaurus-0.0.0.dev145109/tests/unit/builders/test_builder.py +40 -0
  311. promptosaurus-0.0.0.dev145109/tests/unit/builders/test_cline.py +48 -0
  312. promptosaurus-0.0.0.dev145109/tests/unit/builders/test_copilot.py +49 -0
  313. promptosaurus-0.0.0.dev145109/tests/unit/builders/test_cursor.py +49 -0
  314. promptosaurus-0.0.0.dev145109/tests/unit/builders/test_kilo.py +288 -0
  315. promptosaurus-0.0.0.dev145109/tests/unit/builders/test_kilo_ide.py +143 -0
  316. promptosaurus-0.0.0.dev145109/tests/unit/questions/__init__.py +1 -0
  317. promptosaurus-0.0.0.dev145109/tests/unit/questions/python/__init__.py +1 -0
  318. promptosaurus-0.0.0.dev145109/tests/unit/questions/python/test_python_questions.py +248 -0
  319. promptosaurus-0.0.0.dev145109/tests/unit/questions/test_base.py +127 -0
  320. promptosaurus-0.0.0.dev145109/tests/unit/questions/test_handlers.py +75 -0
  321. promptosaurus-0.0.0.dev145109/tests/unit/questions/test_language.py +51 -0
  322. promptosaurus-0.0.0.dev145109/tests/unit/questions/test_typescript.py +52 -0
  323. promptosaurus-0.0.0.dev145109/tests/unit/test_config.py +156 -0
  324. promptosaurus-0.0.0.dev145109/tests/unit/test_questions.py +449 -0
  325. promptosaurus-0.0.0.dev145109/tests/unit/test_registry.py +106 -0
  326. promptosaurus-0.0.0.dev145109/tests/unit/ui/test_factory.py +105 -0
  327. promptosaurus-0.0.0.dev145109/tests/unit/ui/test_renderers.py +134 -0
  328. promptosaurus-0.0.0.dev145109/tests/unit/ui/test_state.py +145 -0
  329. promptosaurus-0.0.0.dev145109/uv.lock +760 -0
Binary file
@@ -0,0 +1,30 @@
1
+ # EditorConfig is awesome: https://EditorConfig.org
2
+
3
+ root = true
4
+
5
+ [*]
6
+ charset = utf-8
7
+ end_of_line = lf
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.py]
12
+ indent_style = space
13
+ indent_size = 4
14
+ max_line_length = 100
15
+
16
+ [*.{yaml,yml,toml}]
17
+ indent_style = space
18
+ indent_size = 2
19
+
20
+ [*.{md,json}]
21
+ indent_style = space
22
+ indent_size = 2
23
+ trim_trailing_whitespace = false
24
+
25
+ [*.sh]
26
+ indent_style = space
27
+ indent_size = 4
28
+
29
+ [Makefile]
30
+ indent_style = tab
@@ -0,0 +1,188 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Derived Version Calculator for Trunk-Based Development.
4
+
5
+ Version Schema: MAJOR.MINOR.PATCH[-RUN]
6
+
7
+ - MAJOR: From CI/CD environment (MAJOR_VERSION)
8
+ - MINOR: Latest MINOR on PyPI for that MAJOR + 1
9
+ - PATCH: PR number (or timestamp hash for non-PR pushes)
10
+ - -RUN: GitHub run number (only for TestPyPI preview builds)
11
+
12
+ PyPI is queried to determine the baseline version. If PyPI query fails,
13
+ the build fails (strict mode for first-release setup).
14
+ """
15
+
16
+ import json
17
+ import os
18
+ import re
19
+ import sys
20
+ import urllib.request
21
+ from datetime import datetime
22
+
23
+
24
+ class VersionCalculator:
25
+ """Calculates version based on PyPI release history."""
26
+
27
+ def __init__(self, package_name: str = "promptosaurus"):
28
+ self.package_name = package_name
29
+
30
+ def get_pypi_version(self) -> tuple[int, int] | None:
31
+ """
32
+ Query PyPI for the latest published version.
33
+
34
+ Returns:
35
+ Tuple of (major, minor) or None if not found
36
+ """
37
+ try:
38
+ # Strip package name to handle any whitespace issues
39
+ package = self.package_name.strip()
40
+ url = f"https://pypi.org/pypi/{package}/json"
41
+ print(f"Querying PyPI: {url}")
42
+ with urllib.request.urlopen(url, timeout=10) as response:
43
+ data = json.loads(response.read())
44
+ version = data["info"]["version"]
45
+
46
+ # Parse version (handle formats like 1.2.3, 1.2.3-beta, etc.)
47
+ # Strip any pre-release/local suffixes
48
+ # PEP 440: X.Y.Y.devN, X.Y.YaN, X.Y.YbN, X.Y.YrcN, X.Y.Y, X.Y.Y.postN, X.Y.Y+local
49
+ # Only split on . and + to preserve the base version
50
+ version = re.split(r"[.+]", version)[0]
51
+ parts = version.split(".")
52
+
53
+ major = int(parts[0]) if len(parts) > 0 else 0
54
+ minor = int(parts[1]) if len(parts) > 1 else 0
55
+
56
+ return (major, minor)
57
+ except Exception as e:
58
+ print(f"PyPI query failed: {e}", file=sys.stderr)
59
+ return None
60
+
61
+ def calculate_version(
62
+ self,
63
+ major: int,
64
+ pr_number: str | None,
65
+ run_number: str | None,
66
+ is_testpypi: bool,
67
+ is_pr: bool,
68
+ ) -> str:
69
+ """
70
+ Calculate version based on PyPI history and PR context.
71
+
72
+ Args:
73
+ major: MAJOR version from environment
74
+ pr_number: PR number from GitHub event
75
+ run_number: GitHub run number
76
+ is_testpypi: Whether this is a TestPyPI build
77
+ is_pr: Whether this is a PR event
78
+
79
+ Returns:
80
+ Version string
81
+ """
82
+ # Query PyPI for latest version
83
+ pypi_version = self.get_pypi_version()
84
+
85
+ if pypi_version is None:
86
+ # First release: use MAJOR.0.PR{-RUN}
87
+ # No previous version exists
88
+ new_minor = 0
89
+ else:
90
+ pypi_major, pypi_minor = pypi_version
91
+
92
+ # Calculate new MINOR
93
+ # If MAJOR matches: increment MINOR from latest
94
+ # If MAJOR different: start fresh at MINOR 1
95
+ if pypi_major == major:
96
+ new_minor = pypi_minor + 1
97
+ else:
98
+ new_minor = 1
99
+
100
+ # PATCH is PR number for PRs, or timestamp-based for non-PR pushes
101
+ if pr_number is None:
102
+ if is_pr:
103
+ print("ERROR: PR number is required for PR builds")
104
+ sys.exit(1)
105
+ # For non-PR pushes (feature branches), use timestamp-based dev version
106
+ # Format: 0.0.0.devHHMMSS where HHMMSS is hour/minute/second
107
+ now = datetime.now()
108
+ dev_suffix = now.strftime("%H%M%S")
109
+ version = f"{major}.{new_minor}.0.dev{dev_suffix}"
110
+ print(f"Non-PR push: using dev version {version}")
111
+ return version
112
+
113
+ # Build version: MAJOR.MINOR.PATCH[-RUN]
114
+ version = f"{major}.{new_minor}.{pr_number}"
115
+
116
+ # Append run number only for TestPyPI preview builds
117
+ # Use .dev for development version (PEP 440 compliant for TestPyPI)
118
+ if is_testpypi and run_number:
119
+ version = f"{version}.dev{run_number}"
120
+
121
+ return version
122
+
123
+
124
+ def main():
125
+ """Main entry point for CI/CD integration."""
126
+ # Get package name from environment or use default (strip whitespace)
127
+ package_name = os.environ.get("PACKAGE_NAME", "promptosaurus").strip()
128
+
129
+ # Get MAJOR version from environment
130
+ env_major = os.environ.get("MAJOR_VERSION", "0").strip()
131
+ try:
132
+ major = int(env_major)
133
+ except ValueError:
134
+ print(f"ERROR: Invalid MAJOR_VERSION '{env_major}', defaulting to 0")
135
+ major = 0
136
+
137
+ # Get GitHub context
138
+ event_name = os.environ.get("GITHUB_EVENT_NAME", "push").strip()
139
+ action = os.environ.get("GITHUB_ACTION", "").strip()
140
+ base_ref = os.environ.get("GITHUB_BASE_REF", "").strip()
141
+ run_number = os.environ.get("GITHUB_RUN_NUMBER", "").strip()
142
+
143
+ # Determine if this is a PR
144
+ is_pr = event_name == "pull_request"
145
+ is_pr_to_main = base_ref == "refs/heads/main" or base_ref == "main"
146
+
147
+ # Extract PR number from event
148
+ pr_number = None
149
+ if is_pr:
150
+ # Try to get PR number from GITHUB_REF (format: refs/pull/28/merge)
151
+ ref = os.environ.get("GITHUB_REF", "").strip()
152
+ match = re.search(r"refs/pull/(\d+)/", ref)
153
+ if match:
154
+ pr_number = match.group(1)
155
+
156
+ # Determine publishing targets
157
+ is_testpypi = is_pr and is_pr_to_main and action != "closed"
158
+ is_pypi = is_pr and action == "closed" and is_pr_to_main
159
+
160
+ # Calculate version
161
+ calculator = VersionCalculator(package_name)
162
+ version = calculator.calculate_version(
163
+ major=major,
164
+ pr_number=pr_number,
165
+ run_number=run_number,
166
+ is_testpypi=is_testpypi,
167
+ is_pr=is_pr,
168
+ )
169
+
170
+ # Output for GitHub Actions
171
+ if "GITHUB_OUTPUT" in os.environ:
172
+ with open(os.environ["GITHUB_OUTPUT"], "a") as f:
173
+ f.write(f"version={version}\n")
174
+ f.write(f"should_publish_testpypi={str(is_testpypi).lower()}\n")
175
+ f.write(f"should_publish_pypi={str(is_pypi).lower()}\n")
176
+
177
+ print(f"Version: {version}")
178
+ print(f"Publish TestPyPI: {is_testpypi}")
179
+ print(f"Publish PyPI: {is_pypi}")
180
+ print(f"PR Number: {pr_number}")
181
+ print(f"Major: {major}")
182
+ print(f"Is PR: {is_pr}")
183
+
184
+ return version
185
+
186
+
187
+ if __name__ == "__main__":
188
+ main()