shipit-agent 2.0.7__tar.gz → 2.2.0__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 (930) hide show
  1. {shipit_agent-2.0.7/shipit_agent.egg-info → shipit_agent-2.2.0}/PKG-INFO +68 -1
  2. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/README.md +67 -0
  3. shipit_agent-2.2.0/notebooks/openrouter_deep_test.ipynb +309 -0
  4. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/pyproject.toml +1 -1
  5. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/agent.py +50 -5
  6. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/agent_preparation.py +41 -6
  7. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/async_runtime.py +69 -15
  8. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/chat_session.py +7 -3
  9. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/compaction.py +24 -0
  10. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/costs/tracker.py +6 -2
  11. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deferral/__init__.py +2 -0
  12. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deferral/core.py +36 -10
  13. shipit_agent-2.2.0/shipit_agent/deferral/policy.py +64 -0
  14. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/hooks.py +26 -0
  15. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/anthropic_adapter.py +41 -10
  16. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/base.py +25 -1
  17. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/litellm_adapter.py +9 -1
  18. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/openai_adapter.py +12 -0
  19. shipit_agent-2.2.0/shipit_agent/llms/usage.py +30 -0
  20. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/mcp.py +6 -0
  21. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/permissions.py +19 -0
  22. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/prompts/reminders.py +4 -2
  23. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/routing/__init__.py +8 -2
  24. shipit_agent-2.2.0/shipit_agent/routing/step_router.py +248 -0
  25. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/runtime.py +85 -19
  26. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/runtime_core.py +463 -28
  27. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/runtime_narration.py +23 -1
  28. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/catalog.py +6 -1
  29. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/markdown.py +1 -1
  30. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tool_healing.py +8 -1
  31. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tool_runner.py +37 -3
  32. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/base.py +31 -0
  33. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/helpers.py +18 -6
  34. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/tool_search/prompt.py +3 -2
  35. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/tool_search/tool_search_tool.py +52 -23
  36. {shipit_agent-2.0.7 → shipit_agent-2.2.0/shipit_agent.egg-info}/PKG-INFO +68 -1
  37. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent.egg-info/SOURCES.txt +20 -0
  38. shipit_agent-2.2.0/tests/test_anthropic_stream_stop.py +149 -0
  39. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_bedrock_token.py +12 -0
  40. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_codemode_agent.py +4 -2
  41. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_compaction_calibrated.py +17 -0
  42. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_decision_narration.py +26 -0
  43. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_deferred_tools.py +136 -0
  44. shipit_agent-2.2.0/tests/test_discovery_policy.py +146 -0
  45. shipit_agent-2.2.0/tests/test_duplicate_withholds_tool.py +109 -0
  46. shipit_agent-2.2.0/tests/test_forced_text_loop.py +66 -0
  47. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_gemma_bedrock.py +10 -0
  48. shipit_agent-2.2.0/tests/test_heal_json_answer.py +34 -0
  49. shipit_agent-2.2.0/tests/test_large_discovery_http.py +131 -0
  50. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_mcp_resilience.py +18 -1
  51. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_mcp_robustness.py +23 -0
  52. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_native_structured_output.py +15 -6
  53. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_plugins.py +73 -0
  54. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_power_features.py +151 -0
  55. shipit_agent-2.2.0/tests/test_progressive_agent.py +147 -0
  56. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_prompt_caching.py +2 -2
  57. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_provider_runtime_contracts.py +106 -0
  58. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_reminders.py +24 -0
  59. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_retry_backoff_timeout.py +10 -1
  60. shipit_agent-2.2.0/tests/test_session_budget.py +119 -0
  61. shipit_agent-2.2.0/tests/test_skill_efficiency_boundaries.py +91 -0
  62. shipit_agent-2.2.0/tests/test_step_router.py +236 -0
  63. shipit_agent-2.2.0/tests/test_step_router_agent.py +153 -0
  64. shipit_agent-2.2.0/tests/test_stop_hooks.py +101 -0
  65. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_token_counting.py +7 -3
  66. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_healing.py +12 -0
  67. shipit_agent-2.2.0/tests/test_user_prompt_hooks.py +53 -0
  68. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_workspace.py +8 -2
  69. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/.env.example +0 -0
  70. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/LICENSE.md +0 -0
  71. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/MANIFEST.in +0 -0
  72. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/SECURITY.md +0 -0
  73. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/TOOLS.md +0 -0
  74. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/docs.md +0 -0
  75. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/01_hello_agent.py +0 -0
  76. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/02_streaming_with_reasoning.py +0 -0
  77. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/03_provider_swap.py +0 -0
  78. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/04_research_agent.py +0 -0
  79. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/05_custom_tool.py +0 -0
  80. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/06_chat_session.py +0 -0
  81. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/07_tool_search.py +0 -0
  82. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/08_structured_output.py +0 -0
  83. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/09_pipeline.py +0 -0
  84. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/10_agent_team.py +0 -0
  85. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/11_deep_agents.py +0 -0
  86. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/12_advanced_memory.py +0 -0
  87. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/13_parallel_tools.py +0 -0
  88. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/14_cost_budget.py +0 -0
  89. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/15_multi_turn_memory.py +0 -0
  90. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/16_async_agent.py +0 -0
  91. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/17_secure_tools.py +0 -0
  92. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/18_verifier_guard.py +0 -0
  93. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/19_gemma_on_bedrock.py +0 -0
  94. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/20_scheduled_jobs.py +0 -0
  95. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/21_growth_research_agent.py +0 -0
  96. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/22_super_agent.py +0 -0
  97. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/23_bedrock_model_switching.py +0 -0
  98. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/24_rag_agent_citations.py +0 -0
  99. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/__init__.py +0 -0
  100. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/custom_function_tool_template.py +0 -0
  101. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/custom_workspace_tool_template.py +0 -0
  102. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/reasoning_agent_template.py +0 -0
  103. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/examples/run_multi_tool_agent.py +0 -0
  104. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/01_agent_without_tools.ipynb +0 -0
  105. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/02_agent_multi_tools.ipynb +0 -0
  106. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/03_agent_sessions_and_history.ipynb +0 -0
  107. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/04_agent_streaming_packets.ipynb +0 -0
  108. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/05_agent_with_mcp.ipynb +0 -0
  109. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/06_agent_connectors_gmail_and_others.ipynb +0 -0
  110. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/07_agent_with_human_review.ipynb +0 -0
  111. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/08_agent_with_ask_user.ipynb +0 -0
  112. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/09_agent_reasoning_and_thinking.ipynb +0 -0
  113. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/10_parsers_and_structured_output.ipynb +0 -0
  114. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/11_pipeline_composition.ipynb +0 -0
  115. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/12_agent_teams.ipynb +0 -0
  116. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/13_advanced_memory.ipynb +0 -0
  117. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/14_deep_agents.ipynb +0 -0
  118. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/15_agent_benchmark.ipynb +0 -0
  119. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/16_deep_agents_streaming.ipynb +0 -0
  120. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/17_deep_agents_real_world.ipynb +0 -0
  121. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/18_deep_agents_with_memory.ipynb +0 -0
  122. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/19_supervisor_with_tools.ipynb +0 -0
  123. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/20_goal_agent_with_tools.ipynb +0 -0
  124. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/21_reflective_agent_web_research.ipynb +0 -0
  125. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/22_rag_basics.ipynb +0 -0
  126. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/23_rag_with_agent.ipynb +0 -0
  127. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/24_rag_with_deep_agents.ipynb +0 -0
  128. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/25_deep_agent_chat.ipynb +0 -0
  129. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/26_agent_memory.ipynb +0 -0
  130. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/27_skills_catalog_and_usage.ipynb +0 -0
  131. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/28_create_and_use_custom_skills.ipynb +0 -0
  132. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/29_deep_agent_with_skills.ipynb +0 -0
  133. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/30_build_full_project_with_skills.ipynb +0 -0
  134. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/31_cost_tracker.ipynb +0 -0
  135. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/32_prebuilt_agents.ipynb +0 -0
  136. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/33_ship_crew_orchestration.ipynb +0 -0
  137. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/34_notifications.ipynb +0 -0
  138. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/35_cost_tracking_and_budgets.ipynb +0 -0
  139. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/36_skill_power_tools_and_metadata.ipynb +0 -0
  140. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/37_autopilot_quickstart.ipynb +0 -0
  141. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/38_autopilot_live_streaming.ipynb +0 -0
  142. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/39_persistence_and_scheduler_daemon.ipynb +0 -0
  143. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/40_specialists_developer_debugger_researcher.ipynb +0 -0
  144. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/41_specialists_design_pm_sales_cs_marketing.ipynb +0 -0
  145. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/42_power_tools_computer_use_hubspot_research.ipynb +0 -0
  146. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/43_fanout_critic_artifacts.ipynb +0 -0
  147. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/44_complete_tour.ipynb +0 -0
  148. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/45_cost_router_async_ask_vision_sandbox.ipynb +0 -0
  149. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/46_dashboard_render_tool_and_litellm.ipynb +0 -0
  150. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/47_pm_pr_digest.ipynb +0 -0
  151. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/48_designer_figma_review.ipynb +0 -0
  152. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/49_sales_lead_enrichment.ipynb +0 -0
  153. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/50_manager_sheets_kpis.ipynb +0 -0
  154. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/51_support_zendesk_triage.ipynb +0 -0
  155. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/52_analyst_sql_to_dashboard.ipynb +0 -0
  156. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/53_finance_stripe_pdf_cashflow.ipynb +0 -0
  157. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/54_structured_output_with_retry.ipynb +0 -0
  158. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/55_verifier_network.ipynb +0 -0
  159. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/56_episodic_memory_consolidation.ipynb +0 -0
  160. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/57_time_travel_replay.ipynb +0 -0
  161. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/58_computer_use_agent.ipynb +0 -0
  162. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/59_browser_agent_tool.ipynb +0 -0
  163. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/60_multimodal_chat.ipynb +0 -0
  164. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/61_permissions_and_plan_mode.ipynb +0 -0
  165. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/62_prompt_caching.ipynb +0 -0
  166. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/63_claude_memory_tool.ipynb +0 -0
  167. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/64_server_side_tools.ipynb +0 -0
  168. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/65_citations_and_batch.ipynb +0 -0
  169. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/66_interleaved_thinking.ipynb +0 -0
  170. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/67_shipit_workspace.ipynb +0 -0
  171. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/68_todo_tool.ipynb +0 -0
  172. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/69_gemma_bedrock_agent.ipynb +0 -0
  173. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/70_super_agent.ipynb +0 -0
  174. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/71_full_test_drive.ipynb +0 -0
  175. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/72_guardrails_and_deep_research.ipynb +0 -0
  176. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/73_cli_and_power_tools.ipynb +0 -0
  177. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/74_live_streaming_gemma.ipynb +0 -0
  178. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/75_live_ui_and_subagents.ipynb +0 -0
  179. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/76_apps_and_analysis.ipynb +0 -0
  180. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/77_super_agent_live_validation.ipynb +0 -0
  181. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/78_agent_mcp_token_stream_audit.ipynb +0 -0
  182. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/79_observability_watcher_langfuse.ipynb +0 -0
  183. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/computer_use/_computer_use.ipynb +0 -0
  184. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/shipit_agent_test_drive.ipynb +0 -0
  185. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/text_to_speech/_text_to_speech.ipynb +0 -0
  186. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/notebooks/tool_confirmation/_tool_confirmation.ipynb +0 -0
  187. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/requirements.txt +0 -0
  188. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/setup.cfg +0 -0
  189. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit-icon.svg +0 -0
  190. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/__init__.py +0 -0
  191. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/action_detection.py +0 -0
  192. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/activity.py +0 -0
  193. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/agent_mixin.py +0 -0
  194. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/agents/__init__.py +0 -0
  195. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/agents/_specialists_patch.py +0 -0
  196. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/agents/definition.py +0 -0
  197. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/agents/registry.py +0 -0
  198. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/approvals/__init__.py +0 -0
  199. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/approvals/gate.py +0 -0
  200. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/approvals/models.py +0 -0
  201. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/approvals/queue.py +0 -0
  202. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/approvals/revert.py +0 -0
  203. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/apps.py +0 -0
  204. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/askuser_channel.py +0 -0
  205. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/__init__.py +0 -0
  206. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/artifacts.py +0 -0
  207. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/budget.py +0 -0
  208. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/checkpoint.py +0 -0
  209. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/core.py +0 -0
  210. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/critic.py +0 -0
  211. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/events.py +0 -0
  212. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/fanout.py +0 -0
  213. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/result.py +0 -0
  214. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/autopilot/streaming.py +0 -0
  215. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/batch/__init__.py +0 -0
  216. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/batch/batch_runtime.py +0 -0
  217. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/bridge.py +0 -0
  218. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/builtins.py +0 -0
  219. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/chat_cli.py +0 -0
  220. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/chat_history.py +0 -0
  221. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/checkpoint.py +0 -0
  222. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/__init__.py +0 -0
  223. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/commands/__init__.py +0 -0
  224. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/commands/browse.py +0 -0
  225. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/commands/catalog.py +0 -0
  226. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/commands/code.py +0 -0
  227. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/commands/jobs.py +0 -0
  228. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/commands/serve_cmd.py +0 -0
  229. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/commands/simple.py +0 -0
  230. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/llm.py +0 -0
  231. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/tui.py +0 -0
  232. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli/ui.py +0 -0
  233. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/cli_autopilot.py +0 -0
  234. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/codemode/__init__.py +0 -0
  235. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/codemode/bindings.py +0 -0
  236. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/codemode/bridge.py +0 -0
  237. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/codemode/catalog.py +0 -0
  238. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/codemode/preamble.py +0 -0
  239. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/computer_use/__init__.py +0 -0
  240. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/computer_use/browser_session.py +0 -0
  241. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/computer_use/browser_tool.py +0 -0
  242. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/computer_use/computer_use_agent.py +0 -0
  243. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/computer_use/models.py +0 -0
  244. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/computer_use/parser.py +0 -0
  245. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/config.py +0 -0
  246. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connections/__init__.py +0 -0
  247. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connections/mcp.py +0 -0
  248. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connections/models.py +0 -0
  249. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connections/registry.py +0 -0
  250. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/__init__.py +0 -0
  251. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/base.py +0 -0
  252. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/__init__.py +0 -0
  253. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/airtable/manifest.yaml +0 -0
  254. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/asana/manifest.yaml +0 -0
  255. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/brave-search/manifest.yaml +0 -0
  256. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/clickup/manifest.yaml +0 -0
  257. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/cloudflare/manifest.yaml +0 -0
  258. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/confluence/manifest.yaml +0 -0
  259. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/discord/manifest.yaml +0 -0
  260. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/fetch/manifest.yaml +0 -0
  261. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/filesystem/manifest.yaml +0 -0
  262. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/gdrive/manifest.yaml +0 -0
  263. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/github/manifest.yaml +0 -0
  264. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/gitlab/manifest.yaml +0 -0
  265. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/google-maps/manifest.yaml +0 -0
  266. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/intercom/manifest.yaml +0 -0
  267. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/jira/manifest.yaml +0 -0
  268. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/linear/manifest.yaml +0 -0
  269. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/memory/manifest.yaml +0 -0
  270. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/notion/manifest.yaml +0 -0
  271. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/paypal/manifest.yaml +0 -0
  272. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/playwright/manifest.yaml +0 -0
  273. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/postgres/manifest.yaml +0 -0
  274. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/puppeteer/manifest.yaml +0 -0
  275. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/sentry/manifest.yaml +0 -0
  276. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/slack/manifest.yaml +0 -0
  277. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/sqlite/manifest.yaml +0 -0
  278. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/square/manifest.yaml +0 -0
  279. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/stripe/manifest.yaml +0 -0
  280. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/catalog/todoist/manifest.yaml +0 -0
  281. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/manifests.py +0 -0
  282. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/oauth_manager.py +0 -0
  283. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/registry.py +0 -0
  284. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/connectors/tokens.py +0 -0
  285. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/construction.py +0 -0
  286. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/context_fit.py +0 -0
  287. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/context_tracker.py +0 -0
  288. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/costs/__init__.py +0 -0
  289. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/costs/budget.py +0 -0
  290. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/costs/pricing.py +0 -0
  291. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/__init__.py +0 -0
  292. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/adaptive_agent.py +0 -0
  293. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/benchmark.py +0 -0
  294. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/channel.py +0 -0
  295. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/deep_agent/__init__.py +0 -0
  296. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/deep_agent/delegation.py +0 -0
  297. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/deep_agent/factory.py +0 -0
  298. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/deep_agent/prompt.py +0 -0
  299. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/deep_agent/toolset.py +0 -0
  300. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/deep_agent/verification.py +0 -0
  301. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/goal_agent.py +0 -0
  302. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/persistent_agent.py +0 -0
  303. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/reflective_agent.py +0 -0
  304. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/ship_crew/__init__.py +0 -0
  305. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/ship_crew/agent.py +0 -0
  306. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/ship_crew/coordinator.py +0 -0
  307. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/ship_crew/crew.py +0 -0
  308. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/ship_crew/errors.py +0 -0
  309. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/ship_crew/result.py +0 -0
  310. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/ship_crew/task.py +0 -0
  311. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/deep/supervisor.py +0 -0
  312. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/delegation.py +0 -0
  313. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/discovery.py +0 -0
  314. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/doctor.py +0 -0
  315. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/exceptions.py +0 -0
  316. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/graph.py +0 -0
  317. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/guardrails.py +0 -0
  318. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/hitl.py +0 -0
  319. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/integrations/__init__.py +0 -0
  320. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/integrations/credentials.py +0 -0
  321. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/integrations/oauth.py +0 -0
  322. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/live.py +0 -0
  323. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/live_renderer.py +0 -0
  324. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/__init__.py +0 -0
  325. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/bedrock_token.py +0 -0
  326. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/capabilities.py +0 -0
  327. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/citations.py +0 -0
  328. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/factory.py +0 -0
  329. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/mantle.py +0 -0
  330. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/parameters.py +0 -0
  331. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/schema_prep.py +0 -0
  332. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/schema_rules.py +0 -0
  333. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/server_tools.py +0 -0
  334. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/simple.py +0 -0
  335. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/throttle.py +0 -0
  336. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/tool_choice.py +0 -0
  337. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/llms/wire.py +0 -0
  338. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/lockdown.py +0 -0
  339. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/mcp_bridge.py +0 -0
  340. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/mcp_catalog.py +0 -0
  341. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/mcp_resilience.py +0 -0
  342. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/mcp_schema_cache.py +0 -0
  343. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/memory/__init__.py +0 -0
  344. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/memory/agent_memory.py +0 -0
  345. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/memory/consolidator.py +0 -0
  346. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/memory/conversation.py +0 -0
  347. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/memory/entity.py +0 -0
  348. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/memory/semantic.py +0 -0
  349. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/models.py +0 -0
  350. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/multimodal/__init__.py +0 -0
  351. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/multimodal/builder.py +0 -0
  352. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/multimodal/models.py +0 -0
  353. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/multimodal/parser.py +0 -0
  354. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/multimodal/store.py +0 -0
  355. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/__init__.py +0 -0
  356. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/grouping.py +0 -0
  357. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/json_stream.py +0 -0
  358. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/live_ui.py +0 -0
  359. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/renderer.py +0 -0
  360. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/share.py +0 -0
  361. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/timeline.py +0 -0
  362. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/tree.py +0 -0
  363. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/narrate/verbs.py +0 -0
  364. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/notifications/__init__.py +0 -0
  365. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/notifications/base.py +0 -0
  366. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/notifications/discord.py +0 -0
  367. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/notifications/manager.py +0 -0
  368. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/notifications/slack.py +0 -0
  369. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/notifications/telegram.py +0 -0
  370. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/notifications/templates.py +0 -0
  371. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/packets.py +0 -0
  372. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/parsers/__init__.py +0 -0
  373. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/parsers/base.py +0 -0
  374. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/parsers/json_parser.py +0 -0
  375. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/parsers/markdown_parser.py +0 -0
  376. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/parsers/pydantic_parser.py +0 -0
  377. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/parsers/regex_parser.py +0 -0
  378. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/parsers/streaming_json.py +0 -0
  379. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/pipeline/__init__.py +0 -0
  380. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/pipeline/pipeline.py +0 -0
  381. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/pipeline/step.py +0 -0
  382. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/__init__.py +0 -0
  383. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/apply.py +0 -0
  384. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/base.py +0 -0
  385. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/catalog/__init__.py +0 -0
  386. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/catalog/audit-log/plugin.py +0 -0
  387. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/catalog/audit-log/plugin.yaml +0 -0
  388. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/catalog/word-count/plugin.py +0 -0
  389. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/catalog/word-count/plugin.yaml +0 -0
  390. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/manifests.py +0 -0
  391. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/plugins/registry.py +0 -0
  392. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/policies.py +0 -0
  393. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/prefix.py +0 -0
  394. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/prefix_rules.py +0 -0
  395. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/profiles.py +0 -0
  396. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/prompts/__init__.py +0 -0
  397. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/prompts/default_agent_prompt.py +0 -0
  398. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/prompts/tool_prompts.py +0 -0
  399. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/__init__.py +0 -0
  400. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/base.py +0 -0
  401. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/__init__.py +0 -0
  402. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/anthropic/profile.yaml +0 -0
  403. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/anthropic/provider.py +0 -0
  404. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/bedrock/profile.yaml +0 -0
  405. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/bedrock/provider.py +0 -0
  406. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/gemini/profile.yaml +0 -0
  407. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/groq/profile.yaml +0 -0
  408. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/litellm/profile.yaml +0 -0
  409. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/litellm/provider.py +0 -0
  410. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/ollama/profile.yaml +0 -0
  411. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/openai/profile.yaml +0 -0
  412. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/openai/provider.py +0 -0
  413. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/shipit/profile.yaml +0 -0
  414. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/shipit/provider.py +0 -0
  415. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/together/profile.yaml +0 -0
  416. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/vertex/profile.yaml +0 -0
  417. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/catalog/vertex/provider.py +0 -0
  418. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/profiles.py +0 -0
  419. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/providers/registry.py +0 -0
  420. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/__init__.py +0 -0
  421. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/adapters/__init__.py +0 -0
  422. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/chunker.py +0 -0
  423. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/embedder.py +0 -0
  424. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/extractors.py +0 -0
  425. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/keyword_store.py +0 -0
  426. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/rag.py +0 -0
  427. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/reranker.py +0 -0
  428. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/search_pipeline.py +0 -0
  429. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/tools.py +0 -0
  430. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/types.py +0 -0
  431. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rag/vector_store.py +0 -0
  432. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/reasoning.py +0 -0
  433. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/registry.py +0 -0
  434. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/replay/__init__.py +0 -0
  435. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/replay/differ.py +0 -0
  436. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/replay/models.py +0 -0
  437. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/replay/replayer.py +0 -0
  438. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/routing/cost_router.py +0 -0
  439. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rules/__init__.py +0 -0
  440. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rules/loader.py +0 -0
  441. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rules/registry.py +0 -0
  442. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/rules/rule.py +0 -0
  443. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/runtime_state.py +0 -0
  444. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/schedule.py +0 -0
  445. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/scheduler_daemon.py +0 -0
  446. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/serve.py +0 -0
  447. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/session_facts.py +0 -0
  448. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/session_lock.py +0 -0
  449. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/session_manager.py +0 -0
  450. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/__init__.py +0 -0
  451. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/authoring.py +0 -0
  452. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/loader.py +0 -0
  453. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/registry.py +0 -0
  454. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/skill.py +0 -0
  455. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/skills/tool_bundles.py +0 -0
  456. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/stores/__init__.py +0 -0
  457. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/stores/memory.py +0 -0
  458. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/stores/session.py +0 -0
  459. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/streaming.py +0 -0
  460. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/structured.py +0 -0
  461. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/structured_output.py +0 -0
  462. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/subagents.py +0 -0
  463. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/team/__init__.py +0 -0
  464. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/team/agent.py +0 -0
  465. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/team/team.py +0 -0
  466. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/templates.py +0 -0
  467. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/__init__.py +0 -0
  468. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/conftest.py +0 -0
  469. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_agent_core.py +0 -0
  470. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_agent_mixin.py +0 -0
  471. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_bridge.py +0 -0
  472. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_core_tools.py +0 -0
  473. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_graph.py +0 -0
  474. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_mcp_and_skills.py +0 -0
  475. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_parameters.py +0 -0
  476. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_providers.py +0 -0
  477. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_schema_prep.py +0 -0
  478. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tests/test_tools_and_connections.py +0 -0
  479. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/token_calibration.py +0 -0
  480. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/token_counting.py +0 -0
  481. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/toolkit/__init__.py +0 -0
  482. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/toolkit/contracts.py +0 -0
  483. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/__init__.py +0 -0
  484. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/_playwright.py +0 -0
  485. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/_shared.py +0 -0
  486. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/agent_tool.py +0 -0
  487. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/apps/__init__.py +0 -0
  488. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/apps/apps_tools.py +0 -0
  489. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/artifact_builder/__init__.py +0 -0
  490. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/artifact_builder/artifact_builder_tool.py +0 -0
  491. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/artifact_builder/prompt.py +0 -0
  492. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/ask_user/__init__.py +0 -0
  493. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/ask_user/ask_user_tool.py +0 -0
  494. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/ask_user/prompt.py +0 -0
  495. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/ask_user_async/__init__.py +0 -0
  496. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/ask_user_async/ask_user_async_tool.py +0 -0
  497. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/ask_user_async/prompt.py +0 -0
  498. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/availability.py +0 -0
  499. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/bash/__init__.py +0 -0
  500. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/bash/bash_tool.py +0 -0
  501. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/bash/prompt.py +0 -0
  502. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/code_execution/__init__.py +0 -0
  503. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/code_execution/code_execution_tool.py +0 -0
  504. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/code_execution/prompt.py +0 -0
  505. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/code_execution/sandbox.py +0 -0
  506. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/computer_use/__init__.py +0 -0
  507. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/computer_use/backends.py +0 -0
  508. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/computer_use/computer_use_tool.py +0 -0
  509. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/computer_use/prompt.py +0 -0
  510. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/confirmation.py +0 -0
  511. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/confluence/__init__.py +0 -0
  512. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/confluence/confluence_tool.py +0 -0
  513. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/confluence/prompt.py +0 -0
  514. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/connections/__init__.py +0 -0
  515. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/connections/connections_tool.py +0 -0
  516. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/connector_base.py +0 -0
  517. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/contracts.py +0 -0
  518. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/custom_api/__init__.py +0 -0
  519. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/custom_api/custom_api_tool.py +0 -0
  520. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/custom_api/prompt.py +0 -0
  521. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/dashboard_render/__init__.py +0 -0
  522. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/dashboard_render/dashboard_render_tool.py +0 -0
  523. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/dashboard_render/prompt.py +0 -0
  524. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/dashboard_render/renderer.py +0 -0
  525. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/dashboard_render/styles.py +0 -0
  526. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/decision_matrix/__init__.py +0 -0
  527. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/decision_matrix/decision_matrix_tool.py +0 -0
  528. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/decision_matrix/prompt.py +0 -0
  529. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/deep_research/__init__.py +0 -0
  530. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/deep_research/deep_research_tool.py +0 -0
  531. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/describe_binding/__init__.py +0 -0
  532. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/describe_binding/describe_binding_tool.py +0 -0
  533. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/document_builder/__init__.py +0 -0
  534. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/document_builder/document_builder_tool.py +0 -0
  535. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/document_builder/prompt.py +0 -0
  536. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/document_builder/renderers.py +0 -0
  537. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/download_file/__init__.py +0 -0
  538. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/download_file/download_file_tool.py +0 -0
  539. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/download_file/prompt.py +0 -0
  540. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/edit_file/__init__.py +0 -0
  541. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/edit_file/edit_file_tool.py +0 -0
  542. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/edit_file/multi_edit_tool.py +0 -0
  543. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/edit_file/prompt.py +0 -0
  544. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/evidence_synthesis/__init__.py +0 -0
  545. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/evidence_synthesis/evidence_synthesis_tool.py +0 -0
  546. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/evidence_synthesis/prompt.py +0 -0
  547. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/execute_code/__init__.py +0 -0
  548. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/execute_code/execute_code_tool.py +0 -0
  549. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/fetch_url/__init__.py +0 -0
  550. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/fetch_url/fetch_url_tool.py +0 -0
  551. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/fetch_url/prompt.py +0 -0
  552. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/figma/__init__.py +0 -0
  553. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/figma/figma_tool.py +0 -0
  554. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/figma/prompt.py +0 -0
  555. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_extract/__init__.py +0 -0
  556. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_extract/extractors.py +0 -0
  557. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_read/__init__.py +0 -0
  558. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_read/file_read_tool.py +0 -0
  559. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_read/prompt.py +0 -0
  560. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_write/__init__.py +0 -0
  561. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_write/file_write_tool.py +0 -0
  562. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/file_write/prompt.py +0 -0
  563. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/formatting.py +0 -0
  564. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/function.py +0 -0
  565. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/git_ops/__init__.py +0 -0
  566. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/git_ops/git_ops_tool.py +0 -0
  567. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/github/__init__.py +0 -0
  568. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/github/github_tool.py +0 -0
  569. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/github/pagination.py +0 -0
  570. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/github/prompt.py +0 -0
  571. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/gitlab/__init__.py +0 -0
  572. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/gitlab/gitlab_tool.py +0 -0
  573. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/gitlab/prompt.py +0 -0
  574. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/give_up/__init__.py +0 -0
  575. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/give_up/give_up_tool.py +0 -0
  576. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/glob/__init__.py +0 -0
  577. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/glob/glob_tool.py +0 -0
  578. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/glob/prompt.py +0 -0
  579. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/glob_search/__init__.py +0 -0
  580. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/glob_search/glob_search_tool.py +0 -0
  581. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/glob_search/prompt.py +0 -0
  582. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/gmail/__init__.py +0 -0
  583. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/gmail/gmail_tool.py +0 -0
  584. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/gmail/prompt.py +0 -0
  585. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_calendar/__init__.py +0 -0
  586. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_calendar/google_calendar_tool.py +0 -0
  587. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_calendar/prompt.py +0 -0
  588. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_drive/__init__.py +0 -0
  589. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_drive/google_drive_tool.py +0 -0
  590. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_drive/prompt.py +0 -0
  591. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_sheets/__init__.py +0 -0
  592. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_sheets/google_sheets_tool.py +0 -0
  593. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/google_sheets/prompt.py +0 -0
  594. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/grep/__init__.py +0 -0
  595. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/grep/grep_tool.py +0 -0
  596. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/grep/prompt.py +0 -0
  597. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/grep_search/__init__.py +0 -0
  598. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/grep_search/grep_search_tool.py +0 -0
  599. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/grep_search/prompt.py +0 -0
  600. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/hubspot/__init__.py +0 -0
  601. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/hubspot/hubspot_tool.py +0 -0
  602. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/human_review/__init__.py +0 -0
  603. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/human_review/human_review_tool.py +0 -0
  604. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/human_review/prompt.py +0 -0
  605. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/image_generate/__init__.py +0 -0
  606. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/image_generate/image_gen_tool.py +0 -0
  607. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/image_generate/prompt.py +0 -0
  608. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/image_generate/providers.py +0 -0
  609. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/jira/__init__.py +0 -0
  610. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/jira/jira_tool.py +0 -0
  611. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/jira/prompt.py +0 -0
  612. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/linear/__init__.py +0 -0
  613. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/linear/linear_tool.py +0 -0
  614. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/linear/prompt.py +0 -0
  615. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/linkedin/__init__.py +0 -0
  616. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/linkedin/linkedin_search_tool.py +0 -0
  617. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/linkedin/prompt.py +0 -0
  618. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/memory/__init__.py +0 -0
  619. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/memory/claude_memory_tool.py +0 -0
  620. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/memory/memory_tool.py +0 -0
  621. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/memory/prompt.py +0 -0
  622. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/memory/store.py +0 -0
  623. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/notebook_edit/__init__.py +0 -0
  624. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/notebook_edit/notebook_edit_tool.py +0 -0
  625. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/notion/__init__.py +0 -0
  626. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/notion/notion_tool.py +0 -0
  627. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/notion/prompt.py +0 -0
  628. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/open_url/__init__.py +0 -0
  629. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/open_url/open_url_tool.py +0 -0
  630. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/open_url/prompt.py +0 -0
  631. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/pdf/__init__.py +0 -0
  632. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/pdf/pdf_tool.py +0 -0
  633. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/pdf/prompt.py +0 -0
  634. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/planner/__init__.py +0 -0
  635. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/planner/planner_tool.py +0 -0
  636. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/planner/present_plan_tool.py +0 -0
  637. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/planner/prompt.py +0 -0
  638. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/playwright_browser/__init__.py +0 -0
  639. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/playwright_browser/playwright_browser_tool.py +0 -0
  640. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/playwright_browser/prompt.py +0 -0
  641. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/present_file/__init__.py +0 -0
  642. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/present_file/present_file_tool.py +0 -0
  643. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/present_file/prompt.py +0 -0
  644. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/prompt/__init__.py +0 -0
  645. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/prompt/prompt.py +0 -0
  646. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/prompt/prompt_tool.py +0 -0
  647. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/read_file/__init__.py +0 -0
  648. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/read_file/prompt.py +0 -0
  649. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/read_file/read_file_tool.py +0 -0
  650. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/recall_result/__init__.py +0 -0
  651. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/recall_result/recall_result_tool.py +0 -0
  652. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/report_progress/__init__.py +0 -0
  653. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/report_progress/prompt.py +0 -0
  654. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/report_progress/report_progress_tool.py +0 -0
  655. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/research_brief/__init__.py +0 -0
  656. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/research_brief/research_brief_tool.py +0 -0
  657. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/salesforce/__init__.py +0 -0
  658. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/salesforce/prompt.py +0 -0
  659. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/salesforce/salesforce_tool.py +0 -0
  660. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/slack/__init__.py +0 -0
  661. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/slack/prompt.py +0 -0
  662. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/slack/slack_tool.py +0 -0
  663. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/sql/__init__.py +0 -0
  664. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/sql/prompt.py +0 -0
  665. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/sql/sql_tool.py +0 -0
  666. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/stripe/__init__.py +0 -0
  667. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/stripe/prompt.py +0 -0
  668. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/stripe/stripe_tool.py +0 -0
  669. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/sub_agent/__init__.py +0 -0
  670. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/sub_agent/prompt.py +0 -0
  671. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/sub_agent/sub_agent_tool.py +0 -0
  672. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/text_to_speech/__init__.py +0 -0
  673. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/text_to_speech/prompt.py +0 -0
  674. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/text_to_speech/providers.py +0 -0
  675. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/text_to_speech/tts_tool.py +0 -0
  676. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/thought_decomposition/__init__.py +0 -0
  677. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/thought_decomposition/prompt.py +0 -0
  678. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/thought_decomposition/thought_decomposition_tool.py +0 -0
  679. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/todo/__init__.py +0 -0
  680. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/todo/prompt.py +0 -0
  681. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/todo/todo_tool.py +0 -0
  682. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/tool_search/__init__.py +0 -0
  683. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/verifier/__init__.py +0 -0
  684. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/verifier/prompt.py +0 -0
  685. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/verifier/verifier_tool.py +0 -0
  686. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/video_generate/__init__.py +0 -0
  687. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/video_generate/prompt.py +0 -0
  688. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/video_generate/providers.py +0 -0
  689. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/video_generate/video_gen_tool.py +0 -0
  690. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/vision/__init__.py +0 -0
  691. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/vision/prompt.py +0 -0
  692. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/vision/vision_tool.py +0 -0
  693. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/web_search/__init__.py +0 -0
  694. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/web_search/prompt.py +0 -0
  695. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/web_search/providers.py +0 -0
  696. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/web_search/web_search_tool.py +0 -0
  697. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/webhook_payload.py +0 -0
  698. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/workspace_files/__init__.py +0 -0
  699. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/workspace_files/prompt.py +0 -0
  700. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/workspace_files/workspace_files_tool.py +0 -0
  701. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/write_file/__init__.py +0 -0
  702. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/write_file/prompt.py +0 -0
  703. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/write_file/write_file_tool.py +0 -0
  704. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/zendesk/__init__.py +0 -0
  705. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/zendesk/prompt.py +0 -0
  706. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools/zendesk/zendesk_tool.py +0 -0
  707. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tools_compat.py +0 -0
  708. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tracing.py +0 -0
  709. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tracing_exporters/__init__.py +0 -0
  710. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tracing_exporters/langfuse_exporter.py +0 -0
  711. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tracing_exporters/langsmith_exporter.py +0 -0
  712. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tracing_exporters/otel_exporter.py +0 -0
  713. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/tracing_exporters/watcher_exporter.py +0 -0
  714. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/triggers.py +0 -0
  715. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/usage.py +0 -0
  716. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verifier/__init__.py +0 -0
  717. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verifier/models.py +0 -0
  718. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verifier/pre_tool.py +0 -0
  719. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verifier/progress.py +0 -0
  720. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verifier/verifier_network.py +0 -0
  721. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verify/__init__.py +0 -0
  722. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verify/gate.py +0 -0
  723. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verify/ledger.py +0 -0
  724. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verify/project_facts.py +0 -0
  725. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/verify/runtime_gate.py +0 -0
  726. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/workspace/__init__.py +0 -0
  727. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/workspace/commands.py +0 -0
  728. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/workspace/project_memory.py +0 -0
  729. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent/workspace/settings.py +0 -0
  730. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent.egg-info/dependency_links.txt +0 -0
  731. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent.egg-info/entry_points.txt +0 -0
  732. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent.egg-info/requires.txt +0 -0
  733. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/shipit_agent.egg-info/top_level.txt +0 -0
  734. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_activity_trace.py +0 -0
  735. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_agent_as_tool.py +0 -0
  736. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_agent_mcp_token_stream_notebook.py +0 -0
  737. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_agent_scheduler.py +0 -0
  738. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_agent_server_cli.py +0 -0
  739. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_agent_structured_output.py +0 -0
  740. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_anthropic_power_features.py +0 -0
  741. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_approvals.py +0 -0
  742. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_apps.py +0 -0
  743. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_argument_gate.py +0 -0
  744. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_askuser_async.py +0 -0
  745. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_async_parity_gates.py +0 -0
  746. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_atomic_stores.py +0 -0
  747. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_autopilot.py +0 -0
  748. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_autopilot_artifacts.py +0 -0
  749. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_autopilot_bedrock_e2e.py +0 -0
  750. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_autopilot_critic.py +0 -0
  751. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_autopilot_fanout.py +0 -0
  752. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_autopilot_hardening.py +0 -0
  753. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_autopilot_long_task.py +0 -0
  754. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_bash_security.py +0 -0
  755. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_batch_runtime.py +0 -0
  756. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_blind_call_repair.py +0 -0
  757. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_browser_agent_tool.py +0 -0
  758. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_chat_cli.py +0 -0
  759. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_chat_history.py +0 -0
  760. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_chat_session_and_packets.py +0 -0
  761. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_claude_code_parity.py +0 -0
  762. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_claude_memory_tool.py +0 -0
  763. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_cli_doctor_and_errors.py +0 -0
  764. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_cli_model_defaults.py +0 -0
  765. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_code_execution_sandbox.py +0 -0
  766. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_code_execution_temp_cleanup.py +0 -0
  767. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_code_execution_tool.py +0 -0
  768. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_codemode_bindings.py +0 -0
  769. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_codemode_execute.py +0 -0
  770. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_compaction.py +0 -0
  771. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_computer_use.py +0 -0
  772. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_computer_use_apps.py +0 -0
  773. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_computer_use_streaming.py +0 -0
  774. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_computer_use_vision.py +0 -0
  775. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_connection_cards.py +0 -0
  776. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_connection_flow.py +0 -0
  777. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_connections.py +0 -0
  778. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_connector_tools.py +0 -0
  779. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_connectors.py +0 -0
  780. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_construction_and_runner.py +0 -0
  781. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_context_fit.py +0 -0
  782. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_context_tracker.py +0 -0
  783. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_core_agent.py +0 -0
  784. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_core_runtime_fixes.py +0 -0
  785. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_cost_router.py +0 -0
  786. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_cost_router_dropin.py +0 -0
  787. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_cost_unknown_model.py +0 -0
  788. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_dashboard_render.py +0 -0
  789. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_deep_agent_delegation.py +0 -0
  790. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_deep_agent_factory.py +0 -0
  791. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_deep_agents.py +0 -0
  792. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_deep_agents_streaming.py +0 -0
  793. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_deep_factory_passthrough.py +0 -0
  794. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_deep_research_tool.py +0 -0
  795. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_delegation.py +0 -0
  796. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_dict_message_compat.py +0 -0
  797. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_doctor.py +0 -0
  798. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_document_builder.py +0 -0
  799. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_download_file_tool.py +0 -0
  800. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_duplicate_call_suppression.py +0 -0
  801. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_edit_file_encoding.py +0 -0
  802. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_examples_and_env.py +0 -0
  803. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_fanout_order.py +0 -0
  804. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_figma_tool.py +0 -0
  805. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_file_extract.py +0 -0
  806. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_gap_fixes.py +0 -0
  807. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_git_ops_tool.py +0 -0
  808. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_github_tool.py +0 -0
  809. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_gitlab_tool.py +0 -0
  810. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_give_up.py +0 -0
  811. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_google_sheets_tool.py +0 -0
  812. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_guardrails.py +0 -0
  813. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_hitl_tui.py +0 -0
  814. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_image_generation.py +0 -0
  815. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_interactive_tools.py +0 -0
  816. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_json_extract.py +0 -0
  817. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_langfuse_exporter.py +0 -0
  818. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_last_step_budget.py +0 -0
  819. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_linkedin_tool.py +0 -0
  820. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_litellm_streaming.py +0 -0
  821. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_llm_factory.py +0 -0
  822. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_lockdown.py +0 -0
  823. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_mcp_and_profiles.py +0 -0
  824. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_mcp_catalog.py +0 -0
  825. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_mcp_parallel_connect.py +0 -0
  826. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_mcp_schema_cache.py +0 -0
  827. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_mcp_unavailable_stub.py +0 -0
  828. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_media_attachments.py +0 -0
  829. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_memory_consolidator.py +0 -0
  830. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_missing_arguments.py +0 -0
  831. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_model_capabilities.py +0 -0
  832. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_modern_agent_upgrades.py +0 -0
  833. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_multimodal.py +0 -0
  834. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_grouping.py +0 -0
  835. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_json_stream.py +0 -0
  836. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_live_ui.py +0 -0
  837. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_renderer.py +0 -0
  838. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_share.py +0 -0
  839. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_timeline.py +0 -0
  840. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_tree.py +0 -0
  841. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_narrate_verbs.py +0 -0
  842. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_new_examples.py +0 -0
  843. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_new_tools.py +0 -0
  844. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_notebook_assets.py +0 -0
  845. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_notebook_edit_tool.py +0 -0
  846. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_notifications_and_costs.py +0 -0
  847. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_oauth_and_tracing.py +0 -0
  848. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_oauth_manager.py +0 -0
  849. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_oauth_state.py +0 -0
  850. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_open_url_ssrf.py +0 -0
  851. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_parallel_read_safety.py +0 -0
  852. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_parity_upgrades.py +0 -0
  853. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_pdf_tool.py +0 -0
  854. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_permissions.py +0 -0
  855. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_pipeline_and_team_streaming.py +0 -0
  856. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_pipeline_stream_once.py +0 -0
  857. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_plan_mode_workflow.py +0 -0
  858. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_prebuilt_agents.py +0 -0
  859. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_present_file.py +0 -0
  860. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_pricing_resolution.py +0 -0
  861. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_prior_turn_eviction.py +0 -0
  862. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_productivity_tools.py +0 -0
  863. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_progress_summaries_are_free.py +0 -0
  864. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_provider_factory_regression.py +0 -0
  865. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_providers.py +0 -0
  866. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_reannounce_damping.py +0 -0
  867. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_reasoning_runtime.py +0 -0
  868. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_release_docs_consistency.py +0 -0
  869. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_replay.py +0 -0
  870. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_result_recall.py +0 -0
  871. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_revert.py +0 -0
  872. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_rules.py +0 -0
  873. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_runtime_high_assurance.py +0 -0
  874. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_runtime_parity.py +0 -0
  875. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_runtime_policies.py +0 -0
  876. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_salesforce_tool.py +0 -0
  877. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_schedule_runner.py +0 -0
  878. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_scheduled_agent_config.py +0 -0
  879. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_security_hardening.py +0 -0
  880. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_server_tools.py +0 -0
  881. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_session_eviction_persistence.py +0 -0
  882. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_session_facts.py +0 -0
  883. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_session_manager.py +0 -0
  884. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_ship_crew.py +0 -0
  885. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_skills_runtime.py +0 -0
  886. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_sql_security.py +0 -0
  887. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_sql_tool.py +0 -0
  888. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_state_and_storage.py +0 -0
  889. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_streaming_events_contract.py +0 -0
  890. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_streaming_frames.py +0 -0
  891. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_streaming_json.py +0 -0
  892. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_stripe_tool.py +0 -0
  893. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_structured_output.py +0 -0
  894. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_sub_agent_tool.py +0 -0
  895. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_subagent_power.py +0 -0
  896. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_subagent_streaming.py +0 -0
  897. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_super_agent_notebook.py +0 -0
  898. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_templates.py +0 -0
  899. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_text_to_speech.py +0 -0
  900. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_todo_tool.py +0 -0
  901. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_token_calibration.py +0 -0
  902. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_token_stores.py +0 -0
  903. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_token_streaming.py +0 -0
  904. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_argument_guard.py +0 -0
  905. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_availability.py +0 -0
  906. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_choice.py +0 -0
  907. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_confirmation.py +0 -0
  908. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_contracts.py +0 -0
  909. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_depth_upgrades.py +0 -0
  910. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_input_streaming.py +0 -0
  911. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_output_budget.py +0 -0
  912. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_output_formatting.py +0 -0
  913. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_output_streaming.py +0 -0
  914. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_prompts.py +0 -0
  915. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_schemas_bedrock_compat.py +0 -0
  916. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tool_section_placement.py +0 -0
  917. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_tracing_exporters.py +0 -0
  918. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_triggers.py +0 -0
  919. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_v108_user_surface.py +0 -0
  920. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_v2_modules.py +0 -0
  921. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_vector_store_ids.py +0 -0
  922. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_verifier_network.py +0 -0
  923. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_verify_gate.py +0 -0
  924. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_verify_ledger.py +0 -0
  925. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_verify_on_stop_loop.py +0 -0
  926. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_video_generation.py +0 -0
  927. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_vision_tool.py +0 -0
  928. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_web_and_browser_tools.py +0 -0
  929. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_webhook_payload_tool.py +0 -0
  930. {shipit_agent-2.0.7 → shipit_agent-2.2.0}/tests/test_zendesk_tool.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shipit-agent
