alysis-code 0.13.7__tar.gz → 0.14.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 (499) hide show
  1. {alysis_code-0.13.7 → alysis_code-0.14.0}/.gitignore +5 -0
  2. {alysis_code-0.13.7 → alysis_code-0.14.0}/PKG-INFO +16 -8
  3. {alysis_code-0.13.7 → alysis_code-0.14.0}/README.md +11 -5
  4. {alysis_code-0.13.7 → alysis_code-0.14.0}/docs/CHANGELOG.md +74 -1
  5. {alysis_code-0.13.7 → alysis_code-0.14.0}/pyproject.toml +5 -3
  6. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/__init__.py +1 -1
  7. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/_build_info.py +3 -1
  8. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/account_login.py +8 -6
  9. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/README.md +5 -0
  10. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/acceptance_contract.py +437 -46
  11. alysis_code-0.14.0/src/alysis_code/agent/anytime_checkpoint.py +506 -0
  12. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/blast_radius.py +495 -52
  13. alysis_code-0.14.0/src/alysis_code/agent/checkpoint_worker.py +180 -0
  14. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/completion_certificate.py +20 -1
  15. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/completion_gate.py +40 -0
  16. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/llm_calls.py +116 -43
  17. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/prompt_context.py +783 -281
  18. alysis_code-0.14.0/src/alysis_code/agent/prompt_families.py +169 -0
  19. alysis_code-0.14.0/src/alysis_code/agent/prompt_guidance.py +179 -0
  20. alysis_code-0.14.0/src/alysis_code/agent/read_ledger.py +449 -0
  21. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/regression_baseline.py +46 -7
  22. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/sensitive_output.py +19 -0
  23. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/session.py +628 -144
  24. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/steering.py +66 -0
  25. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/subagent_execution.py +1595 -266
  26. alysis_code-0.14.0/src/alysis_code/agent/subagent_workspace.py +1435 -0
  27. alysis_code-0.14.0/src/alysis_code/agent/task_evidence.py +215 -0
  28. alysis_code-0.14.0/src/alysis_code/agent/task_state.py +1263 -0
  29. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/tools_assembly.py +597 -165
  30. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn/__init__.py +5 -5
  31. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn/core.py +1914 -1001
  32. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn/exploration.py +80 -7
  33. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn/read_cache.py +97 -54
  34. alysis_code-0.14.0/src/alysis_code/agent/turn/subagent_progress.py +1132 -0
  35. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn_path.py +75 -0
  36. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/verification.py +1097 -192
  37. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/verification_commands.py +193 -41
  38. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/verification_evidence.py +58 -6
  39. alysis_code-0.14.0/src/alysis_code/agent/verification_result.py +58 -0
  40. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_loop.py +97 -17
  41. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_runtimes/codex_cli.py +4 -3
  42. alysis_code-0.14.0/src/alysis_code/agentbox_client.py +416 -0
  43. alysis_code-0.14.0/src/alysis_code/agentbox_integration.py +310 -0
  44. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/approval_scope.py +81 -0
  45. alysis_code-0.14.0/src/alysis_code/assets/local_tools.py +309 -0
  46. alysis_code-0.14.0/src/alysis_code/assets/owl/index.html +98 -0
  47. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/budget_policy.py +5 -0
  48. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/build_identity.py +121 -7
  49. alysis_code-0.14.0/src/alysis_code/cancellation.py +226 -0
  50. alysis_code-0.14.0/src/alysis_code/checkpoint_settings.py +22 -0
  51. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat/__init__.py +0 -12
  52. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat/commands.py +188 -221
  53. alysis_code-0.14.0/src/alysis_code/cli_impl/chat/forge_visibility.py +35 -0
  54. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat/loop.py +593 -691
  55. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat/mid_turn_policy.py +41 -9
  56. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat/rendering.py +5 -63
  57. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat/state.py +8 -9
  58. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat_resume.py +36 -1
  59. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/chat_slash_completer.py +23 -8
  60. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/chat_resume_helpers.py +231 -3
  61. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/chat_state.py +2 -9
  62. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/chat_status.py +48 -101
  63. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/chat_terminal.py +1 -30
  64. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/cli_common.py +9 -32
  65. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/forge.py +2 -1
  66. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/forge_helpers.py +0 -18
  67. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/prompt_helpers.py +37 -32
  68. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/root.py +15 -19
  69. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/startup.py +5 -19
  70. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/welcome.py +51 -54
  71. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/config_menu.py +124 -73
  72. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/forge.py +24 -6
  73. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/setup_wizard.py +17 -8
  74. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/app.py +1521 -313
  75. alysis_code-0.14.0/src/alysis_code/cli_impl/tui/attachments.py +557 -0
  76. alysis_code-0.14.0/src/alysis_code/cli_impl/tui/composer.py +335 -0
  77. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/config_flow.py +30 -18
  78. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/config_overlay.py +14 -7
  79. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/content.py +67 -1
  80. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/footer.py +11 -3
  81. alysis_code-0.14.0/src/alysis_code/cli_impl/tui/links.py +339 -0
  82. alysis_code-0.14.0/src/alysis_code/cli_impl/tui/markdown.py +396 -0
  83. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/owl.py +16 -1
  84. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/setup_flow.py +1 -1
  85. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/state.py +14 -19
  86. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/subagent_identity.py +1 -1
  87. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/surface.py +153 -30
  88. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/transcript.py +26 -0
  89. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/workspace_guard.py +121 -11
  90. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/compaction/conversation_compactor.py +304 -5
  91. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/compaction/tool_output_offload.py +29 -112
  92. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/config.py +320 -17
  93. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/conflict_auto_resolver.py +10 -2
  94. alysis_code-0.14.0/src/alysis_code/consumer_verification.py +626 -0
  95. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/durable_service_manager.py +607 -63
  96. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/execution_budget.py +3 -0
  97. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/execution_context.py +78 -115
  98. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/execution_deadline.py +59 -5
  99. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/execution_shared.py +113 -110
  100. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/feedback_report.py +262 -31
  101. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/git_evidence.py +198 -0
  102. alysis_code-0.14.0/src/alysis_code/git_safe.py +111 -0
  103. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/host_browser.py +30 -1
  104. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/integration_gate.py +10 -1
  105. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/internal_artifacts.py +43 -3
  106. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/anthropic_messages.py +62 -6
  107. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/cache_capabilities.py +12 -1
  108. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/cache_policy.py +9 -1
  109. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/factory.py +42 -7
  110. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/gemini_generate_content.py +43 -9
  111. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/gemini_interactions.py +9 -2
  112. alysis_code-0.14.0/src/alysis_code/llm/http_cancellation.py +509 -0
  113. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/metadata.py +27 -4
  114. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/openai_compat.py +386 -74
  115. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/openai_responses.py +58 -11
  116. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/protocols.py +1 -0
  117. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/provider_limits.py +88 -12
  118. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/request_plan.py +71 -1
  119. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/temperature_compat.py +9 -0
  120. alysis_code-0.14.0/src/alysis_code/llm/tool_call_markup.py +95 -0
  121. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/managed_host_deadline.py +89 -1
  122. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/transport_stdio.py +15 -0
  123. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_catalog/chatgpt_codex_subscription_snapshot.json +106 -23
  124. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_registry.py +296 -32
  125. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/personas.py +1 -1
  126. alysis_code-0.14.0/src/alysis_code/private_artifact_io.py +117 -0
  127. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/process_reaping.py +14 -3
  128. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/profile_presets.py +320 -249
  129. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/profiles.py +13 -0
  130. alysis_code-0.14.0/src/alysis_code/prompt_guidance_catalog.py +298 -0
  131. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_auth/base.py +5 -1
  132. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_auth/openai_codex.py +60 -15
  133. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_diagnostics.py +16 -0
  134. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_telemetry.py +185 -33
  135. alysis_code-0.14.0/src/alysis_code/provider_url.py +140 -0
  136. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/reasoning_contracts.py +87 -17
  137. alysis_code-0.14.0/src/alysis_code/run_outcome.py +201 -0
  138. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/run_provenance.py +18 -1
  139. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/sandbox_doctor.py +46 -10
  140. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/sandbox_runner.py +110 -2
  141. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/sandbox_settings.py +13 -0
  142. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/server/app.py +1 -0
  143. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/server/worker_runner.py +35 -0
  144. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/service_persistence.py +21 -1
  145. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/session_artifacts.py +80 -0
  146. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/session_metrics.py +7 -1
  147. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/session_store.py +468 -13
  148. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/README.md +2 -2
  149. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/__init__.py +0 -22
  150. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/eval_models.py +7 -3
  151. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/evals.py +14 -2
  152. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/prompting.py +3 -2
  153. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/step_budget.py +1 -1
  154. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/subagents.py +174 -55
  155. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/events.py +7 -7
  156. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/rich_surface.py +89 -58
  157. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/types.py +32 -0
  158. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/swarm_orchestrator.py +14 -2
  159. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/swarm_trace.py +10 -0
  160. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/swarm_worker.py +122 -37
  161. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/terminal_manager.py +16 -14
  162. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/artifacts.py +48 -12
  163. alysis_code-0.14.0/src/alysis_code/tools/availability.py +348 -0
  164. alysis_code-0.14.0/src/alysis_code/tools/capability_readiness.py +74 -0
  165. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/fs.py +216 -81
  166. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/git.py +117 -6
  167. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/registry.py +358 -102
  168. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/symbols.py +115 -21
  169. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/test_discovery.py +27 -27
  170. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/web.py +196 -35
  171. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/transport_retry.py +9 -6
  172. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/verification_command_analysis.py +49 -1
  173. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/verification_contract.py +7 -3
  174. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/verification_repair.py +8 -0
  175. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/verify_gate.py +90 -16
  176. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/web_research.py +76 -0
  177. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/workspace_isolation.py +5 -3
  178. alysis_code-0.13.7/src/alysis_code/agent/read_ledger.py +0 -253
  179. alysis_code-0.13.7/src/alysis_code/agent/subagent_workspace.py +0 -666
  180. alysis_code-0.13.7/src/alysis_code/cancellation.py +0 -53
  181. alysis_code-0.13.7/src/alysis_code/cli_impl/tui/markdown.py +0 -244
  182. alysis_code-0.13.7/src/alysis_code/git_safe.py +0 -62
  183. alysis_code-0.13.7/src/alysis_code/interactive_plan_mode.py +0 -26
  184. alysis_code-0.13.7/src/alysis_code/plan_mode.py +0 -393
  185. alysis_code-0.13.7/src/alysis_code/provider_url.py +0 -75
  186. alysis_code-0.13.7/src/alysis_code/run_outcome.py +0 -58
  187. alysis_code-0.13.7/src/alysis_code/skills/selection.py +0 -226
  188. alysis_code-0.13.7/src/alysis_code/tools/availability.py +0 -188
  189. {alysis_code-0.13.7 → alysis_code-0.14.0}/LICENSE +0 -0
  190. {alysis_code-0.13.7 → alysis_code-0.14.0}/NOTICE +0 -0
  191. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/__main__.py +0 -0
  192. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/__init__.py +0 -0
  193. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/cache_keepalive.py +0 -0
  194. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/empty_response_stall.py +0 -0
  195. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/errors.py +0 -0
  196. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/mutation_classification.py +0 -0
  197. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/reproduction_first.py +0 -0
  198. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn/events.py +0 -0
  199. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn/interventions.py +0 -0
  200. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn/snapshot.py +0 -0
  201. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent/turn_contract.py +0 -0
  202. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_runtimes/__init__.py +0 -0
  203. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_runtimes/base.py +0 -0
  204. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_runtimes/builtins.py +0 -0
  205. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_runtimes/host.py +0 -0
  206. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_runtimes/registry.py +0 -0
  207. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/agent_runtimes/service.py +0 -0
  208. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/alysis_cloud.py +0 -0
  209. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/README.md +0 -0
  210. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/__init__.py +0 -0
  211. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/asset_read_core.py +0 -0
  212. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/budget_allocator.py +0 -0
  213. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/comprehender.py +0 -0
  214. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/index.py +0 -0
  215. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/ingestion.py +0 -0
  216. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/legacy_migration.py +0 -0
  217. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/models.py +0 -0
  218. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/ocr.py +0 -0
  219. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-000.txt +0 -0
  220. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-001.txt +0 -0
  221. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-002.txt +0 -0
  222. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-003.txt +0 -0
  223. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-004.txt +0 -0
  224. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-005.txt +0 -0
  225. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-006.txt +0 -0
  226. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-007.txt +0 -0
  227. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-008.txt +0 -0
  228. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-009.txt +0 -0
  229. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-010.txt +0 -0
  230. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-011.txt +0 -0
  231. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-012.txt +0 -0
  232. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-013.txt +0 -0
  233. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-014.txt +0 -0
  234. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-015.txt +0 -0
  235. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-016.txt +0 -0
  236. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-017.txt +0 -0
  237. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-018.txt +0 -0
  238. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-019.txt +0 -0
  239. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/ascii/f-020.txt +0 -0
  240. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/owl/show-owl.sh +0 -0
  241. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/paths.py +0 -0
  242. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/plan_binding.py +0 -0
  243. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/planner_context.py +0 -0
  244. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/planner_tools.py +0 -0
  245. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/prompts.py +0 -0
  246. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/replanner_context.py +0 -0
  247. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/surface.py +0 -0
  248. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/untrusted_content.py +0 -0
  249. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/usage_logger.py +0 -0
  250. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/worker_mirror.py +0 -0
  251. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/worker_section.py +0 -0
  252. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/assets/worker_tools.py +0 -0
  253. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/atomic_io.py +0 -0
  254. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/auth_diagnostics.py +0 -0
  255. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/background_runner.py +0 -0
  256. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/branding.py +0 -0
  257. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/builtin_hooks/__init__.py +0 -0
  258. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/builtin_hooks/notify_done_windows.py +0 -0
  259. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/bwrap_etc.py +0 -0
  260. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/capabilities.py +0 -0
  261. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/chatgpt_codex_static_provider.py +0 -0
  262. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli.py +0 -0
  263. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/__init__.py +0 -0
  264. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/assets_cli.py +0 -0
  265. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/assets_modal.py +0 -0
  266. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/__init__.py +0 -0
  267. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/_shared.py +0 -0
  268. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/auth.py +0 -0
  269. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/chat_tui_panels.py +0 -0
  270. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/cli_surface.py +0 -0
  271. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/config.py +0 -0
  272. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/conventions.py +0 -0
  273. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/execution_helpers.py +0 -0
  274. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/extensions.py +0 -0
  275. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/forge_asset_view.py +0 -0
  276. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/hooks.py +0 -0
  277. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/ide_bridge.py +0 -0
  278. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/mcp.py +0 -0
  279. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/profile.py +0 -0
  280. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/report.py +0 -0
  281. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/sandbox.py +0 -0
  282. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/server.py +0 -0
  283. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/sessions.py +0 -0
  284. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/skills.py +0 -0
  285. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/tools.py +0 -0
  286. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/commands/update.py +0 -0
  287. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/forge_recovery.py +0 -0
  288. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/__init__.py +0 -0
  289. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/config.py +0 -0
  290. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/forge_status.py +0 -0
  291. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/plan_meta.py +0 -0
  292. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/selection_bindings.py +0 -0
  293. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/setup_app.py +0 -0
  294. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/subagent_panel.py +0 -0
  295. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/tips.py +0 -0
  296. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/cli_impl/tui/update_prompt.py +0 -0
  297. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/clipboard.py +0 -0
  298. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/code_review.py +0 -0
  299. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/compaction/__init__.py +0 -0
  300. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/compaction/importance.py +0 -0
  301. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/compaction/settings.py +0 -0
  302. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/context/__init__.py +0 -0
  303. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/context/tool_schema_budgeter.py +0 -0
  304. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/crash_diagnostics.py +0 -0
  305. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/custom_tools/README.md +0 -0
  306. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/custom_tools/__init__.py +0 -0
  307. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/custom_tools/discovery.py +0 -0
  308. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/custom_tools/runtime.py +0 -0
  309. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/custom_tools/session.py +0 -0
  310. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/custom_tools/trust.py +0 -0
  311. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/diff_paths.py +0 -0
  312. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/direction_change.py +0 -0
  313. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/dispatch_timing.py +0 -0
  314. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/edit_discipline.py +0 -0
  315. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/error_text.py +0 -0
  316. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/README.md +0 -0
  317. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/__init__.py +0 -0
  318. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/activation.py +0 -0
  319. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/install.py +0 -0
  320. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/manifest.py +0 -0
  321. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/models.py +0 -0
  322. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/paths.py +0 -0
  323. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/registry.json +0 -0
  324. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/registry.py +0 -0
  325. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/state.py +0 -0
  326. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/extensions/workspace_trust.py +0 -0
  327. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/failed_task_evidence.py +0 -0
  328. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/failure_category.py +0 -0
  329. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/file_classification.py +0 -0
  330. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/forge.py +0 -0
  331. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/forge_completion.py +0 -0
  332. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/forge_events.py +0 -0
  333. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/frontmatter_utils.py +0 -0
  334. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/git_ops.py +0 -0
  335. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/git_worktrees.py +0 -0
  336. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/hooks/README.md +0 -0
  337. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/hooks/__init__.py +0 -0
  338. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/hooks/audit.py +0 -0
  339. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/hooks/config.py +0 -0
  340. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/hooks/dispatcher.py +0 -0
  341. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/hooks/models.py +0 -0
  342. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/hooks/trust.py +0 -0
  343. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/host_actions.py +0 -0
  344. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/__init__.py +0 -0
  345. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/activity_events.py +0 -0
  346. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/approvals.py +0 -0
  347. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/artifacts.py +0 -0
  348. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/browser_egress_proxy.py +0 -0
  349. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/cdp_websocket_transport.py +0 -0
  350. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/change_ledger.py +0 -0
  351. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/context_blocks.py +0 -0
  352. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/event_stream.py +0 -0
  353. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/forge_protocol.py +0 -0
  354. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/forge_request_ledger.py +0 -0
  355. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/health.py +0 -0
  356. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/managed_browser.py +0 -0
  357. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/management_protocol.py +0 -0
  358. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/mcp_oauth_coordinator.py +0 -0
  359. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/mcp_oauth_lifecycle.py +0 -0
  360. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/prompt_queue.py +0 -0
  361. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/protocol.py +0 -0
  362. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/resumable_swarm.py +0 -0
  363. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/session_search.py +0 -0
  364. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/stdio_bridge.py +0 -0
  365. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/structured_state.py +0 -0
  366. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/ide/swarm_protocol.py +0 -0
  367. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/interactive_input_guard.py +0 -0
  368. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/knowledge_base.py +0 -0
  369. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/knowledge_capture.py +0 -0
  370. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/knowledge_librarian.py +0 -0
  371. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/language_policy.py +0 -0
  372. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/litellm_static_provider.py +0 -0
  373. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/__init__.py +0 -0
  374. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/base.py +0 -0
  375. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/cache_control_blocks.py +0 -0
  376. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/request_shape.py +0 -0
  377. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/streaming.py +0 -0
  378. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/types.py +0 -0
  379. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm/usage_normalization.py +0 -0
  380. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/llm_error_display.py +0 -0
  381. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/logging_redaction.py +0 -0
  382. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/README.md +0 -0
  383. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/__init__.py +0 -0
  384. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/client.py +0 -0
  385. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/config.py +0 -0
  386. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/errors.py +0 -0
  387. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/forge_scope.py +0 -0
  388. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/jsonrpc.py +0 -0
  389. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/manager.py +0 -0
  390. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/models.py +0 -0
  391. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/oauth.py +0 -0
  392. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/oauth_runtime.py +0 -0
  393. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/oauth_store.py +0 -0
  394. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/prompts.py +0 -0
  395. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/resources.py +0 -0
  396. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/roots.py +0 -0
  397. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/server_requests.py +0 -0
  398. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/token_store.py +0 -0
  399. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/transport_http.py +0 -0
  400. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/mcp/untrusted_content.py +0 -0
  401. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/merge_conflict_reviewer.py +0 -0
  402. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_catalog/__init__.py +0 -0
  403. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.json +0 -0
  404. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.meta.json +0 -0
  405. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_metadata_policy.py +0 -0
  406. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_metadata_utils.py +0 -0
  407. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/model_router.py +0 -0
  408. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/permission_policy.py +0 -0
  409. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/pipeline_facts.py +0 -0
  410. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/plan_assistant.py +0 -0
  411. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/plan_reconciliation.py +0 -0
  412. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/plan_repair.py +0 -0
  413. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/plan_validation.py +0 -0
  414. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/planning_constraints.py +0 -0
  415. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/policy.py +0 -0
  416. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/preview_server.py +0 -0
  417. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_auth/__init__.py +0 -0
  418. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_auth/registry.py +0 -0
  419. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_auth/store.py +0 -0
  420. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/provider_model_catalog.py +0 -0
  421. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/remote_sync.py +0 -0
  422. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/replanning.py +0 -0
  423. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/repo_scan.py +0 -0
  424. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/request_estimation.py +0 -0
  425. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/review_gate.py +0 -0
  426. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/run_lock.py +0 -0
  427. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/run_state.py +0 -0
  428. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/runtime_artifacts.py +0 -0
  429. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/runtime_context_features.py +0 -0
  430. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/runtime_kind.py +0 -0
  431. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/safety/__init__.py +0 -0
  432. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/safety/mcp_sanitize.py +0 -0
  433. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/safety/safe_http.py +0 -0
  434. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/safety/subagent_report.py +0 -0
  435. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/serialized_paths.py +0 -0
  436. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/server/__init__.py +0 -0
  437. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/server/auth.py +0 -0
  438. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/server/job_config.py +0 -0
  439. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/server/settings.py +0 -0
  440. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/server/store.py +0 -0
  441. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/address-pr-comments/SKILL.md +0 -0
  442. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/code-review/SKILL.md +0 -0
  443. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/commit/SKILL.md +0 -0
  444. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/debug/SKILL.md +0 -0
  445. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/fix-ci/SKILL.md +0 -0
  446. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/release-notes/SKILL.md +0 -0
  447. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/security-review/SKILL.md +0 -0
  448. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/bundled/skill-creator/SKILL.md +0 -0
  449. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/conventions.py +0 -0
  450. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/discovery.py +0 -0
  451. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/eval_runner.py +0 -0
  452. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/install.py +0 -0
  453. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/loader.py +0 -0
  454. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/matching.py +0 -0
  455. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/models.py +0 -0
  456. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/paths.py +0 -0
  457. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/scaffold.py +0 -0
  458. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/state.py +0 -0
  459. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/transactions.py +0 -0
  460. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/skills/validation.py +0 -0
  461. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/subagent_labels.py +0 -0
  462. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/__init__.py +0 -0
  463. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/base.py +0 -0
  464. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/console.py +0 -0
  465. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/hidden_surface.py +0 -0
  466. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/noop_surface.py +0 -0
  467. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/styles.py +0 -0
  468. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/surface/theme.py +0 -0
  469. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/swarm_backend.py +0 -0
  470. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/swarm_scheduler.py +0 -0
  471. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/swarm_write_guard.py +0 -0
  472. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/task_dependencies.py +0 -0
  473. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/task_readiness.py +0 -0
  474. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/task_scope.py +0 -0
  475. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/terminal_ownership.py +0 -0
  476. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/text_normalization.py +0 -0
  477. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/token_budget.py +0 -0
  478. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/README.md +0 -0
  479. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/__init__.py +0 -0
  480. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/history.py +0 -0
  481. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/http_timeout.py +0 -0
  482. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/image_generation.py +0 -0
  483. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/repo_map.py +0 -0
  484. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/search.py +0 -0
  485. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/shell.py +0 -0
  486. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/web_search.py +0 -0
  487. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/web_search_dashscope.py +0 -0
  488. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/web_search_ddgs.py +0 -0
  489. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/web_search_provider_adapters.py +0 -0
  490. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/tools/web_search_tavily.py +0 -0
  491. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/updates.py +0 -0
  492. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/usage_tracker.py +0 -0
  493. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/verification_failure_summary.py +0 -0
  494. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/web_search_adapters.py +0 -0
  495. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/web_search_policy.py +0 -0
  496. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/workspace_binding.py +0 -0
  497. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/workspace_binding_ui.py +0 -0
  498. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/workspace_context.py +0 -0
  499. {alysis_code-0.13.7 → alysis_code-0.14.0}/src/alysis_code/workspace_provisioning.py +0 -0
