briefloop 0.31.0__tar.gz → 0.31.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1055) hide show
  1. {briefloop-0.31.0 → briefloop-0.31.3}/CHANGELOG.md +57 -0
  2. {briefloop-0.31.0 → briefloop-0.31.3}/PKG-INFO +5 -3
  3. {briefloop-0.31.0 → briefloop-0.31.3}/README.md +4 -2
  4. briefloop-0.31.3/VERSION +1 -0
  5. {briefloop-0.31.0 → briefloop-0.31.3}/desktop/electron/package-lock.json +2 -2
  6. {briefloop-0.31.0 → briefloop-0.31.3}/desktop/electron/package.json +1 -1
  7. {briefloop-0.31.0 → briefloop-0.31.3}/docs/direct-mode.md +16 -4
  8. briefloop-0.31.3/docs/release-0.31.1.md +25 -0
  9. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/app.js +5 -1
  10. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/composer-options.js +5 -5
  11. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/next-report.js +1 -1
  12. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/quick-report.js +4 -1
  13. briefloop-0.31.3/frontend/report-sticky-layout.js +33 -0
  14. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/schedules.js +3 -2
  15. {briefloop-0.31.0 → briefloop-0.31.3}/pyproject.toml +1 -1
  16. {briefloop-0.31.0 → briefloop-0.31.3}/scripts/check_versions.py +11 -1
  17. briefloop-0.31.3/src/briefloop/__init__.py +1 -0
  18. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/analyst.py +3 -3
  19. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/chat_tools.py +6 -2
  20. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/MATERIALS.md +24 -10
  21. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/runtime_tools.py +13 -6
  22. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/tasks.py +51 -1
  23. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/direct_reports.py +29 -17
  24. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/document_model.py +23 -1
  25. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/draft_checks.py +11 -5
  26. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/fast_reports.py +31 -9
  27. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/learning.py +20 -1
  28. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/models.py +19 -1
  29. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/native_orchestrator.py +3 -1
  30. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/core.zh.md +2 -2
  31. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.analyst.zh.md +1 -1
  32. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.direct_writer.zh.md +2 -1
  33. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.evaluator.zh.md +1 -1
  34. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/report_time.py +45 -0
  35. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/runtime.py +14 -7
  36. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/schedules.py +18 -2
  37. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/server.py +3 -2
  38. briefloop-0.31.3/src/briefloop/skill_delivery.py +84 -0
  39. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/app.js +72 -72
  40. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/index.html +3 -3
  41. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/native-engine-image-worker.mjs +2 -2
  42. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/native-engine-licenses.txt +7 -7
  43. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/native-engine.mjs +1215 -1096
  44. briefloop-0.31.3/src/briefloop/static/release-notes.json +4 -0
  45. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/style.css +9 -1
  46. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/store.py +4 -1
  47. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/writing_guidance.py +11 -2
  48. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop.egg-info/PKG-INFO +5 -3
  49. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop.egg-info/SOURCES.txt +3 -0
  50. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_next_report.mjs +1 -1
  51. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_quick_report.mjs +1 -0
  52. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_cli_goal_handoff.py +1 -1
  53. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_connector_materials.py +164 -0
  54. briefloop-0.31.3/tests/test_direct_reports.py +205 -0
  55. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_draft_republish.py +1 -1
  56. briefloop-0.31.3/tests/test_fact_check_switch.py +79 -0
  57. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_length_policy.py +6 -0
  58. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_monthly_research.py +3 -3
  59. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_goal_research.py +1 -1
  60. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_orchestrator.py +1 -1
  61. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_research_goals.py +1 -1
  62. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_rich_document.py +7 -1
  63. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_schedules.py +7 -1
  64. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_scout_coverage.py +3 -3
  65. briefloop-0.31.0/VERSION +0 -1
  66. briefloop-0.31.0/src/briefloop/__init__.py +0 -1
  67. briefloop-0.31.0/src/briefloop/static/release-notes.json +0 -4
  68. briefloop-0.31.0/tests/test_direct_reports.py +0 -105
  69. briefloop-0.31.0/tests/test_fact_check_switch.py +0 -41
  70. {briefloop-0.31.0 → briefloop-0.31.3}/.gitattributes +0 -0
  71. {briefloop-0.31.0 → briefloop-0.31.3}/CONTRIBUTING.md +0 -0
  72. {briefloop-0.31.0 → briefloop-0.31.3}/KNOWN_ISSUES.md +0 -0
  73. {briefloop-0.31.0 → briefloop-0.31.3}/LICENSE +0 -0
  74. {briefloop-0.31.0 → briefloop-0.31.3}/MANIFEST.in +0 -0
  75. {briefloop-0.31.0 → briefloop-0.31.3}/SECURITY.md +0 -0
  76. {briefloop-0.31.0 → briefloop-0.31.3}/THIRD_PARTY_NOTICES.md +0 -0
  77. {briefloop-0.31.0 → briefloop-0.31.3}/bootstrap.py +0 -0
  78. {briefloop-0.31.0 → briefloop-0.31.3}/docs/OpenCode/347/211/210/346/234/254/345/205/274/345/256/271.md" +0 -0
  79. {briefloop-0.31.0 → briefloop-0.31.3}/docs/WorkBuddy/345/244/226/351/203/250/345/205/245/345/217/243.md" +0 -0
  80. {briefloop-0.31.0 → briefloop-0.31.3}/docs/architecture.md +0 -0
  81. {briefloop-0.31.0 → briefloop-0.31.3}/docs/article-materials.md +0 -0
  82. {briefloop-0.31.0 → briefloop-0.31.3}/docs/codex-history-isolation.md +0 -0
  83. {briefloop-0.31.0 → briefloop-0.31.3}/docs/compose/spec/home-v2.md +0 -0
  84. {briefloop-0.31.0 → briefloop-0.31.3}/docs/design-v3.1-validation.md +0 -0
  85. {briefloop-0.31.0 → briefloop-0.31.3}/docs/dmg-density-validation.md +0 -0
  86. {briefloop-0.31.0 → briefloop-0.31.3}/docs/draft-first.md +0 -0
  87. {briefloop-0.31.0 → briefloop-0.31.3}/docs/jev-precheck.md +0 -0
  88. {briefloop-0.31.0 → briefloop-0.31.3}/docs/native-integration.md +0 -0
  89. {briefloop-0.31.0 → briefloop-0.31.3}/docs/quality-reading-context.md +0 -0
  90. {briefloop-0.31.0 → briefloop-0.31.3}/docs/quarterly-report.md +0 -0
  91. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.26.0.md +0 -0
  92. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.26.1.md +0 -0
  93. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.26.2.md +0 -0
  94. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.26.3.md +0 -0
  95. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.26.4.md +0 -0
  96. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.27.0.md +0 -0
  97. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.28.0.md +0 -0
  98. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.28.1.md +0 -0
  99. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.28.2.md +0 -0
  100. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.28.3.md +0 -0
  101. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.28.4.md +0 -0
  102. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.29.0.md +0 -0
  103. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.29.1.md +0 -0
  104. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.30.0.md +0 -0
  105. {briefloop-0.31.0 → briefloop-0.31.3}/docs/release-0.31.0.md +0 -0
  106. {briefloop-0.31.0 → briefloop-0.31.3}/docs/report-length.md +0 -0
  107. {briefloop-0.31.0 → briefloop-0.31.3}/docs/report-time-window.md +0 -0
  108. {briefloop-0.31.0 → briefloop-0.31.3}/docs/report-version-information.md +0 -0
  109. {briefloop-0.31.0 → briefloop-0.31.3}/docs/research-context.md +0 -0
  110. {briefloop-0.31.0 → briefloop-0.31.3}/docs/research-handoff.md +0 -0
  111. {briefloop-0.31.0 → briefloop-0.31.3}/docs/revision-learning.md +0 -0
  112. {briefloop-0.31.0 → briefloop-0.31.3}/docs/source-library.md +0 -0
  113. {briefloop-0.31.0 → briefloop-0.31.3}/docs/sqlite-benchmark.md +0 -0
  114. {briefloop-0.31.0 → briefloop-0.31.3}/docs/technical-report-0.21.0/evidence-index.md +0 -0
  115. {briefloop-0.31.0 → briefloop-0.31.3}/docs/technical-report-0.21.0/technical-report.md +0 -0
  116. {briefloop-0.31.0 → briefloop-0.31.3}/docs/windows.md +0 -0
  117. {briefloop-0.31.0 → briefloop-0.31.3}/docs/writer-input.md +0 -0
  118. {briefloop-0.31.0 → briefloop-0.31.3}/docs/writing-agreements.md +0 -0
  119. {briefloop-0.31.0 → briefloop-0.31.3}/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
  120. {briefloop-0.31.0 → briefloop-0.31.3}/docs//344/274/232/350/256/256/347/272/252/350/246/201.md" +0 -0
  121. {briefloop-0.31.0 → briefloop-0.31.3}/docs//344/275/277/347/224/250/346/214/207/345/215/227.md" +0 -0
  122. {briefloop-0.31.0 → briefloop-0.31.3}/docs//345/206/205/347/275/256/345/274/225/346/223/216.md" +0 -0
  123. {briefloop-0.31.0 → briefloop-0.31.3}/docs//345/215/207/347/272/247/350/257/264/346/230/216.md" +0 -0
  124. {briefloop-0.31.0 → briefloop-0.31.3}/docs//345/233/276/350/241/250/344/270/216Excel.md" +0 -0
  125. {briefloop-0.31.0 → briefloop-0.31.3}/docs//345/244/232Runtime/344/270/216/346/250/241/345/236/213.md" +0 -0
  126. {briefloop-0.31.0 → briefloop-0.31.3}/docs//345/244/232/346/250/241/346/200/201/346/235/245/346/272/220.md" +0 -0
  127. {briefloop-0.31.0 → briefloop-0.31.3}/docs//345/256/232/346/227/266/346/212/245/345/221/212.md" +0 -0
  128. {briefloop-0.31.0 → briefloop-0.31.3}/docs//345/257/271/350/257/235/345/256/277/344/270/273/345/210/207/346/215/242.md" +0 -0
  129. {briefloop-0.31.0 → briefloop-0.31.3}/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
  130. {briefloop-0.31.0 → briefloop-0.31.3}/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
  131. {briefloop-0.31.0 → briefloop-0.31.3}/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
  132. {briefloop-0.31.0 → briefloop-0.31.3}/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
  133. {briefloop-0.31.0 → briefloop-0.31.3}/docs//347/233/256/346/240/207/351/251/261/345/212/250/347/240/224/347/251/266.md" +0 -0
  134. {briefloop-0.31.0 → briefloop-0.31.3}/docs//350/241/214/344/270/232/346/212/245/345/221/212.md" +0 -0
  135. {briefloop-0.31.0 → briefloop-0.31.3}/docs//350/257/201/345/210/270/347/240/224/347/251/266.md" +0 -0
  136. {briefloop-0.31.0 → briefloop-0.31.3}/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
  137. {briefloop-0.31.0 → briefloop-0.31.3}/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
  138. {briefloop-0.31.0 → briefloop-0.31.3}/docs//351/252/214/346/224/266/350/256/260/345/275/225.md" +0 -0
  139. {briefloop-0.31.0 → briefloop-0.31.3}/examples/internal-weekly-report/README.md +0 -0
  140. {briefloop-0.31.0 → briefloop-0.31.3}/examples/internal-weekly-report/report.md +0 -0
  141. {briefloop-0.31.0 → briefloop-0.31.3}/examples/internal-weekly-report/source.txt +0 -0
  142. {briefloop-0.31.0 → briefloop-0.31.3}/examples/meeting-minutes/transcript.txt +0 -0
  143. {briefloop-0.31.0 → briefloop-0.31.3}/examples/stock-research/earnings-event.txt +0 -0
  144. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/anchored-popover.js +0 -0
  145. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/api.js +0 -0
  146. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/app-updates.js +0 -0
  147. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/article-media.js +0 -0
  148. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/assessment-checks.js +0 -0
  149. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/assessment-panel.js +0 -0
  150. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/citation-evidence.js +0 -0
  151. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/citation-sources.js +0 -0
  152. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/clipboard.js +0 -0
  153. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/compact-report-controls.js +0 -0
  154. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/connectors.js +0 -0
  155. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/delivery.js +0 -0
  156. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/dom.js +0 -0
  157. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/evidence-review-dialogs.js +0 -0
  158. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/excel-export.js +0 -0
  159. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/fact-check-availability.js +0 -0
  160. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/fact-check-grants.js +0 -0
  161. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/feedback-list.js +0 -0
  162. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/home.js +0 -0
  163. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/jev-checks.js +0 -0
  164. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/job-presentation.js +0 -0
  165. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/learning-retry.js +0 -0
  166. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/length-controls.js +0 -0
  167. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/market-convention.js +0 -0
  168. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/market-decorations.js +0 -0
  169. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/mcp-selection.js +0 -0
  170. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/model-catalog.js +0 -0
  171. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/native-requests.js +0 -0
  172. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/next-report-chat.js +0 -0
  173. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/notifications.js +0 -0
  174. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/office-tools.js +0 -0
  175. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/polling.js +0 -0
  176. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/previous-report.js +0 -0
  177. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/provider-capabilities.js +0 -0
  178. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/provider-settings.js +0 -0
  179. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/readers.js +0 -0
  180. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/reasoning-controls.js +0 -0
  181. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-browsing.js +0 -0
  182. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-export.js +0 -0
  183. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-feedback.js +0 -0
  184. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-form-defaults.js +0 -0
  185. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-language.js +0 -0
  186. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-panels.js +0 -0
  187. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-sources.js +0 -0
  188. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-start.js +0 -0
  189. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/report-version-info.js +0 -0
  190. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/research-budget.js +0 -0
  191. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/research-goal-progress.js +0 -0
  192. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/research-process.js +0 -0
  193. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/review-controls.js +0 -0
  194. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/review-coverage.js +0 -0
  195. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/review-results.js +0 -0
  196. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/review-status.js +0 -0
  197. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/revision-questions.js +0 -0
  198. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/rich-document.js +0 -0
  199. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/runtime-cards.js +0 -0
  200. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/runtime-model-picker.js +0 -0
  201. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/runtime-permission-modes.js +0 -0
  202. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/runtime-permission-panel.js +0 -0
  203. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/runtime-picker-bindings.js +0 -0
  204. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/search-settings.js +0 -0
  205. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/session-budget.js +0 -0
  206. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/skill-verification.js +0 -0
  207. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/source-library-controls.js +0 -0
  208. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/source-library-search.js +0 -0
  209. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/source-upload.js +0 -0
  210. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/source-viewer.js +0 -0
  211. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/sources-page.js +0 -0
  212. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/task-progress.js +0 -0
  213. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/template-output.js +0 -0
  214. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/templates.js +0 -0
  215. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/time.js +0 -0
  216. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/uploads.js +0 -0
  217. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/version-diff.js +0 -0
  218. {briefloop-0.31.0 → briefloop-0.31.3}/frontend/welcome.js +0 -0
  219. {briefloop-0.31.0 → briefloop-0.31.3}/package-lock.json +0 -0
  220. {briefloop-0.31.0 → briefloop-0.31.3}/package.json +0 -0
  221. {briefloop-0.31.0 → briefloop-0.31.3}/probes/mcp_m0/README.md +0 -0
  222. {briefloop-0.31.0 → briefloop-0.31.3}/probes/mcp_m0/probe.py +0 -0
  223. {briefloop-0.31.0 → briefloop-0.31.3}/probes/mcp_m0/requirements.txt +0 -0
  224. {briefloop-0.31.0 → briefloop-0.31.3}/probes/mcp_m0/server.py +0 -0
  225. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/README.md +0 -0
  226. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/bridge.test.mjs +0 -0
  227. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/build.mjs +0 -0
  228. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/catalog.json +0 -0
  229. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/claude.ts +0 -0
  230. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/main.ts +0 -0
  231. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/permission-catalog.ts +0 -0
  232. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/pi.ts +0 -0
  233. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/reasoning.ts +0 -0
  234. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/user-input.ts +0 -0
  235. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/windows-command.ts +0 -0
  236. {briefloop-0.31.0 → briefloop-0.31.3}/runtime-bridge/zcode.ts +0 -0
  237. {briefloop-0.31.0 → briefloop-0.31.3}/scripts/build_frontend.mjs +0 -0
  238. {briefloop-0.31.0 → briefloop-0.31.3}/scripts/build_frontend_licenses.mjs +0 -0
  239. {briefloop-0.31.0 → briefloop-0.31.3}/scripts/sync_versions.py +0 -0
  240. {briefloop-0.31.0 → briefloop-0.31.3}/scripts/test_frontend.mjs +0 -0
  241. {briefloop-0.31.0 → briefloop-0.31.3}/setup.cfg +0 -0
  242. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/__main__.py +0 -0
  243. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/_entrypoint.py +0 -0
  244. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/agent_commands.py +0 -0
  245. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/agent_prompts.py +0 -0
  246. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/analyst_drafts.py +0 -0
  247. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/app_server.py +0 -0
  248. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/article_materials.py +0 -0
  249. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/audit_bundle.py +0 -0
  250. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/backends/__init__.py +0 -0
  251. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/backends/opencode_server.py +0 -0
  252. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/backends/opencode_v2.py +0 -0
  253. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/bocha.py +0 -0
  254. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/bridge_harness.py +0 -0
  255. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/chat_dispatch.py +0 -0
  256. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/chat_execution.py +0 -0
  257. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/chat_store.py +0 -0
  258. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/cli.py +0 -0
  259. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/codex_diagnostics.py +0 -0
  260. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/codex_home.py +0 -0
  261. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/company_context.py +0 -0
  262. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/comparison_contract.py +0 -0
  263. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/conflicts.py +0 -0
  264. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/README.md +0 -0
  265. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/__init__.py +0 -0
  266. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/config.py +0 -0
  267. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/grants.py +0 -0
  268. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/materials.py +0 -0
  269. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/receipts.py +0 -0
  270. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/runtime.py +0 -0
  271. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/service.py +0 -0
  272. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/stdio_supervisor.py +0 -0
  273. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/task_client.py +0 -0
  274. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/transport.py +0 -0
  275. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/connectors/windows_acl.py +0 -0
  276. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/coverage_record.py +0 -0
  277. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/default_fonts.py +0 -0
  278. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/deliverable_spec.py +0 -0
  279. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/delivery_checks.py +0 -0
  280. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/delivery_state.py +0 -0
  281. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/demo.py +0 -0
  282. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/document_export.py +0 -0
  283. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/document_workflows.py +0 -0
  284. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/docx_text.py +0 -0
  285. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/draft_completion.py +0 -0
  286. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/duckduckgo.py +0 -0
  287. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/evaluation_reading.py +0 -0
  288. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/evidence.py +0 -0
  289. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/evidence_context.py +0 -0
  290. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/execution_records.py +0 -0
  291. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/execution_timing.py +0 -0
  292. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/export_jobs.py +0 -0
  293. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/export_labeling.py +0 -0
  294. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/exports.py +0 -0
  295. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/external_client.py +0 -0
  296. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/external_mcp.py +0 -0
  297. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/external_requests.py +0 -0
  298. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/fact_check.py +0 -0
  299. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/fast_mode.py +0 -0
  300. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/fast_research.py +0 -0
  301. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/feedback_view.py +0 -0
  302. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/figure_support.py +0 -0
  303. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/figure_text.py +0 -0
  304. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/figures.py +0 -0
  305. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/finding_anchors.py +0 -0
  306. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/harness.py +0 -0
  307. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/host_bins.py +0 -0
  308. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/html_export.py +0 -0
  309. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/html_export_assets/report.css +0 -0
  310. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/html_export_assets/report.js +0 -0
  311. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/industry_data.py +0 -0
  312. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/industry_export.py +0 -0
  313. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/interactive_runtime.py +0 -0
  314. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/jev.py +0 -0
  315. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/jev_checks.py +0 -0
  316. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/learning_budget.py +0 -0
  317. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/length.py +0 -0
  318. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/market_convention.py +0 -0
  319. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/media.py +0 -0
  320. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/model_budget.py +0 -0
  321. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/native_engine.py +0 -0
  322. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/native_harness.py +0 -0
  323. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/native_providers.py +0 -0
  324. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/native_roles.py +0 -0
  325. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/next_report.py +0 -0
  326. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/notifications.py +0 -0
  327. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/office_cli.py +0 -0
  328. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/ooxml_order.py +0 -0
  329. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/opencode_harness.py +0 -0
  330. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/opencode_version.py +0 -0
  331. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/packet_views.py +0 -0
  332. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/parent_watch.py +0 -0
  333. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/plain_isolation.py +0 -0
  334. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/platform_support.py +0 -0
  335. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/previous_report.py +0 -0
  336. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/process_host.py +0 -0
  337. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/progress.py +0 -0
  338. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/projections.py +0 -0
  339. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/mode.background.zh.md +0 -0
  340. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/mode.interactive.zh.md +0 -0
  341. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.chat.zh.md +0 -0
  342. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.fact_checker.zh.md +0 -0
  343. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.maintainer.zh.md +0 -0
  344. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.orchestrator.zh.md +0 -0
  345. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.proposer.zh.md +0 -0
  346. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.quick_writer.zh.md +0 -0
  347. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.reviewer.zh.md +0 -0
  348. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/prompt_assets/role.scout.zh.md +0 -0
  349. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/provider_catalog.py +0 -0
  350. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/readers.py +0 -0
  351. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/reconciliation.py +0 -0
  352. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/release.py +0 -0
  353. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/report_browsing.py +0 -0
  354. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/report_profiles.py +0 -0
  355. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/report_tools.py +0 -0
  356. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/research_budget.py +0 -0
  357. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/research_goals.py +0 -0
  358. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/research_handoff.py +0 -0
  359. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/research_plan.py +0 -0
  360. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/research_reading.py +0 -0
  361. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/review.py +0 -0
  362. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/review_capability.py +0 -0
  363. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/review_learning.py +0 -0
  364. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/revision_edits.py +0 -0
  365. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/revision_metadata.py +0 -0
  366. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/revision_policy.py +0 -0
  367. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/rpc_writer.py +0 -0
  368. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/runtime_bridge.py +0 -0
  369. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/runtime_permissions.py +0 -0
  370. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/runtime_reasoning.py +0 -0
  371. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/scout.py +0 -0
  372. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/scout_coverage.py +0 -0
  373. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/scout_evidence.py +0 -0
  374. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/scout_tools.py +0 -0
  375. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/search_credentials.py +0 -0
  376. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/search_policy.py +0 -0
  377. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/skill_assets/briefloop-external/SKILL.md +0 -0
  378. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/skill_assets/duckduckgo/SKILL.md +0 -0
  379. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/skill_assets/multi-search/SKILL.md +0 -0
  380. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/skill_assets/tavily/SKILL.md +0 -0
  381. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/skill_verification.py +0 -0
  382. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/skills.py +0 -0
  383. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/software_release_notes.py +0 -0
  384. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/software_version.py +0 -0
  385. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/source_context.py +0 -0
  386. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/source_extraction.py +0 -0
  387. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/source_ingestion.py +0 -0
  388. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/source_library_search.py +0 -0
  389. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/source_lifecycle.py +0 -0
  390. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/source_search.py +0 -0
  391. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/source_updates.py +0 -0
  392. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/sources.py +0 -0
  393. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/frontend-licenses.txt +0 -0
  394. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/native-engine-models.json +0 -0
  395. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/native-engine-photon.wasm +0 -0
  396. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-aider.png +0 -0
  397. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-amr.svg +0 -0
  398. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-antigravity.svg +0 -0
  399. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-bridge.LICENSE.txt +0 -0
  400. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-bridge.NOTICE.txt +0 -0
  401. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-bridge.mjs +0 -0
  402. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-briefloop.svg +0 -0
  403. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-claude.svg +0 -0
  404. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-codebuddy.svg +0 -0
  405. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-codex.svg +0 -0
  406. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-copilot.svg +0 -0
  407. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-cursor-agent.svg +0 -0
  408. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-deepseek.svg +0 -0
  409. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-devin.png +0 -0
  410. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-grok-build.svg +0 -0
  411. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-hermes.svg +0 -0
  412. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-kilo.svg +0 -0
  413. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-kimi.svg +0 -0
  414. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-kiro.svg +0 -0
  415. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-mimo.svg +0 -0
  416. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-opencode.svg +0 -0
  417. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-pi.svg +0 -0
  418. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-qoder.svg +0 -0
  419. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-qwen.svg +0 -0
  420. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-reasoning.json +0 -0
  421. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-reasonix.svg +0 -0
  422. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-trae-cli.png +0 -0
  423. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/runtime-vibe.svg +0 -0
  424. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/static/tokens.css +0 -0
  425. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/task_context.py +0 -0
  426. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/task_labels.py +0 -0
  427. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/task_notify.py +0 -0
  428. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/task_progress.py +0 -0
  429. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/tavily.py +0 -0
  430. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t1.docx +0 -0
  431. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t1.spec.json +0 -0
  432. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t2.docx +0 -0
  433. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t2.spec.json +0 -0
  434. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t3.docx +0 -0
  435. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t3.spec.json +0 -0
  436. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t4.docx +0 -0
  437. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t4.spec.json +0 -0
  438. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t5.docx +0 -0
  439. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/academic-paper-zh-t5.spec.json +0 -0
  440. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t1.docx +0 -0
  441. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t1.spec.json +0 -0
  442. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t2.docx +0 -0
  443. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t2.spec.json +0 -0
  444. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t3.docx +0 -0
  445. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t3.spec.json +0 -0
  446. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t4.docx +0 -0
  447. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t4.spec.json +0 -0
  448. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t5.docx +0 -0
  449. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/annual-report-zh-t5.spec.json +0 -0
  450. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t1.docx +0 -0
  451. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t1.spec.json +0 -0
  452. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t2.docx +0 -0
  453. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t2.spec.json +0 -0
  454. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t3.docx +0 -0
  455. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t3.spec.json +0 -0
  456. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t4.docx +0 -0
  457. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t4.spec.json +0 -0
  458. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t5.docx +0 -0
  459. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/business-report-zh-t5.spec.json +0 -0
  460. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t1.docx +0 -0
  461. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t1.spec.json +0 -0
  462. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t2.docx +0 -0
  463. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t2.spec.json +0 -0
  464. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t3.docx +0 -0
  465. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t3.spec.json +0 -0
  466. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t4.docx +0 -0
  467. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t4.spec.json +0 -0
  468. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t5.docx +0 -0
  469. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-en-t5.spec.json +0 -0
  470. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t1.docx +0 -0
  471. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t1.spec.json +0 -0
  472. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t2.docx +0 -0
  473. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t2.spec.json +0 -0
  474. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t3.docx +0 -0
  475. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t3.spec.json +0 -0
  476. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t4.docx +0 -0
  477. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t4.spec.json +0 -0
  478. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t5.docx +0 -0
  479. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/general-report-zh-t5.spec.json +0 -0
  480. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/government-doc-zh-t4.docx +0 -0
  481. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/government-doc-zh-t4.spec.json +0 -0
  482. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t1.docx +0 -0
  483. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t1.spec.json +0 -0
  484. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t2.docx +0 -0
  485. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t2.spec.json +0 -0
  486. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t3.docx +0 -0
  487. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t3.spec.json +0 -0
  488. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t4.docx +0 -0
  489. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t4.spec.json +0 -0
  490. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t5.docx +0 -0
  491. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/legal-contract-zh-t5.spec.json +0 -0
  492. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t1.docx +0 -0
  493. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t1.spec.json +0 -0
  494. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t2.docx +0 -0
  495. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t2.spec.json +0 -0
  496. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t3.docx +0 -0
  497. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t3.spec.json +0 -0
  498. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t4.docx +0 -0
  499. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t4.spec.json +0 -0
  500. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t5.docx +0 -0
  501. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/meeting-minutes-zh-t5.spec.json +0 -0
  502. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t1.docx +0 -0
  503. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t1.spec.json +0 -0
  504. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t2.docx +0 -0
  505. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t2.spec.json +0 -0
  506. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t3.docx +0 -0
  507. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t3.spec.json +0 -0
  508. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t4.docx +0 -0
  509. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t4.spec.json +0 -0
  510. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t5.docx +0 -0
  511. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-en-t5.spec.json +0 -0
  512. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t1.docx +0 -0
  513. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t1.spec.json +0 -0
  514. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t2.docx +0 -0
  515. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t2.spec.json +0 -0
  516. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t3.docx +0 -0
  517. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t3.spec.json +0 -0
  518. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t4.docx +0 -0
  519. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t4.spec.json +0 -0
  520. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t5.docx +0 -0
  521. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_assets/stock-research-zh-t5.spec.json +0 -0
  522. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/template_conversion.py +0 -0
  523. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/templates.py +0 -0
  524. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/user_input.py +0 -0
  525. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/version_execution.py +0 -0
  526. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/websearch.py +0 -0
  527. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/windows_process.py +0 -0
  528. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/word_import.py +0 -0
  529. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workbook_figures.py +0 -0
  530. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/evaluation.md +0 -0
  531. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/manifest.json +0 -0
  532. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/methods/decision_memo.md +0 -0
  533. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/methods/industry_periodic.md +0 -0
  534. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/methods/industry_quarterly.md +0 -0
  535. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/methods/industry_quarterly_review.md +0 -0
  536. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/methods/work_progress.md +0 -0
  537. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/planning.md +0 -0
  538. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/business_report/writing.md +0 -0
  539. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/general_report/evaluation.md +0 -0
  540. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/general_report/manifest.json +0 -0
  541. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/general_report/planning.md +0 -0
  542. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/general_report/writing.md +0 -0
  543. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/meeting_minutes/evaluation.md +0 -0
  544. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/meeting_minutes/manifest.json +0 -0
  545. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/meeting_minutes/planning.md +0 -0
  546. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/meeting_minutes/writing.md +0 -0
  547. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/stock_research/evaluation.md +0 -0
  548. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/stock_research/manifest.json +0 -0
  549. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/stock_research/methods/company_research.md +0 -0
  550. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/stock_research/methods/event_commentary.md +0 -0
  551. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/stock_research/methods/industry_tracking.md +0 -0
  552. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/stock_research/planning.md +0 -0
  553. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workflow_assets/stock_research/writing.md +0 -0
  554. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workspace_profile.py +0 -0
  555. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/workspaces.py +0 -0
  556. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/writer_assembly.py +0 -0
  557. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/writer_input.py +0 -0
  558. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/writing_agreements.py +0 -0
  559. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/xlsx_export.py +0 -0
  560. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop/zhipu.py +0 -0
  561. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop.egg-info/dependency_links.txt +0 -0
  562. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop.egg-info/entry_points.txt +0 -0
  563. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop.egg-info/requires.txt +0 -0
  564. {briefloop-0.31.0 → briefloop-0.31.3}/src/briefloop.egg-info/top_level.txt +0 -0
  565. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/__init__.py +0 -0
  566. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/__main__.py +0 -0
  567. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/_licenses/LICENSE +0 -0
  568. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/_licenses/NOTICE.md +0 -0
  569. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/_licenses/third_party/acorn/LICENSE +0 -0
  570. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/_licenses/third_party/acorn/NOTICE.md +0 -0
  571. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/_licenses/third_party/officeqa/LICENSE-APACHE +0 -0
  572. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/_licenses/third_party/officeqa/NOTICE +0 -0
  573. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/alfworld/__init__.py +0 -0
  574. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/alfworld/act.sh +0 -0
  575. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/alfworld/rollout.py +0 -0
  576. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/alfworld/step.py +0 -0
  577. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/benchmarks/__init__.py +0 -0
  578. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/benchmarks/alfworld.py +0 -0
  579. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/benchmarks/livemath.py +0 -0
  580. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/benchmarks/sealqa.py +0 -0
  581. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/benchmarks/spreadsheet.py +0 -0
  582. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/cli.py +0 -0
  583. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/codex_identity.py +0 -0
  584. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/engine.py +0 -0
  585. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/feedback_loop.py +0 -0
  586. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/isolated/__init__.py +0 -0
  587. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/isolated/audit.py +0 -0
  588. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/isolated/runtime.py +0 -0
  589. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/isolated/tools_server.py +0 -0
  590. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/jsonl.py +0 -0
  591. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/k4_lock.py +0 -0
  592. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/livemath/__init__.py +0 -0
  593. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/livemath/loop.py +0 -0
  594. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/livemath/rollout.py +0 -0
  595. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/native_agents.py +0 -0
  596. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/__init__.py +0 -0
  597. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/dataset.py +0 -0
  598. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/fetch.py +0 -0
  599. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/loop.py +0 -0
  600. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/retrieval.py +0 -0
  601. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/reward.py +0 -0
  602. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/rollout.py +0 -0
  603. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/scoring.py +0 -0
  604. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/officeqa/wiki_agents.py +0 -0
  605. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/paper_alignment/__init__.py +0 -0
  606. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/paper_alignment/contracts.py +0 -0
  607. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/paper_alignment/evidence.py +0 -0
  608. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/product.py +0 -0
  609. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/product_cli.py +0 -0
  610. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/product_install.py +0 -0
  611. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/product_views.py +0 -0
  612. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/id_split/split_manifest.json +0 -0
  613. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/id_split/test.json +0 -0
  614. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/id_split/train.json +0 -0
  615. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/id_split/val.json +0 -0
  616. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/wiki/SKILL-s0.md +0 -0
  617. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/wiki/index.md +0 -0
  618. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/wiki/logs.md +0 -0
  619. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/wiki/prompts/maintainer.md +0 -0
  620. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/wiki/prompts/proposer.md +0 -0
  621. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/alfworld/wiki/skill-impact.md +0 -0
  622. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/isolated/model-catalog-direct.json +0 -0
  623. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split/split_manifest.json +0 -0
  624. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split/test.json +0 -0
  625. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split/train.json +0 -0
  626. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split/val.json +0 -0
  627. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split-v2/split_manifest.json +0 -0
  628. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split-v2/test.json +0 -0
  629. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split-v2/train.json +0 -0
  630. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/id_split-v2/val.json +0 -0
  631. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/protocol.json +0 -0
  632. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/wiki/SKILL-s0.md +0 -0
  633. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/wiki/index.md +0 -0
  634. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/wiki/logs.md +0 -0
  635. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/wiki/prompts/maintainer.md +0 -0
  636. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/wiki/prompts/proposer.md +0 -0
  637. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/livemath/wiki/skill-impact.md +0 -0
  638. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/id_split/split_manifest.json +0 -0
  639. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/id_split/test.json +0 -0
  640. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/id_split/train.json +0 -0
  641. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/id_split/val.json +0 -0
  642. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/protocol.json +0 -0
  643. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/wiki/SKILL-s0.md +0 -0
  644. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/wiki/index.md +0 -0
  645. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/wiki/logs.md +0 -0
  646. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/wiki/prompts/maintainer.md +0 -0
  647. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/wiki/prompts/proposer.md +0 -0
  648. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/officeqa/wiki/skill-impact.md +0 -0
  649. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/paper_alignment/README.md +0 -0
  650. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/paper_alignment/prompts/maintainer.paper.md +0 -0
  651. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/paper_alignment/prompts/officeqa.paper.md +0 -0
  652. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/paper_alignment/prompts/proposer.paper.md +0 -0
  653. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/paper_alignment/prompts/spreadsheet.paper.md +0 -0
  654. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/agents/claude-code/wikiskill-executor.md +0 -0
  655. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/agents/claude-code/wikiskill-maintainer.md +0 -0
  656. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/agents/claude-code/wikiskill-proposer.md +0 -0
  657. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/agents/codex/wikiskill-executor.toml +0 -0
  658. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/agents/codex/wikiskill-maintainer.toml +0 -0
  659. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/agents/codex/wikiskill-proposer.toml +0 -0
  660. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/entry-skill/SKILL.md +0 -0
  661. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/entry-skill/agents/openai.yaml +0 -0
  662. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/entry-skill/references/native-subagents.md +0 -0
  663. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/entry-skill/references/workflow.md +0 -0
  664. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/roles/executor.md +0 -0
  665. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/roles/maintainer.md +0 -0
  666. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/product/roles/proposer.md +0 -0
  667. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/final-20260907/manifest.json +0 -0
  668. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/final-20260907/math-episodes.json +0 -0
  669. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/final-20260907/sealqa-pairs.json +0 -0
  670. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/final-20260907/spreadsheet-SKILL.md +0 -0
  671. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/final-20260907/spreadsheet-pairs.json +0 -0
  672. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/final-20260907/summary.json +0 -0
  673. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/example-provenance.json +0 -0
  674. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/installed-smoke.json +0 -0
  675. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/manifest.json +0 -0
  676. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/repeat1-pairs.json +0 -0
  677. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/repeat2-pairs.json +0 -0
  678. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/repeat3-pairs.json +0 -0
  679. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/summary.json +0 -0
  680. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/repeatability-20260908/wiki-deliver-the-recalculated-workbook.md +0 -0
  681. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/livemath/55.md +0 -0
  682. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/livemath/luna.md +0 -0
  683. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/officeqa/55.md +0 -0
  684. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/officeqa/terra.md +0 -0
  685. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/officeqa-retrieval/55.md +0 -0
  686. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/officeqa-retrieval/sol.md +0 -0
  687. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/sealqa/sol.md +0 -0
  688. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/spreadsheet/55.md +0 -0
  689. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/skills/spreadsheet/sol.md +0 -0
  690. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/snapshot.json +0 -0
  691. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/snapshot.sha256 +0 -0
  692. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260906/livemath-luna-pairs.json +0 -0
  693. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260906/livemath-luna-skill.md +0 -0
  694. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260906/manifest.json +0 -0
  695. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260906/officeqa-luna-skill.md +0 -0
  696. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260906/officeqa-sol-skill.md +0 -0
  697. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260906/officeqa-sol-v2-pairs.json +0 -0
  698. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260906/studies.json +0 -0
  699. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/effort-analysis.json +0 -0
  700. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/effort-pairs.json +0 -0
  701. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/manifest.json +0 -0
  702. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/officeqa-luna-paper-tools-pairs.json +0 -0
  703. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/officeqa-luna-paper-tools-skill.md +0 -0
  704. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/spreadsheet-luna-scoped-python-pairs.json +0 -0
  705. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/spreadsheet-luna-scoped-python-skill.md +0 -0
  706. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/research/update-20260907/studies.json +0 -0
  707. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/runtime/acorn.mjs +0 -0
  708. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/runtime/audit_js.mjs +0 -0
  709. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/id_split/split_manifest.json +0 -0
  710. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/id_split/test.json +0 -0
  711. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/id_split/train.json +0 -0
  712. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/id_split/val.json +0 -0
  713. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/protocol.json +0 -0
  714. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/wiki/SKILL-s0.md +0 -0
  715. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/wiki/index.md +0 -0
  716. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/wiki/logs.md +0 -0
  717. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/wiki/prompts/maintainer.md +0 -0
  718. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/wiki/prompts/proposer.md +0 -0
  719. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/sealqa/wiki/skill-impact.md +0 -0
  720. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/id_split/split_manifest.json +0 -0
  721. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/id_split/test.json +0 -0
  722. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/id_split/train.json +0 -0
  723. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/id_split/val.json +0 -0
  724. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/protocol.json +0 -0
  725. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/wiki/SKILL-s0.md +0 -0
  726. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/wiki/index.md +0 -0
  727. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/wiki/logs.md +0 -0
  728. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/wiki/prompts/maintainer.md +0 -0
  729. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/wiki/prompts/proposer.md +0 -0
  730. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/resources/spreadsheet/wiki/skill-impact.md +0 -0
  731. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/results.py +0 -0
  732. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/score_rules.py +0 -0
  733. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/scorer_trust.py +0 -0
  734. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/sealqa/__init__.py +0 -0
  735. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/sealqa/loop.py +0 -0
  736. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/sealqa/rollout.py +0 -0
  737. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/settings.py +0 -0
  738. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/skill_proposer.py +0 -0
  739. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/spreadsheet/__init__.py +0 -0
  740. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/spreadsheet/loop.py +0 -0
  741. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/spreadsheet/rollout.py +0 -0
  742. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/spreadsheet/study.py +0 -0
  743. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/tool_audit.py +0 -0
  744. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/wiki.py +0 -0
  745. {briefloop-0.31.0 → briefloop-0.31.3}/src/wikiskill/wiki_maintainer.py +0 -0
  746. {briefloop-0.31.0 → briefloop-0.31.3}/start.ps1 +0 -0
  747. {briefloop-0.31.0 → briefloop-0.31.3}/start.sh +0 -0
  748. {briefloop-0.31.0 → briefloop-0.31.3}/tests/check_distribution.py +0 -0
  749. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_anchored_popover.mjs +0 -0
  750. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_app_updates.mjs +0 -0
  751. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_assessment_checks.mjs +0 -0
  752. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_brand_colors.mjs +0 -0
  753. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_chat_attachments.mjs +0 -0
  754. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_chat_commands.mjs +0 -0
  755. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_chat_drafts.mjs +0 -0
  756. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_chat_layout.mjs +0 -0
  757. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_chat_polling.mjs +0 -0
  758. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_checkout_eol.mjs +0 -0
  759. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_citation_clipboard.mjs +0 -0
  760. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_citation_edit.mjs +0 -0
  761. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_citation_evidence.mjs +0 -0
  762. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_citation_sources.mjs +0 -0
  763. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_clipboard_fallback.mjs +0 -0
  764. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_excel_export.mjs +0 -0
  765. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_export_menu.mjs +0 -0
  766. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_fact_check_availability.mjs +0 -0
  767. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_fact_check_grants.mjs +0 -0
  768. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_fast_mode.mjs +0 -0
  769. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_feedback_list.mjs +0 -0
  770. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_home_v2.mjs +0 -0
  771. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_job_presentation.mjs +0 -0
  772. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_learning_authorization.mjs +0 -0
  773. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_learning_retry.mjs +0 -0
  774. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_length_controls.mjs +0 -0
  775. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_licenses.mjs +0 -0
  776. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_live_status.mjs +0 -0
  777. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_markdown_import.mjs +0 -0
  778. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_market_convention.mjs +0 -0
  779. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_mcp_selection.mjs +0 -0
  780. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_model_catalog_refresh.mjs +0 -0
  781. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_model_label.mjs +0 -0
  782. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_model_selection.mjs +0 -0
  783. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_native_requests.mjs +0 -0
  784. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_native_runtime.mjs +0 -0
  785. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_office_tools.mjs +0 -0
  786. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_open_brief_status.mjs +0 -0
  787. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_pending_report.mjs +0 -0
  788. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_polling.mjs +0 -0
  789. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_previous_report.mjs +0 -0
  790. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_progress_race.mjs +0 -0
  791. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_provider_capabilities.mjs +0 -0
  792. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_readers.mjs +0 -0
  793. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_reasoning_controls.mjs +0 -0
  794. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_release_controls.mjs +0 -0
  795. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_release_navigation.mjs +0 -0
  796. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_browsing.mjs +0 -0
  797. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_chat_drawer.mjs +0 -0
  798. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_export.mjs +0 -0
  799. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_feedback.mjs +0 -0
  800. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_form_defaults.mjs +0 -0
  801. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_language.mjs +0 -0
  802. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_load.mjs +0 -0
  803. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_outline.mjs +0 -0
  804. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_panels.mjs +0 -0
  805. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_start.mjs +0 -0
  806. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_report_version_info.mjs +0 -0
  807. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_research_process.mjs +0 -0
  808. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_review_capability.mjs +0 -0
  809. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_review_coverage.mjs +0 -0
  810. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_review_status.mjs +0 -0
  811. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_revision_questions.mjs +0 -0
  812. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_runtime_discovery.mjs +0 -0
  813. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_runtime_feedback.mjs +0 -0
  814. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_runtime_model_picker.mjs +0 -0
  815. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_runtime_permission_panel.mjs +0 -0
  816. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_save_barrier.mjs +0 -0
  817. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_settings_workspaces.mjs +0 -0
  818. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_setup_state.mjs +0 -0
  819. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_skill_verification.mjs +0 -0
  820. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_source_library.mjs +0 -0
  821. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_source_lifecycle.mjs +0 -0
  822. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_source_media.mjs +0 -0
  823. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_source_search.mjs +0 -0
  824. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_source_upload.mjs +0 -0
  825. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_startup_recovery.mjs +0 -0
  826. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_task_progress.mjs +0 -0
  827. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_template_groups.mjs +0 -0
  828. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_template_output.mjs +0 -0
  829. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_update_notifications.mjs +0 -0
  830. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_upload_limits.mjs +0 -0
  831. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_version_bodies.mjs +0 -0
  832. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_version_diff.mjs +0 -0
  833. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_welcome_gate.mjs +0 -0
  834. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_workspace_proposal.mjs +0 -0
  835. {briefloop-0.31.0 → briefloop-0.31.3}/tests/frontend_writing_preferences.mjs +0 -0
  836. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_agent_backend.py +0 -0
  837. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_agent_commands.py +0 -0
  838. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_agent_session_budget.py +0 -0
  839. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_analyst_draft_versions.py +0 -0
  840. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_article_materials.py +0 -0
  841. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_assessment_followup.py +0 -0
  842. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_bridge_harness.py +0 -0
  843. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_builtin_templates.py +0 -0
  844. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_chat_dispatch.py +0 -0
  845. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_chat_execution.py +0 -0
  846. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_chat_model_selection.py +0 -0
  847. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_chat_stop.py +0 -0
  848. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_codex_home.py +0 -0
  849. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_codex_idle.py +0 -0
  850. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_connection_test_history.py +0 -0
  851. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_connector_authorization.py +0 -0
  852. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_connector_empty_catalog.py +0 -0
  853. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_connectors.py +0 -0
  854. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_core.py +0 -0
  855. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_coverage_record.py +0 -0
  856. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_cross_module_regressions.py +0 -0
  857. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_delivery_checks.py +0 -0
  858. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_demo.py +0 -0
  859. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_desktop_lifecycle.py +0 -0
  860. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_document_workflows.py +0 -0
  861. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_draft_completion.py +0 -0
  862. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_draft_contract.py +0 -0
  863. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_english_reports.py +0 -0
  864. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_entrypoint.py +0 -0
  865. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_evidence.py +0 -0
  866. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_evidence_parse_failures.py +0 -0
  867. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_execution_records.py +0 -0
  868. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_export_admission.py +0 -0
  869. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_export_labeling.py +0 -0
  870. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_export_layout_swap.py +0 -0
  871. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_export_xlsx.py +0 -0
  872. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_external_mcp.py +0 -0
  873. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_external_requests.py +0 -0
  874. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fact_check_contract.py +0 -0
  875. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fact_check_orchestration.py +0 -0
  876. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fact_check_phase.py +0 -0
  877. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fact_check_review.py +0 -0
  878. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fact_status_tool.py +0 -0
  879. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fast_evidence.py +0 -0
  880. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fast_mode.py +0 -0
  881. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fast_qualifier_checks.py +0 -0
  882. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fast_reports.py +0 -0
  883. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fast_research.py +0 -0
  884. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_feedback_view.py +0 -0
  885. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_fetch_contact.py +0 -0
  886. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_figure_exports.py +0 -0
  887. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_figure_flow.py +0 -0
  888. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_figure_text.py +0 -0
  889. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_figures.py +0 -0
  890. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_finding_anchors.py +0 -0
  891. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_generation_schema_guidance.py +0 -0
  892. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_harness.py +0 -0
  893. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_host_bins.py +0 -0
  894. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_html_export.py +0 -0
  895. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_html_export_states.py +0 -0
  896. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_human_learning.py +0 -0
  897. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_industry_export.py +0 -0
  898. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_industry_flow.py +0 -0
  899. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_industry_research.py +0 -0
  900. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_interactive_runtime.py +0 -0
  901. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_jev_checks.py +0 -0
  902. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_learning_authorization.py +0 -0
  903. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_learning_integrity.py +0 -0
  904. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_length.py +0 -0
  905. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_markdown_download.py +0 -0
  906. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_market_convention.py +0 -0
  907. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_media_sources.py +0 -0
  908. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_model_catalog_defaults.py +0 -0
  909. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_multimodal_harness.py +0 -0
  910. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_multimodal_http.py +0 -0
  911. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_analyst.py +0 -0
  912. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_evaluator.py +0 -0
  913. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_harness.py +0 -0
  914. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_learning.py +0 -0
  915. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_provider_storage.py +0 -0
  916. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_providers.py +0 -0
  917. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_review_contract.py +0 -0
  918. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_scout.py +0 -0
  919. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_native_scout_round_paths.py +0 -0
  920. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_next_report.py +0 -0
  921. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_notifications.py +0 -0
  922. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_npm_native_shim.py +0 -0
  923. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_numeric_occurrence_review.py +0 -0
  924. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_office_cli.py +0 -0
  925. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_office_source_structure.py +0 -0
  926. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_office_surfaces.py +0 -0
  927. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_ooxml_order.py +0 -0
  928. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_harness.py +0 -0
  929. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_idle.py +0 -0
  930. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_prompt_versions.py +0 -0
  931. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_provider.py +0 -0
  932. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_questions.py +0 -0
  933. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_reasoning.py +0 -0
  934. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_review_version.py +0 -0
  935. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_search_prompt.py +0 -0
  936. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_server_stdin.py +0 -0
  937. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_v2.py +0 -0
  938. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_opencode_version_probe.py +0 -0
  939. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_plain_isolation.py +0 -0
  940. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_posix_process_tree.py +0 -0
  941. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_pr593_roundtrip.py +0 -0
  942. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_previous_report.py +0 -0
  943. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_product_summary_consistency.py +0 -0
  944. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_progress.py +0 -0
  945. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_progress_pipeline.py +0 -0
  946. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_provider_catalog.py +0 -0
  947. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_public_research.py +0 -0
  948. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_quality_checklist_candidate.py +0 -0
  949. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_quality_reading_context.py +0 -0
  950. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_quarterly_report.py +0 -0
  951. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_reader_contract.py +0 -0
  952. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_reader_profiles.py +0 -0
  953. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_reader_source_export.py +0 -0
  954. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_reader_workflow.py +0 -0
  955. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_reconciliation.py +0 -0
  956. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_release.py +0 -0
  957. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_release_identity.py +0 -0
  958. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_report_browsing.py +0 -0
  959. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_report_deletion.py +0 -0
  960. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_report_length_feedback.py +0 -0
  961. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_report_path_regressions.py +0 -0
  962. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_report_time.py +0 -0
  963. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_research_budget.py +0 -0
  964. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_research_gap_updates.py +0 -0
  965. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_research_handoff.py +0 -0
  966. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_research_plan.py +0 -0
  967. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_research_response_admission.py +0 -0
  968. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_resume_in_place.py +0 -0
  969. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_capability.py +0 -0
  970. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_finding_consistency.py +0 -0
  971. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_modes.py +0 -0
  972. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_packet_paths.py +0 -0
  973. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_public_metadata.py +0 -0
  974. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_schema_drift.py +0 -0
  975. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_snapshot.py +0 -0
  976. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_review_visual_input.py +0 -0
  977. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_revision_citations.py +0 -0
  978. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_revision_edits.py +0 -0
  979. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_revision_policy.py +0 -0
  980. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_role_models.py +0 -0
  981. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_bridge.py +0 -0
  982. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_bridge_idle.py +0 -0
  983. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_json_bom.py +0 -0
  984. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_liveness.py +0 -0
  985. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_names.py +0 -0
  986. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_permissions.py +0 -0
  987. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_propagation.py +0 -0
  988. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_runtime_retry.py +0 -0
  989. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_search_credentials.py +0 -0
  990. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_search_policy.py +0 -0
  991. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_server_boundary.py +0 -0
  992. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_settings_transactions.py +0 -0
  993. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_skill_verification.py +0 -0
  994. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_software_release_notes.py +0 -0
  995. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_software_version.py +0 -0
  996. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_source_ingestion.py +0 -0
  997. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_source_library_search.py +0 -0
  998. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_source_lifecycle.py +0 -0
  999. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_source_recovery_regressions.py +0 -0
  1000. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_source_updates.py +0 -0
  1001. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_sources_provenance.py +0 -0
  1002. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_store_wal.py +0 -0
  1003. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_table_citation_advisory.py +0 -0
  1004. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_task_context.py +0 -0
  1005. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_task_notify.py +0 -0
  1006. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_task_progress.py +0 -0
  1007. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_tavily.py +0 -0
  1008. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_template_conversion.py +0 -0
  1009. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_template_conversion_http.py +0 -0
  1010. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_templates.py +0 -0
  1011. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_user_input.py +0 -0
  1012. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_user_source_refresh.py +0 -0
  1013. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_version_consistency.py +0 -0
  1014. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_version_execution.py +0 -0
  1015. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_websearch.py +0 -0
  1016. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_wikiskill_engine_windows.py +0 -0
  1017. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_antigravity_permissions.py +0 -0
  1018. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_connector_acl.py +0 -0
  1019. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_distribution.py +0 -0
  1020. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_mcp_supervisor.py +0 -0
  1021. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_platform.py +0 -0
  1022. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_release_paths.py +0 -0
  1023. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_review_paths.py +0 -0
  1024. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_runtime_bundle.py +0 -0
  1025. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_windows_xlsx_paths.py +0 -0
  1026. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_word_import.py +0 -0
  1027. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_word_source_locators.py +0 -0
  1028. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_word_toc.py +0 -0
  1029. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_worker_idle.py +0 -0
  1030. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_workspace_action_errors.py +0 -0
  1031. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_workspace_profile.py +0 -0
  1032. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_workspaces.py +0 -0
  1033. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_writer_assembly.py +0 -0
  1034. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_writer_cli_guidance.py +0 -0
  1035. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_writer_context.py +0 -0
  1036. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_writer_input.py +0 -0
  1037. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_writing_agreements.py +0 -0
  1038. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_xlsx_officecli_integration.py +0 -0
  1039. {briefloop-0.31.0 → briefloop-0.31.3}/tests/test_xlsx_preview.py +0 -0
  1040. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/LICENSE +0 -0
  1041. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/NOTICE.md +0 -0
  1042. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/acp/constants.ts +0 -0
  1043. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/acp/json.ts +0 -0
  1044. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/acp/models.ts +0 -0
  1045. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/acp/rpc.ts +0 -0
  1046. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/acp/session-params.ts +0 -0
  1047. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/acp/types.ts +0 -0
  1048. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/byok-reference/byok-opencode.ts +0 -0
  1049. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/byok-reference/provider-models.ts +0 -0
  1050. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/core/index.ts +0 -0
  1051. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/core/json-line-stream.ts +0 -0
  1052. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/runtime-models/codex-models.ts +0 -0
  1053. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/runtime-models/mmd-routes.ts +0 -0
  1054. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/runtime-models/models.ts +0 -0
  1055. {briefloop-0.31.0 → briefloop-0.31.3}/third_party/open-design/runtime-models/opencode-models.ts +0 -0
