taskuary 0.3.9.76__tar.gz → 0.3.9.78__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 (1058) hide show
  1. {taskuary-0.3.9.76/taskuary.egg-info → taskuary-0.3.9.78}/PKG-INFO +72 -29
  2. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/README.md +71 -28
  3. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/pyproject.toml +1 -1
  4. taskuary-0.3.9.78/taskuary/blanks.json +10 -0
  5. taskuary-0.3.9.78/taskuary/blanks.py +45 -0
  6. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/concierge.py +1 -1
  7. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/demo.py +66 -11
  8. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/funnel.py +3 -1
  9. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/general.py +16 -9
  10. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/ingest.py +1 -1
  11. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_all.py +1 -1
  12. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_unread.py +1 -1
  13. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/quickwork.py +1 -1
  14. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/rank.py +1 -1
  15. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/rulebook.py +6 -1
  16. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/server.py +6 -4
  17. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sessionrecord.py +37 -4
  18. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/store.py +9 -4
  19. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/triage.md +2 -1
  20. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/terminal.py +9 -3
  21. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/triage.py +8 -1
  22. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/verdicts.py +23 -0
  23. taskuary-0.3.9.76/taskuary/web/assets/AssistantGame-BGwe1A6_.js → taskuary-0.3.9.78/taskuary/web/assets/AssistantGame-BveZsJNM.js +2 -2
  24. taskuary-0.3.9.76/taskuary/web/assets/BoardView-CX6FW0eJ.js → taskuary-0.3.9.78/taskuary/web/assets/BoardView-BdtK_TXd.js +2 -2
  25. taskuary-0.3.9.76/taskuary/web/assets/CanvasBrowse-CrT6syzs.js → taskuary-0.3.9.78/taskuary/web/assets/CanvasBrowse-C3dNVIEi.js +2 -2
  26. taskuary-0.3.9.76/taskuary/web/assets/ConnectorsView-BzNeO5Hi.js → taskuary-0.3.9.78/taskuary/web/assets/ConnectorsView-CjC6ol5w.js +1 -1
  27. taskuary-0.3.9.76/taskuary/web/assets/FirstRun-BNzoLE6Z.js → taskuary-0.3.9.78/taskuary/web/assets/FirstRun-C86Ee_mg.js +1 -1
  28. taskuary-0.3.9.76/taskuary/web/assets/GameScene-YsnjSK0c.js → taskuary-0.3.9.78/taskuary/web/assets/GameScene-CDFr2icT.js +1 -1
  29. taskuary-0.3.9.76/taskuary/web/assets/GeneralWorkspace-Dch3nipw.js → taskuary-0.3.9.78/taskuary/web/assets/GeneralWorkspace-DnqouexF.js +12 -12
  30. taskuary-0.3.9.78/taskuary/web/assets/GeneralWorkspace-pvY5jJDM.css +1 -0
  31. taskuary-0.3.9.76/taskuary/web/assets/HubView-U-rQcGz4.js → taskuary-0.3.9.78/taskuary/web/assets/HubView-BXSBXX2s.js +1 -1
  32. taskuary-0.3.9.76/taskuary/web/assets/SaveNote-BrKPik2-.js → taskuary-0.3.9.78/taskuary/web/assets/SaveNote-BuFDPmWB.js +1 -1
  33. taskuary-0.3.9.76/taskuary/web/assets/SettingsView-D77-ppMl.js → taskuary-0.3.9.78/taskuary/web/assets/SettingsView-DabQhObb.js +3 -3
  34. taskuary-0.3.9.76/taskuary/web/assets/Slider-DmZosoFv.js → taskuary-0.3.9.78/taskuary/web/assets/Slider-BUCDL-Xe.js +1 -1
  35. taskuary-0.3.9.76/taskuary/web/assets/TasksView-C60v-Dze.js → taskuary-0.3.9.78/taskuary/web/assets/TasksView-DPXqcslF.js +1 -1
  36. taskuary-0.3.9.78/taskuary/web/assets/index-DCO1eA8i.js +474 -0
  37. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/index.html +1 -1
  38. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/words.json +1 -0
  39. {taskuary-0.3.9.76 → taskuary-0.3.9.78/taskuary.egg-info}/PKG-INFO +72 -29
  40. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary.egg-info/SOURCES.txt +17 -14
  41. taskuary-0.3.9.78/tests/test_blanks.py +102 -0
  42. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_demo.py +64 -0
  43. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_quick_work.py +8 -0
  44. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_needs_agent.py +1 -0
  45. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rulebook.py +10 -0
  46. taskuary-0.3.9.78/tests/test_scam_reads_as_danger.py +72 -0
  47. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_session_record.py +26 -0
  48. taskuary-0.3.9.76/taskuary/web/assets/GeneralWorkspace-BB6eU5DH.css +0 -1
  49. taskuary-0.3.9.76/taskuary/web/assets/index-CoFCrRS6.js +0 -474
  50. taskuary-0.3.9.76/tests/test_scam_reads_as_danger.py +0 -21
  51. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/LICENSE +0 -0
  52. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/setup.cfg +0 -0
  53. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/__init__.py +0 -0
  54. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/acp.py +0 -0
  55. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/advisor.py +0 -0
  56. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/agents.py +0 -0
  57. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/agenttools.py +0 -0
  58. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/aidefaults.py +0 -0
  59. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/aisetup.py +0 -0
  60. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/alchemy.py +0 -0
  61. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/amazon_sp.py +0 -0
  62. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/appfacts.py +0 -0
  63. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/artifacts.py +0 -0
  64. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/asks.py +0 -0
  65. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/assistant.py +0 -0
  66. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/assistantblocks.py +0 -0
  67. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/attachtext.py +0 -0
  68. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/autoreply.py +0 -0
  69. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/awake.py +0 -0
  70. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/aws.py +0 -0
  71. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/azure.py +0 -0
  72. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/background.py +0 -0
  73. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/batch.py +0 -0
  74. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/blackboard.py +0 -0
  75. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/brainroute.py +0 -0
  76. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/brief.py +0 -0
  77. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/browsergate.py +0 -0
  78. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/browserview.py +0 -0
  79. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/bugreport.py +0 -0
  80. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/bulk.py +0 -0
  81. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/buttons.json +0 -0
  82. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/buttons.py +0 -0
  83. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/byrecipient.py +0 -0
  84. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/calendar.py +0 -0
  85. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/calwrite.py +0 -0
  86. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/capabilities.py +0 -0
  87. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/categories.py +0 -0
  88. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/chains.py +0 -0
  89. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/channels.py +0 -0
  90. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/chatformat.py +0 -0
  91. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/chatgptauth.py +0 -0
  92. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/chatservers.py +0 -0
  93. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/ci.py +0 -0
  94. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/claude_artifacts.py +0 -0
  95. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/cli.py +0 -0
  96. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/cli_connections.py +0 -0
  97. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/cli_install_terminal.py +0 -0
  98. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/cliinstall.py +0 -0
  99. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/climodels.py +0 -0
  100. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/clipool.py +0 -0
  101. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/clis.py +0 -0
  102. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/clisetup.py +0 -0
  103. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/cloudfix.py +0 -0
  104. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/combine.py +0 -0
  105. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/compose.py +0 -0
  106. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/config.py +0 -0
  107. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/connectorcatalog.json +0 -0
  108. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/connectorcatalog.py +0 -0
  109. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/context.py +0 -0
  110. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/continuity.py +0 -0
  111. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/counsel.py +0 -0
  112. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/dashboards.py +0 -0
  113. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/databases.py +0 -0
  114. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/db.py +0 -0
  115. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/dependents.py +0 -0
  116. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/deps.py +0 -0
  117. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/desktop.py +0 -0
  118. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/devtools.py +0 -0
  119. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/digest.py +0 -0
  120. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/docsync.py +0 -0
  121. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/doorway_browse.py +0 -0
  122. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/episodes.py +0 -0
  123. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/evalset.py +0 -0
  124. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/evening.py +0 -0
  125. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/failures.py +0 -0
  126. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/faults.py +0 -0
  127. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/fileaccess.py +0 -0
  128. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/files.py +0 -0
  129. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/filing.py +0 -0
  130. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/firstrun.py +0 -0
  131. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/floor.py +0 -0
  132. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/flow.py +0 -0
  133. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/funnel_presentation.py +0 -0
  134. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/funnel_selection.py +0 -0
  135. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/ghcloseout.py +0 -0
  136. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/github.py +0 -0
  137. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/goals.py +0 -0
  138. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/googlecal.py +0 -0
  139. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/guard.py +0 -0
  140. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/handbook.py +0 -0
  141. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/handraise.py +0 -0
  142. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/histgen.py +0 -0
  143. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/hooks.py +0 -0
  144. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/hub.py +0 -0
  145. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/images.py +0 -0
  146. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/imapmail.py +0 -0
  147. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/imessage.py +0 -0
  148. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/instance.py +0 -0
  149. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/intacct.py +0 -0
  150. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/interview.py +0 -0
  151. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/invoice_workflow.py +0 -0
  152. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/jev.py +0 -0
  153. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/kbembed.py +0 -0
  154. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/kinds.json +0 -0
  155. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/kinds.py +0 -0
  156. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/knowledge.py +0 -0
  157. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/lanes.json +0 -0
  158. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/lanes.py +0 -0
  159. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/launchkey.py +0 -0
  160. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/learn.py +0 -0
  161. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/learned_cut.py +0 -0
  162. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/learnedgraph.py +0 -0
  163. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/learnedlines.py +0 -0
  164. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/linkdocs.py +0 -0
  165. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/linkedin.py +0 -0
  166. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/live.py +0 -0
  167. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/llm.py +0 -0
  168. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/logs.py +0 -0
  169. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/lookups.py +0 -0
  170. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/mailauth.py +0 -0
  171. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/mailsearch.py +0 -0
  172. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/markets.py +0 -0
  173. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/mcp.py +0 -0
  174. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/memoryedit.py +0 -0
  175. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/memorylines.py +0 -0
  176. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/messengers.py +0 -0
  177. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/msauth.py +0 -0
  178. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/mssql.py +0 -0
  179. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/net.py +0 -0
  180. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/operations.py +0 -0
  181. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/orgchart.py +0 -0
  182. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/origin.py +0 -0
  183. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/outbound.py +0 -0
  184. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/outbox.py +0 -0
  185. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/outcomes.py +0 -0
  186. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/outputs.py +0 -0
  187. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/ownwork.py +0 -0
  188. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/pathcache.py +0 -0
  189. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/people.py +0 -0
  190. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/people_pages.py +0 -0
  191. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/peoplesearch.py +0 -0
  192. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/playbook_facts.py +0 -0
  193. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/playbooks.py +0 -0
  194. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/pm.py +0 -0
  195. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/policy.py +0 -0
  196. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/presses.py +0 -0
  197. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/problems.py +0 -0
  198. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing.py +0 -0
  199. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_inventory.py +0 -0
  200. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_membership.py +0 -0
  201. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_navigation.py +0 -0
  202. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_order.py +0 -0
  203. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_projection.py +0 -0
  204. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_rail.py +0 -0
  205. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_reads.py +0 -0
  206. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/processing_startup.py +0 -0
  207. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/projects.py +0 -0
  208. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/promote.py +0 -0
  209. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/promptmap.py +0 -0
  210. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/proof.py +0 -0
  211. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/proposals.py +0 -0
  212. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/quickbooks.py +0 -0
  213. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/railcheck.py +0 -0
  214. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/reasonnet.py +0 -0
  215. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/recentlydeleted.py +0 -0
  216. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/redact.py +0 -0
  217. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/remind.py +0 -0
  218. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/remote_assistant.py +0 -0
  219. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/reports.py +0 -0
  220. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/research.py +0 -0
  221. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/reshape.py +0 -0
  222. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/responder.py +0 -0
  223. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/retention.py +0 -0
  224. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/robinhood.py +0 -0
  225. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/roles.py +0 -0
  226. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/routing.py +0 -0
  227. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/routingmemory.py +0 -0
  228. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/scopes.py +0 -0
  229. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/search.py +0 -0
  230. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/selfclose.py +0 -0
  231. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/semantic.py +0 -0
  232. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/senders.py +0 -0
  233. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sendfilter.py +0 -0
  234. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sentjudge.py +0 -0
  235. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/session_artifacts.py +0 -0
  236. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sessionfiles.py +0 -0
  237. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/settings_defaults.json +0 -0
  238. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/settings_schema.json +0 -0
  239. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/settings_schema.py +0 -0
  240. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/setup.py +0 -0
  241. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sharepoint.py +0 -0
  242. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sharing.py +0 -0
  243. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sheets.py +0 -0
  244. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/shellgate.py +0 -0
  245. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/signatures.py +0 -0
  246. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/signin.py +0 -0
  247. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/simplefin.py +0 -0
  248. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/since.py +0 -0
  249. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/skillimport.py +0 -0
  250. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/skills/soul-interview/SKILL.md +0 -0
  251. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/skills/taskuary-setup/SKILL.md +0 -0
  252. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/slots.py +0 -0
  253. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/social.py +0 -0
  254. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/spawn.py +0 -0
  255. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/stages.json +0 -0
  256. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/stages.py +0 -0
  257. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/sweep.py +0 -0
  258. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/taskstate.py +0 -0
  259. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/teller.py +0 -0
  260. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/agent.md +0 -0
  261. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/analyst.md +0 -0
  262. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/ap.md +0 -0
  263. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/assistant.md +0 -0
  264. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/coding.md +0 -0
  265. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/coordinator.md +0 -0
  266. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/counsel.md +0 -0
  267. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/digest.md +0 -0
  268. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.3.5.md +0 -0
  269. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.6.8.md +0 -0
  270. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.6.9-examples.md +0 -0
  271. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.6.9-remind.md +0 -0
  272. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.6.9.md +0 -0
  273. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.7.10.md +0 -0
  274. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.7.4.md +0 -0
  275. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.7.7.md +0 -0
  276. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.9.3-audit.md +0 -0
  277. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.9.3-buttons.md +0 -0
  278. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.9.3.md +0 -0
  279. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/history/counsel-0.3.9.6-router.md +0 -0
  280. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/how-it-works.md +0 -0
  281. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/job.md +0 -0
  282. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/learned.md +0 -0
  283. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/marketer.md +0 -0
  284. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/playbook.md +0 -0
  285. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/profile.md +0 -0
  286. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/researcher.md +0 -0
  287. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/soul.md +0 -0
  288. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/style.md +0 -0
  289. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/templates/trader.md +0 -0
  290. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/testing.py +0 -0
  291. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/textsim.py +0 -0
  292. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/timewords.py +0 -0
  293. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/toil.py +0 -0
  294. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/toolcatalog.py +0 -0
  295. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/totp.py +0 -0
  296. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/trackers.py +0 -0
  297. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/trackrecord.py +0 -0
  298. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/treg.py +0 -0
  299. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/triage_kind_rules.json +0 -0
  300. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/troubleshoot.py +0 -0
  301. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/unpack.py +0 -0
  302. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/unsubscribe.py +0 -0
  303. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/update.py +0 -0
  304. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/usual.py +0 -0
  305. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/vault.py +0 -0
  306. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/voice.py +0 -0
  307. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/wabridge.py +0 -0
  308. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/waiton.py +0 -0
  309. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/waitroom.py +0 -0
  310. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/walk.py +0 -0
  311. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/wanames.py +0 -0
  312. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/OFL-IBM-Plex-Mono.txt +0 -0
  313. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/OFL-IBM-Plex-Sans.txt +0 -0
  314. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  315. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  316. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  317. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  318. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
  319. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2 +0 -0
  320. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  321. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  322. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  323. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2 +0 -0
  324. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2 +0 -0
  325. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2 +0 -0
  326. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2 +0 -0
  327. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2 +0 -0
  328. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/assets/index-DQfmlxp2.css +0 -0
  329. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/favicon.ico +0 -0
  330. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/favicon.png +0 -0
  331. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/assistant.png +0 -0
  332. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/board.png +0 -0
  333. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/connections.png +0 -0
  334. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/docs.png +0 -0
  335. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/hub.png +0 -0
  336. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/reports.png +0 -0
  337. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/settings.png +0 -0
  338. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/web/walk/tasks.png +0 -0
  339. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/webguard.py +0 -0
  340. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/welcome.py +0 -0
  341. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/whatsapp/bridge.mjs +0 -0
  342. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/whatsapp/health.mjs +0 -0
  343. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/whatsapp/package.json +0 -0
  344. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/whatsapp/policy.mjs +0 -0
  345. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/whatsapp/poll.mjs +0 -0
  346. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/whatsapp/roster.mjs +0 -0
  347. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/whoami.py +0 -0
  348. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/witness.py +0 -0
  349. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/words.py +0 -0
  350. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/workerstate.py +0 -0
  351. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/workflows.py +0 -0
  352. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/working.py +0 -0
  353. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/wrapup.py +0 -0
  354. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/writeup.py +0 -0
  355. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary/zoho.py +0 -0
  356. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary.egg-info/dependency_links.txt +0 -0
  357. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary.egg-info/entry_points.txt +0 -0
  358. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary.egg-info/requires.txt +0 -0
  359. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/taskuary.egg-info/top_level.txt +0 -0
  360. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_acp.py +0 -0
  361. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advice_status.py +0 -0
  362. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor.py +0 -0
  363. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_after_send.py +0 -0
  364. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_agreement.py +0 -0
  365. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_audit_rulings.py +0 -0
  366. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_cases.py +0 -0
  367. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_consistent.py +0 -0
  368. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_context.py +0 -0
  369. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_critique_fix.py +0 -0
  370. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_finish_check.py +0 -0
  371. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_idea_words.py +0 -0
  372. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_memory_live.py +0 -0
  373. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_memory_reason.py +0 -0
  374. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_press.py +0 -0
  375. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_refused.py +0 -0
  376. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_rules.py +0 -0
  377. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_task_source.py +0 -0
  378. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_advisor_usual.py +0 -0
  379. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_answer_route.py +0 -0
  380. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_answers_and_reminders.py +0 -0
  381. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_asking.py +0 -0
  382. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_asks_to_move.py +0 -0
  383. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_box.py +0 -0
  384. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_closed_page.py +0 -0
  385. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_environment.py +0 -0
  386. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_history_search.py +0 -0
  387. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_identity.py +0 -0
  388. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_profiles.py +0 -0
  389. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_question_once.py +0 -0
  390. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_reply.py +0 -0
  391. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_sends_are_proposals.py +0 -0
  392. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_sentence.py +0 -0
  393. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_source.py +0 -0
  394. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_state_after_answer.py +0 -0
  395. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_states_agree.py +0 -0
  396. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_steps_backends.py +0 -0
  397. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_ticks.py +0 -0
  398. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_toolbox.py +0 -0
  399. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_agent_wall.py +0 -0
  400. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_ai_defaults.py +0 -0
  401. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_ai_not_overruled.py +0 -0
  402. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_aisetup.py +0 -0
  403. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_alchemy.py +0 -0
  404. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_amazon_sp.py +0 -0
  405. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_an_inbox_is_not_a_destination.py +0 -0
  406. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_answered_outside_opens_close_out.py +0 -0
  407. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_answered_yourself.py +0 -0
  408. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_answers.py +0 -0
  409. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_api.py +0 -0
  410. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_api_web.py +0 -0
  411. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_api_worker_signals.py +0 -0
  412. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_app_own_screens.py +0 -0
  413. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_app_uptime.py +0 -0
  414. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_appfacts.py +0 -0
  415. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_approval_interrupt.py +0 -0
  416. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_approve_what_was_shown.py +0 -0
  417. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_archive_is_read.py +0 -0
  418. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_arrived_today.py +0 -0
  419. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_asks.py +0 -0
  420. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant.py +0 -0
  421. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_acts.py +0 -0
  422. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_blocks.py +0 -0
  423. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_can_look_things_up.py +0 -0
  424. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_doorways.py +0 -0
  425. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_fast.py +0 -0
  426. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_ideas.py +0 -0
  427. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_meeting.py +0 -0
  428. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_notifications.py +0 -0
  429. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_payload_offers.py +0 -0
  430. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_presentation.py +0 -0
  431. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_queries.py +0 -0
  432. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_quick.py +0 -0
  433. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_reactions.py +0 -0
  434. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_router.py +0 -0
  435. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_verdicts.py +0 -0
  436. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_walk.py +0 -0
  437. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_assistant_whole_app.py +0 -0
  438. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_async_triage.py +0 -0
  439. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_attachment_text.py +0 -0
  440. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_audit_chain.py +0 -0
  441. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_audit_fixes.py +0 -0
  442. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_auto_start.py +0 -0
  443. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_autoreply.py +0 -0
  444. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_aws_region.py +0 -0
  445. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_azure_discovery.py +0 -0
  446. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_background_work.py +0 -0
  447. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_banner_is_one_rule.py +0 -0
  448. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_batch.py +0 -0
  449. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_batch_session_end.py +0 -0
  450. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_blackboard.py +0 -0
  451. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brain_layer.py +0 -0
  452. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brain_reaches_the_session.py +0 -0
  453. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brain_resolver.py +0 -0
  454. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brain_said.py +0 -0
  455. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute.py +0 -0
  456. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_api.py +0 -0
  457. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_auto.py +0 -0
  458. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_data.py +0 -0
  459. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_draft.py +0 -0
  460. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_escalate.py +0 -0
  461. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_health.py +0 -0
  462. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_judged.py +0 -0
  463. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_log.py +0 -0
  464. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_person.py +0 -0
  465. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_brainroute_strong.py +0 -0
  466. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_browser_gate.py +0 -0
  467. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_browser_session.py +0 -0
  468. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_browser_view_in_canvas.py +0 -0
  469. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_browser_workflow.py +0 -0
  470. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_browserview.py +0 -0
  471. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_bugreport.py +0 -0
  472. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_bugreport_api.py +0 -0
  473. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_bugreport_draft.py +0 -0
  474. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_bugreport_scrub.py +0 -0
  475. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_button_promises.py +0 -0
  476. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_buttons.py +0 -0
  477. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_buttons_catalog.py +0 -0
  478. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_calendar.py +0 -0
  479. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_calendar_today.py +0 -0
  480. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_calendar_write.py +0 -0
  481. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_call_road_checks.py +0 -0
  482. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_canvas_block.py +0 -0
  483. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_canvas_relay.py +0 -0
  484. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_canvas_sections.py +0 -0
  485. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_capabilities.py +0 -0
  486. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_card_save_keeps_on_off.py +0 -0
  487. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_card_story_phone.py +0 -0
  488. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_carry_on.py +0 -0
  489. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_categories.py +0 -0
  490. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cc.py +0 -0
  491. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cc_triage.py +0 -0
  492. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chase_lit_is_chase_done.py +0 -0
  493. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_doors.py +0 -0
  494. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_echo_mail.py +0 -0
  495. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_freshness.py +0 -0
  496. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_is_not_one_task.py +0 -0
  497. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_proposals.py +0 -0
  498. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_queue.py +0 -0
  499. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_relationship.py +0 -0
  500. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_retention.py +0 -0
  501. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_setup.py +0 -0
  502. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_shows.py +0 -0
  503. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chat_trust.py +0 -0
  504. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chatformat.py +0 -0
  505. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chatgpt_signin_ends.py +0 -0
  506. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chatgptauth.py +0 -0
  507. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chatservers.py +0 -0
  508. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_chinese_clis.py +0 -0
  509. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_claude_artifacts.py +0 -0
  510. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_clean_context.py +0 -0
  511. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_connections.py +0 -0
  512. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_failure.py +0 -0
  513. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_help.py +0 -0
  514. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_install.py +0 -0
  515. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_install_terminal.py +0 -0
  516. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_not_assumed.py +0 -0
  517. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_on_fresh_path.py +0 -0
  518. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_prompt_road.py +0 -0
  519. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_setup.py +0 -0
  520. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cli_update.py +0 -0
  521. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_climodels.py +0 -0
  522. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_clipool.py +0 -0
  523. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_clis.py +0 -0
  524. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_close_slots.py +0 -0
  525. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_close_with_a_note.py +0 -0
  526. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_closed_task_is_not_fyi.py +0 -0
  527. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_closed_thread_joins_open_job.py +0 -0
  528. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_closeout.py +0 -0
  529. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cloud.py +0 -0
  530. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cloud_sources.py +0 -0
  531. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cloudfix.py +0 -0
  532. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_coding_asks_before_deploy.py +0 -0
  533. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_coding_needs_a_cli.py +0 -0
  534. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_coding_session_continuity.py +0 -0
  535. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_combine_level.py +0 -0
  536. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_completion_freshness.py +0 -0
  537. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_compose.py +0 -0
  538. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_compose_sources.py +0 -0
  539. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_compose_workflows.py +0 -0
  540. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_computer_use_ux.py +0 -0
  541. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_concierge.py +0 -0
  542. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_concierge_chat_ai.py +0 -0
  543. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_concierge_counsel.py +0 -0
  544. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_config.py +0 -0
  545. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_connected_count.py +0 -0
  546. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_connector_dependents.py +0 -0
  547. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_context.py +0 -0
  548. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_context_refresh_freshness.py +0 -0
  549. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_continue_after_self_close.py +0 -0
  550. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_continue_session.py +0 -0
  551. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_coordination.py +0 -0
  552. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_core.py +0 -0
  553. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_correction_doors.py +0 -0
  554. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_counsel.py +0 -0
  555. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_counsel_consumers.py +0 -0
  556. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_counsel_migration.py +0 -0
  557. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_counsel_sections.py +0 -0
  558. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_current_restore.py +0 -0
  559. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_cwlogs_paging.py +0 -0
  560. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_danger_holds_start.py +0 -0
  561. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_danger_verdict.py +0 -0
  562. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_dashboards.py +0 -0
  563. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_data_is_coding.py +0 -0
  564. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_databases.py +0 -0
  565. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_deps.py +0 -0
  566. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_desktop.py +0 -0
  567. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_devin.py +0 -0
  568. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_devtools.py +0 -0
  569. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_diff_review.py +0 -0
  570. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_digest_brief.py +0 -0
  571. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_dispatch_retries.py +0 -0
  572. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_docs_and_llm.py +0 -0
  573. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_docs_flow.py +0 -0
  574. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_docs_manifest.py +0 -0
  575. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_draft_choices.py +0 -0
  576. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_draft_with_ai_is_never_put_down.py +0 -0
  577. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_drafter_needs_is_not_a_failure.py +0 -0
  578. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_drafter_sees_who_is_asked.py +0 -0
  579. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_due_days.py +0 -0
  580. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_duplicate_connectors.py +0 -0
  581. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_edit_recipient.py +0 -0
  582. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_email_chains.py +0 -0
  583. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_email_identity_routing.py +0 -0
  584. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_ending_a_run_writes_the_answer.py +0 -0
  585. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_ending_keeps_the_write_up.py +0 -0
  586. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_episodes.py +0 -0
  587. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_evening_brief.py +0 -0
  588. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_every_card_is_reachable.py +0 -0
  589. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_every_cli_startable.py +0 -0
  590. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_exe_splash.py +0 -0
  591. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_explicit_completion.py +0 -0
  592. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_factory.py +0 -0
  593. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_failed_acts.py +0 -0
  594. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_failed_agent_is_a_failure.py +0 -0
  595. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_faults_inert.py +0 -0
  596. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_feed_lookups.py +0 -0
  597. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_feed_working.py +0 -0
  598. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_feedback_ask_is_answered.py +0 -0
  599. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_file_routes.py +0 -0
  600. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_files.py +0 -0
  601. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_files_promised.py +0 -0
  602. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_filing.py +0 -0
  603. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_final_answer_capture.py +0 -0
  604. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_finished_agent_one_state.py +0 -0
  605. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_finished_chat_stays_finished.py +0 -0
  606. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_first_run_triage.py +0 -0
  607. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_firstrun.py +0 -0
  608. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_floating_assistant.py +0 -0
  609. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_floor.py +0 -0
  610. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_floor_bypasses.py +0 -0
  611. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_floor_wave_b.py +0 -0
  612. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_flow.py +0 -0
  613. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_flow_is_a_report.py +0 -0
  614. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_flow_review.py +0 -0
  615. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_flow_untrusted.py +0 -0
  616. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_follow_up_verdict.py +0 -0
  617. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_fresh_evaluation.py +0 -0
  618. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_freshness.py +0 -0
  619. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_freshness_walk.py +0 -0
  620. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_funnel.py +0 -0
  621. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_fyi_paging.py +0 -0
  622. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_fyi_thread_row.py +0 -0
  623. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_general.py +0 -0
  624. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_general_agent_permissions.py +0 -0
  625. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_general_brain_is_chosen.py +0 -0
  626. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_general_knows_the_repos.py +0 -0
  627. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_general_reads_the_hub.py +0 -0
  628. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_general_report_note.py +0 -0
  629. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_general_turn_ends_short.py +0 -0
  630. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_github_auto.py +0 -0
  631. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_github_images.py +0 -0
  632. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_github_poll_scope.py +0 -0
  633. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_goal_serves.py +0 -0
  634. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_goals_api.py +0 -0
  635. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_goals_chat.py +0 -0
  636. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_goals_promises.py +0 -0
  637. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_goals_rail.py +0 -0
  638. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_goals_store.py +0 -0
  639. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_gone_surfaces.py +0 -0
  640. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_google_calendar_signin.py +0 -0
  641. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_guard.py +0 -0
  642. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_habit_end_to_end.py +0 -0
  643. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_hand_task_checklist.py +0 -0
  644. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_handbook.py +0 -0
  645. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_handbook_topics.py +0 -0
  646. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_handoff_channels.py +0 -0
  647. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_handraise.py +0 -0
  648. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_harvest.py +0 -0
  649. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_held_ask_answers.py +0 -0
  650. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_hipaa_ai.py +0 -0
  651. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_histgen.py +0 -0
  652. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_home_is_never_yours.py +0 -0
  653. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_hook_never_hangs_silently.py +0 -0
  654. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_hook_off_loop.py +0 -0
  655. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_hook_token_file.py +0 -0
  656. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_hooks_events.py +0 -0
  657. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_hooks_version.py +0 -0
  658. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_how_it_works.py +0 -0
  659. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_idea_verdicts.py +0 -0
  660. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_ideas_triage.py +0 -0
  661. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_ignore_sender.py +0 -0
  662. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_ignore_sender_quiets_its_work.py +0 -0
  663. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_images.py +0 -0
  664. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_imap_catchup.py +0 -0
  665. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_imap_history.py +0 -0
  666. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_imap_sent_threads.py +0 -0
  667. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_imapmail.py +0 -0
  668. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_imessage.py +0 -0
  669. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_inline_pictures.py +0 -0
  670. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_intacct.py +0 -0
  671. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_interrupted_work.py +0 -0
  672. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_invite_is_not_work.py +0 -0
  673. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_invoice_workflow.py +0 -0
  674. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_jev.py +0 -0
  675. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_judge_reads_the_conclusion.py +0 -0
  676. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_kind_dispatch.py +0 -0
  677. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_kinds.py +0 -0
  678. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_knowledge.py +0 -0
  679. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_knowledge_semantic.py +0 -0
  680. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_lane_vocabulary.py +0 -0
  681. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_lanes_registry.py +0 -0
  682. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_later_today.py +0 -0
  683. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_launch_key.py +0 -0
  684. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_launch_key_private.py +0 -0
  685. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_layer_profiles.py +0 -0
  686. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_learn_put_off.py +0 -0
  687. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_learned_by_reader.py +0 -0
  688. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_learnedgraph.py +0 -0
  689. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_lifecycle.py +0 -0
  690. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_lifespan_loops_are_guarded.py +0 -0
  691. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_linked_documents.py +0 -0
  692. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_linkedin.py +0 -0
  693. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_linkedin_connect.py +0 -0
  694. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_linkedin_signin.py +0 -0
  695. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_live.py +0 -0
  696. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_local_file.py +0 -0
  697. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_lookup_limits.py +0 -0
  698. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_lookups.py +0 -0
  699. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mail_catchup.py +0 -0
  700. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mail_fetch_cost.py +0 -0
  701. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mail_folders.py +0 -0
  702. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mailauth.py +0 -0
  703. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mailbox_identity.py +0 -0
  704. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mark_done_unsent_reply.py +0 -0
  705. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mark_read.py +0 -0
  706. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_markets.py +0 -0
  707. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mcp.py +0 -0
  708. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_meeting_prep.py +0 -0
  709. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_meeting_prepare.py +0 -0
  710. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_memory_edit.py +0 -0
  711. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_memory_gates.py +0 -0
  712. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_memory_one.py +0 -0
  713. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_memory_yardstick.py +0 -0
  714. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_message_thread.py +0 -0
  715. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_messengers.py +0 -0
  716. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_model_list.py +0 -0
  717. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_morning_line.py +0 -0
  718. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_msauth.py +0 -0
  719. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_mssql.py +0 -0
  720. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_multi_connectors.py +0 -0
  721. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_multi_question.py +0 -0
  722. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_muse.py +0 -0
  723. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_net.py +0 -0
  724. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_new_meeting.py +0 -0
  725. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_new_task_from_words.py +0 -0
  726. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_new_walk_off_the_lifespan.py +0 -0
  727. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_ai_has_a_way_on.py +0 -0
  728. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_checkout_no_start.py +0 -0
  729. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_coding_tool_no_start.py +0 -0
  730. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_dispatch_while_agent_runs.py +0 -0
  731. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_gateway_address.py +0 -0
  732. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_personal_paths.py +0 -0
  733. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_pydantic_v1.py +0 -0
  734. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_redraft_after_send.py +0 -0
  735. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_reply_is_the_writers_call.py +0 -0
  736. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_no_shadowed_names.py +0 -0
  737. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_noop_ending.py +0 -0
  738. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_not_a_task_undo.py +0 -0
  739. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_not_coding.py +0 -0
  740. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_note_retrieval.py +0 -0
  741. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_notes_applied.py +0 -0
  742. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_offer_is_doable.py +0 -0
  743. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_onboarding_walk.py +0 -0
  744. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_one_app_one_reason.py +0 -0
  745. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_one_git_status_per_read.py +0 -0
  746. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_one_instance.py +0 -0
  747. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_one_pty_one_geometry.py +0 -0
  748. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_only_your_own_thread.py +0 -0
  749. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_op_label_day.py +0 -0
  750. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_openai_compatible_brains.py +0 -0
  751. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_operations.py +0 -0
  752. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_orgchart.py +0 -0
  753. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_origin.py +0 -0
  754. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_origin_doors.py +0 -0
  755. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_origin_launch.py +0 -0
  756. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_origin_roads.py +0 -0
  757. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_origin_seed.py +0 -0
  758. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_outbound_reports.py +0 -0
  759. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_outbox.py +0 -0
  760. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_outcomes.py +0 -0
  761. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_own_line_two_tasks.py +0 -0
  762. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_own_rows_no_reply.py +0 -0
  763. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_owner_asks_in_terminal.py +0 -0
  764. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_owner_facts_known.py +0 -0
  765. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_owner_one_door.py +0 -0
  766. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_pane_keeps_the_screen.py +0 -0
  767. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_pane_theme.py +0 -0
  768. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_passed_line.py +0 -0
  769. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_people.py +0 -0
  770. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_people_pages.py +0 -0
  771. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_people_search.py +0 -0
  772. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_permit.py +0 -0
  773. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_person_name.py +0 -0
  774. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_agent_card.py +0 -0
  775. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_approved.py +0 -0
  776. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_browse_pass.py +0 -0
  777. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_files.py +0 -0
  778. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_follows_up.py +0 -0
  779. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_only_when_asked.py +0 -0
  780. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_picks.py +0 -0
  781. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_rewalk.py +0 -0
  782. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_todos.py +0 -0
  783. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_phone_walk_ux.py +0 -0
  784. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_pile_copy_and_encode.py +0 -0
  785. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_plain_failures.py +0 -0
  786. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_playbook_and_closeout.py +0 -0
  787. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_playbook_facts.py +0 -0
  788. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_playbook_setup.py +0 -0
  789. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_playbooks.py +0 -0
  790. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_pm.py +0 -0
  791. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_policy_mailbox.py +0 -0
  792. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_poll_lanes.py +0 -0
  793. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_poll_overlap.py +0 -0
  794. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_poll_parallel.py +0 -0
  795. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_poll_sources.py +0 -0
  796. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_pr_comments.py +0 -0
  797. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_press_never_waits.py +0 -0
  798. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_presses.py +0 -0
  799. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_priority_three.py +0 -0
  800. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_problems.py +0 -0
  801. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_problems_dismiss.py +0 -0
  802. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_procedure_selection.py +0 -0
  803. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_processing_demo_replay.py +0 -0
  804. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_processing_ledger.py +0 -0
  805. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_profile_is_a_role.py +0 -0
  806. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_progress_without_markers.py +0 -0
  807. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_projects.py +0 -0
  808. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_promise_came_from.py +0 -0
  809. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_promise_owes_reply.py +0 -0
  810. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_promote.py +0 -0
  811. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_prompt_images.py +0 -0
  812. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_prompt_sources.py +0 -0
  813. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_promptmap_and_catalog.py +0 -0
  814. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_proof_ci_proposals.py +0 -0
  815. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_protocol_marks.py +0 -0
  816. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_pypi_downloads.py +0 -0
  817. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_quick_replay.py +0 -0
  818. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_quickbooks.py +0 -0
  819. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_quit_and_update.py +0 -0
  820. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_qwen.py +0 -0
  821. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rail_advisor_cases.py +0 -0
  822. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rail_advisor_memory.py +0 -0
  823. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rail_advisor_memory_live.py +0 -0
  824. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rail_decisions.py +0 -0
  825. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rail_read.py +0 -0
  826. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_railcheck.py +0 -0
  827. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rank.py +0 -0
  828. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rate_limit.py +0 -0
  829. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_read_text.py +0 -0
  830. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reason_network.py +0 -0
  831. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_recent_closures.py +0 -0
  832. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_recently_deleted.py +0 -0
  833. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reclassify.py +0 -0
  834. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_redact.py +0 -0
  835. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_redact_doors.py +0 -0
  836. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_remind.py +0 -0
  837. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_remote_assistant.py +0 -0
  838. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_remote_sections.py +0 -0
  839. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reopened_arrives_now.py +0 -0
  840. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reopened_by_work_stays_on_rail.py +0 -0
  841. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reopened_conversation.py +0 -0
  842. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_replay_off_the_loop.py +0 -0
  843. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_always_drafts.py +0 -0
  844. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_attachments.py +0 -0
  845. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_channels.py +0 -0
  846. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_envelope.py +0 -0
  847. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_leaves_by_smtp.py +0 -0
  848. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_loop_in.py +0 -0
  849. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_needs_a_correspondent.py +0 -0
  850. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_opens_at_once.py +0 -0
  851. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_sees_pictures.py +0 -0
  852. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_sources.py +0 -0
  853. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_target.py +0 -0
  854. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_voice.py +0 -0
  855. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reply_watch.py +0 -0
  856. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_repo_choice_triage.py +0 -0
  857. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_alerts.py +0 -0
  858. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_deliver.py +0 -0
  859. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_delivery_gate.py +0 -0
  860. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_headline.py +0 -0
  861. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_made_task.py +0 -0
  862. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_off.py +0 -0
  863. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_one_road.py +0 -0
  864. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_order_and_research.py +0 -0
  865. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_prompt_isolation.py +0 -0
  866. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_refusal.py +0 -0
  867. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_routing.py +0 -0
  868. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_schedule_saved.py +0 -0
  869. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_sources_honest.py +0 -0
  870. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_triage.py +0 -0
  871. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_report_triage_line.py +0 -0
  872. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reports_graphql.py +0 -0
  873. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_research.py +0 -0
  874. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_research_is_agent_work.py +0 -0
  875. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_research_more.py +0 -0
  876. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_restricted_cli.py +0 -0
  877. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_rests_on.py +0 -0
  878. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_review_delivery_api.py +0 -0
  879. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_review_delivery_safety.py +0 -0
  880. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_review_task.py +0 -0
  881. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_reviews.py +0 -0
  882. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_robinhood.py +0 -0
  883. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_roles.py +0 -0
  884. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_routines.py +0 -0
  885. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_routing_memory.py +0 -0
  886. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_row_presentation.py +0 -0
  887. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_run_another_general.py +0 -0
  888. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_run_cost.py +0 -0
  889. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_s3_poll_paging.py +0 -0
  890. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_same_topic_joins.py +0 -0
  891. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_scopes.py +0 -0
  892. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_search.py +0 -0
  893. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_security_followups.py +0 -0
  894. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_seed_fits_a_tty.py +0 -0
  895. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_seeded_reports.py +0 -0
  896. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_selector_vocabulary.py +0 -0
  897. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_self_healing.py +0 -0
  898. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_semantic.py +0 -0
  899. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_send_close_waits_on_held.py +0 -0
  900. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_send_is_not_close.py +0 -0
  901. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_send_outcomes.py +0 -0
  902. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_send_targets.py +0 -0
  903. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sender_history.py +0 -0
  904. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sender_trust.py +0 -0
  905. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sender_words.py +0 -0
  906. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sendfilter.py +0 -0
  907. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sent_mail_joins_work.py +0 -0
  908. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sentjudge.py +0 -0
  909. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_separate_asks_split.py +0 -0
  910. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_session_artifacts.py +0 -0
  911. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_session_continuity.py +0 -0
  912. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_session_endings.py +0 -0
  913. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_session_files.py +0 -0
  914. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_settings_blank_default.py +0 -0
  915. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_settings_defaults_json.py +0 -0
  916. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_settings_paths.py +0 -0
  917. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_settings_schema.py +0 -0
  918. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_setup.py +0 -0
  919. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_setup_about.py +0 -0
  920. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_setup_never_assumes.py +0 -0
  921. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_setup_skill.py +0 -0
  922. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_setup_state.py +0 -0
  923. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_setup_walk.py +0 -0
  924. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sharing.py +0 -0
  925. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sheets_sharepoint.py +0 -0
  926. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_shell_gate.py +0 -0
  927. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_should_be_a_task.py +0 -0
  928. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_signature_layer.py +0 -0
  929. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_signature_learn.py +0 -0
  930. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_signin.py +0 -0
  931. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_signup_from_a_message.py +0 -0
  932. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_signup_routing.py +0 -0
  933. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_simplefin.py +0 -0
  934. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_since.py +0 -0
  935. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_skillimport.py +0 -0
  936. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_slipped.py +0 -0
  937. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_social.py +0 -0
  938. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_someone_else_replied.py +0 -0
  939. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_soul_interview.py +0 -0
  940. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stages.py +0 -0
  941. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stand_ins_stay_out_of_code.py +0 -0
  942. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_start_after_writeup.py +0 -0
  943. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_startup_contract.py +0 -0
  944. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stay_open.py +0 -0
  945. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stay_open_doors.py +0 -0
  946. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_store_app_cli.py +0 -0
  947. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_store_failed_write.py +0 -0
  948. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_store_hotpaths.py +0 -0
  949. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_store_pokes.py +0 -0
  950. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_store_readers.py +0 -0
  951. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_store_stalls.py +0 -0
  952. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stranger_floor_more.py +0 -0
  953. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stranger_hub_wall.py +0 -0
  954. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stranger_live_fixes.py +0 -0
  955. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_stranger_token.py +0 -0
  956. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_strip_signoff.py +0 -0
  957. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sweep.py +0 -0
  958. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_sync_clock.py +0 -0
  959. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_table_context.py +0 -0
  960. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_taken_care_of.py +0 -0
  961. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_ask.py +0 -0
  962. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_checklist.py +0 -0
  963. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_controls_operations.py +0 -0
  964. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_email.py +0 -0
  965. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_footprint.py +0 -0
  966. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_identity.py +0 -0
  967. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_outputs.py +0 -0
  968. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_page_receipts.py +0 -0
  969. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_refs.py +0 -0
  970. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_task_tools.py +0 -0
  971. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_taskstate.py +0 -0
  972. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_telegram_buttons.py +0 -0
  973. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_teller.py +0 -0
  974. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_terminal.py +0 -0
  975. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_terminal_render_fast.py +0 -0
  976. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_textsim.py +0 -0
  977. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_the_exe_ships_what_the_wheel_ships.py +0 -0
  978. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_the_split_holds.py +0 -0
  979. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_thinking_model_room.py +0 -0
  980. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_thread_is_a_hint.py +0 -0
  981. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_timewords.py +0 -0
  982. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_toil.py +0 -0
  983. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_totp.py +0 -0
  984. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_tracker_revisions.py +0 -0
  985. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_tracker_writeback.py +0 -0
  986. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_trackrecord.py +0 -0
  987. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_treg.py +0 -0
  988. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_cleanup.py +0 -0
  989. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_dataset.py +0 -0
  990. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_errors.py +0 -0
  991. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_guide.py +0 -0
  992. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_images.py +0 -0
  993. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_joins.py +0 -0
  994. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_pr_rule.py +0 -0
  995. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_reads_not_guesses.py +0 -0
  996. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_retry_sweep.py +0 -0
  997. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_sees_meetings.py +0 -0
  998. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_triage_urgent.py +0 -0
  999. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_trust_and_start.py +0 -0
  1000. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_trust_buttons.py +0 -0
  1001. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_trust_org.py +0 -0
  1002. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_typed_words_press.py +0 -0
  1003. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_unpack_folder.py +0 -0
  1004. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_unsubscribe.py +0 -0
  1005. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_update.py +0 -0
  1006. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_update_refused.py +0 -0
  1007. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_urgent_and_handoff.py +0 -0
  1008. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_vault.py +0 -0
  1009. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_vendor_invites_fyi.py +0 -0
  1010. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_verdict_paths.py +0 -0
  1011. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_verdict_shape.py +0 -0
  1012. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_verdict_sticks.py +0 -0
  1013. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_vision.py +0 -0
  1014. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_voice.py +0 -0
  1015. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_voice_by_recipient.py +0 -0
  1016. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_wa_chat_not_showing.py +0 -0
  1017. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_wabridge.py +0 -0
  1018. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_wabridge_log_trim.py +0 -0
  1019. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_waiton.py +0 -0
  1020. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_waitroom.py +0 -0
  1021. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_walk_follows_the_rail.py +0 -0
  1022. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_walk_order.py +0 -0
  1023. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_walk_order_is_rail_order.py +0 -0
  1024. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_wanames.py +0 -0
  1025. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_watermark.py +0 -0
  1026. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_web_entrypoint.py +0 -0
  1027. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_webguard.py +0 -0
  1028. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_welcome_and_voice.py +0 -0
  1029. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_whatsapp_documents.py +0 -0
  1030. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_whatsapp_images.py +0 -0
  1031. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_which_cache.py +0 -0
  1032. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_whoami.py +0 -0
  1033. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_why_not_started.py +0 -0
  1034. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_withdrawn.py +0 -0
  1035. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_witness.py +0 -0
  1036. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_wording_slips.py +0 -0
  1037. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_words.py +0 -0
  1038. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_worker_brief.py +0 -0
  1039. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_worker_events.py +0 -0
  1040. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_worker_resumes.py +0 -0
  1041. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_worker_scenarios.py +0 -0
  1042. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_worker_surfaces.py +0 -0
  1043. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_workerstate_said.py +0 -0
  1044. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_workflow_brain.py +0 -0
  1045. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_workflow_from_mail.py +0 -0
  1046. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_workflow_one_road.py +0 -0
  1047. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_workflow_owner_decisions.py +0 -0
  1048. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_workflows.py +0 -0
  1049. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_working.py +0 -0
  1050. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_wrap_asks_ahead.py +0 -0
  1051. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_wrap_open_question.py +0 -0
  1052. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_writeup_in_background.py +0 -0
  1053. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_writing_rule_reaches_drafts.py +0 -0
  1054. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_xlsx_report_headers.py +0 -0
  1055. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_zz_chipverbs.py +0 -0
  1056. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_zz_lastword.py +0 -0
  1057. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_zz_setupchat.py +0 -0
  1058. {taskuary-0.3.9.76 → taskuary-0.3.9.78}/tests/test_zz_toolcatalog.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskuary
