programasweights 0.1.0.dev7__tar.gz → 0.1.0.dev9__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 (505) hide show
  1. programasweights-0.1.0.dev9/.cursor/rules/vllm-deployment.mdc +106 -0
  2. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/AGENTS.md +25 -10
  3. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/PKG-INFO +5 -4
  4. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/PYPI_README.md +3 -2
  5. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/api-reference/rest-api.md +11 -7
  6. programasweights-0.1.0.dev9/docs/getting-started/naming-programs.md +78 -0
  7. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/guide/browser-inference.md +3 -3
  8. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/guide/how-it-works.md +1 -1
  9. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/index.md +1 -1
  10. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/__init__.py +21 -11
  11. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/cache.py +35 -0
  12. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/cli.py +45 -3
  13. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/client.py +10 -3
  14. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/pyproject.toml +2 -2
  15. programasweights-0.1.0.dev9/server/alembic/versions/003_fulltext_search_ranking.py +41 -0
  16. programasweights-0.1.0.dev9/server/alembic/versions/004_fix_alias_slug_constraint.py +49 -0
  17. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/config.py +7 -5
  18. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/main.py +3 -2
  19. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/models/orm.py +25 -3
  20. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/models/schemas.py +14 -5
  21. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/routes/auth.py +2 -5
  22. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/routes/compile.py +33 -2
  23. programasweights-0.1.0.dev9/server/api/routes/feedback.py +45 -0
  24. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/routes/infer.py +25 -7
  25. programasweights-0.1.0.dev9/server/api/routes/programs.py +708 -0
  26. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/services/auto_tag_service.py +1 -1
  27. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/services/auto_title_service.py +1 -1
  28. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/services/compile_provider.py +119 -20
  29. programasweights-0.1.0.dev9/server/api/services/search_service.py +152 -0
  30. programasweights-0.1.0.dev9/server/api/services/storage_service.py +239 -0
  31. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/benchmarks/last_benchmark_results.json +123 -123
  32. programasweights-0.1.0.dev9/server/benchmarks/last_stress_results.json +250 -0
  33. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/benchmarks/stress_test.py +13 -14
  34. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/compiler_registry.json +5 -5
  35. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/provider_configs/gpt2.json +4 -3
  36. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/provider_configs/qwen3-0.6b.json +1 -0
  37. programasweights-0.1.0.dev9/server/scripts/ablation_search.py +221 -0
  38. programasweights-0.1.0.dev9/server/scripts/backfill_hf_safetensors.py +95 -0
  39. programasweights-0.1.0.dev9/server/scripts/backfill_interestingness.py +111 -0
  40. programasweights-0.1.0.dev9/server/scripts/eval_search.py +211 -0
  41. programasweights-0.1.0.dev9/server/scripts/evict_cold_programs.py +40 -0
  42. programasweights-0.1.0.dev9/server/scripts/launch_gpt2_compiler.py +32 -0
  43. programasweights-0.1.0.dev9/server/scripts/launch_qwen3_compiler.py +32 -0
  44. programasweights-0.1.0.dev9/server/scripts/restart.sh +23 -0
  45. programasweights-0.1.0.dev9/server/scripts/start_all.sh +193 -0
  46. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/start_provider.sh +1 -1
  47. programasweights-0.1.0.dev9/tests/test_offline_cache.py +97 -0
  48. programasweights-0.1.0.dev9/training/data_generation/build_user_bench.py +487 -0
  49. programasweights-0.1.0.dev9/web-app/frontend/e2e/full.spec.ts +798 -0
  50. programasweights-0.1.0.dev9/web-app/frontend/e2e/helpers.ts +14 -0
  51. programasweights-0.1.0.dev9/web-app/frontend/e2e/smoke.spec.ts +117 -0
  52. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/package-lock.json +64 -0
  53. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/package.json +5 -1
  54. programasweights-0.1.0.dev9/web-app/frontend/playwright.config.ts +17 -0
  55. programasweights-0.1.0.dev9/web-app/frontend/scripts/deploy.sh +43 -0
  56. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/App.tsx +5 -0
  57. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/AboutPage.tsx +42 -11
  58. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/AgentsPage.tsx +5 -5
  59. programasweights-0.1.0.dev9/web-app/frontend/src/components/AuthorPage.tsx +123 -0
  60. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/BrowserPage.tsx +230 -94
  61. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/CasesSection.tsx +10 -2
  62. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/DocsPage.tsx +4 -4
  63. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/Footer.tsx +2 -1
  64. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/Header.tsx +9 -0
  65. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/HubPage.tsx +96 -50
  66. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/HubProgramPage.tsx +145 -50
  67. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/LandingPage.tsx +15 -16
  68. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/MainInterface.tsx +11 -24
  69. programasweights-0.1.0.dev9/web-app/frontend/src/components/NavigationHelper.tsx +334 -0
  70. programasweights-0.1.0.dev9/web-app/frontend/src/components/ProfilePage.tsx +274 -0
  71. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/types/index.ts +5 -0
  72. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/utils/api.ts +25 -1
  73. programasweights-0.1.0.dev9/web-app/frontend/test-results/.last-run.json +4 -0
  74. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/src/index.ts +4 -3
  75. programasweights-0.1.0.dev7/.cursor/rules/vllm-deployment.mdc +0 -108
  76. programasweights-0.1.0.dev7/docs/Makefile +0 -20
  77. programasweights-0.1.0.dev7/docs/api-reference.rst +0 -180
  78. programasweights-0.1.0.dev7/docs/conf.py +0 -27
  79. programasweights-0.1.0.dev7/docs/examples/evaluation-tasks.rst +0 -206
  80. programasweights-0.1.0.dev7/docs/getting-started/naming-programs.md +0 -52
  81. programasweights-0.1.0.dev7/docs/index.rst +0 -73
  82. programasweights-0.1.0.dev7/docs/installation.rst +0 -65
  83. programasweights-0.1.0.dev7/docs/make.bat +0 -35
  84. programasweights-0.1.0.dev7/docs/quickstart.rst +0 -120
  85. programasweights-0.1.0.dev7/docs/using-pretrained.rst +0 -223
  86. programasweights-0.1.0.dev7/server/api/routes/programs.py +0 -413
  87. programasweights-0.1.0.dev7/server/api/services/storage_service.py +0 -146
  88. programasweights-0.1.0.dev7/server/benchmarks/last_stress_results.json +0 -92
  89. programasweights-0.1.0.dev7/web-app/frontend/src/components/PricingPage.tsx +0 -192
  90. programasweights-0.1.0.dev7/web-app/frontend/src/components/ProfilePage.tsx +0 -102
  91. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/.git +0 -0
  92. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/.github/workflows/web-sdk.yml +0 -0
  93. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/.gitignore +0 -0
  94. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/.gitmodules +0 -0
  95. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/.hatch_build.toml +0 -0
  96. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/.readthedocs.yaml +0 -0
  97. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/1apple.jpg +0 -0
  98. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/1apple2.jpg +0 -0
  99. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/2apples.jpg +0 -0
  100. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/2apples2.jpg +0 -0
  101. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/3apples.jpg +0 -0
  102. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/3apples2.jpg +0 -0
  103. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/479400.png +0 -0
  104. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/4apples.jpg +0 -0
  105. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/4apples2.jpg +0 -0
  106. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/4apples3.jpg +0 -0
  107. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/4apples4.jpg +0 -0
  108. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/5apples.jpg +0 -0
  109. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/6apples.jpg +0 -0
  110. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/8apples.jpg +0 -0
  111. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/9apples.jpg +0 -0
  112. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/FLOW_SUMMARY.md +0 -0
  113. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/MANIFEST.in +0 -0
  114. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/ONNX_MIGRATION_PLAN.md +0 -0
  115. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/PREFIX_TOKENS_DESIGN.md +0 -0
  116. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/README.md +0 -0
  117. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/TRUNCATION_CHANGES.md +0 -0
  118. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/USE_CASES_AND_IDEAS.md +0 -0
  119. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/VERIFICATION_USAGE.md +0 -0
  120. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/analyze_dataset.py +0 -0
  121. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/analyze_lengths.py +0 -0
  122. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/code_prompt.md +0 -0
  123. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/evaluate_openai_python_code_baseline.py +0 -0
  124. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/openai_batch_request.py +0 -0
  125. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/prepare_alchemist_data.py +0 -0
  126. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/prepare_var_bench_data.py +0 -0
  127. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/python_code_sandbox.py +0 -0
  128. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/script_evaluation_var_bench.sh +0 -0
  129. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/script_evalution_evaluation.sh +0 -0
  130. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/script_evalution_request.sh +0 -0
  131. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/baselines/script_evalution_statistics.sh +0 -0
  132. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/benchmark_pytorch_vs_onnx.py +0 -0
  133. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/benchmark_user_experience.py +0 -0
  134. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/check_dataset.py +0 -0
  135. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/combine_datasets.py +0 -0
  136. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/compare_datasets.py +0 -0
  137. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/compare_old_vs_regen.py +0 -0
  138. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/convert_paw_to_svg.py +0 -0
  139. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/create_favicon_sizes.py +0 -0
  140. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/create_visualization_from_log.py +0 -0
  141. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/create_vqa_dataset.py +0 -0
  142. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/debug_cache.py +0 -0
  143. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/debug_eos_example.sh +0 -0
  144. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
  145. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/adr/002-q4_0-adapter-format.md +0 -0
  146. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/adr/003-single-spec-field.md +0 -0
  147. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/adr/004-compiler-naming.md +0 -0
  148. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/adr/005-vllm-hidden-states.md +0 -0
  149. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/adr/006-email-api-key-auth.md +0 -0
  150. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/advanced/adrs.md +0 -0
  151. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/advanced/architecture.md +0 -0
  152. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/api-reference/cli.md +0 -0
  153. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/api-reference/python-sdk.md +0 -0
  154. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/architecture.md +0 -0
  155. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/getting-started/first-program.md +0 -0
  156. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/getting-started/installation.md +0 -0
  157. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/guide/local-inference.md +0 -0
  158. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/guide/writing-good-specs.md +0 -0
  159. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/hub/browsing-programs.md +0 -0
  160. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/hub/feedback-cases.md +0 -0
  161. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/hub/publishing-programs.md +0 -0
  162. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/docs/requirements.txt +0 -0
  163. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/estimate_data_gen_cost.py +0 -0
  164. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/eval.py +0 -0
  165. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/examples/flask_app.py +0 -0
  166. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/examples/jupyter_notebook.py +0 -0
  167. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/examples/langchain_integration.py +0 -0
  168. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/examples/replace_openai.py +0 -0
  169. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/export_to_onnx.py +0 -0
  170. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/extract_models.py +0 -0
  171. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/inspect_data_dirs.py +0 -0
  172. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/latest_export.csv +0 -0
  173. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/log.train.81920.morecategories.extraprefix +0 -0
  174. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
  175. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/merge_datasets.py +0 -0
  176. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/mkdocs.yml +0 -0
  177. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/paw.png +0 -0
  178. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/paw.svg +0 -0
  179. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/process_im2latex_dataset.py +0 -0
  180. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/artifacts.py +0 -0
  181. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/compiler/__init__.py +0 -0
  182. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/compiler/dummy.py +0 -0
  183. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/config.py +0 -0
  184. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/convert_peft_to_paw.py +0 -0
  185. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/paw_format.py +0 -0
  186. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/runtime/__init__.py +0 -0
  187. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/runtime/interpreter.py +0 -0
  188. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/runtime/interpreter_onnx.py +0 -0
  189. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights/runtime_llamacpp.py +0 -0
  190. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/__init__.py +0 -0
  191. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/compiler/__init__.py +0 -0
  192. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/lora_format.py +0 -0
  193. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/runtime/__init__.py +0 -0
  194. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/runtime/interpreter_lora.py +0 -0
  195. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/tests/test_compile_and_run.py +0 -0
  196. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/tests/test_lora_format.py +0 -0
  197. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/tests/test_training.py +0 -0
  198. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/train_lora.py +0 -0
  199. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/training/__init__.py +0 -0
  200. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
  201. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/run_eval.sh +0 -0
  202. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/run_training.sh +0 -0
  203. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/scripts/filter_table_by_length.py +0 -0
  204. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/.env.example +0 -0
  205. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/alembic/env.py +0 -0
  206. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/alembic/script.py.mako +0 -0
  207. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/alembic/versions/001_initial_schema.py +0 -0
  208. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
  209. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/alembic.ini +0 -0
  210. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/__init__.py +0 -0
  211. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/dependencies.py +0 -0
  212. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/logging_config.py +0 -0
  213. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/middleware/__init__.py +0 -0
  214. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/middleware/rate_limit.py +0 -0
  215. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/models/__init__.py +0 -0
  216. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/models/database.py +0 -0
  217. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/routes/__init__.py +0 -0
  218. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/routes/health.py +0 -0
  219. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/routes/models_info.py +0 -0
  220. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/services/__init__.py +0 -0
  221. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/services/compile_service.py +0 -0
  222. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/api/services/infer_service.py +0 -0
  223. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/benchmarks/benchmark_api.py +0 -0
  224. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/benchmarks/handcrafted_specs.json +0 -0
  225. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/requirements.txt +0 -0
  226. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
  227. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/backfill_hf_browser_assets.py +0 -0
  228. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/backfill_tags.py +0 -0
  229. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/backfill_titles.py +0 -0
  230. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/benchmark_gpt2.py +0 -0
  231. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/cleanup_storage.py +0 -0
  232. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/generate_prefix_cache.py +0 -0
  233. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/patch_vllm.sh +0 -0
  234. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/start_gpt2_services.sh +0 -0
  235. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/scripts/start_services.sh +0 -0
  236. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/__init__.py +0 -0
  237. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/conftest.py +0 -0
  238. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/test_auth.py +0 -0
  239. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/test_compile.py +0 -0
  240. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/test_errors.py +0 -0
  241. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/test_infer.py +0 -0
  242. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/test_integration_gpu.py +0 -0
  243. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/test_rate_limit.py +0 -0
  244. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/tests/test_storage.py +0 -0
  245. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/vllm_models/__init__.py +0 -0
  246. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/vllm_models/gpt2_lora_patch.py +0 -0
  247. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/vllm_models/paw_compiler.py +0 -0
  248. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/vllm_models/prepare_checkpoint.py +0 -0
  249. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/server/vllm_models/register.py +0 -0
  250. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
  251. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.em_es.png +0 -0
  252. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
  253. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
  254. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_1spec.py +0 -0
  255. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_all_caching.py +0 -0
  256. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_apple_count.py +0 -0
  257. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_batch_pilot.py +0 -0
  258. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_compile.py +0 -0
  259. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_e2e.py +0 -0
  260. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_execute.py +0 -0
  261. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_nspecs.py +0 -0
  262. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_one_vs_two_step.py +0 -0
  263. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_onnx_correctness.py +0 -0
  264. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_onnx_hf_model.py +0 -0
  265. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_onnx_hf_with_images.py +0 -0
  266. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_paw_format.py +0 -0
  267. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/test_thinking_comparison.py +0 -0
  268. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/tests/test_programasweights.py +0 -0
  269. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/train.py +0 -0
  270. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
  271. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/README.md +0 -0
  272. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/__init__.py +0 -0
  273. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/DATASET_CHANGELOG.md +0 -0
  274. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/README.md +0 -0
  275. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
  276. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/dry_run_batch.py +0 -0
  277. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/filter_test_data.py +0 -0
  278. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/generate_specs.py +0 -0
  279. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/generate_specs_batch.py +0 -0
  280. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/incremental_merge.py +0 -0
  281. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/merge_and_upload.py +0 -0
  282. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/regenerate_outputs_batch.py +0 -0
  283. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/synthesize_data.py +0 -0
  284. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/synthesize_data_batch.py +0 -0
  285. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/filter_system.txt +0 -0
  286. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/filter_user.txt +0 -0
  287. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/pairs_system.txt +0 -0
  288. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/pairs_user.txt +0 -0
  289. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_system.txt +0 -0
  290. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user.txt +0 -0
  291. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user_freeform.txt +0 -0
  292. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
  293. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
  294. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/verify_system.txt +0 -0
  295. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates/verify_user.txt +0 -0
  296. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/filter_system.txt +0 -0
  297. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/filter_user.txt +0 -0
  298. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/pairs_system.txt +0 -0
  299. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/pairs_user.txt +0 -0
  300. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_system.txt +0 -0
  301. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user.txt +0 -0
  302. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
  303. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
  304. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
  305. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/verify_system.txt +0 -0
  306. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/verify_user.txt +0 -0
  307. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/data_generation/verify_test_data.py +0 -0
  308. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/datasets/__init__.py +0 -0
  309. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/datasets/jsonl_text_pairs.py +0 -0
  310. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/loops/__init__.py +0 -0
  311. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/training/loops/prefix_tuning_sft.py +0 -0
  312. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/ttt.py +0 -0
  313. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/upload_model.py +0 -0
  314. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/upload_onnx_to_huggingface.py +0 -0
  315. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/upload_onnx_to_huggingface_with_token.py +0 -0
  316. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/utils.py +0 -0
  317. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/HANDOFF.md +0 -0
  318. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/README.md +0 -0
  319. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/__init__.py +0 -0
  320. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/config.py +0 -0
  321. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/main.py +0 -0
  322. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/middleware/__init__.py +0 -0
  323. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/middleware/rate_limit.py +0 -0
  324. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/models.py +0 -0
  325. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/__init__.py +0 -0
  326. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/auth_service.py +0 -0
  327. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/case_service.py +0 -0
  328. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/compiler_service.py +0 -0
  329. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/gpt_service.py +0 -0
  330. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/hub_service.py +0 -0
  331. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/image_service.py +0 -0
  332. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/interpreter_service.py +0 -0
  333. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/services/sql_manager.py +0 -0
  334. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/templates/gpt_test_generation.txt +0 -0
  335. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/utils/__init__.py +0 -0
  336. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/utils/image_placeholders.py +0 -0
  337. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/app/utils/program_hash.py +0 -0
  338. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/clear_db.sh +0 -0
  339. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/clear_tables.sql +0 -0
  340. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/data/programs.db +0 -0
  341. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/env_example.txt +0 -0
  342. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/example_images/README.md +0 -0
  343. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/get_data_examples.py +0 -0
  344. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/requirements.txt +0 -0
  345. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/run_server.py +0 -0
  346. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_analytics_tables.sql +0 -0
  347. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_auth_tables.sql +0 -0
  348. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_cache_tables.sql +0 -0
  349. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_cases_tables.sql +0 -0
  350. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_database.sql +0 -0
  351. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_database_simple.sql +0 -0
  352. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_db.sh +0 -0
  353. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_example_images.py +0 -0
  354. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/setup_hub_tables.sql +0 -0
  355. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/backend/test_compilation_cache.py +0 -0
  356. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/README.md +0 -0
  357. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/eslint.config.js +0 -0
  358. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/index.html +0 -0
  359. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/postcss.config.js +0 -0
  360. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/apple-touch-icon.png +0 -0
  361. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/browser-worker.html +0 -0
  362. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/favicon-16x16.png +0 -0
  363. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/favicon-32x32.png +0 -0
  364. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/paw-192.png +0 -0
  365. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/paw-512.png +0 -0
  366. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/paw.svg +0 -0
  367. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/react-test.html +0 -0
  368. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/test.html +0 -0
  369. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/public/vite.svg +0 -0
  370. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/App.css +0 -0
  371. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/assets/react.svg +0 -0
  372. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -0
  373. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/CompileSection.tsx +0 -0
  374. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/ExamplesInput.tsx +0 -0
  375. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/HubUploadPage.tsx +0 -0
  376. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/ModelSelector.tsx +0 -0
  377. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
  378. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/SettingsPage.tsx +0 -0
  379. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
  380. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/TermsPage.tsx +0 -0
  381. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/TestSection.tsx +0 -0
  382. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/index.css +0 -0
  383. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/src/main.tsx +0 -0
  384. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/tailwind.config.js +0 -0
  385. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/tsconfig.app.json +0 -0
  386. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/tsconfig.json +0 -0
  387. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/tsconfig.node.json +0 -0
  388. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/frontend/vite.config.ts +0 -0
  389. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/nginx-paw.conf +0 -0
  390. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/nginx.conf +0 -0
  391. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/setup_mysql.sh +0 -0
  392. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/start.sh +0 -0
  393. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/test_setup.py +0 -0
  394. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-app/ttt.py +0 -0
  395. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/.gitignore +0 -0
  396. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/README.md +0 -0
  397. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/__tests__/loader.test.ts +0 -0
  398. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/__tests__/prompt.test.ts +0 -0
  399. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/examples/basic.html +0 -0
  400. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/package-lock.json +0 -0
  401. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/package.json +0 -0
  402. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/serve.py +0 -0
  403. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/src/loader.ts +0 -0
  404. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/src/runtime.ts +0 -0
  405. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/src/types.ts +0 -0
  406. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/test-standalone.html +0 -0
  407. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/tsconfig.json +0 -0
  408. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/vitest.config.ts +0 -0
  409. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.git +0 -0
  410. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
  411. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
  412. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
  413. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
  414. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.gitignore +0 -0
  415. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.gitmodules +0 -0
  416. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.npmignore +0 -0
  417. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/.prettierignore +0 -0
  418. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/CMakeLists.txt +0 -0
  419. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/LICENCE +0 -0
  420. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/README.md +0 -0
  421. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/README_banner.png +0 -0
  422. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/assets/screenshot_0.png +0 -0
  423. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/actions.hpp +0 -0
  424. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
  425. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/glue.hpp +0 -0
  426. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
  427. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
  428. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
  429. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
  430. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
  431. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
  432. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
  433. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/wllama.cpp +0 -0
  434. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/basic/index.html +0 -0
  435. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/embeddings/index.html +0 -0
  436. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
  437. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/.gitignore +0 -0
  438. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/README.md +0 -0
  439. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/index.html +0 -0
  440. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/package-lock.json +0 -0
  441. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/package.json +0 -0
  442. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
  443. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
  444. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
  445. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
  446. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
  447. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
  448. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
  449. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
  450. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
  451. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
  452. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
  453. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
  454. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/config.ts +0 -0
  455. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/index.css +0 -0
  456. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
  457. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
  458. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
  459. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
  460. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
  461. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
  462. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
  463. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
  464. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
  465. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
  466. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
  467. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
  468. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
  469. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
  470. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
  471. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
  472. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/guides/intro-v2.md +0 -0
  473. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/index.ts +0 -0
  474. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/package-lock.json +0 -0
  475. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/package.json +0 -0
  476. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
  477. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
  478. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/build_worker.sh +0 -0
  479. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
  480. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
  481. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/http_server.js +0 -0
  482. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/post_build.sh +0 -0
  483. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/cache-manager.ts +0 -0
  484. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/glue/glue.ts +0 -0
  485. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/glue/messages.ts +0 -0
  486. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/index.ts +0 -0
  487. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/mjs.test.ts +0 -0
  488. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/model-manager.test.ts +0 -0
  489. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/model-manager.ts +0 -0
  490. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
  491. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
  492. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
  493. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
  494. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/utils.test.ts +0 -0
  495. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/utils.ts +0 -0
  496. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
  497. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/wllama.test.ts +0 -0
  498. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/wllama.ts +0 -0
  499. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/worker.ts +0 -0
  500. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
  501. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
  502. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
  503. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/tsconfig.build.json +0 -0
  504. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/tsup.config.ts +0 -0
  505. {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev9}/web-sdk/wllama/vitest.config.ts +0 -0