@@ -1,5 +1,62 @@
1
1
  # 变更记录
2
2
 
3
+ ## 0.31.3
4
+
5
+ - 修复导出后重开滚到页尾时右栏被顶栏遮挡:任务记录随正文列共同延长右栏的滚动边界;大纲、无稿件和窄屏保留原位置。
6
+ - 新报告默认自主直写,研究与写稿由同一作者完成;普通入口收起流程选择,标准流程保留在高级选项。选定连接器资料时自动使用已有授权的标准流程。
7
+ - 修复所选连接器资源未进入作者材料的问题:按本轮授权读取并保存来源回执,复用预算和已读材料。不支持的参数工具组合在任务开始前明确拒绝。
8
+ - 修复直写 WikiSkill 未送达:作者实际应用候选与已启用方法,比较及采用前核验送达。保存保留正文粗体和作者日期记录。
9
+ - 简化面向审阅者的声明与重复免责,把核查状态写成有依据的事实。
10
+ - 修复报告向下滚动时右栏标签被顶栏遮挡,操作栏换行后自动避让,右栏内容独立滚动。
11
+ - 内置 BriefLoop Agent 升级至 Pi 1.1.0,保留工具隔离、会话恢复和取消。
12
+ - Windows 初始窗口在欢迎页加载完成后显示,修复首次绘制延迟;跨平台发行使用同一冻结后端。
13
+
14
+
15
+ ## 0.31.3rc1
16
+
17
+ - 修复已导出报告重开后滚到底部时右栏再次被遮挡:桌面编辑视图把尾部任务记录纳入正文列,延长右栏所属行;大纲、无稿件和窄屏保留原任务记录位置。
18
+ - 基于 0.31.2 冻结候选继续验收,不覆盖其原工件。
19
+
20
+ ## 0.31.2(未发布,验收中止)
21
+
22
+ - 新报告默认自主直写,研究与写稿由同一作者完成;普通入口收起流程选择,标准流程保留在高级选项。选定连接器资料时自动使用已有授权的标准流程。
23
+ - 修复所选连接器资源未进入作者材料的问题:按本轮授权读取并保存来源回执,复用预算和已读材料。不支持的参数工具组合在任务开始前明确拒绝。
24
+ - 修复直写 WikiSkill 未送达:作者实际应用候选与已启用方法,比较及采用前核验送达。保存保留正文粗体和作者日期记录。
25
+ - 简化面向审阅者的声明与重复免责,把核查状态写成有依据的事实。
26
+ - 修复报告向下滚动时右栏标签被顶栏遮挡,操作栏换行后自动避让,右栏内容独立滚动。
27
+ - 内置 BriefLoop Agent 升级至 Pi 1.1.0,保留工具隔离、会话恢复和取消。
28
+ - Windows 初始窗口在欢迎页加载完成后显示,修复首次绘制延迟;跨平台发行使用同一冻结后端。
29
+
30
+ ## 0.31.2rc5
31
+
32
+ - 修复报告滚动时右栏标签被顶栏遮挡:按实际顶栏和可用窗口高度定位,右栏内容独立滚动,键盘定位不再带走标签。
33
+ - 发行验收候选,包含0.31.1的自主直写默认、WikiSkill送达、日期/粗体保存和Pi1.1改动。
34
+ - Windows预发行验收同时核对PE基号与包内实际版本,保留校验失败输出。
35
+ - Windows初始窗口在欢迎页加载完成后显示,减少首次绘制等待;原生界面验收仍待完成。
36
+ - 在作者输入编译前按冻结授权读取所选资源,复用读取回执和预算;离线Codex不支持的参数工具组合在任务开始前明确拒绝。
37
+ - 已选择连接器资料而未指定生成方式时,自动使用已支持连接器授权的标准流程。显式直写与实时连接器组合在开始前明确拒绝;不支持该授权提交的聊天工具也不再静默忽略选择。
38
+ - 可显式启用桌面启动时序日志,记录页面加载、环境就绪、IPC状态与首次绘制阶段,用于Windows普通窗口启动延迟的原生排查;不记录材料、路径或凭据。
39
+
40
+
41
+ ## 0.31.2rc4
42
+
43
+ - 发行验收候选,包含0.31.1的自主直写默认、WikiSkill送达、日期/粗体保存和Pi1.1改动。
44
+ - Windows预发行验收同时核对PE基号与包内实际版本,保留校验失败输出。
45
+ - Windows初始窗口在欢迎页加载完成后显示,减少首次绘制等待;原生界面验收仍待完成。
46
+ - 在作者输入编译前按冻结授权读取所选资源,复用读取回执和预算;离线Codex不支持的参数工具组合在任务开始前明确拒绝。
47
+ - 已选择连接器资料而未指定生成方式时,自动使用已支持连接器授权的标准流程。显式直写与实时连接器组合在开始前明确拒绝;不支持该授权提交的聊天工具也不再静默忽略选择。
48
+ - 可显式启用桌面启动时序日志,记录页面加载、环境就绪、IPC状态与首次绘制阶段,用于Windows普通窗口启动延迟的原生排查;不记录材料、路径或凭据。
49
+
50
+ ## 0.31.1
51
+
52
+ - 新报告默认自主直写,由同一作者完成研究与成稿,保存后继续补充依据、评价和修订;普通入口收起生成方式选择,标准流程保留在高级选项。未指定方式的企业内部报告、独立风格参考、行业季报和外部 Pi 沿用既有标准流程,显式选择及历史任务的执行方式不变。
53
+
54
+ - 报告写作把核查状态写成有依据的事实,减少面向审阅者的声明、过程叙述和重复免责;保留影响判断的真实缺口与限制(#920)。
55
+ - 修复直写模式未把已选 WikiSkill 送达作者的问题;学习比较与采用前核对宿主保存的实际输入,缺少送达证据时保留候选并拒绝采用。比较使用同一冻结作者代码。
56
+ - 直写保存保留正文粗体与作者提供的日期依据;证据补充沿用已保存日期信息,来源抓取日期由来源记录提供,未提供的字段不补造。
57
+ - 内置 BriefLoop Agent 升级至 Pi 1.1.0,保留角色工具隔离、会话恢复、取消、压缩与图片处理,长子任务的隐式缓存预热保持关闭。
58
+ - 修复宿主直写检索入口未指定受控 provider 的示例;沿用冻结首选与缺口补查策略,显式选择已允许渠道,不自动切换搜索服务。
59
+
3
60
  ## 0.31.0
4
61
 
5
62
  - 修复 OpenCode v2 默认推理档被错误拒绝,显式模型与其他推理档仍按冻结配置校验。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: briefloop
3
- Version: 0.31.0
3
+ Version: 0.31.3
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
@@ -177,11 +177,13 @@ Codex 使用官方 OpenAI provider 且配置支持时,输入区与角色配置
177
177
  - **对话工作台**:发消息、上传材料、选择模型、排队或中途补充要求,查看公开工具和子 Agent 活动。
178
178
  - **工作区管理**:打开已有目录或新建空工作区,各自保存对话、来源、稿件、评分与 Wiki。
179
179
  - **对话整理**:归档、移到回收站、恢复,或批量归档已结束对话;报告、来源与 Wiki 不跟随对话清理删除。
180
- - **从公开资料写简报**:不强制上传。开启联网后,由 Scout 查找并筛选资料;Analyst 写稿,Evaluator 独立评分。
180
+ - **从公开资料写简报**:不强制上传。通用新报告默认由同一作者研究并成稿,保存后补充依据、独立评价和修订。
181
181
  - **从 MCP 取得报告材料**:在设置中连接 HTTP 或本机 stdio 服务,再在新报告中明确选择资源、工具和预算。实际读取结果保存为来源与回执,供正文引用和离线核查。
182
182
  - **直接改稿与学习**:编辑正文或留下反馈;Wiki Maintainer 整理经验,Skill Proposer 提出技能,Evaluator 比较实际产物后决定是否采用。
183
183
  - **明确的预算与篇幅**:整次报告共享检索额度;正文目标字数和上限可直接修改。
184
184
 
185
+ 未指定生成方式时,实时连接器资料、企业内部报告、独立风格参考、行业季报和外部 Pi 沿用既有标准流程,保留企业维护、数据工具及宿主兼容能力。高级选项中的显式选择与历史任务保持原行为。
186
+
185
187
  ## 第一次使用
186
188
 
187
189
  1. 在“材料与需求”填写目的、读者、时间范围和字数要求。可上传材料、开启联网,或在“本轮连接器材料”中明确选择 MCP 材料。
@@ -194,7 +196,7 @@ Codex 使用官方 OpenAI provider 且配置支持时,输入区与角色配置
194
196
 
195
197
  在“设置 → 数据连接器”保存连接配置,测试目录并启用;保存配置本身不会连接 HTTP 或启动本机程序。HTTP 可选择 Bearer 令牌或服务要求的原样 Authorization 值;stdio 使用已安装程序的绝对路径和逐项参数。凭据保存在工作区的独立受保护文件中,页面只显示是否已保存及认证类型。
196
198
 
197
- 在新报告的“本轮连接器材料”勾选具体资源或工具,并确认调用次数、材料总量上限。启用连接器不会自动授权每份报告,公开搜索的联网开关与此选择分开。任务启动前冻结选择与预算;未选资源和工具不能通过该任务的材料接口读取。工具声明“只读”不代表已经验证无副作用,请按其实际用途选择。
199
+ 在新报告的“本轮连接器材料”勾选具体资源或工具,并确认调用次数、材料总量上限。启用连接器不会自动授权每份报告,公开搜索的联网开关与此选择分开。任务启动前冻结选择与预算;未选资源和工具不能通过该任务的材料接口读取。工具声明“只读”不代表已经验证无副作用,请按其实际用途选择。明确选定的资源会在写作前按冻结授权读取并保存;参数工具仍由作者按需调用。离线 Codex 暂不支持参数工具,可选择资源或先导入工具结果。
198
200
 
199
201
  已选择、已接纳为来源、已被正文引用是三个不同结果。接纳会保存读取回执、原件哈希和来源 ID,材料仍须核查;Reviewer 使用已保存的核查包,不携实时连接器访问凭据。MCP 请求参数会发送给所选服务,取得的材料也可能进入所选模型的上下文。停止任务会撤销实时访问,保留已经保存的来源;未知结果不会自动重发,已撤销的任务需重新明确选择材料。
200
202
 
@@ -137,11 +137,13 @@ Codex 使用官方 OpenAI provider 且配置支持时,输入区与角色配置
137
137
  - **对话工作台**:发消息、上传材料、选择模型、排队或中途补充要求,查看公开工具和子 Agent 活动。
138
138
  - **工作区管理**:打开已有目录或新建空工作区,各自保存对话、来源、稿件、评分与 Wiki。
139
139
  - **对话整理**:归档、移到回收站、恢复,或批量归档已结束对话;报告、来源与 Wiki 不跟随对话清理删除。
140
- - **从公开资料写简报**:不强制上传。开启联网后,由 Scout 查找并筛选资料;Analyst 写稿,Evaluator 独立评分。
140
+ - **从公开资料写简报**:不强制上传。通用新报告默认由同一作者研究并成稿,保存后补充依据、独立评价和修订。
141
141
  - **从 MCP 取得报告材料**:在设置中连接 HTTP 或本机 stdio 服务,再在新报告中明确选择资源、工具和预算。实际读取结果保存为来源与回执,供正文引用和离线核查。
142
142
  - **直接改稿与学习**:编辑正文或留下反馈;Wiki Maintainer 整理经验,Skill Proposer 提出技能,Evaluator 比较实际产物后决定是否采用。
143
143
  - **明确的预算与篇幅**:整次报告共享检索额度;正文目标字数和上限可直接修改。
144
144
 
145
+ 未指定生成方式时,实时连接器资料、企业内部报告、独立风格参考、行业季报和外部 Pi 沿用既有标准流程,保留企业维护、数据工具及宿主兼容能力。高级选项中的显式选择与历史任务保持原行为。
146
+
145
147
  ## 第一次使用
146
148
 
147
149
  1. 在“材料与需求”填写目的、读者、时间范围和字数要求。可上传材料、开启联网,或在“本轮连接器材料”中明确选择 MCP 材料。
@@ -154,7 +156,7 @@ Codex 使用官方 OpenAI provider 且配置支持时,输入区与角色配置
154
156
 
155
157
  在“设置 → 数据连接器”保存连接配置,测试目录并启用;保存配置本身不会连接 HTTP 或启动本机程序。HTTP 可选择 Bearer 令牌或服务要求的原样 Authorization 值;stdio 使用已安装程序的绝对路径和逐项参数。凭据保存在工作区的独立受保护文件中,页面只显示是否已保存及认证类型。
156
158
 
157
- 在新报告的“本轮连接器材料”勾选具体资源或工具,并确认调用次数、材料总量上限。启用连接器不会自动授权每份报告,公开搜索的联网开关与此选择分开。任务启动前冻结选择与预算;未选资源和工具不能通过该任务的材料接口读取。工具声明“只读”不代表已经验证无副作用,请按其实际用途选择。
159
+ 在新报告的“本轮连接器材料”勾选具体资源或工具,并确认调用次数、材料总量上限。启用连接器不会自动授权每份报告,公开搜索的联网开关与此选择分开。任务启动前冻结选择与预算;未选资源和工具不能通过该任务的材料接口读取。工具声明“只读”不代表已经验证无副作用,请按其实际用途选择。明确选定的资源会在写作前按冻结授权读取并保存;参数工具仍由作者按需调用。离线 Codex 暂不支持参数工具,可选择资源或先导入工具结果。
158
160
 
159
161
  已选择、已接纳为来源、已被正文引用是三个不同结果。接纳会保存读取回执、原件哈希和来源 ID,材料仍须核查;Reviewer 使用已保存的核查包,不携实时连接器访问凭据。MCP 请求参数会发送给所选服务,取得的材料也可能进入所选模型的上下文。停止任务会撤销实时访问,保留已经保存的来源;未知结果不会自动重发,已撤销的任务需重新明确选择材料。
160
162
 
@@ -0,0 +1 @@
1
+ 0.31.3
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "briefloop-desktop",
3
- "version": "0.31.0",
3
+ "version": "0.31.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "briefloop-desktop",
9
- "version": "0.31.0",
9
+ "version": "0.31.3",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "briefloop-desktop",
3
- "version": "0.31.0",
3
+ "version": "0.31.3",
4
4
  "private": true,
5
5
  "description": "BriefLoop local desktop workspace",
6
6
  "author": "Stahl-G",
@@ -1,4 +1,4 @@
1
- # 直写模式(试用)
1
+ # 自主直写(默认)
2
2
 
3
3
  `completion_mode=direct`:一个作者在同一上下文中检索、阅读并写完整份报告;保存后再做原文定位、确定性检查、独立评价/审阅和最多一次自动修订。
4
4
 
@@ -16,10 +16,21 @@
16
16
  ## 做了什么
17
17
 
18
18
  - 写作回合带计量工具:`web-search`、`add-url`、`read-source`,共享本任务预算;来源经 `add-url` 自动登记,正文用 `[@source_id]` 引用。
19
- - 提示只给任务、完成标准思路、引用和日期规则、篇幅空间,不加载完整研究协议、Scout 合同或写前对照。
19
+ - 作者只负责研究判断、可读正文、重要日期与来源标记。抓取时间、引用定位和结构化时间记录由保存后的依据补全承担;作者已生成的时间文件也会接收入库。
20
20
  - 保存后复用快速稿的后台链路:只对作者实际引用的来源做原文定位,随后评价;与快速稿不同,保留独立审阅和一次自动修订。
21
21
  - 未登记的引用标记被移除并写入研究记录,不让虚构来源进入正文。
22
22
 
23
+ ## WikiSkill 与试写
24
+
25
+ 直写作者同时承担 Scout 的阅读和 Analyst 的写作,接收这两类角色绑定的方法内容一次,不加载整个 Wiki。
26
+ 显式 `skill_override` 优先于本报告已启用技能;值为 `null` 的基线不加载技能。
27
+ 比较前核对实际完成的作者消息与宿主的输出回执,确认候选方法已经送达;没有回执、方法未送达或角色不适用时保留原件并停止比较。
28
+ 恢复采用前再检查实际试写,旧的无送达证据结果不能被当作学习有效。
29
+ 送达只证明模型收到了输入,质量和是否落实仍由成对比较判断。
30
+
31
+ 学习试写仍装配证据和时间,但不排队做普通单稿评价或自动修订,唯一语义评价是既有成对比较。
32
+ Markdown 中文粗体标签(如 `**本周发生:**10月7日`)以富文档粗体保存,代码示例中的星号保留。
33
+
23
34
  ## 覆盖记录
24
35
 
25
36
  作者在正文后附一个 `briefloop-coverage` 代码块,逐题写明状态(已回答/部分/查过未找到/读取失败/未检查)、所用来源和查过的查询词或网址。系统把代码块从正文移除,再对照本任务的计量检索记录和来源表核对:对上的标为检索或抓取回执,对不上的标为“自述”;作者漏答的题补成“未检查”。这只说明查了什么,不是事实核验。任务卡在没有目标契约时显示这份记录。
@@ -30,5 +41,6 @@
30
41
 
31
42
  ## 边界
32
43
 
33
- - 支持 Codex、OpenCode、bridge 和内置引擎(作者回合挂 `web-search`/`add-url`/`read-source` 等计量工具,使用直写专用系统提示);pi 宿主暂不支持。
34
- - 不派 Scout。现有标准、快速流程不变,可随时选回。是否成为默认,需在冻结材料上与纯 agent 基线及标准流程再比较,并验证较小模型。
44
+ - 支持 Codex、OpenCode、bridge 和内置引擎(作者回合挂 `web-search`/`add-url`/`read-source` 等计量工具,使用直写专用系统提示);外部 pi 宿主暂不支持直写,其未指定方式的新报告沿用标准流程;内置 BriefLoop Agent 仍默认直写。
45
+ - 新报告默认自主直写,不派 Scout;普通入口只需填写任务与来源。标准、快速流程保留在高级选项,显式 API/CLI 请求继续尊重。旧任务及旧定时配置缺省执行方式仍按标准流程恢复。
46
+ - 新请求未指定生成方式时,实时连接器资料、企业内部报告、独立风格参考与行业季报沿用既有标准流程,保留连接器授权、企业维护、风格读取及状态变化表能力;显式直写带实时连接器或风格参考时明确拒绝。现有实验支持本次默认选择,尚未验证所有模型、主题和报告类型。
@@ -0,0 +1,25 @@
1
+ # BriefLoop 0.31.1
2
+
3
+ 本页说明本轮变更;渠道发布与安装状态以正式发行清单为准。
4
+
5
+ ## 主要变化
6
+
7
+ **新报告默认自主直写。** 同一作者在同一上下文中完成研究与成稿,保存后继续补充依据、评价和修订。普通入口收起生成方式选择;标准流程在高级选项中提供,未指定生成方式的企业内部报告、独立风格参考、行业季报和外部 Pi 自动沿用其既有标准流程。
8
+
9
+ **少一些声明,多写清事实。** 报告作者把核查状态写成有依据的事实,减少面向审阅者的声明、过程叙述和重复免责。影响判断的证据缺口、范围与条件仍保留。这项写作改动来自 #920。
10
+
11
+ **直写收到实际选用的经验。** 修复直写模式未把已选 WikiSkill 送达作者的问题。任务保存选用方法与宿主实际输入的绑定;学习比较和采用前核对送达证据,缺少证据时保留候选并拒绝采用。比较使用同一冻结作者代码。送达核对不代表作者已遵循方法或报告质量已经提升。见 [直写模式](direct-mode.md)。
12
+
13
+ **保存正文与日期依据。** 直写稿件保存保留正文粗体与作者提供的日期依据。证据补充沿用已保存日期信息,来源抓取日期从来源记录取得;缺少的字段保持空缺。
14
+
15
+ **内置引擎更新。** BriefLoop Agent 使用 Pi 1.1.0,保留既有角色工具隔离、会话恢复、取消、上下文压缩和图片处理。长子任务期间的隐式缓存预热保持关闭。本轮升级没有开启 Pi 的 MCP、codemode 或个人技能加载。
16
+
17
+ **检索入口沿用冻结策略。** 修复宿主直写命令示例没有指定受控搜索 provider 的问题。作者按冻结首选与缺口补查规则检索,受控请求明确选择已允许渠道,共用本轮预算;入口不会自动改选其他搜索服务。
18
+
19
+ ## 升级说明
20
+
21
+ 本版延续现有工作区、稿件与会话数据,新报告默认自主直写;显式生成方式、历史任务和旧定时配置缺省标准流程的语义保持原样。更新前结束正在执行的任务,再按正式渠道更新;新任务使用本版写作和检索入口。已有稿件与冻结记录保持其原有版本和输入。
22
+
23
+ Mac、Windows、Python/CLI 从同一冻结提交复用一份后端 wheel。各平台实际启动、保存、导出和升级核验分别记录,正式发布状态以发行清单为准。
24
+
25
+ 详细变化见 [变更记录](../CHANGELOG.md)。
@@ -20,6 +20,10 @@ import {evidenceReviewDialogsUI} from './evidence-review-dialogs.js';
20
20
  import {renderVersionDiff} from './version-diff.js';
21
21
  import {DOMSerializer} from '@tiptap/pm/model';
22
22
  import {beginPanel,updatePanel} from './report-panels.js';
23
+ import {createReportStickyLayout} from './report-sticky-layout.js';
24
+ createReportStickyLayout({report:$('report'),header:document.querySelector('.report-topbar'),scroller:document.querySelector('main'),
25
+ panel:$('report-panel'),grid:$('report-grid'),column:document.querySelector('.report-main-column'),
26
+ documentArea:$('document-area'),jobs:$('jobs')});
23
27
  import {jobExecutionLabel,jobResumeLabel,createLocalFileProgress,isLocalFileJob} from './job-presentation.js';
24
28
  import {taskProgressCard} from './task-progress.js';
25
29
  import {researchProcessHTML,processDisclosureKey} from './research-process.js';
@@ -661,7 +665,7 @@ async function previewReportTime(){
661
665
  }
662
666
  for(const key of ['period','period_start','period_end','report_timezone'])$('requirements').elements[key].addEventListener('change',previewReportTime);
663
667
  $('requirements').onsubmit=e=>{e.preventDefault();
664
- action(async()=>{const f=new FormData(e.target),req=Object.fromEntries(f.entries());if(!['fast','fast_web'].includes(req.completion_mode)&&req.writing_mode==='internal_report'&&state.settings.company_context_enabled==null){$('company-choice-dialog').showModal();return}req.allow_web=f.has('allow_web');req.fact_check=f.has('fact_check');req.target_words=Number(req.target_words);req.max_words=Number(req.max_words);Object.assign(req,lengthControls.read(),quickReport.read());req.research_budget=readResearchBudget();reportFormDefaults.prepare(req);reportMarket.prepare(req);req.search_policy=readSearchPolicy();Object.assign(req,readWorkflowChoice());req.reference_source_ids=[...referenceSelected];req.template_id=req.template_id||null;req.sections=readTemplateSections();req.key_questions=(req.key_questions_text||'').split('\n').map(x=>x.trim()).filter(Boolean);delete req.key_questions_text;req.manual_sections=(req.manual_sections_text||'').split('\n').map(x=>x.trim()).filter(Boolean);for(const title of req.manual_sections){const found=req.sections.find(s=>s.title===title);if(found){found.mode='manual';found.placeholder='待填充'}}delete req.manual_sections_text;preserveWritingPreferences(req,state.requirements,writingPreferencesOverride);if(!req.reader_id)delete req.reader_id;req.raw_input=req.objective;delete req.runtime_model;delete req.runtime_effort;await saveModel();if(current)await savedVersion();const connector_selection=reportMcpSelection.selection();const job=await api('generate',{...(connector_selection?{connector_selection}:{}),requirements:req,session_id:chat.id||undefined,source_ids:[...selected].filter(id=>!req.reference_source_ids.includes(id))});nextReport.clear();showPendingReport(parse(job.payload).run_id);page('report');notice('任务已排队,后台会生成简报')})};
668
+ action(async()=>{const f=new FormData(e.target),req=Object.fromEntries(f.entries());if((!req.completion_mode||req.completion_mode==='standard')&&req.writing_mode==='internal_report'&&state.settings.company_context_enabled==null){$('company-choice-dialog').showModal();return}req.allow_web=f.has('allow_web');req.fact_check=f.has('fact_check');req.target_words=Number(req.target_words);req.max_words=Number(req.max_words);Object.assign(req,lengthControls.read(),quickReport.read());req.research_budget=readResearchBudget();reportFormDefaults.prepare(req);reportMarket.prepare(req);req.search_policy=readSearchPolicy();Object.assign(req,readWorkflowChoice());req.reference_source_ids=[...referenceSelected];req.template_id=req.template_id||null;req.sections=readTemplateSections();req.key_questions=(req.key_questions_text||'').split('\n').map(x=>x.trim()).filter(Boolean);delete req.key_questions_text;req.manual_sections=(req.manual_sections_text||'').split('\n').map(x=>x.trim()).filter(Boolean);for(const title of req.manual_sections){const found=req.sections.find(s=>s.title===title);if(found){found.mode='manual';found.placeholder='待填充'}}delete req.manual_sections_text;preserveWritingPreferences(req,state.requirements,writingPreferencesOverride);if(!req.reader_id)delete req.reader_id;req.raw_input=req.objective;delete req.runtime_model;delete req.runtime_effort;await saveModel();if(current)await savedVersion();const connector_selection=reportMcpSelection.selection();const job=await api('generate',{...(connector_selection?{connector_selection}:{}),requirements:req,session_id:chat.id||undefined,source_ids:[...selected].filter(id=>!req.reference_source_ids.includes(id))});nextReport.clear();showPendingReport(parse(job.payload).run_id);page('report');notice('任务已排队,后台会生成简报')})};
665
669
  $('upload').onchange=e=>action(async()=>{preflightSources(e.target.files,getUploadLimits());for(const f of e.target.files){const s=await uploadSource(f);if(s.status==='ready')selected.add(s.id)}e.target.value=''},'来源已保存');
