algo-cli-runtime 0.16.0__tar.gz → 0.18.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 (263) hide show
  1. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/CHANGELOG.md +43 -0
  2. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/PKG-INFO +28 -13
  3. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/README.md +27 -12
  4. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/__init__.py +1 -1
  5. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/action_registry.py +39 -23
  6. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/chatgpt_auth.py +133 -55
  7. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/chatgpt_client.py +83 -20
  8. algo_cli_runtime-0.18.0/algo_cli/cli_config.py +402 -0
  9. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/config.py +173 -22
  10. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/context_budget.py +3 -3
  11. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/credential_helpers.py +75 -11
  12. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/display.py +1 -1
  13. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/harness_retrieval_benchmark.py +199 -1
  14. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/google_workspace.py +1 -1
  15. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/google_workspace_auth.py +135 -38
  16. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/harness.py +272 -16
  17. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/main.py +162 -202
  18. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/model_info.py +3 -3
  19. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/runtime_services.py +39 -8
  20. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/session_commands.py +1 -1
  21. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/slash_dispatch.py +35 -12
  22. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/tool_runtime.py +2 -0
  23. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/tools.py +124 -35
  24. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/x_account.py +3 -3
  25. algo_cli_runtime-0.18.0/algo_cli/xai_auth.py +107 -0
  26. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/xai_client.py +30 -18
  27. algo_cli_runtime-0.18.0/docs/echo-veil-security-status.md +15 -0
  28. algo_cli_runtime-0.18.0/docs/external-agent-store-operations.md +17 -0
  29. algo_cli_runtime-0.18.0/docs/provider-auth-recovery.md +15 -0
  30. algo_cli_runtime-0.18.0/docs/runtime-capability-catalog.md +15 -0
  31. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/pyproject.toml +8 -0
  32. algo_cli_runtime-0.16.0/algo_cli/xai_auth.py +0 -374
  33. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/.gitignore +0 -0
  34. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/CONTRIBUTING.md +0 -0
  35. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/LICENSE +0 -0
  36. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/SECURITY.md +0 -0
  37. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo-cli.cmd +0 -0
  38. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo-cli.ps1 +0 -0
  39. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/__main__.py +0 -0
  40. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/_internal/__init__.py +0 -0
  41. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/_internal/policy_chain.py +0 -0
  42. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/agent_blocks.py +0 -0
  43. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/agent_pipeline.py +0 -0
  44. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/agent_threads.py +0 -0
  45. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/animations.py +0 -0
  46. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/cache_admission.py +0 -0
  47. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/capability_mask.py +0 -0
  48. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/chat_protocol.py +0 -0
  49. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/code_rag.py +0 -0
  50. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/context_supersession.py +0 -0
  51. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/deliberation.py +0 -0
  52. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/__init__.py +0 -0
  53. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/algorithm_effectiveness.py +0 -0
  54. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/competitive_harness_rating.py +0 -0
  55. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/cot_quality.py +0 -0
  56. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/performance_regression.py +0 -0
  57. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/scorecard_grading.py +0 -0
  58. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/session_distribution.py +0 -0
  59. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/evals/tool_context_efficiency.py +0 -0
  60. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/execution_guardrails.py +0 -0
  61. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/extensions_manifest.py +0 -0
  62. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/git_evidence.py +0 -0
  63. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/git_publish.py +0 -0
  64. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/identity.py +0 -0
  65. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/index_compute_lab.py +0 -0
  66. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/inference_harness.py +0 -0
  67. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/__init__.py +0 -0
  68. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/acrobat_config.py +0 -0
  69. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/acrobat_manifests.py +0 -0
  70. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/acrobat_models.py +0 -0
  71. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/acrobat_pipeline.py +0 -0
  72. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/acrobat_runtime.py +0 -0
  73. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/acrobat_security.py +0 -0
  74. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/acrobat_workflows.py +0 -0
  75. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/actionability.py +0 -0
  76. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/adversarial_audit.py +0 -0
  77. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/agent_arena.py +0 -0
  78. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/agent_benchmark.py +0 -0
  79. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/agent_runtime.py +0 -0
  80. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/agents_as_tools.py +0 -0
  81. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/artifact_binding.py +0 -0
  82. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/autonomous_engineer.py +0 -0
  83. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/backpressure.py +0 -0
  84. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/bloom_filter.py +0 -0
  85. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/bonferroni.py +0 -0
  86. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/boundary_compaction.py +0 -0
  87. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/catalog_verifier.py +0 -0
  88. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/cavecrew.py +0 -0
  89. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/changelog.py +0 -0
  90. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/checkpoint_resume.py +0 -0
  91. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/circuit_breaker.py +0 -0
  92. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/clarification_gate.py +0 -0
  93. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/code_graph.py +0 -0
  94. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/coderank.py +0 -0
  95. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/consistent_hash.py +0 -0
  96. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/consortium_synthesis.py +0 -0
  97. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/construction/__init__.py +0 -0
  98. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/construction/common.py +0 -0
  99. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/construction/documents.py +0 -0
  100. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/construction/labor_units.py +0 -0
  101. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/construction/payments.py +0 -0
  102. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/construction/risk.py +0 -0
  103. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/content_extractor.py +0 -0
  104. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/context_adaptive.py +0 -0
  105. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/context_ops.py +0 -0
  106. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/count_min.py +0 -0
  107. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/cow_state.py +0 -0
  108. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/critic_loop.py +0 -0
  109. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/cross_source.py +0 -0
  110. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/daemon_mode.py +0 -0
  111. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/dag_orchestration.py +0 -0
  112. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/deep_research.py +0 -0
  113. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/degenerate_detector.py +0 -0
  114. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/delta_report.py +0 -0
  115. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/discovery_event_log.py +0 -0
  116. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/document_ingest.py +0 -0
  117. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/dual_layer_validate.py +0 -0
  118. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/echo_fidelity.py +0 -0
  119. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/ema_tuning.py +0 -0
  120. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/event_log.py +0 -0
  121. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/evidence_graph.py +0 -0
  122. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/extension_host.py +0 -0
  123. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/extension_manifest.py +0 -0
  124. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/falsification_suite.py +0 -0
  125. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/__init__.py +0 -0
  126. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/anomalies.py +0 -0
  127. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/ap_ar.py +0 -0
  128. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/cash.py +0 -0
  129. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/close.py +0 -0
  130. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/common.py +0 -0
  131. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/construction.py +0 -0
  132. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/controls.py +0 -0
  133. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/evidence.py +0 -0
  134. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/exceptions.py +0 -0
  135. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/reconciliations.py +0 -0
  136. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/revenue.py +0 -0
  137. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/tax.py +0 -0
  138. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finance/workpapers.py +0 -0
  139. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/finding_record.py +0 -0
  140. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/flow_dag.py +0 -0
  141. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/gatherer.py +0 -0
  142. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/golden_master.py +0 -0
  143. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/graph_rag.py +0 -0
  144. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/group_chat.py +0 -0
  145. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/hash_dedup.py +0 -0
  146. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/hyperloglog.py +0 -0
  147. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/incremental_index.py +0 -0
  148. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/index_store.py +0 -0
  149. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/iteration_plan.py +0 -0
  150. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/kernel_plugins.py +0 -0
  151. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/lesson_catalog.py +0 -0
  152. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/llm_fallback.py +0 -0
  153. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/log2_histogram.py +0 -0
  154. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/lsp_integration.py +0 -0
  155. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/memory_evolution.py +0 -0
  156. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/minhash_lsh.py +0 -0
  157. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/multi_model_score.py +0 -0
  158. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/multi_tier_grade.py +0 -0
  159. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/negative_controls.py +0 -0
  160. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/numeric_clamp.py +0 -0
  161. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/occ_editor.py +0 -0
  162. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/output_normalize.py +0 -0
  163. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/parallel_delegation.py +0 -0
  164. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/parallel_fanout.py +0 -0
  165. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/permission_modes.py +0 -0
  166. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/pre_push_gate.py +0 -0
  167. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/prefetch.py +0 -0
  168. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/process_framework.py +0 -0
  169. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/project_graph.py +0 -0
  170. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/query_expansion.py +0 -0
  171. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/ralph_loop.py +0 -0
  172. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/rate_limiter.py +0 -0
  173. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/refactor_transaction.py +0 -0
  174. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/repo_map.py +0 -0
  175. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/research_workspace.py +0 -0
  176. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/retraction_ledger.py +0 -0
  177. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/saga_pattern.py +0 -0
  178. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/session_fork.py +0 -0
  179. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/shadow_editor.py +0 -0
  180. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/shell_session.py +0 -0
  181. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/source_registry.py +0 -0
  182. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/spawn_scales.py +0 -0
  183. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/stat_stability.py +0 -0
  184. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/structural_validator.py +0 -0
  185. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/subagent_spawner.py +0 -0
  186. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/symmetric_verify.py +0 -0
  187. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/task_classifier.py +0 -0
  188. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/team_execution.py +0 -0
  189. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/tiered_access.py +0 -0
  190. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intelligence/utility_registry.py +0 -0
  191. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intuition_engine.py +0 -0
  192. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/intuition_injector.py +0 -0
  193. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/kernels/__init__.py +0 -0
  194. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/kernels/manifest.py +0 -0
  195. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/memory_candidates.py +0 -0
  196. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/memory_echo_veil.py +0 -0
  197. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/memory_runtime.py +0 -0
  198. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/model_aliases.py +0 -0
  199. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/model_profile.py +0 -0
  200. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/model_routing.py +0 -0
  201. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/oneshot.py +0 -0
  202. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/perf_telemetry.py +0 -0
  203. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/plugins.py +0 -0
  204. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/private_event_store.py +0 -0
  205. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/program_runtime.py +0 -0
  206. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/quantization/__init__.py +0 -0
  207. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/quantization/lloyd_max.py +0 -0
  208. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/quantization/turbo_quant.py +0 -0
  209. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/__init__.py +0 -0
  210. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/combinatorial.py +0 -0
  211. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/graph_of_thought.py +0 -0
  212. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/mcts.py +0 -0
  213. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/neuro_symbolic.py +0 -0
  214. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/react.py +0 -0
  215. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/reflexion.py +0 -0
  216. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning/tree_of_thought.py +0 -0
  217. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reasoning_bridge.py +0 -0
  218. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reconciliation.py +0 -0
  219. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/reflex.py +0 -0
  220. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/retrieval_algorithms.py +0 -0
  221. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/runtime_qos.py +0 -0
  222. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/session_mode.py +0 -0
  223. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/skills.py +0 -0
  224. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/small_context.py +0 -0
  225. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/spawn_budget.py +0 -0
  226. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/task_ledger.py +0 -0
  227. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/task_router.py +0 -0
  228. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/tool_context.py +0 -0
  229. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/tool_contract.py +0 -0
  230. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/tool_policy.py +0 -0
  231. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/tool_schema.py +0 -0
  232. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/updater.py +0 -0
  233. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/url_scheme.py +0 -0
  234. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/verify.py +0 -0
  235. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/version_manifest.py +0 -0
  236. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/vision_screenshot_verify.py +0 -0
  237. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/workspace_resolver.py +0 -0
  238. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/algo_cli/worktree_runtime.py +0 -0
  239. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/ALGO.md +0 -0
  240. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/algo-cli-algorithm-evidence-contract.md +0 -0
  241. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/algo-cli-execution-verification-contract.md +0 -0
  242. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/algo-cli-memory-lifecycle-contract.md +0 -0
  243. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/harness-extension-cleanup-recommendation.md +0 -0
  244. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/index-compute-lab-integration.md +0 -0
  245. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/inference-harness-loop-blueprint-2026-06.md +0 -0
  246. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/main-split-map.md +0 -0
  247. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/privacy-and-context.md +0 -0
  248. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/reflex-loop-v0.2.md +0 -0
  249. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/docs/t3-code-parity-2026-07.md +0 -0
  250. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/harness-gateway/go.mod +0 -0
  251. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/harness-gateway/main.go +0 -0
  252. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/harness-indexer/Cargo.lock +0 -0
  253. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/harness-indexer/Cargo.toml +0 -0
  254. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/harness-indexer/src/main.rs +0 -0
  255. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/ollama_cli/__init__.py +0 -0
  256. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/README.md +0 -0
  257. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/algo-cli.md +0 -0
  258. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/edit-file-precision.md +0 -0
  259. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/harness-search-first.md +0 -0
  260. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/memory-recall-ritual.md +0 -0
  261. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/qol-algorithms.md +0 -0
  262. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/smart-error-recovery.md +0 -0
  263. {algo_cli_runtime-0.16.0 → algo_cli_runtime-0.18.0}/skills/tool-selection-cheatsheet.md +0 -0