@@ -14,6 +14,7 @@ venv/
14
14
 
15
15
  # Tooling
16
16
  .dev/
17
+ .worktrees/
17
18
  .pytest_cache/
18
19
  .pytest-*/
19
20
  .ruff_cache/
@@ -45,6 +46,10 @@ extensions/*/out/
45
46
  extensions/*/*.vsix
46
47
 
47
48
  # Local review/context bundles
49
+ # Retired internal report directories, regardless of artifact format.
50
+ /docs/internal/
51
+ /docs/subagents/
52
+ /docs/tooling/
48
53
  *_context_review.zip
49
54
  owner-scoping.patch
50
55
  alysis_ecs.tar.gz
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alysis-code
3
- Version: 0.13.7
4
- Summary: Open-source coding agent for hosted and local models.
3
+ Version: 0.14.0
4
+ Summary: Local CLI coding agent powered by any API.
5
5
  Project-URL: Changelog, https://github.com/AlysisAi/alysis-code/blob/main/docs/CHANGELOG.md
6
6
  Project-URL: Documentation, https://github.com/AlysisAi/alysis-code/tree/main/docs
7
7
  Project-URL: Funding, https://github.com/sponsors/AlysisAi
@@ -25,17 +25,19 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
25
  Classifier: Topic :: Software Development
