programasweights 0.2.4__tar.gz → 0.2.5__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 (501) hide show
  1. {programasweights-0.2.4 → programasweights-0.2.5}/AGENTS.md +22 -2
  2. {programasweights-0.2.4 → programasweights-0.2.5}/CHANGELOG.md +11 -0
  3. {programasweights-0.2.4 → programasweights-0.2.5}/PKG-INFO +1 -1
  4. {programasweights-0.2.4 → programasweights-0.2.5}/docs/api-reference/python-sdk.md +4 -2
  5. {programasweights-0.2.4 → programasweights-0.2.5}/docs/api-reference/rest-api.md +10 -2
  6. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/__init__.py +1 -1
  7. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/runtime_llamacpp.py +15 -4
  8. {programasweights-0.2.4 → programasweights-0.2.5}/pyproject.toml +1 -1
  9. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/main.py +7 -1
  10. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/auth.py +13 -1
  11. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/compile.py +20 -7
  12. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/health.py +3 -1
  13. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/infer.py +2 -2
  14. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/programs.py +3 -1
  15. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/App.tsx +15 -1
  16. programasweights-0.2.5/web-app/frontend/src/components/AgentsPage.tsx +92 -0
  17. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/BrowserPage.tsx +50 -17
  18. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/DocsPage.tsx +1 -1
  19. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/Footer.tsx +21 -3
  20. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/Header.tsx +14 -2
  21. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/HubProgramPage.tsx +3 -3
  22. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/LandingPage.tsx +1 -1
  23. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/MainInterface.tsx +2 -2
  24. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/SettingsPage.tsx +1 -1
  25. programasweights-0.2.4/web-app/backend/app/__init__.py +0 -1
  26. programasweights-0.2.4/web-app/backend/app/config.py +0 -71
  27. programasweights-0.2.4/web-app/backend/app/main.py +0 -1463
  28. programasweights-0.2.4/web-app/backend/app/middleware/__init__.py +0 -1
  29. programasweights-0.2.4/web-app/backend/app/middleware/rate_limit.py +0 -58
  30. programasweights-0.2.4/web-app/backend/app/models.py +0 -123
  31. programasweights-0.2.4/web-app/backend/app/services/__init__.py +0 -13
  32. programasweights-0.2.4/web-app/backend/app/services/auth_service.py +0 -172
  33. programasweights-0.2.4/web-app/backend/app/services/case_service.py +0 -201
  34. programasweights-0.2.4/web-app/backend/app/services/compiler_service.py +0 -202
  35. programasweights-0.2.4/web-app/backend/app/services/gpt_service.py +0 -166
  36. programasweights-0.2.4/web-app/backend/app/services/hub_service.py +0 -291
  37. programasweights-0.2.4/web-app/backend/app/services/image_service.py +0 -127
  38. programasweights-0.2.4/web-app/backend/app/services/interpreter_service.py +0 -179
  39. programasweights-0.2.4/web-app/backend/app/services/sql_manager.py +0 -1324
  40. programasweights-0.2.4/web-app/backend/app/templates/gpt_test_generation.txt +0 -42
  41. programasweights-0.2.4/web-app/backend/app/utils/__init__.py +0 -1
  42. programasweights-0.2.4/web-app/backend/app/utils/image_placeholders.py +0 -147
  43. programasweights-0.2.4/web-app/backend/app/utils/program_hash.py +0 -211
  44. programasweights-0.2.4/web-app/backend/clear_db.sh +0 -62
  45. programasweights-0.2.4/web-app/backend/clear_tables.sql +0 -29
  46. programasweights-0.2.4/web-app/backend/data/programs.db +0 -0
  47. programasweights-0.2.4/web-app/backend/env_example.txt +0 -24
  48. programasweights-0.2.4/web-app/backend/example_images/README.md +0 -140
  49. programasweights-0.2.4/web-app/backend/get_data_examples.py +0 -55
  50. programasweights-0.2.4/web-app/backend/requirements.txt +0 -10
  51. programasweights-0.2.4/web-app/backend/run_server.py +0 -27
  52. programasweights-0.2.4/web-app/backend/setup_analytics_tables.sql +0 -16
  53. programasweights-0.2.4/web-app/backend/setup_auth_tables.sql +0 -30
  54. programasweights-0.2.4/web-app/backend/setup_cache_tables.sql +0 -73
  55. programasweights-0.2.4/web-app/backend/setup_cases_tables.sql +0 -36
  56. programasweights-0.2.4/web-app/backend/setup_database.sql +0 -248
  57. programasweights-0.2.4/web-app/backend/setup_database_simple.sql +0 -113
  58. programasweights-0.2.4/web-app/backend/setup_db.sh +0 -52
  59. programasweights-0.2.4/web-app/backend/setup_example_images.py +0 -166
  60. programasweights-0.2.4/web-app/backend/setup_hub_tables.sql +0 -74
  61. programasweights-0.2.4/web-app/backend/test_compilation_cache.py +0 -85
  62. programasweights-0.2.4/web-app/frontend/src/components/AgentsPage.tsx +0 -268
  63. programasweights-0.2.4/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -115
  64. programasweights-0.2.4/web-app/frontend/src/components/CompileSection.tsx +0 -74
  65. programasweights-0.2.4/web-app/frontend/src/components/ExamplesInput.tsx +0 -74
  66. programasweights-0.2.4/web-app/frontend/src/components/ModelSelector.tsx +0 -55
  67. programasweights-0.2.4/web-app/frontend/src/components/TestSection.tsx +0 -122
  68. {programasweights-0.2.4 → programasweights-0.2.5}/.cursor/rules/sdk-publishing.mdc +0 -0
  69. {programasweights-0.2.4 → programasweights-0.2.5}/.cursor/rules/vllm-deployment.mdc +0 -0
  70. {programasweights-0.2.4 → programasweights-0.2.5}/.git +0 -0
  71. {programasweights-0.2.4 → programasweights-0.2.5}/.github/workflows/web-sdk.yml +0 -0
  72. {programasweights-0.2.4 → programasweights-0.2.5}/.gitignore +0 -0
  73. {programasweights-0.2.4 → programasweights-0.2.5}/.gitmodules +0 -0
  74. {programasweights-0.2.4 → programasweights-0.2.5}/.hatch_build.toml +0 -0
  75. {programasweights-0.2.4 → programasweights-0.2.5}/.readthedocs.yaml +0 -0
  76. {programasweights-0.2.4 → programasweights-0.2.5}/1apple.jpg +0 -0
  77. {programasweights-0.2.4 → programasweights-0.2.5}/1apple2.jpg +0 -0
  78. {programasweights-0.2.4 → programasweights-0.2.5}/2apples.jpg +0 -0
  79. {programasweights-0.2.4 → programasweights-0.2.5}/2apples2.jpg +0 -0
  80. {programasweights-0.2.4 → programasweights-0.2.5}/3apples.jpg +0 -0
  81. {programasweights-0.2.4 → programasweights-0.2.5}/3apples2.jpg +0 -0
  82. {programasweights-0.2.4 → programasweights-0.2.5}/479400.png +0 -0
  83. {programasweights-0.2.4 → programasweights-0.2.5}/4apples.jpg +0 -0
  84. {programasweights-0.2.4 → programasweights-0.2.5}/4apples2.jpg +0 -0
  85. {programasweights-0.2.4 → programasweights-0.2.5}/4apples3.jpg +0 -0
  86. {programasweights-0.2.4 → programasweights-0.2.5}/4apples4.jpg +0 -0
  87. {programasweights-0.2.4 → programasweights-0.2.5}/5apples.jpg +0 -0
  88. {programasweights-0.2.4 → programasweights-0.2.5}/6apples.jpg +0 -0
  89. {programasweights-0.2.4 → programasweights-0.2.5}/8apples.jpg +0 -0
  90. {programasweights-0.2.4 → programasweights-0.2.5}/9apples.jpg +0 -0
  91. {programasweights-0.2.4 → programasweights-0.2.5}/FLOW_SUMMARY.md +0 -0
  92. {programasweights-0.2.4 → programasweights-0.2.5}/LICENSE +0 -0
  93. {programasweights-0.2.4 → programasweights-0.2.5}/MANIFEST.in +0 -0
  94. {programasweights-0.2.4 → programasweights-0.2.5}/ONNX_MIGRATION_PLAN.md +0 -0
  95. {programasweights-0.2.4 → programasweights-0.2.5}/PREFIX_TOKENS_DESIGN.md +0 -0
  96. {programasweights-0.2.4 → programasweights-0.2.5}/PYPI_README.md +0 -0
  97. {programasweights-0.2.4 → programasweights-0.2.5}/README.md +0 -0
  98. {programasweights-0.2.4 → programasweights-0.2.5}/TRUNCATION_CHANGES.md +0 -0
  99. {programasweights-0.2.4 → programasweights-0.2.5}/USE_CASES_AND_IDEAS.md +0 -0
  100. {programasweights-0.2.4 → programasweights-0.2.5}/VERIFICATION_USAGE.md +0 -0
  101. {programasweights-0.2.4 → programasweights-0.2.5}/analyze_dataset.py +0 -0
  102. {programasweights-0.2.4 → programasweights-0.2.5}/analyze_lengths.py +0 -0
  103. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/code_prompt.md +0 -0
  104. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/evaluate_openai_python_code_baseline.py +0 -0
  105. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/openai_batch_request.py +0 -0
  106. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/prepare_alchemist_data.py +0 -0
  107. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/prepare_var_bench_data.py +0 -0
  108. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/python_code_sandbox.py +0 -0
  109. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/script_evaluation_var_bench.sh +0 -0
  110. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/script_evalution_evaluation.sh +0 -0
  111. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/script_evalution_request.sh +0 -0
  112. {programasweights-0.2.4 → programasweights-0.2.5}/baselines/script_evalution_statistics.sh +0 -0
  113. {programasweights-0.2.4 → programasweights-0.2.5}/benchmark_pytorch_vs_onnx.py +0 -0
  114. {programasweights-0.2.4 → programasweights-0.2.5}/benchmark_user_experience.py +0 -0
  115. {programasweights-0.2.4 → programasweights-0.2.5}/check_dataset.py +0 -0
  116. {programasweights-0.2.4 → programasweights-0.2.5}/combine_datasets.py +0 -0
  117. {programasweights-0.2.4 → programasweights-0.2.5}/compare_datasets.py +0 -0
  118. {programasweights-0.2.4 → programasweights-0.2.5}/compare_old_vs_regen.py +0 -0
  119. {programasweights-0.2.4 → programasweights-0.2.5}/convert_paw_to_svg.py +0 -0
  120. {programasweights-0.2.4 → programasweights-0.2.5}/create_favicon_sizes.py +0 -0
  121. {programasweights-0.2.4 → programasweights-0.2.5}/create_visualization_from_log.py +0 -0
  122. {programasweights-0.2.4 → programasweights-0.2.5}/create_vqa_dataset.py +0 -0
  123. {programasweights-0.2.4 → programasweights-0.2.5}/debug_cache.py +0 -0
  124. {programasweights-0.2.4 → programasweights-0.2.5}/debug_eos_example.sh +0 -0
  125. {programasweights-0.2.4 → programasweights-0.2.5}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
  126. {programasweights-0.2.4 → programasweights-0.2.5}/docs/adr/002-q4_0-adapter-format.md +0 -0
  127. {programasweights-0.2.4 → programasweights-0.2.5}/docs/adr/003-single-spec-field.md +0 -0
  128. {programasweights-0.2.4 → programasweights-0.2.5}/docs/adr/004-compiler-naming.md +0 -0
  129. {programasweights-0.2.4 → programasweights-0.2.5}/docs/adr/005-vllm-hidden-states.md +0 -0
  130. {programasweights-0.2.4 → programasweights-0.2.5}/docs/adr/006-email-api-key-auth.md +0 -0
  131. {programasweights-0.2.4 → programasweights-0.2.5}/docs/advanced/adrs.md +0 -0
  132. {programasweights-0.2.4 → programasweights-0.2.5}/docs/advanced/architecture.md +0 -0
  133. {programasweights-0.2.4 → programasweights-0.2.5}/docs/api-reference/cli.md +0 -0
  134. {programasweights-0.2.4 → programasweights-0.2.5}/docs/architecture.md +0 -0
  135. {programasweights-0.2.4 → programasweights-0.2.5}/docs/getting-started/first-program.md +0 -0
  136. {programasweights-0.2.4 → programasweights-0.2.5}/docs/getting-started/installation.md +0 -0
  137. {programasweights-0.2.4 → programasweights-0.2.5}/docs/getting-started/naming-programs.md +0 -0
  138. {programasweights-0.2.4 → programasweights-0.2.5}/docs/guide/browser-inference.md +0 -0
  139. {programasweights-0.2.4 → programasweights-0.2.5}/docs/guide/how-it-works.md +0 -0
  140. {programasweights-0.2.4 → programasweights-0.2.5}/docs/guide/local-inference.md +0 -0
  141. {programasweights-0.2.4 → programasweights-0.2.5}/docs/guide/writing-good-specs.md +0 -0
  142. {programasweights-0.2.4 → programasweights-0.2.5}/docs/hub/browsing-programs.md +0 -0
  143. {programasweights-0.2.4 → programasweights-0.2.5}/docs/hub/feedback-cases.md +0 -0
  144. {programasweights-0.2.4 → programasweights-0.2.5}/docs/hub/publishing-programs.md +0 -0
  145. {programasweights-0.2.4 → programasweights-0.2.5}/docs/index.md +0 -0
  146. {programasweights-0.2.4 → programasweights-0.2.5}/docs/requirements.txt +0 -0
  147. {programasweights-0.2.4 → programasweights-0.2.5}/estimate_data_gen_cost.py +0 -0
  148. {programasweights-0.2.4 → programasweights-0.2.5}/eval.py +0 -0
  149. {programasweights-0.2.4 → programasweights-0.2.5}/examples/flask_app.py +0 -0
  150. {programasweights-0.2.4 → programasweights-0.2.5}/examples/jupyter_notebook.py +0 -0
  151. {programasweights-0.2.4 → programasweights-0.2.5}/examples/langchain_integration.py +0 -0
  152. {programasweights-0.2.4 → programasweights-0.2.5}/examples/replace_openai.py +0 -0
  153. {programasweights-0.2.4 → programasweights-0.2.5}/export_to_onnx.py +0 -0
  154. {programasweights-0.2.4 → programasweights-0.2.5}/extract_models.py +0 -0
  155. {programasweights-0.2.4 → programasweights-0.2.5}/inspect_data_dirs.py +0 -0
  156. {programasweights-0.2.4 → programasweights-0.2.5}/latest_export.csv +0 -0
  157. {programasweights-0.2.4 → programasweights-0.2.5}/log.train.81920.morecategories.extraprefix +0 -0
  158. {programasweights-0.2.4 → programasweights-0.2.5}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
  159. {programasweights-0.2.4 → programasweights-0.2.5}/merge_datasets.py +0 -0
  160. {programasweights-0.2.4 → programasweights-0.2.5}/mkdocs.yml +0 -0
  161. {programasweights-0.2.4 → programasweights-0.2.5}/paw.png +0 -0
  162. {programasweights-0.2.4 → programasweights-0.2.5}/paw.svg +0 -0
  163. {programasweights-0.2.4 → programasweights-0.2.5}/process_im2latex_dataset.py +0 -0
  164. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/artifacts.py +0 -0
  165. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/cache.py +0 -0
  166. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/cli.py +0 -0
  167. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/client.py +0 -0
  168. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/compiler/__init__.py +0 -0
  169. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/compiler/dummy.py +0 -0
  170. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/config.py +0 -0
  171. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/convert_peft_to_paw.py +0 -0
  172. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/paw_format.py +0 -0
  173. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/runtime/__init__.py +0 -0
  174. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/runtime/interpreter.py +0 -0
  175. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights/runtime/interpreter_onnx.py +0 -0
  176. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/__init__.py +0 -0
  177. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/compiler/__init__.py +0 -0
  178. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/lora_format.py +0 -0
  179. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/runtime/__init__.py +0 -0
  180. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/runtime/interpreter_lora.py +0 -0
  181. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/tests/test_compile_and_run.py +0 -0
  182. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/tests/test_lora_format.py +0 -0
  183. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/tests/test_training.py +0 -0
  184. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/train_lora.py +0 -0
  185. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/training/__init__.py +0 -0
  186. {programasweights-0.2.4 → programasweights-0.2.5}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
  187. {programasweights-0.2.4 → programasweights-0.2.5}/run_eval.sh +0 -0
  188. {programasweights-0.2.4 → programasweights-0.2.5}/run_training.sh +0 -0
  189. {programasweights-0.2.4 → programasweights-0.2.5}/scripts/filter_table_by_length.py +0 -0
  190. {programasweights-0.2.4 → programasweights-0.2.5}/server/.env.example +0 -0
  191. {programasweights-0.2.4 → programasweights-0.2.5}/server/alembic/env.py +0 -0
  192. {programasweights-0.2.4 → programasweights-0.2.5}/server/alembic/script.py.mako +0 -0
  193. {programasweights-0.2.4 → programasweights-0.2.5}/server/alembic/versions/001_initial_schema.py +0 -0
  194. {programasweights-0.2.4 → programasweights-0.2.5}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
  195. {programasweights-0.2.4 → programasweights-0.2.5}/server/alembic/versions/003_fulltext_search_ranking.py +0 -0
  196. {programasweights-0.2.4 → programasweights-0.2.5}/server/alembic/versions/004_fix_alias_slug_constraint.py +0 -0
  197. {programasweights-0.2.4 → programasweights-0.2.5}/server/alembic.ini +0 -0
  198. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/__init__.py +0 -0
  199. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/config.py +0 -0
  200. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/dependencies.py +0 -0
  201. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/logging_config.py +0 -0
  202. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/middleware/__init__.py +0 -0
  203. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/middleware/rate_limit.py +0 -0
  204. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/models/__init__.py +0 -0
  205. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/models/database.py +0 -0
  206. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/models/orm.py +0 -0
  207. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/models/schemas.py +0 -0
  208. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/__init__.py +0 -0
  209. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/feedback.py +0 -0
  210. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/routes/models_info.py +0 -0
  211. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/__init__.py +0 -0
  212. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/auto_tag_service.py +0 -0
  213. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/auto_title_service.py +0 -0
  214. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/compile_provider.py +0 -0
  215. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/compile_service.py +0 -0
  216. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/infer_service.py +0 -0
  217. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/search_service.py +0 -0
  218. {programasweights-0.2.4 → programasweights-0.2.5}/server/api/services/storage_service.py +0 -0
  219. {programasweights-0.2.4 → programasweights-0.2.5}/server/benchmarks/benchmark_api.py +0 -0
  220. {programasweights-0.2.4 → programasweights-0.2.5}/server/benchmarks/handcrafted_specs.json +0 -0
  221. {programasweights-0.2.4 → programasweights-0.2.5}/server/benchmarks/last_benchmark_results.json +0 -0
  222. {programasweights-0.2.4 → programasweights-0.2.5}/server/benchmarks/last_stress_results.json +0 -0
  223. {programasweights-0.2.4 → programasweights-0.2.5}/server/benchmarks/stress_test.py +0 -0
  224. {programasweights-0.2.4 → programasweights-0.2.5}/server/compiler_registry.json +0 -0
  225. {programasweights-0.2.4 → programasweights-0.2.5}/server/provider_configs/gpt2.json +0 -0
  226. {programasweights-0.2.4 → programasweights-0.2.5}/server/provider_configs/qwen3-0.6b.json +0 -0
  227. {programasweights-0.2.4 → programasweights-0.2.5}/server/requirements.txt +0 -0
  228. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
  229. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/ablation_search.py +0 -0
  230. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/backfill_hf_browser_assets.py +0 -0
  231. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/backfill_hf_safetensors.py +0 -0
  232. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/backfill_interestingness.py +0 -0
  233. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/backfill_tags.py +0 -0
  234. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/backfill_titles.py +0 -0
  235. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/benchmark_gpt2.py +0 -0
  236. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/cleanup_storage.py +0 -0
  237. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/eval_search.py +0 -0
  238. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/evict_cold_programs.py +0 -0
  239. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/generate_prefix_cache.py +0 -0
  240. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/launch_gpt2_compiler.py +0 -0
  241. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/launch_qwen3_compiler.py +0 -0
  242. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/patch_vllm.sh +0 -0
  243. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/restart.sh +0 -0
  244. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/start_all.sh +0 -0
  245. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/start_gpt2_services.sh +0 -0
  246. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/start_provider.sh +0 -0
  247. {programasweights-0.2.4 → programasweights-0.2.5}/server/scripts/start_services.sh +0 -0
  248. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/__init__.py +0 -0
  249. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/conftest.py +0 -0
  250. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/test_auth.py +0 -0
  251. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/test_compile.py +0 -0
  252. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/test_errors.py +0 -0
  253. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/test_infer.py +0 -0
  254. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/test_integration_gpu.py +0 -0
  255. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/test_rate_limit.py +0 -0
  256. {programasweights-0.2.4 → programasweights-0.2.5}/server/tests/test_storage.py +0 -0
  257. {programasweights-0.2.4 → programasweights-0.2.5}/server/vllm_models/__init__.py +0 -0
  258. {programasweights-0.2.4 → programasweights-0.2.5}/server/vllm_models/gpt2_lora_patch.py +0 -0
  259. {programasweights-0.2.4 → programasweights-0.2.5}/server/vllm_models/paw_compiler.py +0 -0
  260. {programasweights-0.2.4 → programasweights-0.2.5}/server/vllm_models/prepare_checkpoint.py +0 -0
  261. {programasweights-0.2.4 → programasweights-0.2.5}/server/vllm_models/register.py +0 -0
  262. {programasweights-0.2.4 → programasweights-0.2.5}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
  263. {programasweights-0.2.4 → programasweights-0.2.5}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.em_es.png +0 -0
  264. {programasweights-0.2.4 → programasweights-0.2.5}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
  265. {programasweights-0.2.4 → programasweights-0.2.5}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
  266. {programasweights-0.2.4 → programasweights-0.2.5}/test_1spec.py +0 -0
  267. {programasweights-0.2.4 → programasweights-0.2.5}/test_all_caching.py +0 -0
  268. {programasweights-0.2.4 → programasweights-0.2.5}/test_apple_count.py +0 -0
  269. {programasweights-0.2.4 → programasweights-0.2.5}/test_batch_pilot.py +0 -0
  270. {programasweights-0.2.4 → programasweights-0.2.5}/test_compile.py +0 -0
  271. {programasweights-0.2.4 → programasweights-0.2.5}/test_e2e.py +0 -0
  272. {programasweights-0.2.4 → programasweights-0.2.5}/test_execute.py +0 -0
  273. {programasweights-0.2.4 → programasweights-0.2.5}/test_nspecs.py +0 -0
  274. {programasweights-0.2.4 → programasweights-0.2.5}/test_one_vs_two_step.py +0 -0
  275. {programasweights-0.2.4 → programasweights-0.2.5}/test_onnx_correctness.py +0 -0
  276. {programasweights-0.2.4 → programasweights-0.2.5}/test_onnx_hf_model.py +0 -0
  277. {programasweights-0.2.4 → programasweights-0.2.5}/test_onnx_hf_with_images.py +0 -0
  278. {programasweights-0.2.4 → programasweights-0.2.5}/test_paw_format.py +0 -0
  279. {programasweights-0.2.4 → programasweights-0.2.5}/test_thinking_comparison.py +0 -0
  280. {programasweights-0.2.4 → programasweights-0.2.5}/tests/test_offline_cache.py +0 -0
  281. {programasweights-0.2.4 → programasweights-0.2.5}/tests/test_sdk.py +0 -0
  282. {programasweights-0.2.4 → programasweights-0.2.5}/tests/test_sdk.sh +0 -0
  283. {programasweights-0.2.4 → programasweights-0.2.5}/train.py +0 -0
  284. {programasweights-0.2.4 → programasweights-0.2.5}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
  285. {programasweights-0.2.4 → programasweights-0.2.5}/training/README.md +0 -0
  286. {programasweights-0.2.4 → programasweights-0.2.5}/training/__init__.py +0 -0
  287. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/DATASET_CHANGELOG.md +0 -0
  288. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/README.md +0 -0
  289. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
  290. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/build_user_bench.py +0 -0
  291. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/dry_run_batch.py +0 -0
  292. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/filter_test_data.py +0 -0
  293. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/generate_specs.py +0 -0
  294. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/generate_specs_batch.py +0 -0
  295. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/incremental_merge.py +0 -0
  296. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/merge_and_upload.py +0 -0
  297. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/regenerate_outputs_batch.py +0 -0
  298. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/synthesize_data.py +0 -0
  299. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/synthesize_data_batch.py +0 -0
  300. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/filter_system.txt +0 -0
  301. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/filter_user.txt +0 -0
  302. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/pairs_system.txt +0 -0
  303. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/pairs_user.txt +0 -0
  304. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/specs_system.txt +0 -0
  305. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/specs_user.txt +0 -0
  306. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/specs_user_freeform.txt +0 -0
  307. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
  308. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
  309. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/verify_system.txt +0 -0
  310. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates/verify_user.txt +0 -0
  311. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/filter_system.txt +0 -0
  312. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/filter_user.txt +0 -0
  313. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/pairs_system.txt +0 -0
  314. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/pairs_user.txt +0 -0
  315. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/specs_system.txt +0 -0
  316. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/specs_user.txt +0 -0
  317. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
  318. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
  319. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
  320. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/verify_system.txt +0 -0
  321. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/templates_old/verify_user.txt +0 -0
  322. {programasweights-0.2.4 → programasweights-0.2.5}/training/data_generation/verify_test_data.py +0 -0
  323. {programasweights-0.2.4 → programasweights-0.2.5}/training/datasets/__init__.py +0 -0
  324. {programasweights-0.2.4 → programasweights-0.2.5}/training/datasets/jsonl_text_pairs.py +0 -0
  325. {programasweights-0.2.4 → programasweights-0.2.5}/training/loops/__init__.py +0 -0
  326. {programasweights-0.2.4 → programasweights-0.2.5}/training/loops/prefix_tuning_sft.py +0 -0
  327. {programasweights-0.2.4 → programasweights-0.2.5}/ttt.py +0 -0
  328. {programasweights-0.2.4 → programasweights-0.2.5}/upload_model.py +0 -0
  329. {programasweights-0.2.4 → programasweights-0.2.5}/upload_onnx_to_huggingface.py +0 -0
  330. {programasweights-0.2.4 → programasweights-0.2.5}/upload_onnx_to_huggingface_with_token.py +0 -0
  331. {programasweights-0.2.4 → programasweights-0.2.5}/utils.py +0 -0
  332. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/HANDOFF.md +0 -0
  333. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/README.md +0 -0
  334. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/README.md +0 -0
  335. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/e2e/full.spec.ts +0 -0
  336. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/e2e/helpers.ts +0 -0
  337. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/e2e/smoke.spec.ts +0 -0
  338. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/eslint.config.js +0 -0
  339. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/index.html +0 -0
  340. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/package-lock.json +0 -0
  341. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/package.json +0 -0
  342. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/playwright.config.ts +0 -0
  343. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/postcss.config.js +0 -0
  344. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/apple-touch-icon.png +0 -0
  345. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/browser-worker.html +0 -0
  346. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/favicon-16x16.png +0 -0
  347. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/favicon-32x32.png +0 -0
  348. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/paw-192.png +0 -0
  349. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/paw-512.png +0 -0
  350. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/paw.svg +0 -0
  351. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/react-test.html +0 -0
  352. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/test.html +0 -0
  353. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/public/vite.svg +0 -0
  354. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/scripts/deploy.sh +0 -0
  355. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/App.css +0 -0
  356. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/assets/react.svg +0 -0
  357. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/AboutPage.tsx +0 -0
  358. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/AuthorPage.tsx +0 -0
  359. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/CasesSection.tsx +0 -0
  360. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/HubPage.tsx +0 -0
  361. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/HubUploadPage.tsx +0 -0
  362. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/NavigationHelper.tsx +0 -0
  363. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
  364. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/ProfilePage.tsx +0 -0
  365. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
  366. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/components/TermsPage.tsx +0 -0
  367. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/contexts/AuthContext.tsx +0 -0
  368. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/index.css +0 -0
  369. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/main.tsx +0 -0
  370. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/types/index.ts +0 -0
  371. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/src/utils/api.ts +0 -0
  372. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/tailwind.config.js +0 -0
  373. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/test-results/.last-run.json +0 -0
  374. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/tsconfig.app.json +0 -0
  375. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/tsconfig.json +0 -0
  376. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/tsconfig.node.json +0 -0
  377. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/frontend/vite.config.ts +0 -0
  378. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/nginx-paw.conf +0 -0
  379. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/nginx.conf +0 -0
  380. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/setup_mysql.sh +0 -0
  381. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/start.sh +0 -0
  382. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/test_setup.py +0 -0
  383. {programasweights-0.2.4 → programasweights-0.2.5}/web-app/ttt.py +0 -0
  384. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/.gitignore +0 -0
  385. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/LICENSE +0 -0
  386. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/README.md +0 -0
  387. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/__tests__/e2e/browser.spec.ts +0 -0
  388. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/__tests__/e2e/server.ts +0 -0
  389. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/__tests__/e2e/start-server.ts +0 -0
  390. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/__tests__/e2e/test-page.html +0 -0
  391. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/__tests__/loader.test.ts +0 -0
  392. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/__tests__/prompt.test.ts +0 -0
  393. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/examples/basic.html +0 -0
  394. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/package-lock.json +0 -0
  395. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/package.json +0 -0
  396. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/playwright.config.ts +0 -0
  397. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/serve.py +0 -0
  398. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/src/index.ts +0 -0
  399. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/src/loader.ts +0 -0
  400. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/src/runtime.ts +0 -0
  401. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/src/types.ts +0 -0
  402. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/test-standalone.html +0 -0
  403. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/tsconfig.json +0 -0
  404. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/vitest.config.ts +0 -0
  405. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.git +0 -0
  406. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
  407. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
  408. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
  409. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
  410. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.gitignore +0 -0
  411. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.gitmodules +0 -0
  412. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.npmignore +0 -0
  413. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/.prettierignore +0 -0
  414. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/CMakeLists.txt +0 -0
  415. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/LICENCE +0 -0
  416. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/README.md +0 -0
  417. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/README_banner.png +0 -0
  418. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/assets/screenshot_0.png +0 -0
  419. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/actions.hpp +0 -0
  420. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
  421. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/glue.hpp +0 -0
  422. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
  423. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
  424. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
  425. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
  426. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
  427. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
  428. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
  429. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/cpp/wllama.cpp +0 -0
  430. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/basic/index.html +0 -0
  431. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/embeddings/index.html +0 -0
  432. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
  433. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/.gitignore +0 -0
  434. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/README.md +0 -0
  435. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/index.html +0 -0
  436. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/package-lock.json +0 -0
  437. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/package.json +0 -0
  438. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
  439. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
  440. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
  441. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
  442. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
  443. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
  444. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
  445. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
  446. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
  447. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
  448. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
  449. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
  450. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/config.ts +0 -0
  451. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/index.css +0 -0
  452. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
  453. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
  454. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
  455. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
  456. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
  457. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
  458. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
  459. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
  460. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
  461. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
  462. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
  463. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
  464. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
  465. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
  466. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
  467. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
  468. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/guides/intro-v2.md +0 -0
  469. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/index.ts +0 -0
  470. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/package-lock.json +0 -0
  471. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/package.json +0 -0
  472. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
  473. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
  474. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/scripts/build_worker.sh +0 -0
  475. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
  476. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
  477. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/scripts/http_server.js +0 -0
  478. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/scripts/post_build.sh +0 -0
  479. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/cache-manager.ts +0 -0
  480. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/glue/glue.ts +0 -0
  481. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/glue/messages.ts +0 -0
  482. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/index.ts +0 -0
  483. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/mjs.test.ts +0 -0
  484. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/model-manager.test.ts +0 -0
  485. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/model-manager.ts +0 -0
  486. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
  487. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
  488. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
  489. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
  490. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/utils.test.ts +0 -0
  491. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/utils.ts +0 -0
  492. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
  493. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/wllama.test.ts +0 -0
  494. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/wllama.ts +0 -0
  495. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/worker.ts +0 -0
  496. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
  497. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
  498. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
  499. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/tsconfig.build.json +0 -0
  500. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/tsup.config.ts +0 -0
  501. {programasweights-0.2.4 → programasweights-0.2.5}/web-sdk/wllama/vitest.config.ts +0 -0