@@ -0,0 +1,106 @@
1
+ ---
2
+ description: vLLM deployment rules and known issues for PAW servers
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # vLLM Deployment Rules
7
+
8
+ ## Server: 31.22.104.226 (4x RTX PRO 6000 Blackwell, 98 GB each)
9
+
10
+ ### Code Location
11
+
12
+ All server code lives at `/root/paw-website/` (git clone of `programasweights/website`).
13
+
14
+ **Deployment (the ONLY way to update code):**
15
+ ```bash
16
+ # Local: push changes
17
+ git push origin main
18
+
19
+ # Server: pull and restart
20
+ cd /root/paw-website && git pull
21
+ cd server && bash scripts/start_all.sh
22
+ ```
23
+
24
+ **NEVER use rsync or scp for code.** Model weights use scp between servers.
25
+
26
+ ### GPU Layout
27
+
28
+ | GPU | Service | Port | VRAM |
29
+ |-----|---------|------|------|
30
+ | 0 | Pseudo-gen (Qwen3-4B) | 8001 | 90% |
31
+ | 1 | Qwen3 compiler pooling (4B) | 8002 | 85% |
32
+ | 2 | GPT-2 compiler pooling (4B) | 8012 | 85% |
33
+ | 3 | Qwen3 inference (0.6B) + GPT-2 inference (124M) | 8003 + 8013 | 50% + 40% |
34
+
35
+ GPU 3 services must start sequentially: GPT-2 first (smaller, faster), then Qwen3 after GPT-2 claims its VRAM.
36
+
37
+ ### Services
38
+
39
+ | Service | Port | Working Dir |
40
+ |---------|------|-------------|
41
+ | vLLM pseudo-gen | 8001 | - |
42
+ | vLLM Qwen3 compiler | 8002 | /root/paw-website/server |
43
+ | vLLM GPT-2 compiler | 8012 | /root/paw-website/server |
44
+ | vLLM Qwen3 inference | 8003 | - |
45
+ | vLLM GPT-2 inference | 8013 | - |
46
+ | Qwen3 CompileProvider | 9000 | /root/paw-website/server |
47
+ | GPT-2 CompileProvider | 9001 | /root/paw-website/server |
48
+ | API gateway | 8000 | /root/paw-website/server |
49
+
50
+ ### Startup
51
+
52
+ ```bash
53
+ cd /root/paw-website/server
54
+ bash scripts/start_all.sh # starts everything, waits for models to load
55
+ ```
56
+
57
+ Or for full redeploy (git pull + patch + start):
58
+ ```bash
59
+ cd /root/paw-website
60
+ bash server/scripts/restart.sh
61
+ ```
62
+
63
+ ### Key Files
64
+
65
+ - `.env`: `/root/paw-website/server/.env` (secrets, NOT in git)
66
+ - Provider configs: `server/provider_configs/qwen3-0.6b.json`, `server/provider_configs/gpt2.json`
67
+ - Compiler registry: `server/compiler_registry.json`
68
+ - vLLM launchers: `server/scripts/launch_qwen3_compiler.py`, `server/scripts/launch_gpt2_compiler.py`
69
+ - Patch script: `server/scripts/patch_vllm.sh` (run after every pip install vllm)
70
+
71
+ ## Critical Environment Variables
72
+
73
+ ### VLLM_ALLOW_RUNTIME_LORA_UPDATING=1
74
+ MUST be set for inference servers with --enable-lora.
75
+
76
+ ### VLLM_TORCH_COMPILE_LEVEL=0
77
+ Set on servers without full CUDA dev toolchain.
78
+
79
+ ## vLLM Compiler Pooling (PawCompilerForPooling)
80
+
81
+ - Must use `--enforce-eager` flag
82
+ - Must use `--runner pooling` flag
83
+ - Must run `scripts/patch_vllm.sh` after every vLLM install
84
+ - Endpoint: `POST /v1/embeddings`
85
+ - Launcher scripts use `if __name__ == '__main__'` guard for multiprocessing
86
+
87
+ ## Post-Install Patch
88
+
89
+ ```bash
90
+ cd /root/paw-website/server && bash scripts/patch_vllm.sh /root/paw-venv
91
+ ```
92
+
93
+ ## GPT-2 Specifics
94
+
95
+ - Interpreter uses NO chat template (use_chat_template: false)
96
+ - Compiler port: 8012 (NOT 8002 which is Qwen3)
97
+ - Inference port: 8013 (NOT 8003 which is Qwen3)
98
+
99
+ ## Testing
100
+
101
+ Full benchmark: 12 specs, 36 examples, expected 30/36 (83.3%) for Qwen3
102
+ ```bash
103
+ cd /root/paw-website/server
104
+ python benchmarks/benchmark_api.py --server https://programasweights.com
105
+ python benchmarks/stress_test.py --server https://programasweights.com --scenario all
106
+ ```
@@ -24,15 +24,16 @@ 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
27
+ compiler="paw-4b-qwen3-0.6b", # or "paw-4b-gpt2" for smaller/faster
28
+ slug="json-fixer" # optional: creates da03/json-fixer handle
28
29
  )
