briefloop 0.20.1__tar.gz → 0.20.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 (629) hide show
  1. {briefloop-0.20.1 → briefloop-0.20.3}/CHANGELOG.md +32 -1
  2. {briefloop-0.20.1 → briefloop-0.20.3}/CONTRIBUTING.md +1 -1
  3. {briefloop-0.20.1 → briefloop-0.20.3}/PKG-INFO +23 -10
  4. {briefloop-0.20.1 → briefloop-0.20.3}/README.md +22 -9
  5. {briefloop-0.20.1 → briefloop-0.20.3}/THIRD_PARTY_NOTICES.md +5 -0
  6. briefloop-0.20.3/VERSION +1 -0
  7. {briefloop-0.20.1 → briefloop-0.20.3}/desktop/electron/package-lock.json +2 -2
  8. {briefloop-0.20.1 → briefloop-0.20.3}/desktop/electron/package.json +4 -2
  9. {briefloop-0.20.1 → briefloop-0.20.3}/docs/WorkBuddy/345/244/226/351/203/250/345/205/245/345/217/243.md +5 -1
  10. {briefloop-0.20.1 → briefloop-0.20.3}/docs/architecture.md +3 -1
  11. {briefloop-0.20.1 → briefloop-0.20.3}/docs/windows.md +4 -0
  12. {briefloop-0.20.1 → briefloop-0.20.3}/docs//344/275/277/347/224/250/346/214/207/345/215/227.md +5 -1
  13. {briefloop-0.20.1 → briefloop-0.20.3}/docs//346/212/245/345/221/212/347/274/226/350/276/221/344/270/216/346/250/241/346/235/277.md +1 -1
  14. {briefloop-0.20.1 → briefloop-0.20.3}/docs//346/241/214/351/235/242/345/256/211/350/243/205/344/270/216/346/233/264/346/226/260.md +4 -0
  15. briefloop-0.20.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 +15 -0
  16. {briefloop-0.20.1 → briefloop-0.20.3}/frontend/app.js +125 -37
  17. briefloop-0.20.3/frontend/polling.js +17 -0
  18. {briefloop-0.20.1 → briefloop-0.20.3}/frontend/rich-document.js +3 -1
  19. briefloop-0.20.3/frontend/runtime-cards.js +46 -0
  20. briefloop-0.20.3/frontend/uploads.js +16 -0
  21. {briefloop-0.20.1 → briefloop-0.20.3}/pyproject.toml +4 -1
  22. {briefloop-0.20.1 → briefloop-0.20.3}/runtime-bridge/README.md +22 -4
  23. briefloop-0.20.3/runtime-bridge/bridge.test.mjs +152 -0
  24. briefloop-0.20.3/runtime-bridge/main.ts +208 -0
  25. briefloop-0.20.3/runtime-bridge/pi.ts +63 -0
  26. {briefloop-0.20.1 → briefloop-0.20.3}/scripts/check_versions.py +22 -7
  27. briefloop-0.20.3/src/briefloop/__init__.py +1 -0
  28. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/app_server.py +27 -17
  29. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/backends/__init__.py +7 -1
  30. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/backends/opencode_server.py +1 -1
  31. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/bridge_harness.py +27 -6
  32. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/chat_dispatch.py +3 -2
  33. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/chat_execution.py +1 -0
  34. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/chat_store.py +8 -3
  35. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/company_context.py +7 -3
  36. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/conflicts.py +18 -7
  37. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/config.py +27 -4
  38. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/materials.py +4 -4
  39. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/runtime_tools.py +5 -3
  40. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/service.py +2 -0
  41. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/tasks.py +32 -12
  42. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/evidence.py +52 -9
  43. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/execution_records.py +10 -3
  44. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/export_jobs.py +26 -10
  45. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/exports.py +2 -1
  46. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/external_requests.py +11 -2
  47. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/figure_support.py +25 -0
  48. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/harness.py +118 -34
  49. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/learning.py +127 -24
  50. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/models.py +4 -1
  51. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/opencode_harness.py +177 -49
  52. briefloop-0.20.3/src/briefloop/parent_watch.py +55 -0
  53. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/platform_support.py +36 -5
  54. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/progress.py +11 -6
  55. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/projections.py +2 -2
  56. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/release.py +5 -1
  57. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/research_plan.py +74 -66
  58. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/review.py +6 -1
  59. briefloop-0.20.3/src/briefloop/rpc_writer.py +56 -0
  60. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/runtime.py +31 -7
  61. briefloop-0.20.3/src/briefloop/runtime_bridge.py +204 -0
  62. briefloop-0.20.3/src/briefloop/runtime_permissions.py +100 -0
  63. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/server.py +90 -33
  64. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/source_updates.py +3 -2
  65. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/static/app.js +97 -97
  66. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/static/index.html +6 -6
  67. briefloop-0.20.3/src/briefloop/static/runtime-aider.png +0 -0
  68. briefloop-0.20.3/src/briefloop/static/runtime-amr.svg +17 -0
  69. briefloop-0.20.3/src/briefloop/static/runtime-antigravity.svg +1 -0
  70. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/static/runtime-bridge.NOTICE.txt +11 -0
  71. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/static/runtime-bridge.mjs +339 -168
  72. briefloop-0.20.3/src/briefloop/static/runtime-claude.svg +1 -0
  73. briefloop-0.20.3/src/briefloop/static/runtime-codebuddy.svg +37 -0
  74. briefloop-0.20.3/src/briefloop/static/runtime-codex.svg +1 -0
  75. briefloop-0.20.3/src/briefloop/static/runtime-copilot.svg +1 -0
  76. briefloop-0.20.3/src/briefloop/static/runtime-cursor-agent.svg +1 -0
  77. briefloop-0.20.3/src/briefloop/static/runtime-deepseek.svg +1 -0
  78. briefloop-0.20.3/src/briefloop/static/runtime-devin.png +0 -0
  79. briefloop-0.20.3/src/briefloop/static/runtime-grok-build.svg +15 -0
  80. briefloop-0.20.3/src/briefloop/static/runtime-hermes.svg +1 -0
  81. briefloop-0.20.3/src/briefloop/static/runtime-kilo.svg +1 -0
  82. briefloop-0.20.3/src/briefloop/static/runtime-kimi.svg +1 -0
  83. briefloop-0.20.3/src/briefloop/static/runtime-kiro.svg +1 -0
  84. briefloop-0.20.3/src/briefloop/static/runtime-mimo.svg +1 -0
  85. briefloop-0.20.3/src/briefloop/static/runtime-opencode.svg +1 -0
  86. briefloop-0.20.3/src/briefloop/static/runtime-pi.svg +1 -0
  87. briefloop-0.20.3/src/briefloop/static/runtime-qoder.svg +1 -0
  88. briefloop-0.20.3/src/briefloop/static/runtime-qwen.svg +1 -0
  89. briefloop-0.20.3/src/briefloop/static/runtime-reasonix.svg +37 -0
  90. briefloop-0.20.3/src/briefloop/static/runtime-trae-cli.png +0 -0
  91. briefloop-0.20.3/src/briefloop/static/runtime-vibe.svg +1 -0
  92. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/static/style.css +32 -1
  93. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/store.py +60 -30
  94. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop.egg-info/PKG-INFO +23 -10
  95. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop.egg-info/SOURCES.txt +45 -0
  96. briefloop-0.20.3/src/wikiskill/feedback_loop.py +121 -0
  97. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/product.py +3 -3
  98. {briefloop-0.20.1 → briefloop-0.20.3}/tests/check_distribution.py +1 -1
  99. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_app_updates.mjs +11 -0
  100. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_chat_attachments.mjs +2 -0
  101. briefloop-0.20.3/tests/frontend_markdown_import.mjs +22 -0
  102. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_model_selection.mjs +5 -0
  103. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_open_brief_status.mjs +1 -1
  104. briefloop-0.20.3/tests/frontend_polling.mjs +22 -0
  105. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_report_chat_drawer.mjs +1 -0
  106. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_runtime_discovery.mjs +10 -4
  107. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_save_barrier.mjs +23 -0
  108. briefloop-0.20.3/tests/frontend_upload_limits.mjs +15 -0
  109. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_welcome_gate.mjs +14 -0
  110. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_chat_execution.py +13 -0
  111. briefloop-0.20.3/tests/test_codex_idle.py +63 -0
  112. briefloop-0.20.3/tests/test_connection_test_history.py +44 -0
  113. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_connector_tasks.py +64 -2
  114. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_connectors.py +10 -0
  115. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_cross_module_regressions.py +9 -0
  116. briefloop-0.20.3/tests/test_desktop_lifecycle.py +259 -0
  117. briefloop-0.20.3/tests/test_evidence_parse_failures.py +91 -0
  118. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_execution_records.py +22 -0
  119. briefloop-0.20.3/tests/test_export_admission.py +41 -0
  120. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_external_requests.py +4 -0
  121. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_figures.py +26 -0
  122. briefloop-0.20.3/tests/test_human_learning.py +100 -0
  123. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_industry_export.py +18 -0
  124. briefloop-0.20.3/tests/test_learning_integrity.py +112 -0
  125. briefloop-0.20.3/tests/test_opencode_idle.py +71 -0
  126. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_posix_process_tree.py +61 -0
  127. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_progress.py +36 -0
  128. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_reader_workflow.py +33 -0
  129. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_release.py +23 -0
  130. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_research_plan.py +55 -0
  131. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_review_learning.py +16 -14
  132. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_review_snapshot.py +38 -0
  133. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_review_visual_input.py +1 -1
  134. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_rich_document.py +16 -0
  135. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_runtime_bridge.py +14 -0
  136. briefloop-0.20.3/tests/test_runtime_bridge_idle.py +75 -0
  137. briefloop-0.20.3/tests/test_runtime_liveness.py +165 -0
  138. briefloop-0.20.3/tests/test_runtime_permissions.py +79 -0
  139. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_runtime_settlement.py +3 -2
  140. briefloop-0.20.3/tests/test_server_boundary.py +109 -0
  141. briefloop-0.20.3/tests/test_version_consistency.py +65 -0
  142. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_windows_connector_acl.py +3 -1
  143. briefloop-0.20.3/tests/test_worker_idle.py +43 -0
  144. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/NOTICE.md +11 -0
  145. briefloop-0.20.1/VERSION +0 -1
  146. briefloop-0.20.1/runtime-bridge/bridge.test.mjs +0 -74
  147. briefloop-0.20.1/runtime-bridge/main.ts +0 -126
  148. briefloop-0.20.1/src/briefloop/__init__.py +0 -1
  149. briefloop-0.20.1/src/briefloop/runtime_bridge.py +0 -121
  150. briefloop-0.20.1/src/wikiskill/feedback_loop.py +0 -57
  151. briefloop-0.20.1/tests/test_desktop_lifecycle.py +0 -123
  152. briefloop-0.20.1/tests/test_server_boundary.py +0 -53
  153. briefloop-0.20.1/tests/test_version_consistency.py +0 -32
  154. {briefloop-0.20.1 → briefloop-0.20.3}/.gitattributes +0 -0
  155. {briefloop-0.20.1 → briefloop-0.20.3}/KNOWN_ISSUES.md +0 -0
  156. {briefloop-0.20.1 → briefloop-0.20.3}/LICENSE +0 -0
  157. {briefloop-0.20.1 → briefloop-0.20.3}/MANIFEST.in +0 -0
  158. {briefloop-0.20.1 → briefloop-0.20.3}/SECURITY.md +0 -0
  159. {briefloop-0.20.1 → briefloop-0.20.3}/bootstrap.py +0 -0
  160. {briefloop-0.20.1 → briefloop-0.20.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
  161. {briefloop-0.20.1 → briefloop-0.20.3}/docs//344/274/232/350/256/256/347/272/252/350/246/201.md" +0 -0
  162. {briefloop-0.20.1 → briefloop-0.20.3}/docs//345/215/207/347/272/247/350/257/264/346/230/216.md" +0 -0
  163. {briefloop-0.20.1 → briefloop-0.20.3}/docs//345/233/276/350/241/250/344/270/216Excel.md" +0 -0
  164. {briefloop-0.20.1 → briefloop-0.20.3}/docs//345/244/232Runtime/344/270/216/346/250/241/345/236/213.md" +0 -0
  165. {briefloop-0.20.1 → briefloop-0.20.3}/docs//345/244/232/346/250/241/346/200/201/346/235/245/346/272/220.md" +0 -0
  166. {briefloop-0.20.1 → briefloop-0.20.3}/docs//345/257/271/350/257/235/345/256/277/344/270/273/345/210/207/346/215/242.md" +0 -0
  167. {briefloop-0.20.1 → briefloop-0.20.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
  168. {briefloop-0.20.1 → briefloop-0.20.3}/docs//350/241/214/344/270/232/346/212/245/345/221/212.md" +0 -0
  169. {briefloop-0.20.1 → briefloop-0.20.3}/docs//350/257/201/345/210/270/347/240/224/347/251/266.md" +0 -0
  170. {briefloop-0.20.1 → briefloop-0.20.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
  171. {briefloop-0.20.1 → briefloop-0.20.3}/examples/internal-weekly-report/README.md +0 -0
  172. {briefloop-0.20.1 → briefloop-0.20.3}/examples/internal-weekly-report/report.md +0 -0
  173. {briefloop-0.20.1 → briefloop-0.20.3}/examples/internal-weekly-report/source.txt +0 -0
  174. {briefloop-0.20.1 → briefloop-0.20.3}/examples/meeting-minutes/transcript.txt +0 -0
  175. {briefloop-0.20.1 → briefloop-0.20.3}/examples/stock-research/earnings-event.txt +0 -0
  176. {briefloop-0.20.1 → briefloop-0.20.3}/frontend/connectors.js +0 -0
  177. {briefloop-0.20.1 → briefloop-0.20.3}/frontend/mcp-selection.js +0 -0
  178. {briefloop-0.20.1 → briefloop-0.20.3}/frontend/notifications.js +0 -0
  179. {briefloop-0.20.1 → briefloop-0.20.3}/frontend/review-status.js +0 -0
  180. {briefloop-0.20.1 → briefloop-0.20.3}/package-lock.json +0 -0
  181. {briefloop-0.20.1 → briefloop-0.20.3}/package.json +0 -0
  182. {briefloop-0.20.1 → briefloop-0.20.3}/probes/mcp_m0/README.md +0 -0
  183. {briefloop-0.20.1 → briefloop-0.20.3}/probes/mcp_m0/probe.py +0 -0
  184. {briefloop-0.20.1 → briefloop-0.20.3}/probes/mcp_m0/requirements.txt +0 -0
  185. {briefloop-0.20.1 → briefloop-0.20.3}/probes/mcp_m0/server.py +0 -0
  186. {briefloop-0.20.1 → briefloop-0.20.3}/runtime-bridge/build.mjs +0 -0
  187. {briefloop-0.20.1 → briefloop-0.20.3}/runtime-bridge/catalog.json +0 -0
  188. {briefloop-0.20.1 → briefloop-0.20.3}/scripts/build_frontend.mjs +0 -0
  189. {briefloop-0.20.1 → briefloop-0.20.3}/scripts/build_frontend_licenses.mjs +0 -0
  190. {briefloop-0.20.1 → briefloop-0.20.3}/scripts/test_frontend.mjs +0 -0
  191. {briefloop-0.20.1 → briefloop-0.20.3}/setup.cfg +0 -0
  192. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/__main__.py +0 -0
  193. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/_entrypoint.py +0 -0
  194. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/agent_commands.py +0 -0
  195. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/audit_bundle.py +0 -0
  196. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/chat_tools.py +0 -0
  197. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/cli.py +0 -0
  198. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/MATERIALS.md +0 -0
  199. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/README.md +0 -0
  200. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/__init__.py +0 -0
  201. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/grants.py +0 -0
  202. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/receipts.py +0 -0
  203. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/runtime.py +0 -0
  204. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/stdio_supervisor.py +0 -0
  205. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/task_client.py +0 -0
  206. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/transport.py +0 -0
  207. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/connectors/windows_acl.py +0 -0
  208. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/default_fonts.py +0 -0
  209. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/deliverable_spec.py +0 -0
  210. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/delivery_checks.py +0 -0
  211. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/demo.py +0 -0
  212. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/document_export.py +0 -0
  213. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/document_model.py +0 -0
  214. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/document_workflows.py +0 -0
  215. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/external_client.py +0 -0
  216. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/fast_mode.py +0 -0
  217. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/figures.py +0 -0
  218. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/host_bins.py +0 -0
  219. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/industry_data.py +0 -0
  220. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/industry_export.py +0 -0
  221. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/interactive_runtime.py +0 -0
  222. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/length.py +0 -0
  223. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/media.py +0 -0
  224. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/notifications.py +0 -0
  225. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/process_host.py +0 -0
  226. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/reconciliation.py +0 -0
  227. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/report_profiles.py +0 -0
  228. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/report_tools.py +0 -0
  229. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/research_budget.py +0 -0
  230. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/review_learning.py +0 -0
  231. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/revision_policy.py +0 -0
  232. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/scout_tools.py +0 -0
  233. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/skill_assets/briefloop-external/SKILL.md +0 -0
  234. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/skill_assets/tavily/SKILL.md +0 -0
  235. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/skills.py +0 -0
  236. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/software_version.py +0 -0
  237. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/sources.py +0 -0
  238. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/static/frontend-licenses.txt +0 -0
  239. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/static/runtime-bridge.LICENSE.txt +0 -0
  240. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/task_notify.py +0 -0
  241. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/tavily.py +0 -0
  242. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t1.docx +0 -0
  243. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t1.spec.json +0 -0
  244. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t2.docx +0 -0
  245. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t2.spec.json +0 -0
  246. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t3.docx +0 -0
  247. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t3.spec.json +0 -0
  248. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t4.docx +0 -0
  249. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t4.spec.json +0 -0
  250. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t5.docx +0 -0
  251. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/academic-paper-zh-t5.spec.json +0 -0
  252. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t1.docx +0 -0
  253. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t1.spec.json +0 -0
  254. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t2.docx +0 -0
  255. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t2.spec.json +0 -0
  256. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t3.docx +0 -0
  257. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t3.spec.json +0 -0
  258. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t4.docx +0 -0
  259. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t4.spec.json +0 -0
  260. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t5.docx +0 -0
  261. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/annual-report-zh-t5.spec.json +0 -0
  262. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t1.docx +0 -0
  263. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t1.spec.json +0 -0
  264. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t2.docx +0 -0
  265. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t2.spec.json +0 -0
  266. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t3.docx +0 -0
  267. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t3.spec.json +0 -0
  268. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t4.docx +0 -0
  269. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t4.spec.json +0 -0
  270. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t5.docx +0 -0
  271. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/business-report-zh-t5.spec.json +0 -0
  272. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t1.docx +0 -0
  273. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t1.spec.json +0 -0
  274. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t2.docx +0 -0
  275. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t2.spec.json +0 -0
  276. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t3.docx +0 -0
  277. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t3.spec.json +0 -0
  278. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t4.docx +0 -0
  279. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t4.spec.json +0 -0
  280. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t5.docx +0 -0
  281. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/general-report-zh-t5.spec.json +0 -0
  282. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/government-doc-zh-t4.docx +0 -0
  283. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/government-doc-zh-t4.spec.json +0 -0
  284. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t1.docx +0 -0
  285. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t1.spec.json +0 -0
  286. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t2.docx +0 -0
  287. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t2.spec.json +0 -0
  288. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t3.docx +0 -0
  289. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t3.spec.json +0 -0
  290. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t4.docx +0 -0
  291. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t4.spec.json +0 -0
  292. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t5.docx +0 -0
  293. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/legal-contract-zh-t5.spec.json +0 -0
  294. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t1.docx +0 -0
  295. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t1.spec.json +0 -0
  296. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t2.docx +0 -0
  297. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t2.spec.json +0 -0
  298. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t3.docx +0 -0
  299. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t3.spec.json +0 -0
  300. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t4.docx +0 -0
  301. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t4.spec.json +0 -0
  302. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t5.docx +0 -0
  303. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/meeting-minutes-zh-t5.spec.json +0 -0
  304. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t1.docx +0 -0
  305. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t1.spec.json +0 -0
  306. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t2.docx +0 -0
  307. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t2.spec.json +0 -0
  308. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t3.docx +0 -0
  309. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t3.spec.json +0 -0
  310. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t4.docx +0 -0
  311. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t4.spec.json +0 -0
  312. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t5.docx +0 -0
  313. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/template_assets/stock-research-zh-t5.spec.json +0 -0
  314. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/templates.py +0 -0
  315. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/windows_process.py +0 -0
  316. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/word_import.py +0 -0
  317. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workbook_figures.py +0 -0
  318. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/business_report/evaluation.md +0 -0
  319. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/business_report/manifest.json +0 -0
  320. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/business_report/methods/decision_memo.md +0 -0
  321. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/business_report/methods/industry_periodic.md +0 -0
  322. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/business_report/methods/work_progress.md +0 -0
  323. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/business_report/planning.md +0 -0
  324. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/business_report/writing.md +0 -0
  325. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/general_report/evaluation.md +0 -0
  326. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/general_report/manifest.json +0 -0
  327. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/general_report/planning.md +0 -0
  328. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/general_report/writing.md +0 -0
  329. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/meeting_minutes/evaluation.md +0 -0
  330. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/meeting_minutes/manifest.json +0 -0
  331. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/meeting_minutes/planning.md +0 -0
  332. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/meeting_minutes/writing.md +0 -0
  333. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/stock_research/evaluation.md +0 -0
  334. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/stock_research/manifest.json +0 -0
  335. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/stock_research/methods/company_research.md +0 -0
  336. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/stock_research/methods/event_commentary.md +0 -0
  337. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/stock_research/methods/industry_tracking.md +0 -0
  338. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/stock_research/planning.md +0 -0
  339. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workflow_assets/stock_research/writing.md +0 -0
  340. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workspace_profile.py +0 -0
  341. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop/workspaces.py +0 -0
  342. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop.egg-info/dependency_links.txt +0 -0
  343. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop.egg-info/entry_points.txt +0 -0
  344. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop.egg-info/requires.txt +0 -0
  345. {briefloop-0.20.1 → briefloop-0.20.3}/src/briefloop.egg-info/top_level.txt +0 -0
  346. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/__init__.py +0 -0
  347. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/__main__.py +0 -0
  348. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/_licenses/LICENSE +0 -0
  349. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/_licenses/NOTICE.md +0 -0
  350. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/_licenses/third_party/acorn/LICENSE +0 -0
  351. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/_licenses/third_party/acorn/NOTICE.md +0 -0
  352. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/_licenses/third_party/officeqa/LICENSE-APACHE +0 -0
  353. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/_licenses/third_party/officeqa/NOTICE +0 -0
  354. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/alfworld/__init__.py +0 -0
  355. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/alfworld/act.sh +0 -0
  356. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/alfworld/rollout.py +0 -0
  357. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/alfworld/step.py +0 -0
  358. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/benchmarks/__init__.py +0 -0
  359. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/benchmarks/alfworld.py +0 -0
  360. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/benchmarks/livemath.py +0 -0
  361. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/benchmarks/sealqa.py +0 -0
  362. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/benchmarks/spreadsheet.py +0 -0
  363. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/cli.py +0 -0
  364. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/codex_identity.py +0 -0
  365. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/engine.py +0 -0
  366. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/isolated/__init__.py +0 -0
  367. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/isolated/audit.py +0 -0
  368. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/isolated/runtime.py +0 -0
  369. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/isolated/tools_server.py +0 -0
  370. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/jsonl.py +0 -0
  371. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/k4_lock.py +0 -0
  372. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/livemath/__init__.py +0 -0
  373. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/livemath/loop.py +0 -0
  374. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/livemath/rollout.py +0 -0
  375. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/native_agents.py +0 -0
  376. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/__init__.py +0 -0
  377. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/dataset.py +0 -0
  378. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/fetch.py +0 -0
  379. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/loop.py +0 -0
  380. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/retrieval.py +0 -0
  381. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/reward.py +0 -0
  382. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/rollout.py +0 -0
  383. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/scoring.py +0 -0
  384. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/officeqa/wiki_agents.py +0 -0
  385. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/paper_alignment/__init__.py +0 -0
  386. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/paper_alignment/contracts.py +0 -0
  387. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/paper_alignment/evidence.py +0 -0
  388. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/product_cli.py +0 -0
  389. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/product_install.py +0 -0
  390. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/product_views.py +0 -0
  391. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/id_split/split_manifest.json +0 -0
  392. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/id_split/test.json +0 -0
  393. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/id_split/train.json +0 -0
  394. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/id_split/val.json +0 -0
  395. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/wiki/SKILL-s0.md +0 -0
  396. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/wiki/index.md +0 -0
  397. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/wiki/logs.md +0 -0
  398. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/wiki/prompts/maintainer.md +0 -0
  399. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/wiki/prompts/proposer.md +0 -0
  400. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/alfworld/wiki/skill-impact.md +0 -0
  401. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/isolated/model-catalog-direct.json +0 -0
  402. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split/split_manifest.json +0 -0
  403. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split/test.json +0 -0
  404. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split/train.json +0 -0
  405. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split/val.json +0 -0
  406. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split-v2/split_manifest.json +0 -0
  407. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split-v2/test.json +0 -0
  408. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split-v2/train.json +0 -0
  409. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/id_split-v2/val.json +0 -0
  410. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/protocol.json +0 -0
  411. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/wiki/SKILL-s0.md +0 -0
  412. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/wiki/index.md +0 -0
  413. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/wiki/logs.md +0 -0
  414. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/wiki/prompts/maintainer.md +0 -0
  415. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/wiki/prompts/proposer.md +0 -0
  416. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/livemath/wiki/skill-impact.md +0 -0
  417. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/id_split/split_manifest.json +0 -0
  418. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/id_split/test.json +0 -0
  419. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/id_split/train.json +0 -0
  420. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/id_split/val.json +0 -0
  421. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/protocol.json +0 -0
  422. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/wiki/SKILL-s0.md +0 -0
  423. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/wiki/index.md +0 -0
  424. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/wiki/logs.md +0 -0
  425. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/wiki/prompts/maintainer.md +0 -0
  426. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/wiki/prompts/proposer.md +0 -0
  427. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/officeqa/wiki/skill-impact.md +0 -0
  428. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/paper_alignment/README.md +0 -0
  429. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/paper_alignment/prompts/maintainer.paper.md +0 -0
  430. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/paper_alignment/prompts/officeqa.paper.md +0 -0
  431. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/paper_alignment/prompts/proposer.paper.md +0 -0
  432. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/paper_alignment/prompts/spreadsheet.paper.md +0 -0
  433. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/agents/claude-code/wikiskill-executor.md +0 -0
  434. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/agents/claude-code/wikiskill-maintainer.md +0 -0
  435. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/agents/claude-code/wikiskill-proposer.md +0 -0
  436. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/agents/codex/wikiskill-executor.toml +0 -0
  437. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/agents/codex/wikiskill-maintainer.toml +0 -0
  438. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/agents/codex/wikiskill-proposer.toml +0 -0
  439. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/entry-skill/SKILL.md +0 -0
  440. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/entry-skill/agents/openai.yaml +0 -0
  441. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/entry-skill/references/native-subagents.md +0 -0
  442. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/entry-skill/references/workflow.md +0 -0
  443. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/roles/executor.md +0 -0
  444. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/roles/maintainer.md +0 -0
  445. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/product/roles/proposer.md +0 -0
  446. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/final-20260907/manifest.json +0 -0
  447. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/final-20260907/math-episodes.json +0 -0
  448. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/final-20260907/sealqa-pairs.json +0 -0
  449. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/final-20260907/spreadsheet-SKILL.md +0 -0
  450. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/final-20260907/spreadsheet-pairs.json +0 -0
  451. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/final-20260907/summary.json +0 -0
  452. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/example-provenance.json +0 -0
  453. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/installed-smoke.json +0 -0
  454. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/manifest.json +0 -0
  455. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/repeat1-pairs.json +0 -0
  456. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/repeat2-pairs.json +0 -0
  457. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/repeat3-pairs.json +0 -0
  458. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/summary.json +0 -0
  459. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/repeatability-20260908/wiki-deliver-the-recalculated-workbook.md +0 -0
  460. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/livemath/55.md +0 -0
  461. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/livemath/luna.md +0 -0
  462. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/officeqa/55.md +0 -0
  463. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/officeqa/terra.md +0 -0
  464. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/officeqa-retrieval/55.md +0 -0
  465. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/officeqa-retrieval/sol.md +0 -0
  466. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/sealqa/sol.md +0 -0
  467. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/spreadsheet/55.md +0 -0
  468. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/skills/spreadsheet/sol.md +0 -0
  469. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/snapshot.json +0 -0
  470. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/snapshot.sha256 +0 -0
  471. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260906/livemath-luna-pairs.json +0 -0
  472. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260906/livemath-luna-skill.md +0 -0
  473. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260906/manifest.json +0 -0
  474. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260906/officeqa-luna-skill.md +0 -0
  475. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260906/officeqa-sol-skill.md +0 -0
  476. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260906/officeqa-sol-v2-pairs.json +0 -0
  477. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260906/studies.json +0 -0
  478. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/effort-analysis.json +0 -0
  479. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/effort-pairs.json +0 -0
  480. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/manifest.json +0 -0
  481. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/officeqa-luna-paper-tools-pairs.json +0 -0
  482. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/officeqa-luna-paper-tools-skill.md +0 -0
  483. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/spreadsheet-luna-scoped-python-pairs.json +0 -0
  484. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/spreadsheet-luna-scoped-python-skill.md +0 -0
  485. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/research/update-20260907/studies.json +0 -0
  486. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/runtime/acorn.mjs +0 -0
  487. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/runtime/audit_js.mjs +0 -0
  488. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/id_split/split_manifest.json +0 -0
  489. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/id_split/test.json +0 -0
  490. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/id_split/train.json +0 -0
  491. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/id_split/val.json +0 -0
  492. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/protocol.json +0 -0
  493. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/wiki/SKILL-s0.md +0 -0
  494. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/wiki/index.md +0 -0
  495. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/wiki/logs.md +0 -0
  496. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/wiki/prompts/maintainer.md +0 -0
  497. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/wiki/prompts/proposer.md +0 -0
  498. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/sealqa/wiki/skill-impact.md +0 -0
  499. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/id_split/split_manifest.json +0 -0
  500. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/id_split/test.json +0 -0
  501. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/id_split/train.json +0 -0
  502. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/id_split/val.json +0 -0
  503. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/protocol.json +0 -0
  504. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/wiki/SKILL-s0.md +0 -0
  505. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/wiki/index.md +0 -0
  506. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/wiki/logs.md +0 -0
  507. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/wiki/prompts/maintainer.md +0 -0
  508. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/wiki/prompts/proposer.md +0 -0
  509. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/resources/spreadsheet/wiki/skill-impact.md +0 -0
  510. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/results.py +0 -0
  511. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/score_rules.py +0 -0
  512. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/scorer_trust.py +0 -0
  513. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/sealqa/__init__.py +0 -0
  514. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/sealqa/loop.py +0 -0
  515. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/sealqa/rollout.py +0 -0
  516. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/settings.py +0 -0
  517. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/skill_proposer.py +0 -0
  518. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/spreadsheet/__init__.py +0 -0
  519. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/spreadsheet/loop.py +0 -0
  520. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/spreadsheet/rollout.py +0 -0
  521. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/spreadsheet/study.py +0 -0
  522. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/tool_audit.py +0 -0
  523. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/wiki.py +0 -0
  524. {briefloop-0.20.1 → briefloop-0.20.3}/src/wikiskill/wiki_maintainer.py +0 -0
  525. {briefloop-0.20.1 → briefloop-0.20.3}/start.ps1 +0 -0
  526. {briefloop-0.20.1 → briefloop-0.20.3}/start.sh +0 -0
  527. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_chat_commands.mjs +0 -0
  528. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_checkout_eol.mjs +0 -0
  529. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_citation_clipboard.mjs +0 -0
  530. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_citation_edit.mjs +0 -0
  531. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_fast_mode.mjs +0 -0
  532. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_licenses.mjs +0 -0
  533. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_live_status.mjs +0 -0
  534. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_mcp_selection.mjs +0 -0
  535. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_model_label.mjs +0 -0
  536. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_progress_race.mjs +0 -0
  537. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_report_load.mjs +0 -0
  538. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_report_outline.mjs +0 -0
  539. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_review_status.mjs +0 -0
  540. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_runtime_feedback.mjs +0 -0
  541. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_settings_workspaces.mjs +0 -0
  542. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_setup_state.mjs +0 -0
  543. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_source_library.mjs +0 -0
  544. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_template_groups.mjs +0 -0
  545. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_workspace_proposal.mjs +0 -0
  546. {briefloop-0.20.1 → briefloop-0.20.3}/tests/frontend_writing_preferences.mjs +0 -0
  547. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_agent_backend.py +0 -0
  548. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_agent_commands.py +0 -0
  549. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_assessment_admission_recovery.py +0 -0
  550. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_bridge_harness.py +0 -0
  551. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_builtin_templates.py +0 -0
  552. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_chat_dispatch.py +0 -0
  553. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_chat_model_selection.py +0 -0
  554. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_connector_authorization.py +0 -0
  555. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_connector_empty_catalog.py +0 -0
  556. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_connector_materials.py +0 -0
  557. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_core.py +0 -0
  558. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_delivery_checks.py +0 -0
  559. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_demo.py +0 -0
  560. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_document_workflows.py +0 -0
  561. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_draft_contract.py +0 -0
  562. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_entrypoint.py +0 -0
  563. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_evidence.py +0 -0
  564. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_export_layout_swap.py +0 -0
  565. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_fast_mode.py +0 -0
  566. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_figure_exports.py +0 -0
  567. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_figure_flow.py +0 -0
  568. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_harness.py +0 -0
  569. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_host_bins.py +0 -0
  570. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_industry_flow.py +0 -0
  571. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_industry_research.py +0 -0
  572. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_interactive_runtime.py +0 -0
  573. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_length.py +0 -0
  574. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_media_sources.py +0 -0
  575. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_multimodal_harness.py +0 -0
  576. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_multimodal_http.py +0 -0
  577. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_notifications.py +0 -0
  578. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_npm_native_shim.py +0 -0
  579. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_opencode_harness.py +0 -0
  580. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_opencode_provider.py +0 -0
  581. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_opencode_search_prompt.py +0 -0
  582. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_pr593_roundtrip.py +0 -0
  583. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_progress_pipeline.py +0 -0
  584. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_public_research.py +0 -0
  585. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_reader_contract.py +0 -0
  586. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_reconciliation.py +0 -0
  587. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_report_path_regressions.py +0 -0
  588. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_research_budget.py +0 -0
  589. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_resume_in_place.py +0 -0
  590. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_review.py +0 -0
  591. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_review_packet_paths.py +0 -0
  592. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_review_schema_drift.py +0 -0
  593. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_revision_policy.py +0 -0
  594. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_role_models.py +0 -0
  595. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_runtime_concurrency.py +0 -0
  596. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_runtime_json_bom.py +0 -0
  597. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_runtime_retry.py +0 -0
  598. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_software_version.py +0 -0
  599. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_source_recovery_regressions.py +0 -0
  600. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_source_updates.py +0 -0
  601. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_sources_provenance.py +0 -0
  602. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_task_notify.py +0 -0
  603. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_tavily.py +0 -0
  604. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_templates.py +0 -0
  605. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_windows_distribution.py +0 -0
  606. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_windows_mcp_supervisor.py +0 -0
  607. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_windows_platform.py +0 -0
  608. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_windows_runtime_bundle.py +0 -0
  609. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_word_import.py +0 -0
  610. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_word_toc.py +0 -0
  611. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_workspace_action_errors.py +0 -0
  612. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_workspace_profile.py +0 -0
  613. {briefloop-0.20.1 → briefloop-0.20.3}/tests/test_workspaces.py +0 -0
  614. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/LICENSE +0 -0
  615. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/acp/constants.ts +0 -0
  616. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/acp/json.ts +0 -0
  617. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/acp/models.ts +0 -0
  618. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/acp/rpc.ts +0 -0
  619. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/acp/session-params.ts +0 -0
  620. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/acp/types.ts +0 -0
  621. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/byok-reference/byok-opencode.ts +0 -0
  622. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/byok-reference/provider-models.ts +0 -0
  623. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/core/index.ts +0 -0
  624. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/core/json-line-stream.ts +0 -0
  625. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/runtime-models/codex-models.ts +0 -0
  626. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/runtime-models/fallbacks.json +0 -0
  627. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/runtime-models/mmd-routes.ts +0 -0
  628. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/runtime-models/models.ts +0 -0
  629. {briefloop-0.20.1 → briefloop-0.20.3}/third_party/open-design/runtime-models/opencode-models.ts +0 -0
@@ -1,5 +1,37 @@
1
1
  # 变更记录
2
2
 
3
+ ## 0.20.3 — 发布准备中
4
+
5
+ 本节记录待发行的修复;安装包、PyPI 和更新入口以实际渠道提供的版本为准。尚未完成本版各平台安装与更新验收,不表示已统一发布。
6
+
7
+ - 统一发行检查要求桌面后端与同一份发行 wheel 的 SHA-256 一致;导入的跨平台检查失败不会被相同版本号覆盖成通过。
8
+ - 纳入下方 0.20.2 的运行时卡片改进,并接入 DeepSeek Harness、Antigravity 和 Pi 的原生会话;聊天中可选择宿主实际支持的权限。模型、账户可用性及受限审阅能力仍以实际宿主为准。
9
+ - 修复桌面主进程异常退出后的后台归属清理;停止时先保存已接纳的本地修改,再取消外部 MCP 调用。工作区切换先检查目标,启动失败时提供恢复路径;桌面一次管理一个活动工作区。
10
+ - OpenCode 服务绑定启动它的 Python 进程;macOS/Linux 上父进程被强制结束后回收所属服务及进程组,Windows 沿用所属 Job 清理。不按程序名称清理用户的其他 CLI。
11
+ - OpenCode 与 Codex 后台按需启动,无活动回合、子任务或在途配置请求时空闲 30 秒回收;保留已保存的原生会话供下一回合恢复。OpenCode 模型列表缓存命中时不重新启动服务。
12
+ - 通用 CLI Bridge 空闲 30 秒释放,活动调用和会话事件订阅保留连接;退出时清理它启动的模型目录探测与执行子进程。网页空闲/隐藏时降低轮询频率,回到前台立即刷新,慢请求不重叠。
13
+ - 后台任务队列空闲时逐步降低查库频率,同服务入队后立即唤醒;其他进程提交保留最多 5 秒的发现间隔。独立 CLI 服务不会因为关闭网页或长时间无操作而自动停止。
14
+ - 修复运行时发送背压、进程死亡后会话不结束,以及子任务同名工具的新调用被进度去重遗漏的问题;无变化的心跳不重复写成进展。
15
+ - 相同 Word 输入的并发导出共用一个任务,文件缺失或损坏可重新制作。修复富文档行业报告的重复首标题、图表来源遗漏与非法图片导致保存状态无法恢复的问题。
16
+ - Markdown 导入需要明确确认转换;普通保存保留富文档的颜色、表格、图片和引用,历史版本仍可查看。上传前显示文件大小限制,超限不先读入整份附件。
17
+ - 修复软性要求的条款 ID 被误当成硬性要求;事实矛盾继续按事实问题处理。审阅发现可引用本次固定包内的来源陈述,来源陈述不会因此自动成为正文已核实的主张。
18
+ - 学习比较核对冻结的内容方法与评价条件;初始化中断可恢复,过滤后没有可用材料的案例说明原因,不记为候选技能收益。
19
+ - 损坏 PDF/XLSX 的已知解析错误定位到对应材料;连接器配置损坏时保留原文件和诊断,历史稿件仍可查看。任务结束释放所属连接器资源。
20
+ - 研究轮次变更、企业背景事实与冲突登记采用原子提交,避免并发覆盖和中断留下无法处理的记录。
21
+ - 补齐日志凭据遮蔽、连接器动态加载环境变量限制,以及私有 GET 接口的跨站来源检查;正常网页下载和本地外部客户端沿现有接口使用。
22
+ - 连接测试保留独立历史入口,错误和取消结果可查看;普通最近会话不再混入连接测试。统一聊天工具栏文字样式。
23
+ - 尚未选择模型时仍可查看和下载已有报告、读取来源及打开设置;开始新对话或新报告时再确认执行模型。
24
+
25
+ ## 0.20.2 — 源码改动,未独立发行
26
+
27
+ 以下改动已合并源码,将随 0.20.3 一同发行;没有单独的 0.20.2 PyPI 包或桌面安装包。
28
+
29
+ - 运行时卡片加入本地品牌图标、简介、检测版本和当前模型;图标随应用分发,离线可见。未安装运行时展开为双列卡片,窄屏自动变成单列。
30
+ - 去掉首页聊天框重复的“当前:runtime”,保留可操作的宿主选择器和回合执行记录。
31
+ - 修复 Kilo、Kiro、Vibe 已有 ACP 适配却被可选宿主名单阻挡的问题;安装检测、协议适配和实际调用结果分别呈现,不把模型目录当作账号调用成功。
32
+ - 更新失败分别显示检查失败、下载未完成、安装未完成;检查失败不附带旧版本目标,重试按失败阶段执行,保留具体错误与限流恢复时间。
33
+
34
+
3
35
  ## 0.20.1 — 2026-09-13
4
36
 
5
37
  本次发布 Python / CLI / Web 包;桌面源码版本同步,未重新发行 Mac / Windows 安装包。
@@ -2253,4 +2285,3 @@ First public release. The following entries document the development iterations
2253
2285
  - Markdown / JSON / DOCX output.
2254
2286
  - Claude Code / Codex agent configurations.
2255
2287
  - Open-source release safety scanning tools.
2256
-
@@ -21,7 +21,7 @@ node runtime-bridge/build.mjs
21
21
  npm run build
22
22
  npm test
23
23
  node --test runtime-bridge/bridge.test.mjs
24
- .venv/bin/python -m pytest -q
24
+ .venv/bin/python -m pytest tests -q
25
25
  .venv/bin/python -m build
26
26
  .venv/bin/python tests/check_distribution.py dist/*.whl dist/*.tar.gz
27
27
  ```
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: briefloop
3
- Version: 0.20.1
3
+ Version: 0.20.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
@@ -36,7 +36,7 @@ Provides-Extra: dev
36
36
  Requires-Dist: pytest>=8; extra == "dev"
37
37
  Dynamic: license-file
38
38
 
39
- # BriefLoop 0.20.1
39
+ # BriefLoop 0.20.2
40
40
 
41
41
  面向行业研究、战略与 IR 使用者的本地报告工作台:把分散材料整理成可编辑简报,逐项查看重要结论的依据、处理审阅问题,并保留原稿与修订版本。适合需要定期写报告、核数字和核口径的单人工作。
42
42
 
@@ -44,9 +44,11 @@ Dynamic: license-file
44
44
 
45
45
  新建报告可选择通用报告,或商业报告下的行业周报/月报、工作进展周报与决策分析。内容方法贯穿规划、写作、修订与评价,并随报告保存实际版本;Word 模板单独控制版式。八类内置版式可继续使用,其余文档类型的专门内容流程将分批接入。
46
46
 
47
+ 0.20.2 的运行时设置新增本地图标、简介、实际版本与模型信息;未安装工具按卡片浏览。首页仅保留宿主选择器,更新失败会区分检查、下载和安装阶段。见 [运行时选择与检测](docs/运行时选择与检测.md)。
48
+
47
49
  ## 桌面 App
48
50
 
49
- 桌面安装包以发行页实际提供的版本为准;本次先发布 Python/CLI/Web 0.20.1,既有桌面包仍为 0.20.0。
51
+ 桌面安装包以发行页实际提供的版本为准;App、CLI 与 PyPI 使用同一产品版本和冻结后端 wheel,各渠道是否发布以版本核验结果为准。
50
52
 
51
53
  从 [GitHub Releases](https://github.com/Stahl-G/briefloop/releases) 选择与系统匹配的安装包。macOS Apple Silicon 使用 DMG;Windows x64 使用 EXE。桌面版与 WebUI 共用报告、材料和设置。
52
54
 
@@ -97,15 +99,26 @@ Windows 也可不安装桌面 App,直接启动同一套 Python 服务与网页
97
99
 
98
100
  也可直接运行 `python -X utf8 bootstrap.py --no-open`。启动器打印本机网页地址;模型认证仍由所选宿主提供。详情见 [Windows 验证边界](docs/windows.md)。
99
101
 
100
- ## 数据会去哪里
102
+ ## 隐私提示:文件和内容会去哪里
103
+
104
+ **BriefLoop 将工作区保存在本机;使用云端模型处理材料时,相关内容会经所选宿主发送到其配置的服务。关闭“联网检索”并不等于停止向模型发送内容。**
105
+
106
+ | 你执行的操作 | 文件或内容的去向 |
107
+ |---|---|
108
+ | 上传、解析和查看文件 | 文件先保存到本机工作区,内置解析在本机执行。仅上传或本地预览不会自动把整份文件发送给模型。 |
109
+ | 对话、研究、写稿、审阅、修订或学习 | 任务要求、对话,以及 Agent 读取的材料内容、图片、稿件、反馈等,会进入相应模型的上下文。具体可能是摘录、全文或图片,取决于实际读取和附件方式。主链、Evaluator、Wiki Maintainer、Skill Proposer 可分别使用不同提供方。 |
110
+ | 搜索和读取网页 | 搜索词发送给所选搜索服务,网页请求发送到目标网站;使用 Tavily 提取时,目标 URL 也会发送给 Tavily。Agent 生成的搜索词可能包含任务中的公司名称、主题或其他信息。 |
111
+ | 使用 MCP 连接器 | 资源地址、工具参数和必要的认证信息发送给配置的连接器服务。本地 stdio 程序也可能自行联网;连接器返回的材料保存为来源后,还可能被读取并发送给模型。连接器的逐报告授权与公开检索开关分开管理。 |
112
+ | 保存、生成和下载 Word | 稿件版本、审阅记录和导出文件保存在工作区;普通 Word 导出由本机程序完成,不额外调用模型。下载到同步盘、用第三方办公软件打开或主动分享后,后续去向由这些软件和你的操作决定。 |
113
+ | 由 WorkBuddy 等外部 Agent 调用 | 外部 Agent 可通过本地接口读取其请求的来源、稿件和结果;这些内容可能随后进入外部 Agent 自己的模型服务。由它提交的生成任务,仍使用 BriefLoop 工作区配置的宿主。 |
114
+
115
+ **实际接收方以宿主配置为准。** 自定义 Base URL、代理或模型网关可能先接收请求,再转发给模型厂商;仅凭模型名称不能判断文件内容最终经过哪些服务。第三方的保存期限、日志和训练使用规则取决于其服务与账户配置,BriefLoop 不统一控制这些规则。
101
116
 
102
- BriefLoop 在本机运行,但它不是离线工具。开始用之前请先分清三件事:
117
+ 工作区中的数据库、来源原件、稿件、Wiki、日志和审计包均可能包含敏感信息。删除本地文件不会自动删除第三方已经接收的内容;分享工作区、日志或审计包前,请检查其中的材料与个人信息。凭据保存在本机相应宿主或连接器配置中,不要把凭据文件随工作区或代码一起分享。
103
118
 
104
- - **会离开本机**:你上传的材料,以及生成的稿件与图片,**会发送给你所选宿主所连接的模型提供方**,用于生成、评价与修订。开启联网检索时,请求会发送给所选搜索服务;使用 Tavily 时由 Tavily 处理,也可能使用宿主自带的搜索工具。
105
- - **留在本机**:工作区目录、数据库、来源原件、稿件版本、评分与审计包。模型与搜索凭据保存在本机相应配置中。日志和模型生成内容可能带有敏感信息,分享前仍需检查。
106
- - **不对外提供访问**:本地服务只监听本机地址,不向局域网或互联网暴露。
119
+ 本地服务默认只监听 `127.0.0.1`,不直接开放公网访问。Agent 能读取哪些文件、执行哪些命令,由当前宿主实际支持的权限控制决定;“只读”不代表读取到的内容不会发送给云端模型,检索开关也不等同于所有宿主的网络隔离。
107
120
 
108
- 所以,请按材料本身的敏感程度选择宿主与模型,并遵守你所在机构关于材料外发的规定。**把内部材料交给本地工具,和把内部材料交给某家模型厂商,是两件事。**
121
+ 安装依赖、检查版本和下载更新还会访问相应的软件分发服务,这些请求与报告材料处理分开。使用内部或保密材料前,请确认所选宿主、模型、代理、搜索和连接器符合你的材料外发要求。
109
122
 
110
123
  模型的可用性和计费由所选宿主及提供方决定;BriefLoop 的本地服务不提供模型额度。
111
124
 
@@ -234,7 +247,7 @@ Word 按按钮制作,完成后下载;不实时更新 Word,不提供网页
234
247
 
235
248
  ## 升级、边界与文档
236
249
 
237
- 0.20.1 新增本地外部任务入口:WorkBuddy 等可执行本机命令的 Agent 可连接已有工作区,提交报告、查询进度、保存指定版本的修订和下载 Word。使用说明见 [WorkBuddy 外部入口](docs/WorkBuddy外部入口.md);可使用 `pip install --upgrade briefloop==0.20.1` 安装;既有 0.20.0 桌面安装包不包含此入口。
250
+ 0.20.1 新增本地外部任务入口:WorkBuddy 等可执行本机命令的 Agent 可连接已有工作区,提交报告、查询进度、保存指定版本的修订和下载 Word。使用说明见 [WorkBuddy 外部入口](docs/WorkBuddy外部入口.md);可使用 `pip install --upgrade briefloop==0.20.2` 安装;既有 0.20.0 桌面安装包不包含此入口。
238
251
 
239
252
  会议纪要内容方法也在后续源码中接入:选择内置纪要模板即可建议相应用途,输入本次会议转写或笔记,整理决议、待办和未定事项。见 [会议纪要说明与合成材料](docs/会议纪要.md)。
240
253
 
@@ -1,4 +1,4 @@
1
- # BriefLoop 0.20.1
1
+ # BriefLoop 0.20.2
2
2
 
3
3
  面向行业研究、战略与 IR 使用者的本地报告工作台:把分散材料整理成可编辑简报,逐项查看重要结论的依据、处理审阅问题,并保留原稿与修订版本。适合需要定期写报告、核数字和核口径的单人工作。
4
4
 
@@ -6,9 +6,11 @@
6
6
 
7
7
  新建报告可选择通用报告,或商业报告下的行业周报/月报、工作进展周报与决策分析。内容方法贯穿规划、写作、修订与评价,并随报告保存实际版本;Word 模板单独控制版式。八类内置版式可继续使用,其余文档类型的专门内容流程将分批接入。
8
8
 
9
+ 0.20.2 的运行时设置新增本地图标、简介、实际版本与模型信息;未安装工具按卡片浏览。首页仅保留宿主选择器,更新失败会区分检查、下载和安装阶段。见 [运行时选择与检测](docs/运行时选择与检测.md)。
10
+
9
11
  ## 桌面 App
10
12
 
11
- 桌面安装包以发行页实际提供的版本为准;本次先发布 Python/CLI/Web 0.20.1,既有桌面包仍为 0.20.0。
13
+ 桌面安装包以发行页实际提供的版本为准;App、CLI 与 PyPI 使用同一产品版本和冻结后端 wheel,各渠道是否发布以版本核验结果为准。
12
14
 
13
15
  从 [GitHub Releases](https://github.com/Stahl-G/briefloop/releases) 选择与系统匹配的安装包。macOS Apple Silicon 使用 DMG;Windows x64 使用 EXE。桌面版与 WebUI 共用报告、材料和设置。
14
16
 
@@ -59,15 +61,26 @@ Windows 也可不安装桌面 App,直接启动同一套 Python 服务与网页
59
61
 
60
62
  也可直接运行 `python -X utf8 bootstrap.py --no-open`。启动器打印本机网页地址;模型认证仍由所选宿主提供。详情见 [Windows 验证边界](docs/windows.md)。
61
63
 
62
- ## 数据会去哪里
64
+ ## 隐私提示:文件和内容会去哪里
65
+
66
+ **BriefLoop 将工作区保存在本机;使用云端模型处理材料时,相关内容会经所选宿主发送到其配置的服务。关闭“联网检索”并不等于停止向模型发送内容。**
67
+
68
+ | 你执行的操作 | 文件或内容的去向 |
69
+ |---|---|
70
+ | 上传、解析和查看文件 | 文件先保存到本机工作区,内置解析在本机执行。仅上传或本地预览不会自动把整份文件发送给模型。 |
71
+ | 对话、研究、写稿、审阅、修订或学习 | 任务要求、对话,以及 Agent 读取的材料内容、图片、稿件、反馈等,会进入相应模型的上下文。具体可能是摘录、全文或图片,取决于实际读取和附件方式。主链、Evaluator、Wiki Maintainer、Skill Proposer 可分别使用不同提供方。 |
72
+ | 搜索和读取网页 | 搜索词发送给所选搜索服务,网页请求发送到目标网站;使用 Tavily 提取时,目标 URL 也会发送给 Tavily。Agent 生成的搜索词可能包含任务中的公司名称、主题或其他信息。 |
73
+ | 使用 MCP 连接器 | 资源地址、工具参数和必要的认证信息发送给配置的连接器服务。本地 stdio 程序也可能自行联网;连接器返回的材料保存为来源后,还可能被读取并发送给模型。连接器的逐报告授权与公开检索开关分开管理。 |
74
+ | 保存、生成和下载 Word | 稿件版本、审阅记录和导出文件保存在工作区;普通 Word 导出由本机程序完成,不额外调用模型。下载到同步盘、用第三方办公软件打开或主动分享后,后续去向由这些软件和你的操作决定。 |
75
+ | 由 WorkBuddy 等外部 Agent 调用 | 外部 Agent 可通过本地接口读取其请求的来源、稿件和结果;这些内容可能随后进入外部 Agent 自己的模型服务。由它提交的生成任务,仍使用 BriefLoop 工作区配置的宿主。 |
76
+
77
+ **实际接收方以宿主配置为准。** 自定义 Base URL、代理或模型网关可能先接收请求,再转发给模型厂商;仅凭模型名称不能判断文件内容最终经过哪些服务。第三方的保存期限、日志和训练使用规则取决于其服务与账户配置,BriefLoop 不统一控制这些规则。
63
78
 
64
- BriefLoop 在本机运行,但它不是离线工具。开始用之前请先分清三件事:
79
+ 工作区中的数据库、来源原件、稿件、Wiki、日志和审计包均可能包含敏感信息。删除本地文件不会自动删除第三方已经接收的内容;分享工作区、日志或审计包前,请检查其中的材料与个人信息。凭据保存在本机相应宿主或连接器配置中,不要把凭据文件随工作区或代码一起分享。
65
80
 
66
- - **会离开本机**:你上传的材料,以及生成的稿件与图片,**会发送给你所选宿主所连接的模型提供方**,用于生成、评价与修订。开启联网检索时,请求会发送给所选搜索服务;使用 Tavily 时由 Tavily 处理,也可能使用宿主自带的搜索工具。
67
- - **留在本机**:工作区目录、数据库、来源原件、稿件版本、评分与审计包。模型与搜索凭据保存在本机相应配置中。日志和模型生成内容可能带有敏感信息,分享前仍需检查。
68
- - **不对外提供访问**:本地服务只监听本机地址,不向局域网或互联网暴露。
81
+ 本地服务默认只监听 `127.0.0.1`,不直接开放公网访问。Agent 能读取哪些文件、执行哪些命令,由当前宿主实际支持的权限控制决定;“只读”不代表读取到的内容不会发送给云端模型,检索开关也不等同于所有宿主的网络隔离。
69
82
 
70
- 所以,请按材料本身的敏感程度选择宿主与模型,并遵守你所在机构关于材料外发的规定。**把内部材料交给本地工具,和把内部材料交给某家模型厂商,是两件事。**
83
+ 安装依赖、检查版本和下载更新还会访问相应的软件分发服务,这些请求与报告材料处理分开。使用内部或保密材料前,请确认所选宿主、模型、代理、搜索和连接器符合你的材料外发要求。
71
84
 
72
85
  模型的可用性和计费由所选宿主及提供方决定;BriefLoop 的本地服务不提供模型额度。
73
86
 
@@ -196,7 +209,7 @@ Word 按按钮制作,完成后下载;不实时更新 Word,不提供网页
196
209
 
197
210
  ## 升级、边界与文档
198
211
 
199
- 0.20.1 新增本地外部任务入口:WorkBuddy 等可执行本机命令的 Agent 可连接已有工作区,提交报告、查询进度、保存指定版本的修订和下载 Word。使用说明见 [WorkBuddy 外部入口](docs/WorkBuddy外部入口.md);可使用 `pip install --upgrade briefloop==0.20.1` 安装;既有 0.20.0 桌面安装包不包含此入口。
212
+ 0.20.1 新增本地外部任务入口:WorkBuddy 等可执行本机命令的 Agent 可连接已有工作区,提交报告、查询进度、保存指定版本的修订和下载 Word。使用说明见 [WorkBuddy 外部入口](docs/WorkBuddy外部入口.md);可使用 `pip install --upgrade briefloop==0.20.2` 安装;既有 0.20.0 桌面安装包不包含此入口。
200
213
 
201
214
  会议纪要内容方法也在后续源码中接入:选择内置纪要模板即可建议相应用途,输入本次会议转写或笔记,整理决议、待办和未定事项。见 [会议纪要说明与合成材料](docs/会议纪要.md)。
202
215
 
@@ -10,3 +10,8 @@
10
10
  - pypdfium2 / PDFium:用于本地 PDF 页面渲染,通过 Python 依赖安装。pypdfium2 包声明 BSD-3-Clause、Apache-2.0 及其依赖许可,完整许可随依赖包保留。
11
11
 
12
12
  - OpenDesign(be0887b39273993d939e83c4768922115f104bed):Apache-2.0。复用原生运行时协议和模型目录辅助代码,来源与本地改动见 third_party/open-design/NOTICE.md;许可证同时随打包后的 runtime bridge 分发。
13
+
14
+ ### Runtime identification icons
15
+
16
+ Runtime SVG/PNG assets (listed in the NOTICE) come unmodified from [Open Design](https://github.com/nexu-io/open-design/tree/be0887b39273993d939e83c4768922115f104bed/apps/web/public/agent-icons), Apache-2.0; see `third_party/open-design/LICENSE` and `NOTICE.md`.
17
+ `static/runtime-codebuddy.svg` is the unmodified site icon from [CodeBuddy](https://www.codebuddy.cn), retrieved 2026-09-13 from https://download.codebuddy.cn/web/website/93a7cd0d70556625552d16b09c6a9cf8c2e089b9/assets/logo.svg. Brand artwork belongs to its respective owner and is used only to identify the corresponding runtime.
@@ -0,0 +1 @@
1
+ 0.20.3
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "briefloop-desktop",
3
- "version": "0.20.1",
3
+ "version": "0.20.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "briefloop-desktop",
9
- "version": "0.20.1",
9
+ "version": "0.20.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.20.1",
3
+ "version": "0.20.3",
4
4
  "private": true,
5
5
  "description": "BriefLoop local desktop workspace",
6
6
  "author": "Stahl-G",
@@ -11,7 +11,9 @@
11
11
  "test": "node --test test/*.test.cjs",
12
12
  "pack": "electron-builder --mac dir --arm64 --publish never",
13
13
  "dist": "electron-builder --mac dmg zip --arm64 --publish never",
14
- "postinstall": "node node_modules/electron/install.js"
14
+ "postinstall": "node node_modules/electron/install.js",
15
+ "dist:signed": "node scripts/build-mac-signed.cjs",
16
+ "signing:check": "node scripts/build-mac-signed.cjs --check"
15
17
  },
16
18
  "devDependencies": {
17
19
  "electron": "44.3.0",
@@ -23,6 +23,10 @@
23
23
 
24
24
  ## 服务范围
25
25
 
26
- 接口只连接已验证身份的本机工作区服务,复用 Host 校验、会话 Token 和退出停止接收请求的逻辑。CLI 不打印 Token,不读取模型凭据。服务端每次请求再次检查 workspace_id;工作区更换或服务未就绪会明确失败。
26
+ 接口只连接已验证身份的本机工作区服务,复用 Host 校验、会话 Token 和退出停止接收请求的逻辑。CLI 不打印 Token,不读取模型凭据。外部 action 和客户端文件下载再次检查 workspace_id;工作区更换或服务未就绪会明确失败。
27
+
28
+ 私有 GET(包括握手、材料、稿件和所有下载接口)拒绝明确的外站 Origin,以及 Fetch Metadata 中的跨源请求;同机不同端口也属于跨源。根页和静态界面仍可从外部链接打开,再从工作区内下载。正常同源链接、地址栏导航和不带这些浏览器头的本机 CLI 保持可用,不在下载 URL 中放 Token。
29
+
30
+ 会话 Token 用于 JSON POST 的浏览器请求防护;下载 GET 不要求自定义 Token 头。外部客户端先通过带 Token 的 action/query 校验产物,再流式下载并核对哈希。这不是同机用户或进程之间的权限隔离:能访问本机服务的原生进程可以请求握手 Token;Origin/Fetch Metadata 也不是原生进程的身份证明。
27
31
 
28
32
  接口细节和可复制的请求示例以随包的 [Skill](../src/briefloop/skill_assets/briefloop-external/SKILL.md) 为准。`inspect` 默认返回最近 100 个来源和 20 个稿件;已知历史 ID 仍可精确读取。
@@ -81,7 +81,7 @@ flowchart TB
81
81
 
82
82
  ## 分层说明
83
83
 
84
- 1. **界面层**:界面源码在 `frontend/`(app.js、rich-document.js),由 esbuild 打包(`npm run build`,`package.json`)输出到 `src/briefloop/static/app.js`,Python 服务只发布 `static/`(原生无框架运行时 + 打包后的 bundle,含 tiptap 富文档依赖)。浏览器用带 `X-BriefLoop-Token` 的 JSON 请求访问 `/api/*`,token 过期时自动重新握手(`frontend/app.js:40` 的 `api()`)。
84
+ 1. **界面层**:界面源码在 `frontend/`(app.js、rich-document.js),由 esbuild 打包(`npm run build`,`package.json`)输出到 `src/briefloop/static/app.js`,Python 服务只发布 `static/`(原生无框架运行时 + 打包后的 bundle,含 tiptap 富文档依赖)。浏览器的 JSON POST 带 `X-BriefLoop-Token`,token 过期时自动重新握手(`frontend/app.js:40` 的 `api()`)。
85
85
 
86
86
  2. **服务层**:`cli.py` 的 `serve/start` 进入 `server.py:make_server()`。服务先取得 `platform_support.WorkspaceLock`,再初始化 Store;POSIX 使用 `flock`,Windows 使用排他字节锁。启动时组装各 Harness 管理器和 `Worker`,并一次性恢复中断的会话状态(`harness.chat.recover_stale()`)。`GET /api/state` 返回整个工作区快照,写操作走 `POST /api/<命令>`。
87
87
 
@@ -99,3 +99,5 @@ flowchart TB
99
99
  - 一个工作区同时只允许一个服务实例(`platform_support.WorkspaceLock` 的操作系统锁)。Windows 所属宿主进程树由 Job Object 回收;它不提供文件或网络隔离。
100
100
  - runtime-bridge 需要本机 Node 20+,构建产物为 `src/briefloop/static/runtime-bridge.mjs`(`runtime-bridge/build.mjs`)。
101
101
  - 后端可选:`codex/opencode/claude/kimi/hermes/reasonix/mimo`(`cli.py:21`),ACP 类宿主经 Node 桥。
102
+
103
+ 私有 GET 统一检查 Origin 与 Fetch Metadata,拒绝明确的跨源浏览器请求(包括同机不同端口)。同源链接、地址栏导航及无浏览器来源头的本机客户端仍可下载,不在 URL 中携带会话 Token。服务仅监听 127.0.0.1 并严格校验 Host;这些机制不隔离同机进程,握手 Token 也不构成 OS 用户级认证。
@@ -14,6 +14,10 @@ Windows 桌面应用使用 Electron,复用同一套 Python 服务、WebUI、SQ
14
14
 
15
15
  ## 启动与退出
16
16
 
17
+ 桌面应用一次管理一个工作区。切换前先预检目标目录和运行环境,目标无效时保留当前工作区。完成保存和任务停止后,若目标启动失败,会在确认目标服务退出后尝试恢复原工作区;恢复以暂停状态启动,不自动重新提交中断任务。恢复失败会明确提示,已保存内容仍留在原目录。需要同时运行独立服务时使用 CLI/WebUI,其进程不由这个桌面窗口接管。
18
+
19
+ 桌面主进程持有专用 stdin 管道的唯一写端,服务通过 `BRIEFLOOP_DESKTOP_OWNER_PIPE=1` 和本次启动标识启用所有者监测。主进程异常退出后,管道 EOF 让配套 Python 后端受控取消任务并清理所属后代,释放工作区;独立 CLI 不受影响。强制结束不能保证未保存编辑落盘。此行为需配套后端合约和对应产物验收,不属于下文旧安装基线的既有验证结论。
20
+
17
21
  安装后的桌面应用从快捷方式启动,环境就绪后新建或打开工作区。开发者仍可在 PowerShell 使用 `start.ps1 -Python <python.exe 的路径>` 指定解释器,或运行 `python -X utf8 bootstrap.py`;这条源码启动路径的 bridge 需要单独的 Node.js 20+。启动器、CLI 和 agent 工具使用 UTF-8。
18
22
 
19
23
  每个工作区先取得排他锁,再打开数据库。Windows 桌面服务直接启动已验证的基础 Python,并仅向该子进程传入 venv 启动标识,保留专属 venv 的模块路径,使应用持有的子进程 PID 与实际服务 PID 一致。就绪校验仍要求本次启动标识、确切 PID 和本机地址匹配;第二实例不能改变原服务设置。
@@ -6,7 +6,7 @@
6
6
 
7
7
  工作区是一个本地目录,保存数据库、来源、稿件、对话和 Wiki。空目录也能使用:先描述目标,或在“材料与需求”设置正式报告要求。打开目录不意味着模型已经开始工作。
8
8
 
9
- 侧栏可以切换最近工作区、打开目录或新建目录。切换不会停止其他工作区中的任务。打开尚未运行的已有工作区时,旧排队任务保留供手动恢复,自动学习暂不启动;需要时在设置中明确开启。
9
+ 侧栏可以切换最近工作区、打开目录或新建目录。WebUI 切换不停止其他独立后台的任务;桌面 App 一次管理一个活动工作区,切换前保存并停止当前后台,运行中的任务会先请你确认停止。目标打开失败时尝试恢复原工作区,中断任务不会自动重发。打开尚未运行的已有工作区时,旧排队任务保留供手动恢复,自动学习暂不启动;需要时在设置中明确开启。
10
10
 
11
11
  对话输入区支持文件附件、联网、模型、推理档位、provider 和权限。空闲时发送开始一轮;运行中可以排队,或选择“立即补充”。“已送达”表示执行端接受输入,不等于已经执行要求。页面展示公开消息、工具活动和宿主返回的思考内容(折叠的“思考”条,仅本地查看);思考内容不进入报告、通知或审计包。
12
12
 
@@ -73,3 +73,7 @@ K 控制一次反馈学习最多尝试多少轮;轮数越多消耗的 Token
73
73
  .venv/bin/briefloop status --workspace /path/to/workspace
74
74
  .venv/bin/briefloop doctor --workspace /path/to/workspace
75
75
  ```
76
+
77
+ ### 上传大小
78
+
79
+ 网页上传原件、Word 模板或 Word 修订时,单文件上限为 18 MiB;每个请求含 Base64 与 JSON 后须小于 25 MiB。多选文件逐个上传,先检查整批文件的大小,超限时显示文件名和本批总量,不先上传一部分。请压缩或拆分过大的文件后重试。来源文件是否可由模型读取,还取决于解析结果和所选宿主能力。
@@ -42,7 +42,7 @@ Word 保留所选模板的版式和支持的局部格式。正文长度改变时
42
42
 
43
43
  ## 开发接口
44
44
 
45
- - `POST /api/save` 接收 `base_version` 与 `editor_document`;旧 Markdown 保存仍可兼容。新报告以富文档内容为准,纯格式变化也产生版本。
45
+ - `POST /api/save` 接收 `base_version` 与 `editor_document`;纯 Markdown 原稿仍可按 Markdown 保存。对富文档,仅提交相同 Markdown 投影不改变原版本;不同正文必须提交完整富文档,或显式设置 `allow_markdown_conversion: true` 进行替换,转换后的内容仍保存为富文档并记录基础版本。新报告以富文档内容为准,纯格式变化也产生版本。网页导入 Markdown 前会提示颜色、表格样式和图片布局可能丢失;取消不会修改正文,确认后原版本仍保留。
46
46
  - `POST /api/template-import` 接收 DOCX 的 `name`、base64 `data`,可提供更新来源 `parent_id`。
47
47
  - `POST /api/export` 接收 `version_id`,返回 `export_docx` 文件任务;完成后使用任务结果里的 `download_url`。
48
48
  - `GET /api/research-notes?version=...` 返回该版本的核查、待补与来源信息。
@@ -36,6 +36,10 @@ Electron 已包含运行桥接需要的 Node。无需另外为 BriefLoop 桌面
36
36
 
37
37
  WebUI 的行为有所不同:关闭浏览器标签页不会停止独立启动的后台服务。
38
38
 
39
+ 后台采用按需运行:Codex、OpenCode 和通用 CLI Bridge 没有活动回合、子任务、事件订阅或在途请求时,空闲 30 秒回收进程;后续使用按需重新启动。原生会话 ID 保存在工作区,支持续接的宿主可恢复原会话。任务队列空闲时降低查库频率,同服务提交会唤醒队列,其他进程提交最多等待 5 秒被发现。正在执行的报告不受这些空闲间隔限制。网页可见且无任务时每 15 秒检查状态,隐藏时每 60 秒检查;回到前台立即刷新,有活动任务时恢复原来的快速轮询。
40
+
41
+ BriefLoop 不会仅因长时间没有鼠标或键盘操作就自动退出。未保存的编辑、正在执行的任务和外部 Agent 的调用仍需保留;要结束桌面后台,请正常退出应用。主动启动的 CLI `serve` 持续提供服务,直到用户停止它。
42
+
39
43
  ## 更新版本
40
44
 
41
45
  打开“设置 → 版本更新”:
@@ -0,0 +1,15 @@
1
+ # 运行时选择与检测
2
+
3
+ 在“设置 → 模型与提供商 → 本机 CLI”查看运行时。每张卡片展示本地图标、简介、实际检测版本;选中项显示模型,其他项不会沿用当前宿主的模型名称。展开“安装与能力”可以查看路径、连接方式与已接入能力。
4
+
5
+ 未安装工具放在折叠列表里,展开后用双列卡片浏览,窄屏使用单列。没有品牌图片的工具使用中性的终端图形。
6
+
7
+ - **已检测到**:找到可执行文件,可以选择宿主;账号和模型是否能调用,请使用卡片中的“测试”。
8
+ - **已有适配 · 安装后可测试**:BriefLoop 有相应协议适配,本机还没检测到 CLI。安装后点击“重新检测”,再选择模型并测试。
9
+ - **尚无协议适配**:目录能够识别工具,但该版本没有接通其执行协议;仅安装工具不能开启执行。
10
+
11
+ ACP 是共用连接协议,但每个 CLI 仍有自己的启动命令、登录方式与能力协商。Kilo、Kiro、Vibe 复用现有 ACP Bridge;本轮接通了设置和执行入口,尚未安装的运行时不会显示为真实测试通过。受限审阅等能力仍由宿主实际权限决定。
12
+
13
+ 模型列表来自该宿主返回的目录、本机配置或明确标出的内置建议,也可输入模型 ID。选择目录中的模型不表示已验证账号权限。点击“测试”后会打开普通对话,显示回复、错误或停止状态;真实请求可能消耗所配置提供商的额度。
14
+
15
+ 首页的宿主选择器用于下一回合;已经开始或排队的回合保留冻结配置。运行时名称仍可在该回合的执行信息中查看。