@@ -81,6 +81,21 @@ Output: delete
81
81
  - Each function is stateless: one input, one output. No conversation history.
82
82
  - Write a few test inputs with expected outputs, then try different spec phrasings and pick the one that passes the most.
83
83
 
84
+ ## Chaining Functions
85
+
86
+ Multiple PAW functions can be composed for multi-step tasks:
87
+
88
+ ```python
89
+ classifier = paw.compile_and_load("Classify the bug type. Return ONLY one of: off-by-one, type-error, other")
90
+ fixer = paw.compile_and_load("Fix the bug described in the first line. Return only the corrected code.")
91
+
92
+ label = classifier(code_snippet)
93
+ if label != "other":
94
+ fix = fixer(f"{label}: {code_snippet}")
95
+ ```
96
+
97
+ Each function is independent -- chain them with regular Python logic.
98
+
84
99
  ## Browser / JavaScript SDK
85
100
 
86
101
  Programs compiled with `paw-4b-gpt2` run in the browser via WebAssembly.
@@ -143,7 +158,7 @@ fn = paw.function(program) # accepts Program object, hash ID, or sl
143
158
  fn = paw.function("a6b454023d41ac9ca845")
144
159
  fn = paw.function("da03/my-classifier")
145
160
 
146
- result: str = fn(input_text: str, max_tokens=512, temperature=0.0)
161
+ result: str = fn(input_text: str, max_tokens=None, temperature=0.0)
147
162
 
