programasweights 0.1.0.dev8__tar.gz → 0.1.0.dev10__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 (491) hide show
  1. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/AGENTS.md +1 -1
  2. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/PKG-INFO +3 -3
  3. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/PYPI_README.md +1 -1
  4. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/getting-started/installation.md +6 -8
  5. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/index.md +1 -1
  6. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/__init__.py +1 -1
  7. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/cache.py +7 -2
  8. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/cli.py +9 -4
  9. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/pyproject.toml +2 -2
  10. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/infer.py +1 -1
  11. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/programs.py +96 -61
  12. programasweights-0.1.0.dev10/tests/test_offline_cache.py +97 -0
  13. programasweights-0.1.0.dev10/tests/test_sdk.py +330 -0
  14. programasweights-0.1.0.dev10/tests/test_sdk.sh +89 -0
  15. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/AgentsPage.tsx +4 -3
  16. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/AuthorPage.tsx +11 -5
  17. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/DocsPage.tsx +6 -6
  18. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/HubPage.tsx +25 -18
  19. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/HubProgramPage.tsx +14 -11
  20. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/LandingPage.tsx +1 -1
  21. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/ProfilePage.tsx +11 -5
  22. programasweights-0.1.0.dev8/tests/test_programasweights.py +0 -239
  23. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/.cursor/rules/vllm-deployment.mdc +0 -0
  24. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/.git +0 -0
  25. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/.github/workflows/web-sdk.yml +0 -0
  26. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/.gitignore +0 -0
  27. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/.gitmodules +0 -0
  28. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/.hatch_build.toml +0 -0
  29. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/.readthedocs.yaml +0 -0
  30. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/1apple.jpg +0 -0
  31. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/1apple2.jpg +0 -0
  32. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/2apples.jpg +0 -0
  33. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/2apples2.jpg +0 -0
  34. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/3apples.jpg +0 -0
  35. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/3apples2.jpg +0 -0
  36. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/479400.png +0 -0
  37. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/4apples.jpg +0 -0
  38. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/4apples2.jpg +0 -0
  39. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/4apples3.jpg +0 -0
  40. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/4apples4.jpg +0 -0
  41. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/5apples.jpg +0 -0
  42. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/6apples.jpg +0 -0
  43. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/8apples.jpg +0 -0
  44. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/9apples.jpg +0 -0
  45. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/FLOW_SUMMARY.md +0 -0
  46. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/MANIFEST.in +0 -0
  47. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/ONNX_MIGRATION_PLAN.md +0 -0
  48. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/PREFIX_TOKENS_DESIGN.md +0 -0
  49. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/README.md +0 -0
  50. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/TRUNCATION_CHANGES.md +0 -0
  51. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/USE_CASES_AND_IDEAS.md +0 -0
  52. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/VERIFICATION_USAGE.md +0 -0
  53. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/analyze_dataset.py +0 -0
  54. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/analyze_lengths.py +0 -0
  55. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/code_prompt.md +0 -0
  56. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/evaluate_openai_python_code_baseline.py +0 -0
  57. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/openai_batch_request.py +0 -0
  58. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/prepare_alchemist_data.py +0 -0
  59. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/prepare_var_bench_data.py +0 -0
  60. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/python_code_sandbox.py +0 -0
  61. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/script_evaluation_var_bench.sh +0 -0
  62. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/script_evalution_evaluation.sh +0 -0
  63. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/script_evalution_request.sh +0 -0
  64. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/baselines/script_evalution_statistics.sh +0 -0
  65. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/benchmark_pytorch_vs_onnx.py +0 -0
  66. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/benchmark_user_experience.py +0 -0
  67. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/check_dataset.py +0 -0
  68. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/combine_datasets.py +0 -0
  69. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/compare_datasets.py +0 -0
  70. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/compare_old_vs_regen.py +0 -0
  71. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/convert_paw_to_svg.py +0 -0
  72. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/create_favicon_sizes.py +0 -0
  73. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/create_visualization_from_log.py +0 -0
  74. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/create_vqa_dataset.py +0 -0
  75. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/debug_cache.py +0 -0
  76. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/debug_eos_example.sh +0 -0
  77. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
  78. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/adr/002-q4_0-adapter-format.md +0 -0
  79. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/adr/003-single-spec-field.md +0 -0
  80. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/adr/004-compiler-naming.md +0 -0
  81. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/adr/005-vllm-hidden-states.md +0 -0
  82. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/adr/006-email-api-key-auth.md +0 -0
  83. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/advanced/adrs.md +0 -0
  84. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/advanced/architecture.md +0 -0
  85. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/api-reference/cli.md +0 -0
  86. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/api-reference/python-sdk.md +0 -0
  87. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/api-reference/rest-api.md +0 -0
  88. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/architecture.md +0 -0
  89. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/getting-started/first-program.md +0 -0
  90. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/getting-started/naming-programs.md +0 -0
  91. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/guide/browser-inference.md +0 -0
  92. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/guide/how-it-works.md +0 -0
  93. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/guide/local-inference.md +0 -0
  94. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/guide/writing-good-specs.md +0 -0
  95. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/hub/browsing-programs.md +0 -0
  96. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/hub/feedback-cases.md +0 -0
  97. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/hub/publishing-programs.md +0 -0
  98. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/docs/requirements.txt +0 -0
  99. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/estimate_data_gen_cost.py +0 -0
  100. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/eval.py +0 -0
  101. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/examples/flask_app.py +0 -0
  102. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/examples/jupyter_notebook.py +0 -0
  103. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/examples/langchain_integration.py +0 -0
  104. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/examples/replace_openai.py +0 -0
  105. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/export_to_onnx.py +0 -0
  106. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/extract_models.py +0 -0
  107. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/inspect_data_dirs.py +0 -0
  108. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/latest_export.csv +0 -0
  109. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/log.train.81920.morecategories.extraprefix +0 -0
  110. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
  111. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/merge_datasets.py +0 -0
  112. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/mkdocs.yml +0 -0
  113. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/paw.png +0 -0
  114. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/paw.svg +0 -0
  115. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/process_im2latex_dataset.py +0 -0
  116. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/artifacts.py +0 -0
  117. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/client.py +0 -0
  118. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/compiler/__init__.py +0 -0
  119. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/compiler/dummy.py +0 -0
  120. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/config.py +0 -0
  121. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/convert_peft_to_paw.py +0 -0
  122. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/paw_format.py +0 -0
  123. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/runtime/__init__.py +0 -0
  124. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/runtime/interpreter.py +0 -0
  125. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/runtime/interpreter_onnx.py +0 -0
  126. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights/runtime_llamacpp.py +0 -0
  127. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/__init__.py +0 -0
  128. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/compiler/__init__.py +0 -0
  129. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/lora_format.py +0 -0
  130. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/runtime/__init__.py +0 -0
  131. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/runtime/interpreter_lora.py +0 -0
  132. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/tests/test_compile_and_run.py +0 -0
  133. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/tests/test_lora_format.py +0 -0
  134. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/tests/test_training.py +0 -0
  135. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/train_lora.py +0 -0
  136. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/training/__init__.py +0 -0
  137. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
  138. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/run_eval.sh +0 -0
  139. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/run_training.sh +0 -0
  140. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/scripts/filter_table_by_length.py +0 -0
  141. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/.env.example +0 -0
  142. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/alembic/env.py +0 -0
  143. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/alembic/script.py.mako +0 -0
  144. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/alembic/versions/001_initial_schema.py +0 -0
  145. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
  146. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/alembic/versions/003_fulltext_search_ranking.py +0 -0
  147. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/alembic/versions/004_fix_alias_slug_constraint.py +0 -0
  148. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/alembic.ini +0 -0
  149. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/__init__.py +0 -0
  150. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/config.py +0 -0
  151. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/dependencies.py +0 -0
  152. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/logging_config.py +0 -0
  153. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/main.py +0 -0
  154. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/middleware/__init__.py +0 -0
  155. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/middleware/rate_limit.py +0 -0
  156. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/models/__init__.py +0 -0
  157. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/models/database.py +0 -0
  158. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/models/orm.py +0 -0
  159. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/models/schemas.py +0 -0
  160. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/__init__.py +0 -0
  161. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/auth.py +0 -0
  162. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/compile.py +0 -0
  163. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/feedback.py +0 -0
  164. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/health.py +0 -0
  165. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/routes/models_info.py +0 -0
  166. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/__init__.py +0 -0
  167. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/auto_tag_service.py +0 -0
  168. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/auto_title_service.py +0 -0
  169. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/compile_provider.py +0 -0
  170. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/compile_service.py +0 -0
  171. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/infer_service.py +0 -0
  172. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/search_service.py +0 -0
  173. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/api/services/storage_service.py +0 -0
  174. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/benchmarks/benchmark_api.py +0 -0
  175. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/benchmarks/handcrafted_specs.json +0 -0
  176. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/benchmarks/last_benchmark_results.json +0 -0
  177. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/benchmarks/last_stress_results.json +0 -0
  178. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/benchmarks/stress_test.py +0 -0
  179. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/compiler_registry.json +0 -0
  180. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/provider_configs/gpt2.json +0 -0
  181. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/provider_configs/qwen3-0.6b.json +0 -0
  182. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/requirements.txt +0 -0
  183. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
  184. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/ablation_search.py +0 -0
  185. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/backfill_hf_browser_assets.py +0 -0
  186. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/backfill_hf_safetensors.py +0 -0
  187. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/backfill_interestingness.py +0 -0
  188. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/backfill_tags.py +0 -0
  189. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/backfill_titles.py +0 -0
  190. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/benchmark_gpt2.py +0 -0
  191. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/cleanup_storage.py +0 -0
  192. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/eval_search.py +0 -0
  193. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/evict_cold_programs.py +0 -0
  194. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/generate_prefix_cache.py +0 -0
  195. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/launch_gpt2_compiler.py +0 -0
  196. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/launch_qwen3_compiler.py +0 -0
  197. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/patch_vllm.sh +0 -0
  198. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/restart.sh +0 -0
  199. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/start_all.sh +0 -0
  200. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/start_gpt2_services.sh +0 -0
  201. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/start_provider.sh +0 -0
  202. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/scripts/start_services.sh +0 -0
  203. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/__init__.py +0 -0
  204. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/conftest.py +0 -0
  205. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/test_auth.py +0 -0
  206. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/test_compile.py +0 -0
  207. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/test_errors.py +0 -0
  208. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/test_infer.py +0 -0
  209. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/test_integration_gpu.py +0 -0
  210. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/test_rate_limit.py +0 -0
  211. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/tests/test_storage.py +0 -0
  212. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/vllm_models/__init__.py +0 -0
  213. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/vllm_models/gpt2_lora_patch.py +0 -0
  214. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/vllm_models/paw_compiler.py +0 -0
  215. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/vllm_models/prepare_checkpoint.py +0 -0
  216. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/server/vllm_models/register.py +0 -0
  217. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
  218. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.em_es.png +0 -0
  219. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
  220. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
  221. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_1spec.py +0 -0
  222. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_all_caching.py +0 -0
  223. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_apple_count.py +0 -0
  224. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_batch_pilot.py +0 -0
  225. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_compile.py +0 -0
  226. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_e2e.py +0 -0
  227. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_execute.py +0 -0
  228. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_nspecs.py +0 -0
  229. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_one_vs_two_step.py +0 -0
  230. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_onnx_correctness.py +0 -0
  231. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_onnx_hf_model.py +0 -0
  232. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_onnx_hf_with_images.py +0 -0
  233. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_paw_format.py +0 -0
  234. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/test_thinking_comparison.py +0 -0
  235. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/train.py +0 -0
  236. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
  237. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/README.md +0 -0
  238. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/__init__.py +0 -0
  239. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/DATASET_CHANGELOG.md +0 -0
  240. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/README.md +0 -0
  241. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
  242. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/build_user_bench.py +0 -0
  243. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/dry_run_batch.py +0 -0
  244. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/filter_test_data.py +0 -0
  245. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/generate_specs.py +0 -0
  246. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/generate_specs_batch.py +0 -0
  247. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/incremental_merge.py +0 -0
  248. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/merge_and_upload.py +0 -0
  249. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/regenerate_outputs_batch.py +0 -0
  250. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/synthesize_data.py +0 -0
  251. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/synthesize_data_batch.py +0 -0
  252. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/filter_system.txt +0 -0
  253. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/filter_user.txt +0 -0
  254. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/pairs_system.txt +0 -0
  255. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/pairs_user.txt +0 -0
  256. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/specs_system.txt +0 -0
  257. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/specs_user.txt +0 -0
  258. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/specs_user_freeform.txt +0 -0
  259. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
  260. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
  261. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/verify_system.txt +0 -0
  262. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates/verify_user.txt +0 -0
  263. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/filter_system.txt +0 -0
  264. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/filter_user.txt +0 -0
  265. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/pairs_system.txt +0 -0
  266. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/pairs_user.txt +0 -0
  267. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/specs_system.txt +0 -0
  268. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/specs_user.txt +0 -0
  269. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
  270. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
  271. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
  272. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/verify_system.txt +0 -0
  273. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/templates_old/verify_user.txt +0 -0
  274. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/data_generation/verify_test_data.py +0 -0
  275. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/datasets/__init__.py +0 -0
  276. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/datasets/jsonl_text_pairs.py +0 -0
  277. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/loops/__init__.py +0 -0
  278. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/training/loops/prefix_tuning_sft.py +0 -0
  279. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/ttt.py +0 -0
  280. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/upload_model.py +0 -0
  281. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/upload_onnx_to_huggingface.py +0 -0
  282. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/upload_onnx_to_huggingface_with_token.py +0 -0
  283. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/utils.py +0 -0
  284. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/HANDOFF.md +0 -0
  285. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/README.md +0 -0
  286. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/__init__.py +0 -0
  287. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/config.py +0 -0
  288. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/main.py +0 -0
  289. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/middleware/__init__.py +0 -0
  290. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/middleware/rate_limit.py +0 -0
  291. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/models.py +0 -0
  292. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/__init__.py +0 -0
  293. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/auth_service.py +0 -0
  294. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/case_service.py +0 -0
  295. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/compiler_service.py +0 -0
  296. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/gpt_service.py +0 -0
  297. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/hub_service.py +0 -0
  298. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/image_service.py +0 -0
  299. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/interpreter_service.py +0 -0
  300. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/services/sql_manager.py +0 -0
  301. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/templates/gpt_test_generation.txt +0 -0
  302. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/utils/__init__.py +0 -0
  303. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/utils/image_placeholders.py +0 -0
  304. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/app/utils/program_hash.py +0 -0
  305. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/clear_db.sh +0 -0
  306. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/clear_tables.sql +0 -0
  307. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/data/programs.db +0 -0
  308. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/env_example.txt +0 -0
  309. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/example_images/README.md +0 -0
  310. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/get_data_examples.py +0 -0
  311. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/requirements.txt +0 -0
  312. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/run_server.py +0 -0
  313. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_analytics_tables.sql +0 -0
  314. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_auth_tables.sql +0 -0
  315. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_cache_tables.sql +0 -0
  316. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_cases_tables.sql +0 -0
  317. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_database.sql +0 -0
  318. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_database_simple.sql +0 -0
  319. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_db.sh +0 -0
  320. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_example_images.py +0 -0
  321. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/setup_hub_tables.sql +0 -0
  322. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/backend/test_compilation_cache.py +0 -0
  323. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/README.md +0 -0
  324. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/e2e/full.spec.ts +0 -0
  325. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/e2e/helpers.ts +0 -0
  326. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/e2e/smoke.spec.ts +0 -0
  327. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/eslint.config.js +0 -0
  328. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/index.html +0 -0
  329. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/package-lock.json +0 -0
  330. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/package.json +0 -0
  331. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/playwright.config.ts +0 -0
  332. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/postcss.config.js +0 -0
  333. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/apple-touch-icon.png +0 -0
  334. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/browser-worker.html +0 -0
  335. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/favicon-16x16.png +0 -0
  336. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/favicon-32x32.png +0 -0
  337. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/paw-192.png +0 -0
  338. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/paw-512.png +0 -0
  339. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/paw.svg +0 -0
  340. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/react-test.html +0 -0
  341. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/test.html +0 -0
  342. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/public/vite.svg +0 -0
  343. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/scripts/deploy.sh +0 -0
  344. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/App.css +0 -0
  345. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/App.tsx +0 -0
  346. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/assets/react.svg +0 -0
  347. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/AboutPage.tsx +0 -0
  348. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/BrowserPage.tsx +0 -0
  349. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/CasesSection.tsx +0 -0
  350. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -0
  351. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/CompileSection.tsx +0 -0
  352. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/ExamplesInput.tsx +0 -0
  353. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/Footer.tsx +0 -0
  354. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/Header.tsx +0 -0
  355. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/HubUploadPage.tsx +0 -0
  356. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/MainInterface.tsx +0 -0
  357. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/ModelSelector.tsx +0 -0
  358. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/NavigationHelper.tsx +0 -0
  359. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
  360. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/SettingsPage.tsx +0 -0
  361. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
  362. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/TermsPage.tsx +0 -0
  363. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/components/TestSection.tsx +0 -0
  364. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/index.css +0 -0
  365. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/main.tsx +0 -0
  366. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/types/index.ts +0 -0
  367. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/src/utils/api.ts +0 -0
  368. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/tailwind.config.js +0 -0
  369. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/test-results/.last-run.json +0 -0
  370. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/tsconfig.app.json +0 -0
  371. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/tsconfig.json +0 -0
  372. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/tsconfig.node.json +0 -0
  373. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/frontend/vite.config.ts +0 -0
  374. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/nginx-paw.conf +0 -0
  375. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/nginx.conf +0 -0
  376. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/setup_mysql.sh +0 -0
  377. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/start.sh +0 -0
  378. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/test_setup.py +0 -0
  379. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-app/ttt.py +0 -0
  380. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/.gitignore +0 -0
  381. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/README.md +0 -0
  382. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/__tests__/loader.test.ts +0 -0
  383. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/__tests__/prompt.test.ts +0 -0
  384. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/examples/basic.html +0 -0
  385. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/package-lock.json +0 -0
  386. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/package.json +0 -0
  387. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/serve.py +0 -0
  388. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/src/index.ts +0 -0
  389. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/src/loader.ts +0 -0
  390. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/src/runtime.ts +0 -0
  391. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/src/types.ts +0 -0
  392. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/test-standalone.html +0 -0
  393. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/tsconfig.json +0 -0
  394. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/vitest.config.ts +0 -0
  395. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.git +0 -0
  396. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
  397. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
  398. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
  399. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
  400. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.gitignore +0 -0
  401. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.gitmodules +0 -0
  402. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.npmignore +0 -0
  403. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/.prettierignore +0 -0
  404. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/CMakeLists.txt +0 -0
  405. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/LICENCE +0 -0
  406. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/README.md +0 -0
  407. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/README_banner.png +0 -0
  408. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/assets/screenshot_0.png +0 -0
  409. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/actions.hpp +0 -0
  410. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
  411. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/glue.hpp +0 -0
  412. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
  413. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
  414. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
  415. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
  416. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
  417. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
  418. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
  419. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/cpp/wllama.cpp +0 -0
  420. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/basic/index.html +0 -0
  421. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/embeddings/index.html +0 -0
  422. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
  423. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/.gitignore +0 -0
  424. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/README.md +0 -0
  425. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/index.html +0 -0
  426. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/package-lock.json +0 -0
  427. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/package.json +0 -0
  428. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
  429. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
  430. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
  431. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
  432. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
  433. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
  434. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
  435. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
  436. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
  437. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
  438. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
  439. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
  440. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/config.ts +0 -0
  441. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/index.css +0 -0
  442. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
  443. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
  444. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
  445. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
  446. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
  447. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
  448. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
  449. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
  450. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
  451. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
  452. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
  453. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
  454. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
  455. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
  456. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
  457. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
  458. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/guides/intro-v2.md +0 -0
  459. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/index.ts +0 -0
  460. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/package-lock.json +0 -0
  461. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/package.json +0 -0
  462. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
  463. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
  464. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/scripts/build_worker.sh +0 -0
  465. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
  466. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
  467. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/scripts/http_server.js +0 -0
  468. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/scripts/post_build.sh +0 -0
  469. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/cache-manager.ts +0 -0
  470. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/glue/glue.ts +0 -0
  471. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/glue/messages.ts +0 -0
  472. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/index.ts +0 -0
  473. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/mjs.test.ts +0 -0
  474. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/model-manager.test.ts +0 -0
  475. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/model-manager.ts +0 -0
  476. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
  477. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
  478. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
  479. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
  480. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/utils.test.ts +0 -0
  481. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/utils.ts +0 -0
  482. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
  483. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/wllama.test.ts +0 -0
  484. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/wllama.ts +0 -0
  485. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/worker.ts +0 -0
  486. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
  487. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
  488. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
  489. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/tsconfig.build.json +0 -0
  490. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/tsup.config.ts +0 -0
  491. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev10}/web-sdk/wllama/vitest.config.ts +0 -0