29
- fn = paw.function(program.id)
30
+ fn = paw.function(program.slug) # or paw.function(program.id)
30
31
  fn("{name: 'Alice',}") # '{"name": "Alice"}'
31
32
  ```
32
33
 
33
34
  ## Two Compilers
34
35
 
35
- | | Qwen3 0.6B | GPT-2 124M |
36
+ | | Standard (Qwen3 0.6B) | Compact (GPT-2 124M) |
36
37
  |---|---|---|
37
38
  | Compiler name | `paw-4b-qwen3-0.6b` | `paw-4b-gpt2` |
38
39
  | Accuracy | Higher | Lower |
@@ -41,7 +42,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
41
42
  | Inference speed | ~90ms (server) | ~50ms (server) |
42
43
  | Runs in browser | No | Yes |
43
44
 
44
- Default is Qwen3 0.6B. Use GPT-2 when you need smaller files or browser deployment.
45
+ Default is Standard (Qwen3 0.6B). Use Compact (GPT-2) when you need smaller files or browser deployment.
45
46
 
46
47
  ## Browser / JavaScript SDK
47
48
 
@@ -68,6 +69,7 @@ Use this when you want to offload all computation to the user's browser: zero se
68
69
  - **Classification** — sentiment, urgency, categories defined in your own words
69
70
  - **Extraction** — emails, names, dates from messy unstructured text
70
71
  - **Log triage** — extract errors from verbose output, filter noise
72
+ - **Intent routing** — map user descriptions to the closest URL, menu item, or setting
71
73
  - **Agent preprocessing** — parse tool calls, validate outputs, route tasks
72
74
 
73
75
  ## Authentication
@@ -84,12 +86,25 @@ Generate API keys at https://programasweights.com/settings
84
86
 
85
87
  The SDK automatically reads `PAW_API_KEY` from the environment. Authenticated users get higher rate limits (60 compiles/hr vs 5 for anonymous).
86
88
 
89
+ ## Program Naming
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:
94
+
95
+ ```python
96
+ fn = paw.function("da03/json-fixer") # by slug
97
+ fn = paw.function("a6b454023d41ac9ca845") # by hash
98
+ ```
99
+
87
100
  ## CLI
88
101
 
89
102
  ```bash
