programasweights 0.2.2__tar.gz → 0.2.3__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.
- {programasweights-0.2.2 → programasweights-0.2.3}/AGENTS.md +21 -42
- {programasweights-0.2.2 → programasweights-0.2.3}/PKG-INFO +1 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/__init__.py +2 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/pyproject.toml +1 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/server/.env.example +0 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/config.py +1 -2
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/main.py +50 -4
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/models/schemas.py +1 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/auth.py +0 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/health.py +8 -3
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/programs.py +4 -3
- {programasweights-0.2.2 → programasweights-0.2.3}/tests/test_sdk.sh +1 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/e2e/full.spec.ts +65 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/index.html +5 -5
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/App.tsx +34 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/AboutPage.tsx +3 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/AgentsPage.tsx +48 -82
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/AuthorPage.tsx +14 -7
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/BrowserPage.tsx +26 -11
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/CasesSection.tsx +8 -5
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/Header.tsx +14 -11
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/HubPage.tsx +5 -5
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/HubProgramPage.tsx +41 -24
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/HubUploadPage.tsx +8 -1
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/MainInterface.tsx +39 -15
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/NavigationHelper.tsx +8 -3
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/ProfilePage.tsx +23 -21
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/SettingsPage.tsx +18 -22
- programasweights-0.2.3/web-app/frontend/src/contexts/AuthContext.tsx +45 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/types/index.ts +2 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/utils/api.ts +0 -8
- programasweights-0.2.3/web-app/frontend/test-results/.last-run.json +4 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.cursor/rules/sdk-publishing.mdc +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.cursor/rules/vllm-deployment.mdc +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.git +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.github/workflows/web-sdk.yml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.gitignore +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.gitmodules +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.hatch_build.toml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/.readthedocs.yaml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/1apple.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/1apple2.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/2apples.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/2apples2.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/3apples.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/3apples2.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/479400.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/4apples.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/4apples2.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/4apples3.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/4apples4.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/5apples.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/6apples.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/8apples.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/9apples.jpg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/CHANGELOG.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/FLOW_SUMMARY.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/LICENSE +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/MANIFEST.in +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/ONNX_MIGRATION_PLAN.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/PREFIX_TOKENS_DESIGN.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/PYPI_README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/TRUNCATION_CHANGES.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/USE_CASES_AND_IDEAS.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/VERIFICATION_USAGE.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/analyze_dataset.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/analyze_lengths.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/code_prompt.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/evaluate_openai_python_code_baseline.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/openai_batch_request.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/prepare_alchemist_data.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/prepare_var_bench_data.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/python_code_sandbox.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/script_evaluation_var_bench.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/script_evalution_evaluation.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/script_evalution_request.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/baselines/script_evalution_statistics.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/benchmark_pytorch_vs_onnx.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/benchmark_user_experience.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/check_dataset.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/combine_datasets.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/compare_datasets.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/compare_old_vs_regen.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/convert_paw_to_svg.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/create_favicon_sizes.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/create_visualization_from_log.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/create_vqa_dataset.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/debug_cache.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/debug_eos_example.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/adr/002-q4_0-adapter-format.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/adr/003-single-spec-field.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/adr/004-compiler-naming.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/adr/005-vllm-hidden-states.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/adr/006-email-api-key-auth.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/advanced/adrs.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/advanced/architecture.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/api-reference/cli.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/api-reference/python-sdk.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/api-reference/rest-api.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/architecture.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/getting-started/first-program.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/getting-started/installation.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/getting-started/naming-programs.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/guide/browser-inference.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/guide/how-it-works.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/guide/local-inference.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/guide/writing-good-specs.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/hub/browsing-programs.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/hub/feedback-cases.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/hub/publishing-programs.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/index.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/docs/requirements.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/estimate_data_gen_cost.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/eval.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/examples/flask_app.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/examples/jupyter_notebook.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/examples/langchain_integration.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/examples/replace_openai.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/export_to_onnx.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/extract_models.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/inspect_data_dirs.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/latest_export.csv +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/log.train.81920.morecategories.extraprefix +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/merge_datasets.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/mkdocs.yml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/paw.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/paw.svg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/process_im2latex_dataset.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/artifacts.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/cache.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/cli.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/client.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/compiler/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/compiler/dummy.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/config.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/convert_peft_to_paw.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/paw_format.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/runtime/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/runtime/interpreter.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/runtime/interpreter_onnx.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights/runtime_llamacpp.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/compiler/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/lora_format.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/runtime/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/runtime/interpreter_lora.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/tests/test_compile_and_run.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/tests/test_lora_format.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/tests/test_training.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/train_lora.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/training/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/run_eval.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/run_training.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/scripts/filter_table_by_length.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/alembic/env.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/alembic/script.py.mako +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/alembic/versions/001_initial_schema.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/alembic/versions/003_fulltext_search_ranking.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/alembic/versions/004_fix_alias_slug_constraint.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/alembic.ini +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/dependencies.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/logging_config.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/middleware/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/middleware/rate_limit.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/models/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/models/database.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/models/orm.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/compile.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/feedback.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/infer.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/routes/models_info.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/auto_tag_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/auto_title_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/compile_provider.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/compile_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/infer_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/search_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/api/services/storage_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/benchmarks/benchmark_api.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/benchmarks/handcrafted_specs.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/benchmarks/last_benchmark_results.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/benchmarks/last_stress_results.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/benchmarks/stress_test.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/compiler_registry.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/provider_configs/gpt2.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/provider_configs/qwen3-0.6b.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/requirements.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/ablation_search.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/backfill_hf_browser_assets.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/backfill_hf_safetensors.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/backfill_interestingness.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/backfill_tags.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/backfill_titles.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/benchmark_gpt2.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/cleanup_storage.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/eval_search.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/evict_cold_programs.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/generate_prefix_cache.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/launch_gpt2_compiler.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/launch_qwen3_compiler.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/patch_vllm.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/restart.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/start_all.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/start_gpt2_services.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/start_provider.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/scripts/start_services.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/conftest.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/test_auth.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/test_compile.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/test_errors.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/test_infer.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/test_integration_gpu.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/test_rate_limit.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/tests/test_storage.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/vllm_models/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/vllm_models/gpt2_lora_patch.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/vllm_models/paw_compiler.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/vllm_models/prepare_checkpoint.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/server/vllm_models/register.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.em_es.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_1spec.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_all_caching.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_apple_count.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_batch_pilot.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_compile.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_e2e.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_execute.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_nspecs.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_one_vs_two_step.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_onnx_correctness.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_onnx_hf_model.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_onnx_hf_with_images.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_paw_format.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/test_thinking_comparison.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/tests/test_offline_cache.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/tests/test_sdk.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/train.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/DATASET_CHANGELOG.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/build_user_bench.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/dry_run_batch.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/filter_test_data.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/generate_specs.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/generate_specs_batch.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/incremental_merge.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/merge_and_upload.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/regenerate_outputs_batch.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/synthesize_data.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/synthesize_data_batch.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/filter_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/filter_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/pairs_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/pairs_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/specs_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/specs_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/specs_user_freeform.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/verify_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates/verify_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/filter_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/filter_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/pairs_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/pairs_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/specs_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/specs_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/verify_system.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/templates_old/verify_user.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/data_generation/verify_test_data.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/datasets/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/datasets/jsonl_text_pairs.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/loops/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/training/loops/prefix_tuning_sft.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/ttt.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/upload_model.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/upload_onnx_to_huggingface.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/upload_onnx_to_huggingface_with_token.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/utils.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/HANDOFF.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/config.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/main.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/middleware/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/middleware/rate_limit.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/models.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/auth_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/case_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/compiler_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/gpt_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/hub_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/image_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/interpreter_service.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/services/sql_manager.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/templates/gpt_test_generation.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/utils/__init__.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/utils/image_placeholders.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/app/utils/program_hash.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/clear_db.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/clear_tables.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/data/programs.db +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/env_example.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/example_images/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/get_data_examples.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/requirements.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/run_server.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_analytics_tables.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_auth_tables.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_cache_tables.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_cases_tables.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_database.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_database_simple.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_db.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_example_images.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/setup_hub_tables.sql +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/backend/test_compilation_cache.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/e2e/helpers.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/e2e/smoke.spec.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/eslint.config.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/package-lock.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/package.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/playwright.config.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/postcss.config.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/apple-touch-icon.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/browser-worker.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/favicon-16x16.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/favicon-32x32.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/paw-192.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/paw-512.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/paw.svg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/react-test.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/test.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/public/vite.svg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/scripts/deploy.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/App.css +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/assets/react.svg +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/CompileSection.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/DocsPage.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/ExamplesInput.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/Footer.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/LandingPage.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/ModelSelector.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/TermsPage.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/TestSection.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/index.css +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/main.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/tailwind.config.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/tsconfig.app.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/tsconfig.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/tsconfig.node.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/vite.config.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/nginx-paw.conf +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/nginx.conf +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/setup_mysql.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/start.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/test_setup.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-app/ttt.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/.gitignore +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/LICENSE +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/__tests__/e2e/browser.spec.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/__tests__/e2e/server.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/__tests__/e2e/start-server.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/__tests__/e2e/test-page.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/__tests__/loader.test.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/__tests__/prompt.test.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/examples/basic.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/package-lock.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/package.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/playwright.config.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/serve.py +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/src/index.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/src/loader.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/src/runtime.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/src/types.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/test-standalone.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/tsconfig.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/vitest.config.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.git +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.gitignore +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.gitmodules +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.npmignore +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/.prettierignore +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/CMakeLists.txt +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/LICENCE +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/README_banner.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/assets/screenshot_0.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/actions.hpp +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/glue.hpp +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/cpp/wllama.cpp +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/basic/index.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/embeddings/index.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/.gitignore +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/README.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/index.html +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/package-lock.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/package.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/config.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/index.css +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/guides/intro-v2.md +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/index.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/package-lock.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/package.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/scripts/build_worker.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/scripts/http_server.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/scripts/post_build.sh +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/cache-manager.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/glue/glue.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/glue/messages.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/index.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/mjs.test.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/model-manager.test.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/model-manager.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/utils.test.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/utils.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/wllama.test.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/wllama.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/worker.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/tsconfig.build.json +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/tsup.config.ts +0 -0
- {programasweights-0.2.2 → programasweights-0.2.3}/web-sdk/wllama/vitest.config.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ProgramAsWeights (PAW)
|
|
2
2
|
|
|
3
|
-
PAW compiles natural language specifications into tiny neural functions that run locally. Each function takes a single text input and returns a single text output. Use
|
|
3
|
+
PAW compiles natural language specifications into tiny neural functions that run locally. Each function takes a single text input and returns a single text output. Use it when you need fuzzy text processing — classification, extraction, format repair, search, triage — that regex can't handle but a full LLM is overkill for.
|
|
4
4
|
|
|
5
5
|
Website: https://programasweights.com
|
|
6
6
|
Docs: https://programasweights.readthedocs.io
|
|
@@ -46,7 +46,7 @@ fn("I love this!") # "positive"
|
|
|
46
46
|
| Inference speed | ~90ms (server) | ~50ms (server) |
|
|
47
47
|
| Runs in browser | No | Yes (must use this compiler) |
|
|
48
48
|
|
|
49
|
-
Default is Standard. Use Compact
|
|
49
|
+
Default is Standard. Use Compact for smaller files or browser deployment.
|
|
50
50
|
|
|
51
51
|
## When to Use PAW
|
|
52
52
|
|
|
@@ -60,9 +60,7 @@ Default is Standard. Use Compact when you need smaller files or browser deployme
|
|
|
60
60
|
|
|
61
61
|
## Writing Good Specs
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
**Structure:** Description + examples. Use `Input: ... Output: ...` format.
|
|
63
|
+
Description + examples. Use `Input: ... Output: ...` format.
|
|
66
64
|
|
|
67
65
|
```python
|
|
68
66
|
fn = paw.compile_and_load("""
|
|
@@ -76,22 +74,16 @@ Output: create
|
|
|
76
74
|
|
|
77
75
|
Input: Remove old backups
|
|
78
76
|
Output: delete
|
|
79
|
-
|
|
80
|
-
Input: What time is it
|
|
81
|
-
Output: other
|
|
82
77
|
""")
|
|
83
78
|
```
|
|
84
79
|
|
|
85
|
-
|
|
86
|
-
- **5-10 examples** is the sweet spot. More helps for ambiguous tasks.
|
|
87
|
-
- For classifiers, add **negative examples** ("Input: ... Output: NONE") to reduce false positives.
|
|
88
|
-
- Explicitly state output constraints: "Return ONLY one of: X, Y, Z"
|
|
89
|
-
- Spec + examples must fit in ~2048 tokens total (~1500 words).
|
|
80
|
+
- State output constraints explicitly if any: "Return ONLY one of: X, Y, Z"
|
|
90
81
|
- Each function is stateless: one input, one output. No conversation history.
|
|
82
|
+
- Write a few test inputs with expected outputs, then try different spec phrasings and pick the one that passes the most.
|
|
91
83
|
|
|
92
84
|
## Browser / JavaScript SDK
|
|
93
85
|
|
|
94
|
-
Programs compiled with `paw-4b-gpt2`
|
|
86
|
+
Programs compiled with `paw-4b-gpt2` run in the browser via WebAssembly.
|
|
95
87
|
|
|
96
88
|
```bash
|
|
97
89
|
npm install @programasweights/web
|
|
@@ -107,7 +99,7 @@ const result = await fn('Urgent: server is down!');
|
|
|
107
99
|
|
|
108
100
|
## Authentication (optional)
|
|
109
101
|
|
|
110
|
-
|
|
102
|
+
Sign in for higher rate limits and program naming. Everything works without it.
|
|
111
103
|
|
|
112
104
|
```bash
|
|
113
105
|
export PAW_API_KEY=paw_sk_...
|
|
@@ -133,36 +125,30 @@ paw login # save API key
|
|
|
133
125
|
`--json` gives structured output. Example:
|
|
134
126
|
|
|
135
127
|
```json
|
|
136
|
-
{"program_id": "a6b454023d41ac9ca845", "slug": null, "status": "ready", "timings": {"total_ms": 2800}}
|
|
128
|
+
{"program_id": "a6b454023d41ac9ca845", "slug": null, "status": "ready", "error": null, "timings": {"total_ms": 2800}}
|
|
137
129
|
```
|
|
138
130
|
|
|
139
131
|
## Full API Reference
|
|
140
132
|
|
|
141
133
|
```python
|
|
142
|
-
# Compile a spec into a neural program
|
|
143
134
|
program = paw.compile(
|
|
144
135
|
spec, # natural language specification (str)
|
|
145
|
-
compiler="paw-4b-qwen3-0.6b",
|
|
146
|
-
slug=None, #
|
|
136
|
+
compiler="paw-4b-qwen3-0.6b",
|
|
137
|
+
slug=None, # URL-safe handle (requires auth)
|
|
147
138
|
public=True, # list on public hub
|
|
148
139
|
)
|
|
149
|
-
# Returns: Program(id
|
|
140
|
+
# Returns: Program(id, slug, status, timings, error)
|
|
150
141
|
|
|
151
|
-
# Load a program for local inference
|
|
152
142
|
fn = paw.function(program) # accepts Program object, hash ID, or slug
|
|
153
|
-
fn = paw.function("a6b454023d41ac9ca845")
|
|
154
|
-
fn = paw.function("da03/my-classifier")
|
|
143
|
+
fn = paw.function("a6b454023d41ac9ca845")
|
|
144
|
+
fn = paw.function("da03/my-classifier")
|
|
155
145
|
|
|
156
|
-
# The callable signature:
|
|
157
146
|
result: str = fn(input_text: str, max_tokens=512, temperature=0.0)
|
|
158
147
|
|
|
159
|
-
# Compile and load in one step
|
|
160
148
|
fn = paw.compile_and_load(spec, compiler="paw-4b-qwen3-0.6b")
|
|
161
149
|
|
|
162
|
-
|
|
163
|
-
programs = paw.list_programs(sort="recent", per_page=20)
|
|
150
|
+
programs = paw.list_programs(sort="recent", per_page=20) # requires auth
|
|
164
151
|
|
|
165
|
-
# Save API key
|
|
166
152
|
paw.login()
|
|
167
153
|
```
|
|
168
154
|
|
|
@@ -171,24 +157,17 @@ paw.login()
|
|
|
171
157
|
| Error | Cause | Fix |
|
|
172
158
|
|-------|-------|-----|
|
|
173
159
|
| `httpx.HTTPStatusError: 404` on download | Program still uploading to CDN | SDK retries automatically. If persistent, recompile. |
|
|
174
|
-
| `httpx.HTTPStatusError: 422` on compile | Spec too short (<10 chars)
|
|
160
|
+
| `httpx.HTTPStatusError: 422` on compile | Spec too short (<10 chars) | Adjust spec length. |
|
|
175
161
|
| `httpx.HTTPStatusError: 429` | Rate limit exceeded | Wait, or sign in for higher limits. |
|
|
176
|
-
| `FileNotFoundError: No prompt_template.txt` | Program not cached and download failed | Check network; the program may not exist. |
|
|
177
162
|
|
|
178
|
-
## Performance
|
|
163
|
+
## Performance
|
|
179
164
|
|
|
180
|
-
- **First call
|
|
181
|
-
- **Base model shared
|
|
182
|
-
- **Thread-safe
|
|
183
|
-
- **
|
|
184
|
-
- **
|
|
185
|
-
- **Offline**: After first download, functions work without internet.
|
|
165
|
+
- **First call** ~500ms (loads base model). Subsequent calls ~50-90ms.
|
|
166
|
+
- **Base model shared** across functions. Each LoRA adapter adds ~22 MB.
|
|
167
|
+
- **Thread-safe** and **blocking**.
|
|
168
|
+
- **Cache**: `~/.cache/programasweights/`. Override with `PAW_CACHE_DIR`.
|
|
169
|
+
- **Offline** after first download.
|
|
186
170
|
|
|
187
171
|
## Browse Programs
|
|
188
172
|
|
|
189
173
|
https://programasweights.com/hub
|
|
190
|
-
|
|
191
|
-
## Add PAW to Your Project
|
|
192
|
-
|
|
193
|
-
Copy this file into your project as AGENTS.md:
|
|
194
|
-
https://programasweights.com/agents
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: programasweights
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
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
|
|
@@ -21,8 +21,9 @@ API reference:
|
|
|
21
21
|
paw.api_url Server URL (default: https://programasweights.com)
|
|
22
22
|
paw.api_key API key (set via login() or PAW_API_KEY env var)
|
|
23
23
|
"""
|
|
24
|
+
from __future__ import annotations
|
|
24
25
|
|
|
25
|
-
__version__ = "0.2.
|
|
26
|
+
__version__ = "0.2.3"
|
|
26
27
|
|
|
27
28
|
from .config import get_api_url, get_api_key, set_api_key
|
|
28
29
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "programasweights"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.3"
|
|
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"
|
|
@@ -50,10 +50,9 @@ class Settings(BaseSettings):
|
|
|
50
50
|
LOG_LEVEL: str = "INFO"
|
|
51
51
|
LOG_FORMAT: str = "json"
|
|
52
52
|
|
|
53
|
-
# Server
|
|
53
|
+
# Server (single process: sessions and compile jobs are in-memory)
|
|
54
54
|
HOST: str = "0.0.0.0"
|
|
55
55
|
PORT: int = 8000
|
|
56
|
-
WORKERS: int = 4
|
|
57
56
|
|
|
58
57
|
# CORS
|
|
59
58
|
CORS_ORIGINS: list[str] = [
|
|
@@ -16,6 +16,8 @@ from redis.asyncio import Redis
|
|
|
16
16
|
|
|
17
17
|
from api.config import get_settings
|
|
18
18
|
from api.logging_config import configure_logging, request_id_ctx
|
|
19
|
+
from collections import deque
|
|
20
|
+
|
|
19
21
|
from api.middleware.rate_limit import (
|
|
20
22
|
RateLimiter,
|
|
21
23
|
identifier_for_request,
|
|
@@ -29,6 +31,31 @@ gpu_semaphore = asyncio.Semaphore(1)
|
|
|
29
31
|
|
|
30
32
|
_RATE_LIMITED_PATHS = {"/api/v1/compile", "/api/v1/infer", "/api/v1/feedback"}
|
|
31
33
|
|
|
34
|
+
_FALLBACK_LIMITS = {"compile": 13000, "infer": 5700}
|
|
35
|
+
_FALLBACK_WINDOW = 3600
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class _FallbackLimiter:
|
|
39
|
+
"""In-memory global rate limiter used when Redis is unavailable."""
|
|
40
|
+
|
|
41
|
+
def __init__(self):
|
|
42
|
+
self._windows: dict[str, deque] = {
|
|
43
|
+
"compile": deque(),
|
|
44
|
+
"infer": deque(),
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
def check(self, endpoint: str) -> bool:
|
|
48
|
+
key = "compile" if "compile" in endpoint else "infer"
|
|
49
|
+
now = time.time()
|
|
50
|
+
window = self._windows[key]
|
|
51
|
+
cutoff = now - _FALLBACK_WINDOW
|
|
52
|
+
while window and window[0] < cutoff:
|
|
53
|
+
window.popleft()
|
|
54
|
+
if len(window) >= _FALLBACK_LIMITS[key]:
|
|
55
|
+
return False
|
|
56
|
+
window.append(now)
|
|
57
|
+
return True
|
|
58
|
+
|
|
32
59
|
|
|
33
60
|
def create_app() -> FastAPI:
|
|
34
61
|
settings = get_settings()
|
|
@@ -45,13 +72,13 @@ def create_app() -> FastAPI:
|
|
|
45
72
|
openapi_url="/api/openapi.json",
|
|
46
73
|
)
|
|
47
74
|
|
|
48
|
-
# Redis + rate limiter (attached to app state for access in routes)
|
|
49
75
|
redis_client: Redis | None = None
|
|
50
76
|
rate_limiter: RateLimiter | None = None
|
|
77
|
+
fallback_limiter: _FallbackLimiter | None = None
|
|
51
78
|
|
|
52
79
|
@app.on_event("startup")
|
|
53
80
|
async def startup_redis():
|
|
54
|
-
nonlocal redis_client, rate_limiter
|
|
81
|
+
nonlocal redis_client, rate_limiter, fallback_limiter
|
|
55
82
|
try:
|
|
56
83
|
redis_client = Redis.from_url(
|
|
57
84
|
settings.REDIS_URL, decode_responses=True, socket_connect_timeout=5,
|
|
@@ -60,11 +87,14 @@ def create_app() -> FastAPI:
|
|
|
60
87
|
rate_limiter = RateLimiter(redis_client)
|
|
61
88
|
app.state.redis = redis_client
|
|
62
89
|
app.state.rate_limiter = rate_limiter
|
|
90
|
+
app.state.redis_available = True
|
|
63
91
|
logger.info("redis_connected", url=settings.REDIS_URL)
|
|
64
92
|
except Exception:
|
|
65
|
-
logger.warning("redis_unavailable", url=settings.REDIS_URL)
|
|
93
|
+
logger.warning("redis_unavailable, using in-memory global fallback limiter", url=settings.REDIS_URL)
|
|
66
94
|
app.state.redis = None
|
|
67
95
|
app.state.rate_limiter = None
|
|
96
|
+
app.state.redis_available = False
|
|
97
|
+
fallback_limiter = _FallbackLimiter()
|
|
68
98
|
|
|
69
99
|
@app.on_event("shutdown")
|
|
70
100
|
async def shutdown_redis():
|
|
@@ -90,7 +120,23 @@ def create_app() -> FastAPI:
|
|
|
90
120
|
token = request_id_ctx.set(rid)
|
|
91
121
|
try:
|
|
92
122
|
# Rate limiting for /compile and /infer
|
|
93
|
-
if request.method == "POST" and request.url.path in _RATE_LIMITED_PATHS and rate_limiter is not None:
|
|
123
|
+
if request.method == "POST" and request.url.path in _RATE_LIMITED_PATHS and rate_limiter is None and fallback_limiter is not None:
|
|
124
|
+
endpoint = "compile" if "compile" in request.url.path else "infer"
|
|
125
|
+
if not fallback_limiter.check(endpoint):
|
|
126
|
+
logger.info("fallback_rate_limited", endpoint=endpoint)
|
|
127
|
+
return JSONResponse(
|
|
128
|
+
status_code=429,
|
|
129
|
+
content={
|
|
130
|
+
"error": "rate_limit_exceeded",
|
|
131
|
+
"message": "Server is busy. Please try again shortly.",
|
|
132
|
+
"request_id": rid,
|
|
133
|
+
},
|
|
134
|
+
headers={"Retry-After": "10"},
|
|
135
|
+
)
|
|
136
|
+
request.state.has_concurrent_lock = False
|
|
137
|
+
request.state.rate_limit_result = None
|
|
138
|
+
|
|
139
|
+
elif request.method == "POST" and request.url.path in _RATE_LIMITED_PATHS and rate_limiter is not None:
|
|
94
140
|
from api.dependencies import get_current_user
|
|
95
141
|
from api.models.database import get_db
|
|
96
142
|
|
|
@@ -132,7 +132,6 @@ async def github_callback(code: str, state: str, request: Request, db: AsyncSess
|
|
|
132
132
|
"email": email,
|
|
133
133
|
"avatar_url": avatar_url,
|
|
134
134
|
"tier": "github",
|
|
135
|
-
"github_access_token": access_token,
|
|
136
135
|
"created_at": time.time(),
|
|
137
136
|
}
|
|
138
137
|
_sessions[session_token] = user_info
|
|
@@ -4,7 +4,7 @@ Health check endpoint.
|
|
|
4
4
|
|
|
5
5
|
import time
|
|
6
6
|
|
|
7
|
-
from fastapi import APIRouter
|
|
7
|
+
from fastapi import APIRouter, Request
|
|
8
8
|
|
|
9
9
|
from api.models.schemas import HealthResponse
|
|
10
10
|
|
|
@@ -14,11 +14,16 @@ _start_time = time.time()
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
@router.get("/health", response_model=HealthResponse)
|
|
17
|
-
async def health_check():
|
|
17
|
+
async def health_check(request: Request):
|
|
18
|
+
warnings = []
|
|
19
|
+
if not getattr(request.app.state, "redis_available", True):
|
|
20
|
+
warnings.append("redis_unavailable: using in-memory global rate limit fallback")
|
|
21
|
+
|
|
18
22
|
return HealthResponse(
|
|
19
|
-
status="healthy",
|
|
23
|
+
status="healthy" if not warnings else "degraded",
|
|
20
24
|
version="0.2.0",
|
|
21
25
|
gpu_services={},
|
|
22
26
|
queue_depth=0,
|
|
23
27
|
uptime_s=time.time() - _start_time,
|
|
28
|
+
warnings=warnings,
|
|
24
29
|
)
|
|
@@ -146,9 +146,10 @@ async def list_programs(
|
|
|
146
146
|
if search_term:
|
|
147
147
|
try:
|
|
148
148
|
from redis.asyncio import Redis as AsyncRedis
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
await
|
|
149
|
+
settings = get_settings()
|
|
150
|
+
_redis = AsyncRedis.from_url(settings.REDIS_URL, decode_responses=True, socket_connect_timeout=1)
|
|
151
|
+
queue_depth = int(await _redis.get("paw:compile_queue_depth") or 0)
|
|
152
|
+
await _redis.aclose()
|
|
152
153
|
server_idle = queue_depth <= 1
|
|
153
154
|
except Exception:
|
|
154
155
|
server_idle = True
|
|
@@ -39,7 +39,7 @@ PY="$VENV_DIR/bin/python"
|
|
|
39
39
|
# Step 2: Install from PyPI (timed)
|
|
40
40
|
echo ">>> Installing programasweights from PyPI..."
|
|
41
41
|
START=$(date +%s)
|
|
42
|
-
$PIP install --no-cache-dir --upgrade
|
|
42
|
+
$PIP install --no-cache-dir --upgrade programasweights --extra-index-url "$EXTRA_INDEX" -q 2>&1
|
|
43
43
|
END=$(date +%s)
|
|
44
44
|
INSTALL_TIME=$((END - START))
|
|
45
45
|
echo " Install time: ${INSTALL_TIME}s"
|
|
@@ -794,3 +794,68 @@ test.describe('Slug and naming', () => {
|
|
|
794
794
|
expect(count).toBeGreaterThanOrEqual(0);
|
|
795
795
|
});
|
|
796
796
|
});
|
|
797
|
+
|
|
798
|
+
// ---------------------------------------------------------------------------
|
|
799
|
+
// Auth and permissions (signed-out)
|
|
800
|
+
// ---------------------------------------------------------------------------
|
|
801
|
+
|
|
802
|
+
test.describe('Auth: signed-out behavior', () => {
|
|
803
|
+
test('profile redirects to home when not signed in', async ({ page }) => {
|
|
804
|
+
await page.goto('/profile');
|
|
805
|
+
await page.waitForURL('/', { timeout: 10_000 });
|
|
806
|
+
expect(page.url()).toMatch(/\/$/);
|
|
807
|
+
});
|
|
808
|
+
|
|
809
|
+
test('settings redirects to home when not signed in', async ({ page }) => {
|
|
810
|
+
await page.goto('/settings');
|
|
811
|
+
await page.waitForURL('/', { timeout: 10_000 });
|
|
812
|
+
expect(page.url()).toMatch(/\/$/);
|
|
813
|
+
});
|
|
814
|
+
|
|
815
|
+
test('hub program page does not show slug edit for anonymous users', async ({ page }) => {
|
|
816
|
+
await page.goto(`/hub/${KNOWN_PROGRAM_ID}`);
|
|
817
|
+
await waitForPageLoad(page);
|
|
818
|
+
const pencil = page.locator('button:has(svg.lucide-pencil)');
|
|
819
|
+
const bookmark = page.locator('button:has(svg.lucide-bookmark)');
|
|
820
|
+
await expect(pencil).toHaveCount(0);
|
|
821
|
+
await expect(bookmark).toHaveCount(0);
|
|
822
|
+
});
|
|
823
|
+
|
|
824
|
+
test('case delete buttons not shown for anonymous users', async ({ page }) => {
|
|
825
|
+
await page.goto(`/hub/${KNOWN_PROGRAM_ID}`);
|
|
826
|
+
await waitForPageLoad(page);
|
|
827
|
+
const trash = page.locator('button:has(svg.lucide-trash-2)');
|
|
828
|
+
await expect(trash).toHaveCount(0);
|
|
829
|
+
});
|
|
830
|
+
|
|
831
|
+
test('header does not flash sign-in button then switch', async ({ page }) => {
|
|
832
|
+
await page.goto('/');
|
|
833
|
+
const signIn = page.locator('a[href*="auth/github"]').first();
|
|
834
|
+
await expect(signIn).toBeVisible({ timeout: 10_000 });
|
|
835
|
+
});
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
// ---------------------------------------------------------------------------
|
|
839
|
+
// Mobile menu route-change close
|
|
840
|
+
// ---------------------------------------------------------------------------
|
|
841
|
+
|
|
842
|
+
test.describe('Mobile menu closes on navigation', () => {
|
|
843
|
+
test.use({ viewport: { width: 375, height: 812 } });
|
|
844
|
+
|
|
845
|
+
test('mobile menu closes when navigating via logo', async ({ page }) => {
|
|
846
|
+
await page.goto('/playground');
|
|
847
|
+
await waitForPageLoad(page);
|
|
848
|
+
|
|
849
|
+
const menuBtn = page.locator('button[aria-label*="menu"]').first();
|
|
850
|
+
if (await menuBtn.isVisible()) {
|
|
851
|
+
await menuBtn.click();
|
|
852
|
+
await page.waitForTimeout(300);
|
|
853
|
+
const menu = page.locator('nav.space-y-1').first();
|
|
854
|
+
await expect(menu).toBeVisible();
|
|
855
|
+
|
|
856
|
+
await page.locator('a[href="/"]').first().click();
|
|
857
|
+
await page.waitForTimeout(500);
|
|
858
|
+
await expect(menu).not.toBeVisible();
|
|
859
|
+
}
|
|
860
|
+
});
|
|
861
|
+
});
|
|
@@ -14,20 +14,20 @@
|
|
|
14
14
|
|
|
15
15
|
<!-- App Info -->
|
|
16
16
|
<title>PAW — Define functions in English, run them locally</title>
|
|
17
|
-
<meta name="description" content="ProgramAsWeights compiles natural language specs into tiny neural programs that run
|
|
17
|
+
<meta name="description" content="ProgramAsWeights compiles natural language specs into tiny neural programs that run on your machine. Once compiled, they work as regular Python functions." />
|
|
18
18
|
|
|
19
19
|
<!-- Open Graph / Social Media -->
|
|
20
20
|
<meta property="og:title" content="PAW — Define functions in English, run them locally" />
|
|
21
|
-
<meta property="og:description" content="Compile natural language into tiny neural programs.
|
|
22
|
-
<meta property="og:image" content="/paw-192.png" />
|
|
21
|
+
<meta property="og:description" content="Compile natural language specs into tiny neural programs that run on your machine. Once compiled, they work as regular Python functions." />
|
|
22
|
+
<meta property="og:image" content="https://programasweights.com/paw-192.png" />
|
|
23
23
|
<meta property="og:type" content="website" />
|
|
24
24
|
<meta property="og:site_name" content="ProgramAsWeights" />
|
|
25
25
|
|
|
26
26
|
<!-- Twitter Card -->
|
|
27
27
|
<meta name="twitter:card" content="summary_large_image" />
|
|
28
28
|
<meta name="twitter:title" content="PAW — Define functions in English, run them locally" />
|
|
29
|
-
<meta name="twitter:description" content="Compile natural language into tiny neural programs.
|
|
30
|
-
<meta name="twitter:image" content="/paw-192.png" />
|
|
29
|
+
<meta name="twitter:description" content="Compile natural language specs into tiny neural programs that run on your machine. Once compiled, they work as regular Python functions." />
|
|
30
|
+
<meta name="twitter:image" content="https://programasweights.com/paw-192.png" />
|
|
31
31
|
|
|
32
32
|
<!-- Theme Color -->
|
|
33
33
|
<meta name="theme-color" content="#111827" />
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BrowserRouter as Router, Routes, Route, Navigate, useLocation } from 'react-router-dom';
|
|
2
|
-
import { useEffect } from 'react';
|
|
2
|
+
import { Component, useEffect } from 'react';
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
3
4
|
import { Toaster } from 'react-hot-toast';
|
|
5
|
+
import { AuthProvider } from './contexts/AuthContext';
|
|
4
6
|
import MainInterface from './components/MainInterface';
|
|
5
7
|
import Header from './components/Header';
|
|
6
8
|
import LandingPage from './components/LandingPage';
|
|
@@ -26,9 +28,38 @@ function ScrollToTop() {
|
|
|
26
28
|
return null;
|
|
27
29
|
}
|
|
28
30
|
|
|
31
|
+
class ErrorBoundary extends Component<{ children: ReactNode }, { hasError: boolean }> {
|
|
32
|
+
state = { hasError: false };
|
|
33
|
+
static getDerivedStateFromError() { return { hasError: true }; }
|
|
34
|
+
componentDidCatch(error: unknown, info: unknown) {
|
|
35
|
+
console.error('Uncaught render error:', error, info);
|
|
36
|
+
}
|
|
37
|
+
render() {
|
|
38
|
+
if (this.state.hasError) {
|
|
39
|
+
return (
|
|
40
|
+
<div className="min-h-screen flex items-center justify-center bg-gray-50">
|
|
41
|
+
<div className="text-center max-w-md px-6">
|
|
42
|
+
<h1 className="text-2xl font-bold text-gray-900 mb-3">Something went wrong</h1>
|
|
43
|
+
<p className="text-gray-600 mb-6">An unexpected error occurred. Please try reloading the page.</p>
|
|
44
|
+
<button
|
|
45
|
+
onClick={() => window.location.reload()}
|
|
46
|
+
className="px-5 py-2.5 bg-gray-900 text-white rounded-lg hover:bg-gray-800 transition-colors text-sm font-medium"
|
|
47
|
+
>
|
|
48
|
+
Reload page
|
|
49
|
+
</button>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
return this.props.children;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
29
58
|
function App() {
|
|
30
59
|
return (
|
|
60
|
+
<ErrorBoundary>
|
|
31
61
|
<Router>
|
|
62
|
+
<AuthProvider>
|
|
32
63
|
<ScrollToTop />
|
|
33
64
|
<div className="min-h-screen bg-gray-50">
|
|
34
65
|
<Toaster
|
|
@@ -70,7 +101,9 @@ function App() {
|
|
|
70
101
|
<Footer />
|
|
71
102
|
<NavigationHelper />
|
|
72
103
|
</div>
|
|
104
|
+
</AuthProvider>
|
|
73
105
|
</Router>
|
|
106
|
+
</ErrorBoundary>
|
|
74
107
|
);
|
|
75
108
|
}
|
|
76
109
|
|
{programasweights-0.2.2 → programasweights-0.2.3}/web-app/frontend/src/components/AboutPage.tsx
RENAMED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Link } from 'react-router-dom';
|
|
2
|
+
import { Helmet } from 'react-helmet-async';
|
|
2
3
|
import { Code, Zap, Shield, Users, BookOpen, Github, ExternalLink, Package, Terminal, Globe } from 'lucide-react';
|
|
3
4
|
|
|
4
5
|
const AboutPage: React.FC = () => {
|
|
5
6
|
return (
|
|
6
7
|
<div className="max-w-4xl mx-auto space-y-12">
|
|
8
|
+
<Helmet><title>About — PAW</title></Helmet>
|
|
7
9
|
{/* Hero */}
|
|
8
10
|
<div className="text-center">
|
|
9
11
|
<div className="flex items-center justify-center w-16 h-16 bg-gray-900 rounded-2xl mx-auto mb-6">
|
|
@@ -81,7 +83,7 @@ const AboutPage: React.FC = () => {
|
|
|
81
83
|
</h2>
|
|
82
84
|
<div className="grid md:grid-cols-2 gap-6">
|
|
83
85
|
{[
|
|
84
|
-
{ icon: Shield, title: 'Private by default', desc: '
|
|
86
|
+
{ icon: Shield, title: 'Private by default', desc: 'Programs run locally after download. Your data stays on your machine during local inference.' },
|
|
85
87
|
{ icon: Zap, title: 'Deterministic', desc: 'Greedy decoding means identical input always produces identical output.' },
|
|
86
88
|
{ icon: Package, title: 'Tiny programs', desc: 'Programs are small LoRA adapters (5-22 MB). The interpreter is a lightweight pretrained model (105-594 MB, downloaded once).' },
|
|
87
89
|
{ icon: Code, title: 'Python-native', desc: 'pip install, import, call. No Docker, no servers, no configuration.' },
|