@@ -4,6 +4,49 @@ All notable changes to Algo CLI are documented here. The format follows [Keep a
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.18.0] - 2026-07-17
8
+
9
+ ### Added
10
+
11
+ - ActionSpec tools, commands, providers, and kernels are materialized as retrievable `runtime_capability` records with policy, prerequisites, compatibility, and known limitations.
12
+ - The harness retrieval benchmark now includes frozen multilingual, code-switching, translated-alias, multi-hop, cross-source, and temporal-supersession workloads with recall@k, MRR, nDCG, citation precision, and a fixture digest.
13
+ - Harness status reports privacy-safe external-store adapter availability, indexed provenance, deterministic conflict policy, and malformed or unavailable extra-root diagnostics.
14
+ - Operations guides cover external stores, provider authentication recovery, runtime capability indexing, and the truthful Echo Veil activation contract.
15
+
16
+ ### Changed
17
+
18
+ - A 10/10 score now requires the versioned multilingual/complex retrieval-quality payload and its metric thresholds in addition to the existing stability and reusable-index performance evidence.
19
+ - Superseded knowledge remains explicitly searchable but is excluded from automatic context injection.
20
+
21
+ ### Fixed
22
+
23
+ - Invalidated ChatGPT/Codex OAuth sessions attempt one bounded refresh and otherwise clear unusable access state with actionable reauthentication guidance.
24
+ - Runtime readiness uses exact loopback host parsing and a short synchronized negative cache; timed-out web fetches release only semaphore permits owned by their request.
25
+ - Terminal configuration errors suggest the closest valid subcommand instead of falling through or failing ambiguously.
26
+
27
+ ## [0.17.0] - 2026-07-15
28
+
29
+ ### Added
30
+
31
+ - A terminal-first `algo-cli config` workflow provides redacted provider status, guided setup, authentication, verification, and cleanup without crowding the interactive slash-command palette.
32
+ - Google Workspace setup now guides Desktop-app OAuth configuration and launches the PKCE loopback login flow from the normal terminal.
33
+
34
+ ### Changed
35
+
36
+ - xAI model and X-search access now use the documented `XAI_API_KEY` route; legacy local xAI OAuth state is detected for migration but is no longer used by the runtime.
37
+ - ChatGPT/Codex, Google, and xAI setup guidance is consistent across startup diagnostics, provider routing, slash commands, README documentation, and the website install page.
38
+
39
+ ### Security
40
+
41
+ - OAuth token persistence and refresh are process-serialized to prevent concurrent refresh-token rotation races, and remote credential-bearing endpoint overrides require HTTPS.
42
+ - Shell timeouts terminate descendant process groups, timed-out web fetches have a bounded concurrency budget, and X-search cache metadata is normalized against multiline injection.
43
+ - Runtime state loading tolerates corrupt or unreadable JSON, rejects invalid environment keys safely, preserves private file modes, and avoids unbounded lock-file growth.
44
+
45
+ ### Fixed
46
+
47
+ - `algo-cli config setup google` now executes the requested setup instead of falling through into the interactive agent runtime.
48
+ - Invalid Google redirect-port settings fall back safely, cache-write failures no longer discard valid X-search results, and OAuth error redaction preserves useful HTTP status codes while removing credentials and callback codes.
49
+
7
50
  ## [0.16.0] - 2026-07-14
