programasweights 0.2.0__tar.gz → 0.2.1__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.0 → programasweights-0.2.1}/AGENTS.md +24 -22
- {programasweights-0.2.0 → programasweights-0.2.1}/PKG-INFO +1 -1
- programasweights-0.2.1/docs/api-reference/cli.md +90 -0
- programasweights-0.2.1/docs/api-reference/python-sdk.md +107 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/api-reference/rest-api.md +25 -14
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/__init__.py +1 -1
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/cli.py +3 -1
- {programasweights-0.2.0 → programasweights-0.2.1}/pyproject.toml +1 -1
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/compile.py +10 -3
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/programs.py +9 -7
- {programasweights-0.2.0 → programasweights-0.2.1}/tests/test_sdk.py +114 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/tests/test_sdk.sh +1 -1
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/AboutPage.tsx +1 -1
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/AgentsPage.tsx +66 -13
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/Footer.tsx +1 -1
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/HubProgramPage.tsx +1 -1
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/MainInterface.tsx +1 -1
- programasweights-0.2.1/web-sdk/LICENSE +21 -0
- programasweights-0.2.1/web-sdk/__tests__/e2e/browser.spec.ts +223 -0
- programasweights-0.2.1/web-sdk/__tests__/e2e/server.ts +69 -0
- programasweights-0.2.1/web-sdk/__tests__/e2e/start-server.ts +2 -0
- programasweights-0.2.1/web-sdk/__tests__/e2e/test-page.html +122 -0
- programasweights-0.2.1/web-sdk/__tests__/loader.test.ts +244 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/package-lock.json +61 -2
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/package.json +4 -3
- programasweights-0.2.1/web-sdk/playwright.config.ts +19 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/src/runtime.ts +3 -1
- programasweights-0.2.0/docs/api-reference/cli.md +0 -76
- programasweights-0.2.0/docs/api-reference/python-sdk.md +0 -75
- programasweights-0.2.0/web-sdk/__tests__/loader.test.ts +0 -110
- {programasweights-0.2.0 → programasweights-0.2.1}/.cursor/rules/vllm-deployment.mdc +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/.git +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/.github/workflows/web-sdk.yml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/.gitignore +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/.gitmodules +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/.hatch_build.toml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/.readthedocs.yaml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/1apple.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/1apple2.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/2apples.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/2apples2.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/3apples.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/3apples2.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/479400.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/4apples.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/4apples2.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/4apples3.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/4apples4.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/5apples.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/6apples.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/8apples.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/9apples.jpg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/CHANGELOG.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/FLOW_SUMMARY.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/LICENSE +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/MANIFEST.in +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/ONNX_MIGRATION_PLAN.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/PREFIX_TOKENS_DESIGN.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/PYPI_README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/TRUNCATION_CHANGES.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/USE_CASES_AND_IDEAS.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/VERIFICATION_USAGE.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/analyze_dataset.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/analyze_lengths.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/code_prompt.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/evaluate_openai_python_code_baseline.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/openai_batch_request.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/prepare_alchemist_data.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/prepare_var_bench_data.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/python_code_sandbox.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/script_evaluation_var_bench.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/script_evalution_evaluation.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/script_evalution_request.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/baselines/script_evalution_statistics.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/benchmark_pytorch_vs_onnx.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/benchmark_user_experience.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/check_dataset.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/combine_datasets.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/compare_datasets.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/compare_old_vs_regen.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/convert_paw_to_svg.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/create_favicon_sizes.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/create_visualization_from_log.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/create_vqa_dataset.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/debug_cache.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/debug_eos_example.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/adr/001-llama-cpp-over-pytorch.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/adr/002-q4_0-adapter-format.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/adr/003-single-spec-field.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/adr/004-compiler-naming.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/adr/005-vllm-hidden-states.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/adr/006-email-api-key-auth.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/advanced/adrs.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/advanced/architecture.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/architecture.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/getting-started/first-program.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/getting-started/installation.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/getting-started/naming-programs.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/guide/browser-inference.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/guide/how-it-works.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/guide/local-inference.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/guide/writing-good-specs.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/hub/browsing-programs.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/hub/feedback-cases.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/hub/publishing-programs.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/index.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/docs/requirements.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/estimate_data_gen_cost.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/eval.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/examples/flask_app.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/examples/jupyter_notebook.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/examples/langchain_integration.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/examples/replace_openai.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/export_to_onnx.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/extract_models.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/inspect_data_dirs.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/latest_export.csv +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/log.train.81920.morecategories.extraprefix +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/main_no_spec_direct_ans_mix_continuous_sampleref_shorterprompt_vllm.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/merge_datasets.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/mkdocs.yml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/paw.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/paw.svg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/process_im2latex_dataset.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/artifacts.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/cache.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/client.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/compiler/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/compiler/dummy.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/config.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/convert_peft_to_paw.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/paw_format.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/runtime/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/runtime/interpreter.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/runtime/interpreter_onnx.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights/runtime_llamacpp.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/compiler/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/lora_format.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/runtime/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/runtime/interpreter_lora.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/tests/test_compile_and_run.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/tests/test_lora_format.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/tests/test_training.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/train_lora.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/training/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/programasweights_lora/training/loops/lora_tuning_sft.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/run_eval.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/run_training.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/scripts/filter_table_by_length.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/.env.example +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/alembic/env.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/alembic/script.py.mako +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/alembic/versions/001_initial_schema.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/alembic/versions/002_namespaced_aliases_hf_url.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/alembic/versions/003_fulltext_search_ranking.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/alembic/versions/004_fix_alias_slug_constraint.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/alembic.ini +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/config.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/dependencies.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/logging_config.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/main.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/middleware/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/middleware/rate_limit.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/models/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/models/database.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/models/orm.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/models/schemas.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/auth.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/feedback.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/health.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/infer.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/routes/models_info.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/auto_tag_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/auto_title_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/compile_provider.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/compile_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/infer_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/search_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/api/services/storage_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/benchmarks/benchmark_api.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/benchmarks/handcrafted_specs.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/benchmarks/last_benchmark_results.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/benchmarks/last_stress_results.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/benchmarks/stress_test.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/compiler_registry.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/provider_configs/gpt2.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/provider_configs/qwen3-0.6b.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/requirements.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/ab_test_hf_vs_vllm.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/ablation_search.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/backfill_hf_browser_assets.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/backfill_hf_safetensors.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/backfill_interestingness.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/backfill_tags.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/backfill_titles.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/benchmark_gpt2.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/cleanup_storage.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/eval_search.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/evict_cold_programs.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/generate_prefix_cache.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/launch_gpt2_compiler.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/launch_qwen3_compiler.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/patch_vllm.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/restart.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/start_all.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/start_gpt2_services.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/start_provider.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/scripts/start_services.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/conftest.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/test_auth.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/test_compile.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/test_errors.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/test_infer.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/test_integration_gpu.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/test_rate_limit.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/tests/test_storage.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/vllm_models/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/vllm_models/gpt2_lora_patch.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/vllm_models/paw_compiler.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/vllm_models/prepare_checkpoint.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/server/vllm_models/register.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.rollout_ppl.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.em_es.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.ppl.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/stage2_firstpromptqwen_512_e1_generate_lora_e2grpo_overfit_one_debug.reward_plot.train_gt_logprob.reward.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_1spec.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_all_caching.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_apple_count.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_batch_pilot.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_compile.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_e2e.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_execute.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_nspecs.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_one_vs_two_step.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_onnx_correctness.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_onnx_hf_model.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_onnx_hf_with_images.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_paw_format.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/test_thinking_comparison.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/tests/test_offline_cache.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/train.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/train_no_spec_direct_ans_mix_continuous_sampleref_trainonly_shorterprompt_withregularizer_generate_lora.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/DATASET_CHANGELOG.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/VERIFICATION_PIPELINE.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/build_user_bench.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/dry_run_batch.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/filter_test_data.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/generate_specs.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/generate_specs_batch.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/incremental_merge.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/merge_and_upload.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/regenerate_outputs_batch.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/synthesize_data.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/synthesize_data_batch.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/filter_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/filter_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/pairs_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/pairs_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/specs_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/specs_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/specs_user_freeform.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/specs_user_freeform_with_examples.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/specs_user_with_examples.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/verify_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates/verify_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/filter_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/filter_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/pairs_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/pairs_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/specs_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/specs_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/specs_user_freeform.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/specs_user_freeform_with_examples.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/specs_user_with_examples.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/verify_system.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/templates_old/verify_user.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/data_generation/verify_test_data.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/datasets/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/datasets/jsonl_text_pairs.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/loops/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/training/loops/prefix_tuning_sft.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/ttt.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/upload_model.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/upload_onnx_to_huggingface.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/upload_onnx_to_huggingface_with_token.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/utils.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/HANDOFF.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/config.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/main.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/middleware/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/middleware/rate_limit.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/models.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/auth_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/case_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/compiler_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/gpt_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/hub_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/image_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/interpreter_service.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/services/sql_manager.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/templates/gpt_test_generation.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/utils/__init__.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/utils/image_placeholders.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/app/utils/program_hash.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/clear_db.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/clear_tables.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/data/programs.db +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/env_example.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/example_images/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/get_data_examples.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/requirements.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/run_server.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_analytics_tables.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_auth_tables.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_cache_tables.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_cases_tables.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_database.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_database_simple.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_db.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_example_images.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/setup_hub_tables.sql +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/backend/test_compilation_cache.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/e2e/full.spec.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/e2e/helpers.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/e2e/smoke.spec.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/eslint.config.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/index.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/package-lock.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/package.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/playwright.config.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/postcss.config.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/apple-touch-icon.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/browser-worker.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/favicon-16x16.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/favicon-32x32.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/paw-192.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/paw-512.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/paw.svg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/react-test.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/test.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/public/vite.svg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/scripts/deploy.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/App.css +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/App.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/assets/react.svg +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/AuthorPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/BrowserPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/CasesSection.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/CompileButtonWithConfig.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/CompileSection.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/DocsPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/ExamplesInput.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/Header.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/HubPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/HubUploadPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/LandingPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/ModelSelector.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/NavigationHelper.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/PrivacyPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/ProfilePage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/SettingsPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/SpecSuggestions.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/TermsPage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/TestSection.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/index.css +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/main.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/types/index.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/utils/api.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/tailwind.config.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/test-results/.last-run.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/tsconfig.app.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/tsconfig.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/tsconfig.node.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/vite.config.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/nginx-paw.conf +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/nginx.conf +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/setup_mysql.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/start.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/test_setup.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-app/ttt.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/.gitignore +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/__tests__/prompt.test.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/examples/basic.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/serve.py +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/src/index.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/src/loader.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/src/types.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/test-standalone.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/tsconfig.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/vitest.config.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.git +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.github/workflows/build-hf-space.yml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.github/workflows/ci.yml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.github/workflows/generate-docs.yml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.github/workflows/verify-generated-code.yml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.gitignore +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.gitmodules +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.npmignore +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/.prettierignore +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/CMakeLists.txt +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/LICENCE +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/README_banner.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/assets/screenshot_0.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/actions.hpp +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/generate_glue_prototype.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/glue.hpp +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/helpers/wcommon.cpp +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/helpers/wcommon.h +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/helpers/wlog.cpp +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/helpers/wlog.h +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/helpers/wsampling.cpp +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/helpers/wsampling.h +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/test_glue.cpp +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/cpp/wllama.cpp +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/basic/index.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/embeddings/index.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/.eslintrc.cjs +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/.gitignore +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/README.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/index.html +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/package-lock.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/package.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/postcss.config.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/public/favicon.ico +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/public/wllama.png +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/App.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/ChatScreen.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/GuideScreen.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/LogScreen.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/MarkdownMessage.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/ModelScreen.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/Navbar.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/ScreenWrapper.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/components/Sidebar.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/config.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/index.css +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/main.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/benchmark.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/custom-models.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/displayed-model.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/messages.context.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/nl2br.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/types.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/use-interval-when.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/utils.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/utils/wllama.context.tsx +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/src/vite-env.d.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/tailwind.config.cjs +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/tsconfig.app.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/tsconfig.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/tsconfig.node.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/examples/main/vite.config.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/guides/intro-v2.md +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/index.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/package-lock.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/package.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/scripts/build_hf_space.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/scripts/build_wasm.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/scripts/build_worker.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/scripts/docker-compose.yml +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/scripts/generate_wasm_from_cdn.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/scripts/http_server.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/scripts/post_build.sh +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/cache-manager.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/glue/glue.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/glue/messages.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/index.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/mjs.test.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/model-manager.test.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/model-manager.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/multi-thread/wllama.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/multi-thread/wllama.wasm +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/single-thread/wllama.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/single-thread/wllama.wasm +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/utils.test.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/utils.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/wasm-from-cdn.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/wllama.test.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/wllama.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/worker.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/workers-code/generated.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/workers-code/llama-cpp.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/src/workers-code/opfs-utils.js +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/tsconfig.build.json +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/tsup.config.ts +0 -0
- {programasweights-0.2.0 → programasweights-0.2.1}/web-sdk/wllama/vitest.config.ts +0 -0
|
@@ -24,10 +24,9 @@ fn("Newsletter: spring picnic") # "wait"
|
|
|
24
24
|
# Compile your own from a description
|
|
25
25
|
program = paw.compile(
|
|
26
26
|
"Fix malformed JSON: repair missing quotes and trailing commas",
|
|
27
|
-
compiler="paw-4b-qwen3-0.6b"
|
|
28
|
-
slug="json-fixer" # optional: creates da03/json-fixer handle
|
|
27
|
+
compiler="paw-4b-qwen3-0.6b" # or "paw-4b-gpt2" for smaller/faster
|
|
29
28
|
)
|
|
30
|
-
fn = paw.function(program.
|
|
29
|
+
fn = paw.function(program.id)
|
|
31
30
|
fn("{name: 'Alice',}") # '{"name": "Alice"}'
|
|
32
31
|
```
|
|
33
32
|
|
|
@@ -72,38 +71,41 @@ Use this when you want to offload all computation to the user's browser: zero se
|
|
|
72
71
|
- **Intent routing** — map user descriptions to the closest URL, menu item, or setting
|
|
73
72
|
- **Agent preprocessing** — parse tool calls, validate outputs, route tasks
|
|
74
73
|
|
|
75
|
-
## Authentication
|
|
74
|
+
## Authentication (optional)
|
|
75
|
+
|
|
76
|
+
Everything works without authentication. Sign in for higher rate limits and program naming.
|
|
76
77
|
|
|
77
78
|
```bash
|
|
78
|
-
# Option 1: environment variable (recommended)
|
|
79
79
|
export PAW_API_KEY=paw_sk_...
|
|
80
|
-
|
|
81
|
-
# Option 2: CLI login (opens browser to generate key)
|
|
82
|
-
paw login
|
|
83
80
|
```
|
|
84
81
|
|
|
85
|
-
Generate API keys at https://programasweights.com/settings
|
|
82
|
+
Generate API keys at https://programasweights.com/settings. The SDK reads `PAW_API_KEY` from the environment automatically.
|
|
86
83
|
|
|
87
|
-
|
|
84
|
+
| | Anonymous | Authenticated |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| Compile rate limit | 20/hr | 60/hr |
|
|
87
|
+
| Name programs (slugs) | No | Yes |
|
|
88
88
|
|
|
89
89
|
## Program Naming
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
users can optionally assign a slug at compile time to create a human-readable
|
|
93
|
-
handle like `da03/json-fixer`. Both forms work everywhere:
|
|
91
|
+
Every compiled program gets an immutable hash ID (e.g. `a6b454023d41ac9ca845`). Authenticated users can also assign a human-readable slug:
|
|
94
92
|
|
|
95
93
|
```python
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
program = paw.compile("Classify sentiment", slug="my-classifier")
|
|
95
|
+
# program.id -> "a6b454023d41ac9ca845"
|
|
96
|
+
# program.slug -> "da03/my-classifier"
|
|
97
|
+
|
|
98
|
+
fn = paw.function("da03/my-classifier") # by slug (requires auth to create)
|
|
99
|
+
fn = paw.function("a6b454023d41ac9ca845") # by hash (always works)
|
|
98
100
|
```
|
|
99
101
|
|
|
100
102
|
## CLI
|
|
101
103
|
|
|
102
104
|
```bash
|
|
103
|
-
paw compile --spec "Classify sentiment" --
|
|
104
|
-
paw run --program
|
|
105
|
-
paw
|
|
106
|
-
paw
|
|
105
|
+
paw compile --spec "Classify sentiment" --json
|
|
106
|
+
paw run --program <program_id> --input "I love this!" --json
|
|
107
|
+
paw info <program_id> # show program metadata
|
|
108
|
+
paw rename <program_id> my-slug # name a program (requires auth)
|
|
107
109
|
paw login # save API key
|
|
108
110
|
```
|
|
109
111
|
|
|
@@ -112,9 +114,9 @@ paw login # save API key
|
|
|
112
114
|
## API
|
|
113
115
|
|
|
114
116
|
```python
|
|
115
|
-
paw.compile(spec
|
|
116
|
-
paw.function(
|
|
117
|
-
paw.login() #
|
|
117
|
+
paw.compile(spec) # compile (returns Program with .id)
|
|
118
|
+
paw.function(program_id_or_slug) # load for local inference
|
|
119
|
+
paw.login() # save API key
|
|
118
120
|
```
|
|
119
121
|
|
|
120
122
|
## Browse Programs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: programasweights
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Compile natural language specifications into neural programs that run locally via llama.cpp.
|
|
5
5
|
Project-URL: Homepage, https://programasweights.com
|
|
6
6
|
Project-URL: Repository, https://github.com/programasweights/programasweights-python
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
The `paw` command-line interface mirrors the Python SDK. Install from PyPI; the entry point is `paw`.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Global options
|
|
10
|
+
|
|
11
|
+
| Option | Description |
|
|
12
|
+
|--------|-------------|
|
|
13
|
+
| `--api-url` | Override the API base URL (default: `https://programasweights.com`). |
|
|
14
|
+
| `--api-key` | API key for authenticated requests. Also reads `PAW_API_KEY` env var. |
|
|
15
|
+
| `--json` | Machine-readable JSON output (supported by all subcommands). |
|
|
16
|
+
|
|
17
|
+
## `paw compile`
|
|
18
|
+
|
|
19
|
+
Compile a natural-language specification on the server.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
paw compile --spec "Classify message urgency" [--compiler paw-4b-qwen3-0.6b] [--slug my-classifier] [--json]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Option | Description |
|
|
26
|
+
|--------|-------------|
|
|
27
|
+
| `--spec` | Specification text to compile (required). |
|
|
28
|
+
| `--compiler` | Compiler model (default: `paw-4b-qwen3-0.6b`). |
|
|
29
|
+
| `--slug` | URL-safe handle (e.g. `my-classifier`). Creates a `username/slug` alias. Requires auth. |
|
|
30
|
+
| `--json` | JSON output with `program_id`, `slug`, `status`, `timings`. |
|
|
31
|
+
|
|
32
|
+
## `paw run`
|
|
33
|
+
|
|
34
|
+
Run inference locally against a compiled program.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
paw run --program <id_or_slug> --input "your text" [--max-tokens 512] [--temperature 0.0] [--json]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
| Option | Description |
|
|
41
|
+
|--------|-------------|
|
|
42
|
+
| `--program` | Program hash ID, slug (e.g. `da03/my-classifier`), or official name (e.g. `email-triage`). |
|
|
43
|
+
| `--input` | Input text for the program. |
|
|
44
|
+
| `--max-tokens` | Maximum tokens to generate (default: 512). |
|
|
45
|
+
| `--temperature` | Sampling temperature (default: 0.0). |
|
|
46
|
+
| `--verbose` | Print llama.cpp debug output. |
|
|
47
|
+
| `--json` | JSON output with `program`, `input`, `output`. |
|
|
48
|
+
|
|
49
|
+
## `paw rename`
|
|
50
|
+
|
|
51
|
+
Set or change a program's slug handle. Requires authentication.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
paw rename <program_id> <new-slug> [--json]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
| Argument | Description |
|
|
58
|
+
|----------|-------------|
|
|
59
|
+
| `program_id` | Program hash ID or current slug. |
|
|
60
|
+
| `new-slug` | New slug name (2-50 chars, lowercase alphanumeric and hyphens). |
|
|
61
|
+
|
|
62
|
+
## `paw info`
|
|
63
|
+
|
|
64
|
+
Show metadata for a program.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
paw info <program_id_or_slug> [--json]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## `paw login`
|
|
71
|
+
|
|
72
|
+
Save an API key for authenticated requests.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
paw login [key]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
If `key` is provided, saves it directly. If omitted, opens the browser to generate one at `programasweights.com/settings`.
|
|
79
|
+
|
|
80
|
+
## Agent workflow example
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
PROGRAM_ID=$(paw compile --spec "Classify urgency" --json | jq -r '.program_id')
|
|
84
|
+
paw run --program "$PROGRAM_ID" --input "Please review by EOD" --json
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Related
|
|
88
|
+
|
|
89
|
+
- [Python SDK Reference](python-sdk.md)
|
|
90
|
+
- [REST API Reference](rest-api.md)
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Python SDK Reference
|
|
2
|
+
|
|
3
|
+
The `programasweights` package compiles natural language specs into neural programs that run locally.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Import
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
import programasweights as paw
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## `paw.function`
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
fn = paw.function(name_or_id, n_ctx=2048, n_gpu_layers=0, verbose=False)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Loads a compiled program and returns a callable. Downloads the program and base model on first use; cached locally after that. Works offline after first download.
|
|
24
|
+
|
|
25
|
+
| Parameter | Description |
|
|
26
|
+
|-----------|-------------|
|
|
27
|
+
| `name_or_id` | Program hash ID (e.g. `a6b454023d41ac9ca845`), slug (e.g. `da03/my-classifier`), or official shorthand (e.g. `email-triage`). |
|
|
28
|
+
| `n_ctx` | Context length for the local runtime (default `2048`). |
|
|
29
|
+
| `n_gpu_layers` | GPU layers to offload (`0` = CPU-only, `-1` = all). Set `PAW_GPU_LAYERS` env var as default. |
|
|
30
|
+
| `verbose` | Enable verbose logging (default `False`). |
|
|
31
|
+
|
|
32
|
+
The returned callable:
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
output: str = fn(input_text, max_tokens=512, temperature=0.0)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
| Parameter | Description |
|
|
39
|
+
|-----------|-------------|
|
|
40
|
+
| `input_text` | Input string for the program. |
|
|
41
|
+
| `max_tokens` | Maximum tokens to generate (default `512`). |
|
|
42
|
+
| `temperature` | Sampling temperature (default `0.0`). |
|
|
43
|
+
|
|
44
|
+
## `paw.compile`
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
program = paw.compile(
|
|
48
|
+
spec,
|
|
49
|
+
compiler="paw-4b-qwen3-0.6b",
|
|
50
|
+
name=None,
|
|
51
|
+
tags=None,
|
|
52
|
+
public=True,
|
|
53
|
+
slug=None,
|
|
54
|
+
)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Compiles a natural language spec on the server. Returns a `Program` object.
|
|
58
|
+
|
|
59
|
+
| Parameter | Description |
|
|
60
|
+
|-----------|-------------|
|
|
61
|
+
| `spec` | Natural language specification (10-8000 chars). |
|
|
62
|
+
| `compiler` | Compiler name: `paw-4b-qwen3-0.6b` (Standard) or `paw-4b-gpt2` (Compact). |
|
|
63
|
+
| `name` | Display title for the hub (auto-generated if omitted). |
|
|
64
|
+
| `tags` | Tags for discovery (list of strings, max 10). |
|
|
65
|
+
| `public` | Whether to list on the public hub (default `True`). |
|
|
66
|
+
| `slug` | URL-safe handle (e.g. `my-classifier`). Creates a `username/slug` alias. Requires authentication. |
|
|
67
|
+
|
|
68
|
+
**Return value** -- `Program` object:
|
|
69
|
+
|
|
70
|
+
| Attribute | Description |
|
|
71
|
+
|-----------|-------------|
|
|
72
|
+
| `id` | Hash-based program identifier. Use with `paw.function(program.id)`. |
|
|
73
|
+
| `slug` | Full slug handle (e.g. `da03/my-classifier`) if one was created, `None` otherwise. |
|
|
74
|
+
| `status` | `"ready"` on success, `"failed"` on error. |
|
|
75
|
+
| `compiler_snapshot` | Exact compiler version used. |
|
|
76
|
+
| `timings` | Timing metadata from the server. |
|
|
77
|
+
| `error` | Error message when compilation fails. |
|
|
78
|
+
|
|
79
|
+
## `paw.login`
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
paw.login(key=None)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Saves an API key for authenticated requests. If `key` is provided, saves it directly. If omitted, opens the browser to generate a key at `programasweights.com/settings`.
|
|
86
|
+
|
|
87
|
+
Keys are stored in `~/.config/programasweights/config.json` and loaded automatically on subsequent imports.
|
|
88
|
+
|
|
89
|
+
You can also set the `PAW_API_KEY` environment variable instead:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
export PAW_API_KEY=paw_sk_...
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Configuration
|
|
96
|
+
|
|
97
|
+
| Name | Description |
|
|
98
|
+
|------|-------------|
|
|
99
|
+
| `paw.api_url` | Base URL for API requests. Default: `https://programasweights.com`. Override with `PAW_API_URL` env var. |
|
|
100
|
+
| `paw.api_key` | API key for authenticated calls. Set via `paw.login()` or `PAW_API_KEY` env var. |
|
|
101
|
+
| `paw.__version__` | Installed package version string. |
|
|
102
|
+
|
|
103
|
+
## Related
|
|
104
|
+
|
|
105
|
+
- [CLI Reference](cli.md)
|
|
106
|
+
- [REST API Reference](rest-api.md)
|
|
107
|
+
- [Naming Programs](../getting-started/naming-programs.md)
|
|
@@ -69,39 +69,50 @@ List or search programs.
|
|
|
69
69
|
|
|
70
70
|
### `GET /programs/{id_or_slug}`
|
|
71
71
|
|
|
72
|
-
Program detail
|
|
72
|
+
Program detail. Accepts hash ID or slug. Private programs return 404 to non-owners.
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
**Response** includes: `id`, `name`, `spec`, `interpreter`, `public`, `aliases`, `user_slug`, `author`, `tags`, `upvotes`, `downloads`, `created_at`.
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
### `PATCH /programs/{id_or_slug}`
|
|
77
|
+
|
|
78
|
+
Update program metadata. **Authentication required.**
|
|
79
|
+
|
|
80
|
+
Owner-only fields: `public`, `name`, `tags`. Any authenticated user can set their own `slug`.
|
|
81
|
+
|
|
82
|
+
| Field | Type | Description |
|
|
83
|
+
|-------|------|-------------|
|
|
84
|
+
| `public` | boolean | Visibility (owner only). |
|
|
85
|
+
| `name` | string | Display title, max 100 chars (owner only). |
|
|
86
|
+
| `tags` | string[] | Tags, max 5 items (owner only). |
|
|
87
|
+
| `slug` | string | URL-safe handle, 2-50 chars, `^[a-z0-9][a-z0-9-]*[a-z0-9]$`. Creates/replaces your alias for this program. |
|
|
88
|
+
|
|
89
|
+
### `GET /programs/{id_or_slug}/download`
|
|
90
|
+
|
|
91
|
+
Redirects to the Hugging Face CDN for the `.paw` artifact. Private programs return 404 to non-owners.
|
|
77
92
|
|
|
78
93
|
### `GET /programs/resolve/{slug}`
|
|
79
94
|
|
|
80
|
-
Resolve a slug or
|
|
95
|
+
Resolve a slug (e.g. `da03/my-classifier` or bare `email-triage`) to a canonical `program_id`.
|
|
81
96
|
|
|
82
97
|
### `POST /programs/{id}/alias`
|
|
83
98
|
|
|
84
|
-
Create
|
|
85
|
-
|
|
86
|
-
**Request body (JSON):**
|
|
99
|
+
Create or update your alias for a program. **Authentication required.** If you already have an alias for this program, it is replaced (atomic update).
|
|
87
100
|
|
|
88
101
|
| Field | Type | Description |
|
|
89
102
|
|-------|------|-------------|
|
|
90
|
-
| `slug` | string |
|
|
103
|
+
| `slug` | string | Slug name, 2-50 chars, lowercase alphanumeric and hyphens. |
|
|
91
104
|
|
|
92
|
-
### `POST /programs/{
|
|
105
|
+
### `POST /programs/{id_or_slug}/vote`
|
|
93
106
|
|
|
94
|
-
Submit a vote
|
|
95
|
-
|
|
96
|
-
**Request body (JSON):**
|
|
107
|
+
Submit a vote. **Authentication required.**
|
|
97
108
|
|
|
98
109
|
| Field | Type | Description |
|
|
99
110
|
|-------|------|-------------|
|
|
100
|
-
| `vote` | integer | `1` (
|
|
111
|
+
| `vote` | integer | `1` (upvote) or `-1` (downvote). Same value again removes the vote. |
|
|
101
112
|
|
|
102
113
|
### `GET /programs/{id}/cases` and `POST /programs/{id}/cases`
|
|
103
114
|
|
|
104
|
-
Community
|
|
115
|
+
Community case submission for a program.
|
|
105
116
|
|
|
106
117
|
### `GET /auth/github`
|
|
107
118
|
|
|
@@ -27,7 +27,8 @@ def cmd_compile(args):
|
|
|
27
27
|
if not args.json:
|
|
28
28
|
print(f"Compiling: {args.spec[:80]}...")
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
public = not getattr(args, 'private', False)
|
|
31
|
+
program = paw.compile(args.spec, compiler=args.compiler, slug=getattr(args, 'slug', None), public=public)
|
|
31
32
|
|
|
32
33
|
if args.json:
|
|
33
34
|
print(json.dumps({
|
|
@@ -170,6 +171,7 @@ def main():
|
|
|
170
171
|
p.add_argument("--spec", required=True, help="Natural language specification")
|
|
171
172
|
p.add_argument("--compiler", default="paw-4b-qwen3-0.6b", help="Compiler model")
|
|
172
173
|
p.add_argument("--slug", default=None, help="URL-safe handle (e.g. 'message-classifier')")
|
|
174
|
+
p.add_argument("--private", action="store_true", help="Make program private (not listed on hub)")
|
|
173
175
|
p.add_argument("--json", action="store_true", help="JSON output")
|
|
174
176
|
|
|
175
177
|
p = sub.add_parser("run", help="Run a program locally via llama.cpp")
|
|
@@ -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.1"
|
|
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"
|
|
@@ -162,16 +162,23 @@ async def submit_compile(
|
|
|
162
162
|
"message": "Authentication required to set a program slug.",
|
|
163
163
|
"request_id": request_id,
|
|
164
164
|
})
|
|
165
|
-
|
|
165
|
+
existing_name = await db.execute(
|
|
166
166
|
select(Alias).where(Alias.owner_id == user.id, Alias.slug_name == req.slug)
|
|
167
167
|
)
|
|
168
|
-
if
|
|
168
|
+
if existing_name.scalar_one_or_none():
|
|
169
169
|
raise HTTPException(status_code=409, detail={
|
|
170
170
|
"error": "slug_taken",
|
|
171
171
|
"message": f"You already have a program named '{req.slug}'. Choose a different name.",
|
|
172
172
|
"request_id": request_id,
|
|
173
173
|
})
|
|
174
|
-
|
|
174
|
+
existing_program_alias = await db.execute(
|
|
175
|
+
select(Alias).where(Alias.owner_id == user.id, Alias.program_id == pid)
|
|
176
|
+
)
|
|
177
|
+
old = existing_program_alias.scalar_one_or_none()
|
|
178
|
+
if old:
|
|
179
|
+
old.slug_name = req.slug
|
|
180
|
+
else:
|
|
181
|
+
db.add(Alias(slug_name=req.slug, program_id=pid, owner_id=user.id))
|
|
175
182
|
await db.commit()
|
|
176
183
|
username = user.username or f"user-{user.id}"
|
|
177
184
|
created_slug = f"{username}/{req.slug}"
|
|
@@ -490,12 +490,14 @@ async def update_program(
|
|
|
490
490
|
"error": "slug_taken",
|
|
491
491
|
"message": f"You already have a program named '{raw_slug}'.",
|
|
492
492
|
})
|
|
493
|
-
|
|
493
|
+
old_alias_r = await db.execute(
|
|
494
494
|
select(Alias).where(Alias.program_id == program.id, Alias.owner_id == user.id)
|
|
495
495
|
)
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
496
|
+
old_alias = old_alias_r.scalar_one_or_none()
|
|
497
|
+
if old_alias:
|
|
498
|
+
old_alias.slug_name = raw_slug
|
|
499
|
+
else:
|
|
500
|
+
db.add(Alias(slug_name=raw_slug, program_id=program.id, owner_id=user.id))
|
|
499
501
|
username = user.username or f"user-{user.id}"
|
|
500
502
|
created_slug = f"{username}/{raw_slug}"
|
|
501
503
|
else:
|
|
@@ -695,9 +697,9 @@ async def create_alias(
|
|
|
695
697
|
)
|
|
696
698
|
old_alias = existing_program.scalar_one_or_none()
|
|
697
699
|
if old_alias:
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
700
|
+
old_alias.slug_name = raw_slug
|
|
701
|
+
else:
|
|
702
|
+
db.add(Alias(slug_name=raw_slug, program_id=program.id, owner_id=user.id))
|
|
701
703
|
await db.commit()
|
|
702
704
|
username = user.username or f"user-{user.id}"
|
|
703
705
|
return {"slug": f"{username}/{raw_slug}", "program_id": program.id}
|
|
@@ -328,3 +328,117 @@ class TestAuth:
|
|
|
328
328
|
assert result.returncode == 0
|
|
329
329
|
data = json.loads(result.stdout)
|
|
330
330
|
assert data.get("program_id")
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
# ── Phase 9: Slug validation ──
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
class TestSlugValidation:
|
|
337
|
+
@needs_auth
|
|
338
|
+
def test_slug_too_short(self):
|
|
339
|
+
old_key = paw.api_key
|
|
340
|
+
try:
|
|
341
|
+
paw.api_key = API_KEY
|
|
342
|
+
with pytest.raises(Exception) as exc_info:
|
|
343
|
+
paw.compile("Classify text.", slug="x")
|
|
344
|
+
assert "422" in str(exc_info.value) or "invalid" in str(exc_info.value).lower()
|
|
345
|
+
finally:
|
|
346
|
+
paw.api_key = old_key
|
|
347
|
+
|
|
348
|
+
@needs_auth
|
|
349
|
+
def test_slug_invalid_characters(self):
|
|
350
|
+
old_key = paw.api_key
|
|
351
|
+
try:
|
|
352
|
+
paw.api_key = API_KEY
|
|
353
|
+
with pytest.raises(Exception):
|
|
354
|
+
paw.compile("Classify text.", slug="BAD SLUG!")
|
|
355
|
+
finally:
|
|
356
|
+
paw.api_key = old_key
|
|
357
|
+
|
|
358
|
+
@needs_auth
|
|
359
|
+
def test_slug_with_uppercase_rejected(self):
|
|
360
|
+
old_key = paw.api_key
|
|
361
|
+
try:
|
|
362
|
+
paw.api_key = API_KEY
|
|
363
|
+
with pytest.raises(Exception):
|
|
364
|
+
paw.compile("Classify text.", slug="MyProgram")
|
|
365
|
+
finally:
|
|
366
|
+
paw.api_key = old_key
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
# ── Phase 10: Privacy ──
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
class TestPrivacy:
|
|
373
|
+
@needs_auth
|
|
374
|
+
def test_compile_private_program(self):
|
|
375
|
+
import httpx
|
|
376
|
+
old_key = paw.api_key
|
|
377
|
+
try:
|
|
378
|
+
paw.api_key = API_KEY
|
|
379
|
+
program = paw.compile("Private test program for counting vowels.", public=False)
|
|
380
|
+
assert program.id
|
|
381
|
+
|
|
382
|
+
resp = httpx.get(
|
|
383
|
+
f"{paw.api_url}/api/v1/programs/{program.id}",
|
|
384
|
+
timeout=10.0,
|
|
385
|
+
)
|
|
386
|
+
assert resp.status_code == 404, "Private program should return 404 to unauthenticated users"
|
|
387
|
+
finally:
|
|
388
|
+
paw.api_key = old_key
|
|
389
|
+
|
|
390
|
+
@needs_auth
|
|
391
|
+
def test_compile_public_default(self):
|
|
392
|
+
import httpx
|
|
393
|
+
old_key = paw.api_key
|
|
394
|
+
try:
|
|
395
|
+
paw.api_key = API_KEY
|
|
396
|
+
program = paw.compile("Public test program for counting words.")
|
|
397
|
+
assert program.id
|
|
398
|
+
|
|
399
|
+
resp = httpx.get(
|
|
400
|
+
f"{paw.api_url}/api/v1/programs/{program.id}",
|
|
401
|
+
timeout=10.0,
|
|
402
|
+
)
|
|
403
|
+
assert resp.status_code == 200, "Public program should be accessible"
|
|
404
|
+
finally:
|
|
405
|
+
paw.api_key = old_key
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
# ── Phase 11: CLI rename ──
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
class TestCLIRename:
|
|
412
|
+
@needs_auth
|
|
413
|
+
def test_cli_rename(self):
|
|
414
|
+
import time
|
|
415
|
+
old_key = paw.api_key
|
|
416
|
+
try:
|
|
417
|
+
paw.api_key = API_KEY
|
|
418
|
+
program = paw.compile("Test rename program for validation.")
|
|
419
|
+
slug = f"rename-test-{int(time.time()) % 100000}"
|
|
420
|
+
|
|
421
|
+
result = subprocess.run(
|
|
422
|
+
[sys.executable, "-m", "programasweights.cli",
|
|
423
|
+
"--api-key", API_KEY,
|
|
424
|
+
"rename", program.id, slug, "--json"],
|
|
425
|
+
capture_output=True, text=True,
|
|
426
|
+
)
|
|
427
|
+
assert result.returncode == 0
|
|
428
|
+
data = json.loads(result.stdout)
|
|
429
|
+
assert data.get("slug")
|
|
430
|
+
assert slug in data["slug"]
|
|
431
|
+
finally:
|
|
432
|
+
paw.api_key = old_key
|
|
433
|
+
|
|
434
|
+
@needs_auth
|
|
435
|
+
def test_cli_compile_private(self):
|
|
436
|
+
result = subprocess.run(
|
|
437
|
+
[sys.executable, "-m", "programasweights.cli",
|
|
438
|
+
"--api-key", API_KEY,
|
|
439
|
+
"compile", "--spec", "Private CLI test.", "--private", "--json"],
|
|
440
|
+
capture_output=True, text=True,
|
|
441
|
+
)
|
|
442
|
+
assert result.returncode == 0
|
|
443
|
+
data = json.loads(result.stdout)
|
|
444
|
+
assert data.get("program_id")
|
|
@@ -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 programasweights --extra-index-url "$EXTRA_INDEX" -q 2>&1
|
|
42
|
+
$PIP install --no-cache-dir 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"
|
{programasweights-0.2.0 → programasweights-0.2.1}/web-app/frontend/src/components/AboutPage.tsx
RENAMED
|
@@ -140,7 +140,7 @@ const AboutPage: React.FC = () => {
|
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
142
|
q: 'Python or JavaScript?',
|
|
143
|
-
a: 'Use the Python SDK (pip install programasweights) for backend servers and scripts. Use the browser SDK (npm install @programasweights/web) for client-side web apps where data stays on the user\'s device.',
|
|
143
|
+
a: 'Use the Python SDK (pip install programasweights --extra-index-url https://pypi.programasweights.com/simple/) for backend servers and scripts. Use the browser SDK (npm install @programasweights/web) for client-side web apps where data stays on the user\'s device.',
|
|
144
144
|
},
|
|
145
145
|
].map((faq) => (
|
|
146
146
|
<div key={faq.q}>
|