3
- Version: 2.0.7
3
+ Version: 2.2.0
4
4
  Summary: A clean, powerful agent runtime with tools, MCP support, profiles, and streaming events.
5
5
  Author: Rahul Raj
6
6
  License: MIT
@@ -251,6 +251,73 @@ Both are backwards compatible and covered by the test suite. See the
251
251
 
252
252
  ---
253
253
 
254
+ ## Automatic tool discovery
255
+
256
+ Ordinary `Agent(llm=llm, tools=tools, mcps=servers)` now defaults to
257
+ `deferred_tools="auto"`. Catalogs that fit ten tools and approximately 4,096
258
+ schema tokens stay visible. Otherwise, the initial request exposes up to nine
259
+ working tools plus `search_tools`, within that schema budget.
260
+ An existing `ToolSearchTool` is reused under its configured name.
261
+
262
+ Core selection prefers a tool's numeric `discovery_priority`, then Shipit's
263
+ core capabilities, then registration order. Assign higher priorities to your
264
+ application's frequently used tools. Up to three recently discovered schemas
265
+ can be reused within the same session, competing for the same initial slots.
266
+ Changed schemas and statically denied tools are excluded from reuse; argument
267
+ permissions are still checked at execution. Session caches are bounded to 32
268
+ sessions per Agent instance and are not persisted across process restarts.
269
+ The model can search descriptions, names, and MCP server metadata; matching
270
+ tools become callable with their full schemas on the next step. Search does
271
+ not execute them or grant additional permissions. Loaded tools remain visible
272
+ for the rest of the run, so ten is an initial budget, not an execution limit.
273
+
274
+ Auto mode includes a compact capability-family index instead of listing every
275
+ deferred tool name. Ranking runs locally without additional LLM calls.
276
+ Exact-name searches load only the named tool; names can use underscores,
277
+ camelCase or Unicode. Newly loaded schemas append after those already shown.
278
+ This works through `run()`, `stream()`, and the async runtime using ordinary
279
+ function schemas, including providers without native tool-search support.
280
+
281
+ Use `deferred_tools=False` to keep every schema visible, `True` for the existing
282
+ core-only policy, or a list of names to defer specific tools. Code mode retains
283
+ its own discovery policy. Measure total request tokens and task completion in
284
+ your workload: discovery adds an LLM step, so schema savings are not a promise
285
+ of equal total-token savings.
286
+
287
+ See [the discovery review and offline benchmark](docs/tool-discovery-review.md)
288
+ for measured payload reductions and remaining tradeoffs.
289
+
290
+ Ordinary `Agent` also supports opt-in `progressive_skills=True` for metadata-first
291
+ skill loading and `max_task_tokens=50_000` for a soft per-run token threshold.
292
+ See [progressive skills, budget limits and validation](docs/progressive-agent-controls.md)
293
+ for setup, isolation guarantees and provider-usage caveats.
294
+
295
+ ```python
296
+ from shipit_agent.deferral import DiscoveryPolicy
297
+
298
+ agent = Agent(
299
+ llm=llm, tools=tools, mcps=servers,
300
+ deferred_tools=DiscoveryPolicy(initial_tools=10, schema_tokens=4096, reuse_tools=3),
301
+ )
302
+ ```
303
+
304
+ Discovery itself remains visible even if its schema exceeds a very small
305
+ configured budget. Definitions loaded during a run are not evicted mid-run.
306
+ For large structured results, tools may return
307
+ `ToolOutput.from_records(rows, fields=["id", "evidence"], limit=20)`.
308
+ The model receives an explicit page and total count; callers retain the full
309
+ JSON. This is context reduction, not security redaction.
310
+
311
+ Run summaries distinguish `finished` from `incomplete` provider output, expose
312
+ finish reasons, failed-tool counts, and recovery counts. `finished` means the
313
+ runtime ended normally, not that an independent grader verified the answer.
314
+ Provider-reported usage counters remain unchanged; cache ratios and cost
315
+ estimates account for whether cached tokens are included in prompt tokens.
316
+
317
+ An opt-in, billed multi-turn evaluation is available in
318
+ `scripts/evaluate_agent_session.py`. It uses safe fixture tools and an
319
+ in-process MCP server, not production data or production MCP transport.
320
+
254
321
  ## What's new in v1.7.0 — the working set
