programasweights 0.1.0.dev7__tar.gz → 0.1.0.dev8__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.1.0.dev8/.cursor/rules/vllm-deployment.mdc +106 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/AGENTS.md +25 -10
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/PKG-INFO +4 -3
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/PYPI_README.md +3 -2
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/api-reference/rest-api.md +11 -7
- programasweights-0.1.0.dev8/docs/getting-started/naming-programs.md +78 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/guide/browser-inference.md +3 -3
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/guide/how-it-works.md +1 -1
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/index.md +1 -1
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/__init__.py +21 -11
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/cache.py +35 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/cli.py +45 -3
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/client.py +10 -3
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/pyproject.toml +1 -1
- programasweights-0.1.0.dev8/server/alembic/versions/003_fulltext_search_ranking.py +41 -0
- programasweights-0.1.0.dev8/server/alembic/versions/004_fix_alias_slug_constraint.py +49 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/config.py +7 -5
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/main.py +3 -2
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/models/orm.py +25 -3
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/models/schemas.py +14 -5
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/routes/auth.py +2 -5
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/routes/compile.py +33 -2
- programasweights-0.1.0.dev8/server/api/routes/feedback.py +45 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/routes/infer.py +25 -7
- programasweights-0.1.0.dev8/server/api/routes/programs.py +691 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/services/auto_tag_service.py +1 -1
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/services/auto_title_service.py +1 -1
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/services/compile_provider.py +119 -20
- programasweights-0.1.0.dev8/server/api/services/search_service.py +152 -0
- programasweights-0.1.0.dev8/server/api/services/storage_service.py +239 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/benchmarks/last_benchmark_results.json +123 -123
- programasweights-0.1.0.dev8/server/benchmarks/last_stress_results.json +250 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/benchmarks/stress_test.py +13 -14
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/compiler_registry.json +5 -5
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/provider_configs/gpt2.json +4 -3
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/provider_configs/qwen3-0.6b.json +1 -0
- programasweights-0.1.0.dev8/server/scripts/ablation_search.py +221 -0
- programasweights-0.1.0.dev8/server/scripts/backfill_hf_safetensors.py +95 -0
- programasweights-0.1.0.dev8/server/scripts/backfill_interestingness.py +111 -0
- programasweights-0.1.0.dev8/server/scripts/eval_search.py +211 -0
- programasweights-0.1.0.dev8/server/scripts/evict_cold_programs.py +40 -0
- programasweights-0.1.0.dev8/server/scripts/launch_gpt2_compiler.py +32 -0
- programasweights-0.1.0.dev8/server/scripts/launch_qwen3_compiler.py +32 -0
- programasweights-0.1.0.dev8/server/scripts/restart.sh +23 -0
- programasweights-0.1.0.dev8/server/scripts/start_all.sh +193 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/start_provider.sh +1 -1
- programasweights-0.1.0.dev8/training/data_generation/build_user_bench.py +487 -0
- programasweights-0.1.0.dev8/web-app/frontend/e2e/full.spec.ts +798 -0
- programasweights-0.1.0.dev8/web-app/frontend/e2e/helpers.ts +14 -0
- programasweights-0.1.0.dev8/web-app/frontend/e2e/smoke.spec.ts +117 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/package-lock.json +64 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/package.json +5 -1
- programasweights-0.1.0.dev8/web-app/frontend/playwright.config.ts +17 -0
- programasweights-0.1.0.dev8/web-app/frontend/scripts/deploy.sh +43 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/App.tsx +5 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/AboutPage.tsx +42 -11
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/AgentsPage.tsx +5 -5
- programasweights-0.1.0.dev8/web-app/frontend/src/components/AuthorPage.tsx +117 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/BrowserPage.tsx +230 -94
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/CasesSection.tsx +10 -2
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/DocsPage.tsx +4 -4
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/Footer.tsx +2 -1
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/Header.tsx +9 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/HubPage.tsx +79 -40
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/HubProgramPage.tsx +142 -50
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/LandingPage.tsx +15 -16
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/MainInterface.tsx +11 -24
- programasweights-0.1.0.dev8/web-app/frontend/src/components/NavigationHelper.tsx +334 -0
- programasweights-0.1.0.dev8/web-app/frontend/src/components/ProfilePage.tsx +268 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/types/index.ts +5 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/utils/api.ts +25 -1
- programasweights-0.1.0.dev8/web-app/frontend/test-results/.last-run.json +4 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/src/index.ts +4 -3
- programasweights-0.1.0.dev7/.cursor/rules/vllm-deployment.mdc +0 -108
- programasweights-0.1.0.dev7/docs/Makefile +0 -20
- programasweights-0.1.0.dev7/docs/api-reference.rst +0 -180
- programasweights-0.1.0.dev7/docs/conf.py +0 -27
- programasweights-0.1.0.dev7/docs/examples/evaluation-tasks.rst +0 -206
- programasweights-0.1.0.dev7/docs/getting-started/naming-programs.md +0 -52
- programasweights-0.1.0.dev7/docs/index.rst +0 -73
- programasweights-0.1.0.dev7/docs/installation.rst +0 -65
- programasweights-0.1.0.dev7/docs/make.bat +0 -35
- programasweights-0.1.0.dev7/docs/quickstart.rst +0 -120
- programasweights-0.1.0.dev7/docs/using-pretrained.rst +0 -223
- programasweights-0.1.0.dev7/server/api/routes/programs.py +0 -413
- programasweights-0.1.0.dev7/server/api/services/storage_service.py +0 -146
- programasweights-0.1.0.dev7/server/benchmarks/last_stress_results.json +0 -92
- programasweights-0.1.0.dev7/web-app/frontend/src/components/PricingPage.tsx +0 -192
- programasweights-0.1.0.dev7/web-app/frontend/src/components/ProfilePage.tsx +0 -102
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/.git +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/.github/workflows/web-sdk.yml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/.gitignore +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/.gitmodules +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/.hatch_build.toml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/.readthedocs.yaml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/1apple.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/1apple2.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/2apples.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/2apples2.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/3apples.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/3apples2.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/479400.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/4apples.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/4apples2.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/4apples3.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/4apples4.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/5apples.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/6apples.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/8apples.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/9apples.jpg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/FLOW_SUMMARY.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/MANIFEST.in +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/ONNX_MIGRATION_PLAN.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/PREFIX_TOKENS_DESIGN.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/TRUNCATION_CHANGES.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/USE_CASES_AND_IDEAS.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/VERIFICATION_USAGE.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/analyze_dataset.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/analyze_lengths.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/code_prompt.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/evaluate_openai_python_code_baseline.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/openai_batch_request.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/prepare_alchemist_data.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/prepare_var_bench_data.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/python_code_sandbox.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/script_evaluation_var_bench.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/script_evalution_evaluation.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/script_evalution_request.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/baselines/script_evalution_statistics.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/benchmark_pytorch_vs_onnx.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/benchmark_user_experience.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/check_dataset.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/combine_datasets.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/compare_datasets.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/compare_old_vs_regen.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/convert_paw_to_svg.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/create_favicon_sizes.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/create_visualization_from_log.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/create_vqa_dataset.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/debug_cache.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/debug_eos_example.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/adr/002-q4_0-adapter-format.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/adr/003-single-spec-field.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/adr/004-compiler-naming.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/adr/005-vllm-hidden-states.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/adr/006-email-api-key-auth.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/advanced/adrs.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/advanced/architecture.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/api-reference/cli.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/api-reference/python-sdk.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/architecture.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/getting-started/first-program.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/getting-started/installation.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/guide/local-inference.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/guide/writing-good-specs.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/hub/browsing-programs.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/hub/feedback-cases.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/hub/publishing-programs.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/docs/requirements.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/estimate_data_gen_cost.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/eval.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/examples/flask_app.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/examples/jupyter_notebook.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/examples/langchain_integration.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/examples/replace_openai.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/export_to_onnx.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/extract_models.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/inspect_data_dirs.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/latest_export.csv +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/log.train.81920.morecategories.extraprefix +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/merge_datasets.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/mkdocs.yml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/paw.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/paw.svg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/process_im2latex_dataset.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/artifacts.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/compiler/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/compiler/dummy.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/config.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/convert_peft_to_paw.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/paw_format.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/runtime/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/runtime/interpreter.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/runtime/interpreter_onnx.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights/runtime_llamacpp.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/compiler/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/lora_format.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/runtime/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/runtime/interpreter_lora.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/tests/test_compile_and_run.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/tests/test_lora_format.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/tests/test_training.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/train_lora.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/training/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/run_eval.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/run_training.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/scripts/filter_table_by_length.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/.env.example +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/alembic/env.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/alembic/script.py.mako +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/alembic/versions/001_initial_schema.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/alembic.ini +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/dependencies.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/logging_config.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/middleware/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/middleware/rate_limit.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/models/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/models/database.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/routes/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/routes/health.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/routes/models_info.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/services/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/services/compile_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/api/services/infer_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/benchmarks/benchmark_api.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/benchmarks/handcrafted_specs.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/requirements.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/backfill_hf_browser_assets.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/backfill_tags.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/backfill_titles.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/benchmark_gpt2.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/cleanup_storage.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/generate_prefix_cache.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/patch_vllm.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/start_gpt2_services.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/scripts/start_services.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/conftest.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/test_auth.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/test_compile.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/test_errors.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/test_infer.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/test_integration_gpu.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/test_rate_limit.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/tests/test_storage.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/vllm_models/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/vllm_models/gpt2_lora_patch.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/vllm_models/paw_compiler.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/vllm_models/prepare_checkpoint.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/server/vllm_models/register.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.em_es.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_1spec.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_all_caching.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_apple_count.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_batch_pilot.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_compile.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_e2e.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_execute.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_nspecs.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_one_vs_two_step.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_onnx_correctness.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_onnx_hf_model.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_onnx_hf_with_images.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_paw_format.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/test_thinking_comparison.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/tests/test_programasweights.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/train.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/DATASET_CHANGELOG.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/dry_run_batch.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/filter_test_data.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/generate_specs.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/generate_specs_batch.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/incremental_merge.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/merge_and_upload.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/regenerate_outputs_batch.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/synthesize_data.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/synthesize_data_batch.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/filter_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/filter_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/pairs_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/pairs_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/specs_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/specs_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/specs_user_freeform.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/verify_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates/verify_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/filter_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/filter_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/pairs_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/pairs_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/specs_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/specs_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/verify_system.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/templates_old/verify_user.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/data_generation/verify_test_data.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/datasets/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/datasets/jsonl_text_pairs.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/loops/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/training/loops/prefix_tuning_sft.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/ttt.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/upload_model.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/upload_onnx_to_huggingface.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/upload_onnx_to_huggingface_with_token.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/utils.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/HANDOFF.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/config.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/main.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/middleware/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/middleware/rate_limit.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/models.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/auth_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/case_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/compiler_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/gpt_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/hub_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/image_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/interpreter_service.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/services/sql_manager.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/templates/gpt_test_generation.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/utils/__init__.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/utils/image_placeholders.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/app/utils/program_hash.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/clear_db.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/clear_tables.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/data/programs.db +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/env_example.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/example_images/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/get_data_examples.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/requirements.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/run_server.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_analytics_tables.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_auth_tables.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_cache_tables.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_cases_tables.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_database.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_database_simple.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_db.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_example_images.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/setup_hub_tables.sql +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/backend/test_compilation_cache.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/eslint.config.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/index.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/postcss.config.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/apple-touch-icon.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/browser-worker.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/favicon-16x16.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/favicon-32x32.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/paw-192.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/paw-512.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/paw.svg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/react-test.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/test.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/public/vite.svg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/App.css +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/assets/react.svg +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/CompileSection.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/ExamplesInput.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/HubUploadPage.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/ModelSelector.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/SettingsPage.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/TermsPage.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/components/TestSection.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/index.css +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/src/main.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/tailwind.config.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/tsconfig.app.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/tsconfig.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/tsconfig.node.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/frontend/vite.config.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/nginx-paw.conf +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/nginx.conf +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/setup_mysql.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/start.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/test_setup.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-app/ttt.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/.gitignore +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/__tests__/loader.test.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/__tests__/prompt.test.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/examples/basic.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/package-lock.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/package.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/serve.py +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/src/loader.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/src/runtime.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/src/types.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/test-standalone.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/tsconfig.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/vitest.config.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.git +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.gitignore +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.gitmodules +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.npmignore +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/.prettierignore +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/CMakeLists.txt +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/LICENCE +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/README_banner.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/assets/screenshot_0.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/actions.hpp +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/glue.hpp +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/cpp/wllama.cpp +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/basic/index.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/embeddings/index.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/.gitignore +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/README.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/index.html +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/package-lock.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/package.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/config.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/index.css +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/guides/intro-v2.md +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/index.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/package-lock.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/package.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/scripts/build_worker.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/scripts/http_server.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/scripts/post_build.sh +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/cache-manager.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/glue/glue.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/glue/messages.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/index.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/mjs.test.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/model-manager.test.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/model-manager.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/utils.test.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/utils.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/wllama.test.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/wllama.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/worker.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/tsconfig.build.json +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/tsup.config.ts +0 -0
- {programasweights-0.1.0.dev7 → programasweights-0.1.0.dev8}/web-sdk/wllama/vitest.config.ts +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: vLLM deployment rules and known issues for PAW servers
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# vLLM Deployment Rules
|
|
7
|
+
|
|
8
|
+
## Server: 31.22.104.226 (4x RTX PRO 6000 Blackwell, 98 GB each)
|
|
9
|
+
|
|
10
|
+
### Code Location
|
|
11
|
+
|
|
12
|
+
All server code lives at `/root/paw-website/` (git clone of `programasweights/website`).
|
|
13
|
+
|
|
14
|
+
**Deployment (the ONLY way to update code):**
|
|
15
|
+
```bash
|
|
16
|
+
# Local: push changes
|
|
17
|
+
git push origin main
|
|
18
|
+
|
|
19
|
+
# Server: pull and restart
|
|
20
|
+
cd /root/paw-website && git pull
|
|
21
|
+
cd server && bash scripts/start_all.sh
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**NEVER use rsync or scp for code.** Model weights use scp between servers.
|
|
25
|
+
|
|
26
|
+
### GPU Layout
|
|
27
|
+
|
|
28
|
+
| GPU | Service | Port | VRAM |
|
|
29
|
+
|-----|---------|------|------|
|
|
30
|
+
| 0 | Pseudo-gen (Qwen3-4B) | 8001 | 90% |
|
|
31
|
+
| 1 | Qwen3 compiler pooling (4B) | 8002 | 85% |
|
|
32
|
+
| 2 | GPT-2 compiler pooling (4B) | 8012 | 85% |
|
|
33
|
+
| 3 | Qwen3 inference (0.6B) + GPT-2 inference (124M) | 8003 + 8013 | 50% + 40% |
|
|
34
|
+
|
|
35
|
+
GPU 3 services must start sequentially: GPT-2 first (smaller, faster), then Qwen3 after GPT-2 claims its VRAM.
|
|
36
|
+
|
|
37
|
+
### Services
|
|
38
|
+
|
|
39
|
+
| Service | Port | Working Dir |
|
|
40
|
+
|---------|------|-------------|
|
|
41
|
+
| vLLM pseudo-gen | 8001 | - |
|
|
42
|
+
| vLLM Qwen3 compiler | 8002 | /root/paw-website/server |
|
|
43
|
+
| vLLM GPT-2 compiler | 8012 | /root/paw-website/server |
|
|
44
|
+
| vLLM Qwen3 inference | 8003 | - |
|
|
45
|
+
| vLLM GPT-2 inference | 8013 | - |
|
|
46
|
+
| Qwen3 CompileProvider | 9000 | /root/paw-website/server |
|
|
47
|
+
| GPT-2 CompileProvider | 9001 | /root/paw-website/server |
|
|
48
|
+
| API gateway | 8000 | /root/paw-website/server |
|
|
49
|
+
|
|
50
|
+
### Startup
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
cd /root/paw-website/server
|
|
54
|
+
bash scripts/start_all.sh # starts everything, waits for models to load
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Or for full redeploy (git pull + patch + start):
|
|
58
|
+
```bash
|
|
59
|
+
cd /root/paw-website
|
|
60
|
+
bash server/scripts/restart.sh
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Key Files
|
|
64
|
+
|
|
65
|
+
- `.env`: `/root/paw-website/server/.env` (secrets, NOT in git)
|
|
66
|
+
- Provider configs: `server/provider_configs/qwen3-0.6b.json`, `server/provider_configs/gpt2.json`
|
|
67
|
+
- Compiler registry: `server/compiler_registry.json`
|
|
68
|
+
- vLLM launchers: `server/scripts/launch_qwen3_compiler.py`, `server/scripts/launch_gpt2_compiler.py`
|
|
69
|
+
- Patch script: `server/scripts/patch_vllm.sh` (run after every pip install vllm)
|
|
70
|
+
|
|
71
|
+
## Critical Environment Variables
|
|
72
|
+
|
|
73
|
+
### VLLM_ALLOW_RUNTIME_LORA_UPDATING=1
|
|
74
|
+
MUST be set for inference servers with --enable-lora.
|
|
75
|
+
|
|
76
|
+
### VLLM_TORCH_COMPILE_LEVEL=0
|
|
77
|
+
Set on servers without full CUDA dev toolchain.
|
|
78
|
+
|
|
79
|
+
## vLLM Compiler Pooling (PawCompilerForPooling)
|
|
80
|
+
|
|
81
|
+
- Must use `--enforce-eager` flag
|
|
82
|
+
- Must use `--runner pooling` flag
|
|
83
|
+
- Must run `scripts/patch_vllm.sh` after every vLLM install
|
|
84
|
+
- Endpoint: `POST /v1/embeddings`
|
|
85
|
+
- Launcher scripts use `if __name__ == '__main__'` guard for multiprocessing
|
|
86
|
+
|
|
87
|
+
## Post-Install Patch
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
cd /root/paw-website/server && bash scripts/patch_vllm.sh /root/paw-venv
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## GPT-2 Specifics
|
|
94
|
+
|
|
95
|
+
- Interpreter uses NO chat template (use_chat_template: false)
|
|
96
|
+
- Compiler port: 8012 (NOT 8002 which is Qwen3)
|
|
97
|
+
- Inference port: 8013 (NOT 8003 which is Qwen3)
|
|
98
|
+
|
|
99
|
+
## Testing
|
|
100
|
+
|
|
101
|
+
Full benchmark: 12 specs, 36 examples, expected 30/36 (83.3%) for Qwen3
|
|
102
|
+
```bash
|
|
103
|
+
cd /root/paw-website/server
|
|
104
|
+
python benchmarks/benchmark_api.py --server https://programasweights.com
|
|
105
|
+
python benchmarks/stress_test.py --server https://programasweights.com --scenario all
|
|
106
|
+
```
|
|
@@ -24,15 +24,16 @@ fn("Newsletter: spring picnic") # "wait"
|
|
|
24
24
|
# Compile your own from a description
|
|
25
25
|
program = paw.compile(
|
|
26
26
|
"Fix malformed JSON: repair missing quotes and trailing commas",
|
|
27
|
-
compiler="paw-4b-qwen3-0.6b" # or "paw-4b-gpt2" for smaller/faster
|
|
27
|
+
compiler="paw-4b-qwen3-0.6b", # or "paw-4b-gpt2" for smaller/faster
|
|
28
|
+
slug="json-fixer" # optional: creates da03/json-fixer handle
|
|
28
29
|
)
|
|
29
|
-
fn = paw.function(program.id)
|
|
30
|
+
fn = paw.function(program.slug) # or paw.function(program.id)
|
|
30
31
|
fn("{name: 'Alice',}") # '{"name": "Alice"}'
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
## Two Compilers
|
|
34
35
|
|
|
35
|
-
| | Qwen3 0.6B | GPT-2 124M |
|
|
36
|
+
| | Standard (Qwen3 0.6B) | Compact (GPT-2 124M) |
|
|
36
37
|
|---|---|---|
|
|
37
38
|
| Compiler name | `paw-4b-qwen3-0.6b` | `paw-4b-gpt2` |
|
|
38
39
|
| Accuracy | Higher | Lower |
|
|
@@ -41,7 +42,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
|
|
|
41
42
|
| Inference speed | ~90ms (server) | ~50ms (server) |
|
|
42
43
|
| Runs in browser | No | Yes |
|
|
43
44
|
|
|
44
|
-
Default is Qwen3 0.6B. Use GPT-2 when you need smaller files or browser deployment.
|
|
45
|
+
Default is Standard (Qwen3 0.6B). Use Compact (GPT-2) when you need smaller files or browser deployment.
|
|
45
46
|
|
|
46
47
|
## Browser / JavaScript SDK
|
|
47
48
|
|
|
@@ -68,6 +69,7 @@ Use this when you want to offload all computation to the user's browser: zero se
|
|
|
68
69
|
- **Classification** — sentiment, urgency, categories defined in your own words
|
|
69
70
|
- **Extraction** — emails, names, dates from messy unstructured text
|
|
70
71
|
- **Log triage** — extract errors from verbose output, filter noise
|
|
72
|
+
- **Intent routing** — map user descriptions to the closest URL, menu item, or setting
|
|
71
73
|
- **Agent preprocessing** — parse tool calls, validate outputs, route tasks
|
|
72
74
|
|
|
73
75
|
## Authentication
|
|
@@ -84,12 +86,25 @@ Generate API keys at https://programasweights.com/settings
|
|
|
84
86
|
|
|
85
87
|
The SDK automatically reads `PAW_API_KEY` from the environment. Authenticated users get higher rate limits (60 compiles/hr vs 5 for anonymous).
|
|
86
88
|
|
|
89
|
+
## Program Naming
|
|
90
|
+
|
|
91
|
+
Programs have an immutable hash ID (e.g. `a6b454023d41ac9ca845`). Authenticated
|
|
92
|
+
users can optionally assign a slug at compile time to create a human-readable
|
|
93
|
+
handle like `da03/json-fixer`. Both forms work everywhere:
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
fn = paw.function("da03/json-fixer") # by slug
|
|
97
|
+
fn = paw.function("a6b454023d41ac9ca845") # by hash
|
|
98
|
+
```
|
|
99
|
+
|
|
87
100
|
## CLI
|
|
88
101
|
|
|
89
102
|
```bash
|
|
90
|
-
paw compile --spec "Classify sentiment
|
|
91
|
-
paw run --program
|
|
92
|
-
paw
|
|
103
|
+
paw compile --spec "Classify sentiment" --slug "my-classifier" --json
|
|
104
|
+
paw run --program "da03/my-classifier" --input "I love this!" --json
|
|
105
|
+
paw rename <program> <new-slug> # rename a program's slug
|
|
106
|
+
paw info <program> # show program metadata
|
|
107
|
+
paw login # save API key
|
|
93
108
|
```
|
|
94
109
|
|
|
95
110
|
`--json` gives structured output for programmatic use.
|
|
@@ -97,9 +112,9 @@ paw login # Save API key for higher rate limits
|
|
|
97
112
|
## API
|
|
98
113
|
|
|
99
114
|
```python
|
|
100
|
-
paw.compile(spec,
|
|
101
|
-
paw.function(name_or_id)
|
|
102
|
-
paw.login()
|
|
115
|
+
paw.compile(spec, slug="my-fn") # Compile with optional slug
|
|
116
|
+
paw.function(name_or_id) # Load by slug or hash
|
|
117
|
+
paw.login() # Save API key
|
|
103
118
|
```
|
|
104
119
|
|
|
105
120
|
## Browse Programs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: programasweights
|
|
3
|
-
Version: 0.1.0.
|
|
3
|
+
Version: 0.1.0.dev8
|
|
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
|
|
@@ -60,7 +60,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
|
|
|
60
60
|
|
|
61
61
|
## Two Compilers
|
|
62
62
|
|
|
63
|
-
| | Qwen3 0.6B
|
|
63
|
+
| | Standard (Qwen3 0.6B) | Compact (GPT-2 124M) |
|
|
64
64
|
|--------------------|-------------------------|------------------------|
|
|
65
65
|
| Compiler name | `paw-4b-qwen3-0.6b` | `paw-4b-gpt2` |
|
|
66
66
|
| Accuracy | Higher | Lower |
|
|
@@ -69,7 +69,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
|
|
|
69
69
|
| Inference speed | ~90ms (server) | ~50ms (server) |
|
|
70
70
|
| Runs in browser | No | Yes |
|
|
71
71
|
|
|
72
|
-
Default is Qwen3 0.6B. Use GPT-2 when you need smaller files or browser deployment.
|
|
72
|
+
Default is Standard (Qwen3 0.6B). Use Compact (GPT-2) when you need smaller files or browser deployment.
|
|
73
73
|
|
|
74
74
|
## Browser SDK
|
|
75
75
|
|
|
@@ -104,6 +104,7 @@ Or save [`AGENTS.md`](https://programasweights.com/agents) to your project root
|
|
|
104
104
|
- **Classification** — sentiment, urgency, categories defined in your own words
|
|
105
105
|
- **Extraction** — emails, names, dates from messy unstructured text
|
|
106
106
|
- **Log triage** — extract errors from verbose output, filter noise
|
|
107
|
+
- **Intent routing** — map user descriptions to the closest URL, menu item, or setting
|
|
107
108
|
- **Agent preprocessing** — parse tool calls, validate outputs, route tasks
|
|
108
109
|
|
|
109
110
|
## Authentication
|
|
@@ -31,7 +31,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
|
|
|
31
31
|
|
|
32
32
|
## Two Compilers
|
|
33
33
|
|
|
34
|
-
| | Qwen3 0.6B
|
|
34
|
+
| | Standard (Qwen3 0.6B) | Compact (GPT-2 124M) |
|
|
35
35
|
|--------------------|-------------------------|------------------------|
|
|
36
36
|
| Compiler name | `paw-4b-qwen3-0.6b` | `paw-4b-gpt2` |
|
|
37
37
|
| Accuracy | Higher | Lower |
|
|
@@ -40,7 +40,7 @@ fn("{name: 'Alice',}") # '{"name": "Alice"}'
|
|
|
40
40
|
| Inference speed | ~90ms (server) | ~50ms (server) |
|
|
41
41
|
| Runs in browser | No | Yes |
|
|
42
42
|
|
|
43
|
-
Default is Qwen3 0.6B. Use GPT-2 when you need smaller files or browser deployment.
|
|
43
|
+
Default is Standard (Qwen3 0.6B). Use Compact (GPT-2) when you need smaller files or browser deployment.
|
|
44
44
|
|
|
45
45
|
## Browser SDK
|
|
46
46
|
|
|
@@ -75,6 +75,7 @@ Or save [`AGENTS.md`](https://programasweights.com/agents) to your project root
|
|
|
75
75
|
- **Classification** — sentiment, urgency, categories defined in your own words
|
|
76
76
|
- **Extraction** — emails, names, dates from messy unstructured text
|
|
77
77
|
- **Log triage** — extract errors from verbose output, filter noise
|
|
78
|
+
- **Intent routing** — map user descriptions to the closest URL, menu item, or setting
|
|
78
79
|
- **Agent preprocessing** — parse tool calls, validate outputs, route tasks
|
|
79
80
|
|
|
80
81
|
## Authentication
|
|
@@ -25,22 +25,26 @@ Compile a specification.
|
|
|
25
25
|
|
|
26
26
|
**Request body (JSON):**
|
|
27
27
|
|
|
28
|
-
| Field | Type | Description |
|
|
29
|
-
|
|
30
|
-
| `spec` | string | Natural-language specification. |
|
|
31
|
-
| `compiler` | string | Compiler identifier. |
|
|
28
|
+
| Field | Type | Required | Description |
|
|
29
|
+
|-------|------|----------|-------------|
|
|
30
|
+
| `spec` | string | Yes | Natural-language specification. |
|
|
31
|
+
| `compiler` | string | No | Compiler identifier (default: `paw-4b-qwen3-0.6b`). |
|
|
32
|
+
| `slug` | string | No | URL-safe handle (e.g. `message-classifier`). Creates a `username/slug` alias. Requires auth. |
|
|
33
|
+
| `public` | boolean | No | List on public hub (default: true). |
|
|
34
|
+
| `name` | string | No | Display title. Auto-generated if omitted. |
|
|
35
|
+
| `tags` | string[] | No | Tags for discovery. |
|
|
32
36
|
|
|
33
|
-
**Response (JSON):** includes `job_id`, `status`, `program_id`, `pseudo_program`, and `timings
|
|
37
|
+
**Response (JSON):** includes `job_id`, `status`, `program_id`, `slug` (if created), `pseudo_program`, and `timings`.
|
|
34
38
|
|
|
35
39
|
### `POST /infer`
|
|
36
40
|
|
|
37
|
-
Run inference for a compiled program (server-side execution
|
|
41
|
+
Run inference for a compiled program (server-side execution).
|
|
38
42
|
|
|
39
43
|
**Request body (JSON):**
|
|
40
44
|
|
|
41
45
|
| Field | Type | Description |
|
|
42
46
|
|-------|------|-------------|
|
|
43
|
-
| `program_id` | string | Program identifier. |
|
|
47
|
+
| `program_id` | string | Program identifier — hash ID or slug (e.g. `da03/message-classifier`). |
|
|
44
48
|
| `input` | string | Input text. |
|
|
45
49
|
| `max_tokens` | integer | Maximum tokens to generate. |
|
|
46
50
|
| `temperature` | number | Sampling temperature. |
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Naming Programs
|
|
2
|
+
|
|
3
|
+
ProgramAsWeights uses two ways to refer to compiled programs: immutable content hashes and optional human-readable slugs.
|
|
4
|
+
|
|
5
|
+
## Content-addressable IDs
|
|
6
|
+
|
|
7
|
+
Every compiled program has a stable identifier derived from its contents, similar to a Git commit hash:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
9b57fd6fccf77885400e
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
You can load a program by this ID with `paw.function("<id>")` wherever you have the exact string. Hash IDs never change and always work.
|
|
14
|
+
|
|
15
|
+
## Slugs (human-readable handles)
|
|
16
|
+
|
|
17
|
+
Authenticated users can optionally assign a slug at compile time:
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
program = paw.compile(
|
|
21
|
+
"Classify message urgency as immediate or wait",
|
|
22
|
+
slug="message-classifier"
|
|
23
|
+
)
|
|
24
|
+
# Creates da03/message-classifier (username/slug)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The slug creates a `username/slug` handle that works everywhere a hash ID works:
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
fn = paw.function("da03/message-classifier")
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Slugs are **never auto-generated**. If you don't provide one, your program is
|
|
34
|
+
identified by hash only. This keeps the namespace clean for intentional naming.
|
|
35
|
+
|
|
36
|
+
### Adding or changing a slug later
|
|
37
|
+
|
|
38
|
+
You can add a slug to an existing program, or rename it:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
paw rename a6b454023d41ac9ca845 message-classifier
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Or via the API:
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import httpx
|
|
48
|
+
httpx.patch(
|
|
49
|
+
"https://programasweights.com/api/v1/programs/a6b454023d41ac9ca845",
|
|
50
|
+
json={"slug": "message-classifier"},
|
|
51
|
+
headers={"X-API-Key": "paw_sk_..."}
|
|
52
|
+
)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Official namespace
|
|
56
|
+
|
|
57
|
+
Programs published under the `programasweights/` namespace are the official catalog. For these, the prefix may be omitted:
|
|
58
|
+
|
|
59
|
+
- `paw.function("email-triage")` resolves to `programasweights/email-triage`.
|
|
60
|
+
|
|
61
|
+
## Community programs
|
|
62
|
+
|
|
63
|
+
Programs published under a user prefix must include that prefix:
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
paw.function("da03/message-classifier")
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Authentication
|
|
70
|
+
|
|
71
|
+
Creating or managing slugs requires signing in with GitHub on [programasweights.com](https://programasweights.com).
|
|
72
|
+
|
|
73
|
+
## Convention
|
|
74
|
+
|
|
75
|
+
This mirrors HuggingFace, Docker Hub, and npm:
|
|
76
|
+
|
|
77
|
+
- Short names like `email-triage` refer to official programs (`programasweights/email-triage`).
|
|
78
|
+
- `username/name` is for community programs, like `Qwen/Qwen3-0.6B` on HuggingFace.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Run PAW programs directly in the browser via WebAssembly. No server, no API key, no setup.
|
|
4
4
|
|
|
5
|
-
Programs compiled with the GPT-2 124M
|
|
5
|
+
Programs compiled with the compact interpreter (GPT-2 124M) run entirely client-side. The base model (105 MB) downloads once and is cached; each program adds only ~5 MB.
|
|
6
6
|
|
|
7
7
|
## Quick Start
|
|
8
8
|
|
|
@@ -42,7 +42,7 @@ await fn.free();
|
|
|
42
42
|
|
|
43
43
|
## How It Works
|
|
44
44
|
|
|
45
|
-
1. **Base model** — GPT-2 124M
|
|
45
|
+
1. **Base model** — Compact interpreter (GPT-2 124M, 105 MB) downloads from HuggingFace CDN and is cached in the browser after first load.
|
|
46
46
|
2. **LoRA adapter** — Each program is a ~5 MB Q4_0 GGUF LoRA adapter that specializes the base model for a specific task.
|
|
47
47
|
3. **Prefix cache** — A precomputed KV cache (~7 MB) eliminates the prompt prefill step, making the first inference call fast.
|
|
48
48
|
4. **Inference** — Runs via WebAssembly (llama.cpp compiled to WASM with SIMD). ~200ms per call on Chrome.
|
|
@@ -134,6 +134,6 @@ Without these headers, the SDK falls back to single-threaded WASM (still functio
|
|
|
134
134
|
|
|
135
135
|
## Limitations
|
|
136
136
|
|
|
137
|
-
- Only programs compiled with the **GPT-2 124M
|
|
137
|
+
- Only programs compiled with the **compact** interpreter (GPT-2 124M) are supported. Programs compiled with the standard interpreter (Qwen3 0.6B) are too large for browser inference (~594 MB base model).
|
|
138
138
|
- The 105 MB base model download may be slow on mobile connections.
|
|
139
139
|
- Performance varies by browser (Chrome is fastest).
|
|
@@ -26,7 +26,7 @@ The LoRA weights are quantized to **Q4_0** GGUF format (on the order of **23 MB*
|
|
|
26
26
|
|
|
27
27
|
When you run a program locally:
|
|
28
28
|
|
|
29
|
-
- The SDK loads
|
|
29
|
+
- The SDK loads the standard interpreter (Qwen3 0.6B, about **594 MB**, downloaded once).
|
|
30
30
|
- It applies the **Q4_0** LoRA adapter from the bundle.
|
|
31
31
|
- The pseudo-program is prepended as a **prompt prefix**; user input follows.
|
|
32
32
|
- Inference uses **llama.cpp** (CPU or GPU backends as configured).
|
|
@@ -60,7 +60,7 @@ At runtime, the SDK loads a Q6_K base model (~594 MB, downloaded once) and appli
|
|
|
60
60
|
|
|
61
61
|
## Browser Inference
|
|
62
62
|
|
|
63
|
-
Programs compiled with the GPT-2 124M
|
|
63
|
+
Programs compiled with the compact interpreter (GPT-2 124M) also run directly in the browser via WebAssembly -- no server needed:
|
|
64
64
|
|
|
65
65
|
```html
|
|
66
66
|
<script type="module">
|
|
@@ -22,7 +22,7 @@ API reference:
|
|
|
22
22
|
paw.api_key API key (set via login() or PAW_API_KEY env var)
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
|
-
__version__ = "0.1.0.
|
|
25
|
+
__version__ = "0.1.0.dev8"
|
|
26
26
|
|
|
27
27
|
from .config import get_api_url, get_api_key, set_api_key
|
|
28
28
|
|
|
@@ -37,33 +37,38 @@ def compile(
|
|
|
37
37
|
name: str | None = None,
|
|
38
38
|
tags: list[str] | None = None,
|
|
39
39
|
public: bool = True,
|
|
40
|
+
slug: str | None = None,
|
|
40
41
|
):
|
|
41
42
|
"""Compile a natural language specification into a neural program.
|
|
42
43
|
|
|
43
44
|
The compilation runs on the PAW server. The resulting program can be
|
|
44
|
-
downloaded and run locally via ``paw.function(program.id)
|
|
45
|
+
downloaded and run locally via ``paw.function(program.id)`` or
|
|
46
|
+
``paw.function(program.slug)`` if a slug was provided.
|
|
45
47
|
|
|
46
48
|
Args:
|
|
47
49
|
spec: Full specification text. Include examples in the text if desired.
|
|
48
50
|
compiler: Compiler model (alias or snapshot name).
|
|
49
|
-
name: Human-readable program name for the hub.
|
|
51
|
+
name: Human-readable program name (display title for the hub).
|
|
50
52
|
tags: Tags for hub discovery.
|
|
51
53
|
public: Whether to list on the public hub.
|
|
54
|
+
slug: URL-safe handle (e.g. 'message-classifier'). Creates a
|
|
55
|
+
``username/slug`` alias. Requires authentication.
|
|
52
56
|
|
|
53
57
|
Returns:
|
|
54
|
-
A ``Program`` object with ``id``, ``status``, and ``timings``.
|
|
58
|
+
A ``Program`` object with ``id``, ``slug``, ``status``, and ``timings``.
|
|
55
59
|
|
|
56
60
|
Example:
|
|
57
61
|
>>> program = paw.compile(
|
|
58
|
-
... "Fix malformed JSON: repair missing quotes and trailing commas"
|
|
62
|
+
... "Fix malformed JSON: repair missing quotes and trailing commas",
|
|
63
|
+
... slug="json-fixer"
|
|
59
64
|
... )
|
|
60
|
-
>>> fn = paw.function(program.id)
|
|
65
|
+
>>> fn = paw.function(program.slug) # or paw.function(program.id)
|
|
61
66
|
>>> fn("{name: 'Alice',}")
|
|
62
67
|
'{"name": "Alice"}'
|
|
63
68
|
"""
|
|
64
69
|
from .client import PAWClient
|
|
65
70
|
client = PAWClient(api_url=api_url, api_key=api_key)
|
|
66
|
-
return client.compile(spec, compiler=compiler, name=name, tags=tags, public=public)
|
|
71
|
+
return client.compile(spec, compiler=compiler, name=name, tags=tags, public=public, slug=slug)
|
|
67
72
|
|
|
68
73
|
|
|
69
74
|
def function(
|
|
@@ -94,7 +99,7 @@ def function(
|
|
|
94
99
|
"""
|
|
95
100
|
import os
|
|
96
101
|
import re
|
|
97
|
-
from .cache import is_program_cached, get_program_dir
|
|
102
|
+
from .cache import is_program_cached, get_program_dir, get_cached_slug, save_slug_mapping
|
|
98
103
|
from .runtime_llamacpp import PawFunction
|
|
99
104
|
|
|
100
105
|
if n_gpu_layers is None:
|
|
@@ -102,9 +107,14 @@ def function(
|
|
|
102
107
|
|
|
103
108
|
resolved_id = program_id
|
|
104
109
|
if not re.fullmatch(r"[a-f0-9]{16,64}", program_id):
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
110
|
+
cached = get_cached_slug(program_id)
|
|
111
|
+
if cached:
|
|
112
|
+
resolved_id = cached
|
|
113
|
+
else:
|
|
114
|
+
from .client import PAWClient
|
|
115
|
+
client = PAWClient(api_url=api_url, api_key=api_key)
|
|
116
|
+
resolved_id = client.resolve_slug(program_id)
|
|
117
|
+
save_slug_mapping(program_id, resolved_id)
|
|
108
118
|
|
|
109
119
|
if not is_program_cached(resolved_id):
|
|
110
120
|
from .client import PAWClient
|
|
@@ -10,10 +10,12 @@ Cache structure:
|
|
|
10
10
|
adapter.gguf # ~23 MB, Q4_0 LoRA
|
|
11
11
|
prompt_template.txt
|
|
12
12
|
meta.json
|
|
13
|
+
slug_cache.json # slug -> program_id mapping
|
|
13
14
|
"""
|
|
14
15
|
|
|
15
16
|
from __future__ import annotations
|
|
16
17
|
|
|
18
|
+
import json
|
|
17
19
|
import os
|
|
18
20
|
from pathlib import Path
|
|
19
21
|
|
|
@@ -80,3 +82,36 @@ def _download_file(url: str, dest: Path):
|
|
|
80
82
|
mb = downloaded / 1024 / 1024
|
|
81
83
|
print(f"\r {mb:.1f} MB ({pct:.0f}%)", end="", flush=True)
|
|
82
84
|
print()
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _slug_cache_path() -> Path:
|
|
88
|
+
return config.get_cache_dir() / "slug_cache.json"
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def get_cached_slug(slug: str) -> str | None:
|
|
92
|
+
"""Look up a slug in the local cache. Returns program_id or None."""
|
|
93
|
+
path = _slug_cache_path()
|
|
94
|
+
if not path.exists():
|
|
95
|
+
return None
|
|
96
|
+
try:
|
|
97
|
+
data = json.loads(path.read_text())
|
|
98
|
+
program_id = data.get(slug)
|
|
99
|
+
if program_id and is_program_cached(program_id):
|
|
100
|
+
return program_id
|
|
101
|
+
except (json.JSONDecodeError, OSError):
|
|
102
|
+
pass
|
|
103
|
+
return None
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def save_slug_mapping(slug: str, program_id: str) -> None:
|
|
107
|
+
"""Save a slug -> program_id mapping to the local cache."""
|
|
108
|
+
path = _slug_cache_path()
|
|
109
|
+
data: dict = {}
|
|
110
|
+
if path.exists():
|
|
111
|
+
try:
|
|
112
|
+
data = json.loads(path.read_text())
|
|
113
|
+
except (json.JSONDecodeError, OSError):
|
|
114
|
+
pass
|
|
115
|
+
data[slug] = program_id
|
|
116
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
117
|
+
path.write_text(json.dumps(data))
|
|
@@ -26,11 +26,12 @@ def cmd_compile(args):
|
|
|
26
26
|
if not args.json:
|
|
27
27
|
print(f"Compiling: {args.spec[:80]}...")
|
|
28
28
|
|
|
29
|
-
program = paw.compile(args.spec, compiler=args.compiler)
|
|
29
|
+
program = paw.compile(args.spec, compiler=args.compiler, slug=getattr(args, 'slug', None))
|
|
30
30
|
|
|
31
31
|
if args.json:
|
|
32
32
|
print(json.dumps({
|
|
33
33
|
"program_id": program.id,
|
|
34
|
+
"slug": program.slug,
|
|
34
35
|
"status": program.status,
|
|
35
36
|
"error": program.error,
|
|
36
37
|
"timings": program.timings,
|
|
@@ -42,15 +43,18 @@ def cmd_compile(args):
|
|
|
42
43
|
return 1
|
|
43
44
|
|
|
44
45
|
print(f"Program ID: {program.id}")
|
|
46
|
+
if program.slug:
|
|
47
|
+
print(f"Slug: {program.slug}")
|
|
45
48
|
print(f"Status: {program.status}")
|
|
46
49
|
if program.timings:
|
|
47
50
|
total = program.timings.get("total_ms", 0)
|
|
48
51
|
print(f"Total time: {total:.0f}ms")
|
|
52
|
+
ref = program.slug or program.id
|
|
49
53
|
print(f"\nTo run locally:")
|
|
50
|
-
print(f" paw run {
|
|
54
|
+
print(f" paw run --program \"{ref}\" --input \"your input here\"")
|
|
51
55
|
print(f"\nOr in Python:")
|
|
52
56
|
print(f" import programasweights as paw")
|
|
53
|
-
print(f" fn = paw.function(\"{
|
|
57
|
+
print(f" fn = paw.function(\"{ref}\")")
|
|
54
58
|
print(f" fn(\"your input here\")")
|
|
55
59
|
return 0
|
|
56
60
|
|
|
@@ -80,6 +84,37 @@ def cmd_login(args):
|
|
|
80
84
|
return 0
|
|
81
85
|
|
|
82
86
|
|
|
87
|
+
def cmd_rename(args):
|
|
88
|
+
import programasweights as paw
|
|
89
|
+
if args.api_url:
|
|
90
|
+
paw.api_url = args.api_url
|
|
91
|
+
if args.api_key:
|
|
92
|
+
paw.api_key = args.api_key
|
|
93
|
+
|
|
94
|
+
import httpx
|
|
95
|
+
from programasweights.client import PAWClient
|
|
96
|
+
client = PAWClient(api_url=paw.api_url, api_key=paw.api_key)
|
|
97
|
+
|
|
98
|
+
resp = httpx.patch(
|
|
99
|
+
f"{client._api_url}/api/v1/programs/{args.program}",
|
|
100
|
+
json={"slug": args.new_slug},
|
|
101
|
+
headers=client._headers(),
|
|
102
|
+
timeout=10.0,
|
|
103
|
+
)
|
|
104
|
+
resp.raise_for_status()
|
|
105
|
+
data = resp.json()
|
|
106
|
+
|
|
107
|
+
if args.json:
|
|
108
|
+
print(json.dumps(data))
|
|
109
|
+
else:
|
|
110
|
+
slug = data.get("slug")
|
|
111
|
+
if slug:
|
|
112
|
+
print(f"Renamed to: {slug}")
|
|
113
|
+
else:
|
|
114
|
+
print("Slug removed.")
|
|
115
|
+
return 0
|
|
116
|
+
|
|
117
|
+
|
|
83
118
|
def cmd_info(args):
|
|
84
119
|
import programasweights as paw
|
|
85
120
|
if args.api_url:
|
|
@@ -129,6 +164,7 @@ def main():
|
|
|
129
164
|
p = sub.add_parser("compile", help="Compile a spec on the server")
|
|
130
165
|
p.add_argument("--spec", required=True, help="Natural language specification")
|
|
131
166
|
p.add_argument("--compiler", default="paw-4b-qwen3-0.6b", help="Compiler model")
|
|
167
|
+
p.add_argument("--slug", default=None, help="URL-safe handle (e.g. 'message-classifier')")
|
|
132
168
|
p.add_argument("--json", action="store_true", help="JSON output")
|
|
133
169
|
|
|
134
170
|
p = sub.add_parser("run", help="Run a program locally via llama.cpp")
|
|
@@ -142,6 +178,11 @@ def main():
|
|
|
142
178
|
p = sub.add_parser("login", help="Save API key for authentication")
|
|
143
179
|
p.add_argument("key", nargs="?", default=None, help="API key (paw_sk_...). Omit to open browser.")
|
|
144
180
|
|
|
181
|
+
p = sub.add_parser("rename", help="Set or change a program's slug")
|
|
182
|
+
p.add_argument("program", help="Program ID or current slug")
|
|
183
|
+
p.add_argument("new_slug", help="New slug (e.g. 'message-classifier') or empty string to remove")
|
|
184
|
+
p.add_argument("--json", action="store_true", help="JSON output")
|
|
185
|
+
|
|
145
186
|
p = sub.add_parser("info", help="Show program info")
|
|
146
187
|
p.add_argument("program", help="Program name or ID")
|
|
147
188
|
p.add_argument("--json", action="store_true", help="JSON output")
|
|
@@ -156,6 +197,7 @@ def main():
|
|
|
156
197
|
"compile": cmd_compile,
|
|
157
198
|
"run": cmd_run,
|
|
158
199
|
"login": cmd_login,
|
|
200
|
+
"rename": cmd_rename,
|
|
159
201
|
"info": cmd_info,
|
|
160
202
|
}
|
|
161
203
|
|