tamfis-code 0.6.5__tar.gz → 0.6.7__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.
- {tamfis_code-0.6.5/tamfis_code.egg-info → tamfis_code-0.6.7}/PKG-INFO +1 -1
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/pyproject.toml +1 -1
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/__init__.py +1 -1
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/render.py +8 -1
- {tamfis_code-0.6.5 → tamfis_code-0.6.7/tamfis_code.egg-info}/PKG-INFO +1 -1
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_render.py +12 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/MANIFEST.in +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/README.md +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/USAGE_INSTALL_RELEASE.md +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/setup.cfg +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/__main__.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/agent_definitions.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/agents.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/api_client.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/cli.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/clipboard.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/completion.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/config.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/custom_commands.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/doctor.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/enforcer.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/evidence.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/hooks.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/indexer.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/instructions.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/interactive.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/live_input.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/local_chat.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/local_tools.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/mcp.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/mcp_stdio_server.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/metrics.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/model_registry.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/__init__.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/agent.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/agent_server.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/automation.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/compat.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/conversation.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/delegation.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/events.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/leases.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/security.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/skills.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/tools.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/openhands/workspace.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/orchestrator/__init__.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/orchestrator/context.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/orchestrator/engine.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/orchestrator/planner.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/orchestrator/protocols.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/orchestrator/validator.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/project.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/provider_protocols.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/providers.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/pty.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/references.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/routing.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/runner.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/runner_local.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/safety.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/screenshot.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/sessions.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/state.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/swarm.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/tasks.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/tool_policy.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code/workspace.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code.egg-info/SOURCES.txt +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code.egg-info/dependency_links.txt +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code.egg-info/entry_points.txt +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code.egg-info/requires.txt +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tamfis_code.egg-info/top_level.txt +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_agent_definitions.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_agents.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_agents_delegation.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_build_installation.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_cli_commands.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_clipboard.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_completion.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_context_rollover.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_custom_commands.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_cwd_validation.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_doctor_session_diagnostics.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_enforcer.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_fake_tool_detection.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_find_references.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_hooks.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_indexer.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_instructions.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_integration_new.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_interactive_standalone.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_live_input.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_local_pty.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_mcp.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_mcp_search_bounds.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_mcp_standalone_degradation.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_mcp_stdio_server.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_metrics.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_openhands_runtime.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_openrouter_cost_routing.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_orchestrator.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_plan_mode_gate.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_plan_steps_and_attempts.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_provider_protocols.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_reasoning_effort_capability.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_reasoning_plan.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_references.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_render_task_diagnostics.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_routing.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_runner_helpers.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_runner_local.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_safety.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_safety_manifest.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_sessions.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_swarm.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_api_client.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_approval.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_approval_flow.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_config.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_intent.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_repl_exit.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_tasks.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_tamfis_code_workspace.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_version_consistency.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_workspace_discovery_gaps.py +0 -0
- {tamfis_code-0.6.5 → tamfis_code-0.6.7}/tests/test_workspace_scope.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tamfis-code
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.7
|
|
4
4
|
Summary: TamfisGPT Code -- portable subscription-backed terminal coding agent with local tools, PTY, plans, queues, and approvals
|
|
5
5
|
Project-URL: Homepage, https://github.com/tamfitronics/tamfis-code
|
|
6
6
|
Project-URL: Repository, https://github.com/tamfitronics/tamfis-code
|
|
@@ -17,7 +17,7 @@ See docs/REMOTE_AGENT_MASTER_SPEC.md, Phase 21, for the original --remote
|
|
|
17
17
|
architecture's spec.
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
|
-
__version__ = "0.6.
|
|
20
|
+
__version__ = "0.6.7"
|
|
21
21
|
|
|
22
22
|
# Bumped whenever a CLI release requires a minimum backend Remote API
|
|
23
23
|
# contract version. Only meaningful for --remote; the standalone path has no
|
|
@@ -411,9 +411,16 @@ class StreamRenderer:
|
|
|
411
411
|
label = f"{mode_tag}[bold]{verb}…[/bold] [dim]({' · '.join(detail_parts)})[/dim]"
|
|
412
412
|
self._spinner.update(text=Text.from_markup(label))
|
|
413
413
|
tip = _current_tip(elapsed)
|
|
414
|
-
if not self._plan_steps and not tip:
|
|
414
|
+
if not self._plan_steps and not tip and self.live_input_listener is None:
|
|
415
415
|
return self._spinner
|
|
416
416
|
lines = []
|
|
417
|
+
if self.live_input_listener is not None:
|
|
418
|
+
# The ordinary REPL editor is suspended while the agent owns the
|
|
419
|
+
# terminal, but the input affordance must remain visible. Ctrl+T
|
|
420
|
+
# opens the coordinated editor without competing with Rich Live;
|
|
421
|
+
# this footer is rebuilt on every refresh and therefore never
|
|
422
|
+
# disappears behind the spinner or plan rows.
|
|
423
|
+
lines.append(" [cyan]Input:[/cyan] Ctrl+T queue next> · Ctrl+C/Ctrl+D exit")
|
|
417
424
|
if tip:
|
|
418
425
|
lines.append(f" [dim]{tip}[/dim]")
|
|
419
426
|
for step in self._plan_steps:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tamfis-code
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.7
|
|
4
4
|
Summary: TamfisGPT Code -- portable subscription-backed terminal coding agent with local tools, PTY, plans, queues, and approvals
|
|
5
5
|
Project-URL: Homepage, https://github.com/tamfitronics/tamfis-code
|
|
6
6
|
Project-URL: Repository, https://github.com/tamfitronics/tamfis-code
|
|
@@ -181,6 +181,18 @@ class StreamRendererTests(unittest.TestCase):
|
|
|
181
181
|
self.assertNotIn("Tip:", output)
|
|
182
182
|
renderer.finish()
|
|
183
183
|
|
|
184
|
+
def test_running_status_keeps_live_input_affordance_visible(self):
|
|
185
|
+
console = Console(file=StringIO(), no_color=True, width=200, force_terminal=True)
|
|
186
|
+
renderer = StreamRenderer(console)
|
|
187
|
+
try:
|
|
188
|
+
renderer.live_input_listener = object()
|
|
189
|
+
console.print(renderer._build_status())
|
|
190
|
+
output = console.file.getvalue()
|
|
191
|
+
self.assertIn("Ctrl+T queue next>", output)
|
|
192
|
+
self.assertIn("Ctrl+C/Ctrl+D exit", output)
|
|
193
|
+
finally:
|
|
194
|
+
renderer.finish()
|
|
195
|
+
|
|
184
196
|
def test_all_tips_reference_real_commands_only(self):
|
|
185
197
|
# Every tip must name a command that actually exists in cli.py's
|
|
186
198
|
# registered command set (or a real REPL slash command) -- this
|
|
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
|