nooa 0.0.7__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.
- nooa-0.0.7/.dockerignore +119 -0
- nooa-0.0.7/.env.example +6 -0
- nooa-0.0.7/.github/ISSUE_TEMPLATE/bug_report.md +24 -0
- nooa-0.0.7/.github/ISSUE_TEMPLATE/feature_request.md +18 -0
- nooa-0.0.7/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- nooa-0.0.7/.github/workflows/ci.yml +117 -0
- nooa-0.0.7/.github/workflows/publish.yml +224 -0
- nooa-0.0.7/.gitignore +407 -0
- nooa-0.0.7/.gitleaks.toml +11 -0
- nooa-0.0.7/.pre-commit-config.yaml +103 -0
- nooa-0.0.7/AGENTS.md +207 -0
- nooa-0.0.7/CHANGELOG.md +9 -0
- nooa-0.0.7/CONTRIBUTING.md +92 -0
- nooa-0.0.7/LICENSE +184 -0
- nooa-0.0.7/PKG-INFO +271 -0
- nooa-0.0.7/README.md +218 -0
- nooa-0.0.7/RELEASING.md +153 -0
- nooa-0.0.7/SECURITY.md +25 -0
- nooa-0.0.7/THIRD_PARTY_NOTICES.md +749 -0
- nooa-0.0.7/assets/nvidia-labs-object-oriented-agents-dark.svg +24 -0
- nooa-0.0.7/assets/nvidia-labs-object-oriented-agents-light.svg +24 -0
- nooa-0.0.7/assets/nvidia-labs-object-oriented-agents.svg +37 -0
- nooa-0.0.7/conftest.py +18 -0
- nooa-0.0.7/examples/README.md +581 -0
- nooa-0.0.7/examples/advanced/__init__.py +0 -0
- nooa-0.0.7/examples/advanced/codeact_event_sequence.py +106 -0
- nooa-0.0.7/examples/advanced/memory.py +30 -0
- nooa-0.0.7/examples/advanced/prefill.py +128 -0
- nooa-0.0.7/examples/advanced/swappable_execution_engines.py +145 -0
- nooa-0.0.7/examples/advanced/tracing_langfuse.py +101 -0
- nooa-0.0.7/examples/advanced/tracing_otlp.py +51 -0
- nooa-0.0.7/examples/advanced/tracing_phoenix.py +110 -0
- nooa-0.0.7/examples/arc_agi_3/README.md +166 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/README.md +49 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/analysis/build_comparison.py +285 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/memory/analyze_memory.py +159 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/digest_escape.py +189 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/first_violation.py +153 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/rt_common.py +264 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/run_scan.sh +22 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/scan_agent_actions.py +165 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/scan_escape.py +163 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/scan_harness_exposure.py +118 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/scan_internet.py +134 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/scan_memstore_xref.py +101 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/scan_name_leak.py +136 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/scan_returned_data.py +162 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/test_guard_evasion.py +91 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/test_harness_log_exposure.py +196 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/red_team/test_memstore_residual.py +84 -0
- nooa-0.0.7/examples/arc_agi_3/analysis/world_model/analyze_world_models.py +221 -0
- nooa-0.0.7/examples/arc_agi_3/analyze_knowledge.py +135 -0
- nooa-0.0.7/examples/arc_agi_3/arc_agi_3/__init__.py +9 -0
- nooa-0.0.7/examples/arc_agi_3/arc_agi_3/containers.py +118 -0
- nooa-0.0.7/examples/arc_agi_3/arc_agi_3/environment.py +3061 -0
- nooa-0.0.7/examples/arc_agi_3/arc_agi_3/grid.py +541 -0
- nooa-0.0.7/examples/arc_agi_3/arc_agi_3/rhae.py +136 -0
- nooa-0.0.7/examples/arc_agi_3/arc_llm.py +126 -0
- nooa-0.0.7/examples/arc_agi_3/backfill_messages.py +115 -0
- nooa-0.0.7/examples/arc_agi_3/compare.py +116 -0
- nooa-0.0.7/examples/arc_agi_3/configs/competition.yaml +87 -0
- nooa-0.0.7/examples/arc_agi_3/configs/offline.yaml +60 -0
- nooa-0.0.7/examples/arc_agi_3/cost_report.py +100 -0
- nooa-0.0.7/examples/arc_agi_3/dump_llm_messages.py +188 -0
- nooa-0.0.7/examples/arc_agi_3/experiment.py +180 -0
- nooa-0.0.7/examples/arc_agi_3/harness.py +722 -0
- nooa-0.0.7/examples/arc_agi_3/launcher.py +357 -0
- nooa-0.0.7/examples/arc_agi_3/recorder.py +274 -0
- nooa-0.0.7/examples/arc_agi_3/run_multi.py +762 -0
- nooa-0.0.7/examples/arc_agi_3/run_solver.py +570 -0
- nooa-0.0.7/examples/arc_agi_3/sandbox.py +200 -0
- nooa-0.0.7/examples/arc_agi_3/sandbox_mount_helper.py +102 -0
- nooa-0.0.7/examples/arc_agi_3/scorecard_broker.py +132 -0
- nooa-0.0.7/examples/arc_agi_3/skills/grid-game-solver/SKILL.md +93 -0
- nooa-0.0.7/examples/arc_agi_3/skills/interactive-game-solver/SKILL.md +51 -0
- nooa-0.0.7/examples/arc_agi_3/solver_agent.py +1175 -0
- nooa-0.0.7/examples/arc_agi_3/tests/test_guardrails_and_autoyield.py +118 -0
- nooa-0.0.7/examples/arc_agi_3/tests/test_llm_routing_and_pricing.py +86 -0
- nooa-0.0.7/examples/arc_agi_3/tests/test_name_leak_regression.py +100 -0
- nooa-0.0.7/examples/arc_agi_3/tests/test_no_action_cap.py +219 -0
- nooa-0.0.7/examples/arc_agi_3/tests/test_offline_e2e.py +133 -0
- nooa-0.0.7/examples/arc_agi_3/tests/test_run_solver_fixes.py +155 -0
- nooa-0.0.7/examples/arc_agi_3/tests/test_wait_guard_and_helpers.py +191 -0
- nooa-0.0.7/examples/arc_agi_3/tui_multi_game_viewer.py +116 -0
- nooa-0.0.7/examples/arc_agi_3/uid_sandbox.py +131 -0
- nooa-0.0.7/examples/arc_agi_3/viewer.py +639 -0
- nooa-0.0.7/examples/arc_agi_3/viewer_event_exporter.py +453 -0
- nooa-0.0.7/examples/arc_agi_3/viewer_trace_exporter.py +118 -0
- nooa-0.0.7/examples/assets/frontend-design/LICENSE.txt +177 -0
- nooa-0.0.7/examples/assets/frontend-design/SKILL.md +42 -0
- nooa-0.0.7/examples/assets/test_image.png +0 -0
- nooa-0.0.7/examples/assets/test_text.png +0 -0
- nooa-0.0.7/examples/assets/wiki_mcp_server.py +87 -0
- nooa-0.0.7/examples/benchmarks/README.md +38 -0
- nooa-0.0.7/examples/benchmarks/__init__.py +0 -0
- nooa-0.0.7/examples/benchmarks/bench_agent.py +35 -0
- nooa-0.0.7/examples/benchmarks/harbor_adapter.py +141 -0
- nooa-0.0.7/examples/benchmarks/harbor_minimal.yaml +23 -0
- nooa-0.0.7/examples/cybergym/.dockerignore +11 -0
- nooa-0.0.7/examples/cybergym/.gitignore +9 -0
- nooa-0.0.7/examples/cybergym/Dockerfile +30 -0
- nooa-0.0.7/examples/cybergym/README.md +234 -0
- nooa-0.0.7/examples/cybergym/Technical_Report.md +134 -0
- nooa-0.0.7/examples/cybergym/nooa_cybergym/__init__.py +7 -0
- nooa-0.0.7/examples/cybergym/nooa_cybergym/llm_config.yaml +13 -0
- nooa-0.0.7/examples/cybergym/nooa_cybergym/main.py +623 -0
- nooa-0.0.7/examples/cybergym/nooa_cybergym/run.py +322 -0
- nooa-0.0.7/examples/cybergym/pyproject.toml +26 -0
- nooa-0.0.7/examples/cybergym/scripts/run_10_tasks.sh +131 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/.gitattributes +10 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/result.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_001 +9 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_002 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_003 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_004 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_005 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_006 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_007 +1023 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_008 +1103 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_009 +5023 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_010 +5103 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_011 +20103 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_012 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_013 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_014 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_015 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_016 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_017 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_018 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_019 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_020 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/submissions/poc_021 +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_11248/trajectory.json +1173 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/result.txt +19 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/submissions/poc_001 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/submissions/poc_002 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/submissions/poc_003 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/submissions/poc_004 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/submissions/poc_005 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14537/trajectory.json +835 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/result.txt +23 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/submissions/poc_001 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/submissions/poc_002 +1 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/submissions/poc_003 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/submissions/poc_004 +1 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/submissions/poc_005 +1 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/submissions/poc_006 +1 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/submissions/poc_007 +1 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_14912/trajectory.json +2779 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/result.txt +27 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/submissions/poc_001 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/submissions/poc_002 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/submissions/poc_003 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/submissions/poc_004 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/submissions/poc_005 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/submissions/poc_006 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/submissions/poc_007 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_1513/trajectory.json +1069 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_16969/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_16969/result.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_16969/submissions/poc_001 +2 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_16969/submissions/poc_002 +2 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_16969/submissions/poc_003 +2 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_16969/submissions/poc_004 +2 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_16969/trajectory.json +1069 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/result.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/submissions/poc_001 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/submissions/poc_002 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/submissions/poc_003 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/submissions/poc_004 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/submissions/poc_005 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_17006/trajectory.json +1199 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_18615/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_18615/result.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_18615/submissions/poc_001 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_18615/submissions/poc_002 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_18615/submissions/poc_003 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_18615/submissions/poc_004 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_arvo_18615/trajectory.json +419 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_372994344/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_372994344/result.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_372994344/submissions/poc_001 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_372994344/submissions/poc_002 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_372994344/submissions/poc_003 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_372994344/submissions/poc_004 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_372994344/trajectory.json +939 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_386128948/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_386128948/result.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_386128948/submissions/poc_001 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_386128948/submissions/poc_002 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_386128948/submissions/poc_003 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_386128948/submissions/poc_004 +0 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_386128948/trajectory.json +471 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_42536107/output.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_42536107/result.txt +15 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_42536107/submissions/poc_001 +3 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_42536107/submissions/poc_002 +3 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_42536107/submissions/poc_003 +3 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_42536107/submissions/poc_004 +3 -0
- nooa-0.0.7/examples/cybergym/task_artifacts/cybergym_oss-fuzz_42536107/trajectory.json +783 -0
- nooa-0.0.7/examples/nooa-slides-prototype.ipynb +831 -0
- nooa-0.0.7/examples/quickstart/.mcp.json +9 -0
- nooa-0.0.7/examples/quickstart/01_first_generation_method.py +24 -0
- nooa-0.0.7/examples/quickstart/02_structured_outputs.py +34 -0
- nooa-0.0.7/examples/quickstart/03_codeact_tools.py +52 -0
- nooa-0.0.7/examples/quickstart/04_strategies.py +53 -0
- nooa-0.0.7/examples/quickstart/05_progressive_disclosure.py +47 -0
- nooa-0.0.7/examples/quickstart/06_tracing.py +60 -0
- nooa-0.0.7/examples/quickstart/07_dynamic_prompts.py +52 -0
- nooa-0.0.7/examples/quickstart/08_context_blocks.py +67 -0
- nooa-0.0.7/examples/quickstart/09_summarization.py +57 -0
- nooa-0.0.7/examples/quickstart/10_skills.py +51 -0
- nooa-0.0.7/examples/quickstart/11_mcp.py +51 -0
- nooa-0.0.7/examples/quickstart/12_memory.py +107 -0
- nooa-0.0.7/examples/quickstart/13_multimodal.py +102 -0
- nooa-0.0.7/examples/quickstart/14_atif_trajectory.py +71 -0
- nooa-0.0.7/examples/quickstart/15_nemo_relay.py +362 -0
- nooa-0.0.7/examples/quickstart/__init__.py +12 -0
- nooa-0.0.7/examples/util/__init__.py +0 -0
- nooa-0.0.7/examples/util/example_llm.py +36 -0
- nooa-0.0.7/examples/util/presentation_utils.py +87 -0
- nooa-0.0.7/packages/nooa-bench/README.md +15 -0
- nooa-0.0.7/packages/nooa-bench/pyproject.toml +46 -0
- nooa-0.0.7/packages/nooa-bench/src/nooa_bench/__init__.py +19 -0
- nooa-0.0.7/packages/nooa-bench/src/nooa_bench/bench_agent.py +256 -0
- nooa-0.0.7/packages/nooa-bench/src/nooa_bench/protocol.py +191 -0
- nooa-0.0.7/packages/nooa-bench/src/nooa_bench/runner.py +235 -0
- nooa-0.0.7/packages/nooa-bench/src/nooa_bench/trace_analyzer.py +186 -0
- nooa-0.0.7/packages/nooa-bench/tests/test_bench_agent.py +277 -0
- nooa-0.0.7/packages/nooa-cli/README.md +25 -0
- nooa-0.0.7/packages/nooa-cli/docs/activity-introspection-design.md +75 -0
- nooa-0.0.7/packages/nooa-cli/pyproject.toml +71 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/AGENTS.md +162 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/__init__.py +70 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/__main__.py +8 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/_common.py +45 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/__init__.py +106 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/_otlp_helpers.py +122 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/_template.py +89 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/config.py +356 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/delete_traces.py +63 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/eval.py +68 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/import_harbor.py +512 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/import_traces.py +189 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/start_dev.py +145 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/commands/traces.py +316 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/completion.py +253 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/__init__.py +0 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/_tree_sitter_backend.py +351 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/pyp/__init__.py +71 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/pyp/errors.py +92 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/pyp/sources.py +458 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/pyp/stream.py +527 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/pyp/tests/__init__.py +0 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/pyp/tests/test_pyp.py +394 -0
- nooa-0.0.7/packages/nooa-cli/src/nooa_cli/tools/repo_tools.py +902 -0
- nooa-0.0.7/packages/nooa-cli/tests/__init__.py +0 -0
- nooa-0.0.7/packages/nooa-cli/tests/test_cli_smoke.py +20 -0
- nooa-0.0.7/packages/nooa-memory/README.md +17 -0
- nooa-0.0.7/packages/nooa-memory/pyproject.toml +46 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/README.md +450 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/__init__.py +144 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/config.py +202 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/descriptors.py +58 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/embeddings.py +145 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/forgetting.py +98 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/generative.py +205 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/manager.py +933 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/memory_skill/__init__.py +88 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/monitoring.py +120 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/observability.py +174 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/references.py +163 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/reflection.py +348 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/retrieval.py +369 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/schema.py +372 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/store.py +487 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/tracing_bridge.py +90 -0
- nooa-0.0.7/packages/nooa-memory/src/nooa_memory/vector_backends.py +225 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_background_reflect_and_hygiene.py +196 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_authoring.py +112 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_contract.py +161 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_embeddings.py +75 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_embeddings_integration.py +44 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_forgetting.py +137 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_generative.py +306 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_manager.py +268 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_monitoring.py +108 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_observability.py +298 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_owner.py +156 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_owner_roles.py +166 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_references.py +177 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_reflection.py +155 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_reflection_interrupt.py +219 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_retrieval.py +101 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_routes.py +396 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_schema.py +110 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_skill.py +78 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_store.py +134 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_store_v2.py +219 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_todo.py +226 -0
- nooa-0.0.7/packages/nooa-memory/tests/memory/test_memory_vector_backends.py +166 -0
- nooa-0.0.7/pyproject.toml +316 -0
- nooa-0.0.7/scripts/check_license_headers.py +82 -0
- nooa-0.0.7/scripts/hooks/check_large_files.py +34 -0
- nooa-0.0.7/scripts/hooks/check_merge_conflict.py +20 -0
- nooa-0.0.7/scripts/hooks/check_spdx.py +43 -0
- nooa-0.0.7/scripts/hooks/check_yaml.py +19 -0
- nooa-0.0.7/scripts/hooks/end_of_file_fixer.py +25 -0
- nooa-0.0.7/scripts/hooks/trailing_whitespace.py +48 -0
- nooa-0.0.7/scripts/rename_imports.py +146 -0
- nooa-0.0.7/skills/README.md +53 -0
- nooa-0.0.7/skills/context-blocks/SKILL.md +144 -0
- nooa-0.0.7/skills/nooa-agent-authoring/SKILL.md +232 -0
- nooa-0.0.7/skills/nooa-agentdoc/SKILL.md +156 -0
- nooa-0.0.7/skills/nooa-capturing-traces/SKILL.md +127 -0
- nooa-0.0.7/skills/nooa-channels/SKILL.md +86 -0
- nooa-0.0.7/skills/nooa-codeact-advanced/SKILL.md +129 -0
- nooa-0.0.7/skills/nooa-context-and-state/SKILL.md +136 -0
- nooa-0.0.7/skills/nooa-middleware-hooks/SKILL.md +102 -0
- nooa-0.0.7/skills/nooa-self-extending/SKILL.md +91 -0
- nooa-0.0.7/skills/nooa-tools-and-skills/SKILL.md +124 -0
- nooa-0.0.7/skills/nooa-trace-explorer/SKILL.md +106 -0
- nooa-0.0.7/skills/nooa-trace-viewer/SKILL.md +106 -0
- nooa-0.0.7/skills/refine-agent-prompt/SKILL.md +311 -0
- nooa-0.0.7/src/nooa/__init__.py +180 -0
- nooa-0.0.7/src/nooa/_logging.py +94 -0
- nooa-0.0.7/src/nooa/_version.py +22 -0
- nooa-0.0.7/src/nooa/_visible.py +26 -0
- nooa-0.0.7/src/nooa/agent.py +630 -0
- nooa-0.0.7/src/nooa/agentdoc/__init__.py +183 -0
- nooa-0.0.7/src/nooa/agentdoc/_discover.py +361 -0
- nooa-0.0.7/src/nooa/agentdoc/_docs.py +270 -0
- nooa-0.0.7/src/nooa/agentdoc/_info.py +70 -0
- nooa-0.0.7/src/nooa/agentdoc/_metadata.py +63 -0
- nooa-0.0.7/src/nooa/agentdoc/_pformat.py +1977 -0
- nooa-0.0.7/src/nooa/agentdoc/_structured.py +1685 -0
- nooa-0.0.7/src/nooa/agentdoc/_truncating_stream.py +261 -0
- nooa-0.0.7/src/nooa/agentdoc/_visibility.py +304 -0
- nooa-0.0.7/src/nooa/agentdoc/_visibility.pyi +31 -0
- nooa-0.0.7/src/nooa/agentdoc/adapters/__init__.py +51 -0
- nooa-0.0.7/src/nooa/agentdoc/adapters/pandas.py +79 -0
- nooa-0.0.7/src/nooa/agentdoc/adapters/plotly.py +363 -0
- nooa-0.0.7/src/nooa/agentdoc/core.py +478 -0
- nooa-0.0.7/src/nooa/agentdoc/doc_config.py +38 -0
- nooa-0.0.7/src/nooa/agentdoc/ext.py +88 -0
- nooa-0.0.7/src/nooa/agentdoc/format.py +60 -0
- nooa-0.0.7/src/nooa/agentdoc/introspect.py +31 -0
- nooa-0.0.7/src/nooa/agentdoc/protocols.py +107 -0
- nooa-0.0.7/src/nooa/agentdoc/py.typed +0 -0
- nooa-0.0.7/src/nooa/agentdoc/registry.py +192 -0
- nooa-0.0.7/src/nooa/agentdoc/tests/test_builtins_structured_instance.py +88 -0
- nooa-0.0.7/src/nooa/agentdoc/tests/test_event_max_string_override.py +77 -0
- nooa-0.0.7/src/nooa/agentdoc/visibility.py +41 -0
- nooa-0.0.7/src/nooa/agents/__init__.py +17 -0
- nooa-0.0.7/src/nooa/agents/summarization.py +729 -0
- nooa-0.0.7/src/nooa/atif/__init__.py +49 -0
- nooa-0.0.7/src/nooa/atif/exporter.py +1397 -0
- nooa-0.0.7/src/nooa/atif/install.py +339 -0
- nooa-0.0.7/src/nooa/atif/schema.py +388 -0
- nooa-0.0.7/src/nooa/config/__init__.py +65 -0
- nooa-0.0.7/src/nooa/config/execution_config.py +24 -0
- nooa-0.0.7/src/nooa/config/model_config.py +59 -0
- nooa-0.0.7/src/nooa/config/resolved.py +128 -0
- nooa-0.0.7/src/nooa/config/strategy_config.py +198 -0
- nooa-0.0.7/src/nooa/config/summarizer_config.py +49 -0
- nooa-0.0.7/src/nooa/config/truncation_config.py +274 -0
- nooa-0.0.7/src/nooa/context_blocks/__init__.py +108 -0
- nooa-0.0.7/src/nooa/context_blocks/events.py +282 -0
- nooa-0.0.7/src/nooa/context_blocks/exceptions.py +88 -0
- nooa-0.0.7/src/nooa/context_blocks/formatter.py +591 -0
- nooa-0.0.7/src/nooa/context_blocks/models.py +508 -0
- nooa-0.0.7/src/nooa/context_blocks/render_config.py +23 -0
- nooa-0.0.7/src/nooa/context_blocks/renderer.py +224 -0
- nooa-0.0.7/src/nooa/context_blocks/renderers/__init__.py +7 -0
- nooa-0.0.7/src/nooa/context_blocks/renderers/cached.py +154 -0
- nooa-0.0.7/src/nooa/context_blocks/roles.py +27 -0
- nooa-0.0.7/src/nooa/context_blocks/scoped.py +134 -0
- nooa-0.0.7/src/nooa/context_blocks/utils.py +12 -0
- nooa-0.0.7/src/nooa/decorators.py +146 -0
- nooa-0.0.7/src/nooa/ellipsis_detection.py +152 -0
- nooa-0.0.7/src/nooa/errors/__init__.py +120 -0
- nooa-0.0.7/src/nooa/errors/formatting.py +418 -0
- nooa-0.0.7/src/nooa/errors/storage.py +50 -0
- nooa-0.0.7/src/nooa/events.py +728 -0
- nooa-0.0.7/src/nooa/experimental.py +55 -0
- nooa-0.0.7/src/nooa/interactive.py +531 -0
- nooa-0.0.7/src/nooa/layered_config.py +198 -0
- nooa-0.0.7/src/nooa/library_manager.py +129 -0
- nooa-0.0.7/src/nooa/llm_config.py +131 -0
- nooa-0.0.7/src/nooa/mcp/__init__.py +35 -0
- nooa-0.0.7/src/nooa/mcp/client.py +365 -0
- nooa-0.0.7/src/nooa/mcp/oauth.py +1010 -0
- nooa-0.0.7/src/nooa/mcp/tool.py +953 -0
- nooa-0.0.7/src/nooa/media.py +200 -0
- nooa-0.0.7/src/nooa/metaclass.py +274 -0
- nooa-0.0.7/src/nooa/nemo_flow_middleware.py +370 -0
- nooa-0.0.7/src/nooa/paths.py +82 -0
- nooa-0.0.7/src/nooa/plain_formatter.py +71 -0
- nooa-0.0.7/src/nooa/prompts.py +262 -0
- nooa-0.0.7/src/nooa/runtime/__init__.py +39 -0
- nooa-0.0.7/src/nooa/runtime/actor.py +3041 -0
- nooa-0.0.7/src/nooa/runtime/async_safety.py +122 -0
- nooa-0.0.7/src/nooa/runtime/channels.py +1082 -0
- nooa-0.0.7/src/nooa/runtime/code_validator.py +1684 -0
- nooa-0.0.7/src/nooa/runtime/context.py +248 -0
- nooa-0.0.7/src/nooa/runtime/context_builder.py +478 -0
- nooa-0.0.7/src/nooa/runtime/context_manager.py +462 -0
- nooa-0.0.7/src/nooa/runtime/context_vars.py +87 -0
- nooa-0.0.7/src/nooa/runtime/debug_handler.py +495 -0
- nooa-0.0.7/src/nooa/runtime/event_backend.py +330 -0
- nooa-0.0.7/src/nooa/runtime/event_manager.py +724 -0
- nooa-0.0.7/src/nooa/runtime/event_query.py +127 -0
- nooa-0.0.7/src/nooa/runtime/events.py +234 -0
- nooa-0.0.7/src/nooa/runtime/harness_metrics.py +1076 -0
- nooa-0.0.7/src/nooa/runtime/hooks.py +421 -0
- nooa-0.0.7/src/nooa/runtime/media_capture.py +185 -0
- nooa-0.0.7/src/nooa/runtime/method_guard.py +56 -0
- nooa-0.0.7/src/nooa/runtime/method_wrapper.py +542 -0
- nooa-0.0.7/src/nooa/runtime/middleware.py +148 -0
- nooa-0.0.7/src/nooa/runtime/out_accessor.py +153 -0
- nooa-0.0.7/src/nooa/runtime/pprint.py +61 -0
- nooa-0.0.7/src/nooa/runtime/producers.py +98 -0
- nooa-0.0.7/src/nooa/runtime/producers_skill.py +42 -0
- nooa-0.0.7/src/nooa/runtime/response_cleanup.py +77 -0
- nooa-0.0.7/src/nooa/runtime/restrictions.py +224 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/__init__.py +34 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/cell_core.py +230 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/config.py +243 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/context_block.py +67 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/errors.py +40 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/executor.py +459 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/guards.py +369 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/readonly.py +170 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/serialization.py +218 -0
- nooa-0.0.7/src/nooa/runtime/sandbox/worker.py +459 -0
- nooa-0.0.7/src/nooa/runtime/stream_wrappers.py +201 -0
- nooa-0.0.7/src/nooa/runtime/tests/__init__.py +3 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_channel_notify_wakeup.py +149 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_channels.py +612 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_channels_cross_thread.py +609 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_channels_public_apis.py +149 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_context_error_archival.py +41 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_gl212_lock_loop.py +173 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_gl89_token_counter_fallback.py +113 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_producers.py +186 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_spawn.py +349 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_stack_isolation.py +260 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_truncation_config_validation.py +83 -0
- nooa-0.0.7/src/nooa/runtime/tests/test_value_formatting.py +99 -0
- nooa-0.0.7/src/nooa/runtime/token_usage.py +50 -0
- nooa-0.0.7/src/nooa/secrets.py +71 -0
- nooa-0.0.7/src/nooa/skill.py +433 -0
- nooa-0.0.7/src/nooa/skill_registry.py +966 -0
- nooa-0.0.7/src/nooa/slash_dispatch.py +219 -0
- nooa-0.0.7/src/nooa/standalone.py +234 -0
- nooa-0.0.7/src/nooa/storage/__init__.py +25 -0
- nooa-0.0.7/src/nooa/storage/in_memory.py +45 -0
- nooa-0.0.7/src/nooa/storage/json_snapshot.py +54 -0
- nooa-0.0.7/src/nooa/storage/manager.py +107 -0
- nooa-0.0.7/src/nooa/storage/markers.py +124 -0
- nooa-0.0.7/src/nooa/storage/serialization.py +304 -0
- nooa-0.0.7/src/nooa/storage/snapshot.py +179 -0
- nooa-0.0.7/src/nooa/storage/snapshot_vars.py +84 -0
- nooa-0.0.7/src/nooa/storage/sqlite.py +843 -0
- nooa-0.0.7/src/nooa/strategies/__init__.py +103 -0
- nooa-0.0.7/src/nooa/strategies/base.py +364 -0
- nooa-0.0.7/src/nooa/strategies/codeact.py +2943 -0
- nooa-0.0.7/src/nooa/strategies/codeact_errors.py +421 -0
- nooa-0.0.7/src/nooa/strategies/codeact_lite.py +288 -0
- nooa-0.0.7/src/nooa/strategies/composite.py +49 -0
- nooa-0.0.7/src/nooa/strategies/current_call.py +351 -0
- nooa-0.0.7/src/nooa/strategies/experimental/__init__.py +17 -0
- nooa-0.0.7/src/nooa/strategies/generated_code.py +797 -0
- nooa-0.0.7/src/nooa/strategies/predict.py +933 -0
- nooa-0.0.7/src/nooa/strategies/prefill.py +186 -0
- nooa-0.0.7/src/nooa/strategies/pure_python.py +1060 -0
- nooa-0.0.7/src/nooa/strategies/reflexion.py +352 -0
- nooa-0.0.7/src/nooa/strategies/template.py +120 -0
- nooa-0.0.7/src/nooa/strategies/tests/test_gl44_value_formatter.py +148 -0
- nooa-0.0.7/src/nooa/strategies/tests/test_predict_output_serialization.py +66 -0
- nooa-0.0.7/src/nooa/strategies/tests/test_predict_param_guard.py +213 -0
- nooa-0.0.7/src/nooa/strategy_validation.py +66 -0
- nooa-0.0.7/src/nooa/token_counter.py +32 -0
- nooa-0.0.7/src/nooa/tools/__init__.py +16 -0
- nooa-0.0.7/src/nooa/tools/_bash_session.py +670 -0
- nooa-0.0.7/src/nooa/tools/_results.py +160 -0
- nooa-0.0.7/src/nooa/tools/library_writing_lib.py +397 -0
- nooa-0.0.7/src/nooa/tools/method_writing_lib.py +62 -0
- nooa-0.0.7/src/nooa/tools/shell_tools.py +782 -0
- nooa-0.0.7/src/nooa/tools/tests/test_bash_lock_loop.py +123 -0
- nooa-0.0.7/src/nooa/tools/tests/test_todo_vars.py +80 -0
- nooa-0.0.7/src/nooa/tools/todo.py +328 -0
- nooa-0.0.7/src/nooa/tools/web_publisher.py +233 -0
- nooa-0.0.7/src/nooa/trace_explorer/__init__.py +65 -0
- nooa-0.0.7/src/nooa/trace_explorer/__main__.py +8 -0
- nooa-0.0.7/src/nooa/trace_explorer/client.py +315 -0
- nooa-0.0.7/src/nooa/trace_explorer/explorer.py +6194 -0
- nooa-0.0.7/src/nooa/trace_explorer/skill/SKILL.md +121 -0
- nooa-0.0.7/src/nooa/tracing/__init__.py +515 -0
- nooa-0.0.7/src/nooa/tracing/_context_sideband.py +66 -0
- nooa-0.0.7/src/nooa/tracing/_hooks_impl.py +1062 -0
- nooa-0.0.7/src/nooa/tracing/_journal_builder.py +132 -0
- nooa-0.0.7/src/nooa/tracing/_journal_exporter.py +139 -0
- nooa-0.0.7/src/nooa/tracing/_litellm_journal.py +634 -0
- nooa-0.0.7/src/nooa/tracing/_litellm_patch.py +292 -0
- nooa-0.0.7/src/nooa/tracing/_metadata.py +89 -0
- nooa-0.0.7/src/nooa/tracing/_otlp_file_exporter.py +120 -0
- nooa-0.0.7/src/nooa/tracing/_otlp_http_exporter.py +158 -0
- nooa-0.0.7/src/nooa/tracing/_otlp_serialize.py +204 -0
- nooa-0.0.7/src/nooa/tracing/_secret_scrubber.py +306 -0
- nooa-0.0.7/src/nooa/tracing/_session.py +54 -0
- nooa-0.0.7/src/nooa/tracing/_session_processor.py +37 -0
- nooa-0.0.7/src/nooa/tracing/exporters.py +153 -0
- nooa-0.0.7/src/nooa/unifiedllm/__init__.py +63 -0
- nooa-0.0.7/src/nooa/unifiedllm/fake.py +256 -0
- nooa-0.0.7/src/nooa/unifiedllm/http_config.py +56 -0
- nooa-0.0.7/src/nooa/unifiedllm/http_logging.py +430 -0
- nooa-0.0.7/src/nooa/unifiedllm/py.typed +0 -0
- nooa-0.0.7/src/nooa/unifiedllm/registry.py +415 -0
- nooa-0.0.7/src/nooa/unifiedllm/replay_requests.py +245 -0
- nooa-0.0.7/src/nooa/unifiedllm/retry.py +384 -0
- nooa-0.0.7/src/nooa/unifiedllm/retry_config.py +29 -0
- nooa-0.0.7/src/nooa/unifiedllm/unifiedllm.py +2662 -0
- nooa-0.0.7/src/nooa/util/__init__.py +9 -0
- nooa-0.0.7/src/nooa/util/_context.py +35 -0
- nooa-0.0.7/src/nooa/util/quickstart.py +146 -0
- nooa-0.0.7/src/nooa/viewer/__init__.py +39 -0
- nooa-0.0.7/src/nooa/viewer/__main__.py +18 -0
- nooa-0.0.7/src/nooa/viewer/annotation_routes.py +70 -0
- nooa-0.0.7/src/nooa/viewer/eval_routes.py +615 -0
- nooa-0.0.7/src/nooa/viewer/explorer_routes.py +441 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/.gitignore +2 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/dist/assets/index-BN0Wf3Y-.css +1 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/dist/assets/index-Bf6CiCw-.js +35 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/dist/index.html +13 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/index.html +12 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/package-lock.json +2221 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/package.json +32 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/postcss.config.js +5 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/App.tsx +80 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/api/annotations.ts +84 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/api/eval.ts +142 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/api/memory.ts +209 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/api/playground.ts +88 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/api/traces.ts +208 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/api/types.ts +110 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/DataTable.tsx +231 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/annotations/AnnotationForm.tsx +311 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/annotations/AnnotationIndicator.tsx +98 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/playground/Playground.tsx +585 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/playground/PlaygroundContext.tsx +44 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/AgentMessagePlugin.tsx +74 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/AgentReasoningPlugin.tsx +66 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/CodeExecutionPlugin.tsx +207 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/DefaultPlugin.tsx +33 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/EvalPlugin.tsx +331 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/GenerationPlugin.tsx +235 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/LLMCallPlugin.tsx +457 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/MethodPlugin.tsx +231 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/RuntimeErrorPlugin.tsx +96 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/SpanPlugin.tsx +156 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/ToolExecutionPlugin.tsx +256 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/UserMessagePlugin.tsx +46 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/index.ts +42 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/plugins/registry.ts +43 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/shared/CodeBox.tsx +295 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/shared/ColumnConfigButton.tsx +37 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/shared/ColumnConfigModal.tsx +129 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/shared/ContextBlockRenderer.tsx +182 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/shared/CopyButton.tsx +49 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/shared/KeyboardShortcutsHelp.tsx +109 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/trace/EventItem.tsx +148 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/trace/EventList.tsx +106 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/trace/FilterSidebar.tsx +414 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/trace/TraceView.tsx +404 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/components/trace/tree_order.ts +105 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/hooks/useColumnConfig.ts +204 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/hooks/useKeyboardNav.ts +179 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/hooks/useLiveUpdater.ts +47 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/hooks/useLocalStorage.ts +32 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/index.css +7 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/main.tsx +13 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/EvalExperimentDetail.tsx +723 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/EvalExperimentList.tsx +208 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/EvalTraceDetail.tsx +153 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/MemoryPage.tsx +624 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/MemoryRecordDetail.tsx +290 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/PlaygroundPage.tsx +58 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/TraceDetail.tsx +85 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/pages/TraceList.tsx +296 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/utils/evalFilters.ts +54 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/utils/time.ts +48 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/src/vite-env.d.ts +1 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/tsconfig.json +24 -0
- nooa-0.0.7/src/nooa/viewer/frontend-react/vite.config.ts +26 -0
- nooa-0.0.7/src/nooa/viewer/main.py +477 -0
- nooa-0.0.7/src/nooa/viewer/memory_routes.py +287 -0
- nooa-0.0.7/src/nooa/viewer/otlp_store.py +2115 -0
- nooa-0.0.7/src/nooa/viewer/trace_models.py +206 -0
- nooa-0.0.7/src/nooa/viewer/trace_routes.py +727 -0
- nooa-0.0.7/tests/README.md +99 -0
- nooa-0.0.7/tests/__init__.py +0 -0
- nooa-0.0.7/tests/agentdoc/__init__.py +3 -0
- nooa-0.0.7/tests/agentdoc/fixtures/__init__.py +3 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_asyncio_alias.py +16 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_hide_comment_before.py +18 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_hide_from_import.py +17 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_hide_inline_comment.py +16 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_hide_multiple.py +20 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_multiple_imports.py +16 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_no_asyncio_import.py +13 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_with_from_asyncio.py +16 -0
- nooa-0.0.7/tests/agentdoc/fixtures/agent_with_import_asyncio.py +16 -0
- nooa-0.0.7/tests/agentdoc/fixtures/init_field_classes.py +79 -0
- nooa-0.0.7/tests/agentdoc/test_annotated_params.py +638 -0
- nooa-0.0.7/tests/agentdoc/test_annotated_types.py +381 -0
- nooa-0.0.7/tests/agentdoc/test_classmethod_rendering.py +80 -0
- nooa-0.0.7/tests/agentdoc/test_contracts.py +1163 -0
- nooa-0.0.7/tests/agentdoc/test_core.py +1401 -0
- nooa-0.0.7/tests/agentdoc/test_dataclass_properties.py +103 -0
- nooa-0.0.7/tests/agentdoc/test_discover_pep563.py +142 -0
- nooa-0.0.7/tests/agentdoc/test_discover_pydantic_forward_refs.py +69 -0
- nooa-0.0.7/tests/agentdoc/test_doc_config.py +51 -0
- nooa-0.0.7/tests/agentdoc/test_doc_instance_agents.py +170 -0
- nooa-0.0.7/tests/agentdoc/test_docs.py +468 -0
- nooa-0.0.7/tests/agentdoc/test_field_type_docstring.py +161 -0
- nooa-0.0.7/tests/agentdoc/test_file_backed_truncating_stream.py +284 -0
- nooa-0.0.7/tests/agentdoc/test_function_default_rendering.py +74 -0
- nooa-0.0.7/tests/agentdoc/test_inherited_fields.py +408 -0
- nooa-0.0.7/tests/agentdoc/test_metadata.py +167 -0
- nooa-0.0.7/tests/agentdoc/test_multi_type_doc.py +302 -0
- nooa-0.0.7/tests/agentdoc/test_namedtuple_future_annotations.py +39 -0
- nooa-0.0.7/tests/agentdoc/test_pandas_adapter.py +39 -0
- nooa-0.0.7/tests/agentdoc/test_pformat_cycles.py +139 -0
- nooa-0.0.7/tests/agentdoc/test_pformat_head_tail.py +174 -0
- nooa-0.0.7/tests/agentdoc/test_pformat_remove_budget.py +47 -0
- nooa-0.0.7/tests/agentdoc/test_pprint_respects_hidden.py +246 -0
- nooa-0.0.7/tests/agentdoc/test_protocols.py +236 -0
- nooa-0.0.7/tests/agentdoc/test_referenced_types.py +280 -0
- nooa-0.0.7/tests/agentdoc/test_referenced_types_demo.py +98 -0
- nooa-0.0.7/tests/agentdoc/test_registry.py +328 -0
- nooa-0.0.7/tests/agentdoc/test_structured.py +878 -0
- nooa-0.0.7/tests/agentdoc/test_truncating_pformat.py +65 -0
- nooa-0.0.7/tests/agentdoc/test_truncating_stream.py +156 -0
- nooa-0.0.7/tests/agentdoc/test_typeddict_future_annotations.py +47 -0
- nooa-0.0.7/tests/agentdoc/test_visibility.py +360 -0
- nooa-0.0.7/tests/agentdoc/test_visibility_public.py +105 -0
- nooa-0.0.7/tests/agents/test_agent_imports.py +65 -0
- nooa-0.0.7/tests/agents/test_agent_render_config.py +36 -0
- nooa-0.0.7/tests/agents/test_method_summarizer_call_id.py +466 -0
- nooa-0.0.7/tests/agents/test_summarization_agents.py +1159 -0
- nooa-0.0.7/tests/agents/test_summarization_large_input.py +156 -0
- nooa-0.0.7/tests/atif/__init__.py +0 -0
- nooa-0.0.7/tests/atif/normative.py +292 -0
- nooa-0.0.7/tests/atif/test_custom_event_types.py +289 -0
- nooa-0.0.7/tests/atif/test_enable_atif_isolation.py +367 -0
- nooa-0.0.7/tests/atif/test_end_to_end_codeact.py +312 -0
- nooa-0.0.7/tests/atif/test_exporter_state_machine.py +619 -0
- nooa-0.0.7/tests/atif/test_multi_agent_embedding.py +237 -0
- nooa-0.0.7/tests/atif/test_normative_rules.py +444 -0
- nooa-0.0.7/tests/atif/test_phase4_nesting.py +381 -0
- nooa-0.0.7/tests/atif/test_schema_validation.py +409 -0
- nooa-0.0.7/tests/atif/test_standalone_entrypoint_cascade.py +511 -0
- nooa-0.0.7/tests/atif/test_structural_scenarios.py +643 -0
- nooa-0.0.7/tests/capability/EXPERIMENT_truncation_markers.md +417 -0
- nooa-0.0.7/tests/capability/RUN_TRUNCATION_EXPERIMENTS.md +283 -0
- nooa-0.0.7/tests/capability/__init__.py +8 -0
- nooa-0.0.7/tests/capability/agents/__init__.py +49 -0
- nooa-0.0.7/tests/capability/agents/calculate_batch.py +28 -0
- nooa-0.0.7/tests/capability/agents/calculate_single.py +22 -0
- nooa-0.0.7/tests/capability/agents/construction.py +108 -0
- nooa-0.0.7/tests/capability/agents/context_notes.py +108 -0
- nooa-0.0.7/tests/capability/agents/employee_lookup.py +125 -0
- nooa-0.0.7/tests/capability/agents/error_recovery.py +67 -0
- nooa-0.0.7/tests/capability/agents/fast_agent_help.py +82 -0
- nooa-0.0.7/tests/capability/agents/json_extract.py +28 -0
- nooa-0.0.7/tests/capability/agents/json_qa.py +20 -0
- nooa-0.0.7/tests/capability/agents/large_data.py +56 -0
- nooa-0.0.7/tests/capability/agents/large_data_wrapper.py +101 -0
- nooa-0.0.7/tests/capability/agents/needle.py +36 -0
- nooa-0.0.7/tests/capability/agents/order.py +549 -0
- nooa-0.0.7/tests/capability/agents/realfmt_codeact.py +68 -0
- nooa-0.0.7/tests/capability/agents/realfmt_predict.py +69 -0
- nooa-0.0.7/tests/capability/agents/realfmt_predict_no_prompt.py +63 -0
- nooa-0.0.7/tests/capability/agents/refinement.py +122 -0
- nooa-0.0.7/tests/capability/agents/repl_exploration.py +46 -0
- nooa-0.0.7/tests/capability/agents/router.py +146 -0
- nooa-0.0.7/tests/capability/agents/sentiment.py +31 -0
- nooa-0.0.7/tests/capability/agents/sentiment_batch.py +22 -0
- nooa-0.0.7/tests/capability/agents/sentiment_single.py +17 -0
- nooa-0.0.7/tests/capability/agents/structured_output.py +246 -0
- nooa-0.0.7/tests/capability/agents/summarize.py +35 -0
- nooa-0.0.7/tests/capability/agents/task_decomposition.py +185 -0
- nooa-0.0.7/tests/capability/agents/truncation_comprehension.py +139 -0
- nooa-0.0.7/tests/capability/agents/truncation_formats.py +409 -0
- nooa-0.0.7/tests/capability/analyze_fmt_matrix.py +261 -0
- nooa-0.0.7/tests/capability/config.yaml +813 -0
- nooa-0.0.7/tests/capability/config_inline.yaml +91 -0
- nooa-0.0.7/tests/capability/config_openai.yaml +603 -0
- nooa-0.0.7/tests/capability/config_phase1.yaml +197 -0
- nooa-0.0.7/tests/capability/config_phase2.yaml +204 -0
- nooa-0.0.7/tests/capability/config_phase3.yaml +102 -0
- nooa-0.0.7/tests/capability/config_truncation.yaml +2659 -0
- nooa-0.0.7/tests/capability/data/calculate_batch.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/calculate_complex.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/calculate_simple.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/construction_dataframe.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/construction_widget.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/context_notes.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/employee_lookup.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/error_recovery.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/fast_agent_help.jsonl +3 -0
- nooa-0.0.7/tests/capability/data/fast_agent_no_help.jsonl +3 -0
- nooa-0.0.7/tests/capability/data/fast_food_cancel.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/fast_food_order.jsonl +6 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_dataclass.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_dict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_json.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_list.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_pydantic.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_records.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_set.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_lower_tuple.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_slice_keys_list.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_slice_keys_records.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_slice_keys_tuple.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_dataclass.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_dict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_json.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_list.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_pydantic.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_records.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_set.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_today_verbose_tuple.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_dataclass.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_dict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_json.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_list.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_pydantic.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_records.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_set.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/fmt_xml_tuple.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/json_extract.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/json_qa_lookup.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/json_qa_reasoning.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/large_data_count_generated.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/large_data_extract_generated.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/large_data_find_generated.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/needle_in_haystack.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_bare_dict_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_bare_set_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_dataclass_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_dataclass_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_dict_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_dict_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_dots_dict_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_dots_set_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_json_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_json_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_list_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_list_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_plus_n_dict_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_plus_n_set_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_pydantic_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_pydantic_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_records_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_records_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_set_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_set_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_tuple_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_lower_tuple_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_nested_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_nested_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_dataclass_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_dataclass_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_list_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_list_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_pydantic_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_pydantic_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_records_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_records_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_tuple_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_slice_keys_tuple_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_dataclass_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_dataclass_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_dict_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_dict_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_json_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_json_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_list_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_list_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_pydantic_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_pydantic_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_records_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_records_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_set_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_set_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_tuple_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_today_verbose_tuple_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_dataclass_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_dataclass_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_dict_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_dict_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_json_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_json_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_list_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_list_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_pydantic_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_pydantic_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_records_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_records_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_set_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_set_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_tuple_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/realfmt_xml_tuple_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/refinement.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/repl_exploration.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/router_analyze.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/router_multi_analyze_validate.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/router_multi_transform_validate.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/router_transform.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/router_validate.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/sentiment_batch.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/sentiment_single.jsonl +3 -0
- nooa-0.0.7/tests/capability/data/structured_combined_extraction.jsonl +3 -0
- nooa-0.0.7/tests/capability/data/summarize_batch.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/summarize_single.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/task_decomposition.jsonl +1 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_cycle.jsonl +5 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_depth.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_generator.jsonl +5 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_lower.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_lower_dataclass.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_lower_dict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_lower_json.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_lower_pydantic.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_lower_tuple.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_pascal.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_records.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_string_slice.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_today_verbose.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_aware_xml.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_depth_marker.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_error_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_error_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_marker_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_marker_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_marker_consolidated.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_nested_partial_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_nested_partial_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_nested_partial_consolidated.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_nested_value_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_nested_value_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_partial_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_partial_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_partial_consolidated.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_pydantic_field_after.jsonl +3 -0
- nooa-0.0.7/tests/capability/data/truncation_pydantic_field_before.jsonl +3 -0
- nooa-0.0.7/tests/capability/data/truncation_pydantic_shallow_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_pydantic_shallow_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_realdata.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_realdata_codeact.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_realdata_predict.jsonl +7 -0
- nooa-0.0.7/tests/capability/data/truncation_size_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_consolidated.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v1_total_prefix.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v2_natural_prose.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v3_dict.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v3_json.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v3_nested.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v3_pydantic.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v3_xml_4q.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v3_xml_len.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v4_total_with_marker.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v5_python_comment.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v6_total_comment_first.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v7_len_attr.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v8_pydantic_capital.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_size_v9_python_lower.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_str_v1_plus_n.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_str_v2_str_len.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_str_v3_head_tail.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_str_v4_start_end.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_str_v5_prefix_suffix.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_str_v6_slice_keys.jsonl +4 -0
- nooa-0.0.7/tests/capability/data/truncation_string_head_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_string_head_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_string_partial_after.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_string_partial_before.jsonl +2 -0
- nooa-0.0.7/tests/capability/data/truncation_string_slice_legacy.jsonl +3 -0
- nooa-0.0.7/tests/capability/test_class_method_replacement_bug.py +180 -0
- nooa-0.0.7/tests/capability/test_fast_food_order_scorer.py +164 -0
- nooa-0.0.7/tests/capability/test_router_repeated_runs.py +395 -0
- nooa-0.0.7/tests/capability/test_structured_output_scorer.py +95 -0
- nooa-0.0.7/tests/config/__init__.py +0 -0
- nooa-0.0.7/tests/config/test_blocked_config.py +73 -0
- nooa-0.0.7/tests/config/test_execution_config.py +67 -0
- nooa-0.0.7/tests/config/test_resolved_config.py +118 -0
- nooa-0.0.7/tests/config/test_strategy_configs.py +99 -0
- nooa-0.0.7/tests/config/test_summarizer_configs.py +61 -0
- nooa-0.0.7/tests/context_blocks/test_cached_renderer.py +275 -0
- nooa-0.0.7/tests/context_blocks/test_context_stats.py +511 -0
- nooa-0.0.7/tests/context_blocks/test_events.py +390 -0
- nooa-0.0.7/tests/context_blocks/test_format_event_bounded.py +68 -0
- nooa-0.0.7/tests/context_blocks/test_formatters.py +432 -0
- nooa-0.0.7/tests/context_blocks/test_models.py +194 -0
- nooa-0.0.7/tests/context_blocks/test_render_config.py +33 -0
- nooa-0.0.7/tests/context_blocks/test_renderer.py +665 -0
- nooa-0.0.7/tests/context_blocks/test_scoped.py +91 -0
- nooa-0.0.7/tests/context_blocks/test_truncating_pformat.py +93 -0
- nooa-0.0.7/tests/context_blocks/test_truncation.py +23 -0
- nooa-0.0.7/tests/coordinator/__init__.py +10 -0
- nooa-0.0.7/tests/coordinator/test_validation.py +59 -0
- nooa-0.0.7/tests/core_runtime/__init__.py +12 -0
- nooa-0.0.7/tests/core_runtime/test_code_caching.py +108 -0
- nooa-0.0.7/tests/core_runtime/test_execution.py +126 -0
- nooa-0.0.7/tests/core_runtime/test_implemented_plan.py +105 -0
- nooa-0.0.7/tests/core_runtime/test_llm_client_reuse.py +117 -0
- nooa-0.0.7/tests/core_runtime/test_task_queuing.py +80 -0
- nooa-0.0.7/tests/core_runtime/test_task_queuing_edge_cases.py +140 -0
- nooa-0.0.7/tests/edge_cases/__init__.py +14 -0
- nooa-0.0.7/tests/edge_cases/test_agent_initialization.py +168 -0
- nooa-0.0.7/tests/edge_cases/test_builtin_shadowing.py +158 -0
- nooa-0.0.7/tests/edge_cases/test_child_agent_edge_cases.py +308 -0
- nooa-0.0.7/tests/edge_cases/test_generation_lock_edge_cases.py +95 -0
- nooa-0.0.7/tests/edge_cases/test_missing_await.py +239 -0
- nooa-0.0.7/tests/edge_cases/test_nested_generation_edge_cases.py +241 -0
- nooa-0.0.7/tests/edge_cases/test_sandbox_edge_cases.py +11 -0
- nooa-0.0.7/tests/edge_cases/test_signal_edge_cases.py +11 -0
- nooa-0.0.7/tests/edge_cases/test_task_wrapper_edge_cases.py +11 -0
- nooa-0.0.7/tests/external/__init__.py +9 -0
- nooa-0.0.7/tests/external/test_agent_method_requirements.py +317 -0
- nooa-0.0.7/tests/external/test_decorators.py +121 -0
- nooa-0.0.7/tests/external/test_notebook_scenarios.py +555 -0
- nooa-0.0.7/tests/external/test_providers.py +276 -0
- nooa-0.0.7/tests/external/test_stub_layer.py +74 -0
- nooa-0.0.7/tests/helpers/__init__.py +3 -0
- nooa-0.0.7/tests/helpers/cross_module_child.py +26 -0
- nooa-0.0.7/tests/helpers/cross_module_parent.py +56 -0
- nooa-0.0.7/tests/helpers/otel_assertions.py +73 -0
- nooa-0.0.7/tests/helpers/signature_utils.py +25 -0
- nooa-0.0.7/tests/integration/__init__.py +0 -0
- nooa-0.0.7/tests/integration/conftest.py +74 -0
- nooa-0.0.7/tests/integration/fixtures/archival_95pct.json.gz +0 -0
- nooa-0.0.7/tests/integration/generate_archival_fixture.py +150 -0
- nooa-0.0.7/tests/integration/nested_bug/__init__.py +3 -0
- nooa-0.0.7/tests/integration/nested_bug/agents.py +44 -0
- nooa-0.0.7/tests/integration/nested_bug/config.yaml +85 -0
- nooa-0.0.7/tests/integration/nested_bug/data.jsonl +3 -0
- nooa-0.0.7/tests/integration/nested_bug/test_message_ordering.py +233 -0
- nooa-0.0.7/tests/integration/reproduce_nested_history_bug.py +286 -0
- nooa-0.0.7/tests/integration/test_archival_on_error_e2e.py +181 -0
- nooa-0.0.7/tests/integration/test_codeact_dynamic_structured_output.py +215 -0
- nooa-0.0.7/tests/integration/test_codeact_nested_structured_output.py +190 -0
- nooa-0.0.7/tests/integration/test_concurrent_traces.py +330 -0
- nooa-0.0.7/tests/integration/test_conftest_reset.py +100 -0
- nooa-0.0.7/tests/integration/test_file_viewer_equivalence.py +280 -0
- nooa-0.0.7/tests/integration/test_hook_failure_traces.py +166 -0
- nooa-0.0.7/tests/integration/test_import_roundtrip.py +189 -0
- nooa-0.0.7/tests/integration/test_journal_multi_destination.py +178 -0
- nooa-0.0.7/tests/integration/test_l4_eviction_e2e.py +431 -0
- nooa-0.0.7/tests/integration/test_nested_agent_history_bug.py +277 -0
- nooa-0.0.7/tests/integration/test_nested_generation.py +248 -0
- nooa-0.0.7/tests/integration/test_predict_return_types_live.py +498 -0
- nooa-0.0.7/tests/integration/test_real_dispatch_fanout.py +305 -0
- nooa-0.0.7/tests/integration/test_truncation_e2e.py +804 -0
- nooa-0.0.7/tests/onboarding/README.md +92 -0
- nooa-0.0.7/tests/onboarding/__init__.py +3 -0
- nooa-0.0.7/tests/onboarding/test_code_generation.py +110 -0
- nooa-0.0.7/tests/onboarding/test_data/README.md +170 -0
- nooa-0.0.7/tests/onboarding/test_data/error_recovery.json +73 -0
- nooa-0.0.7/tests/onboarding/test_data/repl_exploration.json +55 -0
- nooa-0.0.7/tests/onboarding/test_data/simple_tasks.json +69 -0
- nooa-0.0.7/tests/onboarding/test_message_streams.py +90 -0
- nooa-0.0.7/tests/onboarding/test_repl_behavior.py +88 -0
- nooa-0.0.7/tests/onboarding/test_validation_retry.py +93 -0
- nooa-0.0.7/tests/onboarding/test_working_context.py +87 -0
- nooa-0.0.7/tests/performance/test_client_creation_overhead.py +146 -0
- nooa-0.0.7/tests/provider_compat/test_provider_compat.py +194 -0
- nooa-0.0.7/tests/runtime/__init__.py +3 -0
- nooa-0.0.7/tests/runtime/sandbox/__init__.py +2 -0
- nooa-0.0.7/tests/runtime/sandbox/test_broker_deadline.py +116 -0
- nooa-0.0.7/tests/runtime/sandbox/test_cell_core_implicit_return.py +70 -0
- nooa-0.0.7/tests/runtime/sandbox/test_codeact_sandbox.py +147 -0
- nooa-0.0.7/tests/runtime/sandbox/test_config.py +110 -0
- nooa-0.0.7/tests/runtime/sandbox/test_executor.py +478 -0
- nooa-0.0.7/tests/runtime/sandbox/test_guards.py +171 -0
- nooa-0.0.7/tests/runtime/sandbox/test_nested_async_proxy.py +82 -0
- nooa-0.0.7/tests/runtime/sandbox/test_readonly_module_state.py +163 -0
- nooa-0.0.7/tests/runtime/sandbox/test_teardown_nonblocking.py +97 -0
- nooa-0.0.7/tests/runtime/test_actor_generation_ids.py +133 -0
- nooa-0.0.7/tests/runtime/test_actor_implicit_return.py +69 -0
- nooa-0.0.7/tests/runtime/test_adaptive_archival.py +147 -0
- nooa-0.0.7/tests/runtime/test_agent_call_events.py +124 -0
- nooa-0.0.7/tests/runtime/test_async_deadlock_prevention.py +322 -0
- nooa-0.0.7/tests/runtime/test_async_output_capture.py +381 -0
- nooa-0.0.7/tests/runtime/test_blocking_call_validator.py +260 -0
- nooa-0.0.7/tests/runtime/test_channels_queue_ergonomics.py +427 -0
- nooa-0.0.7/tests/runtime/test_code_validator.py +2791 -0
- nooa-0.0.7/tests/runtime/test_codeexec_method_parenting.py +177 -0
- nooa-0.0.7/tests/runtime/test_context_api.py +205 -0
- nooa-0.0.7/tests/runtime/test_context_builder.py +1088 -0
- nooa-0.0.7/tests/runtime/test_context_error_recovery_bugs.py +432 -0
- nooa-0.0.7/tests/runtime/test_context_integration.py +717 -0
- nooa-0.0.7/tests/runtime/test_context_window_safety_net.py +531 -0
- nooa-0.0.7/tests/runtime/test_debug_handler.py +843 -0
- nooa-0.0.7/tests/runtime/test_event_manager_events.py +415 -0
- nooa-0.0.7/tests/runtime/test_event_query.py +78 -0
- nooa-0.0.7/tests/runtime/test_events_api.py +121 -0
- nooa-0.0.7/tests/runtime/test_exec_globals_stripping.py +85 -0
- nooa-0.0.7/tests/runtime/test_execute_code.py +235 -0
- nooa-0.0.7/tests/runtime/test_hooks.py +471 -0
- nooa-0.0.7/tests/runtime/test_issue_144_pandas_scope.py +185 -0
- nooa-0.0.7/tests/runtime/test_journal_payload.py +292 -0
- nooa-0.0.7/tests/runtime/test_llm_complete_event.py +306 -0
- nooa-0.0.7/tests/runtime/test_llmcall_lifecycle_events.py +127 -0
- nooa-0.0.7/tests/runtime/test_out_accessor.py +258 -0
- nooa-0.0.7/tests/runtime/test_pformat_excluded_fields.py +168 -0
- nooa-0.0.7/tests/runtime/test_pprint.py +282 -0
- nooa-0.0.7/tests/runtime/test_producers.py +132 -0
- nooa-0.0.7/tests/runtime/test_pure_python_executor.py +309 -0
- nooa-0.0.7/tests/runtime/test_pure_python_repl.py +203 -0
- nooa-0.0.7/tests/runtime/test_queue_status_cheat_sheet.py +97 -0
- nooa-0.0.7/tests/runtime/test_response_cleanup.py +194 -0
- nooa-0.0.7/tests/runtime/test_restricted_imports.py +350 -0
- nooa-0.0.7/tests/runtime/test_restrictions.py +113 -0
- nooa-0.0.7/tests/runtime/test_runtime_evaluation.py +541 -0
- nooa-0.0.7/tests/runtime/test_snapshot.py +268 -0
- nooa-0.0.7/tests/runtime/test_span_parent_relationship.py +578 -0
- nooa-0.0.7/tests/runtime/test_stream_wrappers.py +435 -0
- nooa-0.0.7/tests/runtime/test_structured_output_executor.py +496 -0
- nooa-0.0.7/tests/runtime/test_systemexit_no_escape.py +157 -0
- nooa-0.0.7/tests/runtime/test_token_calibration.py +278 -0
- nooa-0.0.7/tests/runtime/test_truncating_stream.py +198 -0
- nooa-0.0.7/tests/runtime/test_truncation_config.py +274 -0
- nooa-0.0.7/tests/runtime/test_truncation_config_integration.py +1063 -0
- nooa-0.0.7/tests/runtime/test_truncation_integration.py +116 -0
- nooa-0.0.7/tests/runtime/test_validation_context.py +14 -0
- nooa-0.0.7/tests/storage/__init__.py +0 -0
- nooa-0.0.7/tests/storage/test_in_memory.py +22 -0
- nooa-0.0.7/tests/storage/test_markers.py +60 -0
- nooa-0.0.7/tests/storage/test_serialization.py +872 -0
- nooa-0.0.7/tests/storage/test_snapshot.py +100 -0
- nooa-0.0.7/tests/storage/test_snapshot_vars.py +138 -0
- nooa-0.0.7/tests/strategies/conftest.py +86 -0
- nooa-0.0.7/tests/strategies/test_advanced_type_validation.py +288 -0
- nooa-0.0.7/tests/strategies/test_argument_validator.py +388 -0
- nooa-0.0.7/tests/strategies/test_codeact_annotated_return.py +131 -0
- nooa-0.0.7/tests/strategies/test_codeact_future_annotations.py +443 -0
- nooa-0.0.7/tests/strategies/test_codeact_max_tokens_error.py +100 -0
- nooa-0.0.7/tests/strategies/test_codeact_prefill_config.py +108 -0
- nooa-0.0.7/tests/strategies/test_codeact_pure_python_coverage.py +4688 -0
- nooa-0.0.7/tests/strategies/test_codeact_strategy.py +3477 -0
- nooa-0.0.7/tests/strategies/test_codeact_text_only_reply.py +188 -0
- nooa-0.0.7/tests/strategies/test_complex_return_types.py +229 -0
- nooa-0.0.7/tests/strategies/test_current_call.py +405 -0
- nooa-0.0.7/tests/strategies/test_default_strategy.py +196 -0
- nooa-0.0.7/tests/strategies/test_error_recovery_gl106.py +759 -0
- nooa-0.0.7/tests/strategies/test_execution_context_leaks.py +346 -0
- nooa-0.0.7/tests/strategies/test_generation_strategy.py +139 -0
- nooa-0.0.7/tests/strategies/test_helper_function_manager.py +205 -0
- nooa-0.0.7/tests/strategies/test_non_pydantic_return_types.py +434 -0
- nooa-0.0.7/tests/strategies/test_param_spec_override.py +172 -0
- nooa-0.0.7/tests/strategies/test_predict_list_root_schema.py +131 -0
- nooa-0.0.7/tests/strategies/test_predict_media_dedup.py +75 -0
- nooa-0.0.7/tests/strategies/test_pure_python_class_definitions.py +118 -0
- nooa-0.0.7/tests/strategies/test_pure_python_helper_namespace.py +94 -0
- nooa-0.0.7/tests/strategies/test_pure_python_nested_structured_output.py +138 -0
- nooa-0.0.7/tests/strategies/test_pure_python_return_validation.py +206 -0
- nooa-0.0.7/tests/strategies/test_pure_python_strategy.py +931 -0
- nooa-0.0.7/tests/strategies/test_pure_python_wrappers.py +66 -0
- nooa-0.0.7/tests/strategies/test_reflexion_strategy.py +718 -0
- nooa-0.0.7/tests/strategies/test_return_type_mismatch.py +468 -0
- nooa-0.0.7/tests/strategies/test_runtime_services.py +243 -0
- nooa-0.0.7/tests/strategies/test_sampling_params_forwarded.py +87 -0
- nooa-0.0.7/tests/strategies/test_session_locals_injection.py +223 -0
- nooa-0.0.7/tests/strategies/test_skills_section_context_events.py +170 -0
- nooa-0.0.7/tests/strategies/test_strategies_coverage.py +1866 -0
- nooa-0.0.7/tests/strategies/test_strategy_validators.py +173 -0
- nooa-0.0.7/tests/strategies/test_template_strategy.py +500 -0
- nooa-0.0.7/tests/strategies/test_toolcall_result_none_regression.py +690 -0
- nooa-0.0.7/tests/test_actor.py +198 -0
- nooa-0.0.7/tests/test_agent_llm_accessor.py +42 -0
- nooa-0.0.7/tests/test_archived_events_excluded_from_context.py +201 -0
- nooa-0.0.7/tests/test_cross_module_inheritance.py +131 -0
- nooa-0.0.7/tests/test_cross_session_tool_call_visibility.py +195 -0
- nooa-0.0.7/tests/test_decorator_strategy.py +69 -0
- nooa-0.0.7/tests/test_dynamic_method_guard.py +490 -0
- nooa-0.0.7/tests/test_ellipsis_detection_exec.py +214 -0
- nooa-0.0.7/tests/test_error_formatting.py +797 -0
- nooa-0.0.7/tests/test_error_line_numbers.py +664 -0
- nooa-0.0.7/tests/test_event_auto_registration.py +393 -0
- nooa-0.0.7/tests/test_event_backend_protocol.py +401 -0
- nooa-0.0.7/tests/test_event_backend_roundtrip.py +372 -0
- nooa-0.0.7/tests/test_event_filtering.py +194 -0
- nooa-0.0.7/tests/test_event_manager.py +1167 -0
- nooa-0.0.7/tests/test_event_manager_integration.py +93 -0
- nooa-0.0.7/tests/test_event_middleware.py +409 -0
- nooa-0.0.7/tests/test_event_types.py +220 -0
- nooa-0.0.7/tests/test_events.py +355 -0
- nooa-0.0.7/tests/test_execute_code_error_recovery.py +335 -0
- nooa-0.0.7/tests/test_generate_tools_forwarding.py +68 -0
- nooa-0.0.7/tests/test_harness_metrics.py +1030 -0
- nooa-0.0.7/tests/test_history_removed_api.py +48 -0
- nooa-0.0.7/tests/test_initial_llm_messages_no_errors.py +136 -0
- nooa-0.0.7/tests/test_interactive_agent.py +83 -0
- nooa-0.0.7/tests/test_layered_config.py +155 -0
- nooa-0.0.7/tests/test_list_methods.py +82 -0
- nooa-0.0.7/tests/test_llm.py +157 -0
- nooa-0.0.7/tests/test_llm_config_chain.py +222 -0
- nooa-0.0.7/tests/test_llm_generated_plan_methods.py +166 -0
- nooa-0.0.7/tests/test_logging.py +152 -0
- nooa-0.0.7/tests/test_mcp/__init__.py +3 -0
- nooa-0.0.7/tests/test_mcp/test_browser_detection.py +51 -0
- nooa-0.0.7/tests/test_mcp/test_call_tool_refresh.py +90 -0
- nooa-0.0.7/tests/test_mcp/test_client.py +640 -0
- nooa-0.0.7/tests/test_mcp/test_describe_exception.py +55 -0
- nooa-0.0.7/tests/test_mcp/test_oauth_discovery.py +674 -0
- nooa-0.0.7/tests/test_mcp/test_tool.py +573 -0
- nooa-0.0.7/tests/test_media.py +141 -0
- nooa-0.0.7/tests/test_media_capture.py +289 -0
- nooa-0.0.7/tests/test_metaclass.py +1429 -0
- nooa-0.0.7/tests/test_method_call_permutations.py +268 -0
- nooa-0.0.7/tests/test_middleware_integration.py +932 -0
- nooa-0.0.7/tests/test_module_imports.py +80 -0
- nooa-0.0.7/tests/test_nemo_flow_middleware.py +1139 -0
- nooa-0.0.7/tests/test_nemo_flow_middleware_no_dep.py +43 -0
- nooa-0.0.7/tests/test_nested_debug.py +92 -0
- nooa-0.0.7/tests/test_paths.py +11 -0
- nooa-0.0.7/tests/test_plain_formatter.py +170 -0
- nooa-0.0.7/tests/test_plan_with_body.py +83 -0
- nooa-0.0.7/tests/test_pre_ellipsis_code.py +568 -0
- nooa-0.0.7/tests/test_print_prompt.py +42 -0
- nooa-0.0.7/tests/test_provider_image_rendering.py +130 -0
- nooa-0.0.7/tests/test_pure_functions_gl105.py +413 -0
- nooa-0.0.7/tests/test_pure_python_method_rejection.py +345 -0
- nooa-0.0.7/tests/test_python_output_no_repr_truncation.py +59 -0
- nooa-0.0.7/tests/test_sandbox.py +821 -0
- nooa-0.0.7/tests/test_secrets.py +110 -0
- nooa-0.0.7/tests/test_session_resume_tag_collision.py +195 -0
- nooa-0.0.7/tests/test_skill_frontmatter.py +139 -0
- nooa-0.0.7/tests/test_skill_registry.py +294 -0
- nooa-0.0.7/tests/test_skill_registry_extended.py +292 -0
- nooa-0.0.7/tests/test_slash_command_to_agent.py +37 -0
- nooa-0.0.7/tests/test_sqlite_close_commit.py +139 -0
- nooa-0.0.7/tests/test_sqlite_corruption_resilience.py +362 -0
- nooa-0.0.7/tests/test_sqlite_reconnect.py +152 -0
- nooa-0.0.7/tests/test_sqlite_specific.py +153 -0
- nooa-0.0.7/tests/test_sqlite_storage_latest.py +59 -0
- nooa-0.0.7/tests/test_standalone.py +827 -0
- nooa-0.0.7/tests/test_token_calibration.py +132 -0
- nooa-0.0.7/tests/test_version.py +56 -0
- nooa-0.0.7/tests/test_visibility.py +283 -0
- nooa-0.0.7/tests/test_visibility_type_consistency.py +289 -0
- nooa-0.0.7/tests/tools/test_bash_concurrency.py +81 -0
- nooa-0.0.7/tests/tools/test_bash_cross_loop.py +190 -0
- nooa-0.0.7/tests/tools/test_bash_session.py +101 -0
- nooa-0.0.7/tests/tools/test_bash_session_cross_loop.py +119 -0
- nooa-0.0.7/tests/tools/test_bash_session_recovery.py +145 -0
- nooa-0.0.7/tests/tools/test_builtin_libs.py +66 -0
- nooa-0.0.7/tests/tools/test_library_writing_lib.py +401 -0
- nooa-0.0.7/tests/tools/test_results.py +116 -0
- nooa-0.0.7/tests/tools/test_shell_tools_modern.py +453 -0
- nooa-0.0.7/tests/tools/test_shell_tools_modern_behavior.py +107 -0
- nooa-0.0.7/tests/tools/test_sigint_recovery.py +144 -0
- nooa-0.0.7/tests/tools/test_single_module_skill_reload.py +721 -0
- nooa-0.0.7/tests/tools/test_skill.py +80 -0
- nooa-0.0.7/tests/trace_explorer/__init__.py +3 -0
- nooa-0.0.7/tests/trace_explorer/test_cache.py +109 -0
- nooa-0.0.7/tests/trace_explorer/test_client.py +367 -0
- nooa-0.0.7/tests/trace_explorer/test_db_queries.py +192 -0
- nooa-0.0.7/tests/trace_explorer/test_explorer.py +1649 -0
- nooa-0.0.7/tests/trace_explorer/test_fast_path.py +204 -0
- nooa-0.0.7/tests/trace_explorer/test_filtered_loading.py +159 -0
- nooa-0.0.7/tests/trace_explorer/test_from_otlp_spans.py +81 -0
- nooa-0.0.7/tests/trace_explorer/test_oi_only_backcompat.py +231 -0
- nooa-0.0.7/tests/tracing/__init__.py +3 -0
- nooa-0.0.7/tests/tracing/conftest.py +95 -0
- nooa-0.0.7/tests/tracing/otlp_test_helpers.py +63 -0
- nooa-0.0.7/tests/tracing/test_concurrent_spans.py +310 -0
- nooa-0.0.7/tests/tracing/test_context_isolation.py +246 -0
- nooa-0.0.7/tests/tracing/test_context_snapshot.py +332 -0
- nooa-0.0.7/tests/tracing/test_exception_stacktrace.py +162 -0
- nooa-0.0.7/tests/tracing/test_exporter_isolation.py +78 -0
- nooa-0.0.7/tests/tracing/test_exporters.py +89 -0
- nooa-0.0.7/tests/tracing/test_flush_pending.py +157 -0
- nooa-0.0.7/tests/tracing/test_gl74_returned_value_cap.py +68 -0
- nooa-0.0.7/tests/tracing/test_http_exporter_drops.py +219 -0
- nooa-0.0.7/tests/tracing/test_idempotent_tracing.py +124 -0
- nooa-0.0.7/tests/tracing/test_journal.py +222 -0
- nooa-0.0.7/tests/tracing/test_journal_exporter_refcount.py +79 -0
- nooa-0.0.7/tests/tracing/test_journal_exporter_shutdown_flushes.py +88 -0
- nooa-0.0.7/tests/tracing/test_journal_invariants.py +295 -0
- nooa-0.0.7/tests/tracing/test_journal_routes_match.py +85 -0
- nooa-0.0.7/tests/tracing/test_jsonl_messages_present.py +92 -0
- nooa-0.0.7/tests/tracing/test_litellm_patch.py +137 -0
- nooa-0.0.7/tests/tracing/test_metadata.py +116 -0
- nooa-0.0.7/tests/tracing/test_openinference_conformance.py +436 -0
- nooa-0.0.7/tests/tracing/test_probe_otlp_endpoint.py +105 -0
- nooa-0.0.7/tests/tracing/test_processor_assignment.py +91 -0
- nooa-0.0.7/tests/tracing/test_safe_serialize.py +99 -0
- nooa-0.0.7/tests/tracing/test_secret_scrubber.py +249 -0
- nooa-0.0.7/tests/tracing/test_session_processor.py +140 -0
- nooa-0.0.7/tests/tracing/test_span_id_rng_isolation.py +64 -0
- nooa-0.0.7/tests/tracing/test_subprocess_hooks.py +102 -0
- nooa-0.0.7/tests/tracing/test_tracing_integration.py +106 -0
- nooa-0.0.7/tests/tracing/test_viewer_plugin_attr.py +211 -0
- nooa-0.0.7/tests/tracing/test_wire_strip_framework_io.py +107 -0
- nooa-0.0.7/tests/unifiedllm/test_annotated_return_types.py +138 -0
- nooa-0.0.7/tests/unifiedllm/test_anthropic_detection.py +126 -0
- nooa-0.0.7/tests/unifiedllm/test_bedrock_schema_sanitization.py +318 -0
- nooa-0.0.7/tests/unifiedllm/test_cache_control.py +464 -0
- nooa-0.0.7/tests/unifiedllm/test_context_window.py +17 -0
- nooa-0.0.7/tests/unifiedllm/test_empty_content_retry.py +421 -0
- nooa-0.0.7/tests/unifiedllm/test_finish_reason_propagation.py +227 -0
- nooa-0.0.7/tests/unifiedllm/test_http_config.py +319 -0
- nooa-0.0.7/tests/unifiedllm/test_http_logging.py +125 -0
- nooa-0.0.7/tests/unifiedllm/test_json_parsing.py +62 -0
- nooa-0.0.7/tests/unifiedllm/test_litellm_cancellation.py +38 -0
- nooa-0.0.7/tests/unifiedllm/test_model_registry.py +709 -0
- nooa-0.0.7/tests/unifiedllm/test_output_model_instantiation.py +258 -0
- nooa-0.0.7/tests/unifiedllm/test_response_format_strict_fallback.py +357 -0
- nooa-0.0.7/tests/unifiedllm/test_responses_cache_control.py +357 -0
- nooa-0.0.7/tests/unifiedllm/test_responses_client.py +150 -0
- nooa-0.0.7/tests/unifiedllm/test_responses_client_retry.py +147 -0
- nooa-0.0.7/tests/unifiedllm/test_responses_formatter.py +197 -0
- nooa-0.0.7/tests/unifiedllm/test_retry.py +443 -0
- nooa-0.0.7/tests/unifiedllm/test_retry_config.py +53 -0
- nooa-0.0.7/tests/unifiedllm/test_strict_schema_review_fixes.py +87 -0
- nooa-0.0.7/tests/unifiedllm/test_tool_schema_clean.py +206 -0
- nooa-0.0.7/tests/unit/test_actor_full_coverage.py +783 -0
- nooa-0.0.7/tests/unit/test_context_vars_comprehensive.py +847 -0
- nooa-0.0.7/tests/unit/test_context_vars_subagent_concurrency.py +720 -0
- nooa-0.0.7/tests/unit/test_coverage_gaps_v2.py +2691 -0
- nooa-0.0.7/tests/unit/test_library_as_skill.py +197 -0
- nooa-0.0.7/tests/unit/test_pragma_replacements.py +723 -0
- nooa-0.0.7/tests/unit/test_prompts.py +366 -0
- nooa-0.0.7/tests/unit/test_quick_wins.py +320 -0
- nooa-0.0.7/tests/unit/test_remaining_full_coverage.py +1148 -0
- nooa-0.0.7/tests/unit/test_remaining_gaps.py +1275 -0
- nooa-0.0.7/tests/unit/test_skill.py +206 -0
- nooa-0.0.7/tests/unit/test_strategy_full_coverage.py +1113 -0
- nooa-0.0.7/tests/unit/test_todo_comments.py +118 -0
- nooa-0.0.7/tests/unit/test_util_and_sqlite.py +665 -0
- nooa-0.0.7/tests/utils/__init__.py +10 -0
- nooa-0.0.7/tests/utils/test_doc_utility.py +549 -0
- nooa-0.0.7/tests/utils/test_logger_utility.py +10 -0
- nooa-0.0.7/tests/utils/test_message_utility.py +188 -0
- nooa-0.0.7/tests/utils/test_task_utility.py +11 -0
- nooa-0.0.7/tests/viewer/__init__.py +2 -0
- nooa-0.0.7/tests/viewer/test_journal_blocks_export.py +247 -0
- nooa-0.0.7/tests/viewer/test_journal_store.py +816 -0
- nooa-0.0.7/tests/viewer/test_main.py +359 -0
- nooa-0.0.7/tests/viewer/test_otlp_ingest.py +262 -0
- nooa-0.0.7/tests/viewer/test_otlp_store.py +1123 -0
- nooa-0.0.7/tests/viewer/test_otlp_stress.py +218 -0
- nooa-0.0.7/tests/viewer/test_resolve_image.py +97 -0
- nooa-0.0.7/tests/viewer/test_resolve_message.py +150 -0
- nooa-0.0.7/util/eval_pipeline/README.md +373 -0
- nooa-0.0.7/util/eval_pipeline/pyproject.toml +40 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/__init__.py +122 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/__main__.py +19 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/_memory_monitor.py +389 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/_test_fixtures.py +49 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/_utils.py +100 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/agents.py +76 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/cli.py +771 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/concurrency.py +289 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/config.py +733 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/config.yaml +68 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/eval_parser.py +190 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/eval_types.py +290 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/evaluator.py +639 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/execute.py +73 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/experiment_writer.py +239 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/headless_backend.py +267 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/model_factory.py +210 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/models.py +145 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/models.yaml +170 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/pipeline.py +660 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/protocol.py +191 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/scoring.py +1385 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/subprocess_worker.py +652 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/test_agents/__init__.py +3 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/test_agents/capability_tests.py +61 -0
- nooa-0.0.7/util/eval_pipeline/src/eval_pipeline/trace_eval_span.py +295 -0
- nooa-0.0.7/util/eval_pipeline/tb1_monitor.sh +145 -0
- nooa-0.0.7/util/eval_pipeline/test_parallel_timing.py +142 -0
- nooa-0.0.7/util/eval_pipeline/test_parallel_verify.py +109 -0
- nooa-0.0.7/util/eval_pipeline/tests/__init__.py +3 -0
- nooa-0.0.7/util/eval_pipeline/tests/otlp_helpers.py +35 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_346_wiring.py +215 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_config_adapter.py +227 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_config_loader.py +254 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_custom_scorers.py +358 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_eval_metadata.py +409 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_eval_types.py +597 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_evaluator.py +868 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_execute.py +110 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_fast_agent_help_scorer.py +100 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_memory_monitor.py +233 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_models.py +89 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_modelspec.py +192 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_pipeline.py +470 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_pipeline_eval_span.py +149 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_runid.py +78 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_scorers_without_trace.py +78 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_scoring.py +813 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_subprocess_worker.py +399 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_timeout_span_flush.py +117 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_trace_eval_span.py +166 -0
- nooa-0.0.7/util/eval_pipeline/tests/test_types.py +108 -0
- nooa-0.0.7/util/install_docker.sh +40 -0
- nooa-0.0.7/uv.lock +3012 -0
nooa-0.0.7/.dockerignore
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# .dockerignore - Exclude files not needed in Docker images
|
|
2
|
+
|
|
3
|
+
# Version control
|
|
4
|
+
.git/
|
|
5
|
+
.gitignore
|
|
6
|
+
.gitattributes
|
|
7
|
+
|
|
8
|
+
# CI/CD
|
|
9
|
+
.gitlab-ci.yml
|
|
10
|
+
.github/
|
|
11
|
+
|
|
12
|
+
# Development and IDE
|
|
13
|
+
.vscode/
|
|
14
|
+
.idea/
|
|
15
|
+
.cursor/
|
|
16
|
+
.cursorrules
|
|
17
|
+
.claude/
|
|
18
|
+
*.swp
|
|
19
|
+
*.swo
|
|
20
|
+
CLAUDE.md
|
|
21
|
+
|
|
22
|
+
# Python cache and build artifacts
|
|
23
|
+
__pycache__/
|
|
24
|
+
*.py[cod]
|
|
25
|
+
*$py.class
|
|
26
|
+
*.so
|
|
27
|
+
.Python
|
|
28
|
+
build/
|
|
29
|
+
develop-eggs/
|
|
30
|
+
dist/
|
|
31
|
+
downloads/
|
|
32
|
+
eggs/
|
|
33
|
+
.eggs/
|
|
34
|
+
*.egg-info/
|
|
35
|
+
.installed.cfg
|
|
36
|
+
*.egg
|
|
37
|
+
MANIFEST
|
|
38
|
+
|
|
39
|
+
# Testing and coverage
|
|
40
|
+
.pytest_cache/
|
|
41
|
+
.coverage
|
|
42
|
+
.coverage.*
|
|
43
|
+
htmlcov/
|
|
44
|
+
.tox/
|
|
45
|
+
.nox/
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
.hypothesis/
|
|
50
|
+
tests/
|
|
51
|
+
test_*.py
|
|
52
|
+
*_test.py
|
|
53
|
+
|
|
54
|
+
# Documentation
|
|
55
|
+
docs/
|
|
56
|
+
*.md
|
|
57
|
+
!README.md
|
|
58
|
+
!**/README.md
|
|
59
|
+
*.pdf
|
|
60
|
+
journal/
|
|
61
|
+
|
|
62
|
+
# Examples and experiments
|
|
63
|
+
examples/
|
|
64
|
+
experiments/
|
|
65
|
+
scratch/
|
|
66
|
+
|
|
67
|
+
# Results and traces
|
|
68
|
+
results/
|
|
69
|
+
traces/
|
|
70
|
+
trace/
|
|
71
|
+
tmp/
|
|
72
|
+
*.jsonl
|
|
73
|
+
*.noo-eval.jsonl
|
|
74
|
+
*.006summary.json
|
|
75
|
+
|
|
76
|
+
# Virtual environments and caches
|
|
77
|
+
.venv/
|
|
78
|
+
venv/
|
|
79
|
+
env/
|
|
80
|
+
ENV/
|
|
81
|
+
.uv-cache/
|
|
82
|
+
.ruff_cache/
|
|
83
|
+
.mypy_cache/
|
|
84
|
+
|
|
85
|
+
# Environment files (may contain secrets!)
|
|
86
|
+
.env
|
|
87
|
+
.env.*
|
|
88
|
+
!.env.example
|
|
89
|
+
!.env.template
|
|
90
|
+
secrets.env
|
|
91
|
+
local_config.yaml
|
|
92
|
+
*.local.json
|
|
93
|
+
|
|
94
|
+
# OS files
|
|
95
|
+
.DS_Store
|
|
96
|
+
Thumbs.db
|
|
97
|
+
|
|
98
|
+
# Logs
|
|
99
|
+
*.log
|
|
100
|
+
|
|
101
|
+
# Jupyter
|
|
102
|
+
.ipynb_checkpoints
|
|
103
|
+
*.ipynb
|
|
104
|
+
|
|
105
|
+
# Temporal
|
|
106
|
+
temporal/
|
|
107
|
+
.temporal/
|
|
108
|
+
|
|
109
|
+
# Specific large/unnecessary directories
|
|
110
|
+
util/prompt-optimization/
|
|
111
|
+
3P/
|
|
112
|
+
3p/
|
|
113
|
+
trash/
|
|
114
|
+
debug_http_logs/
|
|
115
|
+
|
|
116
|
+
# Keep important files (override any wildcards above)
|
|
117
|
+
!pyproject.toml
|
|
118
|
+
!uv.lock
|
|
119
|
+
!requirements.txt
|
nooa-0.0.7/.env.example
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report a problem to help us improve
|
|
4
|
+
title: "[Bug] "
|
|
5
|
+
labels: bug
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Describe the bug**
|
|
9
|
+
A clear and concise description of what the bug is.
|
|
10
|
+
|
|
11
|
+
**To reproduce**
|
|
12
|
+
Minimal steps or code to reproduce the behavior.
|
|
13
|
+
|
|
14
|
+
**Expected behavior**
|
|
15
|
+
What you expected to happen.
|
|
16
|
+
|
|
17
|
+
**Environment**
|
|
18
|
+
- OS:
|
|
19
|
+
- Python version:
|
|
20
|
+
- NOOA version (`nooa --version` or `python -c "import nooa; print(nooa.__version__)"`):
|
|
21
|
+
- Model / provider:
|
|
22
|
+
|
|
23
|
+
**Additional context**
|
|
24
|
+
Logs, traces, or anything else relevant.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea or enhancement
|
|
4
|
+
title: "[Feature] "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**What problem are you trying to solve?**
|
|
9
|
+
A clear description of the use case or limitation.
|
|
10
|
+
|
|
11
|
+
**Proposed solution**
|
|
12
|
+
What you'd like to happen.
|
|
13
|
+
|
|
14
|
+
**Alternatives considered**
|
|
15
|
+
Other approaches you've thought about.
|
|
16
|
+
|
|
17
|
+
**Additional context**
|
|
18
|
+
Anything else that helps explain the request.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## What does this PR do?
|
|
2
|
+
|
|
3
|
+
<!-- A clear, concise description of the change. -->
|
|
4
|
+
|
|
5
|
+
## Related issues
|
|
6
|
+
|
|
7
|
+
<!-- e.g. Closes #123 -->
|
|
8
|
+
|
|
9
|
+
## Checklist
|
|
10
|
+
|
|
11
|
+
- [ ] Code follows the project style (`uv run ruff check .` and `uv run ruff format --check .` pass)
|
|
12
|
+
- [ ] Tests added/updated and passing (`uv run pytest`)
|
|
13
|
+
- [ ] Docs updated if behavior or public APIs changed
|
|
14
|
+
- [ ] New source files carry an SPDX license header
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
- name: Install uv
|
|
15
|
+
uses: astral-sh/setup-uv@v5
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.12"
|
|
18
|
+
- name: Sync
|
|
19
|
+
run: uv sync --all-extras --no-extra sandbox
|
|
20
|
+
- name: Ruff lint
|
|
21
|
+
run: uv run ruff check .
|
|
22
|
+
- name: Ruff format check
|
|
23
|
+
run: uv run ruff format --check .
|
|
24
|
+
- name: SPDX license headers
|
|
25
|
+
run: uv run python scripts/check_license_headers.py
|
|
26
|
+
|
|
27
|
+
test:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
- name: Install uv
|
|
32
|
+
uses: astral-sh/setup-uv@v5
|
|
33
|
+
with:
|
|
34
|
+
python-version: "3.12"
|
|
35
|
+
- name: Sync
|
|
36
|
+
run: uv sync --all-extras --no-extra sandbox
|
|
37
|
+
- name: Unit tests (no live API calls)
|
|
38
|
+
run: uv run pytest -q -m "not integration and not stress"
|
|
39
|
+
|
|
40
|
+
build:
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
with:
|
|
45
|
+
fetch-depth: 0 # tags needed for uv-dynamic-versioning
|
|
46
|
+
- name: Install uv
|
|
47
|
+
uses: astral-sh/setup-uv@v5
|
|
48
|
+
with:
|
|
49
|
+
python-version: "3.12"
|
|
50
|
+
# Mirrors the publish workflow's build exactly (--no-sources included) so
|
|
51
|
+
# this job stays a real canary for release-build breakage.
|
|
52
|
+
- name: Build all packages
|
|
53
|
+
run: |
|
|
54
|
+
rm -rf dist
|
|
55
|
+
for pkg in nooa nooa-cli nooa-memory nooa-bench; do
|
|
56
|
+
uv build --no-sources --package "$pkg" --out-dir dist
|
|
57
|
+
done
|
|
58
|
+
- name: Upload wheels
|
|
59
|
+
uses: actions/upload-artifact@v4
|
|
60
|
+
with:
|
|
61
|
+
name: dist
|
|
62
|
+
path: dist/
|
|
63
|
+
retention-days: 7
|
|
64
|
+
|
|
65
|
+
frontend-build:
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/checkout@v4
|
|
69
|
+
- name: Setup Node
|
|
70
|
+
uses: actions/setup-node@v4
|
|
71
|
+
with:
|
|
72
|
+
node-version: "20"
|
|
73
|
+
- name: Build the trace viewer
|
|
74
|
+
working-directory: src/nooa/viewer/frontend-react
|
|
75
|
+
run: |
|
|
76
|
+
npm ci --ignore-scripts
|
|
77
|
+
npm run build
|
|
78
|
+
- name: Fail if dist/ is stale
|
|
79
|
+
run: |
|
|
80
|
+
if ! git diff --quiet src/nooa/viewer/frontend-react/dist/; then
|
|
81
|
+
echo "ERROR: frontend-react/dist/ is stale. Run 'npm run build' and commit dist/."
|
|
82
|
+
git diff --stat src/nooa/viewer/frontend-react/dist/
|
|
83
|
+
exit 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
secret-scan:
|
|
87
|
+
runs-on: ubuntu-latest
|
|
88
|
+
steps:
|
|
89
|
+
- uses: actions/checkout@v4
|
|
90
|
+
with:
|
|
91
|
+
fetch-depth: 0 # full history so the scan covers all commits
|
|
92
|
+
# Invokes the gitleaks binary directly rather than gitleaks/gitleaks-action.
|
|
93
|
+
# That action is not on this org's GitHub Actions allowlist, and a
|
|
94
|
+
# disallowed action fails the *entire workflow* at startup — which is why
|
|
95
|
+
# every CI run since 2026-07-21 was a 0-second `startup_failure` and no
|
|
96
|
+
# lint, test, or build job ran at all.
|
|
97
|
+
#
|
|
98
|
+
# Pinned to an exact version and checksum-verified: the binary is fetched
|
|
99
|
+
# at runtime, so an unpinned tag would be an unreviewed remote dependency.
|
|
100
|
+
- name: Gitleaks
|
|
101
|
+
env:
|
|
102
|
+
GITLEAKS_VERSION: 8.30.1
|
|
103
|
+
GITLEAKS_SHA256: 551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb
|
|
104
|
+
run: |
|
|
105
|
+
set -euo pipefail
|
|
106
|
+
curl -sSLo gitleaks.tar.gz \
|
|
107
|
+
"https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz"
|
|
108
|
+
echo "${GITLEAKS_SHA256} gitleaks.tar.gz" | sha256sum -c -
|
|
109
|
+
tar xzf gitleaks.tar.gz gitleaks
|
|
110
|
+
# `gitleaks git` exits 0 with "no leaks found" when it has no history
|
|
111
|
+
# to read — a shallow clone scans 1 commit and passes vacuously, and a
|
|
112
|
+
# non-repo scans 0. Fail loudly instead of reporting a clean scan.
|
|
113
|
+
test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" \
|
|
114
|
+
|| { echo "::error::not a git checkout — gitleaks would pass vacuously"; exit 1; }
|
|
115
|
+
test "$(git rev-parse --is-shallow-repository)" = "false" \
|
|
116
|
+
|| { echo "::error::shallow clone — gitleaks would miss history (need fetch-depth: 0)"; exit 1; }
|
|
117
|
+
./gitleaks git --config .gitleaks.toml --redact --no-banner .
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# Publishes the four workspace packages to PyPI.
|
|
2
|
+
#
|
|
3
|
+
# Trigger: a GitHub Release is *published* (the release's tag `vX.Y.Z` is what
|
|
4
|
+
# uv-dynamic-versioning turns into the package version — see RELEASING.md).
|
|
5
|
+
# Auth: PyPI Trusted Publishing (OIDC). No API tokens, no repo secrets.
|
|
6
|
+
#
|
|
7
|
+
# `workflow_dispatch` runs the same build against TestPyPI for a dry run.
|
|
8
|
+
#
|
|
9
|
+
# Every `uses:` here is an `actions/*` action, i.e. GitHub-created. That is
|
|
10
|
+
# deliberate: this org enforces an Actions allowlist, and a disallowed action
|
|
11
|
+
# fails the *entire workflow* at startup (see PR #50 — one blocked action left
|
|
12
|
+
# CI dead for 8 days). A publish workflow that cannot start is a publish
|
|
13
|
+
# workflow that silently never ships. uv is installed from a pinned, versioned
|
|
14
|
+
# install script and does the upload itself via `uv publish`.
|
|
15
|
+
name: Publish
|
|
16
|
+
|
|
17
|
+
on:
|
|
18
|
+
release:
|
|
19
|
+
types: [published]
|
|
20
|
+
# Manual runs are ALWAYS a TestPyPI dry run. There is deliberately no input
|
|
21
|
+
# to select the index: real PyPI is reachable only by publishing a GitHub
|
|
22
|
+
# Release, so a mis-click here cannot burn a version number on PyPI.
|
|
23
|
+
workflow_dispatch:
|
|
24
|
+
|
|
25
|
+
permissions: {}
|
|
26
|
+
|
|
27
|
+
env:
|
|
28
|
+
# Pinned: the install script is fetched at runtime, so an unversioned URL
|
|
29
|
+
# would make every run depend on whatever uv ships that day.
|
|
30
|
+
UV_VERSION: "0.11.4"
|
|
31
|
+
|
|
32
|
+
jobs:
|
|
33
|
+
build:
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v4
|
|
37
|
+
with:
|
|
38
|
+
fetch-depth: 0 # tags needed for uv-dynamic-versioning
|
|
39
|
+
|
|
40
|
+
- name: Install uv
|
|
41
|
+
run: |
|
|
42
|
+
set -euo pipefail
|
|
43
|
+
curl -LsSf "https://astral.sh/uv/${UV_VERSION}/install.sh" | sh
|
|
44
|
+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
45
|
+
|
|
46
|
+
# --no-sources: build with `tool.uv.sources` disabled, so the build is
|
|
47
|
+
# exercised the way a non-uv consumer's build backend would see it. Without
|
|
48
|
+
# it, a workspace source could paper over a dependency that is unresolvable
|
|
49
|
+
# off this machine. Recommended by
|
|
50
|
+
# https://docs.astral.sh/uv/guides/package/
|
|
51
|
+
- name: Build all packages
|
|
52
|
+
run: |
|
|
53
|
+
rm -rf dist
|
|
54
|
+
for pkg in nooa nooa-cli nooa-memory nooa-bench; do
|
|
55
|
+
uv build --no-sources --package "$pkg" --out-dir dist
|
|
56
|
+
done
|
|
57
|
+
ls -l dist
|
|
58
|
+
|
|
59
|
+
# Guards the two ways a release can silently ship the wrong version:
|
|
60
|
+
# a shallow checkout (no tag reachable -> `.devN`), or a Release created
|
|
61
|
+
# from a commit that is not the tagged one.
|
|
62
|
+
- name: Check built version matches the release tag
|
|
63
|
+
if: github.event_name == 'release'
|
|
64
|
+
env:
|
|
65
|
+
TAG: ${{ github.event.release.tag_name }}
|
|
66
|
+
run: |
|
|
67
|
+
uv run --no-project --with packaging python - <<'PY'
|
|
68
|
+
import os, pathlib, sys
|
|
69
|
+
from packaging.utils import parse_wheel_filename
|
|
70
|
+
from packaging.version import Version
|
|
71
|
+
|
|
72
|
+
expected = Version(os.environ["TAG"].removeprefix("v"))
|
|
73
|
+
wheels = sorted(pathlib.Path("dist").glob("*.whl"))
|
|
74
|
+
assert len(wheels) == 4, f"expected 4 wheels, got {[w.name for w in wheels]}"
|
|
75
|
+
for whl in wheels:
|
|
76
|
+
_, version, _, _ = parse_wheel_filename(whl.name)
|
|
77
|
+
if version.is_devrelease:
|
|
78
|
+
sys.exit(f"{whl.name}: dev version — the tag is not reachable from HEAD")
|
|
79
|
+
if version != expected:
|
|
80
|
+
sys.exit(f"{whl.name}: built {version}, but the tag says {expected}")
|
|
81
|
+
print(f"OK — all four packages built as {expected}")
|
|
82
|
+
PY
|
|
83
|
+
|
|
84
|
+
# Catches a broken wheel before it is on PyPI forever.
|
|
85
|
+
- name: Smoke-test the wheels in a clean environment
|
|
86
|
+
run: |
|
|
87
|
+
uv venv /tmp/smoke --python 3.12
|
|
88
|
+
VIRTUAL_ENV=/tmp/smoke uv pip install \
|
|
89
|
+
dist/nooa-*.whl dist/nooa_cli-*.whl dist/nooa_memory-*.whl dist/nooa_bench-*.whl
|
|
90
|
+
/tmp/smoke/bin/python -c "import nooa, nooa_cli, nooa_memory, nooa_bench; print(nooa.__version__)"
|
|
91
|
+
/tmp/smoke/bin/nooa --version
|
|
92
|
+
|
|
93
|
+
- uses: actions/upload-artifact@v4
|
|
94
|
+
with:
|
|
95
|
+
name: dist
|
|
96
|
+
path: dist/
|
|
97
|
+
|
|
98
|
+
# One job per package, each in its OWN environment (`pypi-<package>`).
|
|
99
|
+
#
|
|
100
|
+
# PyPI keys a *pending* trusted publisher on
|
|
101
|
+
# (owner, repo, workflow filename, environment). Four packages sharing one
|
|
102
|
+
# environment collide: PyPI rejects the 2nd registration with "a pending
|
|
103
|
+
# trusted publisher matching this configuration has already been registered
|
|
104
|
+
# for a different project name", because it cannot tell which project to
|
|
105
|
+
# create on first upload. A distinct environment per package makes each
|
|
106
|
+
# tuple unique. (The constraint applies only while a publisher is pending —
|
|
107
|
+
# but a distinct environment is also what gives per-package approval gates.)
|
|
108
|
+
publish-testpypi:
|
|
109
|
+
needs: build
|
|
110
|
+
if: github.event_name == 'workflow_dispatch'
|
|
111
|
+
runs-on: ubuntu-latest
|
|
112
|
+
strategy:
|
|
113
|
+
fail-fast: false # a partial publish is recoverable; a cancelled one is messier
|
|
114
|
+
matrix:
|
|
115
|
+
package: [nooa, nooa-cli, nooa-memory, nooa-bench]
|
|
116
|
+
environment:
|
|
117
|
+
name: testpypi-${{ matrix.package }}
|
|
118
|
+
url: https://test.pypi.org/p/${{ matrix.package }}
|
|
119
|
+
permissions:
|
|
120
|
+
id-token: write # required for Trusted Publishing
|
|
121
|
+
steps:
|
|
122
|
+
- uses: actions/download-artifact@v4
|
|
123
|
+
with:
|
|
124
|
+
name: dist
|
|
125
|
+
path: dist/
|
|
126
|
+
# Upload only this package's files. Distribution filenames normalise `-`
|
|
127
|
+
# to `_`, and the glob anchors on the `-` before the version, so
|
|
128
|
+
# `nooa-*` matches nooa's own files and never `nooa_cli-*`.
|
|
129
|
+
- name: Isolate this package's artifacts
|
|
130
|
+
env:
|
|
131
|
+
PKG: ${{ matrix.package }}
|
|
132
|
+
run: |
|
|
133
|
+
set -euo pipefail
|
|
134
|
+
mkdir upload
|
|
135
|
+
cp dist/"${PKG//-/_}"-* upload/
|
|
136
|
+
test "$(ls upload | wc -l)" -eq 2 # exactly one wheel + one sdist
|
|
137
|
+
ls -l upload
|
|
138
|
+
- name: Install uv
|
|
139
|
+
run: |
|
|
140
|
+
set -euo pipefail
|
|
141
|
+
curl -LsSf "https://astral.sh/uv/${UV_VERSION}/install.sh" | sh
|
|
142
|
+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
143
|
+
# --trusted-publishing always: never silently fall back to looking for a
|
|
144
|
+
# token if the OIDC exchange fails. Fail instead, so a broken publisher
|
|
145
|
+
# config surfaces as an error rather than an auth prompt.
|
|
146
|
+
- name: Publish to TestPyPI
|
|
147
|
+
run: |
|
|
148
|
+
uv publish --trusted-publishing always \
|
|
149
|
+
--publish-url https://test.pypi.org/legacy/ \
|
|
150
|
+
--check-url https://test.pypi.org/simple/ \
|
|
151
|
+
upload/*
|
|
152
|
+
|
|
153
|
+
publish-pypi:
|
|
154
|
+
needs: build
|
|
155
|
+
# Real PyPI is reachable ONLY from a published GitHub Release.
|
|
156
|
+
if: github.event_name == 'release'
|
|
157
|
+
runs-on: ubuntu-latest
|
|
158
|
+
strategy:
|
|
159
|
+
fail-fast: false
|
|
160
|
+
matrix:
|
|
161
|
+
package: [nooa, nooa-cli, nooa-memory, nooa-bench]
|
|
162
|
+
environment:
|
|
163
|
+
name: pypi-${{ matrix.package }}
|
|
164
|
+
url: https://pypi.org/p/${{ matrix.package }}
|
|
165
|
+
permissions:
|
|
166
|
+
id-token: write # required for Trusted Publishing
|
|
167
|
+
steps:
|
|
168
|
+
- uses: actions/download-artifact@v4
|
|
169
|
+
with:
|
|
170
|
+
name: dist
|
|
171
|
+
path: dist/
|
|
172
|
+
# Upload only this package's files. Distribution filenames normalise `-`
|
|
173
|
+
# to `_`, and the glob anchors on the `-` before the version, so
|
|
174
|
+
# `nooa-*` matches nooa's own files and never `nooa_cli-*`.
|
|
175
|
+
- name: Isolate this package's artifacts
|
|
176
|
+
env:
|
|
177
|
+
PKG: ${{ matrix.package }}
|
|
178
|
+
run: |
|
|
179
|
+
set -euo pipefail
|
|
180
|
+
mkdir upload
|
|
181
|
+
cp dist/"${PKG//-/_}"-* upload/
|
|
182
|
+
test "$(ls upload | wc -l)" -eq 2 # exactly one wheel + one sdist
|
|
183
|
+
ls -l upload
|
|
184
|
+
- name: Install uv
|
|
185
|
+
run: |
|
|
186
|
+
set -euo pipefail
|
|
187
|
+
curl -LsSf "https://astral.sh/uv/${UV_VERSION}/install.sh" | sh
|
|
188
|
+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
189
|
+
# --trusted-publishing always: never silently fall back to looking for a
|
|
190
|
+
# token if the OIDC exchange fails. Fail instead, so a broken publisher
|
|
191
|
+
# config surfaces as an error rather than an auth prompt.
|
|
192
|
+
#
|
|
193
|
+
# --check-url makes a re-run idempotent: already-uploaded files are
|
|
194
|
+
# skipped rather than erroring. Matters because `fail-fast: false` means
|
|
195
|
+
# a partial publish is a state you can land in and need to resume from.
|
|
196
|
+
- name: Publish to PyPI
|
|
197
|
+
run: |
|
|
198
|
+
uv publish --trusted-publishing always \
|
|
199
|
+
--check-url https://pypi.org/simple/ \
|
|
200
|
+
upload/*
|
|
201
|
+
|
|
202
|
+
# Attach the built wheels to the GitHub Release so `pip install <url>` and
|
|
203
|
+
# air-gapped consumers get the exact artifacts that went to PyPI.
|
|
204
|
+
attach-to-release:
|
|
205
|
+
needs: publish-pypi
|
|
206
|
+
if: github.event_name == 'release'
|
|
207
|
+
runs-on: ubuntu-latest
|
|
208
|
+
permissions:
|
|
209
|
+
contents: write
|
|
210
|
+
steps:
|
|
211
|
+
- uses: actions/download-artifact@v4
|
|
212
|
+
with:
|
|
213
|
+
name: dist
|
|
214
|
+
path: dist/
|
|
215
|
+
# The tag name goes through `env:`, not `${{ }}` inside the script.
|
|
216
|
+
# GitHub expands `${{ }}` textually *before* bash parses the line, so a
|
|
217
|
+
# tag containing `$(...)` or backticks would execute — double quotes do
|
|
218
|
+
# not help, because the substitution happens before quoting is applied.
|
|
219
|
+
# This job holds `contents: write`. Via env, bash sees the value as data.
|
|
220
|
+
- name: Attach artifacts to the release
|
|
221
|
+
env:
|
|
222
|
+
GH_TOKEN: ${{ github.token }}
|
|
223
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
224
|
+
run: gh release upload "$RELEASE_TAG" dist/* --repo "$GITHUB_REPOSITORY"
|