255
322
 
256
323
  The biggest capability release yet: do the powerful thing without burning tokens or trust.
@@ -125,6 +125,73 @@ Both are backwards compatible and covered by the test suite. See the
125
125
 
126
126
  ---
127
127
 
128
+ ## Automatic tool discovery
129
+
130
+ Ordinary `Agent(llm=llm, tools=tools, mcps=servers)` now defaults to
131
+ `deferred_tools="auto"`. Catalogs that fit ten tools and approximately 4,096
132
+ schema tokens stay visible. Otherwise, the initial request exposes up to nine
133
+ working tools plus `search_tools`, within that schema budget.
134
+ An existing `ToolSearchTool` is reused under its configured name.
135
+
136
+ Core selection prefers a tool's numeric `discovery_priority`, then Shipit's
137
+ core capabilities, then registration order. Assign higher priorities to your
138
+ application's frequently used tools. Up to three recently discovered schemas
139
+ can be reused within the same session, competing for the same initial slots.
140
+ Changed schemas and statically denied tools are excluded from reuse; argument
141
+ permissions are still checked at execution. Session caches are bounded to 32
142
+ sessions per Agent instance and are not persisted across process restarts.
143
+ The model can search descriptions, names, and MCP server metadata; matching
144
+ tools become callable with their full schemas on the next step. Search does
145
+ not execute them or grant additional permissions. Loaded tools remain visible
146
+ for the rest of the run, so ten is an initial budget, not an execution limit.
147
+
148
+ Auto mode includes a compact capability-family index instead of listing every
149
+ deferred tool name. Ranking runs locally without additional LLM calls.
150
+ Exact-name searches load only the named tool; names can use underscores,
151
+ camelCase or Unicode. Newly loaded schemas append after those already shown.
152
+ This works through `run()`, `stream()`, and the async runtime using ordinary
153
+ function schemas, including providers without native tool-search support.
154
+
155
+ Use `deferred_tools=False` to keep every schema visible, `True` for the existing
156
+ core-only policy, or a list of names to defer specific tools. Code mode retains
157
+ its own discovery policy. Measure total request tokens and task completion in
158
+ your workload: discovery adds an LLM step, so schema savings are not a promise
159
+ of equal total-token savings.
160
+
161
+ See [the discovery review and offline benchmark](docs/tool-discovery-review.md)
162
+ for measured payload reductions and remaining tradeoffs.
163
+
164
+ Ordinary `Agent` also supports opt-in `progressive_skills=True` for metadata-first
165
+ skill loading and `max_task_tokens=50_000` for a soft per-run token threshold.
166
+ See [progressive skills, budget limits and validation](docs/progressive-agent-controls.md)
167
+ for setup, isolation guarantees and provider-usage caveats.
168
+
169
+ ```python
170
+ from shipit_agent.deferral import DiscoveryPolicy
171
+
172
+ agent = Agent(
173
+ llm=llm, tools=tools, mcps=servers,
174
+ deferred_tools=DiscoveryPolicy(initial_tools=10, schema_tokens=4096, reuse_tools=3),
175
+ )
176
+ ```
177
+
178
+ Discovery itself remains visible even if its schema exceeds a very small
179
+ configured budget. Definitions loaded during a run are not evicted mid-run.
180
+ For large structured results, tools may return
181
+ `ToolOutput.from_records(rows, fields=["id", "evidence"], limit=20)`.
182
+ The model receives an explicit page and total count; callers retain the full
183
+ JSON. This is context reduction, not security redaction.
184
+
185
+ Run summaries distinguish `finished` from `incomplete` provider output, expose
186
+ finish reasons, failed-tool counts, and recovery counts. `finished` means the
187
+ runtime ended normally, not that an independent grader verified the answer.
188
+ Provider-reported usage counters remain unchanged; cache ratios and cost
189
+ estimates account for whether cached tokens are included in prompt tokens.
190
+
191
+ An opt-in, billed multi-turn evaluation is available in
192
+ `scripts/evaluate_agent_session.py`. It uses safe fixture tools and an
193
+ in-process MCP server, not production data or production MCP transport.
194
+
128
195
  ## What's new in v1.7.0 — the working set