8
51
 
9
52
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: algo-cli-runtime
3
- Version: 0.16.0
3
+ Version: 0.18.0
4
4
  Summary: Agent runtime for tools, durable context, and verified work
5
5
  Project-URL: Homepage, https://algo-cli.com
6
6
  Project-URL: Documentation, https://algo-cli.com/docs
@@ -110,7 +110,8 @@ algo-cli --model qwen3:235b-cloud
110
110
  export OLLAMA_API_KEY="..."
111
111
  algo-cli --cloud --model qwen3
112
112
 
113
- # ChatGPT/Codex subscription (authenticate once with /chatgpt-login)
113
+ # ChatGPT/Codex subscription (authenticate once outside the chat REPL)
114
+ algo-cli config setup chatgpt
114
115
  algo-cli --model gpt-5.6-sol
115
116
  # Short aliases also work: sol, terra, luna
116
117
  algo-cli --model terra
@@ -125,19 +126,29 @@ Signed-in local Ollama can run `:cloud` models without `OLLAMA_API_KEY`. `OLLAMA
125
126
 
126
127
  `--oneshot --json` emits one JSON object per line to stdout (NDJSON), suitable for subprocess consumption. `--approval-mode never` (default) denies approval-required tools and emits a `tool_denied` event; pass `--approval-mode auto` to grant them. Skill crystallization is disabled in one-shot mode. Event types: `session_start`, `thinking`, `content`, `tool_call`, `tool_result`, `tool_denied`, `error`, `done`. The bridge can rely on `session_start` first and `done` last as framing.
127
128
 
128
- Runtime environment values can be stored in `~/.algo_cli/env` — the CLI loads them automatically. Point to a different file with `ALGO_CLI_ENV_FILE`. Legacy `~/.ollama_cli` locations are supported as migration aliases.
129
+ Runtime environment values can be stored in `~/.algo_cli/env` — the CLI loads them automatically. `algo-cli config` shows safe provider status, and `algo-cli config setup PROVIDER` writes only the selected setting with private file permissions. Point to a different file with `ALGO_CLI_ENV_FILE`. Legacy `~/.ollama_cli` locations are supported as migration aliases.
129
130
 
130
- ### Optional xAI OAuth setup
131
+ ### Provider setup
131
132
 
132
- xAI subscription OAuth is optional and is not configured out of the box. Algo CLI does not bundle or reuse a third-party OAuth client identity. To enable the provider, supply an OAuth client ID that you are authorized to use and configure it for the loopback redirect `http://127.0.0.1:56121/callback`:
133
+ Keep account setup outside the interactive slash palette:
133
134
 