90
- paw compile --spec "Classify sentiment as positive or negative" --json
91
- paw run --program <program_id> --input "I love this!" --json
92
- paw login # Save API key for higher rate limits
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
107
+ paw login # save API key
93
108
  ```
94
109
 
95
110
  `--json` gives structured output for programmatic use.
@@ -97,9 +112,9 @@ paw login # Save API key for higher rate limits
97
112
  ## API
98
113
 
99
114
  ```python
100
- paw.compile(spec, compiler="paw-4b-qwen3-0.6b") # Compile a spec
101
- paw.function(name_or_id) # Load a compiled program
102
- paw.login() # Save API key
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
103
118
  ```
104
119
 
105
120
  ## Browse Programs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: programasweights
3
- Version: 0.1.0.dev7
3
+ Version: 0.1.0.dev9
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
@@ -60,7 +60,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
60
60
 
61
61
  ## Two Compilers
62
62
 
63
- | | Qwen3 0.6B | GPT-2 124M |
63
+ | | Standard (Qwen3 0.6B) | Compact (GPT-2 124M) |
64
64
  |--------------------|-------------------------|------------------------|
65
65
  | Compiler name | `paw-4b-qwen3-0.6b` | `paw-4b-gpt2` |
66
66
  | Accuracy | Higher | Lower |
@@ -69,7 +69,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
69
69
  | Inference speed | ~90ms (server) | ~50ms (server) |
70
70
  | Runs in browser | No | Yes |
71
71
 
72
- Default is Qwen3 0.6B. Use GPT-2 when you need smaller files or browser deployment.
72
+ Default is Standard (Qwen3 0.6B). Use Compact (GPT-2) when you need smaller files or browser deployment.
73
73
 
74
74
  ## Browser SDK
75
75
 
@@ -104,6 +104,7 @@ Or save [`AGENTS.md`](https://programasweights.com/agents) to your project root
104
104
  - **Classification** — sentiment, urgency, categories defined in your own words
105
105
  - **Extraction** — emails, names, dates from messy unstructured text
106
106
  - **Log triage** — extract errors from verbose output, filter noise
107
+ - **Intent routing** — map user descriptions to the closest URL, menu item, or setting
107
108
  - **Agent preprocessing** — parse tool calls, validate outputs, route tasks
108
109
 
109
110
  ## Authentication
@@ -31,7 +31,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
31
31
 
32
32
  ## Two Compilers
33
33
 
34
- | | Qwen3 0.6B | GPT-2 124M |
34
+ | | Standard (Qwen3 0.6B) | Compact (GPT-2 124M) |
35
35
  |--------------------|-------------------------|------------------------|
36
36
  | Compiler name | `paw-4b-qwen3-0.6b` | `paw-4b-gpt2` |
37
37
  | Accuracy | Higher | Lower |
@@ -40,7 +40,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
40
40
  | Inference speed | ~90ms (server) | ~50ms (server) |
41
41
  | Runs in browser | No | Yes |
42
42
 
43
- Default is Qwen3 0.6B. Use GPT-2 when you need smaller files or browser deployment.
43
+ Default is Standard (Qwen3 0.6B). Use Compact (GPT-2) when you need smaller files or browser deployment.
44
44
 
45
45
  ## Browser SDK
46
46
 
@@ -75,6 +75,7 @@ Or save [`AGENTS.md`](https://programasweights.com/agents) to your project root
75
75
  - **Classification** — sentiment, urgency, categories defined in your own words
76
76
  - **Extraction** — emails, names, dates from messy unstructured text
77
77
  - **Log triage** — extract errors from verbose output, filter noise
78
+ - **Intent routing** — map user descriptions to the closest URL, menu item, or setting
78
79
  - **Agent preprocessing** — parse tool calls, validate outputs, route tasks
79
80
 
80
81
  ## Authentication
@@ -25,22 +25,26 @@ Compile a specification.
25
25
 
26
26
  **Request body (JSON):**
27
27
 
28
- | Field | Type | Description |
29
- |-------|------|-------------|
30
- | `spec` | string | Natural-language specification. |
31
- | `compiler` | string | Compiler identifier. |
28
+ | Field | Type | Required | Description |
29
+ |-------|------|----------|-------------|
30
+ | `spec` | string | Yes | Natural-language specification. |
31
+ | `compiler` | string | No | Compiler identifier (default: `paw-4b-qwen3-0.6b`). |
32
+ | `slug` | string | No | URL-safe handle (e.g. `message-classifier`). Creates a `username/slug` alias. Requires auth. |
33
+ | `public` | boolean | No | List on public hub (default: true). |
34
+ | `name` | string | No | Display title. Auto-generated if omitted. |
35
+ | `tags` | string[] | No | Tags for discovery. |
32
36
 
33
- **Response (JSON):** includes `job_id`, `status`, `program_id`, `pseudo_program`, and `timings` as applicable to the job state.
37
+ **Response (JSON):** includes `job_id`, `status`, `program_id`, `slug` (if created), `pseudo_program`, and `timings`.
34
38
 
35
39
  ### `POST /infer`
36
40
 
37
- Run inference for a compiled program (server-side execution when offered by the deployment).
41
+ Run inference for a compiled program (server-side execution).
38
42
 
39
43
  **Request body (JSON):**
40
44
 
41
45
  | Field | Type | Description |
42
46
  |-------|------|-------------|
43
- | `program_id` | string | Program identifier. |
47
+ | `program_id` | string | Program identifier — hash ID or slug (e.g. `da03/message-classifier`). |
44
48
  | `input` | string | Input text. |
45
49
  | `max_tokens` | integer | Maximum tokens to generate. |
46
50
  | `temperature` | number | Sampling temperature. |
@@ -0,0 +1,78 @@
1
+ # Naming Programs
2
+
3
+ ProgramAsWeights uses two ways to refer to compiled programs: immutable content hashes and optional human-readable slugs.
4
+
5
+ ## Content-addressable IDs
6
+
7
+ Every compiled program has a stable identifier derived from its contents, similar to a Git commit hash:
8
+
9
+ ```text
10
+ 9b57fd6fccf77885400e
11
+ ```
12
+
13
+ You can load a program by this ID with `paw.function("<id>")` wherever you have the exact string. Hash IDs never change and always work.
14
+
15
+ ## Slugs (human-readable handles)
16
+
17
+ Authenticated users can optionally assign a slug at compile time:
18
+
19
+ ```python
20
+ program = paw.compile(
21
+ "Classify message urgency as immediate or wait",
22
+ slug="message-classifier"
23
+ )
24
+ # Creates da03/message-classifier (username/slug)
25
+ ```
26
+
27
+ The slug creates a `username/slug` handle that works everywhere a hash ID works:
28
+
29
+ ```python
30
+ fn = paw.function("da03/message-classifier")
31
+ ```
32
+
33
+ Slugs are **never auto-generated**. If you don't provide one, your program is
34
+ identified by hash only. This keeps the namespace clean for intentional naming.
35
+
36
+ ### Adding or changing a slug later
37
+
38
+ You can add a slug to an existing program, or rename it:
39
+
40
+ ```bash
41
+ paw rename a6b454023d41ac9ca845 message-classifier
42
+ ```
43
+
44
+ Or via the API:
45
+
46
+ ```python
47
+ import httpx
48
+ httpx.patch(
49
+ "https://programasweights.com/api/v1/programs/a6b454023d41ac9ca845",
50
+ json={"slug": "message-classifier"},
51
+ headers={"X-API-Key": "paw_sk_..."}
52
+ )
53
+ ```
54
+
55
+ ## Official namespace
56
+
57
+ Programs published under the `programasweights/` namespace are the official catalog. For these, the prefix may be omitted:
58
+
59
+ - `paw.function("email-triage")` resolves to `programasweights/email-triage`.
60
+
61
+ ## Community programs
62
+
63
+ Programs published under a user prefix must include that prefix:
64
+
65
+ ```python
66
+ paw.function("da03/message-classifier")
67
+ ```
68
+
69
+ ## Authentication
70
+
71
+ Creating or managing slugs requires signing in with GitHub on [programasweights.com](https://programasweights.com).
72
+
73
+ ## Convention
74
+
75
+ This mirrors HuggingFace, Docker Hub, and npm:
76
+
77
+ - Short names like `email-triage` refer to official programs (`programasweights/email-triage`).
78
+ - `username/name` is for community programs, like `Qwen/Qwen3-0.6B` on HuggingFace.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Run PAW programs directly in the browser via WebAssembly. No server, no API key, no setup.
4
4
 
5
- Programs compiled with the GPT-2 124M interpreter run entirely client-side. The base model (105 MB) downloads once and is cached; each program adds only ~5 MB.
5
+ Programs compiled with the compact interpreter (GPT-2 124M) run entirely client-side. The base model (105 MB) downloads once and is cached; each program adds only ~5 MB.
6
6
 
7
7
  ## Quick Start
8
8
 
@@ -42,7 +42,7 @@ await fn.free();
42
42
 
43
43
  ## How It Works
44
44
 
45
- 1. **Base model** — GPT-2 124M Q6_K GGUF (105 MB) downloads from HuggingFace CDN and is cached in the browser after first load.
45
+ 1. **Base model** — Compact interpreter (GPT-2 124M, 105 MB) downloads from HuggingFace CDN and is cached in the browser after first load.
46
46
  2. **LoRA adapter** — Each program is a ~5 MB Q4_0 GGUF LoRA adapter that specializes the base model for a specific task.
47
47
  3. **Prefix cache** — A precomputed KV cache (~7 MB) eliminates the prompt prefill step, making the first inference call fast.
48
48
  4. **Inference** — Runs via WebAssembly (llama.cpp compiled to WASM with SIMD). ~200ms per call on Chrome.
@@ -134,6 +134,6 @@ Without these headers, the SDK falls back to single-threaded WASM (still functio
134
134
 
135
135
  ## Limitations
136
136
 
137
- - Only programs compiled with the **GPT-2 124M** interpreter are supported. Programs compiled with Qwen3 0.6B are too large for browser inference (~594 MB base model).
137
+ - Only programs compiled with the **compact** interpreter (GPT-2 124M) are supported. Programs compiled with the standard interpreter (Qwen3 0.6B) are too large for browser inference (~594 MB base model).
138
138
  - The 105 MB base model download may be slow on mobile connections.
139
139
  - Performance varies by browser (Chrome is fastest).
@@ -26,7 +26,7 @@ The LoRA weights are quantized to **Q4_0** GGUF format (on the order of **23 MB*
26
26
 
27
27
  When you run a program locally:
28
28
 
29
- - The SDK loads a **Q6_K** base model (Qwen3-0.6B, about **594 MB**, downloaded once).
29
+ - The SDK loads the standard interpreter (Qwen3 0.6B, about **594 MB**, downloaded once).
30
30
  - It applies the **Q4_0** LoRA adapter from the bundle.
31
31
  - The pseudo-program is prepended as a **prompt prefix**; user input follows.
32
32
  - Inference uses **llama.cpp** (CPU or GPU backends as configured).
@@ -60,7 +60,7 @@ At runtime, the SDK loads a Q6_K base model (~594 MB, downloaded once) and appli
60
60
 
61
61
  ## Browser Inference
62
62
 
63
- Programs compiled with the GPT-2 124M interpreter also run directly in the browser via WebAssembly -- no server needed:
63
+ Programs compiled with the compact interpreter (GPT-2 124M) also run directly in the browser via WebAssembly -- no server needed:
64
64
 
65
65
  ```html