129
196
 
130
197
  The biggest capability release yet: do the powerful thing without burning tokens or trust.
@@ -0,0 +1,309 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# OpenRouter deep test \u2014 `stealth/ox-alpha`\n",
8
+ "\n",
9
+ "End-to-end tests for the OpenRouter OpenAI-compatible endpoint: **text, streaming, vision, tool-calling (single + multi-arg), the shipit adapter, and a multi-agent example.**\n",
10
+ "\n",
11
+ "> Run cells top-to-bottom. The key is entered securely at runtime (never saved in the notebook).\n",
12
+ "> Model note: `stealth/ox-alpha` is a fast text/vision model but **does not accept video URLs** (returns 404). Images and tools work.\n"
13
+ ]
14
+ },
15
+ {
16
+ "cell_type": "markdown",
17
+ "metadata": {},
18
+ "source": [
19
+ "## 0 \u00b7 Setup\n"
20
+ ]
21
+ },
22
+ {
23
+ "cell_type": "code",
24
+ "metadata": {},
25
+ "execution_count": null,
26
+ "outputs": [],
27
+ "source": [
28
+ "# pip install openai (already present in most envs)\n",
29
+ "import os, json, time, getpass\n",
30
+ "from openai import OpenAI\n",
31
+ "\n",
32
+ "# Enter your OpenRouter key securely (not stored in the notebook).\n",
33
+ "API_KEY = os.getenv('OPENROUTER_API_KEY') or getpass.getpass('OpenRouter API key: ')\n",
34
+ "MODEL = 'stealth/ox-alpha'\n",
35
+ "\n",
36
+ "client = OpenAI(base_url='https://openrouter.ai/api/v1', api_key=API_KEY,\n",
37
+ " timeout=120, max_retries=1)\n",
38
+ "HEADERS = {'HTTP-Referer': 'https://aftrdrk.dev', 'X-Title': 'OpenRouter deep test'}\n",
39
+ "print('client ready \u00b7', MODEL)\n"
40
+ ]
41
+ },
42
+ {
43
+ "cell_type": "markdown",
44
+ "metadata": {},
45
+ "source": [
46
+ "## 1 \u00b7 Basic text + latency\n"
47
+ ]
48
+ },
49
+ {
50
+ "cell_type": "code",
51
+ "metadata": {},
52
+ "execution_count": null,
53
+ "outputs": [],
54
+ "source": [
55
+ "t0 = time.time()\n",
56
+ "r = client.chat.completions.create(\n",
57
+ " model=MODEL, extra_headers=HEADERS, max_tokens=60,\n",
58
+ " messages=[{'role':'user','content':'In one sentence, what is a ransomware double-extortion attack?'}])\n",
59
+ "print('latency: %.1fs' % (time.time()-t0))\n",
60
+ "print('content:', r.choices[0].message.content)\n",
61
+ "print('usage :', r.usage.model_dump())\n"
62
+ ]
63
+ },
64
+ {
65
+ "cell_type": "markdown",
66
+ "metadata": {},
67
+ "source": [
68
+ "## 2 \u00b7 Streaming (token-by-token)\n"
69
+ ]
70
+ },
71
+ {
72
+ "cell_type": "code",
73
+ "metadata": {},
74
+ "execution_count": null,
75
+ "outputs": [],
76
+ "source": [
77
+ "stream = client.chat.completions.create(\n",
78
+ " model=MODEL, extra_headers=HEADERS, max_tokens=120, stream=True,\n",
79
+ " messages=[{'role':'user','content':'List 3 detection tips for the Akira ransomware group, briefly.'}])\n",
80
+ "for chunk in stream:\n",
81
+ " d = chunk.choices[0].delta.content if chunk.choices else None\n",
82
+ " if d: print(d, end='')\n",
83
+ "print('\\n\\n[stream done]')\n"
84
+ ]
85
+ },
86
+ {
87
+ "cell_type": "markdown",
88
+ "metadata": {},
89
+ "source": [
90
+ "## 3 \u00b7 Vision (image)\n",
91
+ "`stealth/ox-alpha` can read images. It can be slow (30-90s) \u2014 be patient.\n"
92
+ ]
93
+ },
94
+ {
95
+ "cell_type": "code",
96
+ "metadata": {},
97
+ "execution_count": null,
98
+ "outputs": [],
99
+ "source": [
100
+ "t0 = time.time()\n",
101
+ "r = client.chat.completions.create(\n",
102
+ " model=MODEL, extra_headers=HEADERS, max_tokens=150,\n",
103
+ " messages=[{'role':'user','content':[\n",
104
+ " {'type':'text','text':'What is in this image? One sentence.'},\n",
105
+ " {'type':'image_url','image_url':{'url':'https://live.staticflickr.com/3851/14825276609_098cac593d_b.jpg'}},\n",
106
+ " ]}])\n",
107
+ "print('latency: %.1fs' % (time.time()-t0))\n",
108
+ "print(r.choices[0].message.content)\n"
109
+ ]
110
+ },
111
+ {
112
+ "cell_type": "markdown",
113
+ "metadata": {},
114
+ "source": [
115
+ "## 4 \u00b7 Tool calling \u2014 single tool\n",
116
+ "Native OpenAI function-calling. The model should return a structured `tool_call`.\n"
117
+ ]
118
+ },
119
+ {
120
+ "cell_type": "code",
121
+ "metadata": {},
122
+ "execution_count": null,
123
+ "outputs": [],
124
+ "source": [
125
+ "tools = [{'type':'function','function':{\n",
126
+ " 'name':'get_weather','description':'Current weather for a city',\n",
127
+ " 'parameters':{'type':'object','properties':{'city':{'type':'string'}},'required':['city']}}}]\n",
128
+ "r = client.chat.completions.create(\n",
129
+ " model=MODEL, extra_headers=HEADERS, tools=tools, tool_choice='auto', max_tokens=100,\n",
130
+ " messages=[{'role':'user','content':\"What's the weather in Berlin?\"}])\n",
131
+ "m = r.choices[0].message\n",
132
+ "print('tool_calls:', [(t.function.name, t.function.arguments) for t in (m.tool_calls or [])] or 'none')\n",
133
+ "print('text :', m.content)\n"
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "markdown",
138
+ "metadata": {},
139
+ "source": [
140
+ "## 5 \u00b7 Multi-argument tool (MCP-style)\n",
141
+ "The real agent test: can it fill several arguments in one structured call?\n"
142
+ ]
143
+ },
144
+ {
145
+ "cell_type": "code",
146
+ "metadata": {},
147
+ "execution_count": null,
148
+ "outputs": [],
149
+ "source": [
150
+ "tools = [{'type':'function','function':{\n",
151
+ " 'name':'query_records','description':'Query internal records with multiple filters',\n",
152
+ " 'parameters':{'type':'object','properties':{\n",
153
+ " 'domain':{'type':'string','description':'e.g. ransomlook'},\n",
154
+ " 'entity':{'type':'string','description':'e.g. groups'},\n",
155
+ " 'entity_id':{'type':'string','description':'e.g. akira'}},\n",
156
+ " 'required':['domain','entity','entity_id']}}}]\n",
157
+ "r = client.chat.completions.create(\n",
158
+ " model=MODEL, extra_headers=HEADERS, tools=tools, tool_choice='required', max_tokens=120,\n",
159
+ " messages=[{'role':'user','content':'Pull the RansomLook group profile for Akira.'}])\n",
160
+ "m = r.choices[0].message\n",
161
+ "for t in (m.tool_calls or []):\n",
162
+ " print(t.function.name, '->', json.loads(t.function.arguments))\n"
163
+ ]
164
+ },
165
+ {
166
+ "cell_type": "markdown",
167
+ "metadata": {},
168
+ "source": [
169
+ "## 6 \u00b7 Through the shipit adapter (`OpenAIChatLLM`)\n",
170
+ "Same call, but via shipit's OpenAI-compatible adapter \u2014 proving OpenRouter works inside the agent framework.\n",
171
+ "Requires `shipit_agent` importable (run in an env where it's installed).\n"
172
+ ]
173
+ },
174
+ {
175
+ "cell_type": "code",
176
+ "metadata": {},
177
+ "execution_count": null,
178
+ "outputs": [],
179
+ "source": [
180
+ "try:\n",
181
+ " from shipit_agent.llms.openai_adapter import OpenAIChatLLM\n",
182
+ " from shipit_agent.models import Message\n",
183
+ " llm = OpenAIChatLLM(model=MODEL, api_key=API_KEY,\n",
184
+ " base_url='https://openrouter.ai/api/v1',\n",
185
+ " default_headers=HEADERS)\n",
186
+ " resp = llm.complete(messages=[Message(role='user', content='Name one famous ransomware group in 2 words.')], tools=None)\n",
187
+ " print('content:', resp.content)\n",
188
+ " print('usage :', resp.usage) # cache_read_input_tokens surfaces here when warm\n",
189
+ "except ImportError as e:\n",
190
+ " print('shipit_agent not importable in this kernel \u2014 skip:', e)\n"
191
+ ]
192
+ },
193
+ {
194
+ "cell_type": "markdown",
195
+ "metadata": {},
196
+ "source": [
197
+ "## 7 \u00b7 Multi-agent example\n",
198
+ "A tiny two-agent pipeline on OpenRouter: **Researcher** proposes findings, **Critic** reviews them, **Editor** writes the final brief. Pure OpenAI-compatible calls \u2014 swap in real tools/MCP as needed.\n"
199
+ ]
200
+ },
201
+ {
202
+ "cell_type": "code",
203
+ "metadata": {},
204
+ "execution_count": null,
205
+ "outputs": [],
206
+ "source": [
207
+ "def ask(system, user, max_tokens=300):\n",
208
+ " r = client.chat.completions.create(\n",
209
+ " model=MODEL, extra_headers=HEADERS, max_tokens=max_tokens, temperature=0.3,\n",
210
+ " messages=[{'role':'system','content':system},{'role':'user','content':user}])\n",
211
+ " return r.choices[0].message.content or ''\n",
212
+ "\n",
213
+ "TOPIC = 'the Akira ransomware group and its threat to manufacturers'\n",
214
+ "\n",
215
+ "print('\u2500\u2500 RESEARCHER \u2500\u2500')\n",
216
+ "research = ask('You are a threat-intel researcher. Be concrete and factual.',\n",
217
+ " f'Give 5 key findings about {TOPIC}. Bullet points.')\n",
218
+ "print(research)\n",
219
+ "\n",
220
+ "print('\\n\u2500\u2500 CRITIC \u2500\u2500')\n",
221
+ "critique = ask('You are a skeptical reviewer. Flag anything unsupported or vague.',\n",
222
+ " f'Review these findings and note weaknesses:\\n{research}')\n",
223
+ "print(critique)\n",
224
+ "\n",
225
+ "print('\\n\u2500\u2500 EDITOR \u2500\u2500')\n",
226
+ "brief = ask('You are a senior analyst writing for a client board.',\n",
227
+ " f'Using the findings and the critique, write a tight 1-paragraph brief.\\n\\nFINDINGS:\\n{research}\\n\\nCRITIQUE:\\n{critique}')\n",
228
+ "print(brief)\n"
229
+ ]
230
+ },
231
+ {
232
+ "cell_type": "markdown",
233
+ "metadata": {},
234
+ "source": [
235
+ "## 8 \u00b7 Agentic tool loop (multi-turn, one agent + tools)\n",
236
+ "A minimal manual agent loop: the model calls a tool, we execute it, feed the result back, and it answers. This is the core of any MCP agent.\n"
237
+ ]
238
+ },
239
+ {
240
+ "cell_type": "code",
241
+ "metadata": {},
242
+ "execution_count": null,
243
+ "outputs": [],
244
+ "source": [
245
+ "def fake_lookup(domain, entity, entity_id):\n",
246
+ " # stand-in for a real MCP tool\n",
247
+ " return json.dumps({'domain':domain,'entity':entity,'id':entity_id,\n",
248
+ " 'first_seen':'2023-03','model':'RaaS','notable':'targets VMware ESXi'})\n",
249
+ "\n",
250
+ "tools = [{'type':'function','function':{'name':'query_records',\n",
251
+ " 'parameters':{'type':'object','properties':{'domain':{'type':'string'},\n",
252
+ " 'entity':{'type':'string'},'entity_id':{'type':'string'}},\n",
253
+ " 'required':['domain','entity','entity_id']},'description':'Query internal records'}}]\n",
254
+ "\n",
255
+ "msgs = [{'role':'user','content':'Look up the Akira group profile in ransomlook and summarize it.'}]\n",
256
+ "for step in range(4):\n",
257
+ " r = client.chat.completions.create(model=MODEL, extra_headers=HEADERS,\n",
258
+ " tools=tools, tool_choice='auto', max_tokens=300, messages=msgs)\n",
259
+ " m = r.choices[0].message\n",
260
+ " if m.tool_calls:\n",
261
+ " msgs.append({'role':'assistant','content':m.content or '','tool_calls':[t.model_dump() for t in m.tool_calls]})\n",
262
+ " for t in m.tool_calls:\n",
263
+ " args = json.loads(t.function.arguments)\n",
264
+ " result = fake_lookup(**args)\n",
265
+ " print(f'[tool] {t.function.name}({args}) -> {result[:60]}...')\n",
266
+ " msgs.append({'role':'tool','tool_call_id':t.id,'content':result})\n",
267
+ " else:\n",
268
+ " print('\\n[final answer]\\n' + (m.content or ''))\n",
269
+ " break\n"
270
+ ]
271
+ },
272
+ {
273
+ "cell_type": "markdown",
274
+ "metadata": {},
275
+ "source": [
276
+ "## 9 \u00b7 Latency / cache benchmark\n",
277
+ "Send the same large prefix 3x back-to-back and watch `cached_tokens` climb (implicit caching).\n"
278
+ ]
279
+ },
280
+ {
281
+ "cell_type": "code",
282
+ "metadata": {},
283
+ "execution_count": null,
284
+ "outputs": [],
285
+ "source": [
286
+ "PREFIX = 'Background: ' + ('Akira is a ransomware group. ' * 300)\n",
287
+ "for i in range(3):\n",
288
+ " t0 = time.time()\n",
289
+ " r = client.chat.completions.create(model=MODEL, extra_headers=HEADERS, max_tokens=8,\n",
290
+ " messages=[{'role':'user','content':PREFIX + f'\\n\\nSay the number {i}.'}])\n",
291
+ " u = r.usage.model_dump(); pd = u.get('prompt_tokens_details',{})\n",
292
+ " print(f'call {i}: {time.time()-t0:.1f}s \u00b7 prompt={u[\"prompt_tokens\"]} \u00b7 cached={pd.get(\"cached_tokens\")}')\n"
293
+ ]
294
+ }
295
+ ],
296
+ "metadata": {
297
+ "kernelspec": {
298
+ "display_name": "Python 3",
299
+ "language": "python",
300
+ "name": "python3"
301
+ },
302
+ "language_info": {
303
+ "name": "python",
304
+ "version": "3.11"
305
+ }
306
+ },
307
+ "nbformat": 4,
308
+ "nbformat_minor": 5
309
+ }
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "shipit-agent"
7
- version = "2.0.7"
7
+ version = "2.2.0"
8
8
  description = "A clean, powerful agent runtime with tools, MCP support, profiles, and streaming events."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -286,13 +286,17 @@ class Agent(AgentPreparationMixin, UpgradeMixin):