134
135
  ```bash
135
- export XAI_CLIENT_ID=your-authorized-client-id
136
- algo-cli
137
- # then run /xai-login
136
+ # Safe, redacted readiness summary
137
+ algo-cli config status
138
+
139
+ # xAI API: prompts for XAI_API_KEY without echoing it
140
+ algo-cli config setup xai
141
+ algo-cli config auth xai verify
142
+
143
+ # Google Workspace: prompts for a Google Desktop-app OAuth client ID,
144
+ # then opens the PKCE loopback login flow
145
+ algo-cli config setup google
146
+
147
+ # ChatGPT/Codex browser or device OAuth
148
+ algo-cli config setup chatgpt
138
149
  ```
139
150
 
140
- For persistent configuration, place `XAI_CLIENT_ID=your-authorized-client-id` in `~/.algo_cli/env`, or use `ALGO_CLI_ENV_FILE` when you keep runtime settings elsewhere. `/xai-status` and `/doctor` report the provider as optional and unconfigured until `XAI_CLIENT_ID` is present. The client ID value is sent only in the standard OAuth authorization, code-exchange, and refresh requests; status output reports only whether it is configured. Algo CLI never falls back to the removed third-party identity or to `XAI_API_KEY`.
151
+ xAI's public API uses `XAI_API_KEY`; API calls can consume paid usage, so setup never makes a request until you explicitly verify or use a Grok model/tool. Google Workspace uses OAuth 2.0 + PKCE with a local loopback callback. Create a **Desktop app** OAuth client, enable only the Workspace APIs you intend to use, and keep its consent screen/test-user policy aligned with your account. The normal Google operations remain under `/google ...`; only credentials and login moved to `algo-cli config`.
141
152
 
