programasweights 0.1.0.dev8__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 (489) hide show
  1. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/PKG-INFO +2 -2
  2. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/__init__.py +1 -1
  3. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/pyproject.toml +2 -2
  4. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/programs.py +29 -12
  5. programasweights-0.1.0.dev9/tests/test_offline_cache.py +97 -0
  6. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/AuthorPage.tsx +11 -5
  7. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/HubPage.tsx +25 -18
  8. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/HubProgramPage.tsx +14 -11
  9. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/ProfilePage.tsx +11 -5
  10. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/.cursor/rules/vllm-deployment.mdc +0 -0
  11. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/.git +0 -0
  12. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/.github/workflows/web-sdk.yml +0 -0
  13. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/.gitignore +0 -0
  14. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/.gitmodules +0 -0
  15. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/.hatch_build.toml +0 -0
  16. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/.readthedocs.yaml +0 -0
  17. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/1apple.jpg +0 -0
  18. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/1apple2.jpg +0 -0
  19. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/2apples.jpg +0 -0
  20. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/2apples2.jpg +0 -0
  21. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/3apples.jpg +0 -0
  22. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/3apples2.jpg +0 -0
  23. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/479400.png +0 -0
  24. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/4apples.jpg +0 -0
  25. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/4apples2.jpg +0 -0
  26. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/4apples3.jpg +0 -0
  27. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/4apples4.jpg +0 -0
  28. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/5apples.jpg +0 -0
  29. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/6apples.jpg +0 -0
  30. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/8apples.jpg +0 -0
  31. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/9apples.jpg +0 -0
  32. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/AGENTS.md +0 -0
  33. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/FLOW_SUMMARY.md +0 -0
  34. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/MANIFEST.in +0 -0
  35. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/ONNX_MIGRATION_PLAN.md +0 -0
  36. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/PREFIX_TOKENS_DESIGN.md +0 -0
  37. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/PYPI_README.md +0 -0
  38. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/README.md +0 -0
  39. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/TRUNCATION_CHANGES.md +0 -0
  40. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/USE_CASES_AND_IDEAS.md +0 -0
  41. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/VERIFICATION_USAGE.md +0 -0
  42. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/analyze_dataset.py +0 -0
  43. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/analyze_lengths.py +0 -0
  44. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/code_prompt.md +0 -0
  45. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/evaluate_openai_python_code_baseline.py +0 -0
  46. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/openai_batch_request.py +0 -0
  47. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/prepare_alchemist_data.py +0 -0
  48. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/prepare_var_bench_data.py +0 -0
  49. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/python_code_sandbox.py +0 -0
  50. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/script_evaluation_var_bench.sh +0 -0
  51. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/script_evalution_evaluation.sh +0 -0
  52. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/script_evalution_request.sh +0 -0
  53. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/baselines/script_evalution_statistics.sh +0 -0
  54. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/benchmark_pytorch_vs_onnx.py +0 -0
  55. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/benchmark_user_experience.py +0 -0
  56. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/check_dataset.py +0 -0
  57. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/combine_datasets.py +0 -0
  58. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/compare_datasets.py +0 -0
  59. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/compare_old_vs_regen.py +0 -0
  60. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/convert_paw_to_svg.py +0 -0
  61. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/create_favicon_sizes.py +0 -0
  62. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/create_visualization_from_log.py +0 -0
  63. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/create_vqa_dataset.py +0 -0
  64. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/debug_cache.py +0 -0
  65. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/debug_eos_example.sh +0 -0
  66. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
  67. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/adr/002-q4_0-adapter-format.md +0 -0
  68. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/adr/003-single-spec-field.md +0 -0
  69. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/adr/004-compiler-naming.md +0 -0
  70. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/adr/005-vllm-hidden-states.md +0 -0
  71. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/adr/006-email-api-key-auth.md +0 -0
  72. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/advanced/adrs.md +0 -0
  73. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/advanced/architecture.md +0 -0
  74. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/api-reference/cli.md +0 -0
  75. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/api-reference/python-sdk.md +0 -0
  76. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/api-reference/rest-api.md +0 -0
  77. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/architecture.md +0 -0
  78. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/getting-started/first-program.md +0 -0
  79. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/getting-started/installation.md +0 -0
  80. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/getting-started/naming-programs.md +0 -0
  81. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/guide/browser-inference.md +0 -0
  82. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/guide/how-it-works.md +0 -0
  83. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/guide/local-inference.md +0 -0
  84. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/guide/writing-good-specs.md +0 -0
  85. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/hub/browsing-programs.md +0 -0
  86. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/hub/feedback-cases.md +0 -0
  87. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/hub/publishing-programs.md +0 -0
  88. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/index.md +0 -0
  89. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/docs/requirements.txt +0 -0
  90. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/estimate_data_gen_cost.py +0 -0
  91. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/eval.py +0 -0
  92. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/examples/flask_app.py +0 -0
  93. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/examples/jupyter_notebook.py +0 -0
  94. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/examples/langchain_integration.py +0 -0
  95. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/examples/replace_openai.py +0 -0
  96. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/export_to_onnx.py +0 -0
  97. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/extract_models.py +0 -0
  98. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/inspect_data_dirs.py +0 -0
  99. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/latest_export.csv +0 -0
  100. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/log.train.81920.morecategories.extraprefix +0 -0
  101. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
  102. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/merge_datasets.py +0 -0
  103. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/mkdocs.yml +0 -0
  104. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/paw.png +0 -0
  105. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/paw.svg +0 -0
  106. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/process_im2latex_dataset.py +0 -0
  107. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/artifacts.py +0 -0
  108. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/cache.py +0 -0
  109. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/cli.py +0 -0
  110. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/client.py +0 -0
  111. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/compiler/__init__.py +0 -0
  112. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/compiler/dummy.py +0 -0
  113. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/config.py +0 -0
  114. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/convert_peft_to_paw.py +0 -0
  115. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/paw_format.py +0 -0
  116. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/runtime/__init__.py +0 -0
  117. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/runtime/interpreter.py +0 -0
  118. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/runtime/interpreter_onnx.py +0 -0
  119. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights/runtime_llamacpp.py +0 -0
  120. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/__init__.py +0 -0
  121. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/compiler/__init__.py +0 -0
  122. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/lora_format.py +0 -0
  123. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/runtime/__init__.py +0 -0
  124. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/runtime/interpreter_lora.py +0 -0
  125. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/tests/test_compile_and_run.py +0 -0
  126. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/tests/test_lora_format.py +0 -0
  127. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/tests/test_training.py +0 -0
  128. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/train_lora.py +0 -0
  129. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/training/__init__.py +0 -0
  130. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
  131. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/run_eval.sh +0 -0
  132. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/run_training.sh +0 -0
  133. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/scripts/filter_table_by_length.py +0 -0
  134. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/.env.example +0 -0
  135. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/alembic/env.py +0 -0
  136. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/alembic/script.py.mako +0 -0
  137. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/alembic/versions/001_initial_schema.py +0 -0
  138. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
  139. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/alembic/versions/003_fulltext_search_ranking.py +0 -0
  140. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/alembic/versions/004_fix_alias_slug_constraint.py +0 -0
  141. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/alembic.ini +0 -0
  142. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/__init__.py +0 -0
  143. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/config.py +0 -0
  144. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/dependencies.py +0 -0
  145. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/logging_config.py +0 -0
  146. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/main.py +0 -0
  147. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/middleware/__init__.py +0 -0
  148. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/middleware/rate_limit.py +0 -0
  149. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/models/__init__.py +0 -0
  150. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/models/database.py +0 -0
  151. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/models/orm.py +0 -0
  152. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/models/schemas.py +0 -0
  153. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/__init__.py +0 -0
  154. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/auth.py +0 -0
  155. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/compile.py +0 -0
  156. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/feedback.py +0 -0
  157. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/health.py +0 -0
  158. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/infer.py +0 -0
  159. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/routes/models_info.py +0 -0
  160. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/__init__.py +0 -0
  161. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/auto_tag_service.py +0 -0
  162. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/auto_title_service.py +0 -0
  163. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/compile_provider.py +0 -0
  164. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/compile_service.py +0 -0
  165. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/infer_service.py +0 -0
  166. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/search_service.py +0 -0
  167. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/api/services/storage_service.py +0 -0
  168. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/benchmarks/benchmark_api.py +0 -0
  169. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/benchmarks/handcrafted_specs.json +0 -0
  170. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/benchmarks/last_benchmark_results.json +0 -0
  171. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/benchmarks/last_stress_results.json +0 -0
  172. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/benchmarks/stress_test.py +0 -0
  173. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/compiler_registry.json +0 -0
  174. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/provider_configs/gpt2.json +0 -0
  175. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/provider_configs/qwen3-0.6b.json +0 -0
  176. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/requirements.txt +0 -0
  177. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
  178. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/ablation_search.py +0 -0
  179. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/backfill_hf_browser_assets.py +0 -0
  180. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/backfill_hf_safetensors.py +0 -0
  181. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/backfill_interestingness.py +0 -0
  182. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/backfill_tags.py +0 -0
  183. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/backfill_titles.py +0 -0
  184. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/benchmark_gpt2.py +0 -0
  185. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/cleanup_storage.py +0 -0
  186. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/eval_search.py +0 -0
  187. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/evict_cold_programs.py +0 -0
  188. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/generate_prefix_cache.py +0 -0
  189. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/launch_gpt2_compiler.py +0 -0
  190. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/launch_qwen3_compiler.py +0 -0
  191. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/patch_vllm.sh +0 -0
  192. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/restart.sh +0 -0
  193. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/start_all.sh +0 -0
  194. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/start_gpt2_services.sh +0 -0
  195. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/start_provider.sh +0 -0
  196. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/scripts/start_services.sh +0 -0
  197. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/__init__.py +0 -0
  198. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/conftest.py +0 -0
  199. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/test_auth.py +0 -0
  200. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/test_compile.py +0 -0
  201. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/test_errors.py +0 -0
  202. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/test_infer.py +0 -0
  203. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/test_integration_gpu.py +0 -0
  204. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/test_rate_limit.py +0 -0
  205. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/tests/test_storage.py +0 -0
  206. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/vllm_models/__init__.py +0 -0
  207. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/vllm_models/gpt2_lora_patch.py +0 -0
  208. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/vllm_models/paw_compiler.py +0 -0
  209. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/vllm_models/prepare_checkpoint.py +0 -0
  210. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/server/vllm_models/register.py +0 -0
  211. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
  212. {programasweights-0.1.0.dev8 → 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
  213. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
  214. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
  215. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_1spec.py +0 -0
  216. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_all_caching.py +0 -0
  217. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_apple_count.py +0 -0
  218. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_batch_pilot.py +0 -0
  219. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_compile.py +0 -0
  220. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_e2e.py +0 -0
  221. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_execute.py +0 -0
  222. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_nspecs.py +0 -0
  223. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_one_vs_two_step.py +0 -0
  224. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_onnx_correctness.py +0 -0
  225. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_onnx_hf_model.py +0 -0
  226. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_onnx_hf_with_images.py +0 -0
  227. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_paw_format.py +0 -0
  228. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/test_thinking_comparison.py +0 -0
  229. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/tests/test_programasweights.py +0 -0
  230. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/train.py +0 -0
  231. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
  232. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/README.md +0 -0
  233. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/__init__.py +0 -0
  234. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/DATASET_CHANGELOG.md +0 -0
  235. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/README.md +0 -0
  236. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
  237. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/build_user_bench.py +0 -0
  238. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/dry_run_batch.py +0 -0
  239. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/filter_test_data.py +0 -0
  240. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/generate_specs.py +0 -0
  241. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/generate_specs_batch.py +0 -0
  242. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/incremental_merge.py +0 -0
  243. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/merge_and_upload.py +0 -0
  244. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/regenerate_outputs_batch.py +0 -0
  245. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/synthesize_data.py +0 -0
  246. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/synthesize_data_batch.py +0 -0
  247. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/filter_system.txt +0 -0
  248. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/filter_user.txt +0 -0
  249. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/pairs_system.txt +0 -0
  250. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/pairs_user.txt +0 -0
  251. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_system.txt +0 -0
  252. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user.txt +0 -0
  253. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user_freeform.txt +0 -0
  254. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
  255. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
  256. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/verify_system.txt +0 -0
  257. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates/verify_user.txt +0 -0
  258. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/filter_system.txt +0 -0
  259. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/filter_user.txt +0 -0
  260. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/pairs_system.txt +0 -0
  261. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/pairs_user.txt +0 -0
  262. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_system.txt +0 -0
  263. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user.txt +0 -0
  264. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
  265. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
  266. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
  267. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/verify_system.txt +0 -0
  268. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/templates_old/verify_user.txt +0 -0
  269. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/data_generation/verify_test_data.py +0 -0
  270. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/datasets/__init__.py +0 -0
  271. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/datasets/jsonl_text_pairs.py +0 -0
  272. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/loops/__init__.py +0 -0
  273. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/training/loops/prefix_tuning_sft.py +0 -0
  274. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/ttt.py +0 -0
  275. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/upload_model.py +0 -0
  276. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/upload_onnx_to_huggingface.py +0 -0
  277. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/upload_onnx_to_huggingface_with_token.py +0 -0
  278. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/utils.py +0 -0
  279. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/HANDOFF.md +0 -0
  280. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/README.md +0 -0
  281. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/__init__.py +0 -0
  282. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/config.py +0 -0
  283. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/main.py +0 -0
  284. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/middleware/__init__.py +0 -0
  285. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/middleware/rate_limit.py +0 -0
  286. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/models.py +0 -0
  287. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/__init__.py +0 -0
  288. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/auth_service.py +0 -0
  289. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/case_service.py +0 -0
  290. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/compiler_service.py +0 -0
  291. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/gpt_service.py +0 -0
  292. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/hub_service.py +0 -0
  293. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/image_service.py +0 -0
  294. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/interpreter_service.py +0 -0
  295. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/services/sql_manager.py +0 -0
  296. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/templates/gpt_test_generation.txt +0 -0
  297. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/utils/__init__.py +0 -0
  298. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/utils/image_placeholders.py +0 -0
  299. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/app/utils/program_hash.py +0 -0
  300. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/clear_db.sh +0 -0
  301. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/clear_tables.sql +0 -0
  302. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/data/programs.db +0 -0
  303. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/env_example.txt +0 -0
  304. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/example_images/README.md +0 -0
  305. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/get_data_examples.py +0 -0
  306. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/requirements.txt +0 -0
  307. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/run_server.py +0 -0
  308. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_analytics_tables.sql +0 -0
  309. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_auth_tables.sql +0 -0
  310. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_cache_tables.sql +0 -0
  311. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_cases_tables.sql +0 -0
  312. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_database.sql +0 -0
  313. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_database_simple.sql +0 -0
  314. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_db.sh +0 -0
  315. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_example_images.py +0 -0
  316. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/setup_hub_tables.sql +0 -0
  317. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/backend/test_compilation_cache.py +0 -0
  318. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/README.md +0 -0
  319. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/e2e/full.spec.ts +0 -0
  320. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/e2e/helpers.ts +0 -0
  321. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/e2e/smoke.spec.ts +0 -0
  322. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/eslint.config.js +0 -0
  323. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/index.html +0 -0
  324. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/package-lock.json +0 -0
  325. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/package.json +0 -0
  326. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/playwright.config.ts +0 -0
  327. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/postcss.config.js +0 -0
  328. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/apple-touch-icon.png +0 -0
  329. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/browser-worker.html +0 -0
  330. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/favicon-16x16.png +0 -0
  331. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/favicon-32x32.png +0 -0
  332. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/paw-192.png +0 -0
  333. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/paw-512.png +0 -0
  334. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/paw.svg +0 -0
  335. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/react-test.html +0 -0
  336. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/test.html +0 -0
  337. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/public/vite.svg +0 -0
  338. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/scripts/deploy.sh +0 -0
  339. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/App.css +0 -0
  340. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/App.tsx +0 -0
  341. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/assets/react.svg +0 -0
  342. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/AboutPage.tsx +0 -0
  343. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/AgentsPage.tsx +0 -0
  344. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/BrowserPage.tsx +0 -0
  345. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/CasesSection.tsx +0 -0
  346. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -0
  347. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/CompileSection.tsx +0 -0
  348. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/DocsPage.tsx +0 -0
  349. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/ExamplesInput.tsx +0 -0
  350. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/Footer.tsx +0 -0
  351. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/Header.tsx +0 -0
  352. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/HubUploadPage.tsx +0 -0
  353. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/LandingPage.tsx +0 -0
  354. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/MainInterface.tsx +0 -0
  355. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/ModelSelector.tsx +0 -0
  356. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/NavigationHelper.tsx +0 -0
  357. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
  358. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/SettingsPage.tsx +0 -0
  359. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
  360. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/TermsPage.tsx +0 -0
  361. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/components/TestSection.tsx +0 -0
  362. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/index.css +0 -0
  363. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/main.tsx +0 -0
  364. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/types/index.ts +0 -0
  365. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/src/utils/api.ts +0 -0
  366. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/tailwind.config.js +0 -0
  367. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/test-results/.last-run.json +0 -0
  368. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/tsconfig.app.json +0 -0
  369. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/tsconfig.json +0 -0
  370. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/tsconfig.node.json +0 -0
  371. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/frontend/vite.config.ts +0 -0
  372. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/nginx-paw.conf +0 -0
  373. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/nginx.conf +0 -0
  374. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/setup_mysql.sh +0 -0
  375. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/start.sh +0 -0
  376. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/test_setup.py +0 -0
  377. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-app/ttt.py +0 -0
  378. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/.gitignore +0 -0
  379. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/README.md +0 -0
  380. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/__tests__/loader.test.ts +0 -0
  381. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/__tests__/prompt.test.ts +0 -0
  382. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/examples/basic.html +0 -0
  383. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/package-lock.json +0 -0
  384. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/package.json +0 -0
  385. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/serve.py +0 -0
  386. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/src/index.ts +0 -0
  387. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/src/loader.ts +0 -0
  388. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/src/runtime.ts +0 -0
  389. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/src/types.ts +0 -0
  390. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/test-standalone.html +0 -0
  391. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/tsconfig.json +0 -0
  392. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/vitest.config.ts +0 -0
  393. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.git +0 -0
  394. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
  395. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
  396. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
  397. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
  398. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.gitignore +0 -0
  399. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.gitmodules +0 -0
  400. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.npmignore +0 -0
  401. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/.prettierignore +0 -0
  402. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/CMakeLists.txt +0 -0
  403. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/LICENCE +0 -0
  404. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/README.md +0 -0
  405. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/README_banner.png +0 -0
  406. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/assets/screenshot_0.png +0 -0
  407. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/actions.hpp +0 -0
  408. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
  409. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/glue.hpp +0 -0
  410. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
  411. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
  412. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
  413. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
  414. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
  415. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
  416. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
  417. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/cpp/wllama.cpp +0 -0
  418. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/basic/index.html +0 -0
  419. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/embeddings/index.html +0 -0
  420. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
  421. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/.gitignore +0 -0
  422. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/README.md +0 -0
  423. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/index.html +0 -0
  424. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/package-lock.json +0 -0
  425. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/package.json +0 -0
  426. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
  427. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
  428. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
  429. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
  430. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
  431. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
  432. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
  433. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
  434. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
  435. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
  436. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
  437. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
  438. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/config.ts +0 -0
  439. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/index.css +0 -0
  440. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
  441. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
  442. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
  443. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
  444. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
  445. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
  446. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
  447. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
  448. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
  449. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
  450. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
  451. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
  452. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
  453. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
  454. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
  455. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
  456. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/guides/intro-v2.md +0 -0
  457. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/index.ts +0 -0
  458. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/package-lock.json +0 -0
  459. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/package.json +0 -0
  460. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
  461. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
  462. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/build_worker.sh +0 -0
  463. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
  464. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
  465. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/http_server.js +0 -0
  466. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/scripts/post_build.sh +0 -0
  467. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/cache-manager.ts +0 -0
  468. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/glue/glue.ts +0 -0
  469. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/glue/messages.ts +0 -0
  470. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/index.ts +0 -0
  471. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/mjs.test.ts +0 -0
  472. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/model-manager.test.ts +0 -0
  473. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/model-manager.ts +0 -0
  474. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
  475. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
  476. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
  477. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
  478. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/utils.test.ts +0 -0
  479. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/utils.ts +0 -0
  480. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
  481. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/wllama.test.ts +0 -0
  482. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/wllama.ts +0 -0
  483. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/worker.ts +0 -0
  484. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
  485. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
  486. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
  487. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/tsconfig.build.json +0 -0
  488. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/tsup.config.ts +0 -0
  489. {programasweights-0.1.0.dev8 → programasweights-0.1.0.dev9}/web-sdk/wllama/vitest.config.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: programasweights
3
- Version: 0.1.0.dev8
3
+ Version: 0.1.0.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
@@ -22,7 +22,7 @@ API reference:
22
22
  paw.api_key API key (set via login() or PAW_API_KEY env var)
23
23
  """
24
24
 
25
- __version__ = "0.1.0.dev8"
25
+ __version__ = "0.1.0.dev9"
26
26
 
27
27
  from .config import get_api_url, get_api_key, set_api_key
28
28
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "programasweights"
7
- version = "0.1.0.dev8"
7
+ version = "0.1.0.dev9"
8
8
  description = "Compile natural language specifications into neural programs that run locally via llama.cpp."
9
9
  readme = "PYPI_README.md"
10
10
  requires-python = ">=3.9"
@@ -28,7 +28,7 @@ classifiers = [
28
28
  ]
29
29
  dependencies = [
30
30
  "httpx>=0.27.0,<1.0",
31
- "llama-cpp-python>=0.3.0,<1.0",
31
+ "llama-cpp-python>=0.3.0,<=0.3.18",
32
32
  ]
33
33
 
34
34
  [project.urls]
@@ -224,28 +224,45 @@ async def list_programs(
224
224
  programs = result.scalars().all()
225
225
 
226
226
  program_ids = [p.id for p in programs]
227
- author_id_by_program = {p.id: p.author_id for p in programs}
228
- all_alias_result = await db.execute(
227
+
228
+ # Fetch viewer's slugs (if logged in) and owner slugs in one query
229
+ alias_result = await db.execute(
229
230
  select(Alias.program_id, Alias.owner_id, User.username, Alias.slug_name)
230
231
  .join(User, User.id == Alias.owner_id)
231
- .where(Alias.program_id.in_(program_ids))
232
+ .join(Program, Program.id == Alias.program_id)
233
+ .where(
234
+ Alias.program_id.in_(program_ids),
235
+ or_(
236
+ Alias.owner_id == Program.author_id,
237
+ Alias.owner_id == (user.id if user else -1),
238
+ ),
239
+ )
232
240
  .order_by(Alias.created_at)
233
241
  )
234
- alias_map: dict[str, list[str]] = {}
235
- for pid, owner_id, username, slug_name in all_alias_result.all():
242
+ viewer_slug_map: dict[str, str] = {}
243
+ owner_slug_map: dict[str, str] = {}
244
+ for pid, owner_id, username, slug_name in alias_result.all():
236
245
  if not username:
237
246
  continue
238
247
  handle = f"{username}/{slug_name}"
239
- prog_author = author_id_by_program.get(pid)
240
- if owner_id == prog_author:
241
- alias_map.setdefault(pid, []).insert(0, handle)
248
+ if user and owner_id == user.id:
249
+ viewer_slug_map[pid] = handle
242
250
  else:
243
- alias_map.setdefault(pid, []).append(handle)
251
+ owner_slug_map.setdefault(pid, handle)
252
+
253
+ def best_slug(pid: str) -> str | None:
254
+ return viewer_slug_map.get(pid) or owner_slug_map.get(pid)
255
+
256
+ alias_map: dict[str, list[str]] = {}
257
+ for pid in program_ids:
258
+ s = best_slug(pid)
259
+ if s:
260
+ alias_map[pid] = [s]
244
261
 
245
262
  def display_name(p):
246
- aliases = alias_map.get(p.id, [])
247
- if aliases:
248
- return aliases[0].split("/")[-1]
263
+ slug = best_slug(p.id)
264
+ if slug:
265
+ return slug.split("/")[-1]
249
266
  return p.name
250
267
 
251
268
  author_ids = list({p.author_id for p in programs if p.author_id})
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Test that PAW functions work offline after first use.
4
+
5
+ Step 1 (warm): Call paw.function() with a slug to populate caches.
6
+ Step 2 (cold offline): In a NEW process with all network blocked,
7
+ call paw.function() with the same slug and run inference.
8
+
9
+ Usage:
10
+ python3 tests/test_offline_cache.py
11
+ """
12
+
13
+ import json
14
+ import subprocess
15
+ import sys
16
+ import os
17
+
18
+ SLUG = "programasweights/email-triage"
19
+
20
+ STEP1_SCRIPT = '''
21
+ import programasweights as paw
22
+ from programasweights.cache import _slug_cache_path, get_cached_slug
23
+ import json
24
+
25
+ print("Step 1: Warming cache with network...")
26
+ fn = paw.function("{slug}")
27
+ result = fn("Server is down, need immediate help!")
28
+ print(f" Result: {{result}}")
29
+
30
+ # Verify slug cache was saved
31
+ path = _slug_cache_path()
32
+ assert path.exists(), "slug_cache.json was not created!"
33
+ data = json.loads(path.read_text())
34
+ assert "{slug}" in data, "Slug not in cache!"
35
+ program_id = data["{slug}"]
36
+ print(f" Cached slug -> {{program_id}}")
37
+ print(" STEP 1 PASSED")
38
+ '''.format(slug=SLUG)
39
+
40
+ STEP2_SCRIPT = '''
41
+ import socket
42
+
43
+ # Block ALL network access before importing anything PAW-related
44
+ _real_connect = socket.socket.connect
45
+ def _blocked_connect(self, *args, **kwargs):
46
+ raise OSError("NETWORK BLOCKED: offline test detected a network call!")
47
+ socket.socket.connect = _blocked_connect
48
+
49
+ # Also block DNS resolution
50
+ _real_getaddrinfo = socket.getaddrinfo
51
+ def _blocked_getaddrinfo(*args, **kwargs):
52
+ raise OSError("DNS BLOCKED: offline test detected a DNS lookup!")
53
+ socket.getaddrinfo = _blocked_getaddrinfo
54
+
55
+ import programasweights as paw
56
+
57
+ print("Step 2: Cold start with ALL network blocked...")
58
+ fn = paw.function("{slug}")
59
+ result = fn("Meeting notes from yesterday - please review")
60
+ print(f" Result: {{result}}")
61
+ print(" STEP 2 PASSED: Function works fully offline!")
62
+ '''.format(slug=SLUG)
63
+
64
+
65
+ def main():
66
+ python = sys.executable
67
+
68
+ print("=" * 60)
69
+ print("PAW Offline Cache Test")
70
+ print("=" * 60)
71
+ print()
72
+
73
+ # Step 1: warm cache
74
+ r = subprocess.run([python, "-c", STEP1_SCRIPT], capture_output=True, text=True)
75
+ print(r.stdout)
76
+ if r.returncode != 0:
77
+ print(f"STEP 1 FAILED:\n{r.stderr}")
78
+ return 1
79
+
80
+ print()
81
+
82
+ # Step 2: cold offline (new process, network blocked)
83
+ r = subprocess.run([python, "-c", STEP2_SCRIPT], capture_output=True, text=True)
84
+ print(r.stdout)
85
+ if r.returncode != 0:
86
+ print(f"STEP 2 FAILED:\n{r.stderr}")
87
+ return 1
88
+
89
+ print()
90
+ print("=" * 60)
91
+ print("ALL PASSED: PAW functions work offline after first use.")
92
+ print("=" * 60)
93
+ return 0
94
+
95
+
96
+ if __name__ == "__main__":
97
+ sys.exit(main())
@@ -68,17 +68,22 @@ const AuthorPage: React.FC = () => {
68
68
  </div>
69
69
  ) : (
70
70
  <div className="space-y-3">
71
- {programs.map(p => (
72
- <Link key={p.id} to={`/hub/${p.id}`}
71
+ {programs.map(p => {
72
+ const aliases = (p as any).aliases as string[] | undefined;
73
+ const hubUrl = aliases?.[0] ? `/hub/${aliases[0]}` : `/hub/${p.id}`;
74
+ return (
75
+ <Link key={p.id} to={hubUrl}
73
76
  className="group block bg-white rounded-xl border border-gray-200 px-4 sm:px-5 py-4 hover:border-gray-300 hover:shadow-sm transition-all">
74
77
  <div className="flex items-start gap-2">
75
78
  <div className="flex-1 min-w-0">
76
79
  <h3 className="font-medium text-gray-900 group-hover:text-blue-600 transition-colors truncate">
77
80
  {p.name || p.spec.slice(0, 60)}
78
81
  </h3>
79
- {p.name && (
82
+ {aliases?.[0] ? (
83
+ <p className="text-xs text-gray-400 font-mono truncate mt-0.5">{aliases[0]}</p>
84
+ ) : p.name ? (
80
85
  <p className="text-sm text-gray-500 truncate mt-0.5">{p.spec}</p>
81
- )}
86
+ ) : null}
82
87
  </div>
83
88
  {p.interpreter && (
84
89
  <span className={`px-1.5 py-0.5 rounded text-[10px] font-medium flex-shrink-0 ${
@@ -107,7 +112,8 @@ const AuthorPage: React.FC = () => {
107
112
  )}
108
113
  </div>
109
114
  </Link>
110
- ))}
115
+ );
116
+ })}
111
117
  </div>
112
118
  )}
113
119
  </div>
@@ -27,6 +27,7 @@ const HubPage: React.FC = () => {
27
27
  const [loading, setLoading] = useState(true);
28
28
  const [loadingMore, setLoadingMore] = useState(false);
29
29
  const [searchQuery, setSearchQuery] = useState('');
30
+ const [searchActive, setSearchActive] = useState(false);
30
31
  const [sortBy, setSortBy] = useState<'recommended' | 'popular' | 'recent' | 'downloads'>('recommended');
31
32
  const [selectedTag, setSelectedTag] = useState<string | null>(null);
32
33
  const [selectedInterpreter, setSelectedInterpreter] = useState<string>('');
@@ -88,6 +89,7 @@ const HubPage: React.FC = () => {
88
89
 
89
90
  const handleSearch = (e: React.FormEvent) => {
90
91
  e.preventDefault();
92
+ setSearchActive(true);
91
93
  setPrograms([]);
92
94
  setPage(1);
93
95
  loadPrograms(1, true);
@@ -95,9 +97,12 @@ const HubPage: React.FC = () => {
95
97
 
96
98
  const clearSearch = () => {
97
99
  setSearchQuery('');
98
- setPrograms([]);
99
- setPage(1);
100
- loadPrograms(1, true, '');
100
+ if (searchActive) {
101
+ setSearchActive(false);
102
+ setPrograms([]);
103
+ setPage(1);
104
+ loadPrograms(1, true, '');
105
+ }
101
106
  };
102
107
 
103
108
  const visibleTags = showAllTags ? allTags : allTags.slice(0, MAX_VISIBLE_TAGS);
@@ -126,21 +131,23 @@ const HubPage: React.FC = () => {
126
131
  </div>
127
132
 
128
133
  {/* Search */}
129
- <form onSubmit={handleSearch} className="relative">
130
- <Search className="absolute left-4 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-400" />
131
- <input
132
- type="text"
133
- value={searchQuery}
134
- onChange={e => setSearchQuery(e.target.value)}
135
- placeholder="Search programs..."
136
- className="w-full pl-12 pr-24 py-3.5 rounded-xl border border-gray-200 bg-white text-gray-900 placeholder-gray-400 focus:ring-2 focus:ring-gray-900 focus:border-gray-900 outline-none transition-all shadow-sm"
137
- />
138
- {searchQuery && (
139
- <button type="button" onClick={clearSearch} className="absolute right-[90px] top-1/2 -translate-y-1/2 p-1 text-gray-400 hover:text-gray-600 transition-colors">
140
- <X className="w-4 h-4" />
141
- </button>
142
- )}
143
- <button type="submit" className="absolute right-2 top-1/2 -translate-y-1/2 px-5 py-2 bg-gray-900 text-white text-sm font-medium rounded-lg hover:bg-gray-800 transition-colors">
134
+ <form onSubmit={handleSearch} className="flex gap-2">
135
+ <div className="relative flex-1">
136
+ <Search className="absolute left-4 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-400" />
137
+ <input
138
+ type="text"
139
+ value={searchQuery}
140
+ onChange={e => setSearchQuery(e.target.value)}
141
+ placeholder="Search programs..."
142
+ className={`w-full pl-12 ${searchQuery ? 'pr-9' : 'pr-4'} py-3.5 rounded-xl border border-gray-200 bg-white text-gray-900 placeholder-gray-400 focus:ring-2 focus:ring-gray-900 focus:border-gray-900 outline-none transition-all shadow-sm`}
143
+ />
144
+ {searchQuery && (
145
+ <button type="button" onClick={clearSearch} className="absolute right-3 top-1/2 -translate-y-1/2 p-0.5 text-gray-300 hover:text-gray-500 transition-colors">
146
+ <X className="w-4 h-4" />
147
+ </button>
148
+ )}
149
+ </div>
150
+ <button type="submit" className="px-6 py-3.5 bg-gray-900 text-white text-sm font-medium rounded-xl hover:bg-gray-800 transition-colors flex-shrink-0">
144
151
  Search
145
152
  </button>
146
153
  </form>
@@ -165,21 +165,24 @@ console.log(result);`;
165
165
  <h1 className="text-2xl font-bold text-gray-900 mb-1">
166
166
  {program.name || program.spec.slice(0, 60)}
167
167
  </h1>
168
- {!slugEditing && primaryAlias && (
168
+ {!slugEditing && (
169
169
  <div className="flex items-center gap-1.5 mb-2">
170
- <code className="text-sm text-gray-400 font-mono">{primaryAlias}</code>
171
- {currentUser && (
172
- <button onClick={() => { setSlugEditing(true); setSlugInput((userSlug || primaryAlias || '').split('/').pop() || ''); }} className="text-gray-300 hover:text-gray-500 transition-colors">
173
- <Pencil className="w-3 h-3" />
170
+ {(userSlug || primaryAlias) ? (
171
+ <>
172
+ <code className="text-sm text-gray-400 font-mono">{userSlug || primaryAlias}</code>
173
+ {currentUser && (
174
+ <button onClick={() => { setSlugEditing(true); setSlugInput((userSlug || primaryAlias || '').split('/').pop() || ''); }} className="text-gray-300 hover:text-gray-500 transition-colors">
175
+ <Pencil className="w-3 h-3" />
176
+ </button>
177
+ )}
178
+ </>
179
+ ) : currentUser ? (
180
+ <button onClick={() => { setSlugEditing(true); setSlugInput(''); }} className="text-xs text-blue-500 hover:text-blue-700 flex items-center gap-1 transition-colors">
181
+ <Pencil className="w-3 h-3" /> Set a handle
174
182
  </button>
175
- )}
183
+ ) : null}
176
184
  </div>
177
185
  )}
178
- {!slugEditing && !primaryAlias && currentUser && (
179
- <button onClick={() => { setSlugEditing(true); setSlugInput(''); }} className="text-xs text-blue-500 hover:text-blue-700 mb-2 flex items-center gap-1 transition-colors">
180
- <Pencil className="w-3 h-3" /> Set a handle
181
- </button>
182
- )}
183
186
  {slugEditing && currentUser && (
184
187
  <div className="flex items-center gap-2 mb-2">
185
188
  <span className="text-sm text-gray-400 font-mono">{currentUser.username}/</span>
@@ -197,17 +197,22 @@ const ProfilePage: React.FC = () => {
197
197
  ) : (
198
198
  <>
199
199
  <div className="space-y-3">
200
- {programs.map(p => (
201
- <Link key={p.id} to={`/hub/${p.id}`}
200
+ {programs.map(p => {
201
+ const aliases = (p as any).aliases as string[] | undefined;
202
+ const hubUrl = aliases?.[0] ? `/hub/${aliases[0]}` : `/hub/${p.id}`;
203
+ return (
204
+ <Link key={p.id} to={hubUrl}
202
205
  className="group block bg-white rounded-xl border border-gray-200 px-4 sm:px-5 py-4 hover:border-gray-300 hover:shadow-sm transition-all">
203
206
  <div className="flex items-start gap-2">
204
207
  <div className="flex-1 min-w-0">
205
208
  <h3 className="font-medium text-gray-900 group-hover:text-blue-600 transition-colors truncate">
206
209
  {p.name || p.spec.slice(0, 60)}
207
210
  </h3>
208
- {p.name && (
211
+ {aliases?.[0] ? (
212
+ <p className="text-xs text-gray-400 font-mono truncate mt-0.5">{aliases[0]}</p>
213
+ ) : p.name ? (
209
214
  <p className="text-sm text-gray-500 truncate mt-0.5">{p.spec}</p>
210
- )}
215
+ ) : null}
211
216
  </div>
212
217
  {p.interpreter && (
213
218
  <span className={`px-1.5 py-0.5 rounded text-[10px] font-medium flex-shrink-0 ${
@@ -243,7 +248,8 @@ const ProfilePage: React.FC = () => {
243
248
  )}
244
249
  </div>
245
250
  </Link>
246
- ))}
251
+ );
252
+ })}
247
253
  </div>
248
254
 
249
255
  {hasMore && (