286
286
  code_mode: bool = False
287
287
 
288
288
  # ── deferred tool loading (v1.7) ──────────────────────────────────
289
- # Tool paging: core tools keep their full schema in
289
+ # Default "auto": above ten tools, keep nine core capabilities and a
290
+ # discovery tool. discovery_priority on a tool overrides core ranking;
291
+ # ties follow registration order. False opts out. Core tools keep schemas in
290
292
  # every request; everything else is listed by NAME only until
291
293
  # `tool_search` (or a direct call) loads it. Cuts the fixed per-step
292
294
  # schema cost to the working set. ``True`` defers everything outside
293
295
  # the core set; a list of names defers exactly those. Ignored when
294
296
  # ``code_mode`` is on (code mode collapses the catalogue its own way).
295
- deferred_tools: Any = False
297
+ deferred_tools: Any = "auto"
298
+ # Pass deferral.DiscoveryPolicy(...) for initial schema-token/count budgets
299
+ # and bounded session reuse. Auto uses 10 tools / ~4096 schema tokens.
296
300
 
297
301
  # ── lockdown (exfiltration guard) ─────────────────────────────────
298
302
  # Once a tool reports it returned sensitive data, the run may only make
@@ -338,6 +342,11 @@ class Agent(AgentPreparationMixin, UpgradeMixin):
338
342
  skills: list[SkillLike] = field(default_factory=list) # always-on skills
