taskuary 0.3.3.1__tar.gz → 0.3.3.2__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.
- {taskuary-0.3.3.1/taskuary.egg-info → taskuary-0.3.3.2}/PKG-INFO +61 -57
- taskuary-0.3.3.2/README.md +140 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/pyproject.toml +1 -1
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/terminal.py +6 -2
- taskuary-0.3.3.1/taskuary/web/assets/GeneralWorkspace-D4hn_Sj3.js → taskuary-0.3.3.2/taskuary/web/assets/GeneralWorkspace-C75zMBzq.js +1 -1
- taskuary-0.3.3.1/taskuary/web/assets/HubView-DYbCswmo.js → taskuary-0.3.3.2/taskuary/web/assets/HubView-BtNf0bG5.js +1 -1
- taskuary-0.3.3.2/taskuary/web/assets/index-CE8to-uH.js +1140 -0
- taskuary-0.3.3.2/taskuary/web/assets/index-C_xWyjgP.css +32 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/web/index.html +2 -2
- {taskuary-0.3.3.1 → taskuary-0.3.3.2/taskuary.egg-info}/PKG-INFO +61 -57
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary.egg-info/SOURCES.txt +4 -4
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_digest_brief.py +10 -2
- taskuary-0.3.3.1/README.md +0 -136
- taskuary-0.3.3.1/taskuary/web/assets/index-B8aosVAX.js +0 -1140
- taskuary-0.3.3.1/taskuary/web/assets/index-DYyvp4cD.css +0 -32
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/LICENSE +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/setup.cfg +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/__init__.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/agents.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/aisetup.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/artifacts.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/assistant.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/aws.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/azure.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/blackboard.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/browserview.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/calendar.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/categories.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/channels.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/ci.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/cli.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/climodels.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/clis.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/coder.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/compose.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/concierge.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/config.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/context.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/counsel.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/db.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/demo.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/deps.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/desktop.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/devtools.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/digest.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/docsync.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/evalset.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/evening.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/funnel.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/general.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/github.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/guard.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/handbook.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/handraise.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/histgen.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/hooks.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/hub.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/imapmail.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/imessage.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/ingest.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/intacct.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/interview.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/invoice_workflow.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/knowledge.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/learn.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/learnedgraph.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/live.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/llm.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/logs.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/mcp.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/messengers.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/msauth.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/mssql.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/outbound.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/outbox.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/ownwork.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/phone.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/playbooks.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/pm.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/policy.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/problems.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/projects.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/promptmap.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/proof.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/proposals.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/quickbooks.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/rank.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/remote_assistant.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/reports.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/research.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/reshape.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/responder.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/routing.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/scopes.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/selfclose.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/semantic.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/senders.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/server.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/session_artifacts.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/setup.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/sharepoint.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/sheets.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/skills/soul-interview/SKILL.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/spawn.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/store.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/teller.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/coder.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/counsel.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/digest.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/how-it-works.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/learned.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/playbook.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/soul.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/style.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/templates/triage.md +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/testing.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/toil.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/triage.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/update.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/verdicts.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/voice.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/wabridge.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/waitroom.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/web/assets/GeneralWorkspace--IqTbJGE.css +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/web/favicon.ico +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/web/favicon.png +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/webguard.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/whatsapp/bridge.mjs +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/whatsapp/package.json +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/whoami.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/witness.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary/zoho.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary.egg-info/dependency_links.txt +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary.egg-info/entry_points.txt +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary.egg-info/requires.txt +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/taskuary.egg-info/top_level.txt +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_agent_environment.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_agent_source.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_agent_wall.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_aisetup.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_answered_yourself.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_answers.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_api.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_assistant.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_assistant_opens.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_assistant_reactions.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_assistant_verdicts.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_async_triage.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_audit_chain.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_audit_fixes.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_aws_region.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_blackboard.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_browser_session.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_browserview.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_calendar.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_calendar_today.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_categories.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_cc.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_cc_triage.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_chat_doors.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_chat_is_not_one_task.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_chat_queue.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_climodels.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_clis.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_cloud.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_cloud_sources.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_compose.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_compose_sources.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_compose_workflows.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_concierge.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_config.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_context.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_core.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_counsel.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_cwlogs_paging.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_demo.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_deps.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_desktop.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_devtools.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_diff_review.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_docs_and_llm.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_docs_flow.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_duplicate_connectors.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_evening_brief.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_factory.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_feed_working.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_finished_chat_stays_finished.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_floating_assistant.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_follow_up_verdict.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_funnel.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_general.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_github_auto.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_guard.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_handbook.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_handbook_topics.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_handoff_channels.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_handraise.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_harvest.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_histgen.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_home_is_never_yours.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_imap_history.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_imapmail.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_imessage.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_intacct.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_invoice_workflow.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_kind_dispatch.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_knowledge.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_learnedgraph.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_lifecycle.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_live.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_local_file.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_mail_folders.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_mark_read.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_mcp.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_meeting_prep.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_message_thread.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_messengers.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_msauth.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_mssql.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_noop_ending.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_not_coding.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_note_retrieval.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_outbound_reports.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_own_rows_no_reply.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_playbooks.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_pm.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_poll_overlap.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_poll_parallel.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_poll_sources.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_pr_comments.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_problems.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_problems_dismiss.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_projects.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_promptmap_and_catalog.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_proof_ci_proposals.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_pypi_downloads.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_quickbooks.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_rank.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_rate_limit.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_reclassify.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_remote_assistant.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_reply_channels.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_reply_voice.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_report_alerts.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_report_triage.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_research.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_reviews.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_scopes.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_seed_fits_a_tty.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_seeded_reports.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_semantic.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_send_targets.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_session_artifacts.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_setup.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_sheets_sharepoint.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_someone_else_replied.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_soul_interview.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_stay_open.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_stay_open_doors.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_store_app_cli.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_store_hotpaths.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_sync_clock.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_task_identity.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_teller.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_terminal.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_toil.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_triage_dataset.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_triage_images.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_update.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_update_refused.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_urgent_and_handoff.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_verdict_paths.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_verdict_sticks.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_vision.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_voice.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_wabridge.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_waitroom.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_watermark.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_web_entrypoint.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_webguard.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_whatsapp_documents.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_whatsapp_images.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_whoami.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_withdrawn.py +0 -0
- {taskuary-0.3.3.1 → taskuary-0.3.3.2}/tests/test_witness.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taskuary
|
|
3
|
-
Version: 0.3.3.
|
|
3
|
+
Version: 0.3.3.2
|
|
4
4
|
Summary: Automate your job - the local-first operating system for your work: AI triage in, coding agents out.
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/ldbumble/taskuary
|
|
@@ -62,22 +62,18 @@ Dynamic: license-file
|
|
|
62
62
|
# Taskuary
|
|
63
63
|
|
|
64
64
|
[](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml)
|
|
65
|
-
[](https://pypi.org/project/taskuary/)
|
|
66
66
|
[](https://github.com/ldbumble/taskuary)
|
|
67
67
|
[](LICENSE)
|
|
68
68
|
|
|
69
|
-
## Your inbox, staffed by AI agents
|
|
69
|
+
## Your inbox, staffed by AI agents
|
|
70
70
|
|
|
71
|
-
Taskuary
|
|
72
|
-
|
|
73
|
-
your coding CLI works the tasks in your own repos, and replies wait for your approval.
|
|
74
|
-
Nothing sends or ships without you.
|
|
71
|
+
Taskuary turns incoming messages into organized work. It sorts what matters, hands tasks to
|
|
72
|
+
your agents, and brings decisions back to you. Nothing sends or ships without your approval.
|
|
75
73
|
|
|
76
|
-

|
|
77
75
|
|
|
78
|
-
Taskuary is early—currently **v0.3.3.
|
|
79
|
-
agent sessions, and reports pipeline are in daily use; breaking changes are still possible
|
|
80
|
-
before 1.0.
|
|
76
|
+
Taskuary is early—currently **v0.3.3.2**—so breaking changes are still possible before 1.0.
|
|
81
77
|
|
|
82
78
|
<p align="center">
|
|
83
79
|
<a href="https://taskuary.com/demo/"><img
|
|
@@ -85,43 +81,61 @@ before 1.0.
|
|
|
85
81
|
alt="Try Taskuary now, in your browser"></a>
|
|
86
82
|
</p>
|
|
87
83
|
|
|
88
|
-
<p align="center"><sub>The real app
|
|
89
|
-
a coding session mid-run, and reports with charts. Nothing to install and nothing connects
|
|
90
|
-
to anything.</sub></p>
|
|
84
|
+
<p align="center"><sub>The real app with invented data. Nothing connects, sends, or runs.</sub></p>
|
|
91
85
|
|
|
92
|
-
##
|
|
86
|
+
## What Taskuary can do
|
|
93
87
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
88
|
+
**One Timeline and Assistant**
|
|
89
|
+
|
|
90
|
+
Mail, chats, issues, alerts, and reports appear on one Timeline and in one Assistant chat.
|
|
91
|
+
Open any item to see its context, status, and available actions.
|
|
98
92
|
|
|
99
93
|

|
|
100
94
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
and
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
95
|
+
**AI triage**
|
|
96
|
+
|
|
97
|
+
Triage files routine updates, turns real requests into tasks, and puts urgent decisions first.
|
|
98
|
+
|
|
99
|
+
**Agents in your own repos**
|
|
100
|
+
|
|
101
|
+
Send coding work to Claude Code, Codex, Gemini, Cursor, Copilot, or another CLI.
|
|
102
|
+
|
|
103
|
+
**Live workspaces**
|
|
104
|
+
|
|
105
|
+
Watch the terminal, answer questions, review changes, and use the built-in browser without
|
|
106
|
+
losing the session.
|
|
107
|
+
|
|
108
|
+
**Scheduled checks**
|
|
109
|
+
|
|
110
|
+
Watch databases, files, APIs, cloud logs, reports, or agent skills. Quiet checks stay silent.
|
|
111
|
+
|
|
112
|
+
**You stay in control**
|
|
113
|
+
|
|
114
|
+
Replies and proposed actions wait in Review. You decide what sends, runs, closes, or gets dismissed.
|
|
115
|
+
|
|
116
|
+
**Catches what slipped**
|
|
117
|
+
|
|
118
|
+
Surface unanswered replies, upcoming meetings, quiet tasks, failed reports, and important changes.
|
|
119
|
+
|
|
120
|
+
## How work flows
|
|
121
|
+
|
|
122
|
+
### 1. Work arrives and gets sorted
|
|
123
|
+
|
|
124
|
+
Taskuary reads connected inboxes, separates tasks from noise, and shows the result on one Timeline.
|
|
125
|
+
|
|
126
|
+

|
|
127
|
+
|
|
128
|
+
### 2. An agent works on it
|
|
129
|
+
|
|
130
|
+
Tasks move from **Queued** to **Agent working**. The Board shows live progress and anything waiting on you.
|
|
131
|
+
|
|
132
|
+

|
|
133
|
+
|
|
134
|
+
### 3. The result comes back to you
|
|
135
|
+
|
|
136
|
+
Finished work, draft replies, questions, and loose ends return for review. You decide what to send, change, snooze, or dismiss.
|
|
137
|
+
|
|
138
|
+

|
|
125
139
|
|
|
126
140
|
## Install
|
|
127
141
|
|
|
@@ -164,25 +178,15 @@ connection before it goes live.
|
|
|
164
178
|
taskuary --demo # or: docker compose --profile demo up
|
|
165
179
|
```
|
|
166
180
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
playing, live task handoffs on the Board, and the durable, high-signal company Hub.
|
|
170
|
-
Every Hub post names its human or agent author and originating task; Board handoffs are short-lived
|
|
171
|
-
checkout coordination that rolls up nightly. The AI answers from a script and every door
|
|
172
|
-
to the outside world is shut at the API layer (`taskuary/demo.py`): nothing sends, no
|
|
173
|
-
connection can be made or edited, no tool runs, and no CLI starts. Nobody's real data is in
|
|
174
|
-
it — Dana Whitfield and Northwind Facilities are invented.
|
|
181
|
+
The demo is the real interface with fictional work and scripted replies. It cannot connect to
|
|
182
|
+
outside systems, send messages, run tools, or start agents. Its changes reset when you reload.
|
|
175
183
|
|
|
176
184
|
## Installs
|
|
177
185
|
|
|
178
186
|

|
|
179
187
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
would let a handful of real users read as hundreds. What it does **not** claim is that CI
|
|
183
|
-
installs have been removed: the field that would separate `pip install` in a build runner from
|
|
184
|
-
one on somebody's laptop is in PyPI's BigQuery dataset, not in the public API. The daily series
|
|
185
|
-
is [docs/downloads.csv](docs/downloads.csv).
|
|
188
|
+
Updated daily from PyPI with mirror traffic excluded. The raw series is
|
|
189
|
+
[docs/downloads.csv](docs/downloads.csv).
|
|
186
190
|
|
|
187
191
|
## Documentation
|
|
188
192
|
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Taskuary
|
|
2
|
+
|
|
3
|
+
[](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml)
|
|
4
|
+
[](https://pypi.org/project/taskuary/)
|
|
5
|
+
[](https://github.com/ldbumble/taskuary)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
## Your inbox, staffed by AI agents
|
|
9
|
+
|
|
10
|
+
Taskuary turns incoming messages into organized work. It sorts what matters, hands tasks to
|
|
11
|
+
your agents, and brings decisions back to you. Nothing sends or ships without your approval.
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
Taskuary is early—currently **v0.3.3.2**—so breaking changes are still possible before 1.0.
|
|
16
|
+
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="https://taskuary.com/demo/"><img
|
|
19
|
+
src="https://img.shields.io/badge/%E2%96%B6%20Try%20it%20now-no%20install%2C%20in%20your%20browser-2f4858?style=for-the-badge&labelColor=1f2a22"
|
|
20
|
+
alt="Try Taskuary now, in your browser"></a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<p align="center"><sub>The real app with invented data. Nothing connects, sends, or runs.</sub></p>
|
|
24
|
+
|
|
25
|
+
## What Taskuary can do
|
|
26
|
+
|
|
27
|
+
**One Timeline and Assistant**
|
|
28
|
+
|
|
29
|
+
Mail, chats, issues, alerts, and reports appear on one Timeline and in one Assistant chat.
|
|
30
|
+
Open any item to see its context, status, and available actions.
|
|
31
|
+
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
**AI triage**
|
|
35
|
+
|
|
36
|
+
Triage files routine updates, turns real requests into tasks, and puts urgent decisions first.
|
|
37
|
+
|
|
38
|
+
**Agents in your own repos**
|
|
39
|
+
|
|
40
|
+
Send coding work to Claude Code, Codex, Gemini, Cursor, Copilot, or another CLI.
|
|
41
|
+
|
|
42
|
+
**Live workspaces**
|
|
43
|
+
|
|
44
|
+
Watch the terminal, answer questions, review changes, and use the built-in browser without
|
|
45
|
+
losing the session.
|
|
46
|
+
|
|
47
|
+
**Scheduled checks**
|
|
48
|
+
|
|
49
|
+
Watch databases, files, APIs, cloud logs, reports, or agent skills. Quiet checks stay silent.
|
|
50
|
+
|
|
51
|
+
**You stay in control**
|
|
52
|
+
|
|
53
|
+
Replies and proposed actions wait in Review. You decide what sends, runs, closes, or gets dismissed.
|
|
54
|
+
|
|
55
|
+
**Catches what slipped**
|
|
56
|
+
|
|
57
|
+
Surface unanswered replies, upcoming meetings, quiet tasks, failed reports, and important changes.
|
|
58
|
+
|
|
59
|
+
## How work flows
|
|
60
|
+
|
|
61
|
+
### 1. Work arrives and gets sorted
|
|
62
|
+
|
|
63
|
+
Taskuary reads connected inboxes, separates tasks from noise, and shows the result on one Timeline.
|
|
64
|
+
|
|
65
|
+

|
|
66
|
+
|
|
67
|
+
### 2. An agent works on it
|
|
68
|
+
|
|
69
|
+
Tasks move from **Queued** to **Agent working**. The Board shows live progress and anything waiting on you.
|
|
70
|
+
|
|
71
|
+

|
|
72
|
+
|
|
73
|
+
### 3. The result comes back to you
|
|
74
|
+
|
|
75
|
+
Finished work, draft replies, questions, and loose ends return for review. You decide what to send, change, snooze, or dismiss.
|
|
76
|
+
|
|
77
|
+

|
|
78
|
+
|
|
79
|
+
## Install
|
|
80
|
+
|
|
81
|
+
### Windows app
|
|
82
|
+
|
|
83
|
+
Download the latest single-file
|
|
84
|
+
[Taskuary.exe](https://github.com/ldbumble/taskuary/releases/latest/download/Taskuary.exe)
|
|
85
|
+
and open it. No Python or installer is required.
|
|
86
|
+
|
|
87
|
+
### Python
|
|
88
|
+
|
|
89
|
+
Python 3.10 or newer works on Windows, macOS, and Linux:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
pip install taskuary
|
|
93
|
+
taskuary
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Taskuary opens at [http://127.0.0.1:7787](http://127.0.0.1:7787). For a native desktop
|
|
97
|
+
window instead, install `pip install "taskuary[desktop]"` and run `taskuary-desktop`.
|
|
98
|
+
|
|
99
|
+
### Docker
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
git clone https://github.com/ldbumble/taskuary
|
|
103
|
+
cd taskuary
|
|
104
|
+
docker compose up
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Then open [http://127.0.0.1:7787](http://127.0.0.1:7787). Docker runs the web app;
|
|
108
|
+
coding CLIs and the optional WhatsApp bridge remain on the host.
|
|
109
|
+
|
|
110
|
+
On first run, connect an AI provider or local Ollama model, add at least one inbound
|
|
111
|
+
channel, then choose the coding CLI that should receive tasks. The setup wizards test each
|
|
112
|
+
connection before it goes live.
|
|
113
|
+
|
|
114
|
+
## Try it without installing anything
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
taskuary --demo # or: docker compose --profile demo up
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The demo is the real interface with fictional work and scripted replies. It cannot connect to
|
|
121
|
+
outside systems, send messages, run tools, or start agents. Its changes reset when you reload.
|
|
122
|
+
|
|
123
|
+
## Installs
|
|
124
|
+
|
|
125
|
+

|
|
126
|
+
|
|
127
|
+
Updated daily from PyPI with mirror traffic excluded. The raw series is
|
|
128
|
+
[docs/downloads.csv](docs/downloads.csv).
|
|
129
|
+
|
|
130
|
+
## Documentation
|
|
131
|
+
|
|
132
|
+
- [Getting started](docs/getting-started.md)—installation, first-run setup, Docker, and data
|
|
133
|
+
- [Product guide](docs/product-guide.md)—the workflow, learning loop, agents, and operator documents
|
|
134
|
+
- [Integrations](docs/integrations.md)—channels, AI providers, work systems, and report sources
|
|
135
|
+
- [Reports and proactive checks](docs/reports-and-assistant.md)—the report pipeline, AI-written source cards, and what Taskuary watches
|
|
136
|
+
- [Status and roadmap](docs/roadmap.md)—what works today and what is next
|
|
137
|
+
- [Contributing](CONTRIBUTING.md)—development setup and contribution guide
|
|
138
|
+
|
|
139
|
+
Taskuary is free and open source under the [MIT License](LICENSE). Issues and pull requests
|
|
140
|
+
are welcome; security reports belong in [SECURITY.md](SECURITY.md).
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "taskuary"
|
|
7
|
-
version = "0.3.3.
|
|
7
|
+
version = "0.3.3.2"
|
|
8
8
|
description = "Automate your job - the local-first operating system for your work: AI triage in, coding agents out."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -544,9 +544,9 @@ def open_session(store, agent: str = None, task_id: int = None, repo: str = None
|
|
|
544
544
|
row = store.get_agent(agent)
|
|
545
545
|
if not row: raise ValueError(f'unknown agent: {agent}')
|
|
546
546
|
profile = json.loads(row.get('Config') or '{}')
|
|
547
|
-
|
|
547
|
+
label = agent
|
|
548
548
|
else:
|
|
549
|
-
|
|
549
|
+
label = 'shell'
|
|
550
550
|
# A named repo with no path used to fall through to the agent's default folder, so a task about
|
|
551
551
|
# one system opened a session in another and the agent edited the wrong tree in good faith.
|
|
552
552
|
# Refuse instead: not starting is recoverable, working the wrong checkout is not.
|
|
@@ -578,6 +578,10 @@ def open_session(store, agent: str = None, task_id: int = None, repo: str = None
|
|
|
578
578
|
if len(paths) == 1: cwd = next(iter(paths.values()))
|
|
579
579
|
cwd = cwd or profile.get('cwd') or os.getcwd()
|
|
580
580
|
if not os.path.isdir(cwd): raise ValueError(f'working directory does not exist: {cwd}')
|
|
581
|
+
# WHICH CHECKOUT comes first, and only then which binary: resolving the CLI up here meant a box
|
|
582
|
+
# without it answered "'claude' not found on PATH" to a task whose real problem was that nothing
|
|
583
|
+
# said where it belonged - the wrong sentence, and the one the owner cannot act on.
|
|
584
|
+
argv = agent_argv(profile, model) if agent else default_shell()
|
|
581
585
|
if agent:
|
|
582
586
|
try: pretrust(cwd, ' '.join(str(a) for a in argv)) # no first-run dialog to park on
|
|
583
587
|
except Exception as e: logger.debug(f'pretrust skipped: {e}')
|