142
153
  ### Privacy-safe context defaults
143
154
 
@@ -162,8 +173,10 @@ Common credential forms are redacted and connector/MCP JSON is metadata-only, bu
162
173
  | `/models` | List local models |
163
174
  | `/host URL` | Set local Ollama host |
164
175
  | `/cloud [on\|off\|status]` | Set/toggle direct Ollama Cloud API mode; local Ollama login can run `:cloud` models with `/cloud off` |
165
- | `/xai-login` / `/xai-status` | Manage optional xAI Grok OAuth; requires your `XAI_CLIENT_ID`, and API-key fallback is disabled |
166
- | `/chatgpt-login` / `/chatgpt-status` | Manage ChatGPT/Codex OAuth; `--device-code` uses Codex CLI token import |
176
+ | `/config [status\|setup PROVIDER\|auth PROVIDER ACTION]` | Focused provider setup from the REPL; prefer `algo-cli config ...` in a normal terminal |
177
+ | `algo-cli config setup xai` | Store a redacted xAI API key; API calls may consume paid usage |
178
+ | `algo-cli config setup google` | Configure Google Desktop-app OAuth and launch the PKCE login flow |
179
+ | `algo-cli config setup chatgpt` | Authenticate ChatGPT/Codex outside the normal slash palette |
167
180
  | `/x-account status` | Check separate X account OAuth status through `xurl` |
168
181
  | `/x-account draft-post` / `draft-reply` | Create browser drafts for X posts/replies without publishing |
169
182
  | `/auto [on\|off\|status]` | Set/toggle auto-approve for tool calls |
@@ -261,7 +274,7 @@ The model can call these tools during a conversation:
261
274
 
262
275
  **Web:** `web_search`, `web_fetch` (requires Ollama Cloud + API key)
263
276
 
264
- **X:** `x_search` uses optional xAI Grok OAuth for read/search and requires your `XAI_CLIENT_ID`. `x_account_status`, `x_account_draft_post`, `x_account_draft_reply`, `x_account_post`, `x_account_reply`, and `x_account_post_action` use the separate X API OAuth lane through `xurl`; write actions require explicit confirmation.
277
+ **X:** `x_search` uses optional xAI API-key access for read/search; configure it with `algo-cli config setup xai`. xAI API calls may consume paid usage. `x_account_status`, `x_account_draft_post`, `x_account_draft_reply`, `x_account_post`, `x_account_reply`, and `x_account_post_action` use the separate X API OAuth lane through `xurl`; write actions require explicit confirmation.
265
278
 
266
279
  `/x-account` requires the official X API CLI, `xurl`, to be installed and authenticated separately. The CLI only runs `xurl auth status` for status checks and never reads `~/.xurl` directly.
267
280
 