339
343
  default_skill_ids: list[str] = field(default_factory=list)
340
344
  skill_match_limit: int = 3 # max auto-matched
345
+ progressive_skills: bool = False # metadata-first, model-selected loading
346
+ max_task_tokens: int | None = None # soft per-run stop between model steps
347
+ # Soft stop across every run of this agent (or one chat session), checked
348
+ # between steps. Clones start fresh; reset with reset_session_usage().
349
+ max_session_tokens: int | None = None
341
350
 
342
351
  # ── rules (see shipit_agent/rules/) ───────────────────────────────
343
352
  # Durable behavioural policy (AGENTS.md house-style), scoped to paths/tools
@@ -408,13 +417,32 @@ class Agent(AgentPreparationMixin, UpgradeMixin):
408
417
  """Release provider/MCP resources without blocking an event loop."""
409
418
  await asyncio.to_thread(self.close)
410
419
 
420
+ @property
421
+ def session_token_usage(self) -> int:
422
+ """Tokens spent across every run of this agent's session so far."""
423
+ return int(self._session_runtime_state.get("session_tokens", 0))
424
+
425
+ def reset_session_usage(self) -> None:
426
+ """Start the session budget over — e.g. for a long-lived server agent
427
+ at the start of a new billing window."""
428
+ self._session_runtime_state.pop("session_tokens", None)
429
+ self._session_runtime_state.pop("session_usage_complete", None)
430
+
411
431
  def clone(self, **changes: Any) -> "Agent":