@@ -8,7 +8,7 @@ Docs: https://programasweights.readthedocs.io
8
8
  ## Install
9
9
 
10
10
  ```bash
11
- pip install --pre programasweights
11
+ pip install --pre programasweights --extra-index-url https://pypi.programasweights.com/simple/
12
12
  ```
13
13
 
14
14
  ## Usage
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: programasweights
3
- Version: 0.1.0.dev8
3
+ Version: 0.1.0.dev10
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
@@ -22,7 +22,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
23
  Requires-Python: >=3.9
24
24
  Requires-Dist: httpx<1.0,>=0.27.0
25
- Requires-Dist: llama-cpp-python<1.0,>=0.3.0
25
+ Requires-Dist: llama-cpp-python<=0.3.18,>=0.3.0
26
26
  Provides-Extra: test
27
27
  Requires-Dist: pytest; extra == 'test'
28
28
  Description-Content-Type: text/markdown
@@ -36,7 +36,7 @@ Define what a function should do in plain English. PAW compiles it into a small
36
36
  ## Install
37
37
 
38
38
  ```bash
39
- pip install programasweights
39
+ pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/
40
40
  ```
41
41
 
42
42
  ## Quick Start
@@ -7,7 +7,7 @@ Define what a function should do in plain English. PAW compiles it into a small
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- pip install programasweights
10
+ pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/
11
11
  ```
12
12
 
13
13
  ## Quick Start
@@ -3,23 +3,21 @@
3
3
  Install the ProgramAsWeights SDK from PyPI:
4
4
 
5
5
  ```bash
