orbi-cli 0.6.1__tar.gz → 0.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {orbi_cli-0.6.1/src/orbi_cli.egg-info → orbi_cli-0.6.2}/PKG-INFO +1 -1
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/pyproject.toml +1 -1
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/__init__.py +1 -1
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/pi_session.py +1 -1
- {orbi_cli-0.6.1 → orbi_cli-0.6.2/src/orbi_cli.egg-info}/PKG-INFO +1 -1
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pi_command.py +5 -4
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pi_extensions.py +22 -3
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/LICENSE +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/README.md +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/docs/licenses/sustainable-use-license.md +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/setup.cfg +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/branch_reclaim.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/checks.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/claim.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/clarify.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/cli.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/cli_source.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/config.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/delivery_labels.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/delivery_scene.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/engine_source.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/example_config.toml +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/failure.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/failure_report.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/git_identity.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/git_transport.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/github.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/gitops.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/human_review.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/journal.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/launchd_deploy.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/merge_gate.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/merge_handoff.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/milestone.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/milestone_command.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/pi_activity.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/pi_command.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/pi_process.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/pi_recovery.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/pilot_setup.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/pilot_slots.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/progress.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/release.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/release_git.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/release_notes.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/repo_config.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/runner.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/runner_health.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/scene.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/scheduler.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/scheduler_units.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/source_pool.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/systemd_deploy.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi/ticket_command.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi_cli.egg-info/SOURCES.txt +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi_cli.egg-info/dependency_links.txt +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi_cli.egg-info/entry_points.txt +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/src/orbi_cli.egg-info/top_level.txt +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_agents_md.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_apply_label_patch.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_bootstrap_runner.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_branch_reclaim.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_ci_failure_issue_workflow.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_ci_failure_triage.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_ci_macos_workflow.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_ci_workflow.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_clarify.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_claude_plugin.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_cli_install.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_cli_milestone.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_cli_packaging.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_cli_source.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_comment_readers_contract.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_concurrency_e2e.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_constitution.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_coverage_gate.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_deliver_pr_fakes.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_delivery_branch_delete.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_delivery_labels.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_delivery_scene.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docker_docs.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docker_entrypoint.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docker_image_workflow.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docs_i18n.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docs_issue_shapes.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docs_labels.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docs_mermaid.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docs_releases.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docs_single_source.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_docs_site.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_engine_source.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_failure.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_failure_report.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_fix_needed_loop.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_gh_read_retry.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_git_base_smoke.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_git_merge_smoke.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_git_network_retry.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_git_transport.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_github.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_github_fakes.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_gitops.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_gitops_fakes.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_human_review.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_import_graph.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_install_sh.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_issue_1367.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_issue_461.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_issue_template_config.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_journal.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_journal_events.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_launchd_deploy.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_license.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_milestone_command.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_ops_e2e.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_orbi.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_orbi_dashboard.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_orbi_exporter.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_patch_ratchet.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pi_activity.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pi_provider_templates.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pi_recovery.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pi_session.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pilot_setup.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pilot_slots.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_pr_issue_link_workflow.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_prerequisite_check.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_progress.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_progress_wiring.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_prompt_contract.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_publish_workflow.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_release_docs_workflow.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_release_ticket_templates.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_repo_config.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_resume_continue_e2e.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_resume_e2e.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_resume_pr.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_review_merge.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_run_artifacts.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_run_id_e2e.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_runner_config.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_runner_health.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_runner_source_freshness.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_scene.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_scheduler.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_size_ratchet.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_src_layout.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_steering_review.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_suite_hygiene.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_systemd_deploy.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_systemd_timer.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_ticket_command.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_user_acceptance_contract.py +0 -0
- {orbi_cli-0.6.1 → orbi_cli-0.6.2}/tests/test_worktree_reclaim.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orbi-cli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
4
4
|
Summary: Orbi — local AI development worker: claims GitHub Issues, runs Pi in isolated worktrees, and delivers PRs (GitHub Issues + labels are the only state store).
|
|
5
5
|
Author: xqliu
|
|
6
6
|
License-Expression: AGPL-3.0-only OR LicenseRef-Sustainable-Use-1.0
|
|
@@ -44,7 +44,7 @@ build-backend = "setuptools.build_meta"
|
|
|
44
44
|
|
|
45
45
|
[project]
|
|
46
46
|
name = "orbi-cli"
|
|
47
|
-
version = "0.6.
|
|
47
|
+
version = "0.6.2"
|
|
48
48
|
description = "Orbi — local AI development worker: claims GitHub Issues, runs Pi in isolated worktrees, and delivers PRs (GitHub Issues + labels are the only state store)."
|
|
49
49
|
readme = "README.md"
|
|
50
50
|
requires-python = ">=3.14"
|
|
@@ -857,7 +857,7 @@ def run_ticket_agent(
|
|
|
857
857
|
config, ROLE_TICKET, IMPLEMENT_EXCLUDED_SKILLS, session_dir,
|
|
858
858
|
system_prompt, context,
|
|
859
859
|
context_placeholder="<issue-context-redacted>",
|
|
860
|
-
tools=False, extensions=
|
|
860
|
+
tools=False, extensions=True,
|
|
861
861
|
)
|
|
862
862
|
# Startup phase: the provider config is loaded and resolved
|
|
863
863
|
# before the spawn; a configured provider file is materialized
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orbi-cli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
4
4
|
Summary: Orbi — local AI development worker: claims GitHub Issues, runs Pi in isolated worktrees, and delivers PRs (GitHub Issues + labels are the only state store).
|
|
5
5
|
Author: xqliu
|
|
6
6
|
License-Expression: AGPL-3.0-only OR LicenseRef-Sustainable-Use-1.0
|
|
@@ -63,17 +63,18 @@ def test_ticket_command_and_log_with_everything_configured():
|
|
|
63
63
|
pi_command.IMPLEMENT_EXCLUDED_SKILLS, SESSION_DIR,
|
|
64
64
|
SYSTEM_PROMPT, CONTEXT,
|
|
65
65
|
context_placeholder="<issue-context-redacted>",
|
|
66
|
-
tools=False, extensions=
|
|
66
|
+
tools=False, extensions=True,
|
|
67
67
|
)
|
|
68
68
|
assert command == [
|
|
69
|
-
"pi", "--no-tools", *IMPLEMENT_SKILL_ARGS,
|
|
69
|
+
"pi", "--no-tools", *EXTENSION_ARGS, *IMPLEMENT_SKILL_ARGS,
|
|
70
70
|
"--provider", "openai", "--model", "gpt-5.6-sol",
|
|
71
71
|
"--thinking", "medium",
|
|
72
72
|
"--print", "--session-dir", str(SESSION_DIR),
|
|
73
73
|
"--system-prompt", SYSTEM_PROMPT, CONTEXT,
|
|
74
74
|
]
|
|
75
75
|
assert log_command == [
|
|
76
|
-
"pi",
|
|
76
|
+
"pi", *EXTENSION_ARGS,
|
|
77
|
+
"--provider", "openai", "--model", "gpt-5.6-sol",
|
|
77
78
|
"--thinking", "medium",
|
|
78
79
|
"--print", "--session-dir", str(SESSION_DIR),
|
|
79
80
|
"--system-prompt", "<redacted>", "<issue-context-redacted>",
|
|
@@ -131,7 +132,7 @@ def test_review_command_and_log_with_everything_configured():
|
|
|
131
132
|
"placeholder", "expect_no_tools"),
|
|
132
133
|
[
|
|
133
134
|
(pi_command.ROLE_TICKET, pi_command.IMPLEMENT_EXCLUDED_SKILLS,
|
|
134
|
-
False,
|
|
135
|
+
False, True, "<issue-context-redacted>", True),
|
|
135
136
|
(ROLE_IMPLEMENT, pi_command.IMPLEMENT_EXCLUDED_SKILLS,
|
|
136
137
|
True, True, "<issue-context-redacted>", False),
|
|
137
138
|
(pi_command.ROLE_REVIEW, pi_command.REVIEW_EXCLUDED_SKILLS,
|
|
@@ -76,16 +76,35 @@ def test_pi_extension_args_and_env_isolate_disabled_and_secrets():
|
|
|
76
76
|
assert "secret" not in " ".join(args)
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
def
|
|
79
|
+
def test_run_pi_review_and_ticket_share_extension_contract(monkeypatch, tmp_path):
|
|
80
80
|
(tmp_path / "prompt.md").write_text("system", encoding="utf-8")
|
|
81
81
|
(tmp_path / "prompt_review.md").write_text("review", encoding="utf-8")
|
|
82
|
+
disabled = tmp_path / "disabled.mjs"
|
|
83
|
+
disabled.write_text("export default () => {}", encoding="utf-8")
|
|
82
84
|
calls = []
|
|
83
85
|
monkeypatch.setattr(pi_session, "stream_pi", lambda command, **kw: calls.append((command, kw)) or "ok")
|
|
84
|
-
config = config_domain.RunnerConfig(prompt=tmp_path / "prompt.md", prompt_review=tmp_path / "prompt_review.md", repo_dir=tmp_path, source_repos=("owner/repo",), workspace_root=tmp_path, context_files=(), skills=(), base_branch="main", base_sha="abc", run_id="deadbeef", pi_extensions=({"source": "npm:fixture@1.2.3", "enabled": True, "env": {"FIXTURE_TOKEN": "secret"}},))
|
|
86
|
+
config = config_domain.RunnerConfig(prompt=tmp_path / "prompt.md", prompt_review=tmp_path / "prompt_review.md", repo_dir=tmp_path, source_repos=("owner/repo",), workspace_root=tmp_path, context_files=(), skills=(), base_branch="main", base_sha="abc", run_id="deadbeef", pi_extensions=({"source": "npm:fixture@1.2.3", "enabled": True, "env": {"FIXTURE_TOKEN": "secret"}}, {"source": str(disabled), "enabled": False, "env": {}}))
|
|
87
|
+
extension_args = pi_command._pi_extension_args(config)
|
|
88
|
+
assert extension_args == ["--no-extensions", "--extension", "npm:fixture@1.2.3"]
|
|
85
89
|
pi_session.run_pi({"number": 1, "title": "t", "body": ""}, RunContext(run_id=config.run_id, issue={"number": 1, "title": "t", "body": ""}["number"], branch="b", worktree=tmp_path, source_repo="owner/repo"), config)
|
|
86
90
|
pi_session.run_review(RunContext(run_id=config.run_id, issue=1, branch="b", worktree=tmp_path, source_repo="owner/repo"), {"number": 1, "url": "u", "base_oid": "b", "head_oid": "h", "head_ref": "r"}, config, 1)
|
|
87
91
|
for command, kwargs in calls:
|
|
88
|
-
assert command[1:4] ==
|
|
92
|
+
assert command[1:4] == extension_args
|
|
89
93
|
assert kwargs["pi_env"] == {"FIXTURE_TOKEN": "secret"}
|
|
90
94
|
assert "secret" not in " ".join(kwargs["log_command"])
|
|
91
95
|
assert kwargs["log_command"][1:4] == command[1:4]
|
|
96
|
+
assert len(calls) == 2
|
|
97
|
+
# The ticket role (#1558) keeps the --no-tools boundary and passes the
|
|
98
|
+
# SAME isolated extension flags implement/review use.
|
|
99
|
+
pi_session.run_ticket_agent(
|
|
100
|
+
{"number": 1558, "title": "t", "body": ""}, config, "owner/repo",
|
|
101
|
+
)
|
|
102
|
+
command, kwargs = calls[2]
|
|
103
|
+
assert command[:2 + len(extension_args)] == [
|
|
104
|
+
"pi", "--no-tools", *extension_args,
|
|
105
|
+
]
|
|
106
|
+
assert kwargs["log_command"][:1 + len(extension_args)] == [
|
|
107
|
+
"pi", *extension_args,
|
|
108
|
+
]
|
|
109
|
+
assert kwargs["pi_env"] == {"FIXTURE_TOKEN": "secret"}
|
|
110
|
+
assert "secret" not in " ".join(kwargs["log_command"])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|