412
432
  """Copy this agent with selected configuration overrides.
413
433
 
414
434
  Mutable configuration containers are copied, while LLMs and durable
415
435
  stores are intentionally shared unless explicitly replaced.
416
436
  """
417
- from dataclasses import replace
437
+ from dataclasses import fields, replace
438
+
439
+ hooks = self.hooks
440
+ if hooks is not None:
441
+ hooks = replace(hooks, **{
442
+ item.name: list(getattr(hooks, item.name))
443
+ for item in fields(hooks)
444
+ if isinstance(getattr(hooks, item.name), list)
445
+ })
418
446
 
419
447
  defaults = {
420
448
  "tools": list(self.tools),
@@ -425,9 +453,16 @@ class Agent(AgentPreparationMixin, UpgradeMixin):
425
453
  "skills": list(self.skills),
426
454
  "default_skill_ids": list(self.default_skill_ids),
427
455
  "rules": list(self.rules),
456
+ "hooks": hooks,
457
+ # Contributions are already present in tools/hooks. Re-activation
458
+ # would duplicate tools and mutate callbacks on every chat turn.
459
+ "plugins": [],
428
460
  }
429
461
  defaults.update(changes)
430
- return replace(self, **defaults)
462
+ cloned = replace(self, **defaults)
463
+ if "plugins" not in changes:
464
+ cloned.plugins = list(self.plugins)
465
+ return cloned
431
466
 