6
- pip install --pre programasweights
6
+ pip install --pre programasweights --extra-index-url https://pypi.programasweights.com/simple/
7
7
  ```
8
8
 
9
- ## Requirements
10
-
11
- - **Python:** 3.9 through 3.12. Python 3.13 is not supported yet because `llama-cpp-python` does not support it.
9
+ The `--extra-index-url` flag provides pre-built binaries for `llama-cpp-python`, making installation fast (~10 seconds). Without it, the C++ backend compiles from source (~5 minutes).
12
10
 
13
- ## First-time build
11
+ ## Requirements
14
12
 
15
- `llama-cpp-python` may compile from source on first install. Expect roughly five minutes; this is normal.
13
+ - **Python:** 3.9 through 3.13.
16
14
 
17
15
  ## Anaconda on Linux: OpenMP / libgomp errors
18
16
 
19
- If the build fails with `libgomp`-related errors, disable OpenMP for the GGML build:
17
+ If the build fails with `libgomp`-related errors, disable OpenMP:
20
18
 
21
19
  ```bash
22
- CMAKE_ARGS="-DGGML_OPENMP=OFF" pip install --pre programasweights
20
+ CMAKE_ARGS="-DGGML_OPENMP=OFF" pip install --pre programasweights --extra-index-url https://pypi.programasweights.com/simple/
23
21
  ```
24
22
 
25
23
  ## Cache and configuration
@@ -7,7 +7,7 @@ ProgramAsWeights lets you define functions in English and compile them into tiny
7
7
  ## Quick Start
8
8
 
9
9
  ```bash