666
670
  $('add-url').onclick=()=>action(async()=>{const s=await api('source-url',{url:$('source-url').value});if(s.status==='ready')selected.add(s.id);$('source-url').value='';notice(s.status==='ready'?'网页已读取':'来源已保存,但读取失败:'+s.error,s.status!=='ready')});
667
671
  $('rescore').onclick=()=>action(async()=>{await savedVersion();await api('assess',{version_id:current.id,session_id:chat.id||undefined})},'已提交评分');
@@ -4,7 +4,7 @@ export function createComposerOptions({$,getChat,getState,availability,rememberD
4
4
  let panel=null,root=null;
5
5
  function read(){
6
6
  const saved=getChat().reportOptions||{},state=getState();
7
- return {completion_mode:saved.completion_mode||'standard',research_tier:saved.research_tier||state?.settings?.research_tier||'standard',research_strategy:saved.research_strategy||'guided',fact_check:saved.fact_check??!!state?.settings?.fact_checker};
7
+ return {completion_mode:saved.completion_mode||'',research_tier:saved.research_tier||state?.settings?.research_tier||'standard',research_strategy:saved.research_strategy||'guided',fact_check:saved.fact_check??!!state?.settings?.fact_checker};
8
8
  }
9
9
  function sync(){
10
10
  if(!root||!getState()?.settings)return;
@@ -12,16 +12,16 @@ export function createComposerOptions({$,getChat,getState,availability,rememberD
12
12
  root.querySelectorAll('[data-report-source]').forEach(button=>button.setAttribute('aria-pressed',String((button.dataset.reportSource==='web')===web.checked)));
13
13
  root.querySelector('[data-completion]').value=choice.completion_mode;
14
14
  root.querySelector('[data-research-tier]').value=choice.research_tier;
15
- const strategy=root.querySelector('[data-research-strategy]');strategy.value=choice.research_strategy;strategy.disabled=['fast','direct'].includes(choice.completion_mode);
15
+ const strategy=root.querySelector('[data-research-strategy]');strategy.value=choice.research_strategy;strategy.disabled=!choice.completion_mode||['fast','direct'].includes(choice.completion_mode);
16
16
  const fact=root.querySelector('[data-report-fact]');fact.checked=choice.fact_check&&allowed.enabled;fact.disabled=!allowed.enabled;
17
17
  const note=root.querySelector('[data-fact-link]');note.hidden=allowed.enabled;note.textContent=allowed.target==='standard'?'标准模式可开启':allowed.target==='review'?'选择审阅连接':allowed.target==='network'?'配置联网核查':'查看核查设置';note.title=allowed.reason||'';
18
- root.querySelector('[data-report-mode-note]').textContent=choice.completion_mode==='fast'?'先保存可编辑初稿,再补充依据与评价。':choice.completion_mode==='direct'?'一个作者在同一上下文中检索和写作,保存后再定位依据、独立评价和修订。':'按研究、写作和检查流程完成报告。';
18
+ root.querySelector('[data-report-mode-note]').textContent=choice.completion_mode==='fast'?'先保存可编辑初稿,再补充依据与评价。':!choice.completion_mode||choice.completion_mode==='direct'?'一个作者在同一上下文中检索和写作,保存后再定位依据、独立评价和修订。':'按研究、写作和检查流程完成报告。';
19
19
  }
20
20
  function instruction(){
21
21
  const choice=read();choice.fact_check=choice.completion_mode!=='fast'&&choice.fact_check&&availability().enabled;
22
22
  // Fast web is a separate product mode; existing material mode never silently searches.
23
23
  if(choice.completion_mode==='fast'&&$('chat-allow-web').checked)choice.completion_mode='fast_web';
24
- return `\n\n本轮报告选项(仅当用户要求生成报告时使用,不因此自动生成):completion_mode=${choice.completion_mode},research_tier=${choice.research_tier},research_strategy=${choice.research_strategy},fact_check=${choice.fact_check}。生成时传入 requirements;用户正文另有明确选择则按正文。`;
24
+ return `\n\n本轮报告选项(仅当用户要求生成报告时使用,不因此自动生成):${choice.completion_mode?`completion_mode=${choice.completion_mode},`:''}research_tier=${choice.research_tier},research_strategy=${choice.research_strategy},fact_check=${choice.fact_check}。生成时传入 requirements;用户正文另有明确选择则按正文。`;
25
25
  }
26
26
  function mount(target){
27
27
  panel=target;panel.classList.add('composer-research-panel');$('composer-params').textContent='研究选项';
@@ -33,7 +33,7 @@ export function createComposerOptions({$,getChat,getState,availability,rememberD
33
33
  if(runtimeGrid)carriers.append(runtimeGrid);$('chat-form').append(carriers);
34
34
  const permission=$('chat-permissions-open');if(permission)$('composer-params').parentElement.before(permission);
35
35
  root=doc.createElement('section');root.className='composer-report-settings';
36
- root.innerHTML='<h3>本次报告</h3><div class="composer-report-field"><span>来源范围</span><div class="composer-choice-group"><button type="button" data-report-source="existing">已有来源</button><button type="button" data-report-source="web">允许补搜</button></div></div><label class="composer-report-field"><span>生成方式</span><select data-completion aria-label="本次报告生成方式"><option value="fast">快速</option><option value="standard">标准</option><option value="direct">直写(试用)</option></select></label><p class="help" data-report-mode-note></p><label class="composer-report-field"><span>研究方法</span><select data-research-strategy aria-label="本次报告研究方法"><option value="guided">分轮研究</option><option value="goal_driven">按目标补证(试用)</option></select></label><p class="help">按目标补证由重要问题和证据缺口决定下一步;预算与权限不变。用于标准生成,尚未证明质量优于分轮研究。</p><details class="composer-report-advanced"><summary>高级选项</summary><label class="composer-report-field"><span>研究深度</span><select data-research-tier aria-label="本次报告研究深度"><option value="quick">快速</option><option value="standard">标准</option><option value="deep">深入</option></select></label><div class="composer-report-fact"><label><input type="checkbox" data-report-fact>事实核查</label><button type="button" class="subtle-button" data-fact-link></button></div></details><p class="composer-report-scope">仅用于本次报告,不改动工作区默认设置。</p>';
36
+ root.innerHTML='<h3>本次报告</h3><div class="composer-report-field"><span>来源范围</span><div class="composer-choice-group"><button type="button" data-report-source="existing">已有来源</button><button type="button" data-report-source="web">允许补搜</button></div></div><p class="help">BriefLoop 自主研究并成稿,保存后继续核查。</p><details class="composer-report-advanced"><summary>高级选项</summary><label class="composer-report-field"><span>生成方式</span><select data-completion aria-label="本次报告生成方式"><option value="fast">快速</option><option value="standard">标准</option><option value="">自主成稿(默认)</option><option value="direct">自主直写</option></select></label><p class="help" data-report-mode-note></p><label class="composer-report-field"><span>研究方法</span><select data-research-strategy aria-label="本次报告研究方法"><option value="guided">分轮研究</option><option value="goal_driven">按目标补证(试用)</option></select></label><p class="help">按目标补证由重要问题和证据缺口决定下一步;预算与权限不变。用于标准生成,尚未证明质量优于分轮研究。</p><label class="composer-report-field"><span>研究深度</span><select data-research-tier aria-label="本次报告研究深度"><option value="quick">快速</option><option value="standard">标准</option><option value="deep">深入</option></select></label><div class="composer-report-fact"><label><input type="checkbox" data-report-fact>事实核查</label><button type="button" class="subtle-button" data-fact-link></button></div></details><p class="composer-report-scope">仅用于本次报告,不改动工作区默认设置。</p>';
37
37
  panel.append(root);if(actions)root.append(actions);
38
38
  root.querySelectorAll('[data-report-source]').forEach(button=>{button.onclick=()=>{webChange(button.dataset.reportSource==='web');sync()}});
39
39
  root.querySelector('[data-completion]').onchange=event=>change('completion_mode',event.target.value);
@@ -28,7 +28,7 @@ export function nextReportUI({$,api,savedVersion,getCurrent,applyRequirements,cl
28
28
  }
29
29
  if(openConversation){await openConversation(data);return}
30
30
  contract=candidate;
31
- set('completion_mode','standard');
31
+ set('completion_mode','');
32
32
  set('template_id',contract.template_id||'');
33
33
  applyRequirements(JSON.stringify(contract));
34
34
  for(const key of ['organization','industry','report_date','reader_id','previous_report_version_id','previous_report_hash'])set(key,contract[key]);
@@ -7,6 +7,7 @@ export function createQuickReport({$,api,action,notice,savedVersion,getCurrent,e
7
7
  let ticket=0,busy=false;
8
8
  function sync(){
9
9
  const mode=$('completion-mode')?.value,enabled=['draft_first','fast','fast_web'].includes(mode),fast=['fast','fast_web'].includes(mode);
10
+ if($('research-strategy'))$('research-strategy').disabled=!mode||mode==='direct';
10
11
  if($('draft-target-label'))$('draft-target-label').hidden=!enabled;
11
12
  if($('draft-target'))$('draft-target').disabled=!enabled;
12
13
  for(const node of $('requirements')?.querySelectorAll?.('[name="allow_web"], [name="fact_check"], [name="research_tier"], [name="research_strategy"], #auto-revision, #company-mode')||[]){
@@ -30,6 +31,8 @@ export function createQuickReport({$,api,action,notice,savedVersion,getCurrent,e
30
31
  ?'一轮聚焦检索,最多 3 次搜索、读取 6 篇原文,随后直接出稿。无需先上传材料;可在搜索设置选择渠道。保存后在后台补依据和评价,不自动改写正文;十分钟是目标,非保证或截止。'
31
32
  :mode==='fast'
32
33
  ?'已有文本材料直接出稿,保存后自动在后台补充依据和评价;可立即编辑、下载。此模式不联网补搜、不维护企业背景、不自动改写正文。材料较多时可能需要更久,不保证固定时限。'
34
+ :!mode||mode==='direct'
35
+ ?'BriefLoop 在同一上下文中完成研究与写作;稿件保存后继续补充依据、独立评价和修订。'
33
36
  :'完整流程按所选研究深度检索、写作和检查。先交研究初稿的旧任务仍可手动继续完整检查。';
34
37
  if(fast&&$('completion-mode-help')&&!GUARDED_FAST_BACKENDS.includes(getBackend()))$('completion-mode-help').textContent+=' 当前执行引擎的自带工具无法由 BriefLoop 关闭:仍可出稿,任务记录会写明写作期间的工具使用,找不到原文依据的结论会单独列出。';
35
38
  if(fast&&$('review-capability-note'))$('review-capability-note').hidden=true;
@@ -44,7 +47,7 @@ export function createQuickReport({$,api,action,notice,savedVersion,getCurrent,e
44
47
  const mode=$('completion-mode')?.value;
45
48
  return ['draft_first','fast','fast_web'].includes(mode)
46
49
  ?{completion_mode:mode,target_minutes:Number($('draft-target').value),...(['fast','fast_web'].includes(mode)?{research_tier:'quick',allow_web:mode==='fast_web',fact_check:false}:{})}
47
- :{completion_mode:'standard'};
50
+ :mode?{completion_mode:mode}:{};
48
51
  }
49
52
  async function render(){
50
53
  sync();
@@ -0,0 +1,33 @@
1
+ // The report header wraps as the title, actions and viewport change.
2
+ // Keep the rail below its actual height and let the pane use the remaining viewport.
3
+ export function createReportStickyLayout({report,header,scroller,panel,grid,column,documentArea,jobs,window:win=globalThis.window,
4
+ ResizeObserver:Observer=globalThis.ResizeObserver,MutationObserver:VisibilityObserver=globalThis.MutationObserver}){
5
+ if(!report||!header||!Observer)return;
6
+ const originalParent=jobs?.parentNode;
7
+ // A sticky grid item is bounded by its row. Include trailing jobs in the
8
+ // document column so they cannot push the rail above the report header.
9
+ // Keep the existing full-width jobs outside hidden/outline and narrow layouts.
10
+ const placeJobs=()=>{
11
+ if(!jobs||!originalParent||!column||!grid||!documentArea||!panel)return;
12
+ const sideBySide=!grid.hidden&&!documentArea.hidden&&win.getComputedStyle(panel).position==='sticky';
13
+ const target=sideBySide?column:originalParent;
14
+ if(jobs.parentNode!==target)target.append(jobs);
15
+ };
16
+ const update=()=>{
17
+ placeJobs();
18
+ const height=header.getBoundingClientRect().height;
19
+ if(height>0)report.style.setProperty('--report-header-height',`${Math.ceil(height)}px`);
20
+ if(scroller){
21
+ const style=win.getComputedStyle(scroller);
22
+ const available=scroller.clientHeight-parseFloat(style.paddingTop)-parseFloat(style.paddingBottom);
23
+ if(available>0)report.style.setProperty('--report-viewport-height',`${Math.floor(available)}px`);
24
+ }
25
+ };
26
+ const observer=new Observer(update);
27
+ observer.observe(header);
28
+ if(scroller)observer.observe(scroller);
29
+ const visibility=VisibilityObserver?new VisibilityObserver(update):null;
30
+ for(const element of [grid,documentArea])if(element)visibility?.observe(element,{attributes:true,attributeFilter:['hidden']});
31
+ update();
32
+ return {disconnect:()=>{observer.disconnect();visibility?.disconnect()}};
33
+ }
@@ -14,7 +14,8 @@ export function scheduleUI({api,getState,refresh,notice,openReport}){ const disp
14
14
  }
15
15
  function open(id){
16
16
  const state=getState(),row=(state.schedules||[]).find(s=>s.id===id);editing=row||null;
17
- requirements=structuredClone(row?.config.requirements||state.requirements||{});
17
+ requirements=structuredClone(row?.config.requirements||{...state.requirements,completion_mode:undefined});
18
+ if(row)requirements.completion_mode??='standard';
18
19
  const config=row?.config||{},later=new Date(Date.now()+3600000);later.setSeconds(0,0);
19
20
  const local=new Date(later.getTime()-later.getTimezoneOffset()*60000).toISOString().slice(0,16);
20
21
  $('schedule-name').value=row?.name||requirements.title||'';$('schedule-title').value=requirements.title||'';$('schedule-objective').value=requirements.objective||'';
@@ -24,7 +25,7 @@ export function scheduleUI({api,getState,refresh,notice,openReport}){ const disp
24
25
  $('schedule-preview').textContent='';$('schedule-error').textContent='';custom();$('schedule-dialog').showModal();
25
26
  }
26
27
  function custom(){$('schedule-custom').hidden=$('schedule-frequency').value!=='custom';}
27
- function body(){return {id:editing?.id,name:$('schedule-name').value,enabled:editing?.enabled??true,config:{frequency:$('schedule-frequency').value,start:$('schedule-start').value,timezone:$('schedule-timezone').value,every:Number($('schedule-every').value),unit:$('schedule-unit').value,requirements:{...requirements,title:$('schedule-title').value,objective:$('schedule-objective').value,allow_web:$('schedule-web').checked},source_ids:[...$('schedule-sources').querySelectorAll('input:checked')].map(n=>n.value)}};}
28
+ function body(){return {id:editing?.id,name:$('schedule-name').value,enabled:editing?.enabled??true,config:{automatic_completion_mode:editing?!!editing.config.automatic_completion_mode:!requirements.completion_mode,frequency:$('schedule-frequency').value,start:$('schedule-start').value,timezone:$('schedule-timezone').value,every:Number($('schedule-every').value),unit:$('schedule-unit').value,requirements:{...requirements,title:$('schedule-title').value,objective:$('schedule-objective').value,allow_web:$('schedule-web').checked},source_ids:[...$('schedule-sources').querySelectorAll('input:checked')].map(n=>n.value)}};}
28
29
  $('schedule-new').onclick=()=>open();$('schedule-cancel').onclick=()=>$('schedule-dialog').close();$('schedule-frequency').onchange=custom;
29
30
  $('schedule-preview-button').onclick=async()=>{try{const data=body(),result=await api('schedules/preview',data);$('schedule-preview').textContent='下次执行:'+display(result.next_at,data.config.timezone);$('schedule-error').textContent='';}catch(e){$('schedule-error').textContent=e.message;}};
30
31
  $('schedule-form').onsubmit=async e=>{e.preventDefault();const submit=e.submitter;submit.disabled=true;try{await api('schedules/save',body());$('schedule-dialog').close();await refresh();notice('定时报告已保存');}catch(err){$('schedule-error').textContent=err.message;}finally{submit.disabled=false;}};
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "briefloop"
7
- version = "0.31.0"
7
+ version = "0.31.3"
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"
@@ -104,11 +104,21 @@ def check(args):
104
104
  if os.name != 'nt':
105
105
  raise ValueError('Windows EXE version must be inspected on Windows')
106
106
  exe = args.windows_app.resolve()
107
- # Literal path and no executable invocation: inspect PE version metadata.
107
+ # PE metadata strips prerelease qualifiers; read the packaged JSON as well for candidates.
108
108
  literal = str(exe).replace("'", "''")
109
109
  command = f"[Console]::OutputEncoding=[Text.Encoding]::UTF8; (Get-Item -LiteralPath '{literal}').VersionInfo.ProductVersion"
110
110
  version = subprocess.check_output(['powershell.exe', '-NoProfile', '-Command', command], text=True, encoding='utf-8').strip()
111
111
  raw_windows_version = version
112
+ if expected != re.match(r'\d+\.\d+\.\d+', expected)[0]:
113
+ env = {key: value for key, value in os.environ.items() if key not in ('NODE_OPTIONS', 'NODE_PATH')}
114
+ env['ELECTRON_RUN_AS_NODE'] = '1'
115
+ script = 'process.stdout.write(JSON.stringify(JSON.parse(require("node:fs").readFileSync(process.argv[1],"utf8")).version))'
116
+ package_path = exe.parent / 'resources' / 'app.asar' / 'package.json'
117
+ packaged = json.loads(subprocess.check_output([str(exe), '-e', script, str(package_path)],
118
+ env=env, text=True, stderr=subprocess.PIPE, timeout=15).strip())
119
+ if not isinstance(packaged, str) or normalize_windows_version(version) != packaged.split('-')[0]:
120
+ raise ValueError('Windows PE identity differs from the packaged application version')
121
+ version = packaged
112
122
  return {'app': normalize_windows_version(version), **backend_versions(exe.parent / 'resources', release_hash)}
113
123
  capture('windows', windows)
114
124
  if raw_windows_version is not None:results['windows']['raw_product_version']=raw_windows_version
@@ -0,0 +1 @@
1
+ __version__ = "0.31.3"
@@ -19,13 +19,13 @@ WRITING_GUIDE = '''你是本报告的 Analyst,直接完成可读的中文报
19
19
  先读 input.json.task_context 的目的与证据导航,再读 writing.md、plan.json、research.json,按需要核对 source-index.json 中的原文。source-context.json 给出各来源的条件/更新候选行段与短逐字原文;先核对所用来源的这些原文,再写采用建议,必要时回读完整相关段落。它是导航,不是条件已满足的判断;truncated 或 omitted 表示尚未完整展示,无匹配仍须自行检查相关章节。
20
20
  本阶段不联网、不新增研究来源;研究摘要是线索,不代替原文。不同口径、预测与实际、期内与期后不能混写。
21
21
  结论须由所引段落支持;分析与行动建议可由你提出,但交代有依据的业务联系,不伪装成来源已经说过的话。
22
- 遵循读者用途、重点、篇幅和人工填写章节。正文直接面向读者,具体缺口和核查过程放 research_notes/gaps,不反复写免责声明。
22
+ 遵循读者用途、重点、篇幅和人工填写章节。正文直接面向读者,状态与限制按 writing.md 的写法写在受影响的句子里;具体缺口和核查过程放 research_notes/gaps。
23
23
  先按用户原话安排重点章节;结构化 period/辅助指标与原话或原件冲突时,回查后在 research_notes 记录依据,不静默照抄,也不改写冻结输入。
24
24
  政策的条件、例外与生效时间分开核对;同表比较对齐期间、单位、分母和实际/预测状态。摘要中的压缩表述仍须完整保留决定结论的条件。
25
- 复合句中的事实分别挂到真正支持它的来源;引用存在不等于支持该句。数值与事件同时发生不足以确认因果,结论本身保留适当强度,不靠末尾免责声明抵消。
25
+ 复合句中的事实分别挂到真正支持它的来源。数值与事件同时发生只说明相关;因果判断要有机制或原文依据,结论强度与证据相称。
26
26
  重要数字用 number_bindings 绑定原始 value/unit、label/entity/period、source_id/locator、逐字 source_excerpt,以及正文唯一 report_quote 和其中的 number_text;匹配只证明数值定位,含义仍须核对。
27
27
  数字定位用 line 12-14、page 3 或证据定位 JSON,不用章节名称代替定位;源摘录必须逐字来自该位置。单独查看 document-guide.json 的数字绑定规则,不把不支持的单位或未定位结果写成核验成功。
28
- 先按重点分配篇幅,标题、表格和摘要都计入正文。分章保存回执给出累计长度;默认 soft 中 target_words/max_words 都是建议,完整且切题的必要内容可以直接提交,不为消除超出提示反复改稿。只有 length_mode=strict 且有用户要求来源时才按明确上限检查;冲突时保留事实、引用和采用条件并说明差距。低于目标也不为凑字数扩写。提交前核对具体重复、离题及引用定位问题,不反复整篇重抄。修订时逐项处理 input.feedback,保留有效内容、必要条件及未解决问题,不仅添加免责段。
28
+ 先按重点分配篇幅,标题、表格和摘要都计入正文。分章保存回执给出累计长度;默认 soft 中 target_words/max_words 都是建议,完整且切题的必要内容可以直接提交,不为消除超出提示反复改稿。只有 length_mode=strict 且有用户要求来源时才按明确上限检查;冲突时保留事实、引用和采用条件并说明差距。低于目标也不为凑字数扩写。提交前核对具体重复、离题及引用定位问题,不反复整篇重抄。修订时逐项处理 input.feedback,改正文本身;保留有效内容、必要条件及未解决问题。
29
29
  输出完整 BriefDraft,使用 editor_document 富文档正文,结构见 draft.schema.json 与 document-guide.json。
30
30
  配色遵循 input.json.chart_presentation:涨跌色只用于真实变化数字、箭头和变化系列;营收、余额、利润率等任意正负值不自动着色。已登记图像保持原样,改变图像配色须重新生成并登记。
31
31
  图表只复用任务包中实际登记的 figure_id;需要比较表时复用 document-guide.json 的 table_example:表头和单元格都先放 paragraph,再放 text/citation。表内事实的引用放在相应单元格,不能只登记在 draft.citations 而正文不标引用。结构化指标可交给 prepare_report_data 计算,最终 report_data 保留原始 records。
@@ -208,8 +208,10 @@ def workspace_action(store, request):
208
208
  from .external_client import Client
209
209
  return Client(store.root).stop_job(job_id)
210
210
  if action=='generate':
211
+ if 'connector_selection' in request:
212
+ raise ValueError('聊天生成工具暂不接纳实时连接器选择;请在新报告入口选择连接器,或先导入材料后用 source_ids 生成。')
211
213
  from .next_report import generation_requirements
212
- requirements=Requirements.model_validate(generation_requirements(store,request['requirements'],_notify_owner(request)))
214
+ raw_requirements=generation_requirements(store,request['requirements'],_notify_owner(request))
213
215
  source_ids=request.get('source_ids',[])
214
216
  if not isinstance(source_ids,list) or not all(isinstance(x,str) for x in source_ids):raise ValueError('source_ids 必须是来源 ID 数组')
215
217
  runtime_payload={}
@@ -223,6 +225,8 @@ def workspace_action(store, request):
223
225
  backend=validate_backend(backend)
224
226
  settings=Settings.model_validate({**store.settings(),**request['runtime'],'agent_backend':backend})
225
227
  runtime_payload={'runtime':runtime_fields(settings.model_dump(),backend),'agent_backend':backend}
228
+ backend=runtime_payload.get('agent_backend') or store.settings().get('agent_backend','codex')
229
+ requirements=Requirements.new_request(raw_requirements, backend=backend)
226
230
  run=store.create_run(requirements.model_dump(),source_ids,research_protocol="quality_v1",
227
231
  **({'agent_backend':runtime_payload['agent_backend']} if runtime_payload else {}))
228
232
  payload={'run_id':run['id'],**runtime_payload}
@@ -355,7 +359,7 @@ def chat_instructions(store, runtime, *, internal=False, allow_web=False, backen
355
359
  - {{"action":"templates"}}:读取可选模板。用户要求上传材料用作主模板时用 {{"action":"template_import","source_id":"DOCX来源ID"}} 启动一次准备;准备完成后 generate.requirements.template_id 选择具体版本。需要重新准备已有模板版式时,用 {{"action":"template_rebuild","template_id":"已有模板ID"}} 从保留原件创建新模板版本;原模板和已绑定稿件保持不变,新任务选择返回的新模板ID。
356
360
  - {{"action":"read_report","version_id":"稿件ID"}}:读取富文档 JSON、引用和已存正文的 length_stats;revise_document 回执也给出保存后的确定性计数。按 count/rule 核对原始要求、读者约定及当前反馈,不估算字数;over_limit 只比较结构化 max_words,不表示已满足全部篇幅要求。用户明确要求修改内容/章节/图表时,将修改后的 JSON 保存到工作区文件,再用 {{"action":"revise_document","base_version":"刚读取版本ID","document_file":"工作区内JSON绝对路径"}} 保存新版本,不覆盖用户并发编辑。可选 citations 完整替换引用列表(source_id/locator/excerpt,schema 见 capabilities),省略则保留;只修改引用也保存新版本,定位描述不表示已独立核验。
357
361
  - {{"action":"import_word_revision","base_version":"用户指定基础版本","source_id":"DOCX来源ID"}}:导入用户修改的 Word。返回 needs_alignment 时先核对原件和基础版本,向用户说明对齐问题;仅按用户明确选择提供 accept_unaligned=true。用户希望更新模板时另用 template_import 并提供 parent_id。
358
- - {{"action":"generate","requirements":{{"title":"标题","objective":"用户目的","audience":"读者","language":"zh|en","extent":"compact|balanced|detailed","research_tier":"quick|standard|deep","allow_web":{str(bool(allow_web)).lower()},"period":"时间范围"}},"source_ids":["真实来源ID"],"runtime":{runtime_json}}}:正式生成可在页面编辑的简报。language 是报告正文语言(默认 zh);用户要英文报告时写 en,不传 target_words 时篇幅按英文词数默认。research_strategy 是本轮研究方法:guided 沿用分轮建议,goal_driven 按重要问题和证据缺口选择下一步,不改变授权预算与最大轮数;只有用户选择时传入,默认 guided。research_tier 是研究深度档位(默认 standard):quick 单轮检索,deep 最多 4 轮迭代研究;按用户明确要求选,用户未提就不写该字段。scout_limit 是本报告最多可同时派发的 Scout 数(1–16),在提交前按信息量决定:一周左右约 4,月报约 8,跨多个行业或市场的大型报告可到 12–16;不写时系统按期间自动设定(月报 8,其余沿用工作区设置)。
362
+ - {{"action":"generate","requirements":{{"title":"标题","objective":"用户目的","audience":"读者","language":"zh|en","extent":"compact|balanced|detailed","research_tier":"quick|standard|deep","allow_web":{str(bool(allow_web)).lower()},"period":"时间范围"}},"source_ids":["真实来源ID"],"runtime":{runtime_json}}}:正式生成可在页面编辑的简报。language 是报告正文语言(默认 zh);用户要英文报告时写 en,不传 target_words 时篇幅按英文词数默认。默认由同一作者自主研究并成稿,保存后继续补充依据、评价和修订。独立风格参考与行业季报由系统采用其既有标准流程;保留参考与用途要求,不需用户另选生成方式。research_strategy 仅用于标准流程:guided 沿用分轮建议,goal_driven 按重要问题和证据缺口选择下一步,不改变授权预算与最大轮数;只有用户选择时传入,默认 guided。research_tier 是研究深度档位(默认 standard):quick 单轮检索,deep 最多 4 轮迭代研究;按用户明确要求选,用户未提就不写该字段。scout_limit 是本报告最多可同时派发的 Scout 数(1–16),在提交前按信息量决定:一周左右约 4,月报约 8,跨多个行业或市场的大型报告可到 12–16;不写时系统按期间自动设定(月报 8,其余沿用工作区设置)。
359
363
  联网完整报告的 fact_check 沿用工作区默认(新工作区开启);用户选择关闭时显式传 false,选择开启时传 true。离线或快速模式不自动开启,也不为核查偷偷开启联网。
360
364
  提交 generate 时,必须把本轮已经确认的 key_questions、writing_preferences、章节、期间和篇幅完整写进 requirements,不能只传标题摘要。用户给出的执行约束同样在提交前冻结:target_minutes 是软目标;hard_timeout_minutes=0 表示不设硬截止;research_budget 包含 search_requests、candidate_urls、source_pages;search_policy 沿用已授权设置。不得说“后台稍后配置”而遗漏已指定的额度。并行数要求写入 writing_preferences,供主 Agent 冻结研究计划时选择 structure.parallel;不改变共享预算。提交回执中的实际冻结值与用户要求不一致时明确说明,不宣称已应用。
361
365
  - {{"action":"stop_job","job_id":"真实任务ID"}}:用户要求停止任务时,先通过 inspect 确认具体任务,再停止该任务及其子任务,已保存稿件保留。用户要求“停掉旧任务再重新生成”时先取得停止回执,再提交新任务;停止失败时如实说明,不启动重复任务。目标不明确时先问,不猜 ID,不停止整个服务。以回执的实际 status 为准,已经完成的任务不会变成 cancelled。
@@ -187,12 +187,24 @@ binding commit together using Store.enqueue's host-only before_commit callback.
187
187
  Its payload records `connector_materials: true`, no credentials. Other creation
188
188
  paths retain the existing requirement for sources or allowed web search.
189
189
 
190
- The server attaches TaskMaterials to Worker. Around the main generation execute
191
- call only, `generation_access` writes a unique 0600 process capability file and
192
- adds a stdlib tool-client command and frozen selection to generation instructions.
193
- The token itself is absent from prompts and job payloads. On exit the file is
194
- removed and access invalidated; assessment/reviewer calls are outside this scope.
195
- The actual tool still rechecks the generating job and grant on every request.
190
+ A selected connector defaults to the standard generation path when the request
191
+ omits `completion_mode`. Explicit direct/fast modes with live selection are refused
192
+ before generation rather than ignoring the selection.
193
+
194
+ The server attaches TaskMaterials to Worker. Before compiling the author input,
195
+ `prepare_resources` reads only the explicitly selected resource URIs through the
196
+ frozen grant, budget and admission checks. Admitted sources enter the normal source
197
+ index and Analyst packet; acquisition receipts enter `input.json.connector_resources`.
198
+ Repeated preparation reuses earlier receipts without sending the request again,
199
+ including uncertain results. Parameterized tools are not executed by preparation.
200
+
201
+ Around the main generation execute call, `generation_access` exposes selected tools.
202
+ The native backend uses its trusted `connector_material` handler. CLI hosts use the
203
+ existing scoped client with a unique 0600 capability file, removed on exit. Offline
204
+ Codex cannot reach that live client and rejects tool selections before enqueue;
205
+ selected resources remain supported through controller preparation. Tokens stay
206
+ out of prompts and job payloads. Assessment/reviewer calls are outside this scope.
207
+ The actual tool rechecks the generating job and grant on every request.
196
208
  Worker cancellation revokes the grant before signalling the running transport,
197
209
  therefore in-flight material admission is rejected after cancellation. A cancelled
198
210
  MCP grant does not silently regain authority on resume; a new user-selected task
@@ -207,10 +219,12 @@ describe use. These states must not be conflated with fact verification. Source
207
219
  and citation views use the existing report UI; enabling a connector alone does
208
220
  not select or admit its materials.
209
221
 
210
- A real local application HTTP test creates a source-empty/offline task, invokes the
211
- same scoped CLI client provided to generation, checks source admission, then stops
212
- the task through Worker and verifies revocation. This proves the HTTP/tool path,
213
- not that a language model actually chooses the tool or produces a suitable report.
222
+ Real local HTTP/MCP behavior checks create a source-empty/offline task and verify
223
+ that the author reads the selected resource from its normal input, the Analyst
224
+ packet contains the same original, and the saved draft cites its source. Repeating
225
+ preparation causes only one MCP read. The unsupported offline tool combination is
226
+ refused without executing it. These checks use a deterministic author; an installed
227
+ model run is a separate validation of actual writing and citation use.
214
228
 
215
229
  This boundary constrains these application APIs; it is not OS isolation against a
216
230
  host process with arbitrary access to the workspace/database or browser session.
@@ -14,6 +14,16 @@ def generation_access(worker, job):
14
14
  if tasks is None or not tasks.has_binding(job['id']):
15
15
  yield ''
16
16
  return
17
+ grant = tasks.status(job['id'])['grant']['data']
18
+ selection = [{'connector_id': item['id'], 'tools': item['tools']} for item in grant['connectors'] if item['tools']]
19
+ if not selection:
20
+ yield ''
21
+ return
22
+ summary = '\n本轮用户已选择的连接器工具:' + json.dumps(selection, ensure_ascii=False) + '\n'
23
+ summary += '已接纳资源见本轮来源索引,未接纳资源见 input.json.connector_resources 的回执;工具由作者按需要确定参数。\n'
24
+ if json.loads(job['payload']).get('agent_backend', 'codex') == 'briefloop-native':
25
+ yield summary + '使用本阶段的 connector_material 工具调用所选工具;实际接纳的 source_id 才能读取和引用。\n'
26
+ return
17
27
  access = tasks.access(job['id'])
18
28
  token = access['access_token']
19
29
  directory = worker.store.root / '.connector-access'
@@ -24,12 +34,9 @@ def generation_access(worker, job):
24
34
  with os.fdopen(descriptor, 'w') as stream:
25
35
  json.dump({'access_token': token, 'url': worker.connector_tool_url}, stream)
26
36
  command = shlex.join([sys.executable, str(Path(__file__).with_name('task_client.py')), '--access-file', str(path), '--request', 'request.json'])
27
- grant = tasks.status(job['id'])['grant']['data']
28
- selection = [{'connector_id': item['id'], 'resources': item['resources'], 'tools': item['tools']} for item in grant['connectors']]
29
- yield '\n本轮用户已选择的连接器材料:' + json.dumps(selection, ensure_ascii=False) + '\n' + (
30
- '使用已授权材料工具读取这些来源;这不依赖是否允许网页搜索。写 JSON 请求到 request.json,再执行:' + command + '\n'
31
- '请求格式:{"action":"read","connector_id":"...","uri":"...","request_id":"稳定唯一ID"};'
32
- '或 {"action":"call","connector_id":"...","name":"...","arguments":{},"request_id":"稳定唯一ID"}。'
37
+ yield summary + (
38
+ '需要调用所选工具时,写 JSON 请求到 request.json,再执行:' + command + '\n'
39
+ '请求格式:{"action":"call","connector_id":"...","name":"...","arguments":{},"request_id":"稳定唯一ID"}。'
33
40
  '状态用 {"action":"status"},回执用 {"action":"receipt","receipt_id":"..."}。'
34
41
  '按已选目录和冻结预算执行;不要读取、复制或输出 access-file 内容。返回 admitted 后用 source_id 读取、引用和核查正文;'
35
42
  '未接纳的回执不能当事实。不要自行授权、提额、改宿主连接配置或把凭据传给审阅者。\n')