programasweights 0.2.0__tar.gz → 0.2.2.dev1__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 (502) hide show
  1. programasweights-0.2.2.dev1/.cursor/rules/sdk-publishing.mdc +53 -0
  2. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/.cursor/rules/vllm-deployment.mdc +17 -5
  3. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/AGENTS.md +24 -22
  4. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/PKG-INFO +1 -1
  5. programasweights-0.2.2.dev1/docs/api-reference/cli.md +90 -0
  6. programasweights-0.2.2.dev1/docs/api-reference/python-sdk.md +107 -0
  7. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/api-reference/rest-api.md +25 -14
  8. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/__init__.py +59 -3
  9. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/cli.py +3 -1
  10. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/client.py +25 -7
  11. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/runtime_llamacpp.py +19 -6
  12. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/pyproject.toml +1 -1
  13. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/compile.py +10 -3
  14. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/programs.py +19 -7
  15. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/compile_provider.py +26 -5
  16. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/tests/test_sdk.py +196 -0
  17. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/tests/test_sdk.sh +1 -1
  18. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/e2e/full.spec.ts +12 -14
  19. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/AboutPage.tsx +1 -1
  20. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/AgentsPage.tsx +66 -13
  21. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/AuthorPage.tsx +10 -5
  22. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/HubProgramPage.tsx +15 -21
  23. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/LandingPage.tsx +4 -2
  24. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/MainInterface.tsx +53 -37
  25. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/NavigationHelper.tsx +1 -1
  26. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/ProfilePage.tsx +27 -20
  27. programasweights-0.2.2.dev1/web-sdk/LICENSE +21 -0
  28. programasweights-0.2.2.dev1/web-sdk/__tests__/e2e/browser.spec.ts +223 -0
  29. programasweights-0.2.2.dev1/web-sdk/__tests__/e2e/server.ts +69 -0
  30. programasweights-0.2.2.dev1/web-sdk/__tests__/e2e/start-server.ts +2 -0
  31. programasweights-0.2.2.dev1/web-sdk/__tests__/e2e/test-page.html +122 -0
  32. programasweights-0.2.2.dev1/web-sdk/__tests__/loader.test.ts +244 -0
  33. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/package-lock.json +61 -2
  34. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/package.json +4 -3
  35. programasweights-0.2.2.dev1/web-sdk/playwright.config.ts +19 -0
  36. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/src/runtime.ts +3 -1
  37. programasweights-0.2.0/docs/api-reference/cli.md +0 -76
  38. programasweights-0.2.0/docs/api-reference/python-sdk.md +0 -75
  39. programasweights-0.2.0/web-app/frontend/test-results/.last-run.json +0 -4
  40. programasweights-0.2.0/web-sdk/__tests__/loader.test.ts +0 -110
  41. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/.git +0 -0
  42. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/.github/workflows/web-sdk.yml +0 -0
  43. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/.gitignore +0 -0
  44. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/.gitmodules +0 -0
  45. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/.hatch_build.toml +0 -0
  46. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/.readthedocs.yaml +0 -0
  47. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/1apple.jpg +0 -0
  48. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/1apple2.jpg +0 -0
  49. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/2apples.jpg +0 -0
  50. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/2apples2.jpg +0 -0
  51. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/3apples.jpg +0 -0
  52. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/3apples2.jpg +0 -0
  53. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/479400.png +0 -0
  54. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/4apples.jpg +0 -0
  55. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/4apples2.jpg +0 -0
  56. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/4apples3.jpg +0 -0
  57. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/4apples4.jpg +0 -0
  58. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/5apples.jpg +0 -0
  59. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/6apples.jpg +0 -0
  60. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/8apples.jpg +0 -0
  61. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/9apples.jpg +0 -0
  62. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/CHANGELOG.md +0 -0
  63. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/FLOW_SUMMARY.md +0 -0
  64. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/LICENSE +0 -0
  65. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/MANIFEST.in +0 -0
  66. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/ONNX_MIGRATION_PLAN.md +0 -0
  67. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/PREFIX_TOKENS_DESIGN.md +0 -0
  68. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/PYPI_README.md +0 -0
  69. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/README.md +0 -0
  70. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/TRUNCATION_CHANGES.md +0 -0
  71. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/USE_CASES_AND_IDEAS.md +0 -0
  72. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/VERIFICATION_USAGE.md +0 -0
  73. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/analyze_dataset.py +0 -0
  74. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/analyze_lengths.py +0 -0
  75. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/code_prompt.md +0 -0
  76. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/evaluate_openai_python_code_baseline.py +0 -0
  77. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/openai_batch_request.py +0 -0
  78. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/prepare_alchemist_data.py +0 -0
  79. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/prepare_var_bench_data.py +0 -0
  80. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/python_code_sandbox.py +0 -0
  81. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/script_evaluation_var_bench.sh +0 -0
  82. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/script_evalution_evaluation.sh +0 -0
  83. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/script_evalution_request.sh +0 -0
  84. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/baselines/script_evalution_statistics.sh +0 -0
  85. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/benchmark_pytorch_vs_onnx.py +0 -0
  86. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/benchmark_user_experience.py +0 -0
  87. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/check_dataset.py +0 -0
  88. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/combine_datasets.py +0 -0
  89. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/compare_datasets.py +0 -0
  90. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/compare_old_vs_regen.py +0 -0
  91. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/convert_paw_to_svg.py +0 -0
  92. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/create_favicon_sizes.py +0 -0
  93. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/create_visualization_from_log.py +0 -0
  94. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/create_vqa_dataset.py +0 -0
  95. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/debug_cache.py +0 -0
  96. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/debug_eos_example.sh +0 -0
  97. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
  98. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/adr/002-q4_0-adapter-format.md +0 -0
  99. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/adr/003-single-spec-field.md +0 -0
  100. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/adr/004-compiler-naming.md +0 -0
  101. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/adr/005-vllm-hidden-states.md +0 -0
  102. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/adr/006-email-api-key-auth.md +0 -0
  103. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/advanced/adrs.md +0 -0
  104. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/advanced/architecture.md +0 -0
  105. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/architecture.md +0 -0
  106. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/getting-started/first-program.md +0 -0
  107. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/getting-started/installation.md +0 -0
  108. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/getting-started/naming-programs.md +0 -0
  109. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/guide/browser-inference.md +0 -0
  110. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/guide/how-it-works.md +0 -0
  111. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/guide/local-inference.md +0 -0
  112. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/guide/writing-good-specs.md +0 -0
  113. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/hub/browsing-programs.md +0 -0
  114. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/hub/feedback-cases.md +0 -0
  115. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/hub/publishing-programs.md +0 -0
  116. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/index.md +0 -0
  117. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/docs/requirements.txt +0 -0
  118. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/estimate_data_gen_cost.py +0 -0
  119. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/eval.py +0 -0
  120. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/examples/flask_app.py +0 -0
  121. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/examples/jupyter_notebook.py +0 -0
  122. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/examples/langchain_integration.py +0 -0
  123. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/examples/replace_openai.py +0 -0
  124. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/export_to_onnx.py +0 -0
  125. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/extract_models.py +0 -0
  126. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/inspect_data_dirs.py +0 -0
  127. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/latest_export.csv +0 -0
  128. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/log.train.81920.morecategories.extraprefix +0 -0
  129. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
  130. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/merge_datasets.py +0 -0
  131. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/mkdocs.yml +0 -0
  132. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/paw.png +0 -0
  133. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/paw.svg +0 -0
  134. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/process_im2latex_dataset.py +0 -0
  135. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/artifacts.py +0 -0
  136. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/cache.py +0 -0
  137. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/compiler/__init__.py +0 -0
  138. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/compiler/dummy.py +0 -0
  139. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/config.py +0 -0
  140. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/convert_peft_to_paw.py +0 -0
  141. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/paw_format.py +0 -0
  142. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/runtime/__init__.py +0 -0
  143. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/runtime/interpreter.py +0 -0
  144. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights/runtime/interpreter_onnx.py +0 -0
  145. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/__init__.py +0 -0
  146. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/compiler/__init__.py +0 -0
  147. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/lora_format.py +0 -0
  148. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/runtime/__init__.py +0 -0
  149. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/runtime/interpreter_lora.py +0 -0
  150. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/tests/test_compile_and_run.py +0 -0
  151. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/tests/test_lora_format.py +0 -0
  152. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/tests/test_training.py +0 -0
  153. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/train_lora.py +0 -0
  154. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/training/__init__.py +0 -0
  155. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
  156. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/run_eval.sh +0 -0
  157. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/run_training.sh +0 -0
  158. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/scripts/filter_table_by_length.py +0 -0
  159. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/.env.example +0 -0
  160. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/alembic/env.py +0 -0
  161. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/alembic/script.py.mako +0 -0
  162. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/alembic/versions/001_initial_schema.py +0 -0
  163. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
  164. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/alembic/versions/003_fulltext_search_ranking.py +0 -0
  165. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/alembic/versions/004_fix_alias_slug_constraint.py +0 -0
  166. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/alembic.ini +0 -0
  167. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/__init__.py +0 -0
  168. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/config.py +0 -0
  169. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/dependencies.py +0 -0
  170. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/logging_config.py +0 -0
  171. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/main.py +0 -0
  172. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/middleware/__init__.py +0 -0
  173. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/middleware/rate_limit.py +0 -0
  174. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/models/__init__.py +0 -0
  175. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/models/database.py +0 -0
  176. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/models/orm.py +0 -0
  177. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/models/schemas.py +0 -0
  178. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/__init__.py +0 -0
  179. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/auth.py +0 -0
  180. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/feedback.py +0 -0
  181. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/health.py +0 -0
  182. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/infer.py +0 -0
  183. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/routes/models_info.py +0 -0
  184. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/__init__.py +0 -0
  185. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/auto_tag_service.py +0 -0
  186. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/auto_title_service.py +0 -0
  187. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/compile_service.py +0 -0
  188. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/infer_service.py +0 -0
  189. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/search_service.py +0 -0
  190. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/api/services/storage_service.py +0 -0
  191. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/benchmarks/benchmark_api.py +0 -0
  192. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/benchmarks/handcrafted_specs.json +0 -0
  193. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/benchmarks/last_benchmark_results.json +0 -0
  194. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/benchmarks/last_stress_results.json +0 -0
  195. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/benchmarks/stress_test.py +0 -0
  196. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/compiler_registry.json +0 -0
  197. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/provider_configs/gpt2.json +0 -0
  198. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/provider_configs/qwen3-0.6b.json +0 -0
  199. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/requirements.txt +0 -0
  200. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
  201. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/ablation_search.py +0 -0
  202. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/backfill_hf_browser_assets.py +0 -0
  203. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/backfill_hf_safetensors.py +0 -0
  204. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/backfill_interestingness.py +0 -0
  205. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/backfill_tags.py +0 -0
  206. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/backfill_titles.py +0 -0
  207. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/benchmark_gpt2.py +0 -0
  208. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/cleanup_storage.py +0 -0
  209. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/eval_search.py +0 -0
  210. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/evict_cold_programs.py +0 -0
  211. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/generate_prefix_cache.py +0 -0
  212. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/launch_gpt2_compiler.py +0 -0
  213. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/launch_qwen3_compiler.py +0 -0
  214. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/patch_vllm.sh +0 -0
  215. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/restart.sh +0 -0
  216. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/start_all.sh +0 -0
  217. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/start_gpt2_services.sh +0 -0
  218. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/start_provider.sh +0 -0
  219. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/scripts/start_services.sh +0 -0
  220. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/__init__.py +0 -0
  221. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/conftest.py +0 -0
  222. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/test_auth.py +0 -0
  223. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/test_compile.py +0 -0
  224. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/test_errors.py +0 -0
  225. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/test_infer.py +0 -0
  226. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/test_integration_gpu.py +0 -0
  227. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/test_rate_limit.py +0 -0
  228. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/tests/test_storage.py +0 -0
  229. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/vllm_models/__init__.py +0 -0
  230. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/vllm_models/gpt2_lora_patch.py +0 -0
  231. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/vllm_models/paw_compiler.py +0 -0
  232. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/vllm_models/prepare_checkpoint.py +0 -0
  233. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/server/vllm_models/register.py +0 -0
  234. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
  235. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.em_es.png +0 -0
  236. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
  237. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
  238. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_1spec.py +0 -0
  239. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_all_caching.py +0 -0
  240. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_apple_count.py +0 -0
  241. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_batch_pilot.py +0 -0
  242. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_compile.py +0 -0
  243. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_e2e.py +0 -0
  244. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_execute.py +0 -0
  245. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_nspecs.py +0 -0
  246. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_one_vs_two_step.py +0 -0
  247. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_onnx_correctness.py +0 -0
  248. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_onnx_hf_model.py +0 -0
  249. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_onnx_hf_with_images.py +0 -0
  250. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_paw_format.py +0 -0
  251. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/test_thinking_comparison.py +0 -0
  252. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/tests/test_offline_cache.py +0 -0
  253. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/train.py +0 -0
  254. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
  255. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/README.md +0 -0
  256. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/__init__.py +0 -0
  257. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/DATASET_CHANGELOG.md +0 -0
  258. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/README.md +0 -0
  259. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
  260. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/build_user_bench.py +0 -0
  261. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/dry_run_batch.py +0 -0
  262. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/filter_test_data.py +0 -0
  263. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/generate_specs.py +0 -0
  264. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/generate_specs_batch.py +0 -0
  265. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/incremental_merge.py +0 -0
  266. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/merge_and_upload.py +0 -0
  267. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/regenerate_outputs_batch.py +0 -0
  268. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/synthesize_data.py +0 -0
  269. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/synthesize_data_batch.py +0 -0
  270. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/filter_system.txt +0 -0
  271. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/filter_user.txt +0 -0
  272. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/pairs_system.txt +0 -0
  273. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/pairs_user.txt +0 -0
  274. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/specs_system.txt +0 -0
  275. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/specs_user.txt +0 -0
  276. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/specs_user_freeform.txt +0 -0
  277. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
  278. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
  279. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/verify_system.txt +0 -0
  280. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates/verify_user.txt +0 -0
  281. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/filter_system.txt +0 -0
  282. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/filter_user.txt +0 -0
  283. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/pairs_system.txt +0 -0
  284. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/pairs_user.txt +0 -0
  285. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/specs_system.txt +0 -0
  286. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/specs_user.txt +0 -0
  287. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
  288. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
  289. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
  290. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/verify_system.txt +0 -0
  291. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/templates_old/verify_user.txt +0 -0
  292. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/data_generation/verify_test_data.py +0 -0
  293. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/datasets/__init__.py +0 -0
  294. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/datasets/jsonl_text_pairs.py +0 -0
  295. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/loops/__init__.py +0 -0
  296. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/training/loops/prefix_tuning_sft.py +0 -0
  297. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/ttt.py +0 -0
  298. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/upload_model.py +0 -0
  299. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/upload_onnx_to_huggingface.py +0 -0
  300. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/upload_onnx_to_huggingface_with_token.py +0 -0
  301. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/utils.py +0 -0
  302. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/HANDOFF.md +0 -0
  303. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/README.md +0 -0
  304. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/__init__.py +0 -0
  305. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/config.py +0 -0
  306. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/main.py +0 -0
  307. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/middleware/__init__.py +0 -0
  308. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/middleware/rate_limit.py +0 -0
  309. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/models.py +0 -0
  310. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/__init__.py +0 -0
  311. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/auth_service.py +0 -0
  312. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/case_service.py +0 -0
  313. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/compiler_service.py +0 -0
  314. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/gpt_service.py +0 -0
  315. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/hub_service.py +0 -0
  316. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/image_service.py +0 -0
  317. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/interpreter_service.py +0 -0
  318. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/services/sql_manager.py +0 -0
  319. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/templates/gpt_test_generation.txt +0 -0
  320. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/utils/__init__.py +0 -0
  321. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/utils/image_placeholders.py +0 -0
  322. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/app/utils/program_hash.py +0 -0
  323. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/clear_db.sh +0 -0
  324. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/clear_tables.sql +0 -0
  325. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/data/programs.db +0 -0
  326. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/env_example.txt +0 -0
  327. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/example_images/README.md +0 -0
  328. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/get_data_examples.py +0 -0
  329. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/requirements.txt +0 -0
  330. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/run_server.py +0 -0
  331. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_analytics_tables.sql +0 -0
  332. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_auth_tables.sql +0 -0
  333. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_cache_tables.sql +0 -0
  334. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_cases_tables.sql +0 -0
  335. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_database.sql +0 -0
  336. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_database_simple.sql +0 -0
  337. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_db.sh +0 -0
  338. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_example_images.py +0 -0
  339. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/setup_hub_tables.sql +0 -0
  340. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/backend/test_compilation_cache.py +0 -0
  341. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/README.md +0 -0
  342. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/e2e/helpers.ts +0 -0
  343. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/e2e/smoke.spec.ts +0 -0
  344. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/eslint.config.js +0 -0
  345. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/index.html +0 -0
  346. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/package-lock.json +0 -0
  347. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/package.json +0 -0
  348. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/playwright.config.ts +0 -0
  349. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/postcss.config.js +0 -0
  350. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/apple-touch-icon.png +0 -0
  351. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/browser-worker.html +0 -0
  352. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/favicon-16x16.png +0 -0
  353. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/favicon-32x32.png +0 -0
  354. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/paw-192.png +0 -0
  355. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/paw-512.png +0 -0
  356. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/paw.svg +0 -0
  357. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/react-test.html +0 -0
  358. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/test.html +0 -0
  359. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/public/vite.svg +0 -0
  360. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/scripts/deploy.sh +0 -0
  361. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/App.css +0 -0
  362. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/App.tsx +0 -0
  363. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/assets/react.svg +0 -0
  364. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/BrowserPage.tsx +0 -0
  365. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/CasesSection.tsx +0 -0
  366. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -0
  367. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/CompileSection.tsx +0 -0
  368. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/DocsPage.tsx +0 -0
  369. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/ExamplesInput.tsx +0 -0
  370. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/Footer.tsx +0 -0
  371. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/Header.tsx +0 -0
  372. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/HubPage.tsx +0 -0
  373. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/HubUploadPage.tsx +0 -0
  374. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/ModelSelector.tsx +0 -0
  375. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
  376. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/SettingsPage.tsx +0 -0
  377. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
  378. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/TermsPage.tsx +0 -0
  379. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/components/TestSection.tsx +0 -0
  380. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/index.css +0 -0
  381. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/main.tsx +0 -0
  382. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/types/index.ts +0 -0
  383. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/src/utils/api.ts +0 -0
  384. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/tailwind.config.js +0 -0
  385. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/tsconfig.app.json +0 -0
  386. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/tsconfig.json +0 -0
  387. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/tsconfig.node.json +0 -0
  388. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/frontend/vite.config.ts +0 -0
  389. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/nginx-paw.conf +0 -0
  390. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/nginx.conf +0 -0
  391. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/setup_mysql.sh +0 -0
  392. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/start.sh +0 -0
  393. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/test_setup.py +0 -0
  394. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-app/ttt.py +0 -0
  395. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/.gitignore +0 -0
  396. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/README.md +0 -0
  397. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/__tests__/prompt.test.ts +0 -0
  398. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/examples/basic.html +0 -0
  399. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/serve.py +0 -0
  400. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/src/index.ts +0 -0
  401. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/src/loader.ts +0 -0
  402. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/src/types.ts +0 -0
  403. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/test-standalone.html +0 -0
  404. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/tsconfig.json +0 -0
  405. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/vitest.config.ts +0 -0
  406. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.git +0 -0
  407. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
  408. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
  409. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
  410. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
  411. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.gitignore +0 -0
  412. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.gitmodules +0 -0
  413. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.npmignore +0 -0
  414. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/.prettierignore +0 -0
  415. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/CMakeLists.txt +0 -0
  416. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/LICENCE +0 -0
  417. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/README.md +0 -0
  418. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/README_banner.png +0 -0
  419. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/assets/screenshot_0.png +0 -0
  420. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/actions.hpp +0 -0
  421. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
  422. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/glue.hpp +0 -0
  423. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
  424. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
  425. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
  426. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
  427. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
  428. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
  429. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
  430. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/cpp/wllama.cpp +0 -0
  431. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/basic/index.html +0 -0
  432. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/embeddings/index.html +0 -0
  433. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
  434. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/.gitignore +0 -0
  435. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/README.md +0 -0
  436. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/index.html +0 -0
  437. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/package-lock.json +0 -0
  438. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/package.json +0 -0
  439. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
  440. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
  441. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
  442. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
  443. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
  444. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
  445. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
  446. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
  447. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
  448. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
  449. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
  450. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
  451. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/config.ts +0 -0
  452. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/index.css +0 -0
  453. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
  454. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
  455. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
  456. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
  457. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
  458. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
  459. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
  460. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
  461. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
  462. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
  463. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
  464. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
  465. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
  466. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
  467. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
  468. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
  469. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/guides/intro-v2.md +0 -0
  470. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/index.ts +0 -0
  471. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/package-lock.json +0 -0
  472. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/package.json +0 -0
  473. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
  474. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
  475. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/scripts/build_worker.sh +0 -0
  476. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
  477. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
  478. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/scripts/http_server.js +0 -0
  479. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/scripts/post_build.sh +0 -0
  480. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/cache-manager.ts +0 -0
  481. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/glue/glue.ts +0 -0
  482. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/glue/messages.ts +0 -0
  483. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/index.ts +0 -0
  484. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/mjs.test.ts +0 -0
  485. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/model-manager.test.ts +0 -0
  486. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/model-manager.ts +0 -0
  487. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
  488. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
  489. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
  490. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
  491. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/utils.test.ts +0 -0
  492. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/utils.ts +0 -0
  493. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
  494. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/wllama.test.ts +0 -0
  495. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/wllama.ts +0 -0
  496. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/worker.ts +0 -0
  497. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
  498. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
  499. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
  500. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/tsconfig.build.json +0 -0
  501. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/tsup.config.ts +0 -0
  502. {programasweights-0.2.0 → programasweights-0.2.2.dev1}/web-sdk/wllama/vitest.config.ts +0 -0