10
- pip install --pre programasweights
10
+ pip install --pre programasweights --extra-index-url https://pypi.programasweights.com/simple/
11
11
  ```
12
12
 
13
13
  ```python
@@ -22,7 +22,7 @@ API reference:
22
22
  paw.api_key API key (set via login() or PAW_API_KEY env var)
23
23
  """
24
24
 
25
- __version__ = "0.1.0.dev8"
25
+ __version__ = "0.1.0.dev10"
26
26
 
27
27
  from .config import get_api_url, get_api_key, set_api_key
28
28
 
@@ -4,7 +4,7 @@ Local cache management for base models and compiled programs.
4
4
  Cache structure:
5
5
  ~/.cache/programasweights/
6
6
  base_models/
7
- qwen3-0.6b-q6k.gguf # ~623 MB, downloaded once
7
+ qwen3-0.6b-q6_k.gguf # ~623 MB, downloaded once
8
8
  programs/
9
9
  <program_id>/
10
10
  adapter.gguf # ~23 MB, Q4_0 LoRA
@@ -36,7 +36,12 @@ INTERPRETER_TO_GGUF = {
36
36
 
37
37
  def get_base_model_path(interpreter: str = "Qwen/Qwen3-0.6B") -> Path:
38
38
  """Get the path to the base model GGUF, downloading if needed."""
39
- gguf_name = INTERPRETER_TO_GGUF.get(interpreter, "qwen3-0.6b-q6k")
39
+ gguf_name = INTERPRETER_TO_GGUF.get(interpreter)
40
+ if not gguf_name:
41
+ raise ValueError(
42
+ f"Unknown interpreter: '{interpreter}'. "
43
+ f"Supported: {list(INTERPRETER_TO_GGUF.keys())}"
44
+ )
40
45
  gguf_path = config.get_base_models_dir() / f"{gguf_name}.gguf"
41
46
 
42
47
  if gguf_path.exists():
@@ -3,10 +3,11 @@
3
3
  ProgramAsWeights CLI.
4
4
 
5
5
  Usage:
6
- paw compile <spec> Compile a spec on the server
7
- paw run <program_id> <input> Run a program locally
8
- paw login Authenticate with email
9
- paw info <program_id> Show program metadata
6
+ paw compile --spec "..." Compile a spec on the server
7
+ paw run --program <id> --input "..." Run a program locally
8
+ paw rename <program> <slug> Set or change a program's slug
9
+ paw info <program> Show program metadata
10
+ paw login [key] Save API key for authentication
10
11
 
11
12
  All commands support --json for structured output (agent-friendly).
12
13
  """