26
26
  Classifier: Topic :: Utilities
27
27
  Requires-Python: >=3.11
28
+ Requires-Dist: anyio>=4.14.2
28
29
  Requires-Dist: click>=8.0.0
29
30
  Requires-Dist: cryptography>=50.0.0
30
31
  Requires-Dist: ddgs>=9.0.0
31
- Requires-Dist: h2>=4.4.1
32
32
  Requires-Dist: httpcore<2.0.0,>=1.0.0
33
33
  Requires-Dist: httpx>=0.27.0
34
34
  Requires-Dist: keyring>=25.0.0
35
+ Requires-Dist: markdown-it-py<5.0.0,>=4.2.0
35
36
  Requires-Dist: packaging>=23.0
36
37
  Requires-Dist: pillow>=12.3.0
37
38
  Requires-Dist: platformdirs>=4.2.0
38
39
  Requires-Dist: prompt-toolkit>=3.0.43
40
+ Requires-Dist: psutil<8.0,>=7.2.2
39
41
  Requires-Dist: pydantic>=2.6.0
40
42
  Requires-Dist: pygments<3.0.0,>=2.17.0
41
43
  Requires-Dist: rich>=13.7.1
@@ -148,16 +150,18 @@ Shell and verification commands default to strict sandboxing. Verification can r
148
150
  sandbox only when explicitly configured with `verify_sandbox.mode="off"` or