148
163
  fn = paw.compile_and_load(spec, compiler="paw-4b-qwen3-0.6b")
149
164
 
@@ -156,7 +171,7 @@ paw.login()
156
171
 
157
172
  | Error | Cause | Fix |
158
173
  |-------|-------|-----|
159
- | `httpx.HTTPStatusError: 404` on download | Program still uploading to CDN | SDK retries automatically. If persistent, recompile. |
174
+ | `RuntimeError: assets not ready` on download | Program still generating after compile | SDK polls automatically for up to 30s. If persistent, recompile. |
160
175
  | `httpx.HTTPStatusError: 422` on compile | Spec too short (<10 chars) | Adjust spec length. |
161
176
  | `httpx.HTTPStatusError: 429` | Rate limit exceeded | Wait, or sign in for higher limits. |
162
177
 
@@ -168,6 +183,11 @@ paw.login()
168
183
  - **Cache**: `~/.cache/programasweights/`. Override with `PAW_CACHE_DIR`.
169
184
  - **Offline** after first download.
170
185
 
186
+ ## Limits
187
+
188
+ - Spec + input + output share a ~2048 token context window, and inputs that exceed the context window will error out (not silently truncated).
189
+ - Setting `max_tokens` high is safe -- generation stops at EOS or when the window is full.
190
+
171
191
  ## Browse Programs
