briefloop 0.31.6__tar.gz → 0.31.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.
- {briefloop-0.31.6 → briefloop-0.31.7}/CHANGELOG.md +8 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/PKG-INFO +2 -2
- {briefloop-0.31.6 → briefloop-0.31.7}/README.md +1 -1
- briefloop-0.31.7/VERSION +1 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/desktop/electron/package-lock.json +2 -2
- {briefloop-0.31.6 → briefloop-0.31.7}/desktop/electron/package.json +1 -1
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/default-behavior.md +2 -2
- {briefloop-0.31.6 → briefloop-0.31.7}/pyproject.toml +1 -1
- briefloop-0.31.7/src/briefloop/__init__.py +1 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/cli.py +8 -5
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/draft_completion.py +23 -10
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/native_orchestrator.py +3 -3
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/native_roles.py +7 -2
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/runtime.py +4 -4
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/index.html +1 -1
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/native-engine.mjs +1 -1
- briefloop-0.31.7/src/briefloop/static/release-notes.json +4 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/websearch.py +21 -9
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop.egg-info/PKG-INFO +2 -2
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_draft_completion.py +3 -3
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fact_check_orchestration.py +40 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fact_check_phase.py +24 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_orchestrator.py +34 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_scout.py +52 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_platform.py +4 -1
- briefloop-0.31.6/VERSION +0 -1
- briefloop-0.31.6/src/briefloop/__init__.py +0 -1
- briefloop-0.31.6/src/briefloop/static/release-notes.json +0 -4
- {briefloop-0.31.6 → briefloop-0.31.7}/.gitattributes +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/CONTRIBUTING.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/KNOWN_ISSUES.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/LICENSE +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/MANIFEST.in +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/SECURITY.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/THIRD_PARTY_NOTICES.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/bootstrap.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/OpenCode/347/211/210/346/234/254/345/205/274/345/256/271.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/WorkBuddy/345/244/226/351/203/250/345/205/245/345/217/243.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/architecture.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/article-materials.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/codex-history-isolation.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/compose/spec/home-v2.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/design-v3.1-validation.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/direct-mode.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/dmg-density-validation.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/draft-first.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/jev-precheck.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/native-integration.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/quality-reading-context.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/quarterly-report.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.26.0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.26.1.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.26.2.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.26.3.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.26.4.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.27.0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.28.0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.28.1.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.28.2.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.28.3.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.28.4.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.29.0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.29.1.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.30.0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.31.0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.31.1.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/release-0.31.4.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/report-length.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/report-revisions.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/report-time-window.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/report-version-information.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/research-context.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/research-handoff.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/revision-learning.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/source-library.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/sqlite-benchmark.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/technical-report-0.21.0/evidence-index.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/technical-report-0.21.0/technical-report.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/windows.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/writer-input.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs/writing-agreements.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//344/272/247/345/223/201/345/256/232/344/275/215/344/270/216/351/252/214/350/257/201.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//344/274/232/350/256/256/347/272/252/350/246/201.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//344/275/277/347/224/250/346/214/207/345/215/227.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//345/206/205/347/275/256/345/274/225/346/223/216.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//345/215/207/347/272/247/350/257/264/346/230/216.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//345/233/276/350/241/250/344/270/216Excel.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//345/244/232Runtime/344/270/216/346/250/241/345/236/213.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//345/244/232/346/250/241/346/200/201/346/235/245/346/272/220.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//345/256/232/346/227/266/346/212/245/345/221/212.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//345/257/271/350/257/235/345/256/277/344/270/273/345/210/207/346/215/242.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//346/212/245/345/221/212/347/274/226/350/276/221/344/270/216/346/250/241/346/235/277.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//346/241/214/351/235/242/345/256/211/350/243/205/344/270/216/346/233/264/346/226/260.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//346/267/261/345/272/246/347/240/224/347/251/266/344/270/216/344/272/213/345/256/236/346/240/270/346/237/245.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//347/211/210/346/234/254/344/270/200/350/207/264/346/200/247/346/243/200/346/237/245.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//347/233/256/346/240/207/351/251/261/345/212/250/347/240/224/347/251/266.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//350/241/214/344/270/232/346/212/245/345/221/212.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//350/257/201/345/210/270/347/240/224/347/251/266.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//350/257/201/346/215/256/344/270/216/347/273/223/350/256/272/350/277/275/346/272/257.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//350/277/220/350/241/214/346/227/266/351/200/211/346/213/251/344/270/216/346/243/200/346/265/213.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/docs//351/252/214/346/224/266/350/256/260/345/275/225.md" +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/examples/internal-weekly-report/README.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/examples/internal-weekly-report/report.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/examples/internal-weekly-report/source.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/examples/meeting-minutes/transcript.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/examples/stock-research/earnings-event.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/anchored-popover.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/api.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/app-updates.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/app.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/article-media.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/assessment-checks.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/assessment-panel.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/citation-evidence.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/citation-sources.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/clipboard.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/compact-report-controls.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/composer-options.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/connectors.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/delivery.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/dom.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/evidence-review-dialogs.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/excel-export.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/fact-check-availability.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/fact-check-grants.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/feedback-list.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/home.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/jev-checks.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/job-presentation.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/learning-onboarding.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/learning-retry.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/length-controls.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/market-convention.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/market-decorations.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/mcp-selection.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/model-catalog.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/native-requests.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/next-report-chat.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/next-report.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/notifications.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/office-tools.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/polling.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/previous-report.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/provider-capabilities.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/provider-settings.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/quick-report.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/readers.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/reasoning-controls.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-browsing.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-chat-context.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-export.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-feedback.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-form-defaults.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-language.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-panels.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-sources.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-start.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-sticky-layout.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/report-version-info.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/research-budget.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/research-goal-progress.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/research-process.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/review-controls.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/review-coverage.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/review-results.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/review-status.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/revision-questions.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/rich-document.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/runtime-cards.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/runtime-model-picker.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/runtime-permission-modes.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/runtime-permission-panel.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/runtime-picker-bindings.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/schedules.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/search-settings.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/session-budget.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/settings-navigation.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/skill-verification.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/source-library-controls.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/source-library-search.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/source-upload.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/source-viewer.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/sources-page.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/task-progress.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/template-output.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/templates.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/time.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/uploads.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/version-diff.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/frontend/welcome.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/package-lock.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/package.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/probes/mcp_m0/README.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/probes/mcp_m0/probe.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/probes/mcp_m0/requirements.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/probes/mcp_m0/server.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/README.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/bridge.test.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/build.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/catalog.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/claude.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/main.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/permission-catalog.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/pi.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/reasoning.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/user-input.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/windows-command.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/runtime-bridge/zcode.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/scripts/build_frontend.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/scripts/build_frontend_licenses.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/scripts/check_versions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/scripts/sync_versions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/scripts/test_frontend.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/setup.cfg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/__main__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/_entrypoint.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/agent_commands.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/agent_prompts.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/analyst.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/analyst_drafts.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/app_server.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/article_materials.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/audit_bundle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/backends/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/backends/opencode_server.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/backends/opencode_v2.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/bocha.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/bridge_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/chat_dispatch.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/chat_execution.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/chat_store.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/chat_tools.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/codex_diagnostics.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/codex_home.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/company_context.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/comparison_contract.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/conflicts.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/MATERIALS.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/README.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/config.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/grants.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/materials.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/receipts.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/runtime.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/runtime_tools.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/service.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/stdio_supervisor.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/task_client.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/tasks.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/transport.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/connectors/windows_acl.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/coverage_record.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/default_fonts.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/deliverable_spec.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/delivery_checks.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/delivery_state.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/demo.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/direct_citations.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/direct_reports.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/document_export.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/document_model.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/document_workflows.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/docx_text.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/draft_checks.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/duckduckgo.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/evaluation_reading.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/evidence.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/evidence_context.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/execution_records.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/execution_timing.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/export_jobs.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/export_labeling.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/exports.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/external_client.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/external_mcp.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/external_requests.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/fact_check.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/fast_mode.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/fast_reports.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/fast_research.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/feedback_view.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/figure_support.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/figure_text.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/figures.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/finding_anchors.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/host_bins.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/html_export.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/html_export_assets/report.css +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/html_export_assets/report.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/industry_data.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/industry_export.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/interactive_runtime.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/jev.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/jev_checks.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/learning.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/learning_budget.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/length.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/market_convention.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/media.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/model_budget.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/models.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/native_engine.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/native_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/native_providers.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/next_report.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/notifications.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/office_cli.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/ooxml_order.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/opencode_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/opencode_version.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/packet_views.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/parent_watch.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/plain_isolation.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/platform_support.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/previous_report.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/process_host.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/progress.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/projections.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/core.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/mode.background.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/mode.interactive.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.analyst.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.chat.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.direct_writer.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.evaluator.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.fact_checker.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.maintainer.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.orchestrator.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.proposer.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.quick_writer.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.reviewer.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/prompt_assets/role.scout.zh.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/provider_catalog.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/readers.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/reconciliation.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/release.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/report_browsing.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/report_profiles.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/report_revision.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/report_time.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/report_tools.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/research_budget.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/research_goals.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/research_handoff.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/research_plan.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/research_reading.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/review.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/review_capability.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/review_learning.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/revision_edits.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/revision_evidence.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/revision_metadata.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/revision_policy.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/revision_research.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/rpc_writer.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/runtime_bridge.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/runtime_permissions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/runtime_reasoning.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/schedules.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/scout.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/scout_coverage.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/scout_evidence.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/scout_tools.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/search_credentials.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/search_policy.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/server.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/skill_assets/briefloop-external/SKILL.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/skill_assets/duckduckgo/SKILL.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/skill_assets/multi-search/SKILL.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/skill_assets/tavily/SKILL.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/skill_delivery.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/skill_verification.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/skills.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/software_release_notes.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/software_version.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/source_context.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/source_extraction.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/source_ingestion.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/source_library_search.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/source_lifecycle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/source_search.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/source_updates.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/sources.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/app.js +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/frontend-licenses.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/native-engine-image-worker.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/native-engine-licenses.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/native-engine-models.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/native-engine-photon.wasm +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-aider.png +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-amr.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-antigravity.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-bridge.LICENSE.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-bridge.NOTICE.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-bridge.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-briefloop.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-claude.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-codebuddy.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-codex.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-copilot.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-cursor-agent.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-deepseek.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-devin.png +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-grok-build.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-hermes.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-kilo.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-kimi.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-kiro.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-mimo.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-opencode.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-pi.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-qoder.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-qwen.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-reasoning.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-reasonix.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-trae-cli.png +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/runtime-vibe.svg +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/style.css +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/static/tokens.css +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/store.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/task_context.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/task_labels.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/task_notify.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/task_progress.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/tavily.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/academic-paper-zh-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/annual-report-zh-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/business-report-zh-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-en-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/general-report-zh-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/government-doc-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/government-doc-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/legal-contract-zh-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/meeting-minutes-zh-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-en-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t1.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t1.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t2.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t2.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t3.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t3.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t4.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t4.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t5.docx +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_assets/stock-research-zh-t5.spec.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/template_conversion.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/templates.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/user_input.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/version_execution.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/windows_process.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/word_import.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workbook_figures.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/evaluation.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/methods/decision_memo.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/methods/industry_periodic.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/methods/industry_quarterly.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/methods/industry_quarterly_review.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/methods/work_progress.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/planning.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/business_report/writing.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/general_report/evaluation.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/general_report/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/general_report/planning.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/general_report/writing.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/meeting_minutes/evaluation.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/meeting_minutes/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/meeting_minutes/planning.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/meeting_minutes/writing.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/stock_research/evaluation.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/stock_research/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/stock_research/methods/company_research.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/stock_research/methods/event_commentary.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/stock_research/methods/industry_tracking.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/stock_research/planning.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workflow_assets/stock_research/writing.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workspace_profile.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/workspaces.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/writer_assembly.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/writer_input.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/writing_agreements.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/writing_guidance.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/xlsx_export.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop/zhipu.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop.egg-info/SOURCES.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop.egg-info/dependency_links.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop.egg-info/entry_points.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop.egg-info/requires.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/briefloop.egg-info/top_level.txt +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/__main__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/_licenses/LICENSE +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/_licenses/NOTICE.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/_licenses/third_party/acorn/LICENSE +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/_licenses/third_party/acorn/NOTICE.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/_licenses/third_party/officeqa/LICENSE-APACHE +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/_licenses/third_party/officeqa/NOTICE +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/alfworld/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/alfworld/act.sh +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/alfworld/rollout.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/alfworld/step.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/benchmarks/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/benchmarks/alfworld.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/benchmarks/livemath.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/benchmarks/sealqa.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/benchmarks/spreadsheet.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/cli.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/codex_identity.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/engine.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/feedback_loop.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/isolated/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/isolated/audit.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/isolated/runtime.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/isolated/tools_server.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/jsonl.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/k4_lock.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/livemath/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/livemath/loop.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/livemath/rollout.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/native_agents.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/dataset.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/fetch.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/loop.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/retrieval.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/reward.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/rollout.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/scoring.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/officeqa/wiki_agents.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/paper_alignment/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/paper_alignment/contracts.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/paper_alignment/evidence.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/product.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/product_cli.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/product_install.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/product_views.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/id_split/split_manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/id_split/test.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/id_split/train.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/id_split/val.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/wiki/SKILL-s0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/wiki/index.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/wiki/logs.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/wiki/prompts/maintainer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/wiki/prompts/proposer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/alfworld/wiki/skill-impact.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/isolated/model-catalog-direct.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split/split_manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split/test.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split/train.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split/val.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split-v2/split_manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split-v2/test.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split-v2/train.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/id_split-v2/val.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/protocol.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/wiki/SKILL-s0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/wiki/index.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/wiki/logs.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/wiki/prompts/maintainer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/wiki/prompts/proposer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/livemath/wiki/skill-impact.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/id_split/split_manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/id_split/test.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/id_split/train.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/id_split/val.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/protocol.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/wiki/SKILL-s0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/wiki/index.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/wiki/logs.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/wiki/prompts/maintainer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/wiki/prompts/proposer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/officeqa/wiki/skill-impact.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/paper_alignment/README.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/paper_alignment/prompts/maintainer.paper.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/paper_alignment/prompts/officeqa.paper.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/paper_alignment/prompts/proposer.paper.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/paper_alignment/prompts/spreadsheet.paper.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/agents/claude-code/wikiskill-executor.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/agents/claude-code/wikiskill-maintainer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/agents/claude-code/wikiskill-proposer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/agents/codex/wikiskill-executor.toml +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/agents/codex/wikiskill-maintainer.toml +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/agents/codex/wikiskill-proposer.toml +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/entry-skill/SKILL.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/entry-skill/agents/openai.yaml +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/entry-skill/references/native-subagents.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/entry-skill/references/workflow.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/roles/executor.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/roles/maintainer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/product/roles/proposer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/final-20260907/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/final-20260907/math-episodes.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/final-20260907/sealqa-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/final-20260907/spreadsheet-SKILL.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/final-20260907/spreadsheet-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/final-20260907/summary.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/example-provenance.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/installed-smoke.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/repeat1-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/repeat2-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/repeat3-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/summary.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/repeatability-20260908/wiki-deliver-the-recalculated-workbook.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/livemath/55.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/livemath/luna.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/officeqa/55.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/officeqa/terra.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/officeqa-retrieval/55.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/officeqa-retrieval/sol.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/sealqa/sol.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/spreadsheet/55.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/skills/spreadsheet/sol.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/snapshot.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/snapshot.sha256 +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260906/livemath-luna-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260906/livemath-luna-skill.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260906/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260906/officeqa-luna-skill.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260906/officeqa-sol-skill.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260906/officeqa-sol-v2-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260906/studies.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/effort-analysis.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/effort-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/officeqa-luna-paper-tools-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/officeqa-luna-paper-tools-skill.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/spreadsheet-luna-scoped-python-pairs.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/spreadsheet-luna-scoped-python-skill.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/research/update-20260907/studies.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/runtime/acorn.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/runtime/audit_js.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/id_split/split_manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/id_split/test.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/id_split/train.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/id_split/val.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/protocol.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/wiki/SKILL-s0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/wiki/index.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/wiki/logs.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/wiki/prompts/maintainer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/wiki/prompts/proposer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/sealqa/wiki/skill-impact.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/id_split/split_manifest.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/id_split/test.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/id_split/train.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/id_split/val.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/protocol.json +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/wiki/SKILL-s0.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/wiki/index.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/wiki/logs.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/wiki/prompts/maintainer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/wiki/prompts/proposer.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/resources/spreadsheet/wiki/skill-impact.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/results.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/score_rules.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/scorer_trust.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/sealqa/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/sealqa/loop.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/sealqa/rollout.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/settings.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/skill_proposer.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/spreadsheet/__init__.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/spreadsheet/loop.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/spreadsheet/rollout.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/spreadsheet/study.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/tool_audit.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/wiki.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/src/wikiskill/wiki_maintainer.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/start.ps1 +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/start.sh +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/check_distribution.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_anchored_popover.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_app_updates.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_assessment_checks.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_brand_colors.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_chat_attachments.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_chat_commands.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_chat_drafts.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_chat_layout.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_chat_polling.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_checkout_eol.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_citation_clipboard.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_citation_edit.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_citation_evidence.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_citation_sources.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_clipboard_fallback.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_excel_export.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_export_menu.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_fact_check_availability.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_fact_check_grants.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_fast_mode.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_feedback_list.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_home_v2.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_job_presentation.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_learning_authorization.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_learning_onboarding.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_learning_retry.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_length_controls.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_licenses.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_live_status.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_markdown_import.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_market_convention.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_mcp_selection.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_model_catalog_refresh.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_model_label.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_model_selection.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_native_requests.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_native_runtime.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_next_report.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_office_tools.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_open_brief_status.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_pending_report.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_polling.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_previous_report.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_progress_race.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_provider_capabilities.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_quick_report.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_readers.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_reasoning_controls.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_release_controls.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_release_navigation.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_browsing.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_chat_drawer.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_export.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_feedback.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_form_defaults.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_language.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_load.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_outline.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_panels.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_start.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_report_version_info.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_research_process.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_review_capability.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_review_coverage.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_review_status.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_revision_questions.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_runtime_discovery.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_runtime_feedback.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_runtime_model_picker.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_runtime_permission_panel.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_save_barrier.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_settings_navigation.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_settings_workspaces.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_setup_state.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_skill_verification.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_source_library.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_source_lifecycle.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_source_media.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_source_search.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_source_upload.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_startup_recovery.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_task_progress.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_template_groups.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_template_output.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_update_notifications.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_upload_limits.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_version_bodies.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_version_diff.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_welcome_gate.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_workspace_proposal.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/frontend_writing_preferences.mjs +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_agent_backend.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_agent_commands.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_agent_session_budget.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_analyst_draft_versions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_article_materials.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_assessment_followup.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_bridge_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_builtin_templates.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_chat_dispatch.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_chat_execution.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_chat_model_selection.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_chat_stop.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_cli_goal_handoff.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_codex_home.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_codex_idle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_connection_test_history.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_connector_authorization.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_connector_empty_catalog.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_connector_materials.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_connectors.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_core.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_coverage_record.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_cross_module_regressions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_delivery_checks.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_demo.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_desktop_lifecycle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_direct_reports.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_document_workflows.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_draft_contract.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_draft_republish.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_english_reports.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_entrypoint.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_evidence.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_evidence_parse_failures.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_execution_records.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_export_admission.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_export_labeling.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_export_layout_swap.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_export_xlsx.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_external_mcp.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_external_requests.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fact_check_contract.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fact_check_review.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fact_check_switch.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fact_status_tool.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fast_evidence.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fast_mode.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fast_qualifier_checks.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fast_reports.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fast_research.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_feedback_view.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_fetch_contact.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_figure_exports.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_figure_flow.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_figure_text.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_figures.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_finding_anchors.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_generation_schema_guidance.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_host_bins.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_html_export.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_html_export_states.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_human_learning.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_industry_export.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_industry_flow.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_industry_research.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_interactive_runtime.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_jev_checks.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_learning_authorization.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_learning_integrity.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_length.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_length_policy.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_markdown_download.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_market_convention.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_media_sources.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_model_catalog_defaults.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_monthly_research.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_multimodal_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_multimodal_http.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_analyst.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_evaluator.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_goal_research.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_learning.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_provider_storage.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_providers.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_review_contract.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_native_scout_round_paths.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_next_report.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_notifications.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_npm_native_shim.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_numeric_occurrence_review.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_office_cli.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_office_source_structure.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_office_surfaces.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_ooxml_order.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_harness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_idle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_prompt_versions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_provider.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_questions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_reasoning.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_review_version.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_search_prompt.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_server_stdin.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_v2.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_opencode_version_probe.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_plain_isolation.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_posix_process_tree.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_pr593_roundtrip.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_previous_report.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_product_summary_consistency.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_progress.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_progress_pipeline.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_provider_catalog.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_public_research.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_quality_checklist_candidate.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_quality_reading_context.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_quarterly_report.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_reader_contract.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_reader_profiles.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_reader_source_export.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_reader_workflow.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_reconciliation.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_release.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_release_identity.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_report_browsing.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_report_deletion.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_report_length_feedback.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_report_path_regressions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_report_time.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_research_budget.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_research_gap_updates.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_research_goals.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_research_handoff.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_research_plan.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_research_response_admission.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_resume_in_place.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_capability.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_finding_consistency.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_modes.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_packet_paths.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_public_metadata.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_schema_drift.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_snapshot.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_review_visual_input.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_revision_citations.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_revision_edits.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_revision_policy.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_rich_document.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_role_models.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_bridge.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_bridge_idle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_json_bom.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_liveness.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_names.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_permissions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_propagation.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_runtime_retry.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_schedules.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_scout_coverage.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_search_credentials.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_search_policy.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_server_boundary.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_settings_transactions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_skill_verification.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_software_release_notes.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_software_version.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_source_ingestion.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_source_library_search.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_source_lifecycle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_source_recovery_regressions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_source_updates.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_sources_provenance.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_store_wal.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_table_citation_advisory.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_task_context.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_task_notify.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_task_progress.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_tavily.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_template_conversion.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_template_conversion_http.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_templates.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_user_input.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_user_source_refresh.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_version_consistency.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_version_execution.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_websearch.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_wikiskill_engine_windows.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_antigravity_permissions.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_connector_acl.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_distribution.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_mcp_supervisor.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_release_paths.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_review_paths.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_runtime_bundle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_windows_xlsx_paths.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_word_import.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_word_source_locators.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_word_toc.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_worker_idle.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_workspace_action_errors.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_workspace_profile.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_workspaces.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_writer_assembly.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_writer_cli_guidance.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_writer_context.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_writer_input.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_writing_agreements.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_xlsx_officecli_integration.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/tests/test_xlsx_preview.py +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/LICENSE +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/NOTICE.md +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/acp/constants.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/acp/json.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/acp/models.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/acp/rpc.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/acp/session-params.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/acp/types.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/byok-reference/byok-opencode.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/byok-reference/provider-models.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/core/index.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/core/json-line-stream.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/runtime-models/codex-models.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/runtime-models/mmd-routes.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/runtime-models/models.ts +0 -0
- {briefloop-0.31.6 → briefloop-0.31.7}/third_party/open-design/runtime-models/opencode-models.ts +0 -0
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# 变更记录
|
|
2
2
|
|
|
3
|
+
## 0.31.7
|
|
4
|
+
|
|
5
|
+
- 修复研究工具参数错误被误认成搜索服务故障,作者可按回执纠正参数继续检索。
|
|
6
|
+
- 修复多行原文读取和历史日期过滤,直接研究无需派发 Scout 也能正常交接写稿。
|
|
7
|
+
- 失败事实核查可在原预算内重新尝试,保留旧结果并拒绝旧任务的迟到提交。
|
|
8
|
+
- 默认直写作者支持上下文连续压缩,长研究不再因漏接压缩而中止。
|
|
9
|
+
- Mac 发行接入 Developer ID 签名和 Apple 公证;正式通过状态以发行验收记录为准。
|
|
10
|
+
|
|
3
11
|
## 0.31.6
|
|
4
12
|
|
|
5
13
|
- 收敛新报告入口:按任务自动选择所需流程,保留材料范围、研究投入和篇幅;原有任务配置不改。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: briefloop
|
|
3
|
-
Version: 0.31.
|
|
3
|
+
Version: 0.31.7
|
|
4
4
|
Summary: Local multi-runtime agent workbench for sourced briefings, independent review and skill learning
|
|
5
5
|
Author: Stahl-G
|
|
6
6
|
License-Expression: MIT
|
|
@@ -52,7 +52,7 @@ Dynamic: license-file
|
|
|
52
52
|
|
|
53
53
|
报告可选中文或英文,英文写作规范、词数和导出版式贯穿写稿与审阅;新增 Excel 报表导出,未安装 OfficeCLI 也能使用。OpenCode 1.x 与 2.x 同时支持,普通审阅和严格审阅分别展示实际能力,重大事实错误与证据缺口仍阻止正式交付。
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
提供 macOS Apple Silicon、Windows 和 Python/CLI 安装入口。Mac 签名、公证、各平台验收状态及工件哈希见对应发行页。完整变更见 [CHANGELOG](CHANGELOG.md)。
|
|
56
56
|
|
|
57
57
|
新工作区默认优先 Tavily,同时允许宿主自带搜索补查;可主动启用博查、智谱搜索或 DuckDuckGo,按跨市场覆盖或具体缺口补查。受控渠道共用本轮预算,搜索失败、实际发现渠道与原文分别保留。Tavily 需要 API Key,额度以服务账号为准;宿主自带搜索取决于实际工具与权限。
|
|
58
58
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
报告可选中文或英文,英文写作规范、词数和导出版式贯穿写稿与审阅;新增 Excel 报表导出,未安装 OfficeCLI 也能使用。OpenCode 1.x 与 2.x 同时支持,普通审阅和严格审阅分别展示实际能力,重大事实错误与证据缺口仍阻止正式交付。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
提供 macOS Apple Silicon、Windows 和 Python/CLI 安装入口。Mac 签名、公证、各平台验收状态及工件哈希见对应发行页。完整变更见 [CHANGELOG](CHANGELOG.md)。
|
|
16
16
|
|
|
17
17
|
新工作区默认优先 Tavily,同时允许宿主自带搜索补查;可主动启用博查、智谱搜索或 DuckDuckGo,按跨市场覆盖或具体缺口补查。受控渠道共用本轮预算,搜索失败、实际发现渠道与原文分别保留。Tavily 需要 API Key,额度以服务账号为准;宿主自带搜索取决于实际工具与权限。
|
|
18
18
|
|
briefloop-0.31.7/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.31.7
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "briefloop-desktop",
|
|
3
|
-
"version": "0.31.
|
|
3
|
+
"version": "0.31.7",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "briefloop-desktop",
|
|
9
|
-
"version": "0.31.
|
|
9
|
+
"version": "0.31.7",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
| 报告反馈继续补查 | Native 报告聊天与其他宿主一样,在该消息获准联网后提供实际搜索、网页读取工具 | 绑定本消息、原稿版本与剩余预算;普通聊天、只读讨论、离线反馈不会取得该权限,完成或中断后失效 |
|
|
13
13
|
| 直写稿独立事实核查 | 已有依据补全调用选择最多 12 条公开事实候选,定位到正文与原件后进入默认核查流程 | 候选不是正确性判定;联网核查及独立审阅仍各自执行。只处理可确认的匿名公开 HTTP 原件,混有未确认材料时不自动提取 |
|
|
14
14
|
| 核查缺口显示 | 检查栏显示当前版本未进入核查的原因 | 旧稿原因不覆盖新稿,真实结果和正在执行的阶段优先;不往报告正文追加流程声明 |
|
|
15
|
-
| 失败检查恢复 |
|
|
15
|
+
| 失败检查恢复 | 绑定原稿的检查可恢复或按当前模型重试,保留失败记录与已用额度 | 工具或抓取失败后的核查可重试;只重做检查,实际模型和思考档位单独记录 |
|
|
16
16
|
|
|
17
17
|
公开原件准入当前不包含上传文件、连接器或通用提供方响应,也不接受含凭据、查询参数或片段的地址。
|
|
18
|
-
|
|
18
|
+
失败或空正文来源也必须通过公开资料许可检查;不能因抓取失败而放行其 URL。混有未确认来源时,自动候选提取与外部事实核查均停止;已有标准流程及手动登记的主张维持原有行为。
|
|
19
19
|
候选选择仍会遗漏事实;没有候选、搜索额度不足或检查未完成都不能显示为整稿核实。
|
|
20
20
|
自动派发和实际执行前会复核公开资料范围,失效的旧稿绑定不进入新版核查。
|
|
21
21
|
事实核查查询可以查历史背景,不被本期新闻窗口覆盖;普通 Tavily 研究按 UTC 日期扩大到覆盖边界,报告自身时间范围保持原值。
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "briefloop"
|
|
7
|
-
version = "0.31.
|
|
7
|
+
version = "0.31.7"
|
|
8
8
|
description = "Local multi-runtime agent workbench for sourced briefings, independent review and skill learning"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.31.7"
|
|
@@ -15,11 +15,14 @@ from . import __version__
|
|
|
15
15
|
|
|
16
16
|
def _search_failure(operation,exc,provider='tavily'):
|
|
17
17
|
"""A structured, redacted failure so the Scout's path-switching can act on it."""
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
result = {'provider':getattr(exc,'provider',None) or provider,'operation':operation,'status':'failed',
|
|
19
|
+
'failure_kind':getattr(exc,'failure_kind','provider_error'),
|
|
20
|
+
'http_status':getattr(exc,'status',None),
|
|
21
|
+
'error':str(exc),
|
|
22
|
+
'request_record_path':getattr(exc,'request_record_path',None)}
|
|
23
|
+
if result['failure_kind'] == 'invalid_arguments':
|
|
24
|
+
result.update(recoverable=True, recovery_action='correct_arguments')
|
|
25
|
+
return result
|
|
23
26
|
|
|
24
27
|
|
|
25
28
|
def main():
|
|
@@ -5,7 +5,7 @@ an independent fact check, and completing this job does not create a release.
|
|
|
5
5
|
"""
|
|
6
6
|
import hashlib
|
|
7
7
|
import json
|
|
8
|
-
from .store import dump, Conflict
|
|
8
|
+
from .store import dump, Conflict, uid, now
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def source_metadata(store, source_id):
|
|
@@ -298,28 +298,41 @@ def require_fact_check_settled(store, job):
|
|
|
298
298
|
raise ValueError('本版本候选核查尚未完成('+str(stage.get('status') or '未接纳')+');请先处理核查预算或中断状态,再恢复检查。')
|
|
299
299
|
|
|
300
300
|
|
|
301
|
-
def
|
|
302
|
-
"""
|
|
301
|
+
def resume_fact_check_stage(connection, job):
|
|
302
|
+
"""Resume an owned cancelled check or retry a failed one with the same allowance.
|
|
303
303
|
|
|
304
|
-
|
|
305
|
-
|
|
304
|
+
Failed attempts retain their own stage identity, rejecting late results.
|
|
305
|
+
Request charges, source bindings and the original budget remain unchanged.
|
|
306
306
|
"""
|
|
307
307
|
payload=json.loads(job['payload'])
|
|
308
308
|
if not payload.get('continuation_of'):return
|
|
309
309
|
from .research_plan import _read_plan, _save_plan
|
|
310
310
|
plan=_read_plan(connection,payload['run_id']) or {}
|
|
311
311
|
stage=plan.get('fact_check') or {}
|
|
312
|
-
if stage.get('status')
|
|
312
|
+
if stage.get('status') not in ('cancelled', 'failed'):return
|
|
313
313
|
versions = _fact_check_versions(None, job, payload, connection=connection)
|
|
314
314
|
owners = [attempt['id'] for attempt in _check_attempts(None, job, payload, connection=connection)]
|
|
315
|
-
|
|
315
|
+
statuses = ('cancelled',) if stage['status'] == 'cancelled' else ('complete', 'failed', 'interrupted', 'cancelled')
|
|
316
|
+
owned=connection.execute("SELECT id FROM jobs WHERE kind='fact_check' AND status IN ("
|
|
317
|
+
+ ','.join('?' for _ in statuses) + ') '
|
|
318
|
+
|
|
316
319
|
"AND json_extract(payload,'$.parent_job_id') IN (" + ','.join('?' for _ in owners) + ') '
|
|
317
320
|
"AND json_extract(payload,'$.run_id')=? "
|
|
318
321
|
"AND json_extract(payload,'$.version_id') IN (" + ','.join('?' for _ in versions) + ') '
|
|
319
|
-
"AND json_extract(payload,'$.stage_id')=?", (*owners,payload['run_id'],*versions,stage.get('stage_id'))).fetchone()
|
|
322
|
+
"AND json_extract(payload,'$.stage_id')=?", (*statuses,*owners,payload['run_id'],*versions,stage.get('stage_id'))).fetchone()
|
|
320
323
|
if not owned:return
|
|
321
|
-
stage
|
|
322
|
-
|
|
324
|
+
if stage['status'] == 'failed':
|
|
325
|
+
from .research_budget import restore_fact_check_budget_offset
|
|
326
|
+
retry = {**stage, 'status': 'active', 'closed': None, 'outcome': None}
|
|
327
|
+
# Restore old published offsets against the old request ledger before
|
|
328
|
+
# assigning a new identity. This cannot replenish consumed allowance.
|
|
329
|
+
restore_fact_check_budget_offset(connection, payload['run_id'], {**plan, 'fact_check': retry})
|
|
330
|
+
retry.update(stage_id=uid('fchk'), created=now(), retry_of_stage_id=stage['stage_id'])
|
|
331
|
+
plan.setdefault('fact_check_history', []).append(stage)
|
|
332
|
+
plan['fact_check'] = retry
|
|
333
|
+
else:
|
|
334
|
+
stage.setdefault('interrupted_closures', []).append({key: stage.get(key) for key in ('status', 'closed', 'outcome')})
|
|
335
|
+
stage.update(status='active', closed=None, outcome=None)
|
|
323
336
|
_save_plan(connection,payload['run_id'],plan)
|
|
324
337
|
|
|
325
338
|
|
|
@@ -315,9 +315,9 @@ def _refresh_research(store, config):
|
|
|
315
315
|
else:
|
|
316
316
|
from .research_plan import frozen
|
|
317
317
|
from .scout_coverage import view
|
|
318
|
-
#
|
|
319
|
-
#
|
|
320
|
-
if not
|
|
318
|
+
# Any frozen strategy can research directly without inventing Scout
|
|
319
|
+
# receipts. Promised workers still need their normal join/closeout.
|
|
320
|
+
if not frozen(store, config['run_id']) or view(store, config['run_id'])['scout_execution']:
|
|
321
321
|
return
|
|
322
322
|
research = {'sources': [], 'gaps': []}
|
|
323
323
|
research = current_research(store, config['run_id'], research, register=True)
|
|
@@ -481,6 +481,9 @@ def source_read(store, config, args):
|
|
|
481
481
|
limit = min(int(args.get('max_chars') or READ_CHARS), READ_CHARS)
|
|
482
482
|
try:
|
|
483
483
|
offset = args.get('start_char')
|
|
484
|
+
# Zero offset does not conflict with an explicit multi-line window.
|
|
485
|
+
if type(offset) is int and offset == 0 and end is not None and end != (start or 1):
|
|
486
|
+
offset = None
|
|
484
487
|
if offset is not None:
|
|
485
488
|
lines = store.source_text(sid).splitlines(); number = start or 1
|
|
486
489
|
if (type(offset) is not int or offset < 0 or number < 1 or number > len(lines)
|
|
@@ -628,7 +631,8 @@ SCOUT_READ_TOOLS = [
|
|
|
628
631
|
'parameters': {'type': 'object', 'required': ['source_id'], 'additionalProperties': False,
|
|
629
632
|
'properties': {'source_id': {'type': 'string'},
|
|
630
633
|
'start_line': {'type': 'integer', 'minimum': 1},
|
|
631
|
-
'start_char': {'type': 'integer', 'minimum': 0,
|
|
634
|
+
'start_char': {'type': 'integer', 'minimum': 0,
|
|
635
|
+
'description': '单行字符偏移,从 0 开始。非零偏移只读 start_line,end_line 须相同;0 可用于正常多行读取。'},
|
|
632
636
|
'end_line': {'type': 'integer', 'minimum': 1},
|
|
633
637
|
'max_chars': {'type': 'integer', 'minimum': 1}}},
|
|
634
638
|
'handler': source_read},
|
|
@@ -654,7 +658,8 @@ def _scout_web_tools(channels):
|
|
|
654
658
|
'query': {'type': 'string'},
|
|
655
659
|
'purpose': {'type': 'string', 'enum': ['primary', 'coverage_probe', 'gap_repair']},
|
|
656
660
|
'reason': {'type': 'string', 'description': '这次想多知道什么'},
|
|
657
|
-
'gap_id': {'type': 'string'
|
|
661
|
+
'gap_id': {'type': 'string',
|
|
662
|
+
'description': '可省略。仅引用现有计划已登记的真实缺口 ID;gap_repair 先取得 ID,primary/coverage_probe 不要编造。'},
|
|
658
663
|
'topic': {'type': 'string', 'enum': ['general', 'news']},
|
|
659
664
|
'time_range': {'type': 'string', 'enum': ['day', 'week', 'month', 'year']},
|
|
660
665
|
'start_date': _DATE, 'end_date': _DATE,
|
|
@@ -725,12 +725,12 @@ class Worker:
|
|
|
725
725
|
if job['kind']=='learn':
|
|
726
726
|
self._check_feedback_owner(c,jid,payload)
|
|
727
727
|
if job['kind']=='assess' and payload.get('continuation_of'):
|
|
728
|
-
from .draft_completion import
|
|
728
|
+
from .draft_completion import resume_fact_check_stage
|
|
729
729
|
if c.execute("SELECT id FROM jobs WHERE id<>? AND status IN ('queued','running') AND json_extract(payload,'$.continuation_of')=?",(jid,payload['continuation_of'])).fetchone():
|
|
730
730
|
raise ValueError('本报告另一个检查任务仍在执行,请先等待或停止它')
|
|
731
731
|
if any(child['id'] in self._review_jobs for child in c.execute("SELECT id FROM jobs WHERE json_extract(payload,'$.parent_job_id')=?",(jid,))):
|
|
732
732
|
raise ValueError('关联核查仍在停止,请稍后恢复')
|
|
733
|
-
|
|
733
|
+
resume_fact_check_stage(c,job)
|
|
734
734
|
# Resume keeps the frozen configuration and original task identity.
|
|
735
735
|
payload['attempt']=int(payload.get('attempt',1))+1
|
|
736
736
|
c.execute("UPDATE jobs SET payload=?,status='queued',error=NULL,updated=? WHERE id=?",(dump(payload),now(),jid))
|
|
@@ -824,8 +824,8 @@ class Worker:
|
|
|
824
824
|
frozen['checks_identity']=hashlib.sha256(dump([
|
|
825
825
|
original['continuation_of'],payload['checks_input'],identity_payload]).encode()).hexdigest()
|
|
826
826
|
connection.execute('UPDATE jobs SET payload=? WHERE id=?',(dump(frozen),new_id))
|
|
827
|
-
from .draft_completion import
|
|
828
|
-
|
|
827
|
+
from .draft_completion import resume_fact_check_stage
|
|
828
|
+
resume_fact_check_stage(connection, {'id': new_id, 'payload': dump(frozen)})
|
|
829
829
|
return
|
|
830
830
|
if job['kind']!='learn':return
|
|
831
831
|
self._check_feedback_owner(connection,jid,original)
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
<div class="settings-page-header"><div><p class="eyebrow">BRIEFLOOP · 设置</p><h1 id="settings-title">模型与工作设置</h1><p class="help">配置执行引擎、模型与工作习惯。</p></div><button id="settings-close" type="button" class="outline">返回 ↗</button></div>
|
|
80
80
|
<div class="settings-layout"><nav class="settings-nav" aria-label="设置分类"><button type="button" data-settings-view="models" class="active">模型与提供商</button><button type="button" data-settings-view="connectors">数据连接器(MCP)</button><button type="button" data-settings-view="execution">运行与搜索</button><button type="button" data-settings-view="learning">反馈与学习</button><button type="button" data-settings-view="workspaces">工作区</button><button type="button" data-settings-view="updates">版本与更新</button></nav>
|
|
81
81
|
<div class="settings-content"><section id="settings-view-models"><div class="settings-segments" role="tablist" aria-label="模型接入方式"><button id="settings-tab-api" role="tab" aria-selected="false" aria-controls="settings-api" type="button" title="基于 Pi SDK">BriefLoop Agent</button><button id="settings-tab-cli" role="tab" aria-selected="true" aria-controls="settings-cli" type="button">Agent CLI</button></div><div id="settings-session-note" class="settings-session-note help" hidden></div><section id="settings-cli" role="tabpanel" aria-labelledby="settings-tab-cli"><div id="settings-runtime-list"></div><div id="settings-model-block"></div></section><section id="settings-api" role="tabpanel" aria-labelledby="settings-tab-api" hidden><div id="settings-native-runtime"></div></section></section>
|
|
82
|
-
<section id="settings-view-updates" data-web-version="0.31.
|
|
82
|
+
<section id="settings-view-updates" data-web-version="0.31.7" hidden>
|
|
83
83
|
<h2>版本与更新</h2><p id="app-update-version">正在读取实际运行版本…</p><p id="app-update-latest-version" class="help">尚未检查可用版本</p><pre id="app-update-command" hidden></pre>
|
|
84
84
|
<p id="app-update-status" role="status" aria-live="polite">尚未检查更新</p>
|
|
85
85
|
<p id="app-update-test-source" class="help" hidden>本地测试更新源 · 仅验证流程,不代表官方发布</p>
|
|
@@ -2763,7 +2763,7 @@ Options:
|
|
|
2763
2763
|
4. \u5173\u952E\u7ED3\u8BBA\u5BF9\u5E94\u7684\u539F\u6587\u4F4D\u7F6E\uFF0C\u4EE5\u53CA\u6539\u53D8\u884C\u52A8\u7684\u524D\u63D0\u3001\u8303\u56F4\u3001\u65E5\u671F\u3001\u53E3\u5F84\u3001\u53CD\u4F8B\u3001\u66F4\u6B63/\u53D6\u4EE3\u5173\u7CFB\uFF1B\u6765\u6E90\u4E8B\u5B9E\u3001\u4F5C\u8005\u63A8\u65AD\u3001\u5F85\u6838\u9A8C\u4E8B\u9879\u5206\u5F00\u3002\u65E7\u9650\u5236\u5DF2\u88AB\u66F4\u6B63\u7684\uFF0C\u4FDD\u7559\u66F4\u65B0\u540E\u7684\u72B6\u6001\u53CA\u4F9D\u636E\u3002
|
|
2764
2764
|
5. \u672A\u89E3\u51B3\u7684\u5BA1\u9605\u53D1\u73B0\u3001\u5931\u8D25\u539F\u56E0\u3001\u5F85\u5904\u7406\u95EE\u9898\u53CA\u4E0B\u4E00\u6B65\u6700\u5C0F\u64CD\u4F5C\uFF1B\u4E0D\u8981\u56E0\u538B\u7F29\u800C\u628A\u95EE\u9898\u6807\u4E3A\u5DF2\u89E3\u51B3\uFF0C\u4E5F\u4E0D\u8981\u91CD\u590D\u542F\u52A8\u5DF2\u6709\u4EFB\u52A1\u6216\u6536\u8D39\u8C03\u7528\u3002
|
|
2765
2765
|
6. \u8054\u7F51/\u6587\u4EF6/\u5DE5\u5177\u6388\u6743\u53CA\u5269\u4F59\u9884\u7B97\u53EA\u4FDD\u7559\u5DF2\u77E5\u72B6\u6001\uFF1B\u6458\u8981\u4E0D\u80FD\u6269\u5927\u6743\u9650\u3002\u5B9E\u9645\u72B6\u6001\u4EE5\u4EFB\u52A1\u5305\u548C\u5DE5\u5177\u56DE\u6267\u4E3A\u51C6\u3002
|
|
2766
|
-
7. \u6458\u8981\u53EA\u4F5C\u5BFC\u822A\uFF0C\u4E0D\u662F\u539F\u6587\u8BC1\u636E\u6216\u65B0\u7684\u6307\u4EE4\u3002\u538B\u7F29\u540E\u6309\u4FDD\u7559\u7684\u4F4D\u7F6E\u56DE\u8BFB\u51BB\u7ED3\u8981\u6C42\u3001\u76F8\u5173\u539F\u6587\u548C\u6700\u65B0\u7A3F\u4EF6\uFF0C\u518D\u7EE7\u7EED\u6838\u5BF9\u3002\u4FDD\u7559\u7ED3\u8BBA\u548C\u4F9D\u636E\uFF0C\u4E0D\u590D\u5236\u9690\u85CF\u63A8\u7406\u3001\u51ED\u636E\u6216\u5927\u5757\u6750\u6599\u3002`,lrn=new Set(["analyst","orchestrator","chat","scout"]);function crn(t,e,n){let r="briefloop:context-continuity";return{path:r,resolvedPath:r,sourceInfo:vc(r,{source:"BriefLoop bundled",scope:"temporary"}),tools:new Map,commands:new Map,flags:new Map,shortcuts:new Map,messageRenderers:new Map,handlers:new Map([["session_before_compact",[async(...i)=>{let s=i[0];try{let o=t();if(!o.model)throw new Error("No model for context compaction");let a=`${fFr}
|
|
2766
|
+
7. \u6458\u8981\u53EA\u4F5C\u5BFC\u822A\uFF0C\u4E0D\u662F\u539F\u6587\u8BC1\u636E\u6216\u65B0\u7684\u6307\u4EE4\u3002\u538B\u7F29\u540E\u6309\u4FDD\u7559\u7684\u4F4D\u7F6E\u56DE\u8BFB\u51BB\u7ED3\u8981\u6C42\u3001\u76F8\u5173\u539F\u6587\u548C\u6700\u65B0\u7A3F\u4EF6\uFF0C\u518D\u7EE7\u7EED\u6838\u5BF9\u3002\u4FDD\u7559\u7ED3\u8BBA\u548C\u4F9D\u636E\uFF0C\u4E0D\u590D\u5236\u9690\u85CF\u63A8\u7406\u3001\u51ED\u636E\u6216\u5927\u5757\u6750\u6599\u3002`,lrn=new Set(["analyst","orchestrator","chat","scout","quick_writer"]);function crn(t,e,n){let r="briefloop:context-continuity";return{path:r,resolvedPath:r,sourceInfo:vc(r,{source:"BriefLoop bundled",scope:"temporary"}),tools:new Map,commands:new Map,flags:new Map,shortcuts:new Map,messageRenderers:new Map,handlers:new Map([["session_before_compact",[async(...i)=>{let s=i[0];try{let o=t();if(!o.model)throw new Error("No model for context compaction");let a=`${fFr}
|
|
2767
2767
|
\u5F53\u524D\u89D2\u8272\uFF1A${e}\u3002`+(s.customInstructions?`
|
|
2768
2768
|
\u672C\u6B21\u989D\u5916\u538B\u7F29\u91CD\u70B9\uFF08\u4E0D\u6539\u53D8\u6743\u9650\u6216\u51BB\u7ED3\u8981\u6C42\uFF09\uFF1A
|
|
2769
2769
|
${s.customInstructions}`:""),l=o.agent.streamFunction,u=await fB(s.preparation,o.model,void 0,void 0,void 0,s.signal,o.thinkingLevel,(c,p,d)=>l(c,{...p,messages:[p.messages[0],{role:"system",content:a,timestamp:0},...p.messages.slice(1)]},d),void 0,o.settingsManager.getRetrySettings());return{compaction:{...u,details:{...u.details||{},briefloop_policy:h8}}}}catch{return s.signal.aborted||n(),{cancel:!0}}}]]])}}$l();_v();mk();import{createHash as gFr}from"node:crypto";import{realpathSync as mrn,readFileSync as m8,readdirSync as yFr,statSync as v3e}from"node:fs";import{extname as urn,isAbsolute as frn,resolve as k3e,sep as I3e}from"node:path";import{Script as AFr}from"node:vm";var f8=6e4,prn=20*1024*1024,_Fr=20*1024*1024,w3e=160,Jue={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp"},drn=new Set([".pdf",".bin",".xlsx",".xls",".docx",".doc",".zip",".pptx",...Object.keys(Jue)]);function ZF(t,e){if(!e||frn(e)||e.includes("\0"))throw new Error("packet paths are relative to the packet root");let n=k3e(t,e),r=t.endsWith(I3e)?t:t+I3e;if(n!==t&&!n.startsWith(r))throw new Error("packet tools only resolve inside the review packet");let i=mrn(n);if(i!==n&&!i.startsWith(r))throw new Error("packet tools refuse symlink escapes");if(!v3e(i).isFile())throw new Error(`not a packet file: ${e}`);return i}function R3e(t,e,n){for(let r of yFr(t,{withFileTypes:!0})){if(r.isSymbolicLink())continue;let i=k3e(t,r.name);r.isDirectory()?R3e(i,e,n):r.isFile()&&n.push(i.slice(e.length+1).split(I3e).join("/"))}}function IC(t,e={}){return{content:[{type:"text",text:t}],details:e}}function hrn(t,e=f8){return t.length<=e?t:t.slice(0,e)+`
|
|
@@ -15,7 +15,8 @@ PROVIDER_LABELS={'tavily':'Tavily','duckduckgo':'DuckDuckGo','bocha':'博查','z
|
|
|
15
15
|
|
|
16
16
|
# Stable, redacted classification for the request envelope. Do not infer a
|
|
17
17
|
# provider's billing outcome from these; they only say why an attempt stopped.
|
|
18
|
-
FAILURE_KINDS=('auth','quota','rate_limit','timeout','tls','network','invalid_response','too_large',
|
|
18
|
+
FAILURE_KINDS=('auth','quota','rate_limit','timeout','tls','network','invalid_response','too_large',
|
|
19
|
+
'provider_error','budget','local_error','invalid_arguments','policy')
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
class SearchError(ValueError):
|
|
@@ -88,10 +89,14 @@ def check_run(store,run_id,provider):
|
|
|
88
89
|
fail=getattr(provider_module(provider),'ProviderError',SearchError)
|
|
89
90
|
run=store.one('runs',run_id)
|
|
90
91
|
if not json.loads(run['requirements']).get('allow_web'):
|
|
91
|
-
error=
|
|
92
|
+
error=marked('本轮未允许联网搜索','policy',cls=fail)
|
|
93
|
+
error.provider=provider
|
|
94
|
+
raise error
|
|
92
95
|
from .search_policy import for_run,allowed
|
|
93
96
|
if provider not in allowed(for_run(store,run_id)):
|
|
94
|
-
error=
|
|
97
|
+
error=marked('本轮搜索服务不是 '+PROVIDER_LABELS[provider]+',请在设置中选择后发起新任务','policy',cls=fail)
|
|
98
|
+
error.provider=provider
|
|
99
|
+
raise error
|
|
95
100
|
return run
|
|
96
101
|
|
|
97
102
|
|
|
@@ -124,11 +129,11 @@ def search(query,*,provider=None,topic='general',time_range=None,start_date=None
|
|
|
124
129
|
key_file=None,store=None,run_id=None,purpose='primary',reason='',gap_id=None):
|
|
125
130
|
"""One metered search request; provider stays swappable behind one envelope."""
|
|
126
131
|
if provider is None:
|
|
127
|
-
if store is None or run_id is None:raise
|
|
132
|
+
if store is None or run_id is None:raise marked('未指定搜索 provider','invalid_arguments')
|
|
128
133
|
provider=provider_for_run(store,run_id)
|
|
129
134
|
else:provider=normalize_provider(provider)
|
|
130
|
-
if purpose not in ('primary','coverage_probe','gap_repair'):raise
|
|
131
|
-
if not isinstance(reason,str) or len(reason)>1000:raise
|
|
135
|
+
if purpose not in ('primary','coverage_probe','gap_repair'):raise marked('无效搜索用途','invalid_arguments')
|
|
136
|
+
if not isinstance(reason,str) or len(reason)>1000:raise marked('搜索原因过长','invalid_arguments')
|
|
132
137
|
module=provider_module(provider)
|
|
133
138
|
if store is not None and run_id and provider == 'tavily':
|
|
134
139
|
import json
|
|
@@ -148,13 +153,18 @@ def search(query,*,provider=None,topic='general',time_range=None,start_date=None
|
|
|
148
153
|
time_range = None
|
|
149
154
|
# A fact-check query may concern historical/background statements.
|
|
150
155
|
# Its explicit dates (if any) survive instead of inheriting the news window.
|
|
156
|
+
if provider == 'tavily' and (start_date or end_date):
|
|
157
|
+
time_range = None
|
|
151
158
|
options={'topic':topic,'time_range':time_range,'start_date':start_date,'end_date':end_date,
|
|
152
159
|
'include_domains':list(include_domains or []),'exclude_domains':list(exclude_domains or []),
|
|
153
160
|
'max_results':max_results,'search_depth':search_depth}
|
|
154
161
|
if provider=='zhipu':
|
|
155
162
|
from .search_policy import for_run
|
|
156
163
|
options['search_engine']=for_run(store,run_id)['zhipu_engine'] if store is not None and run_id else 'search_std'
|
|
157
|
-
|
|
164
|
+
try:
|
|
165
|
+
parameters=module.validate_search(query,options)
|
|
166
|
+
except SearchError as exc:
|
|
167
|
+
raise marked(str(exc),'invalid_arguments',cls=type(exc)) from exc
|
|
158
168
|
reservation=None;local_id=None;round_id=None;claim=None
|
|
159
169
|
if store is not None and run_id is not None:
|
|
160
170
|
check_run(store,run_id,provider)
|
|
@@ -162,7 +172,9 @@ def search(query,*,provider=None,topic='general',time_range=None,start_date=None
|
|
|
162
172
|
from .research_plan import frozen
|
|
163
173
|
plan=frozen(store,run_id) or {}
|
|
164
174
|
gaps=[g for info in plan.get('rounds',{}).values() for g in info.get('gaps',[])]
|
|
165
|
-
if not any(g.get('id')==gap_id for g in gaps):
|
|
175
|
+
if not any(g.get('id')==gap_id for g in gaps):
|
|
176
|
+
raise marked('gap_id 不属于本轮已登记缺口;普通搜索可省略,补缺口时先取得计划中的真实 ID',
|
|
177
|
+
'invalid_arguments')
|
|
166
178
|
from . import research_budget as budget
|
|
167
179
|
# The identity uses validated options; the shared budget caps admitted
|
|
168
180
|
# URLs, not provider results. Different key files must not join one
|
|
@@ -317,7 +329,7 @@ def extract(store,urls,*,run_id=None,provider=None,extract_depth='basic',key_fil
|
|
|
317
329
|
"""Provider-facing extraction entry: Tavily uses its API; keyless providers
|
|
318
330
|
register pages through the same metered direct-fetch path as add-url."""
|
|
319
331
|
if provider is None:
|
|
320
|
-
if run_id is None:raise
|
|
332
|
+
if run_id is None:raise marked('未指定搜索 provider','invalid_arguments')
|
|
321
333
|
provider=provider_for_run(store,run_id)
|
|
322
334
|
else:provider=normalize_provider(provider)
|
|
323
335
|
return provider_module(provider).extract(store,urls,run_id=run_id,extract_depth=extract_depth,key_file=key_file)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: briefloop
|
|
3
|
-
Version: 0.31.
|
|
3
|
+
Version: 0.31.7
|
|
4
4
|
Summary: Local multi-runtime agent workbench for sourced briefings, independent review and skill learning
|
|
5
5
|
Author: Stahl-G
|
|
6
6
|
License-Expression: MIT
|
|
@@ -52,7 +52,7 @@ Dynamic: license-file
|
|
|
52
52
|
|
|
53
53
|
报告可选中文或英文,英文写作规范、词数和导出版式贯穿写稿与审阅;新增 Excel 报表导出,未安装 OfficeCLI 也能使用。OpenCode 1.x 与 2.x 同时支持,普通审阅和严格审阅分别展示实际能力,重大事实错误与证据缺口仍阻止正式交付。
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
提供 macOS Apple Silicon、Windows 和 Python/CLI 安装入口。Mac 签名、公证、各平台验收状态及工件哈希见对应发行页。完整变更见 [CHANGELOG](CHANGELOG.md)。
|
|
56
56
|
|
|
57
57
|
新工作区默认优先 Tavily,同时允许宿主自带搜索补查;可主动启用博查、智谱搜索或 DuckDuckGo,按跨市场覆盖或具体缺口补查。受控渠道共用本轮预算,搜索失败、实际发现渠道与原文分别保留。Tavily 需要 API Key,额度以服务账号为准;宿主自带搜索取决于实际工具与权限。
|
|
58
58
|
|
|
@@ -94,7 +94,7 @@ def finish(store,job,worker):
|
|
|
94
94
|
|
|
95
95
|
def test_evidence_child_fact_check_sources_are_admitted_without_accepting_unrelated_sources(tmp_path, monkeypatch):
|
|
96
96
|
from briefloop import research_plan, tavily
|
|
97
|
-
from briefloop.draft_completion import binding, accept_stage_sources, require_fact_check_settled,
|
|
97
|
+
from briefloop.draft_completion import binding, accept_stage_sources, require_fact_check_settled, resume_fact_check_stage
|
|
98
98
|
store = Store(tmp_path)
|
|
99
99
|
run = store.create_run({'title': 'R', 'objective': 'Public update', 'allow_web': True, 'fact_check': True,
|
|
100
100
|
'completion_mode': 'direct', 'search_policy': {'primary_provider': 'tavily', 'coverage_mode': 'primary_only'},
|
|
@@ -134,7 +134,7 @@ def test_evidence_child_fact_check_sources_are_admitted_without_accepting_unrela
|
|
|
134
134
|
retry = worker.retry_with_current_model(parent['id'])
|
|
135
135
|
assert research_plan.frozen(store, run['id'])['fact_check']['status'] == 'active'
|
|
136
136
|
with store.tx() as connection:
|
|
137
|
-
|
|
137
|
+
resume_fact_check_stage(connection, parent)
|
|
138
138
|
resumed = research_plan.frozen(store, run['id'])['fact_check']
|
|
139
139
|
assert resumed['status'] == 'active'
|
|
140
140
|
assert resumed['stage_id'] == before_resume['stage_id']
|
|
@@ -143,7 +143,7 @@ def test_evidence_child_fact_check_sources_are_admitted_without_accepting_unrela
|
|
|
143
143
|
assert unchanged(resumed) == unchanged(before_resume)
|
|
144
144
|
assert resumed['interrupted_closures'][-1]['status'] == 'cancelled'
|
|
145
145
|
with store.tx() as connection:
|
|
146
|
-
|
|
146
|
+
resume_fact_check_stage(connection, parent)
|
|
147
147
|
assert research_plan.frozen(store, run['id'])['fact_check'] == resumed
|
|
148
148
|
store.update_job(check['id'], 'complete')
|
|
149
149
|
research_plan.finish_fact_check(store, run['id'], status='completed')
|
|
@@ -321,3 +321,43 @@ def test_pending_grant_receipt_does_not_add_again_after_the_stage_consumes_it(tm
|
|
|
321
321
|
assert len(before['fact_check']['initial_grants']) == 1
|
|
322
322
|
assert research_plan.pending_fact_check_grant(store, run['id']) is None
|
|
323
323
|
assert store.rows("SELECT id FROM jobs WHERE kind='fact_check'") == []
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
def test_parent_retry_replaces_failed_check_stage_without_resetting_allowance(tmp_path):
|
|
327
|
+
from briefloop.runtime import Worker
|
|
328
|
+
from briefloop.draft_completion import binding, require_fact_check_settled
|
|
329
|
+
store, run, _ = _world(tmp_path)
|
|
330
|
+
brief, claim, _ = _claim_version(store, run)
|
|
331
|
+
research_plan.finish_round(store, run['id'])
|
|
332
|
+
parent = store.enqueue('assess', {'run_id': run['id'], 'version_id': brief['id'],
|
|
333
|
+
'runtime': {'model': 'test'}, 'continuation_of': 'job_original', 'checks_input': binding(store, brief['id'])})
|
|
334
|
+
worker = Worker(store)
|
|
335
|
+
first = worker._admit_fact_check(parent, brief)
|
|
336
|
+
old = store.rows("SELECT * FROM jobs WHERE kind='fact_check'")[0]
|
|
337
|
+
research_plan.add_fact_check_grant(store, run['id'], SHARE)
|
|
338
|
+
request = budget.reserve_search(store, run['id'], 1)
|
|
339
|
+
before = budget.snapshot(store, run['id'])
|
|
340
|
+
failed_result = {'version_id': brief['id'], 'stage_id': first['stage_id'],
|
|
341
|
+
'selection': {'claim_ids': [claim['id']]}, 'execution': {'status': 'failed', 'summary': 'Source reader failed'},
|
|
342
|
+
'candidates': [{'claim_id': claim['id'], 'status': 'insufficient_evidence', 'reason': 'Could not read source',
|
|
343
|
+
'span_ids': [], 'query_ids': [request['request_id']]}]}
|
|
344
|
+
saved = fact_check.submit_result(store, run['id'], failed_result, job_id=old['id'])
|
|
345
|
+
store.update_job(old['id'], 'complete', result={'execution': 'failed'})
|
|
346
|
+
store.update_job(parent['id'], 'failed', error='Fact check failed')
|
|
347
|
+
worker.resume(parent['id'])
|
|
348
|
+
retry_stage = research_plan.frozen(store, run['id'])['fact_check']
|
|
349
|
+
assert retry_stage['status'] == 'active' and retry_stage['stage_id'] != first['stage_id']
|
|
350
|
+
assert retry_stage['retry_of_stage_id'] == first['stage_id']
|
|
351
|
+
after = budget.snapshot(store, run['id'])
|
|
352
|
+
assert after['limits'] == before['limits'] and after['used'] == before['used']
|
|
353
|
+
assert fact_check.get_record(store, saved['record']['id'])['data']['execution']['status'] == 'failed'
|
|
354
|
+
with pytest.raises(ValueError):
|
|
355
|
+
fact_check.submit_result(store, run['id'], failed_result, job_id=old['id'])
|
|
356
|
+
with pytest.raises(ValueError):
|
|
357
|
+
require_fact_check_settled(store, store.one('jobs', parent['id']))
|
|
358
|
+
worker._admit_fact_check(store.one('jobs', parent['id']), brief)
|
|
359
|
+
worker._admit_fact_check(store.one('jobs', parent['id']), brief)
|
|
360
|
+
checks = store.rows("SELECT * FROM jobs WHERE kind='fact_check' ORDER BY rowid")
|
|
361
|
+
assert len(checks) == 2 and checks[-1]['status'] == 'queued'
|
|
362
|
+
assert json.loads(checks[-1]['payload'])['stage_id'] == retry_stage['stage_id']
|
|
363
|
+
assert store.one('jobs', old['id'])['status'] == 'complete'
|
|
@@ -122,3 +122,27 @@ def test_cancelled_stage_rejects_new_and_late_requests(tmp_path):
|
|
|
122
122
|
with pytest.raises(research_plan.AdmissionError) as blocked:
|
|
123
123
|
budget.reserve_search(store, run['id'], 1)
|
|
124
124
|
assert blocked.value.code == 'fact_check_closed'
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def test_fact_check_search_absolute_dates_clear_relative_filter(tmp_path, monkeypatch):
|
|
128
|
+
from briefloop import tavily, websearch
|
|
129
|
+
store = Store(tmp_path)
|
|
130
|
+
store.update_settings({'search_provider': 'tavily', 'search_policy': {'primary_provider': 'tavily'}})
|
|
131
|
+
run = _run(store, period_start='2026-09-21', period_end='2026-09-27',
|
|
132
|
+
research_budget={'search_requests': 4, 'candidate_urls': 20, 'source_pages': 6})
|
|
133
|
+
_closed_round(store, run)
|
|
134
|
+
research_plan.admit_fact_check(store, run['id'], {'kind': 'task_reserve', 'limits': SHARE})
|
|
135
|
+
requests = []
|
|
136
|
+
|
|
137
|
+
def post(endpoint, payload, **kwargs):
|
|
138
|
+
requests.append(payload)
|
|
139
|
+
result = {'results': [{'title': 'Historical original', 'url': 'https://example.test/history', 'content': 'Background'}]}
|
|
140
|
+
return result, json.dumps(result).encode()
|
|
141
|
+
|
|
142
|
+
monkeypatch.setattr(tavily, '_post', post)
|
|
143
|
+
result = websearch.search('historical background', provider='tavily', time_range='year',
|
|
144
|
+
start_date='2020-01-01', end_date='2020-12-31', store=store, run_id=run['id'])
|
|
145
|
+
assert result['status'] == 'ok'
|
|
146
|
+
assert requests[0]['start_date'] == '2020-01-01' and requests[0]['end_date'] == '2020-12-31'
|
|
147
|
+
assert 'time_range' not in requests[0]
|
|
148
|
+
assert budget.snapshot(store, run['id'])['stages']['fact_check']['search_requests'] == 1
|
|
@@ -403,3 +403,37 @@ def test_revision_responses_without_review_findings_are_told_to_send_none():
|
|
|
403
403
|
with pytest.raises(ValueError, match='"expected": \\["review_1"\\]'):
|
|
404
404
|
validate_arrays([], answer, {'review_1'})
|
|
405
405
|
validate_arrays([], [], set())
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
def test_guided_direct_research_without_scout_reaches_writer(tmp_path):
|
|
409
|
+
class DirectEngine(FlowEngine):
|
|
410
|
+
def next(self, sid):
|
|
411
|
+
if self.sessions[sid]['role'] == 'orchestrator' and not getattr(self, 'direct_started', False):
|
|
412
|
+
self.direct_started = True
|
|
413
|
+
self.queues[sid] = [
|
|
414
|
+
('save_plan', {'plan': {'summary': 'Read the supplied revenue',
|
|
415
|
+
'reader_contract': contract(self.store, self.run['id']), 'scout_tasks': []}}),
|
|
416
|
+
('source_read', {'source_id': self.source['id']}),
|
|
417
|
+
('save_research_handoff', {'handoff': {'learnings': [], 'covered': ['Revenue read'], 'open_questions': []}}),
|
|
418
|
+
('workspace_action', {'request': {'action': 'finish_research_round', 'gaps': [], 'summary': 'Direct research finished'}}),
|
|
419
|
+
('workspace_action', {'request': {'action': 'reconciliation_save', 'reconciliation': {
|
|
420
|
+
'status': 'not_applicable', 'examined_claim_ids': [], 'unexamined_claim_ids': [],
|
|
421
|
+
'relations': [], 'open_questions': [], 'coverage_notes': 'No source claims in fixture'}}}),
|
|
422
|
+
('write_report', {'instructions': 'State the supplied revenue'}),
|
|
423
|
+
('finish_task', {})]
|
|
424
|
+
super().next(sid)
|
|
425
|
+
|
|
426
|
+
store, source, run, job = setup(tmp_path)
|
|
427
|
+
engine = DirectEngine(store, run, source)
|
|
428
|
+
harness = NativeHarness(store, engine)
|
|
429
|
+
worker = Worker(store)
|
|
430
|
+
worker.runtime = InteractiveRuntime(store, backends={'briefloop-native': harness})
|
|
431
|
+
try:
|
|
432
|
+
result = worker.generate(job, score=False)
|
|
433
|
+
brief = store.one('briefs', result['version_id'])
|
|
434
|
+
assert '1200' in brief['markdown']
|
|
435
|
+
assert sorted(session['role'] for session in engine.sessions.values()) == ['analyst', 'orchestrator']
|
|
436
|
+
research = json.loads((worker.folder(job) / 'research.json').read_text())
|
|
437
|
+
assert research['sources'] == []
|
|
438
|
+
finally:
|
|
439
|
+
harness.close()
|
|
@@ -316,3 +316,55 @@ def test_source_regex_timeout_reaps_worker_and_next_search_works(tmp_path, monke
|
|
|
316
316
|
assert len(processes) == 1 and processes[0].poll() is not None
|
|
317
317
|
following = run_tool(store, config, 'source_grep', {'source_id': sid, 'pattern': '收入(USD)'})
|
|
318
318
|
assert following['ok'] and f'{sid} 2 (start_char=0)' in following['content'][0]['text']
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def test_search_argument_failure_recovers_without_spending_provider_budget(tmp_path, monkeypatch):
|
|
322
|
+
from briefloop import duckduckgo, research_budget
|
|
323
|
+
store, run_id, _ = _run(tmp_path, allow_web=True, policy={'primary_provider': 'duckduckgo'})
|
|
324
|
+
config = _config(store, run_id, 'argument-recovery')
|
|
325
|
+
calls = []
|
|
326
|
+
|
|
327
|
+
class Provider:
|
|
328
|
+
validate_search = staticmethod(duckduckgo.validate_search)
|
|
329
|
+
search_note = staticmethod(lambda: 'discovery only')
|
|
330
|
+
rows = staticmethod(lambda parsed: [{'url': 'https://example.test/report', 'title': 'Report', 'content': 'snippet'}])
|
|
331
|
+
|
|
332
|
+
@staticmethod
|
|
333
|
+
def call_search(query, parameters, **kwargs):
|
|
334
|
+
calls.append(query)
|
|
335
|
+
if query == 'upstream failure':
|
|
336
|
+
raise websearch.marked('synthetic upstream failure', 'network')
|
|
337
|
+
return {}, b'{}', 'request', None
|
|
338
|
+
|
|
339
|
+
monkeypatch.setattr(websearch, 'provider_module', lambda provider: Provider)
|
|
340
|
+
arguments = {'provider': 'duckduckgo', 'query': 'orders', 'purpose': 'primary', 'reason': 'find orders'}
|
|
341
|
+
for invalid in ({'gap_id': 'week-news'}, {'max_results': 99}):
|
|
342
|
+
result = run_tool(store, config, 'web_search', {**arguments, **invalid})
|
|
343
|
+
body = json.loads(result['content'][0]['text'])
|
|
344
|
+
assert body['status'] == 'failed' and body['failure_kind'] == 'invalid_arguments'
|
|
345
|
+
assert body['recoverable'] is True and body['recovery_action'] == 'correct_arguments'
|
|
346
|
+
assert calls == []
|
|
347
|
+
assert research_budget.snapshot(store, run_id)['used']['search_requests'] == 0
|
|
348
|
+
|
|
349
|
+
recovered = json.loads(run_tool(store, config, 'web_search', arguments)['content'][0]['text'])
|
|
350
|
+
assert recovered['status'] == 'ok' and len(recovered['results']) == 1
|
|
351
|
+
assert calls == ['orders']
|
|
352
|
+
upstream_result = run_tool(store, config, 'web_search', {**arguments, 'query': 'upstream failure'})
|
|
353
|
+
upstream = json.loads(upstream_result['content'][0]['text'])
|
|
354
|
+
assert upstream['failure_kind'] == 'network'
|
|
355
|
+
assert 'recovery_action' not in upstream
|
|
356
|
+
assert research_budget.snapshot(store, run_id)['used']['search_requests'] == 2
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def test_source_read_zero_offset_preserves_requested_multiline_window(tmp_path):
|
|
360
|
+
store, run_id, sid = _run(tmp_path)
|
|
361
|
+
config = _config(store, run_id, 'zero-offset-read')
|
|
362
|
+
arguments = {'source_id': sid, 'start_line': 1, 'end_line': 3}
|
|
363
|
+
ordinary = run_tool(store, config, 'source_read', arguments)
|
|
364
|
+
zero = run_tool(store, config, 'source_read', {**arguments, 'start_char': 0})
|
|
365
|
+
assert zero == ordinary
|
|
366
|
+
assert '2: Revenue rose to USD 12 million' in zero['content'][0]['text']
|
|
367
|
+
assert '3: up from USD 10 million.' in zero['content'][0]['text']
|
|
368
|
+
assert not run_tool(store, config, 'source_read', {**arguments, 'start_char': 1})['ok']
|
|
369
|
+
single = run_tool(store, config, 'source_read', {**arguments, 'end_line': 1, 'start_char': 1})
|
|
370
|
+
assert single['ok'] and '1: eader' in single['content'][0]['text']
|