149
151
  `ALYSIS_VERIFY_SANDBOX_MODE=off`.
150
152
 
151
- ## Modes & Personas
153
+ ## Permissions & Personas
152
154
 
153
155
  Two layers control what the agent may do — one enforces, one focuses.
154
156
 
155
- **Execution modes** are the enforcement layer. Choose one per command with `--mode`, switch in chat
156
- with `/mode`, or set a default with `alysis-code config set default_mode <mode>`:
157
+ **Permissions** are the enforcement layer. Choose one per command with `--mode`, select the next
158
+ message's level in chat with `/permissions` or **Shift+Tab**, or set a default with
159
+ `alysis-code config set default_mode <mode>`. A selection takes effect when the next user message
160
+ starts; it does not change a turn already running:
157
161
 
158
162
  | Mode | Behavior |
159
163
  | --- | --- |
160
- | `readonly` | Inspection only — no file writes, shell, MCP, or subagent delegation. |
164
+ | `readonly` | Inspection plus top-level read-only delegation — no file writes, shell, MCP, candidate apply/discard, or nested delegation. |
161
165
  | `review` | The safe default — previews and asks before every write and shell command. |
162
166
  | `auto` | Applies routine edits with fewer prompts; dangerous operations stay blocked. |
163
167
  | `fullaccess` | No mode-level prompts for trusted workspaces — the denylist and audit log stay active. |