172
192
 
173
193
  https://programasweights.com/hub
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.4 (2026-04-01)
4
+
5
+ - Download reliability: asset endpoints return 202 Retry-After when program is still generating, eliminating 404 race conditions
6
+ - Guard local cleanup on HF upload success: files persist locally if upload fails
7
+ - Stderr suppression now covers LoRA adapter loading (fixes CPU_REPACK warnings on 0.2.3)
8
+ - Browser: fix LoRA switching bug (free old adapter + clear KV before loading new program)
9
+
10
+ ## 0.2.3 (2026-04-01)
11
+
12
+ - Python 3.9 compatibility fix (`from __future__ import annotations`)
13
+
3
14
  ## 0.2.2 (2026-03-19)
4
15
 
5
16
  - Add `paw.compile_and_load()` convenience method (compile + load in one call)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: programasweights
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Compile natural language specifications into neural programs that run locally via llama.cpp.
5
5
  Project-URL: Homepage, https://programasweights.com
6
6
  Project-URL: Repository, https://github.com/programasweights/programasweights-python
@@ -32,15 +32,17 @@ Loads a compiled program and returns a callable. Downloads the program and base
32
32
  The returned callable:
33
33
 
34
34
  ```python
35
- output: str = fn(input_text, max_tokens=512, temperature=0.0)
35
+ output: str = fn(input_text, max_tokens=None, temperature=0.0)
36
36
  ```