66
66
  <script type="module">
@@ -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.dev7"
25
+ __version__ = "0.1.0.dev9"
26
26
 
27
27
  from .config import get_api_url, get_api_key, set_api_key
28
28
 
@@ -37,33 +37,38 @@ def compile(
37
37
  name: str | None = None,
38
38
  tags: list[str] | None = None,
39
39
  public: bool = True,
40
+ slug: str | None = None,
40
41
  ):
41
42
  """Compile a natural language specification into a neural program.
42
43
 
43
44
  The compilation runs on the PAW server. The resulting program can be
44
- downloaded and run locally via ``paw.function(program.id)``.
45
+ downloaded and run locally via ``paw.function(program.id)`` or
46
+ ``paw.function(program.slug)`` if a slug was provided.
45
47
 
46
48
  Args:
47
49
  spec: Full specification text. Include examples in the text if desired.
48
50
  compiler: Compiler model (alias or snapshot name).
49
- name: Human-readable program name for the hub.
51
+ name: Human-readable program name (display title for the hub).
50
52
  tags: Tags for hub discovery.
51
53
  public: Whether to list on the public hub.
54
+ slug: URL-safe handle (e.g. 'message-classifier'). Creates a
55
+ ``username/slug`` alias. Requires authentication.
52
56
 
53
57
  Returns:
54
- A ``Program`` object with ``id``, ``status``, and ``timings``.
58
+ A ``Program`` object with ``id``, ``slug``, ``status``, and ``timings``.
55
59
 
56
60
  Example:
57
61
  >>> program = paw.compile(
58
- ... "Fix malformed JSON: repair missing quotes and trailing commas"
62
+ ... "Fix malformed JSON: repair missing quotes and trailing commas",
63
+ ... slug="json-fixer"
59
64
  ... )
60
- >>> fn = paw.function(program.id)
65
+ >>> fn = paw.function(program.slug) # or paw.function(program.id)
61
66
  >>> fn("{name: 'Alice',}")
62
67
  '{"name": "Alice"}'
63
68
  """