@@ -176,6 +180,10 @@ A persona is a convention, never a permission: it can keep or lower your executi
176
180
  never raise it. Define your own in `.alysis_personas/*.md`.
177
181
  [Learn more](https://alysiscode.com/docs/concepts/personas)
178
182
 
183
+ Use `/persona architect` for planning in chat, or `/forge` for a plan-driven execution workflow.
184
+ The former chat `/plan` commands have been removed; Forge retains its plan views and editor.
185
+ Persona changes made during a running turn apply after that turn finishes.
186
+
179
187
  ## Project Links
180
188
 
181
189
  - [Website](https://alysiscode.com/)
@@ -209,4 +217,4 @@ More questions? See the [full FAQ](https://alysiscode.com/docs/faq).
209
217
 
210
218
  ---
211
219
 
212
- **Join the community** — [X](https://x.com/alysiscode) | [GitHub Issues](../../issues)
220
+ **Join the community** — [X](https://x.com/alysiscode) | [GitHub Issues](https://github.com/AlysisAi/alysis-code/issues)
@@ -89,16 +89,18 @@ Shell and verification commands default to strict sandboxing. Verification can r
89
89
  sandbox only when explicitly configured with `verify_sandbox.mode="off"` or
90
90
  `ALYSIS_VERIFY_SANDBOX_MODE=off`.
91
91
 
92
- ## Modes & Personas
92
+ ## Permissions & Personas
93
93
 
94
94
  Two layers control what the agent may do — one enforces, one focuses.
95
95
 
96
- **Execution modes** are the enforcement layer. Choose one per command with `--mode`, switch in chat
97
- with `/mode`, or set a default with `alysis-code config set default_mode <mode>`:
96
+ **Permissions** are the enforcement layer. Choose one per command with `--mode`, select the next
97
+ message's level in chat with `/permissions` or **Shift+Tab**, or set a default with
98
+ `alysis-code config set default_mode <mode>`. A selection takes effect when the next user message
99
+ starts; it does not change a turn already running:
98
100
 
99
101
  | Mode | Behavior |
100
102
  | --- | --- |
101
- | `readonly` | Inspection only — no file writes, shell, MCP, or subagent delegation. |
103
+ | `readonly` | Inspection plus top-level read-only delegation — no file writes, shell, MCP, candidate apply/discard, or nested delegation. |
102
104
  | `review` | The safe default — previews and asks before every write and shell command. |
103
105
  | `auto` | Applies routine edits with fewer prompts; dangerous operations stay blocked. |
104
106
  | `fullaccess` | No mode-level prompts for trusted workspaces — the denylist and audit log stay active. |
@@ -117,6 +119,10 @@ A persona is a convention, never a permission: it can keep or lower your executi
117
119
  never raise it. Define your own in `.alysis_personas/*.md`.
118
120
  [Learn more](https://alysiscode.com/docs/concepts/personas)
119
121
 
122
+ Use `/persona architect` for planning in chat, or `/forge` for a plan-driven execution workflow.
123
+ The former chat `/plan` commands have been removed; Forge retains its plan views and editor.
124
+ Persona changes made during a running turn apply after that turn finishes.
125
+
120
126
  ## Project Links
121
127
 
122
128
  - [Website](https://alysiscode.com/)
@@ -150,4 +156,4 @@ More questions? See the [full FAQ](https://alysiscode.com/docs/faq).
150
156
 
151
157
  ---
152
158
 
153
- **Join the community** — [X](https://x.com/alysiscode) | [GitHub Issues](../../issues)
159
+ **Join the community** — [X](https://x.com/alysiscode) | [GitHub Issues](https://github.com/AlysisAi/alysis-code/issues)
@@ -8,6 +8,77 @@ Notable user-facing changes to Alysis Code are recorded here. This project follo
8
8
 
9
9
  No user-facing changes yet.
10
10
 
11
+ ## [0.14.0] - 2026-09-24
12
+
13
+ ### Added
14
+
15
+ - Add GPT-6 Sol and GPT-6 Luna to the OpenAI API and ChatGPT subscription model
16
+ choices, with pricing, context limits, and reasoning settings. Subscription
17
+ availability follows the live account catalog.
18
+ - Add Claude Opus 5.5 to Anthropic and OpenRouter, Grok 4.7 to xAI and OpenRouter,
19
+ Mistral's hosted GLM 5.3, and current OpenRouter model routes.
20
+ - Show DeepSeek V4.1 Flash and GLM 5.3 Flash as hosted account model choices.
21
+ - Add `/objective` commands to inspect, replace, and amend the current task across
22
+ retries and resumed sessions.
23
+ - Allow a configurable set of public package registries for `web_fetch` while
24
+ retaining URL and network safety checks.
25
+
26
+ ### Changed
27
+
28
+ - Show clearer model names in setup and move the request timeout control to
29
+ Advanced settings.
30
+ - Improve subagent scheduling, task evidence, and verification reporting.
31
+
32
+ ### Fixed
33
+
34
+ - Suppress unexecuted tool-call markup in replies, retry once with structured
35
+ tool calls, and report a failure if the model repeats the malformed output.
36
+ - Require AnyIO 4.14.2 or newer in the HTTP runtime dependency set.
37
+ - Keep hosted account credentials on the selected gateway when an unsupported
38
+ model is chosen, and preserve retired Xiaomi selections without silently
39
+ redirecting them to a different provider's model.
40
+ - Omit unsupported temperature settings for GPT-6 reasoning requests and reject
41
+ attempts to disable reasoning for always-thinking OpenRouter models.
42
+ - Improve session recovery and deadline handling for long running work.
43
+ - Verify durable service listener ownership on macOS without requiring root access.
44
+
45
+ ## [0.13.8] - 2026-09-16
46
+
47
+ ### Changed
48
+
49
+ - Remove legacy chat Plan Mode, its draft/approve flow, and its prompts and toolbar
50
+ state. Use the Architect persona for planning in chat; Forge retains its plan views
51
+ and editor.
52
+ - Replace `/mode` with `/permissions`. Permission selections and Shift+Tab apply to
53
+ the next user message, with the pending choice visible beside the active permissions.
54
+ - Apply persona changes and approved persona-switch proposals only after the active
55
+ turn finishes. Preserve pending permission selections when resuming a conversation.
56
+ - Show pending steering messages and queued follow-ups. Shift+Left recalls the newest
57
+ queued message for editing. Interruptions preserve undelivered work and wait for the
58
+ current worker to finish before another turn starts.
59
+ - Read large Git diffs in complete pages with a content identifier that detects
60
+ changes between pages. The agent can select a path or inspect staged changes.
61
+ - Allow a background-process wait of up to 900 seconds, bounded by the remaining
62
+ run budget and returning early when its requested condition is met.
63
+ - Explain how to correct rejected verification commands, including how to use the
64
+ session's configured verification contract.
65
+
66
+ ### Fixed
67
+
68
+ - Keep plain assistant replies in conversation history so follow-up requests retain
69
+ the previous answer even when the provider returns no extra metadata.
70
+ - Redact credential fields inside nested JSON, tool arguments, feedback text, and
71
+ support bundles. Omit data that exceeds the safe redaction depth and non-UTF-8
72
+ diagnostic artifacts that cannot be sanitized reliably.
73
+ - Clean up incomplete support bundles after cancellation or I/O errors, support long
74
+ Windows export paths, and open report drafts without disrupting terminal output.
75
+ - Inspect Git changes without running configured diff programs, text converters,
76
+ filesystem monitors, or content filters. Worktree reads that require content
77
+ filters or submodule helpers return guidance for an approved shell command;
78
+ staged diffs and unaffected scoped paths remain available.
79
+ - Preserve hosted-account explanations for rolling usage limits, concurrent requests,
80
+ reserved credits, and temporary routing or capacity problems.
81
+
11
82
  ## [0.13.7] - 2026-09-11
12
83
 
13
84
  ### Added
@@ -271,7 +342,9 @@ Public launch and repository-layout refresh.
271
342
  Release notes for versions before 0.9.8 remain available in the
272
343
  [GitHub Releases archive](https://github.com/AlysisAi/alysis-code/releases).
273
344
 
274
- [Unreleased]: https://github.com/AlysisAi/alysis-code/compare/v0.13.7...HEAD
345
+ [Unreleased]: https://github.com/AlysisAi/alysis-code/compare/v0.14.0...HEAD
346
+ [0.14.0]: https://github.com/AlysisAi/alysis-code/compare/v0.13.8...v0.14.0
347
+ [0.13.8]: https://github.com/AlysisAi/alysis-code/compare/v0.13.7...v0.13.8
275
348
  [0.13.7]: https://github.com/AlysisAi/alysis-code/compare/v0.13.6.2...v0.13.7
276
349
  [0.13.6.2]: https://github.com/AlysisAi/alysis-code/compare/v0.13.6.1...v0.13.6.2
277
350
  [0.13.6.1]: https://github.com/AlysisAi/alysis-code/compare/v0.13.6...v0.13.6.1
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "alysis-code"
7
- version = "0.13.7"
8
- description = "Open-source coding agent for hosted and local models."
7
+ version = "0.14.0"
8
+ description = "Local CLI coding agent powered by any API."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  license = { text = "Apache-2.0" }
@@ -32,18 +32,20 @@ classifiers = [
32
32
  "Topic :: Utilities",
33
33
  ]
34
34
  dependencies = [
35
+ "anyio>=4.14.2",
35
36
  "click>=8.0.0",
36
37
  "cryptography>=50.0.0",
37
38
  "ddgs>=9.0.0",
38
- "h2>=4.4.1",
39
39
  "httpcore>=1.0.0,<2.0.0",
40
40
  "httpx>=0.27.0",
41
41
  "keyring>=25.0.0",
42
+ "markdown-it-py>=4.2.0,<5.0.0",
42
43
  "packaging>=23.0",
43
44
  "pillow>=12.3.0",
44
45
  "platformdirs>=4.2.0",
45
46
  "pydantic>=2.6.0",
46
47
  "prompt-toolkit>=3.0.43",
48
+ "psutil>=7.2.2,<8.0",
47
49
  "pygments>=2.17.0,<3.0.0",
48
50
  "rich>=13.7.1",
49
51
  "tiktoken>=0.7.0",
@@ -1,3 +1,3 @@
1
1
  __all__ = ["__version__"]
2
2
 
3
- __version__ = "0.13.7"
3
+ __version__ = "0.14.0"
@@ -8,7 +8,9 @@ stale commit hash.
8
8
  """
9
9
 
10
10
  BUILD_COMMIT = ""
11
+ BUILD_COMMIT_SUBJECT = ""
11
12
  BUILD_TIMESTAMP = ""
12
13
  BUILD_DIRTY = True
13
14
  BUILD_SOURCE = "dev-default"
14
- BUILD_INFO_SCHEMA_VERSION = 1
15
+ BUILD_RESOLVED_ORIGIN_MAIN = "unavailable"
16
+ BUILD_INFO_SCHEMA_VERSION = 2
@@ -37,7 +37,7 @@ from .config import (
37
37
  save_persisted_profile_key,
38
38
  )
39
39
  from .host_browser import open_url
40
- from .profile_presets import get_preset, make_profile_from_preset
40
+ from .profile_presets import canonical_model_alias_for_preset, get_preset, make_profile_from_preset
41
41
  from .profiles import ProfileSpec, add_profile, get_profile, set_active_profile
42
42
 
43
43
  # Matches the server-side device-code expiry (15 min) so we poll until the code
@@ -49,7 +49,7 @@ _DEFAULT_POLL_INTERVAL_S = 5.0
49
49
  # model picker, so an offline/slow gateway must not stall the menu for long.
50
50
  _MODELS_TIMEOUT_S = 6.0
51
51
 
52
- _FRESH_LOGIN_DEFAULT_MODEL = "deepseek-v4-flash"
52
+ _FRESH_LOGIN_DEFAULT_MODEL = "deepseek-flash"
53
53
 
54
54
 
55
55
  class AlysisLoginError(Exception):
@@ -441,11 +441,11 @@ def _format_token_usage(used: int | None, total: int | None) -> str | None:
441
441
  def _activate_alysis_profile(cfg: AppConfig, *, email: str | None) -> LoginResult:
442
442
  """Create + activate the `alysis` profile, keeping any model the user chose.
443
443
 
444
- Fresh logins default to the Pro flagship (``deepseek-v4-flash``) so
445
- subscribe → login → chat works with zero extra steps. Re-logins preserve
444
+ Fresh logins default to V4.1 Flash (``deepseek-flash``) so
445
+ connect → login → chat works with zero extra steps. Re-logins preserve
446
446
  whatever model the user selected since, so logging in again never undoes
447
- their choice. Legacy MiMo ids (the retired Xiaomi trial) are remapped to
448
- the current default via the preset's model_aliases at config load.
447
+ supported choices. Retired Flash/beta ids are remapped to the current
448
+ default via the preset's model_aliases, including on re-login.
449
449
  """
450
450
  preset = get_preset(cloud.PROFILE_KEY)
451
451
  if preset is not None:
@@ -456,6 +456,8 @@ def _activate_alysis_profile(cfg: AppConfig, *, email: str | None) -> LoginResul
456
456
  existing = get_profile(cfg, cloud.PROFILE_KEY)
457
457
  existing_model = str(getattr(existing, "default_model", "") or "").strip() if existing else ""
458
458
  chosen_model = existing_model or _FRESH_LOGIN_DEFAULT_MODEL
459
+ if preset is not None:
460
+ chosen_model = canonical_model_alias_for_preset(preset, chosen_model)
459
461
 
460
462
  # Always pin to the live gateway URL (env-overridable for tests); keep the
461
463
  # user's chosen model.
@@ -12,6 +12,11 @@ managed execution flows.
12
12
  - [turn_path.py](turn_path.py) defines execution posture and reply-language directives.
13
13
  - [prompt_context.py](prompt_context.py) prepares workspace, convention, skill, plugin, and
14
14
  verification context.
15
+ - [task_state.py](task_state.py) holds the host-owned task identity (`SessionTaskState`):
16
+ the accepted objective, its originating user event, and its transitions.
17
+ The pinned `<task_brief>` is a bounded rendering of it, installed before the
18
+ first model request of a turn; it is never inferred from edits, tool output,
19
+ or model text, and it grants no permission.
15
20
  - [verification.py](verification.py) and [verification_commands.py](verification_commands.py)
16
21
  support verification flows.
17
22