37
37
 
38
38
  | Parameter | Description |
39
39
  |-----------|-------------|
40
40
  | `input_text` | Input string for the program. |
41
- | `max_tokens` | Maximum tokens to generate (default `512`). |
41
+ | `max_tokens` | Maximum tokens to generate. `None` (default) = use all remaining context window. |
42
42
  | `temperature` | Sampling temperature (default `0.0`). |
43
43
 
44
+ **Context limits:** Spec + input + output share a ~2048 token window. If input + output together exceed the window, generation will error. For short inputs, high `max_tokens` is safe (stops at EOS). For long inputs, set `max_tokens` conservatively.
45
+
44
46
  ## `paw.compile`
45
47
 
46
48
  ```python
@@ -34,7 +34,11 @@ Compile a specification.
34
34
  | `name` | string | No | Display title. Auto-generated if omitted. |
35
35
  | `tags` | string[] | No | Tags for discovery. |
36
36
 
37
- **Response (JSON):** includes `job_id`, `status`, `program_id`, `slug` (if created), `pseudo_program`, and `timings`.
37
+ **Response:**
38
+ - **202 Accepted** on success — JSON with `job_id`, `status`, `program_id`, `slug` (if created), `pseudo_program`, and `timings`
39
+ - **400** — unknown compiler
40
+ - **422** — spec too short, too long, or token limit exceeded
41
+ - **500** — compilation failed (server error)
38
42
 
39
43
  ### `POST /infer`
40
44
 
@@ -88,7 +92,11 @@ Owner-only fields: `public`, `name`, `tags`. Any authenticated user can set thei
88
92
 
89
93
  ### `GET /programs/{id_or_slug}/download`
90
94
 
91
- Redirects to the Hugging Face CDN for the `.paw` artifact. Private programs return 404 to non-owners.
95
+ Downloads the `.paw` artifact. Returns one of:
96
+ - **302** redirect to HuggingFace CDN (program already uploaded)
97
+ - **200** file from server (freshly compiled, not yet on HF)
98
+ - **202 Accepted** with `Retry-After` header (program assets still generating, retry after the indicated seconds)
99
+ - **404** if program not found or private and not owned by the requester
92
100
 
93
101
  ### `GET /programs/resolve/{slug}`
94
102
 
@@ -23,7 +23,7 @@ API reference:
23
23
  """
24
24
  from __future__ import annotations
25
25
 
26
- __version__ = "0.2.4"
26
+ __version__ = "0.2.5"
27
27
 
28
28
  from .config import get_api_url, get_api_key, set_api_key
29
29
 
@@ -37,6 +37,7 @@ class PawFunction:
37
37
  program_dir = Path(program_dir)
38
38
  self._program_dir = program_dir
39
39
  self._verbose = verbose
40
+ self._n_ctx = n_ctx
40
41
 
41
42
  meta_path = program_dir / "meta.json"
42
43
  if meta_path.exists():
@@ -151,20 +152,19 @@ class PawFunction:
151
152
  def __call__(
152
153
  self,
153
154
  input_text: str,
154
- max_tokens: int = 512,
155
+ max_tokens: int | None = None,
155
156
  temperature: float = 0.0,
156
157
  ) -> str:
157
158
  """Run the program on an input.
158
159
 
159
160
  Args:
160
161
  input_text: The input to process.
161
- max_tokens: Maximum output tokens.
162
+ max_tokens: Maximum output tokens. None = use all remaining context.
162
163
  temperature: Sampling temperature (0 = greedy).
163
164
 
164
165
  Returns:
165
166
  The program's output as a string.
166
167
  """
167
- # Reset to prefix state: clear everything after the prefix
168
168
  self._llm.n_tokens = self._n_prefix
169
169
 
170
170
  input_with_suffix = input_text + self._suffix_text
@@ -174,10 +174,21 @@ class PawFunction:
174
174
  special=self._use_special,
175
175
  )
176
176
 
177
+ tokens_used = self._n_prefix + len(input_tokens)
178
+ remaining = self._n_ctx - tokens_used
179
+ if remaining <= 0:
180
+ raise ValueError(
181
+ f"Input too long: {tokens_used} tokens used (prefix={self._n_prefix}, "
182
+ f"input={len(input_tokens)}), context window={self._n_ctx}. "
183
+ f"Shorten your input."
184
+ )
185
+
186
+ gen_limit = remaining if max_tokens is None else min(max_tokens, remaining)
187
+
177
188
  self._llm.eval(input_tokens)
178
189
 
179
190
  output_tokens = []
180
- for _ in range(max_tokens):
191
+ for _ in range(gen_limit):
181
192
  token = self._llm.sample(
182
193
  temp=temperature if temperature > 0 else 0,
183
194
  )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "programasweights"
7
- version = "0.2.4"
7
+ version = "0.2.5"
8
8
  description = "Compile natural language specifications into neural programs that run locally via llama.cpp."
9
9
  readme = "PYPI_README.md"
10
10
  requires-python = ">=3.9"
@@ -57,6 +57,9 @@ class _FallbackLimiter:
57
57
  return True
58
58
 
59
59
 
60
+ _API_VERSION = "0.4.0"
61
+
62
+
60
63
  def create_app() -> FastAPI:
61
64
  settings = get_settings()
62
65
  configure_logging(
@@ -64,10 +67,13 @@ def create_app() -> FastAPI:
64
67
  json_format=(settings.LOG_FORMAT == "json"),
65
68
  )
66
69
 
70
+ if settings.JWT_SECRET == "dev-secret-change-in-production":
71
+ raise RuntimeError("JWT_SECRET must be set in .env -- refusing to start with the default value")
72
+
67
73
  app = FastAPI(
68
74
  title="Programs as Weights API",
69
75
  description="Compile natural language specs into neural functions",
70
- version="0.4.0",
76
+ version=_API_VERSION,
71
77
  docs_url="/api/docs",
72
78
  openapi_url="/api/openapi.json",
73
79
  )
@@ -21,10 +21,20 @@ from api.models.orm import User
21
21
  logger = structlog.get_logger()
22
22
  router = APIRouter()
23
23
 
24
- # In-memory session store (replace with Redis/DB for production)
24
+ # In-memory session store (single-process; cleaned periodically)
25
25
  _sessions: dict[str, dict] = {}
26
26
  _github_states: dict[str, float] = {}
27
27
 
28
+ _SESSION_MAX_AGE = 30 * 24 * 3600 # 30 days, matches cookie max_age
29
+
30
+
31
+ def _cleanup_expired_sessions():
32
+ cutoff = time.time() - _SESSION_MAX_AGE
33
+ expired = [k for k, v in _sessions.items() if v.get("created_at", 0) < cutoff]
34
+ for k in expired:
35
+ del _sessions[k]
36
+
37
+
28
38
  GITHUB_AUTHORIZE_URL = "https://github.com/login/oauth/authorize"
29
39
  GITHUB_TOKEN_URL = "https://github.com/login/oauth/access_token"
30
40
  GITHUB_USER_URL = "https://api.github.com/user"
@@ -44,6 +54,8 @@ async def github_login(request: Request):
44
54
  for k in [k for k, v in _github_states.items() if v < cutoff]:
45
55
  del _github_states[k]
46
56
 
57
+ _cleanup_expired_sessions()
58
+
47
59
  params = (
48
60
  f"?client_id={settings.GITHUB_CLIENT_ID}"
49
61
  f"&redirect_uri=https://programasweights.com/api/v1/auth/github/callback"
@@ -2,6 +2,7 @@
2
2
  Compile endpoint: submit specs for compilation into neural programs.
3
3
  """
4
4
 
5
+ import time
5
6
  import uuid
6
7
 
7
8
  import httpx
@@ -19,8 +20,18 @@ logger = structlog.get_logger()
19
20
 
20
21
  router = APIRouter()
21
22
 
22
- # In-memory job store (will be replaced with PostgreSQL + Celery)
23
+ # In-memory job store (single-process; evicted after 1 hour)
23
24
  _jobs: dict[str, dict] = {}
25
+ _JOBS_MAX_AGE = 3600
26
+
27
+
28
+ def _evict_old_jobs():
29
+ import time as _time
30
+ cutoff = _time.time() - _JOBS_MAX_AGE
31
+ expired = [k for k, v in _jobs.items() if v.get("created_at", 0) < cutoff]
32
+ for k in expired:
33
+ del _jobs[k]
34
+
24
35
 
25
36
  # Compiler registry loaded from JSON file
26
37
  import json as _json
@@ -87,6 +98,8 @@ async def submit_compile(
87
98
  },
88
99
  )
89
100
 
101
+ _evict_old_jobs()
102
+
90
103
  job_id = str(uuid.uuid4())[:12]
91
104
  _jobs[job_id] = {
92
105
  "status": "queued",
@@ -94,6 +107,7 @@ async def submit_compile(
94
107
  "compiler_snapshot": snapshot,
95
108
  "program_id": None,
96
109
  "error": None,
110
+ "created_at": time.time(),
97
111
  }
98
112
 
99
113
  import asyncio
@@ -244,12 +258,11 @@ async def submit_compile(
244
258
  _jobs[job_id]["error"] = str(e)
245
259
  logger.exception("compile_failed", spec_len=len(req.spec), error=str(e))
246
260
 
247
- return CompileResponse(
248
- job_id=job_id,
249
- status="failed",
250
- compiler_snapshot=snapshot,
251
- error=str(e),
252
- )
261
+ raise HTTPException(status_code=500, detail={
262
+ "error": "compile_failed",
263
+ "message": "Compilation failed. Please try again.",
264
+ "request_id": getattr(request.state, "request_id", "unknown"),
265
+ })
253
266
 
254
267
 
255
268
  @router.get("/compile/{job_id}", response_model=CompileStatusResponse)
@@ -8,6 +8,8 @@ from fastapi import APIRouter, Request
8
8
 
9
9
  from api.models.schemas import HealthResponse
10
10
 
11
+ _API_VERSION = "0.4.0"
12
+
11
13
  router = APIRouter()
12
14
 
13
15
  _start_time = time.time()
@@ -21,7 +23,7 @@ async def health_check(request: Request):
21
23
 
22
24
  return HealthResponse(
23
25
  status="healthy" if not warnings else "degraded",
24
- version="0.2.0",
26
+ version=_API_VERSION,
25
27
  gpu_services={},
26
28
  queue_depth=0,
27
29
  uptime_s=time.time() - _start_time,
@@ -107,9 +107,9 @@ async def run_inference(
107
107
  except HTTPException:
108
108
  raise
109
109
  except Exception as e:
110
- logger.exception("infer_proxy_failed", program_id=canonical_id)
110
+ logger.exception("infer_proxy_failed", program_id=canonical_id, error=str(e))
111
111
  raise HTTPException(status_code=502, detail={
112
112
  "error": "inference_failed",
113
- "message": str(e)[:200],
113
+ "message": "Inference failed. Please try again.",
114
114
  "request_id": request_id,
115
115
  })
@@ -125,6 +125,8 @@ async def list_programs(
125
125
  ):
126
126
  from sqlalchemy import text as sa_text
127
127
 
128
+ per_page = min(per_page, 100)
129
+
128
130
  if mine and user:
129
131
  aliased_ids = select(Alias.program_id).where(Alias.owner_id == user.id).scalar_subquery()
130
132
  query = select(Program).where(
@@ -201,7 +203,7 @@ async def list_programs(
201
203
  use_fts = True
202
204
  else:
203
205
  alias_match = select(Alias.program_id).where(
204
- Alias.slug.ilike(f"%{search_term}%")
206
+ Alias.slug_name.ilike(f"%{search_term}%")
205
207
  ).scalar_subquery()
206
208
  conditions = [
207
209
  Program.spec.ilike(f"%{search_term}%"),
@@ -1,4 +1,4 @@
1
- import { BrowserRouter as Router, Routes, Route, Navigate, useLocation } from 'react-router-dom';
1
+ import { BrowserRouter as Router, Routes, Route, Navigate, useLocation, Link } from 'react-router-dom';
2
2
  import { Component, useEffect } from 'react';
3
3
  import type { ReactNode } from 'react';
4
4
  import { Toaster } from 'react-hot-toast';
@@ -55,6 +55,18 @@ class ErrorBoundary extends Component<{ children: ReactNode }, { hasError: boole
55
55
  }
56
56
  }
57
57
 
58
+ function NotFoundPage() {
59
+ return (
60
+ <div className="min-h-[60vh] flex items-center justify-center">
61
+ <div className="text-center">
62
+ <h1 className="text-6xl font-bold text-gray-300 mb-4">404</h1>
63
+ <p className="text-xl text-gray-600 mb-6">Page not found</p>
64
+ <Link to="/" className="px-5 py-2.5 bg-gray-900 text-white rounded-lg hover:bg-gray-800 transition-colors text-sm font-medium">Back to home</Link>
65
+ </div>
66
+ </div>
67
+ );
68
+ }
69
+
58
70
  function App() {
59
71
  return (
60
72
  <ErrorBoundary>
@@ -96,6 +108,8 @@ function App() {
96
108
  <Route path="/leaderboard" element={<Navigate to="/hub?sort=popular" replace />} />
97
109
  <Route path="/program/:id" element={<Navigate to="/hub" replace />} />
98
110
  <Route path="/publish" element={<Navigate to="/hub/upload" replace />} />
111
+
112
+ <Route path="*" element={<NotFoundPage />} />
99
113
  </Routes>
100
114
  </main>
101
115
  <Footer />
@@ -0,0 +1,92 @@
1
+ import { useState } from 'react';
2
+ import { Helmet } from 'react-helmet-async';
3
+ import { Copy, Check, MessageSquare, FileText } from 'lucide-react';
4
+ import toast from 'react-hot-toast';
5
+ import AGENTS_MD from '../../../../AGENTS.md?raw';
6
+
7
+ const CHAT_PROMPT = `I want to use ProgramAsWeights (PAW) to create fuzzy text functions (search, classification, format repair, etc.) that run locally. Read the instructions at https://programasweights.com/agents and help me integrate it into my project. [Describe your use case briefly.]`;
8
+
9
+ const CursorRulePage: React.FC = () => {
10
+ const [copiedChat, setCopiedChat] = useState(false);
11
+ const [copiedFile, setCopiedFile] = useState(false);
12
+
13
+ return (
14
+ <div className="max-w-3xl mx-auto space-y-6">
15
+ <Helmet><title>AI Agents — PAW</title></Helmet>
16
+ <div>
17
+ <h1 className="text-2xl font-bold text-gray-900">Use PAW with AI Agents</h1>
18
+ <p className="text-gray-600 mt-2">
19
+ Let your AI coding assistant (Cursor, Claude, Codex, etc.) use PAW to create fuzzy text functions.
20
+ </p>
21
+ </div>
22
+
23
+ <div className="bg-white rounded-xl border-2 border-blue-200 shadow-sm p-6 space-y-3">
24
+ <div className="flex items-center gap-2">
25
+ <MessageSquare className="w-5 h-5 text-blue-600" />
26
+ <h2 className="text-lg font-semibold text-gray-900">Paste into your agent's chat</h2>
27
+ <span className="px-2 py-0.5 bg-blue-100 text-blue-700 text-[10px] rounded-full font-semibold uppercase">Recommended</span>
28
+ </div>
29
+ <p className="text-sm text-gray-500">
30
+ Copy this prompt and paste it into Cursor, Claude, Codex, or any AI assistant. It will read the link and know how to use PAW.
31
+ </p>
32
+ <div className="bg-gray-50 rounded-lg p-4 text-sm text-gray-700 leading-relaxed">
33
+ {CHAT_PROMPT}
34
+ </div>
35
+ <button
36
+ onClick={() => {
37
+ navigator.clipboard.writeText(CHAT_PROMPT).catch(() => {});
38
+ setCopiedChat(true);
39
+ toast.success('Copied! Paste into your AI agent\'s chat.');
40
+ setTimeout(() => setCopiedChat(false), 3000);
41
+ }}
42
+ className="flex items-center gap-2 px-5 py-2.5 bg-blue-600 text-white rounded-lg font-medium text-sm hover:bg-blue-700 transition-colors"
43
+ >
44
+ {copiedChat ? <Check className="w-4 h-4" /> : <Copy className="w-4 h-4" />}
45
+ {copiedChat ? 'Copied!' : 'Copy prompt'}
46
+ </button>
47
+ </div>
48
+
49
+ <div className="bg-white rounded-xl border border-gray-200 shadow-sm p-6 space-y-3">
50
+ <div className="flex items-center gap-2">
51
+ <FileText className="w-5 h-5 text-gray-500" />
52
+ <h2 className="text-lg font-semibold text-gray-900">Or save as a project file</h2>
53
+ </div>
54
+ <p className="text-sm text-gray-500">
55
+ For persistent access, save as <code className="bg-gray-100 px-1.5 py-0.5 rounded text-xs">AGENTS.md</code> in your project root.
56
+ AI agents will automatically read it.
57
+ </p>
58
+ <button
59
+ onClick={() => {
60
+ navigator.clipboard.writeText(AGENTS_MD).catch(() => {});
61
+ setCopiedFile(true);
62
+ toast.success('Copied! Save as AGENTS.md in your project root.');
63
+ setTimeout(() => setCopiedFile(false), 3000);
64
+ }}
65
+ className="flex items-center gap-2 px-5 py-2.5 bg-gray-900 text-white rounded-lg font-medium text-sm hover:bg-gray-800 transition-colors"
66
+ >
67
+ {copiedFile ? <Check className="w-4 h-4" /> : <Copy className="w-4 h-4" />}
68
+ {copiedFile ? 'Copied!' : 'Copy AGENTS.md'}
69
+ </button>
70
+ </div>
71
+
72
+ <div className="bg-blue-50 border border-blue-200 rounded-xl p-4">
73
+ <h3 className="text-sm font-semibold text-blue-900 mb-2">Which SDK?</h3>
74
+ <div className="text-sm text-blue-700 space-y-1">
75
+ <p><strong>Python SDK</strong> — server-side backends, pipelines. Standard interpreter (Qwen3 0.6B, best accuracy).</p>
76
+ <p><strong>Browser SDK</strong> — client-side web apps, data stays on user's device. Compact interpreter (GPT-2 124M).</p>
77
+ </div>
78
+ </div>
79
+
80
+ <details className="bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden">
81
+ <summary className="px-6 py-4 cursor-pointer text-sm font-medium text-gray-700 hover:bg-gray-50">
82
+ View full AGENTS.md content
83
+ </summary>
84
+ <pre className="px-6 pb-6 text-xs text-gray-600 overflow-x-auto whitespace-pre-wrap leading-relaxed max-h-[400px] overflow-y-auto border-t border-gray-100 pt-4">
85
+ {AGENTS_MD}
86
+ </pre>
87
+ </details>
88
+ </div>
89
+ );
90
+ };
91
+
92
+ export default CursorRulePage;