@@ -357,7 +370,9 @@ Config is stored in `~/.algo_cli/` by default (data from `~/.ollama_cli` is auto
357
370
  | `ALGO_CLI_HARNESS_INDEXER` | Optional Rust harness indexer binary |
358
371
  | `OPENAI_OAUTH_CLIENT_ID` | Optional override for the bundled ChatGPT/Codex browser OAuth client |
359
372
  | `OPENAI_CODEX_CLIENT_ID` | Optional override for the bundled Codex OAuth client |
360
- | `XAI_CLIENT_ID` | Your authorized OAuth client ID for optional xAI subscription login; Algo CLI does not bundle one |
373
+ | `XAI_API_KEY` | Optional xAI API key for Grok models and `x_search`; configure with `algo-cli config setup xai` |
374
+ | `GOOGLE_OAUTH_CLIENT_ID` | Google Desktop-app OAuth client ID for Workspace access; configure with `algo-cli config setup google` |
375
+ | `GOOGLE_OAUTH_CLIENT_SECRET` | Optional Google client secret for a client type that requires it; Desktop apps normally omit it |
361
376
  | `OLLAMA_HOST` | Local Ollama host |
362
377
  | `OLLAMA_API_KEY` | Direct Ollama Cloud API/web tools key; not required for signed-in local `:cloud` models |
363
378
 
@@ -52,7 +52,8 @@ algo-cli --model qwen3:235b-cloud
52
52
  export OLLAMA_API_KEY="..."
53
53
  algo-cli --cloud --model qwen3
54
54
 
55
- # ChatGPT/Codex subscription (authenticate once with /chatgpt-login)
55
+ # ChatGPT/Codex subscription (authenticate once outside the chat REPL)
56
+ algo-cli config setup chatgpt
56
57
  algo-cli --model gpt-5.6-sol
57
58
  # Short aliases also work: sol, terra, luna
58
59
  algo-cli --model terra
@@ -67,19 +68,29 @@ Signed-in local Ollama can run `:cloud` models without `OLLAMA_API_KEY`. `OLLAMA
67
68
 
68
69
  `--oneshot --json` emits one JSON object per line to stdout (NDJSON), suitable for subprocess consumption. `--approval-mode never` (default) denies approval-required tools and emits a `tool_denied` event; pass `--approval-mode auto` to grant them. Skill crystallization is disabled in one-shot mode. Event types: `session_start`, `thinking`, `content`, `tool_call`, `tool_result`, `tool_denied`, `error`, `done`. The bridge can rely on `session_start` first and `done` last as framing.
69
70
 
70
- Runtime environment values can be stored in `~/.algo_cli/env` — the CLI loads them automatically. Point to a different file with `ALGO_CLI_ENV_FILE`. Legacy `~/.ollama_cli` locations are supported as migration aliases.
71
+ Runtime environment values can be stored in `~/.algo_cli/env` — the CLI loads them automatically. `algo-cli config` shows safe provider status, and `algo-cli config setup PROVIDER` writes only the selected setting with private file permissions. Point to a different file with `ALGO_CLI_ENV_FILE`. Legacy `~/.ollama_cli` locations are supported as migration aliases.
71
72
 
72
- ### Optional xAI OAuth setup
73
+ ### Provider setup
73
74
 
74
- xAI subscription OAuth is optional and is not configured out of the box. Algo CLI does not bundle or reuse a third-party OAuth client identity. To enable the provider, supply an OAuth client ID that you are authorized to use and configure it for the loopback redirect `http://127.0.0.1:56121/callback`:
75
+ Keep account setup outside the interactive slash palette:
75
76
 
76
77
  ```bash
77
- export XAI_CLIENT_ID=your-authorized-client-id
78
- algo-cli
79
- # then run /xai-login
78
+ # Safe, redacted readiness summary
79
+ algo-cli config status
80
+
81
+ # xAI API: prompts for XAI_API_KEY without echoing it
82
+ algo-cli config setup xai
83
+ algo-cli config auth xai verify
84
+
85
+ # Google Workspace: prompts for a Google Desktop-app OAuth client ID,
86
+ # then opens the PKCE loopback login flow
87
+ algo-cli config setup google
88
+
89
+ # ChatGPT/Codex browser or device OAuth
90
+ algo-cli config setup chatgpt
80
91
  ```
81
92
 
82
- For persistent configuration, place `XAI_CLIENT_ID=your-authorized-client-id` in `~/.algo_cli/env`, or use `ALGO_CLI_ENV_FILE` when you keep runtime settings elsewhere. `/xai-status` and `/doctor` report the provider as optional and unconfigured until `XAI_CLIENT_ID` is present. The client ID value is sent only in the standard OAuth authorization, code-exchange, and refresh requests; status output reports only whether it is configured. Algo CLI never falls back to the removed third-party identity or to `XAI_API_KEY`.
93
+ xAI's public API uses `XAI_API_KEY`; API calls can consume paid usage, so setup never makes a request until you explicitly verify or use a Grok model/tool. Google Workspace uses OAuth 2.0 + PKCE with a local loopback callback. Create a **Desktop app** OAuth client, enable only the Workspace APIs you intend to use, and keep its consent screen/test-user policy aligned with your account. The normal Google operations remain under `/google ...`; only credentials and login moved to `algo-cli config`.
83
94
 
84
95
  ### Privacy-safe context defaults
85
96
 
@@ -104,8 +115,10 @@ Common credential forms are redacted and connector/MCP JSON is metadata-only, bu
104
115
  | `/models` | List local models |
105
116
  | `/host URL` | Set local Ollama host |
106
117
  | `/cloud [on\|off\|status]` | Set/toggle direct Ollama Cloud API mode; local Ollama login can run `:cloud` models with `/cloud off` |
107
- | `/xai-login` / `/xai-status` | Manage optional xAI Grok OAuth; requires your `XAI_CLIENT_ID`, and API-key fallback is disabled |
108
- | `/chatgpt-login` / `/chatgpt-status` | Manage ChatGPT/Codex OAuth; `--device-code` uses Codex CLI token import |
118
+ | `/config [status\|setup PROVIDER\|auth PROVIDER ACTION]` | Focused provider setup from the REPL; prefer `algo-cli config ...` in a normal terminal |
119
+ | `algo-cli config setup xai` | Store a redacted xAI API key; API calls may consume paid usage |
120
+ | `algo-cli config setup google` | Configure Google Desktop-app OAuth and launch the PKCE login flow |
121
+ | `algo-cli config setup chatgpt` | Authenticate ChatGPT/Codex outside the normal slash palette |
109
122
  | `/x-account status` | Check separate X account OAuth status through `xurl` |
110
123
  | `/x-account draft-post` / `draft-reply` | Create browser drafts for X posts/replies without publishing |
111
124
  | `/auto [on\|off\|status]` | Set/toggle auto-approve for tool calls |
@@ -203,7 +216,7 @@ The model can call these tools during a conversation:
203
216
 
204
217
  **Web:** `web_search`, `web_fetch` (requires Ollama Cloud + API key)
205
218
 
206
- **X:** `x_search` uses optional xAI Grok OAuth for read/search and requires your `XAI_CLIENT_ID`. `x_account_status`, `x_account_draft_post`, `x_account_draft_reply`, `x_account_post`, `x_account_reply`, and `x_account_post_action` use the separate X API OAuth lane through `xurl`; write actions require explicit confirmation.
219
+ **X:** `x_search` uses optional xAI API-key access for read/search; configure it with `algo-cli config setup xai`. xAI API calls may consume paid usage. `x_account_status`, `x_account_draft_post`, `x_account_draft_reply`, `x_account_post`, `x_account_reply`, and `x_account_post_action` use the separate X API OAuth lane through `xurl`; write actions require explicit confirmation.
207
220
 
208
221
  `/x-account` requires the official X API CLI, `xurl`, to be installed and authenticated separately. The CLI only runs `xurl auth status` for status checks and never reads `~/.xurl` directly.
209
222
 
@@ -299,7 +312,9 @@ Config is stored in `~/.algo_cli/` by default (data from `~/.ollama_cli` is auto
299
312
  | `ALGO_CLI_HARNESS_INDEXER` | Optional Rust harness indexer binary |
300
313
  | `OPENAI_OAUTH_CLIENT_ID` | Optional override for the bundled ChatGPT/Codex browser OAuth client |
301
314
  | `OPENAI_CODEX_CLIENT_ID` | Optional override for the bundled Codex OAuth client |
302
- | `XAI_CLIENT_ID` | Your authorized OAuth client ID for optional xAI subscription login; Algo CLI does not bundle one |
315
+ | `XAI_API_KEY` | Optional xAI API key for Grok models and `x_search`; configure with `algo-cli config setup xai` |
316
+ | `GOOGLE_OAUTH_CLIENT_ID` | Google Desktop-app OAuth client ID for Workspace access; configure with `algo-cli config setup google` |
317
+ | `GOOGLE_OAUTH_CLIENT_SECRET` | Optional Google client secret for a client type that requires it; Desktop apps normally omit it |
303
318
  | `OLLAMA_HOST` | Local Ollama host |
304
319
  | `OLLAMA_API_KEY` | Direct Ollama Cloud API/web tools key; not required for signed-in local `:cloud` models |
305
320
 
@@ -1,3 +1,3 @@
1
1
  """Algo CLI agent runtime."""
2
2
 
3
- __version__ = "0.16.0"
3
+ __version__ = "0.18.0"
@@ -516,7 +516,7 @@ ACTION_SPECS: tuple[ActionSpec, ...] = (
516
516
  "google_workspace.read", "provider", "Google Workspace access (read/write Drive/Docs/Sheets/Calendar plus Gmail read/draft creation) via OAuth.",
517
517
  "provider",
518
518
  ("google-workspace", "oauth", "read-write", "network"),
519
- "Provides Google Workspace access behind the /google-login OAuth flow; Gmail writes are limited to draft creation for user review.",
519
+ "Provides Google Workspace access behind the `algo-cli config setup google` OAuth flow; Gmail writes are limited to draft creation for user review.",
520
520
  "medium", False, False, True,
521
521
  requires_network=True,
522
522
  requires_provider="google-workspace",
@@ -530,19 +530,35 @@ ACTION_SPECS: tuple[ActionSpec, ...] = (
530
530
  "/google-login", "slash", "Authenticate with Google Workspace (OAuth2 + PKCE).",
531
531
  "provider",
532
532
  ("google-workspace", "oauth", "auth"),
533
- "Detects missing GOOGLE_OAUTH_CLIENT_ID before starting the loopback flow.", "medium", True, True, True,
533
+ "Compatibility route for existing sessions; new setup lives under `algo-cli config`.", "medium", True, True, True,
534
+ archived=True,
535
+ archived_reason="Provider setup moved out of the normal slash palette.",
536
+ replacement="Use `algo-cli config auth google login`.",
534
537
  ),
535
538
  _spec(
536
539
  "/google-logout", "slash", "Revoke Google Workspace tokens locally.",
537
540
  "provider",
538
541
  ("google-workspace", "auth", "logout"),
539
- "Clears local Google Workspace tokens and best-effort revokes at Google.", "medium", True, True, True,
542
+ "Compatibility route for existing sessions; new setup lives under `algo-cli config`.", "medium", True, True, True,
543
+ archived=True,
544
+ archived_reason="Provider setup moved out of the normal slash palette.",
545
+ replacement="Use `algo-cli config auth google logout`.",
540
546
  ),
541
547
  _spec(
542
548
  "/google-status", "slash", "Show Google Workspace auth state.",
543
549
  "provider",
544
550
  ("google-workspace", "auth", "status"),
545
- "Surfaces whether the user is authenticated and which scopes were granted.", "low", False, False, True,
551
+ "Compatibility route for existing sessions; new setup lives under `algo-cli config`.", "low", False, False, True,
552
+ archived=True,
553
+ archived_reason="Provider setup moved out of the normal slash palette.",
554
+ replacement="Use `algo-cli config auth google status`.",
555
+ ),
556
+ _spec(
557
+ "/config", "slash", "Configure or inspect connected providers outside the normal slash palette.",
558
+ "provider",
559
+ ("provider", "configuration", "credentials", "oauth"),
560
+ "`/config status` is read-only; setup and login paths can write local credential state or open a browser.",
561
+ "medium", True, True, False,
546
562
  ),
547
563
  _spec(
548
564
  "/google", "slash", "Run Google Workspace commands (Drive/Docs/Sheets/Calendar read/write plus Gmail read/drafts).",
@@ -981,39 +997,39 @@ def build_doctor_report(cfg: Any) -> DoctorReport:
981
997
  "Set ALGO_CLI_ENV_FILE or ~/.algo_cli/env with OLLAMA_API_KEY, then rerun /doctor.",
982
998
  ))
983
999
 
984
- # xAI subscription OAuth is an optional provider and deliberately ships
985
- # without a third-party OAuth client identity. Its absence must not make a
986
- # fresh local install look unhealthy.
1000
+ # xAI API access is optional. A missing key must not make a fresh local
1001
+ # install look unhealthy, but the readiness report must not claim that an
1002
+ # undocumented consumer OAuth lane is usable.
987
1003
  try:
988
1004
  from . import xai_auth
989
1005
 
990
1006
  xai_status = xai_auth.auth_status()
991
- if not xai_status.get("client_configured"):
1007
+ if not xai_status.get("api_key_configured"):
992
1008
  findings.append(DoctorFinding(
993
1009
  "ready",
994
- "xai-oauth",
995
- "optional xAI subscription OAuth is not configured (no bundled client id)",
996
- "Set XAI_CLIENT_ID in ~/.algo_cli/env only if you want to enable this provider.",
1010
+ "xai-api",
1011
+ "optional xAI API key is not configured",
1012
+ "Run `algo-cli config setup xai` only if you want to enable Grok API models or x_search.",
997
1013
  ))
998
- elif xai_status.get("authenticated"):
1014
+ else:
999
1015
  findings.append(DoctorFinding(
1000
1016
  "ready",
1001
- "xai-oauth",
1002
- f"optional xAI OAuth authenticated (expires in {int(xai_status.get('expires_in', 0))}s)",
1017
+ "xai-api",
1018
+ "optional xAI API key configured (value redacted)",
1003
1019
  ))
1004
- else:
1020
+ if xai_status.get("legacy_oauth_detected"):
1005
1021
  findings.append(DoctorFinding(
1006
- "ready",
1007
- "xai-oauth",
1008
- "optional xAI OAuth client configured; no active session",
1009
- "Run /xai-login if you want to use xAI models.",
1022
+ "degraded",
1023
+ "xai-legacy-oauth",
1024
+ "obsolete xAI OAuth state detected and ignored",
1025
+ "Remove it with `algo-cli config auth xai logout` or reconfigure with `algo-cli config setup xai`.",
1010
1026
  ))
1011
1027
  except Exception as exc: # pragma: no cover - best-effort diagnostic
1012
1028
  findings.append(DoctorFinding(
1013
1029
  "degraded",
1014
- "xai-oauth",
1030
+ "xai-api",
1015
1031
  f"xai_auth import failed: {exc}",
1016
- "Reinstall Algo CLI; the module is required for optional /xai-* commands.",
1032
+ "Reinstall Algo CLI; the module is required for optional xAI API commands.",
1017
1033
  ))
1018
1034
 
1019
1035
  from . import index_compute_lab
@@ -1069,7 +1085,7 @@ def build_doctor_report(cfg: Any) -> DoctorReport:
1069
1085
  findings.append(DoctorFinding(
1070
1086
  "degraded", "google-workspace",
1071
1087
  "GOOGLE_OAUTH_CLIENT_ID not set",
1072
- "Create an OAuth client at https://console.cloud.google.com and export the id before /google-login.",
1088
+ "Create a Desktop app OAuth client, then run `algo-cli config setup google` before logging in.",
1073
1089
  ))
1074
1090
  elif status.get("authenticated"):
1075
1091
  findings.append(DoctorFinding(
@@ -1080,7 +1096,7 @@ def build_doctor_report(cfg: Any) -> DoctorReport:
1080
1096
  findings.append(DoctorFinding(
1081
1097
  "degraded", "google-workspace",
1082
1098
  "Google OAuth client configured but no active session",
1083
- "Run /google-login to start the loopback flow.",
1099
+ "Run `algo-cli config auth google login` to start the loopback flow.",
1084
1100
  ))
1085
1101
  except Exception as exc: # pragma: no cover - best-effort diagnostic
1086
1102
  findings.append(DoctorFinding(