432
467
  def as_tool(
433
468
  self,
@@ -472,6 +507,14 @@ class Agent(AgentPreparationMixin, UpgradeMixin):
472
507
  self.memory_store = InMemoryMemoryStore()
473
508
  if self.stream_queue_maxsize < 1:
474
509
  raise ValueError("stream_queue_maxsize must be positive")
510
+ if self.max_task_tokens is not None and (
511
+ type(self.max_task_tokens) is not int or self.max_task_tokens < 1
512
+ ):
513
+ raise ValueError("max_task_tokens must be a positive integer or None")
514
+ if self.max_session_tokens is not None and (
515
+ type(self.max_session_tokens) is not int or self.max_session_tokens < 1
516
+ ):
517
+ raise ValueError("max_session_tokens must be a positive integer or None")
475
518
  if self.stream_join_timeout < 0:
476
519
  raise ValueError("stream_join_timeout cannot be negative")
477
520
 
@@ -861,7 +904,7 @@ class Agent(AgentPreparationMixin, UpgradeMixin):
861
904
  "progress_summaries": self.progress_summaries,
862
905
  "reminder": self.reminder,
863
906
  "evict_prior_tool_outputs": self.evict_prior_tool_outputs,
864
- "prompt": self._effective_prompt(user_prompt),
907
+ "prompt": self._effective_prompt(user_prompt, selected_skills=selected_skills),
865
908
  "tools": effective_tools,
866
909
  "mcps": self.mcps,
867
910
  "required_tools": self.required_tools,
@@ -873,6 +916,8 @@ class Agent(AgentPreparationMixin, UpgradeMixin):
873
916
  "agent_name": self.name,
874
917
  "agent_description": self.description,
875
918
  **self.metadata,
919
+ "max_task_tokens": self.max_task_tokens,
920
+ "max_session_tokens": self.max_session_tokens,
876
921
  "used_skills": skill_ids,
877
922
  "used_skill_tools": skill_tool_names,
878
923
  "selected_skills": skill_details,
@@ -56,7 +56,7 @@ class AgentPreparationMixin:
56
56
  seen: set[str] = set()
57
57
  candidates = [*self.skills]
58
58
  candidates.extend(self._resolve_skill_ref(i) for i in self.default_skill_ids)
59
- if self.auto_use_skills and self.skill_registry is not None:
59
+ if self.auto_use_skills and not self.progressive_skills and self.skill_registry is not None:
60
60
  candidates.extend(
61
61
  find_relevant_skills(
62
62
  self.skill_registry,
@@ -70,15 +70,34 @@ class AgentPreparationMixin:
70
70
  seen.add(skill.id)
71
71
  return selected
72
72
 
73
- def _effective_prompt(self, user_prompt: str) -> str:
73
+ def _effective_prompt(
74
+ self, user_prompt: str, *, selected_skills: list[Skill] | None = None
75
+ ) -> str:
74
76
  effective = self.prompt
75
- for skill in self._selected_skills(user_prompt):
77
+ if selected_skills is None:
78
+ selected_skills = self._selected_skills(user_prompt)
79
+ for skill in selected_skills:
76
80
  holder = type("PromptHolder", (), {"prompt": effective})()
77
81
  apply_skill(holder, skill)
78
82
  effective = holder.prompt
83
+ catalog = self._progressive_skill_catalog(selected_skills)
84
+ if catalog:
85
+ effective += "\n\n# Available skills\nLoad relevant instructions with load_skill before applying them. " \
86
+ "Skills provide guidance, not permission to access new tools or data.\n"
87
+ effective += "\n".join(f"- {entry.id}: {entry.description}" for entry in catalog)
79
88
  rules = self._rules_block()
80
89
  return f"{effective}\n\n{rules}" if rules and rules not in effective else effective
81
90
 
91
+ def _progressive_skill_catalog(self, selected_skills):
92
+ if not self.progressive_skills or self.skill_registry is None:
93
+ return []
94
+ from shipit_agent.skills.catalog import build_catalog
95
+ return build_catalog(
96
+ (skill for skill in self.skill_registry.list()
97
+ if skill.is_visible and skill.is_admin_enabled and skill.is_user_enabled),
98
+ exclude=[skill.id for skill in selected_skills],
99
+ )
100
+
82
101
  def _rules_block(self) -> str:
83
102
  from shipit_agent.rules import RuleSet, collect_tool_rules
84
103
 
@@ -138,13 +157,29 @@ class AgentPreparationMixin:
138
157
  if self._auto_sub_agent is not None:
139
158
  effective["sub_agent"] = self._auto_sub_agent
140
159
 
141
- if selected_skills:
160
+ missing_skill_tools = [
161
+ name for name in tool_names_for_skills(selected_skills)
162
+ if name not in effective
163
+ ]
164
+ if missing_skill_tools:
142
165
  builtins = get_builtin_tool_map(
143
166
  llm=self.llm, project_root=str(self.project_root)
144
167
  )
145
- for name in tool_names_for_skills(selected_skills):
168
+ for name in missing_skill_tools:
146
169
  if name in builtins:
147
- effective[name] = builtins[name]
170
+ # Host-supplied tools may enforce tenant scoping or custom
171
+ # behavior. A skill adds missing capabilities, not overrides.
172
+ effective.setdefault(name, builtins[name])
173
+ catalog = self._progressive_skill_catalog(selected_skills)
174
+ if catalog:
175
+ from shipit_agent.skills.catalog import LoadSkillTool, SkillSession
176
+ if "load_skill" in effective:
177
+ raise ValueError("progressive_skills reserves the tool name 'load_skill'")
178
+ # Fresh state per run: never store mutable loading state on an
179
+ # Agent shared by several chats. Previous evidence stays in history;
180
+ # reloading remains possible after history eviction/compaction.
181
+ lookup = {entry.id: self.skill_registry.get(entry.id) for entry in catalog}
182
+ effective["load_skill"] = LoadSkillTool(lookup, SkillSession(), available_tools=[])
148
183
  tools = list(effective.values())
149
184
  if self.verifier is not None and hasattr(self.verifier, "wrap_tools"):
150
185
  tools = self.verifier.wrap_tools(tools)