3
- Version: 0.3.9.76
3
+ Version: 0.3.9.78
4
4
  Summary: Your work manager. Locally. Securely. In control. Mail, chats and tickets in one list; your agents do the work, you approve. Runs on your machine.
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/ldbumble/taskuary
@@ -73,7 +73,7 @@ Dynamic: license-file
73
73
 
74
74
  [![CI](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml/badge.svg)](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml)
75
75
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ldbumble/taskuary/badge)](https://scorecard.dev/viewer/?uri=github.com/ldbumble/taskuary)
76
- [![PyPI](https://img.shields.io/pypi/v/taskuary.svg?cacheSeconds=300&release=0.3.9.76&asof=0.3.9.76)](https://pypi.org/project/taskuary/)
76
+ [![PyPI](https://img.shields.io/pypi/v/taskuary.svg?cacheSeconds=300&release=0.3.9.78&asof=0.3.9.78)](https://pypi.org/project/taskuary/)
77
77
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-3776ab.svg)](https://github.com/ldbumble/taskuary)
78
78
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
79
79
  [![Stars](https://img.shields.io/github/stars/ldbumble/taskuary?style=flat&color=d4a72c&label=%E2%98%85%20stars)](https://github.com/ldbumble/taskuary/stargazers)
@@ -86,7 +86,7 @@ Dynamic: license-file
86
86
 
87
87
  ![The Assistant's Game view: an office where every task, message and agent is a figure, opening on the whole floor and zooming into each room - the Agent Floor, the Meeting Room where people wait on you, the Gym, the Coffee Room, the Memory Archive, and the Assistant Core.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/hero.webp?v=smooth)
88
88
 
89
- Taskuary is early—currently **v0.3.9.76**—so breaking changes are still possible before 1.0.
89
+ Taskuary is early—currently **v0.3.9.78**—so breaking changes are still possible before 1.0.
90
90
 
91
91
  <p align="center">
92
92
  <a href="https://taskuary.com/demo/"><img
@@ -111,18 +111,17 @@ one card: what changed since last night, what was learned, the morning digest, y
111
111
  what waits in each section - so you never open each system in turn. A goal is a task whose steps
112
112
  are tasks: triage opens one for an open-ended ask, and files later mail under the step it serves.
113
113
 
114
- ![The work rail sorting today's items into Tasks, Reports, and FYI, beside the opening card: agents that finished and a report that ran since last night, the memory and morning digest lines, today's meetings, and what waits in each section.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/01-timeline-sources-and-times.png?v=row)
114
+ ![The work rail sorting today's items into Tasks, Reports, and FYI, beside the opening card: agents that finished and a report that ran since last night, the memory and morning digest lines, today's meetings, and what waits in each section.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/01-timeline-sources-and-times.png?v=spine)
115
115
 
116
116
  ### 2. Let the Assistant walk you through it
117
117
 
118
118
  Choose **Walk me through my tasks**. The Assistant puts one item on the table at a time, as the
119
- same task card you would open yourself, with one row under it: **Back** and **Next**, the move it is up
120
- to (**Mark done** first, then **Reply** or **Send to agent**), **Change ▾**, and **Share**. The buttons always do
121
- the same thing; for everything else, ask in the chat box at the end of the row - the conversation rises
122
- out of it as a window, and the Assistant already has the message, the thread, and your past decisions to
123
- answer from.
119
+ same task you would open yourself. Under it is one small bar, **Nav**: **Back** and **Next**, each greyed
120
+ where there is nowhere to go. Everything you can do to the task sits on the task itself (below). For
121
+ anything else, type in the chat pill in the corner - a window opens out of it, and the Assistant already
122
+ has the message, the thread, and your past decisions to answer from.
124
123
 
125
- ![Ruth's request on the table with the chat window risen out of the chat box at the end of the row: asked what is on the list, the Assistant answers beside the task without moving it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/05-assistant.png?v=row)
124
+ ![Ruth's request on the table with the chat window open out of the corner pill: asked what is on the list, the Assistant answers beside the task without moving it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/05-assistant.png?v=spine)
126
125
 
127
126
  Assistant look-ups clamp result limits to a safe range and use their default when a limit is invalid.
128
127
 
@@ -130,25 +129,32 @@ Assistant look-ups clamp result limits to a safe range and use their default whe
130
129
 
131
130
  Every task reads left to right in three sections: **Came from** (the message, what triage made of it
132
131
  and why, the ask), **Agent**, and **Close out**. The section the task is up to opens; the other two fold
133
- to slim columns beside it that still say where they stand.
132
+ to slim columns beside it that still say where they stand. Each section carries its own moves - on its
133
+ spine when folded, on a strip across its top when open:
134
134
 
135
- ![Ruth's request as a task in three sections: Came from open - the email, what triage made of it, the ask - with Agent (not started) and Close out (not drafted yet) folded beside it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/02-task.png?v=row)
135
+ - **Came from**: **Remind me**, **Not a task**, and **Change ▾** (split or merge, who does it, priority, assignee, where the code is).
136
+ - **Agent**: **Send to agent**, then **Continue** or **Run another agent** once it has run.
137
+ - **Close out**: **Draft reply** or **Reply**, **Hand it to a person**, **Mark done**, **Close with a note**, **Attach a file**, and **Share**.
138
+
139
+ ![Ruth's request as a task in three sections: Came from open with Remind me and Change on its strip; Agent (not started) with Send to agent on its spine; Close out (not drafted yet) with Draft reply, Hand it to a person, Mark done, Close with a note and Share on its spine; Nav and the chat pill under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/02-task.png?v=spine)
136
140
 
137
141
  ### 4. The agent shows what it did
138
142
 
139
- Open the Agent section and choose **Send to agent**; the agent works there. When it finishes, that section rests on its
140
- Result: what it did, its answer, what it found, and **What it made** - each file with Open and Download.
141
- The whole conversation is one link under it. Here the agent prepares the numbers, checks that the
143
+ Choose **Send to agent**; the agent works in the Agent section. When it finishes, that section rests on its
144
+ Result: a summary, its answer, what it found, and **What it made** - each file with Open and Download.
145
+ The whole conversation is one link under it. **Continue** picks the same agent up with a note from you;
146
+ **Run another agent** starts a second agent on the same task. Here the agent prepares the numbers, checks that the
142
147
  categories add up, saves a workbook, and drafts the reply. Nothing is sent.
143
148
 
144
- ![The agent's Result on Ruth's task: a one-line summary, the July and August totals by category, what it found, and the workbook it made with Open and Download.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/03-agent.png?v=row)
149
+ ![The agent's Result on Ruth's task: a one-line summary, the July and August totals by category, what it found, and the workbook it made with Open and Download; Came from and Close out folded beside it with their moves on their spines.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/03-agent.png?v=spine)
145
150
 
146
151
  ### 5. The last word is yours
147
152
 
148
153
  The prepared reply waits in **Close out**, addressed to Ruth, with Came from and the agent's Result
149
- folded beside it. Read it, edit it, and choose **Send** when it is ready - or Redraft.
154
+ folded beside it. Read it, edit it, and choose **Send** when it is ready - or **Redraft**. Sending and
155
+ closing are two steps: the task stays open until you choose **Mark done**.
150
156
 
151
- ![Close out open on the reply drafted to Ruth, with To, Cc, the editable draft, Send and Redraft, beside the folded Came from and Agent sections.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/04-review.png?v=row)
157
+ ![Close out open on the reply drafted to Ruth: Hand it to a person, Mark done, Attach a file, Close with a note and Share across its top; To, Cc, the editable draft, Send and Redraft under them; Came from and Agent folded beside it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/04-review.png?v=spine)
152
158
 
153
159
  ### 6. Start your day before it gets busy
154
160
 
@@ -156,22 +162,44 @@ Each morning the Assistant opens on what changed since last night, what it learn
156
162
  and what waits in each section - and the morning digest unfolds in place, so it is never stale by the
157
163
  time you reach it. Ruth's request has a clear deadline: the 11:30 operations review.
158
164
 
159
- ![An animated close-up of the morning: the opening card, then its morning digest unfolding - who wants what, what is in flight, and today's meetings.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/06-morning.gif?v=row)
165
+ ![An animated close-up of the morning: the opening card, then its morning digest unfolding - who wants what, what is in flight, and today's meetings.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/06-morning.gif?v=spine)
160
166
 
161
167
  ## Key features
162
168
 
163
169
  ### Reports, dashboards, and FYI open like work
164
170
 
165
171
  A report opens in the same three sections as a task, the report itself in the middle - its chart,
166
- its table, the files it attached - with the same row under it. Dashboards land beside the reports.
172
+ its table, the files it attached - with **Put it on my list** beside Nav when it should become work. Dashboards land beside the reports.
167
173
  What needs nothing from you is batched: one FYI card holds every message of the batch, each folded to
168
174
  who, where, and its line, and **All read, next** moves on.
169
175
 
170
- ![A report in a task's three sections: Headcount by site, nightly, with its bar chart, table, and attached files, and the row of actions under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/13-report.png?v=row)
176
+ ![A report in a task's three sections: Headcount by site, nightly, with its bar chart, table, and attached files, with Nav and Put it on my list under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/13-report.png?v=spine)
177
+
178
+ ![The Taskuary at a glance dashboard: what came in, new tasks, open now, reply time, how far items got, and agent sessions.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/14-dashboard.png?v=spine)
179
+
180
+ ![An FYI batch: six messages that need nothing, each folded to its sender, channel, subject, and first line, with All read, next in Nav under them.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/12-fyi.png?v=spine)
181
+
182
+ ### General agents, coding agents, and how work fans out
171
183
 
172
- ![The Taskuary at a glance dashboard: what came in, new tasks, open now, reply time, how far items got, and agent sessions.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/14-dashboard.png?v=row)
184
+ A **coding agent** works in a terminal in your repository. A **general agent** works in a conversation -
185
+ research, a recommendation, a drafted reply - and touches no system. Both run on a **brain**: a CLI such as
186
+ Claude Code or Codex, or an AI connection, with the model you chose on it. What they are told is a
187
+ **profile**: instructions such as `ASSISTANT.md` for general work and `CODING.md` for code, laid on
188
+ whichever brain runs it.
173
189
 
174
- ![An FYI batch: six messages that need nothing, each folded to its sender, channel, subject, and first line, with All read, next under them.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/12-fyi.png?v=row)
190
+ Most general asks are short. When triage reads one as quick, it is answered in a single call that leaves
191
+ the same Result, draft, or question on the task an agent would. Hard work, work that needs a browser, and
192
+ a quick call that finds it needs more go to a full agent session.
193
+
194
+ Work fans out at three levels:
195
+
196
+ - **Agent sessions** run side by side up to **Settings → Agents at once** (4 by default, up to 16). The rest
197
+ wait their turn and start as sessions end. Sessions you start yourself are never held back.
198
+ - **Quick work** has its own pool of eight calls at once, apart from that number, so a burst of mail is
199
+ answered without opening sessions.
200
+ - **Inside a session**, a CLI may start its own subagents, background shells, and monitors. Taskuary reads
201
+ them from the session and keeps the agent shown as working while they run; they are part of that one
202
+ session, not extra ones.
175
203
 
176
204
  ### Use your coding CLI
177
205
 
@@ -183,21 +211,36 @@ For Qwen Code, see the [setup and compatibility guide](docs/qwen-code.md).
183
211
  Use DeepSeek, GLM, or MiniMax through OpenCode, or connect Moonshot's Kimi Code:
184
212
  [setup steps and supported roles](docs/chinese-coding-clis.md).
185
213
 
186
- ![AI CLI connections for Claude, Qwen, OpenCode with DeepSeek, and Kimi Code.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/07-coding-clis-chinese.png?v=row)
214
+ ![AI CLI connections for Claude, Qwen, OpenCode with DeepSeek, and Kimi Code.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/07-coding-clis-chinese.png?v=spine)
187
215
 
188
216
  ### A shared Hub for what agents learn
189
217
 
190
218
  Keep discoveries, decisions, and useful warnings by topic. Agents can find what earlier work
191
219
  uncovered, discuss it, and correct it instead of starting from scratch.
192
220
 
193
- ![A discovery in the Hub, with the discussion two agents had under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/08-hub.png?v=row)
221
+ ![A discovery in the Hub, with the discussion two agents had under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/08-hub.png?v=spine)
194
222
 
195
223
  ### Agents leave notes for each other
196
224
 
197
225
  The Board's **Live handoffs** show what agents are working on, what is blocked, and what is ready.
198
226
  An agent leaves a note; the next one reads it before picking up the work.
199
227
 
200
- ![Live handoff notes on the agent wall, showing progress, shared context, and who has read each note.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/09-handoffs.png?v=row)
228
+ ![Live handoff notes on the agent wall, showing progress, shared context, and who has read each note.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/09-handoffs.png?v=spine)
229
+
230
+ ### Routines, connections, sign-ins, and your phone
231
+
232
+ - **Routines.** **New → Routine** runs a job on a schedule - checks, opening tasks, preparing drafts. A coding
233
+ routine runs a Claude Code skill in the repository you choose, as its own slash command. Each run files a
234
+ task, and routines sit beside reports under **Reports → Routines**.
235
+ - **Combine.** Each mail and messaging connection has a **Combine** slider, 1 (Separate) to 5 (Combine): how
236
+ readily a message from there joins a task on the same subject rather than becoming its own.
237
+ - **Data connections feed reports.** Finance and commerce sources such as Intacct, QuickBooks, and Amazon
238
+ feed reports, dashboards, and agents; they do not put items on your rail.
239
+ - **Sign-ins stay yours.** When an agent's browser reaches a sign-in page, take over the pane or use a
240
+ one-time sign-in page; Taskuary types the password itself, and the agent never sees it. Saved sign-ins and
241
+ authenticator keys are under **Settings → Agent permissions**.
242
+ - **Your phone.** Over WhatsApp or Telegram, the same Assistant walks your tasks with the same buttons. It
243
+ speaks only while you are talking to it. See [On your phone](https://taskuary.com/docs/phone).
201
244
 
202
245
  ### Memory that learns how you work
203
246
 
@@ -220,7 +263,7 @@ answer, whether a chase is needed, who on copy moves them - and a thread gone qu
220
263
  person's own day is *slipped*, on your rail under Tasks, with Chase, Let it go, They answered elsewhere
221
264
  and Remind me under it. See [The Advisor](https://taskuary.com/docs/advisor).
222
265
 
223
- ![LEARNED.md open in the document editor, with evidence-backed preferences, hypotheses still being tested, and proposed rules awaiting the owner.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/11-learned-memory.png?v=row)
266
+ ![LEARNED.md open in the document editor, with evidence-backed preferences, hypotheses still being tested, and proposed rules awaiting the owner.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/11-learned-memory.png?v=spine)
224
267
 
225
268
  <details>
226
269
  <summary>Technical details: how LEARNED.md becomes memory</summary>
@@ -300,7 +343,7 @@ channel, then choose the coding CLI that should receive tasks. The setup wizards
300
343
  connection before it goes live.
301
344
 
302
345
  GitHub repository pickers apply to their own connection. Until an issues picker is set,
303
- an inbound trigger creates tasks, a feed connection adds Timeline items, and a tool-only
346
+ an inbound trigger creates tasks, a feed connection shows issues to read without triage, and a tool-only
304
347
  connection leaves issues off. PRs default off. An explicit repository picker overrides
305
348
  that connection's role without enabling other repositories or connections.
306
349
 
@@ -325,7 +368,7 @@ Updated daily from PyPI with mirror traffic excluded. The raw series is
325
368
  The documentation is at **[taskuary.com/docs](https://taskuary.com/docs/)**.
326
369
 
327
370
  - [Start here](https://taskuary.com/docs/)—installation, first run, Docker, and where your data lives
328
- - [How it works](https://taskuary.com/docs/how-it-works)—the Timeline, the five roads, what triage decides, the operator documents
371
+ - [How it works](https://taskuary.com/docs/how-it-works)—the work rail, the five roads, what triage decides, the operator documents
329
372
  - [Connections](https://taskuary.com/docs/connections)—channels, AI providers, work systems, and report sources
330
373
  - [Tasks and agents](https://taskuary.com/docs/tasks-and-agents)—the task, the agent work and the reply as three separate lives
331
374
  - [Security](https://taskuary.com/docs/security)—prompt injection: what Taskuary does about it, what it does not do yet, and what to set
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![CI](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml/badge.svg)](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml)
6
6
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ldbumble/taskuary/badge)](https://scorecard.dev/viewer/?uri=github.com/ldbumble/taskuary)
7
- [![PyPI](https://img.shields.io/pypi/v/taskuary.svg?cacheSeconds=300&release=0.3.9.76&asof=0.3.9.76)](https://pypi.org/project/taskuary/)
7
+ [![PyPI](https://img.shields.io/pypi/v/taskuary.svg?cacheSeconds=300&release=0.3.9.78&asof=0.3.9.78)](https://pypi.org/project/taskuary/)
8
8
  [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-3776ab.svg)](https://github.com/ldbumble/taskuary)
9
9
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
10
10
  [![Stars](https://img.shields.io/github/stars/ldbumble/taskuary?style=flat&color=d4a72c&label=%E2%98%85%20stars)](https://github.com/ldbumble/taskuary/stargazers)
@@ -17,7 +17,7 @@
17
17
 
18
18
  ![The Assistant's Game view: an office where every task, message and agent is a figure, opening on the whole floor and zooming into each room - the Agent Floor, the Meeting Room where people wait on you, the Gym, the Coffee Room, the Memory Archive, and the Assistant Core.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/hero.webp?v=smooth)
19
19
 
20
- Taskuary is early—currently **v0.3.9.76**—so breaking changes are still possible before 1.0.
20
+ Taskuary is early—currently **v0.3.9.78**—so breaking changes are still possible before 1.0.
21
21
 
22
22
  <p align="center">
23
23
  <a href="https://taskuary.com/demo/"><img
@@ -42,18 +42,17 @@ one card: what changed since last night, what was learned, the morning digest, y
42
42
  what waits in each section - so you never open each system in turn. A goal is a task whose steps
43
43
  are tasks: triage opens one for an open-ended ask, and files later mail under the step it serves.
44
44
 
45
- ![The work rail sorting today's items into Tasks, Reports, and FYI, beside the opening card: agents that finished and a report that ran since last night, the memory and morning digest lines, today's meetings, and what waits in each section.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/01-timeline-sources-and-times.png?v=row)
45
+ ![The work rail sorting today's items into Tasks, Reports, and FYI, beside the opening card: agents that finished and a report that ran since last night, the memory and morning digest lines, today's meetings, and what waits in each section.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/01-timeline-sources-and-times.png?v=spine)
46
46
 
47
47
  ### 2. Let the Assistant walk you through it
48
48
 
49
49
  Choose **Walk me through my tasks**. The Assistant puts one item on the table at a time, as the
50
- same task card you would open yourself, with one row under it: **Back** and **Next**, the move it is up
51
- to (**Mark done** first, then **Reply** or **Send to agent**), **Change ▾**, and **Share**. The buttons always do
52
- the same thing; for everything else, ask in the chat box at the end of the row - the conversation rises
53
- out of it as a window, and the Assistant already has the message, the thread, and your past decisions to
54
- answer from.
50
+ same task you would open yourself. Under it is one small bar, **Nav**: **Back** and **Next**, each greyed
51
+ where there is nowhere to go. Everything you can do to the task sits on the task itself (below). For
52
+ anything else, type in the chat pill in the corner - a window opens out of it, and the Assistant already
53
+ has the message, the thread, and your past decisions to answer from.
55
54
 
56
- ![Ruth's request on the table with the chat window risen out of the chat box at the end of the row: asked what is on the list, the Assistant answers beside the task without moving it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/05-assistant.png?v=row)
55
+ ![Ruth's request on the table with the chat window open out of the corner pill: asked what is on the list, the Assistant answers beside the task without moving it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/05-assistant.png?v=spine)
57
56
 
58
57
  Assistant look-ups clamp result limits to a safe range and use their default when a limit is invalid.
59
58
 
@@ -61,25 +60,32 @@ Assistant look-ups clamp result limits to a safe range and use their default whe
61
60
 
62
61
  Every task reads left to right in three sections: **Came from** (the message, what triage made of it
63
62
  and why, the ask), **Agent**, and **Close out**. The section the task is up to opens; the other two fold
64
- to slim columns beside it that still say where they stand.
63
+ to slim columns beside it that still say where they stand. Each section carries its own moves - on its
64
+ spine when folded, on a strip across its top when open:
65
65
 
66
- ![Ruth's request as a task in three sections: Came from open - the email, what triage made of it, the ask - with Agent (not started) and Close out (not drafted yet) folded beside it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/02-task.png?v=row)
66
+ - **Came from**: **Remind me**, **Not a task**, and **Change ▾** (split or merge, who does it, priority, assignee, where the code is).
67
+ - **Agent**: **Send to agent**, then **Continue** or **Run another agent** once it has run.
68
+ - **Close out**: **Draft reply** or **Reply**, **Hand it to a person**, **Mark done**, **Close with a note**, **Attach a file**, and **Share**.
69
+
70
+ ![Ruth's request as a task in three sections: Came from open with Remind me and Change on its strip; Agent (not started) with Send to agent on its spine; Close out (not drafted yet) with Draft reply, Hand it to a person, Mark done, Close with a note and Share on its spine; Nav and the chat pill under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/02-task.png?v=spine)
67
71
 
68
72
  ### 4. The agent shows what it did
69
73
 
70
- Open the Agent section and choose **Send to agent**; the agent works there. When it finishes, that section rests on its
71
- Result: what it did, its answer, what it found, and **What it made** - each file with Open and Download.
72
- The whole conversation is one link under it. Here the agent prepares the numbers, checks that the
74
+ Choose **Send to agent**; the agent works in the Agent section. When it finishes, that section rests on its
75
+ Result: a summary, its answer, what it found, and **What it made** - each file with Open and Download.
76
+ The whole conversation is one link under it. **Continue** picks the same agent up with a note from you;
77
+ **Run another agent** starts a second agent on the same task. Here the agent prepares the numbers, checks that the
73
78
  categories add up, saves a workbook, and drafts the reply. Nothing is sent.
74
79
 
75
- ![The agent's Result on Ruth's task: a one-line summary, the July and August totals by category, what it found, and the workbook it made with Open and Download.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/03-agent.png?v=row)
80
+ ![The agent's Result on Ruth's task: a one-line summary, the July and August totals by category, what it found, and the workbook it made with Open and Download; Came from and Close out folded beside it with their moves on their spines.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/03-agent.png?v=spine)
76
81
 
77
82
  ### 5. The last word is yours
78
83
 
79
84
  The prepared reply waits in **Close out**, addressed to Ruth, with Came from and the agent's Result
80
- folded beside it. Read it, edit it, and choose **Send** when it is ready - or Redraft.
85
+ folded beside it. Read it, edit it, and choose **Send** when it is ready - or **Redraft**. Sending and
86
+ closing are two steps: the task stays open until you choose **Mark done**.
81
87
 
82
- ![Close out open on the reply drafted to Ruth, with To, Cc, the editable draft, Send and Redraft, beside the folded Came from and Agent sections.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/04-review.png?v=row)
88
+ ![Close out open on the reply drafted to Ruth: Hand it to a person, Mark done, Attach a file, Close with a note and Share across its top; To, Cc, the editable draft, Send and Redraft under them; Came from and Agent folded beside it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/04-review.png?v=spine)
83
89
 
84
90
  ### 6. Start your day before it gets busy
85
91
 
@@ -87,22 +93,44 @@ Each morning the Assistant opens on what changed since last night, what it learn
87
93
  and what waits in each section - and the morning digest unfolds in place, so it is never stale by the
88
94
  time you reach it. Ruth's request has a clear deadline: the 11:30 operations review.
89
95
 
90
- ![An animated close-up of the morning: the opening card, then its morning digest unfolding - who wants what, what is in flight, and today's meetings.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/06-morning.gif?v=row)
96
+ ![An animated close-up of the morning: the opening card, then its morning digest unfolding - who wants what, what is in flight, and today's meetings.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/06-morning.gif?v=spine)
91
97
 
92
98
  ## Key features
93
99
 
94
100
  ### Reports, dashboards, and FYI open like work
95
101
 
96
102
  A report opens in the same three sections as a task, the report itself in the middle - its chart,
97
- its table, the files it attached - with the same row under it. Dashboards land beside the reports.
103
+ its table, the files it attached - with **Put it on my list** beside Nav when it should become work. Dashboards land beside the reports.
98
104
  What needs nothing from you is batched: one FYI card holds every message of the batch, each folded to
99
105
  who, where, and its line, and **All read, next** moves on.
100
106
 
101
- ![A report in a task's three sections: Headcount by site, nightly, with its bar chart, table, and attached files, and the row of actions under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/13-report.png?v=row)
107
+ ![A report in a task's three sections: Headcount by site, nightly, with its bar chart, table, and attached files, with Nav and Put it on my list under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/13-report.png?v=spine)
108
+
109
+ ![The Taskuary at a glance dashboard: what came in, new tasks, open now, reply time, how far items got, and agent sessions.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/14-dashboard.png?v=spine)
110
+
111
+ ![An FYI batch: six messages that need nothing, each folded to its sender, channel, subject, and first line, with All read, next in Nav under them.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/12-fyi.png?v=spine)
112
+
113
+ ### General agents, coding agents, and how work fans out
102
114
 
103
- ![The Taskuary at a glance dashboard: what came in, new tasks, open now, reply time, how far items got, and agent sessions.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/14-dashboard.png?v=row)
115
+ A **coding agent** works in a terminal in your repository. A **general agent** works in a conversation -
116
+ research, a recommendation, a drafted reply - and touches no system. Both run on a **brain**: a CLI such as
117
+ Claude Code or Codex, or an AI connection, with the model you chose on it. What they are told is a
118
+ **profile**: instructions such as `ASSISTANT.md` for general work and `CODING.md` for code, laid on
119
+ whichever brain runs it.
104
120
 
105
- ![An FYI batch: six messages that need nothing, each folded to its sender, channel, subject, and first line, with All read, next under them.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/12-fyi.png?v=row)
121
+ Most general asks are short. When triage reads one as quick, it is answered in a single call that leaves
122
+ the same Result, draft, or question on the task an agent would. Hard work, work that needs a browser, and
123
+ a quick call that finds it needs more go to a full agent session.
124
+
125
+ Work fans out at three levels:
126
+
127
+ - **Agent sessions** run side by side up to **Settings → Agents at once** (4 by default, up to 16). The rest
128
+ wait their turn and start as sessions end. Sessions you start yourself are never held back.
129
+ - **Quick work** has its own pool of eight calls at once, apart from that number, so a burst of mail is
130
+ answered without opening sessions.
131
+ - **Inside a session**, a CLI may start its own subagents, background shells, and monitors. Taskuary reads
132
+ them from the session and keeps the agent shown as working while they run; they are part of that one
133
+ session, not extra ones.
106
134
 
107
135
  ### Use your coding CLI
108
136
 
@@ -114,21 +142,36 @@ For Qwen Code, see the [setup and compatibility guide](docs/qwen-code.md).
114
142
  Use DeepSeek, GLM, or MiniMax through OpenCode, or connect Moonshot's Kimi Code:
115
143
  [setup steps and supported roles](docs/chinese-coding-clis.md).
116
144
 
117
- ![AI CLI connections for Claude, Qwen, OpenCode with DeepSeek, and Kimi Code.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/07-coding-clis-chinese.png?v=row)
145
+ ![AI CLI connections for Claude, Qwen, OpenCode with DeepSeek, and Kimi Code.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/07-coding-clis-chinese.png?v=spine)
118
146
 
119
147
  ### A shared Hub for what agents learn
120
148
 
121
149
  Keep discoveries, decisions, and useful warnings by topic. Agents can find what earlier work
122
150
  uncovered, discuss it, and correct it instead of starting from scratch.
123
151
 
124
- ![A discovery in the Hub, with the discussion two agents had under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/08-hub.png?v=row)
152
+ ![A discovery in the Hub, with the discussion two agents had under it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/08-hub.png?v=spine)
125
153
 
126
154
  ### Agents leave notes for each other
127
155
 
128
156
  The Board's **Live handoffs** show what agents are working on, what is blocked, and what is ready.
129
157
  An agent leaves a note; the next one reads it before picking up the work.
130
158
 
131
- ![Live handoff notes on the agent wall, showing progress, shared context, and who has read each note.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/09-handoffs.png?v=row)
159
+ ![Live handoff notes on the agent wall, showing progress, shared context, and who has read each note.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/09-handoffs.png?v=spine)
160
+
161
+ ### Routines, connections, sign-ins, and your phone
162
+
163
+ - **Routines.** **New → Routine** runs a job on a schedule - checks, opening tasks, preparing drafts. A coding
164
+ routine runs a Claude Code skill in the repository you choose, as its own slash command. Each run files a
165
+ task, and routines sit beside reports under **Reports → Routines**.
166
+ - **Combine.** Each mail and messaging connection has a **Combine** slider, 1 (Separate) to 5 (Combine): how
167
+ readily a message from there joins a task on the same subject rather than becoming its own.
168
+ - **Data connections feed reports.** Finance and commerce sources such as Intacct, QuickBooks, and Amazon
169
+ feed reports, dashboards, and agents; they do not put items on your rail.
170
+ - **Sign-ins stay yours.** When an agent's browser reaches a sign-in page, take over the pane or use a
171
+ one-time sign-in page; Taskuary types the password itself, and the agent never sees it. Saved sign-ins and
172
+ authenticator keys are under **Settings → Agent permissions**.
173
+ - **Your phone.** Over WhatsApp or Telegram, the same Assistant walks your tasks with the same buttons. It
174
+ speaks only while you are talking to it. See [On your phone](https://taskuary.com/docs/phone).
132
175
 
133
176
  ### Memory that learns how you work
134
177
 
@@ -151,7 +194,7 @@ answer, whether a chase is needed, who on copy moves them - and a thread gone qu
151
194
  person's own day is *slipped*, on your rail under Tasks, with Chase, Let it go, They answered elsewhere
152
195
  and Remind me under it. See [The Advisor](https://taskuary.com/docs/advisor).
153
196
 
154
- ![LEARNED.md open in the document editor, with evidence-backed preferences, hypotheses still being tested, and proposed rules awaiting the owner.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/11-learned-memory.png?v=row)
197
+ ![LEARNED.md open in the document editor, with evidence-backed preferences, hypotheses still being tested, and proposed rules awaiting the owner.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/readme/11-learned-memory.png?v=spine)
155
198
 
156
199
  <details>
157
200
  <summary>Technical details: how LEARNED.md becomes memory</summary>
@@ -231,7 +274,7 @@ channel, then choose the coding CLI that should receive tasks. The setup wizards
231
274
  connection before it goes live.
232
275
 
233
276
  GitHub repository pickers apply to their own connection. Until an issues picker is set,
234
- an inbound trigger creates tasks, a feed connection adds Timeline items, and a tool-only
277
+ an inbound trigger creates tasks, a feed connection shows issues to read without triage, and a tool-only
235
278
  connection leaves issues off. PRs default off. An explicit repository picker overrides
236
279
  that connection's role without enabling other repositories or connections.
237
280
 
@@ -256,7 +299,7 @@ Updated daily from PyPI with mirror traffic excluded. The raw series is
256
299
  The documentation is at **[taskuary.com/docs](https://taskuary.com/docs/)**.
257
300
 
258
301
  - [Start here](https://taskuary.com/docs/)—installation, first run, Docker, and where your data lives
259
- - [How it works](https://taskuary.com/docs/how-it-works)—the Timeline, the five roads, what triage decides, the operator documents
302
+ - [How it works](https://taskuary.com/docs/how-it-works)—the work rail, the five roads, what triage decides, the operator documents
260
303
  - [Connections](https://taskuary.com/docs/connections)—channels, AI providers, work systems, and report sources
261
304
  - [Tasks and agents](https://taskuary.com/docs/tasks-and-agents)—the task, the agent work and the reply as three separate lives
262
305
  - [Security](https://taskuary.com/docs/security)—prompt injection: what Taskuary does about it, what it does not do yet, and what to set
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "taskuary"
7
- version = "0.3.9.76"
7
+ version = "0.3.9.78"
8
8
  description = "Your work manager. Locally. Securely. In control. Mail, chats and tickets in one list; your agents do the work, you approve. Runs on your machine."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -0,0 +1,10 @@
1
+ {
2
+ "_": "A BLANK LEFT IN A DRAFT (the owner, 2026-10-30): a draft can hold a slot like [REASON] or [DATE] for the owner to fill, and Send went out with it. Send refuses while one remains - the server (taskuary/blanks.py, read by verdicts) and the draft box (website/src/blanks.js), which reads this same file. A slot is a bracket that is ALL CAPS (two letters or more), a run of underscores, or a short phrase that starts with a template cue. `not_slots` are the bracketed words real mail carries (a gateway's [EXTERNAL], a log's [ERROR]); a bracket holding a `said` word is an editor's own note ([name withheld]), never a slot.",
3
+ "not_slots": ["EXTERNAL", "EXT", "CAUTION", "WARNING", "WARN", "SPAM", "SUSPECTED SPAM", "ENCRYPT", "ENCRYPTED", "SECURE", "CONFIDENTIAL",
4
+ "URGENT", "IMPORTANT", "FYI", "RE", "FW", "FWD", "INFO", "DEBUG", "ERROR", "FATAL", "TRACE", "OK", "PASS", "PASSED",
5
+ "FAIL", "FAILED", "SKIP", "SKIPPED", "N/A", "NA", "SIC"],
6
+ "cues": ["your", "insert", "enter", "add", "fill in", "recipient", "recipient's", "customer", "client", "first name", "last name", "full name",
7
+ "name", "date", "time", "day", "amount", "number", "phone", "address", "email", "company", "title", "position", "reason", "link",
8
+ "details", "placeholder"],
9
+ "said": ["redacted", "removed", "withheld", "omitted", "sic"]
10
+ }
@@ -0,0 +1,45 @@
1
+ """A BLANK LEFT IN A DRAFT (the owner, 2026-10-30): a drafted reply can hold a slot like "[REASON]" or "[DATE]" for the owner to
2
+ fill, and Send went out with it. Send refuses while one remains - here, so the task page, the phone and the assistant all meet the
3
+ same refusal (verdicts.decide is the one door) - and the draft box marks them (website/src/blanks.js, from the same blanks.json).
4
+
5
+ Only template slots count, never the brackets real mail carries: a gateway's "[External]" tag, a markdown link "[text](url)", a
6
+ footnote "[1]", a checkbox "[x]", code ("rows[INDEX]", anything in backticks) and quoted lines ("> ...") all go out as they are."""
7
+ import json, re
8
+ from pathlib import Path
9
+
10
+ _J = json.loads(Path(__file__).with_name('blanks.json').read_text(encoding='utf-8'))
11
+ NOT_SLOTS, SAID = frozenset(_J['not_slots']), frozenset(_J['said'])
12
+ # a bracket not glued to a word before it (an index) and not a link's text or a reference's label after it
13
+ BOX = re.compile(r'(?<![\w\]\\])\[([^\[\]\n]{1,60})\](?!\(|\[|:\s*(?:https?://|<))', re.A)
14
+ _SHOUT = re.compile(r"[A-Z][A-Z0-9'’&/.,#_ -]*")
15
+ _CUE = re.compile(r"(?ai)(?:%s)\b" % '|'.join(re.escape(c) for c in sorted(_J['cues'], key=len, reverse=True)))
16
+ _PHRASE = re.compile(r"[A-Za-z][\w'’&/.,# -]{0,39}", re.A)
17
+ # code and quoted lines are someone else's words: blanked to spaces so a slot's place in the text stays where it was
18
+ _ASIDE = re.compile(r'```[\s\S]*?(?:```|\Z)|`[^`\n]*`|^[ \t]*>[^\n]*', re.M)
19
+
20
+
21
+ def is_slot(inner: str) -> bool:
22
+ s = inner.strip()
23
+ if not s or s.upper() in NOT_SLOTS or SAID & set(re.findall(r'[a-z]+', s.lower())): return False
24
+ if re.fullmatch(r'_{2,}', s): return True
25
+ if _SHOUT.fullmatch(s): return len(re.findall('[A-Z]', s)) >= 2
26
+ return bool(_PHRASE.fullmatch(s) and _CUE.match(s))
27
+
28
+
29
+ def spans(text: str) -> list:
30
+ """(start, end, '[SLOT]') for every blank still in the text, in order."""
31
+ if not text: return []
32
+ seen = _ASIDE.sub(lambda m: re.sub(r'[^\n]', ' ', m.group()), text)
33
+ return [(m.start(), m.end(), text[m.start():m.end()]) for m in BOX.finditer(seen) if is_slot(m.group(1))]
34
+
35
+
36
+ def find(text: str) -> list:
37
+ """The blanks as written, each once."""
38
+ return list(dict.fromkeys(s for *_, s in spans(text)))
39
+
40
+
41
+ def refusal(text: str) -> str:
42
+ """'Fill in [REASON] first' while a blank remains; '' when the text can go."""
43
+ b = find(text)
44
+ if not b: return ''
45
+ return f"Fill in {b[0] if len(b) == 1 else ', '.join(b[:-1]) + ' and ' + b[-1]} first"
@@ -3657,7 +3657,7 @@ def card_for(item: dict) -> dict:
3657
3657
  # an FYI from a list that names its own way off it: the card's Unsubscribe (unsubscribe.py)
3658
3658
  'unsub',
3659
3659
  # ...and what triage read the words as trying to make an AI do, beside the mail's own subject (B3)
3660
- 'danger', 'subject',
3660
+ 'danger', 'danger_aim', 'subject',
3661
3661
  'presentation_revision', 'order_band', 'processing_id', 'member_ids', 'members', 'aliases', 'unread', 'deferred', 'actionable', 'paused', 'closed',
3662
3662
  # ...and an FYI row speaking for its email thread: the mails it opens on (processing_unread.fold_fyi_threads)
3663
3663
  'brief_today', 'thread', 'thread_n', 'thread_items')} | ({'dashboard': True} if item.get('dashboard') else {}) # a dashboard's row draws the dashboard