@@ -63,6 +64,8 @@ def cmd_run(args):
63
64
  import programasweights as paw
64
65
  if args.api_url:
65
66
  paw.api_url = args.api_url
67
+ if args.api_key:
68
+ paw.api_key = args.api_key
66
69
 
67
70
  fn = paw.function(
68
71
  args.program, verbose=args.verbose,
@@ -119,6 +122,8 @@ def cmd_info(args):
119
122
  import programasweights as paw
120
123
  if args.api_url:
121
124
  paw.api_url = args.api_url
125
+ if args.api_key:
126
+ paw.api_key = args.api_key
122
127
 
123
128
  from programasweights.client import PAWClient
124
129
  client = PAWClient(api_url=paw.api_url, api_key=paw.api_key)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "programasweights"
7
- version = "0.1.0.dev8"
7
+ version = "0.1.0.dev10"
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"
@@ -28,7 +28,7 @@ classifiers = [
28
28
  ]
29
29
  dependencies = [
30
30
  "httpx>=0.27.0,<1.0",
31
- "llama-cpp-python>=0.3.0,<1.0",
31
+ "llama-cpp-python>=0.3.0,<=0.3.18",
32
32
  ]
33
33
 
34
34
  [project.urls]
@@ -43,7 +43,7 @@ async def run_inference(
43
43
  logger.info("infer_request", program_id=req.program_id,
44
44
  input_len=len(req.input), max_tokens=req.max_tokens)
45
45
 
46
- program = await resolve_program(req.program_id, db)
46
+ program = await resolve_program(req.program_id, db, user=user)
47
47
 
48
48
  if not program:
49
49
  raise HTTPException(status_code=404, detail={
@@ -47,37 +47,49 @@ async def _get_owner_slug(program: Program, db: AsyncSession) -> str | None:
47
47
  return f"{row[0]}/{row[1]}" if row and row[0] else None
48
48
 
49
49
 
50
- async def resolve_program(id_or_slug: str, db: AsyncSession) -> Program | None:
50
+ async def resolve_program(
51
+ id_or_slug: str,
52
+ db: AsyncSession,
53
+ user: User | None = None,
54
+ require_public: bool = True,
55
+ ) -> Program | None:
51
56
  """Resolve a program by hash ID or username/slug handle.
52
57
 
53
58
  Resolution order:
54
59
  1. Exact hash ID match
55
60
  2. If 'username/slug-name': join Alias + User where username and slug_name match
56
61
  3. If bare name (no /): try as programasweights official namespace
62
+
63
+ Privacy: if require_public is True (default), private programs are only
64
+ returned when the requesting user is the owner. Otherwise returns None.
57
65
  """
58
66
  result = await db.execute(select(Program).where(Program.id == id_or_slug))
59
67
  program = result.scalar_one_or_none()
60
- if program:
61
- return program
62
-
63
- if "/" in id_or_slug:
64
- username, slug_name = id_or_slug.split("/", 1)
65
- result = await db.execute(
66
- select(Program)
67
- .join(Alias, Alias.program_id == Program.id)
68
- .join(User, User.id == Alias.owner_id)
69
- .where(User.username == username, Alias.slug_name == slug_name)
70
- )
71
- return result.scalar_one_or_none()
72
68
 
73
- # Bare name: try official namespace (programasweights)
74
- result = await db.execute(
75
- select(Program)
76
- .join(Alias, Alias.program_id == Program.id)
77
- .join(User, User.id == Alias.owner_id)
78
- .where(User.username == SYSTEM_NAMESPACE, Alias.slug_name == id_or_slug)
79
- )
80
- return result.scalar_one_or_none()
69
+ if not program:
70
+ if "/" in id_or_slug:
71
+ username, slug_name = id_or_slug.split("/", 1)
72
+ result = await db.execute(
73
+ select(Program)
74
+ .join(Alias, Alias.program_id == Program.id)
75
+ .join(User, User.id == Alias.owner_id)
76
+ .where(User.username == username, Alias.slug_name == slug_name)
77
+ )
78
+ program = result.scalar_one_or_none()
79
+ else:
80
+ result = await db.execute(
81
+ select(Program)
82
+ .join(Alias, Alias.program_id == Program.id)
83
+ .join(User, User.id == Alias.owner_id)
84
+ .where(User.username == SYSTEM_NAMESPACE, Alias.slug_name == id_or_slug)
85
+ )
86
+ program = result.scalar_one_or_none()
87
+
88
+ if program and require_public and not program.public:
89
+ if not user or user.id != program.author_id:
90
+ return None
91
+
92
+ return program
81
93
 
82
94
 
83
95
  # --- Tags ---
@@ -224,28 +236,45 @@ async def list_programs(
224
236
  programs = result.scalars().all()
225
237
 
226
238
  program_ids = [p.id for p in programs]
227
- author_id_by_program = {p.id: p.author_id for p in programs}
228
- all_alias_result = await db.execute(
239
+
240
+ # Fetch viewer's slugs (if logged in) and owner slugs in one query
241
+ alias_result = await db.execute(
229
242
  select(Alias.program_id, Alias.owner_id, User.username, Alias.slug_name)
230
243
  .join(User, User.id == Alias.owner_id)
231
- .where(Alias.program_id.in_(program_ids))
244
+ .join(Program, Program.id == Alias.program_id)
245
+ .where(
246
+ Alias.program_id.in_(program_ids),
247
+ or_(
248
+ Alias.owner_id == Program.author_id,
249
+ Alias.owner_id == (user.id if user else -1),
250
+ ),
251
+ )
232
252
  .order_by(Alias.created_at)
233
253
  )
234
- alias_map: dict[str, list[str]] = {}
235
- for pid, owner_id, username, slug_name in all_alias_result.all():
254
+ viewer_slug_map: dict[str, str] = {}
255
+ owner_slug_map: dict[str, str] = {}
256
+ for pid, owner_id, username, slug_name in alias_result.all():
236
257
  if not username:
237
258
  continue
238
259
  handle = f"{username}/{slug_name}"
239
- prog_author = author_id_by_program.get(pid)
240
- if owner_id == prog_author:
241
- alias_map.setdefault(pid, []).insert(0, handle)
260
+ if user and owner_id == user.id:
261
+ viewer_slug_map[pid] = handle
242
262
  else:
243
- alias_map.setdefault(pid, []).append(handle)
263
+ owner_slug_map.setdefault(pid, handle)
264
+
265
+ def best_slug(pid: str) -> str | None:
266
+ return viewer_slug_map.get(pid) or owner_slug_map.get(pid)
267
+
268
+ alias_map: dict[str, list[str]] = {}
269
+ for pid in program_ids:
270
+ s = best_slug(pid)
271
+ if s:
272
+ alias_map[pid] = [s]
244
273
 
245
274
  def display_name(p):
246
- aliases = alias_map.get(p.id, [])
247
- if aliases:
248
- return aliases[0].split("/")[-1]
275
+ slug = best_slug(p.id)
276
+ if slug:
277
+ return slug.split("/")[-1]
249
278
  return p.name
250
279
 
251
280
  author_ids = list({p.author_id for p in programs if p.author_id})
@@ -291,28 +320,19 @@ async def list_programs(
291
320
 
292
321
 
293
322
  @router.get("/programs/resolve/{slug:path}")
294
- async def resolve_slug(slug: str, db: AsyncSession = Depends(get_db)):
295
- if "/" in slug:
296
- username, slug_name = slug.split("/", 1)
297
- result = await db.execute(
298
- select(Alias.program_id, User.username, Alias.slug_name)
299
- .join(User, User.id == Alias.owner_id)
300
- .where(User.username == username, Alias.slug_name == slug_name)
301
- )
302
- else:
303
- result = await db.execute(
304
- select(Alias.program_id, User.username, Alias.slug_name)
305
- .join(User, User.id == Alias.owner_id)
306
- .where(User.username == SYSTEM_NAMESPACE, Alias.slug_name == slug)
307
- )
308
-
309
- row = result.first()
310
- if not row:
323
+ async def resolve_slug(
324
+ slug: str,
325
+ db: AsyncSession = Depends(get_db),
326
+ user: User | None = Depends(get_current_user),
327
+ ):
328
+ program = await resolve_program(slug, db, user=user)
329
+ if not program:
311
330
  raise HTTPException(status_code=404, detail={
312
331
  "error": "alias_not_found",
313
332
  "message": f"No program found with alias '{slug}'",
314
333
  })
315
- return {"slug": f"{row[1]}/{row[2]}", "program_id": row[0]}
334
+ owner_slug = await _get_owner_slug(program, db)
335
+ return {"slug": owner_slug or slug, "program_id": program.id}
316
336
 
317
337
 
318
338
  @router.get("/programs/{id_or_slug}")
@@ -321,7 +341,7 @@ async def get_program(
321
341
  db: AsyncSession = Depends(get_db),
322
342
  user: User | None = Depends(get_current_user),
323
343
  ):
324
- program = await resolve_program(id_or_slug, db)
344
+ program = await resolve_program(id_or_slug, db, user=user)
325
345
  if not program:
326
346
  raise HTTPException(status_code=404, detail={
327
347
  "error": "not_found",
@@ -380,8 +400,12 @@ async def get_program(
380
400
 
381
401
 
382
402
  @router.get("/programs/{id_or_slug}/download")
383
- async def download_program(id_or_slug: str, db: AsyncSession = Depends(get_db)):
384
- program = await resolve_program(id_or_slug, db)
403
+ async def download_program(
404
+ id_or_slug: str,
405
+ db: AsyncSession = Depends(get_db),
406
+ user: User | None = Depends(get_current_user),
407
+ ):
408
+ program = await resolve_program(id_or_slug, db, user=user)
385
409
  if not program:
386
410
  raise HTTPException(status_code=404, detail=f"Program '{id_or_slug}' not found")
387
411
 
@@ -395,12 +419,21 @@ async def download_program(id_or_slug: str, db: AsyncSession = Depends(get_db)):
395
419
  ALLOWED_ASSETS = {"adapter.gguf", "prompt_template.txt", "prefix_cache.bin", "prefix_tokens.json"}
396
420
 
397
421
  @router.get("/programs/{program_id}/asset/{filename}")
398
- async def serve_program_asset(program_id: str, filename: str):
422
+ async def serve_program_asset(
423
+ program_id: str,
424
+ filename: str,
425
+ db: AsyncSession = Depends(get_db),
426
+ user: User | None = Depends(get_current_user),
427
+ ):
399
428
  if filename not in ALLOWED_ASSETS:
400
429
  raise HTTPException(status_code=400, detail="Invalid asset filename")
401
430
 
431
+ program = await resolve_program(program_id, db, user=user)
432
+ if not program:
433
+ raise HTTPException(status_code=404, detail="Asset not found")
434
+
402
435
  settings = get_settings()
403
- asset_path = Path(settings.STORAGE_PATH) / program_id / filename
436
+ asset_path = Path(settings.STORAGE_PATH) / program.id / filename
404
437
  if not asset_path.exists():
405
438
  raise HTTPException(status_code=404, detail="Asset not found on this server")
406
439
 
@@ -422,7 +455,7 @@ async def update_program(
422
455
  user: User = Depends(require_user),
423
456
  db: AsyncSession = Depends(get_db),
424
457
  ):
425
- program = await resolve_program(id_or_slug, db)
458
+ program = await resolve_program(id_or_slug, db, user=user)
426
459
  if not program:
427
460
  raise HTTPException(status_code=404, detail="Program not found")
428
461
 
@@ -495,7 +528,7 @@ async def vote_program(
495
528
  user: User = Depends(require_user),
496
529
  db: AsyncSession = Depends(get_db),
497
530
  ):
498
- program = await resolve_program(id_or_slug, db)
531
+ program = await resolve_program(id_or_slug, db, user=user)
499
532
  if not program:
500
533
  raise HTTPException(status_code=404, detail="Program not found")
501
534
 
@@ -548,8 +581,9 @@ async def get_cases(
548
581
  page: int = 1,
549
582
  page_size: int = 20,
550
583
  db: AsyncSession = Depends(get_db),
584
+ user: User | None = Depends(get_current_user),
551
585
  ):
552
- program = await resolve_program(id_or_slug, db)
586
+ program = await resolve_program(id_or_slug, db, user=user)
553
587
  if not program:
554
588
  raise HTTPException(status_code=404, detail="Program not found")
555
589
 
@@ -604,8 +638,9 @@ async def create_case(
604
638
  id_or_slug: str,
605
639
  request: Request,
606
640
  db: AsyncSession = Depends(get_db),
641
+ user: User | None = Depends(get_current_user),
607
642
  ):
608
- program = await resolve_program(id_or_slug, db)
643
+ program = await resolve_program(id_or_slug, db, user=user)
609
644
  if not program:
610
645
  raise HTTPException(status_code=404, detail="Program not found")
611
646
 
@@ -632,7 +667,7 @@ async def create_alias(
632
667
  user: User = Depends(require_user),
633
668
  db: AsyncSession = Depends(get_db),
634
669
  ):
635
- program = await resolve_program(program_id, db)
670
+ program = await resolve_program(program_id, db, user=user)
636
671
  if not program:
637
672
  raise HTTPException(status_code=404, detail="Program not found")
638
673
 
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Test that PAW functions work offline after first use.
4
+
5
+ Step 1 (warm): Call paw.function() with a slug to populate caches.
6
+ Step 2 (cold offline): In a NEW process with all network blocked,
7
+ call paw.function() with the same slug and run inference.
8
+
9
+ Usage:
10
+ python3 tests/test_offline_cache.py
11
+ """
12
+
13
+ import json
14
+ import subprocess
15
+ import sys
16
+ import os
17
+
18
+ SLUG = "programasweights/email-triage"
19
+
20
+ STEP1_SCRIPT = '''
21
+ import programasweights as paw
22
+ from programasweights.cache import _slug_cache_path, get_cached_slug
23
+ import json
24
+
25
+ print("Step 1: Warming cache with network...")
26
+ fn = paw.function("{slug}")
27
+ result = fn("Server is down, need immediate help!")
28
+ print(f" Result: {{result}}")
29
+
30
+ # Verify slug cache was saved
31
+ path = _slug_cache_path()
32
+ assert path.exists(), "slug_cache.json was not created!"
33
+ data = json.loads(path.read_text())
34
+ assert "{slug}" in data, "Slug not in cache!"
35
+ program_id = data["{slug}"]
36
+ print(f" Cached slug -> {{program_id}}")
37
+ print(" STEP 1 PASSED")
38
+ '''.format(slug=SLUG)
39
+
40
+ STEP2_SCRIPT = '''
41
+ import socket
42
+
43
+ # Block ALL network access before importing anything PAW-related
44
+ _real_connect = socket.socket.connect
45
+ def _blocked_connect(self, *args, **kwargs):
46
+ raise OSError("NETWORK BLOCKED: offline test detected a network call!")
47
+ socket.socket.connect = _blocked_connect
48
+
49
+ # Also block DNS resolution
50
+ _real_getaddrinfo = socket.getaddrinfo
51
+ def _blocked_getaddrinfo(*args, **kwargs):
52
+ raise OSError("DNS BLOCKED: offline test detected a DNS lookup!")
53
+ socket.getaddrinfo = _blocked_getaddrinfo
54
+
55
+ import programasweights as paw
56
+
57
+ print("Step 2: Cold start with ALL network blocked...")
58
+ fn = paw.function("{slug}")
59
+ result = fn("Meeting notes from yesterday - please review")
60
+ print(f" Result: {{result}}")
61
+ print(" STEP 2 PASSED: Function works fully offline!")
62
+ '''.format(slug=SLUG)
63
+
64
+
65
+ def main():
66
+ python = sys.executable
67
+
68
+ print("=" * 60)
69
+ print("PAW Offline Cache Test")
70
+ print("=" * 60)
71
+ print()
72
+
73
+ # Step 1: warm cache
74
+ r = subprocess.run([python, "-c", STEP1_SCRIPT], capture_output=True, text=True)
75
+ print(r.stdout)
76
+ if r.returncode != 0:
77
+ print(f"STEP 1 FAILED:\n{r.stderr}")
78
+ return 1
79
+
80
+ print()
81
+
82
+ # Step 2: cold offline (new process, network blocked)
83
+ r = subprocess.run([python, "-c", STEP2_SCRIPT], capture_output=True, text=True)
84
+ print(r.stdout)
85
+ if r.returncode != 0:
86
+ print(f"STEP 2 FAILED:\n{r.stderr}")
87
+ return 1
88
+
89
+ print()
90
+ print("=" * 60)
91
+ print("ALL PASSED: PAW functions work offline after first use.")
92
+ print("=" * 60)
93
+ return 0
94
+
95
+
96
+ if __name__ == "__main__":
97
+ sys.exit(main())