64
69
  from .client import PAWClient
65
70
  client = PAWClient(api_url=api_url, api_key=api_key)
66
- return client.compile(spec, compiler=compiler, name=name, tags=tags, public=public)
71
+ return client.compile(spec, compiler=compiler, name=name, tags=tags, public=public, slug=slug)
67
72
 
68
73
 
69
74
  def function(
@@ -94,7 +99,7 @@ def function(
94
99
  """
95
100
  import os
96
101
  import re
97
- from .cache import is_program_cached, get_program_dir
102
+ from .cache import is_program_cached, get_program_dir, get_cached_slug, save_slug_mapping
98
103
  from .runtime_llamacpp import PawFunction
99
104
 
100
105
  if n_gpu_layers is None:
@@ -102,9 +107,14 @@ def function(
102
107
 
103
108
  resolved_id = program_id
104
109
  if not re.fullmatch(r"[a-f0-9]{16,64}", program_id):
105
- from .client import PAWClient
106
- client = PAWClient(api_url=api_url, api_key=api_key)
107
- resolved_id = client.resolve_slug(program_id)
110
+ cached = get_cached_slug(program_id)
111
+ if cached:
112
+ resolved_id = cached
113
+ else:
114
+ from .client import PAWClient
115
+ client = PAWClient(api_url=api_url, api_key=api_key)
116
+ resolved_id = client.resolve_slug(program_id)
117
+ save_slug_mapping(program_id, resolved_id)
108
118
 
109
119
  if not is_program_cached(resolved_id):
110
120
  from .client import PAWClient
@@ -10,10 +10,12 @@ Cache structure:
10
10
  adapter.gguf # ~23 MB, Q4_0 LoRA
11
11
  prompt_template.txt
12
12
  meta.json
13
+ slug_cache.json # slug -> program_id mapping
13
14
  """
14
15
 
15
16
  from __future__ import annotations
16
17
 
18
+ import json
17
19
  import os
18
20
  from pathlib import Path
19
21
 
@@ -80,3 +82,36 @@ def _download_file(url: str, dest: Path):
80
82
  mb = downloaded / 1024 / 1024
81
83
  print(f"\r {mb:.1f} MB ({pct:.0f}%)", end="", flush=True)
82
84
  print()
85
+
86
+
87
+ def _slug_cache_path() -> Path:
88
+ return config.get_cache_dir() / "slug_cache.json"
89
+
90
+
91
+ def get_cached_slug(slug: str) -> str | None:
92
+ """Look up a slug in the local cache. Returns program_id or None."""
93
+ path = _slug_cache_path()
94
+ if not path.exists():
95
+ return None
96
+ try:
97
+ data = json.loads(path.read_text())
98
+ program_id = data.get(slug)
99
+ if program_id and is_program_cached(program_id):
100
+ return program_id
101
+ except (json.JSONDecodeError, OSError):
102
+ pass
103
+ return None
104
+
105
+
106
+ def save_slug_mapping(slug: str, program_id: str) -> None:
107
+ """Save a slug -> program_id mapping to the local cache."""
108
+ path = _slug_cache_path()
109
+ data: dict = {}
110
+ if path.exists():
111
+ try:
112
+ data = json.loads(path.read_text())
113
+ except (json.JSONDecodeError, OSError):
114
+ pass
115
+ data[slug] = program_id
116
+ path.parent.mkdir(parents=True, exist_ok=True)
117
+ path.write_text(json.dumps(data))
@@ -26,11 +26,12 @@ def cmd_compile(args):
26
26
  if not args.json:
27
27
  print(f"Compiling: {args.spec[:80]}...")
28
28
 
29
- program = paw.compile(args.spec, compiler=args.compiler)
29
+ program = paw.compile(args.spec, compiler=args.compiler, slug=getattr(args, 'slug', None))
30
30
 
31
31
  if args.json:
32
32
  print(json.dumps({
33
33
  "program_id": program.id,
34
+ "slug": program.slug,
34
35
  "status": program.status,
35
36
  "error": program.error,
36
37
  "timings": program.timings,
@@ -42,15 +43,18 @@ def cmd_compile(args):
42
43
  return 1
43
44
 
44
45
  print(f"Program ID: {program.id}")
46
+ if program.slug:
47
+ print(f"Slug: {program.slug}")
45
48
  print(f"Status: {program.status}")
46
49
  if program.timings:
47
50
  total = program.timings.get("total_ms", 0)
48
51
  print(f"Total time: {total:.0f}ms")
52
+ ref = program.slug or program.id
49
53
  print(f"\nTo run locally:")
50
- print(f" paw run {program.id} \"your input here\"")
54
+ print(f" paw run --program \"{ref}\" --input \"your input here\"")
51
55
  print(f"\nOr in Python:")
52
56
  print(f" import programasweights as paw")
53
- print(f" fn = paw.function(\"{program.id}\")")
57
+ print(f" fn = paw.function(\"{ref}\")")
54
58
  print(f" fn(\"your input here\")")
55
59
  return 0
56
60
 
@@ -80,6 +84,37 @@ def cmd_login(args):
80
84
  return 0
81
85
 
82
86
 
87
+ def cmd_rename(args):
88
+ import programasweights as paw
89
+ if args.api_url:
90
+ paw.api_url = args.api_url
91
+ if args.api_key:
92
+ paw.api_key = args.api_key
93
+
94
+ import httpx
95
+ from programasweights.client import PAWClient
96
+ client = PAWClient(api_url=paw.api_url, api_key=paw.api_key)
97
+
98
+ resp = httpx.patch(
99
+ f"{client._api_url}/api/v1/programs/{args.program}",
100
+ json={"slug": args.new_slug},
101
+ headers=client._headers(),
102
+ timeout=10.0,
103
+ )
104
+ resp.raise_for_status()
105
+ data = resp.json()
106
+
107
+ if args.json:
108
+ print(json.dumps(data))
109
+ else:
110
+ slug = data.get("slug")
111
+ if slug:
112
+ print(f"Renamed to: {slug}")
113
+ else:
114
+ print("Slug removed.")
115
+ return 0
116
+
117
+
83
118
  def cmd_info(args):
84
119
  import programasweights as paw
85
120
  if args.api_url:
@@ -129,6 +164,7 @@ def main():
129
164
  p = sub.add_parser("compile", help="Compile a spec on the server")
130
165
  p.add_argument("--spec", required=True, help="Natural language specification")
131
166
  p.add_argument("--compiler", default="paw-4b-qwen3-0.6b", help="Compiler model")
167
+ p.add_argument("--slug", default=None, help="URL-safe handle (e.g. 'message-classifier')")
132
168
  p.add_argument("--json", action="store_true", help="JSON output")
133
169
 
134
170
  p = sub.add_parser("run", help="Run a program locally via llama.cpp")
@@ -142,6 +178,11 @@ def main():
142
178
  p = sub.add_parser("login", help="Save API key for authentication")
143
179
  p.add_argument("key", nargs="?", default=None, help="API key (paw_sk_...). Omit to open browser.")
144
180
 
181
+ p = sub.add_parser("rename", help="Set or change a program's slug")
182
+ p.add_argument("program", help="Program ID or current slug")
183
+ p.add_argument("new_slug", help="New slug (e.g. 'message-classifier') or empty string to remove")
184
+ p.add_argument("--json", action="store_true", help="JSON output")
185
+
145
186
  p = sub.add_parser("info", help="Show program info")
146
187
  p.add_argument("program", help="Program name or ID")
147
188
  p.add_argument("--json", action="store_true", help="JSON output")
@@ -156,6 +197,7 @@ def main():
156
197
  "compile": cmd_compile,
157
198
  "run": cmd_run,
158
199
  "login": cmd_login,
200
+ "rename": cmd_rename,
159
201
  "info": cmd_info,
160
202
  }
161
203