@@ -0,0 +1,53 @@
1
+ ---
2
+ description: SDK publishing workflow for Python and JavaScript packages
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # SDK Publishing Rules
7
+
8
+ ## Public repos are the source of truth for published packages
9
+
10
+ - **Python SDK**: https://github.com/programasweights/programasweights-python
11
+ - **JS SDK**: https://github.com/programasweights/programasweights-js
12
+
13
+ ## Release workflow
14
+
15
+ 1. Make changes in the public repo (feature branch -> PR -> main)
16
+ 2. Bump version in `pyproject.toml` / `__init__.py` (Python) or `package.json` (JS)
17
+ 3. Run tests: `bash tests/test_sdk.sh` (Python) or `npm test && npx playwright test` (JS)
18
+ 4. Tag: `git tag -a vX.Y.Z -m "Release vX.Y.Z"`
19
+ 5. Build and publish from the tagged commit:
20
+ - Python: `python -m build && twine upload dist/*`
21
+ - JS: `npm publish --access public`
22
+ 6. Push tag: `git push origin vX.Y.Z`
23
+ 7. Verify: compare published package with repo (`pip download` / `npm pack` then diff)
24
+
25
+ ## Never do
26
+
27
+ - Do NOT publish from the monorepo (`paw_discrete/programasweights/`) -- always use the public repos
28
+ - Do NOT publish without tagging first
29
+ - Do NOT forget to sync the monorepo after publishing (if changes originated there)
30
+ - Do NOT use rsync/scp for code deployment -- always git push + git pull
31
+ - Do NOT deploy to server without committing to git first
32
+
33
+ ## All repos are under github.com/programasweights/
34
+
35
+ - `website` -- monorepo deployed to server (git push website main)
36
+ - `programasweights-python` -- Python SDK (published to PyPI)
37
+ - `programasweights-js` -- JS SDK (published to npm)
38
+
39
+ ## Wheel index
40
+
41
+ Pre-built `llama-cpp-python` wheels are hosted at `pypi.programasweights.com`.
42
+ Install command: `pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/`
43
+ If `llama-cpp-python` releases a new version, rebuild wheels on our servers and update the index.
44
+
45
+ ## PyPI credentials
46
+
47
+ - Token in `~/.bashrc` on server 31.22.104.226 as `PYPI_API_TOKEN`
48
+ - Upload via: `twine upload --username __token__ --password $PYPI_API_TOKEN`
49
+
50
+ ## npm credentials
51
+
52
+ - Token in `~/.bashrc` on server 31.22.104.226 as `NPM_TOKEN`
53
+ - Granular access token with publish permissions for `@programasweights` scope
@@ -13,14 +13,26 @@ All server code lives at `/root/paw-website/` (git clone of `programasweights/we
13
13
 
14
14
  **Deployment (the ONLY way to update code):**
15
15
  ```bash
16
- # Local: push changes
17
- git push origin main
16
+ # Local: commit and push to the website repo
17
+ git push website main
18
18
 
19
- # Server: pull and restart
20
- cd /root/paw-website && git pull
21
- cd server && bash scripts/start_all.sh
19
+ # Server: pull, build frontend, restart backend
20
+ cd /root/paw-website && git fetch origin && git reset --hard origin/main
21
+ cd web-app/frontend && npm run build && rsync -a --delete dist/ /data/paw-frontend/
22
+ cd /root/paw-website/server && bash scripts/restart.sh
22
23
  ```
23
24
 
25
+ **IMPORTANT:** `dist/` is in `.gitignore`. Frontend must be built on the server after pull.
26
+
27
+ **Repos (all under github.com/programasweights/):**
28
+ - `website` -- monorepo (server, frontend, web-sdk, docs). Deployed to server.
29
+ - `programasweights-python` -- Python SDK source. Published to PyPI.
30
+ - `programasweights-js` -- JS SDK source. Published to npm.
31
+
32
+ **Local remote setup:**
33
+ - `origin` = `yuntian-group/programasweights` (private monorepo)
34
+ - `website` = `programasweights/website` (public, deployed to server)
35
+
24
36
  **NEVER use rsync or scp for code.** Model weights use scp between servers.
25
37
 
26
38
  ### GPU Layout
@@ -24,10 +24,9 @@ fn("Newsletter: spring picnic") # "wait"
24
24
  # Compile your own from a description
25
25
  program = paw.compile(
26
26
  "Fix malformed JSON: repair missing quotes and trailing commas",
27
- compiler="paw-4b-qwen3-0.6b", # or "paw-4b-gpt2" for smaller/faster
28
- slug="json-fixer" # optional: creates da03/json-fixer handle
27
+ compiler="paw-4b-qwen3-0.6b" # or "paw-4b-gpt2" for smaller/faster
29
28
  )
30
- fn = paw.function(program.slug) # or paw.function(program.id)
29
+ fn = paw.function(program.id)
31
30
  fn("{name: 'Alice',}") # '{"name": "Alice"}'
32
31
  ```
33
32
 
@@ -72,38 +71,41 @@ Use this when you want to offload all computation to the user's browser: zero se
72
71
  - **Intent routing** — map user descriptions to the closest URL, menu item, or setting
73
72
  - **Agent preprocessing** — parse tool calls, validate outputs, route tasks
74
73
 
75
- ## Authentication
74
+ ## Authentication (optional)
75
+
76
+ Everything works without authentication. Sign in for higher rate limits and program naming.
76
77
 
77
78
  ```bash
78
- # Option 1: environment variable (recommended)
79
79
  export PAW_API_KEY=paw_sk_...
80
-
81
- # Option 2: CLI login (opens browser to generate key)
82
- paw login
83
80
  ```
84
81
 
85
- Generate API keys at https://programasweights.com/settings
82
+ Generate API keys at https://programasweights.com/settings. The SDK reads `PAW_API_KEY` from the environment automatically.
86
83
 
87
- The SDK automatically reads `PAW_API_KEY` from the environment. Authenticated users get higher rate limits (60 compiles/hr vs 5 for anonymous).
84
+ | | Anonymous | Authenticated |
85
+ |---|---|---|
86
+ | Compile rate limit | 20/hr | 60/hr |
87
+ | Name programs (slugs) | No | Yes |
88
88
 
89
89
  ## Program Naming
90
90
 
91
- Programs have an immutable hash ID (e.g. `a6b454023d41ac9ca845`). Authenticated
92
- users can optionally assign a slug at compile time to create a human-readable
93
- handle like `da03/json-fixer`. Both forms work everywhere:
91
+ Every compiled program gets an immutable hash ID (e.g. `a6b454023d41ac9ca845`). Authenticated users can also assign a human-readable slug:
94
92
 
95
93
  ```python
96
- fn = paw.function("da03/json-fixer") # by slug
97
- fn = paw.function("a6b454023d41ac9ca845") # by hash
94
+ program = paw.compile("Classify sentiment", slug="my-classifier")
95
+ # program.id -> "a6b454023d41ac9ca845"
96
+ # program.slug -> "da03/my-classifier"
97
+
98
+ fn = paw.function("da03/my-classifier") # by slug (requires auth to create)
99
+ fn = paw.function("a6b454023d41ac9ca845") # by hash (always works)
98
100
  ```
99
101
 
100
102
  ## CLI
101
103
 
102
104
  ```bash
103
- paw compile --spec "Classify sentiment" --slug "my-classifier" --json
104
- paw run --program "da03/my-classifier" --input "I love this!" --json
105
- paw rename <program> <new-slug> # rename a program's slug
106
- paw info <program> # show program metadata
105
+ paw compile --spec "Classify sentiment" --json
106
+ paw run --program <program_id> --input "I love this!" --json
107
+ paw info <program_id> # show program metadata
108
+ paw rename <program_id> my-slug # name a program (requires auth)
107
109
  paw login # save API key
108
110
  ```
109
111
 
@@ -112,9 +114,9 @@ paw login # save API key
112
114
  ## API
113
115
 
114
116
  ```python
115
- paw.compile(spec, slug="my-fn") # Compile with optional slug
116
- paw.function(name_or_id) # Load by slug or hash
117
- paw.login() # Save API key
117
+ paw.compile(spec) # compile (returns Program with .id)
118
+ paw.function(program_id_or_slug) # load for local inference
119
+ paw.login() # save API key
118
120
  ```
119
121
 
120
122
  ## Browse Programs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: programasweights
3
- Version: 0.2.0
3
+ Version: 0.2.2.dev1
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
@@ -0,0 +1,90 @@
1
+ # CLI Reference
2
+
3
+ The `paw` command-line interface mirrors the Python SDK. Install from PyPI; the entry point is `paw`.
4
+
5
+ ```bash
6
+ pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/
7
+ ```
8
+
9
+ ## Global options
10
+
11
+ | Option | Description |
12
+ |--------|-------------|
13
+ | `--api-url` | Override the API base URL (default: `https://programasweights.com`). |
14
+ | `--api-key` | API key for authenticated requests. Also reads `PAW_API_KEY` env var. |
15
+ | `--json` | Machine-readable JSON output (supported by all subcommands). |
16
+
17
+ ## `paw compile`
18
+
19
+ Compile a natural-language specification on the server.
20
+
21
+ ```bash
22
+ paw compile --spec "Classify message urgency" [--compiler paw-4b-qwen3-0.6b] [--slug my-classifier] [--json]
23
+ ```
24
+
25
+ | Option | Description |
26
+ |--------|-------------|
27
+ | `--spec` | Specification text to compile (required). |
28
+ | `--compiler` | Compiler model (default: `paw-4b-qwen3-0.6b`). |
29
+ | `--slug` | URL-safe handle (e.g. `my-classifier`). Creates a `username/slug` alias. Requires auth. |
30
+ | `--json` | JSON output with `program_id`, `slug`, `status`, `timings`. |
31
+
32
+ ## `paw run`
33
+
34
+ Run inference locally against a compiled program.
35
+
36
+ ```bash
37
+ paw run --program <id_or_slug> --input "your text" [--max-tokens 512] [--temperature 0.0] [--json]
38
+ ```
39
+
40
+ | Option | Description |
41
+ |--------|-------------|
42
+ | `--program` | Program hash ID, slug (e.g. `da03/my-classifier`), or official name (e.g. `email-triage`). |
43
+ | `--input` | Input text for the program. |
44
+ | `--max-tokens` | Maximum tokens to generate (default: 512). |
45
+ | `--temperature` | Sampling temperature (default: 0.0). |
46
+ | `--verbose` | Print llama.cpp debug output. |
47
+ | `--json` | JSON output with `program`, `input`, `output`. |
48
+
49
+ ## `paw rename`
50
+
51
+ Set or change a program's slug handle. Requires authentication.
52
+
53
+ ```bash
54
+ paw rename <program_id> <new-slug> [--json]
55
+ ```
56
+
57
+ | Argument | Description |
58
+ |----------|-------------|
59
+ | `program_id` | Program hash ID or current slug. |
60
+ | `new-slug` | New slug name (2-50 chars, lowercase alphanumeric and hyphens). |
61
+
62
+ ## `paw info`
63
+
64
+ Show metadata for a program.
65
+
66
+ ```bash
67
+ paw info <program_id_or_slug> [--json]
68
+ ```
69
+
70
+ ## `paw login`
71
+
72
+ Save an API key for authenticated requests.
73
+
74
+ ```bash
75
+ paw login [key]
76
+ ```
77
+
78
+ If `key` is provided, saves it directly. If omitted, opens the browser to generate one at `programasweights.com/settings`.
79
+
80
+ ## Agent workflow example
81
+
82
+ ```bash
83
+ PROGRAM_ID=$(paw compile --spec "Classify urgency" --json | jq -r '.program_id')
84
+ paw run --program "$PROGRAM_ID" --input "Please review by EOD" --json
85
+ ```
86
+
87
+ ## Related
88
+
89
+ - [Python SDK Reference](python-sdk.md)
90
+ - [REST API Reference](rest-api.md)
@@ -0,0 +1,107 @@
1
+ # Python SDK Reference
2
+
3
+ The `programasweights` package compiles natural language specs into neural programs that run locally.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/
9
+ ```
10
+
11
+ ## Import
12
+
13
+ ```python
14
+ import programasweights as paw
15
+ ```
16
+
17
+ ## `paw.function`
18
+
19
+ ```python
20
+ fn = paw.function(name_or_id, n_ctx=2048, n_gpu_layers=0, verbose=False)
21
+ ```
22
+
23
+ Loads a compiled program and returns a callable. Downloads the program and base model on first use; cached locally after that. Works offline after first download.
24
+
25
+ | Parameter | Description |
26
+ |-----------|-------------|
27
+ | `name_or_id` | Program hash ID (e.g. `a6b454023d41ac9ca845`), slug (e.g. `da03/my-classifier`), or official shorthand (e.g. `email-triage`). |
28
+ | `n_ctx` | Context length for the local runtime (default `2048`). |
29
+ | `n_gpu_layers` | GPU layers to offload (`0` = CPU-only, `-1` = all). Set `PAW_GPU_LAYERS` env var as default. |
30
+ | `verbose` | Enable verbose logging (default `False`). |
31
+
32
+ The returned callable:
33
+
34
+ ```python
35
+ output: str = fn(input_text, max_tokens=512, temperature=0.0)
36
+ ```
37
+
38
+ | Parameter | Description |
39
+ |-----------|-------------|
40
+ | `input_text` | Input string for the program. |
41
+ | `max_tokens` | Maximum tokens to generate (default `512`). |
42
+ | `temperature` | Sampling temperature (default `0.0`). |
43
+
44
+ ## `paw.compile`
45
+
46
+ ```python
47
+ program = paw.compile(
48
+ spec,
49
+ compiler="paw-4b-qwen3-0.6b",
50
+ name=None,
51
+ tags=None,
52
+ public=True,
53
+ slug=None,
54
+ )
55
+ ```
56
+
57
+ Compiles a natural language spec on the server. Returns a `Program` object.
58
+
59
+ | Parameter | Description |
60
+ |-----------|-------------|
61
+ | `spec` | Natural language specification (10-8000 chars). |
62
+ | `compiler` | Compiler name: `paw-4b-qwen3-0.6b` (Standard) or `paw-4b-gpt2` (Compact). |
63
+ | `name` | Display title for the hub (auto-generated if omitted). |
64
+ | `tags` | Tags for discovery (list of strings, max 10). |
65
+ | `public` | Whether to list on the public hub (default `True`). |
66
+ | `slug` | URL-safe handle (e.g. `my-classifier`). Creates a `username/slug` alias. Requires authentication. |
67
+
68
+ **Return value** -- `Program` object:
69
+
70
+ | Attribute | Description |
71
+ |-----------|-------------|
72
+ | `id` | Hash-based program identifier. Use with `paw.function(program.id)`. |
73
+ | `slug` | Full slug handle (e.g. `da03/my-classifier`) if one was created, `None` otherwise. |
74
+ | `status` | `"ready"` on success, `"failed"` on error. |
75
+ | `compiler_snapshot` | Exact compiler version used. |
76
+ | `timings` | Timing metadata from the server. |
77
+ | `error` | Error message when compilation fails. |
78
+
79
+ ## `paw.login`
80
+
81
+ ```python
82
+ paw.login(key=None)
83
+ ```
84
+
85
+ Saves an API key for authenticated requests. If `key` is provided, saves it directly. If omitted, opens the browser to generate a key at `programasweights.com/settings`.
86
+
87
+ Keys are stored in `~/.config/programasweights/config.json` and loaded automatically on subsequent imports.
88
+
89
+ You can also set the `PAW_API_KEY` environment variable instead:
90
+
91
+ ```bash
92
+ export PAW_API_KEY=paw_sk_...
93
+ ```
94
+
95
+ ## Configuration
96
+
97
+ | Name | Description |
98
+ |------|-------------|
99
+ | `paw.api_url` | Base URL for API requests. Default: `https://programasweights.com`. Override with `PAW_API_URL` env var. |
100
+ | `paw.api_key` | API key for authenticated calls. Set via `paw.login()` or `PAW_API_KEY` env var. |
101
+ | `paw.__version__` | Installed package version string. |
102
+
103
+ ## Related
104
+
105
+ - [CLI Reference](cli.md)
106
+ - [REST API Reference](rest-api.md)
107
+ - [Naming Programs](../getting-started/naming-programs.md)
@@ -69,39 +69,50 @@ List or search programs.
69
69
 
70
70
  ### `GET /programs/{id_or_slug}`
71
71
 
72
- Program detail including aliases, specification, and pseudo-program where exposed by policy.
72
+ Program detail. Accepts hash ID or slug. Private programs return 404 to non-owners.
73
73
 
74
- ### `GET /programs/{id}/download`
74
+ **Response** includes: `id`, `name`, `spec`, `interpreter`, `public`, `aliases`, `user_slug`, `author`, `tags`, `upvotes`, `downloads`, `created_at`.
75
75
 
76
- Redirects to the Hugging Face CDN for the `.paw` artifact download.
76
+ ### `PATCH /programs/{id_or_slug}`
77
+
78
+ Update program metadata. **Authentication required.**
79
+
80
+ Owner-only fields: `public`, `name`, `tags`. Any authenticated user can set their own `slug`.
81
+
82
+ | Field | Type | Description |
83
+ |-------|------|-------------|
84
+ | `public` | boolean | Visibility (owner only). |
85
+ | `name` | string | Display title, max 100 chars (owner only). |
86
+ | `tags` | string[] | Tags, max 5 items (owner only). |
87
+ | `slug` | string | URL-safe handle, 2-50 chars, `^[a-z0-9][a-z0-9-]*[a-z0-9]$`. Creates/replaces your alias for this program. |
88
+
89
+ ### `GET /programs/{id_or_slug}/download`
90
+
91
+ Redirects to the Hugging Face CDN for the `.paw` artifact. Private programs return 404 to non-owners.
77
92
 
78
93
  ### `GET /programs/resolve/{slug}`
79
94
 
80
- Resolve a slug or alias to a canonical `program_id`.
95
+ Resolve a slug (e.g. `da03/my-classifier` or bare `email-triage`) to a canonical `program_id`.
81
96
 
82
97
  ### `POST /programs/{id}/alias`
83
98
 
84
- Create an alias for the program. **Authentication required.**
85
-
86
- **Request body (JSON):**
99
+ Create or update your alias for a program. **Authentication required.** If you already have an alias for this program, it is replaced (atomic update).
87
100
 
88
101
  | Field | Type | Description |
89
102
  |-------|------|-------------|
90
- | `slug` | string | Alias slug to register. |
103
+ | `slug` | string | Slug name, 2-50 chars, lowercase alphanumeric and hyphens. |
91
104
 
92
- ### `POST /programs/{id}/vote`
105
+ ### `POST /programs/{id_or_slug}/vote`
93
106
 
94
- Submit a vote for a program. **Authentication required.**
95
-
96
- **Request body (JSON):**
107
+ Submit a vote. **Authentication required.**
97
108
 
98
109
  | Field | Type | Description |
99
110
  |-------|------|-------------|
100
- | `vote` | integer | `1` (up) or `-1` (down). |
111
+ | `vote` | integer | `1` (upvote) or `-1` (downvote). Same value again removes the vote. |
101
112
 
102
113
  ### `GET /programs/{id}/cases` and `POST /programs/{id}/cases`
103
114
 
104
- Community feedback and case submission for a program. Method-specific payloads follow the server schema for each verb.
115
+ Community case submission for a program.
105
116
 
106
117
  ### `GET /auth/github`
107
118
 
@@ -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.2.0"
25
+ __version__ = "0.2.2.dev1"
26
26
 
27
27
  from .config import get_api_url, get_api_key, set_api_key
28
28
 
@@ -72,7 +72,7 @@ def compile(
72
72
 
73
73
 
74
74
  def function(
75
- program_id: str,
75
+ program_id,
76
76
  n_ctx: int = 2048,
77
77
  n_gpu_layers: int | None = None,
78
78
  verbose: bool = False,
@@ -83,7 +83,7 @@ def function(
83
83
  Subsequent calls use the local cache.
84
84
 
85
85
  Args:
86
- program_id: The program ID from ``paw.compile()``.
86
+ program_id: Program ID (str), slug, or a ``Program`` object from compile().
87
87
  n_ctx: Context window size for llama.cpp.
88
88
  n_gpu_layers: GPU layers (-1 = all, 0 = CPU only). Defaults to CPU.
89
89
  Set ``PAW_GPU_LAYERS`` env var or pass explicitly for GPU acceleration.
@@ -96,7 +96,12 @@ def function(
96
96
  >>> fn = paw.function("email-triage")
97
97
  >>> fn("Urgent: the server is down!")
98
98
  'immediate'
99
+
100
+ >>> program = paw.compile("Classify sentiment")
101
+ >>> fn = paw.function(program) # accepts Program object directly
99
102
  """
103
+ if hasattr(program_id, 'id'):
104
+ program_id = program_id.slug or program_id.id
100
105
  import os
101
106
  import re
102
107
  from .cache import is_program_cached, get_program_dir, get_cached_slug, save_slug_mapping
@@ -175,9 +180,60 @@ def login(key: str | None = None):
175
180
  print("You can also set the PAW_API_KEY environment variable.")
176
181
 
177
182
 
183
+ def compile_and_load(
184
+ spec: str,
185
+ compiler: str = "paw-4b-qwen3-0.6b",
186
+ n_ctx: int = 2048,
187
+ n_gpu_layers: int | None = None,
188
+ verbose: bool = False,
189
+ **compile_kwargs,
190
+ ):
191
+ """Compile a spec and immediately load it for local inference.
192
+
193
+ Convenience wrapper that combines ``paw.compile()`` and ``paw.function()``
194
+ into a single call.
195
+
196
+ Args:
197
+ spec: Natural language specification.
198
+ compiler: Compiler model name.
199
+ n_ctx: Context window size for llama.cpp.
200
+ n_gpu_layers: GPU layers (-1 = all, 0 = CPU only).
201
+ verbose: Print llama.cpp debug output.
202
+ **compile_kwargs: Additional args passed to compile (slug, public, etc.)
203
+
204
+ Returns:
205
+ A callable ``PawFunction``.
206
+
207
+ Example:
208
+ >>> fn = paw.compile_and_load("Classify sentiment as positive or negative")
209
+ >>> fn("I love this!")
210
+ 'positive'
211
+ """
212
+ program = compile(spec, compiler=compiler, **compile_kwargs)
213
+ return function(program, n_ctx=n_ctx, n_gpu_layers=n_gpu_layers, verbose=verbose)
214
+
215
+
216
+ def list_programs(sort: str = "recent", per_page: int = 20, page: int = 1) -> dict:
217
+ """List your compiled programs. Requires authentication (PAW_API_KEY).
218
+
219
+ Returns:
220
+ Dict with ``programs`` (list), ``total``, ``page``, ``per_page``.
221
+
222
+ Example:
223
+ >>> programs = paw.list_programs()
224
+ >>> for p in programs["programs"]:
225
+ ... print(p["id"], p["name"])
226
+ """
227
+ from .client import PAWClient
228
+ client = PAWClient(api_url=api_url, api_key=api_key)
229
+ return client.list_programs(sort=sort, per_page=per_page, page=page)
230
+
231
+
178
232
  __all__ = [
179
233
  "compile",
234
+ "compile_and_load",
180
235
  "function",
236
+ "list_programs",
181
237
  "login",
182
238
  "api_url",
183
239
  "api_key",
@@ -27,7 +27,8 @@ def cmd_compile(args):
27
27
  if not args.json:
28
28
  print(f"Compiling: {args.spec[:80]}...")
29
29
 
30
- program = paw.compile(args.spec, compiler=args.compiler, slug=getattr(args, 'slug', None))
30
+ public = not getattr(args, 'private', False)
31
+ program = paw.compile(args.spec, compiler=args.compiler, slug=getattr(args, 'slug', None), public=public)
31
32
 
32
33
  if args.json:
33
34
  print(json.dumps({
@@ -170,6 +171,7 @@ def main():
170
171
  p.add_argument("--spec", required=True, help="Natural language specification")
171
172
  p.add_argument("--compiler", default="paw-4b-qwen3-0.6b", help="Compiler model")
172
173
  p.add_argument("--slug", default=None, help="URL-safe handle (e.g. 'message-classifier')")
174
+ p.add_argument("--private", action="store_true", help="Make program private (not listed on hub)")
173
175
  p.add_argument("--json", action="store_true", help="JSON output")
174
176
 
175
177
  p = sub.add_parser("run", help="Run a program locally via llama.cpp")
@@ -108,18 +108,25 @@ class PAWClient:
108
108
  """Download a .paw bundle to the local cache.
109
109
 
110
110
  Returns the path to the extracted program directory.
111
+ Retries on 404 since freshly compiled programs may still be uploading.
111
112
  """
112
113
  program_dir = config.get_programs_dir() / program_id
113
114
  if (program_dir / "prompt_template.txt").exists():
114
115
  return program_dir
115
116
 
116
- resp = httpx.get(
117
- f"{self._api_url}/api/v1/programs/{program_id}/download",
118
- headers=self._headers(),
119
- timeout=60.0,
120
- follow_redirects=True,
121
- )
122
- resp.raise_for_status()
117
+ max_retries = 10
118
+ for attempt in range(max_retries):
119
+ resp = httpx.get(
120
+ f"{self._api_url}/api/v1/programs/{program_id}/download",
121
+ headers=self._headers(),
122
+ timeout=60.0,
123
+ follow_redirects=True,
124
+ )
125
+ if resp.status_code == 404 and attempt < max_retries - 1:
126
+ time.sleep(3)
127
+ continue
128
+ resp.raise_for_status()
129
+ break
123
130
 
124
131
  program_dir.mkdir(parents=True, exist_ok=True)
125
132
  paw_path = program_dir / f"{program_id}.paw"
@@ -140,6 +147,17 @@ class PAWClient:
140
147
  resp.raise_for_status()
141
148
  return resp.json()
142
149
 
150
+ def list_programs(self, sort: str = "recent", per_page: int = 20, page: int = 1) -> dict:
151
+ """List programs for the authenticated user."""
152
+ resp = httpx.get(
153
+ f"{self._api_url}/api/v1/programs",
154
+ params={"mine": "true", "sort": sort, "per_page": per_page, "page": page},
155
+ headers=self._headers(),
156
+ timeout=10.0,
157
+ )
158
+ resp.raise_for_status()
159
+ return resp.json()
160
+
143
161
 
144
162
  _default_client: PAWClient | None = None
145
163
 
@@ -53,12 +53,25 @@ class PawFunction:
53
53
  interpreter = self._meta.get("interpreter", "Qwen/Qwen3-0.6B")
54
54
  base_model_path = cache.get_base_model_path(interpreter)
55
55
 
56
- self._llm = Llama(
57
- model_path=str(base_model_path),
58
- n_ctx=n_ctx,
59
- n_gpu_layers=n_gpu_layers,
60
- verbose=verbose,
61
- )
56
+ if not verbose:
57
+ import os as _os, sys as _sys
58
+ _stderr_fd = _sys.stderr.fileno()
59
+ _devnull = _os.open(_os.devnull, _os.O_WRONLY)
60
+ _old_stderr = _os.dup(_stderr_fd)
61
+ _os.dup2(_devnull, _stderr_fd)
62
+
63
+ try:
64
+ self._llm = Llama(
65
+ model_path=str(base_model_path),
66
+ n_ctx=n_ctx,
67
+ n_gpu_layers=n_gpu_layers,
68
+ verbose=verbose,
69
+ )
70
+ finally:
71
+ if not verbose:
72
+ _os.dup2(_old_stderr, _stderr_fd)
73
+ _os.close(_devnull)
74
+ _os.close(_old_stderr)
62
75
 
63
76
  adapter_path = program_dir / "adapter.gguf"
64
77
  if adapter_path.exists():
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "programasweights"
7
- version = "0.2.0"
7
+ version = "0.2.2.dev1"
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"