symphony-code 0.0.2__tar.gz → 0.0.3__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.
- {symphony_code-0.0.2 → symphony_code-0.0.3}/PKG-INFO +2 -1
- {symphony_code-0.0.2 → symphony_code-0.0.3}/pyproject.toml +2 -1
- {symphony_code-0.0.2 → symphony_code-0.0.3}/pyproject.toml.orig +3 -1
- symphony_code-0.0.3/src/coding_agent/tls.py +25 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/updates.py +8 -3
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/web/bundle.py +6 -1
- {symphony_code-0.0.2 → symphony_code-0.0.3}/LICENSE +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/README.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/_lazy.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/approvals.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/compaction/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/compaction/addon.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/compaction/compactor.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/compaction/prompts.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/compaction/transcript.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/addon.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/evaluators.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/handlers.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/policy.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/protocol.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/state.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/langfuse/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/langfuse/addon.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/langfuse/install.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/langfuse/serialize.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/learning/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/learning/addon.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/learning/loop.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/learning/prompts.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/learning/sanitize.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/learning/store.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/manager/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/manager/bridge.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/manager/discovery.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/manager/report.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/manager/runtime.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/manager/tool_changes.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/active.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/artifacts.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/collection.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/compatibility.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/images.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/jsonl.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/presentation.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/plugins/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/plugins/install.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/plugins/manager.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/plugins/models.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/addon.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/args.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/addon-authoring/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/context-budget/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/orient-first/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/security-boundary/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/skill-discipline/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/surgical-edit/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/systematic-debug/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/bundled_skills/verify-before-done/SKILL.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/frontmatter.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/models.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/registry.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/skills/tool.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/voice/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/voice/addon.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/voice/credentials.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/voice/playback.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/voice/speak.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/voice/stream.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/voice/summary.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/agent.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/bench/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/bench/cli.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/bench/patch.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/cli.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/commands/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/commands/catalog.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/commands/jev_argument.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/config/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/config/config.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/config/credentials.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/config/personalities.json +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/config/personalities.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/config/prompts.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/acp/README.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/acp/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/acp/mapping.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/acp/server.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/acp/transport.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/stdio/README.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/stdio/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/stdio/catalog.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/stdio/commands.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/stdio/requests.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/stdio/server.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/protocols/stdio/transport.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/py.typed +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/resources/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/resources/usage.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/run/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/run/cli.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/run/detach.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/run/interrupted.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/run/log_sink.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/ask_user.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/base.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/bash.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/bash_jobs.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/generate_image.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/memory.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/patch.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/read_file.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/search.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/summary.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/web_search.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tools/write_file.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/EFFICIENCY_PLAN.md +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/__main__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/app.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/chrome/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/chrome/footer.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/chrome/topbar.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/commands/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/commands/catalog.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/commands/manager.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/composer/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/composer/input.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/composer/slash_menu.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/composer/surface.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/composer/voice.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/composer/voice_mode.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/runtime/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/runtime/events.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/runtime/sink.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/runtime/state.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/runtime/subagent.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/runtime/turn.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/ask.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/context.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/dashboard.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/diff.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/extensions.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/file_selector.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/history.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/langfuse.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/learning.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/modal.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/onboard.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/resume.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/screens/update.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/theme/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/theme/load.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/theme/style.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/theme/theme.toml +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/activity.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/calls.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/code_view.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/images.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/labels.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/modal.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/partial_args.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/tools/snapshots.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/transcript/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/transcript/messages.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/transcript/process.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/transcript/surface.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/transcript/thinking_markdown.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/web/__init__.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/web/server.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/web/sessions.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/web/worker.py +0 -0
- {symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/widget_fields.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: symphony-code
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3
|
|
4
4
|
Summary: Symphony coding agent: workspace tools, JSONL sessions, and a Textual TUI on top of symphony-harness (import as coding_agent; run as `symphony`)
|
|
5
5
|
Author: Sarthak Chauhan
|
|
6
6
|
Author-email: Sarthak Chauhan <sarthakchauhann@gmail.com>
|
|
@@ -10,6 +10,7 @@ Requires-Dist: symphony-core
|
|
|
10
10
|
Requires-Dist: symphony-harness
|
|
11
11
|
Requires-Dist: pillow>=12.3.0
|
|
12
12
|
Requires-Dist: pydantic>=2.0.0
|
|
13
|
+
Requires-Dist: certifi>=2024.2.2
|
|
13
14
|
Requires-Dist: pyyaml>=6.0.3
|
|
14
15
|
Requires-Dist: textual>=8.2.8
|
|
15
16
|
Requires-Dist: textual-image>=0.12.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "symphony-code"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.3"
|
|
4
4
|
description = "Symphony coding agent: workspace tools, JSONL sessions, and a Textual TUI on top of symphony-harness (import as coding_agent; run as `symphony`)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -11,6 +11,7 @@ dependencies = [
|
|
|
11
11
|
"symphony-harness",
|
|
12
12
|
"pillow>=12.3.0",
|
|
13
13
|
"pydantic>=2.0.0",
|
|
14
|
+
"certifi>=2024.2.2",
|
|
14
15
|
"pyyaml>=6.0.3",
|
|
15
16
|
"textual>=8.2.8",
|
|
16
17
|
"textual-image>=0.12.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "symphony-code"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.3"
|
|
4
4
|
description = "Symphony coding agent: workspace tools, JSONL sessions, and a Textual TUI on top of symphony-harness (import as coding_agent; run as `symphony`)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -14,6 +14,8 @@ dependencies = [
|
|
|
14
14
|
"symphony-harness",
|
|
15
15
|
"pillow>=12.3.0",
|
|
16
16
|
"pydantic>=2.0.0",
|
|
17
|
+
# coding_agent.tls: stdlib HTTPS on uv-managed Pythons without a CA store.
|
|
18
|
+
"certifi>=2024.2.2",
|
|
17
19
|
"pyyaml>=6.0.3",
|
|
18
20
|
"textual>=8.2.8",
|
|
19
21
|
"textual-image>=0.12.0",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""TLS for the standard-library HTTPS calls: the PyPI update check and the
|
|
2
|
+
Symphony Web bundle download.
|
|
3
|
+
|
|
4
|
+
uv-managed Pythons on macOS ship an OpenSSL whose default CA path does not
|
|
5
|
+
exist, so ``urllib`` cannot verify PyPI or GitHub there. The context keeps the
|
|
6
|
+
default trust (including ``SSL_CERT_FILE`` / ``SSL_CERT_DIR``) and adds
|
|
7
|
+
certifi's bundle, which httpx already uses for provider requests.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import ssl
|
|
13
|
+
from functools import cache
|
|
14
|
+
|
|
15
|
+
import certifi
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@cache
|
|
19
|
+
def https_context() -> ssl.SSLContext:
|
|
20
|
+
context = ssl.create_default_context()
|
|
21
|
+
context.load_verify_locations(cafile=certifi.where())
|
|
22
|
+
return context
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
__all__ = ["https_context"]
|
|
@@ -103,9 +103,14 @@ def latest_version(
|
|
|
103
103
|
) -> str | None:
|
|
104
104
|
"""Return the newest PyPI version, or None when PyPI cannot be reached."""
|
|
105
105
|
request = urllib.request.Request(PYPI_URL, headers={"Accept": "application/json"})
|
|
106
|
-
|
|
106
|
+
if opener is None:
|
|
107
|
+
from coding_agent.tls import https_context
|
|
108
|
+
|
|
109
|
+
def opener(request: urllib.request.Request, *, timeout: float) -> object:
|
|
110
|
+
return urllib.request.urlopen(request, timeout=timeout, context=https_context())
|
|
111
|
+
|
|
107
112
|
try:
|
|
108
|
-
with
|
|
113
|
+
with opener(request, timeout=timeout) as response:
|
|
109
114
|
payload = json.loads(response.read().decode("utf-8"))
|
|
110
115
|
except (OSError, urllib.error.URLError, TimeoutError, json.JSONDecodeError, UnicodeError, ValueError):
|
|
111
116
|
return None
|
|
@@ -189,7 +194,7 @@ def run_startup_update_check(*, unattended: bool = False) -> str:
|
|
|
189
194
|
config = ensure_spawn_settings(symphony_dir())
|
|
190
195
|
if unattended and not config.updates.auto:
|
|
191
196
|
return "continue"
|
|
192
|
-
return startup_update_check(config.updates.model_dump()).action
|
|
197
|
+
return startup_update_check({"updates": config.updates.model_dump()}).action
|
|
193
198
|
|
|
194
199
|
|
|
195
200
|
def startup_update_check(
|
|
@@ -37,6 +37,8 @@ import uuid
|
|
|
37
37
|
from collections.abc import Callable
|
|
38
38
|
from pathlib import Path, PurePosixPath
|
|
39
39
|
|
|
40
|
+
from coding_agent.tls import https_context
|
|
41
|
+
|
|
40
42
|
RELEASES = "https://github.com/Sarthakischauhan/symphony/releases/download"
|
|
41
43
|
TIMEOUT_SECONDS = 60.0
|
|
42
44
|
CURRENT = "current"
|
|
@@ -68,7 +70,10 @@ def asset_url(version: str, *, base: str | None = None) -> str:
|
|
|
68
70
|
def download(url: str, dest: Path) -> None:
|
|
69
71
|
"""Stream one URL to a file; any network error leaves only the partial temp file."""
|
|
70
72
|
try:
|
|
71
|
-
with
|
|
73
|
+
with (
|
|
74
|
+
urllib.request.urlopen(url, timeout=TIMEOUT_SECONDS, context=https_context()) as response,
|
|
75
|
+
dest.open("wb") as out,
|
|
76
|
+
):
|
|
72
77
|
shutil.copyfileobj(response, out)
|
|
73
78
|
except OSError as exc:
|
|
74
79
|
raise BundleError(f"download failed: {url}: {exc}") from exc
|
|
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
|
{symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/compaction/transcript.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/evaluation/evaluators.py
RENAMED
|
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
|
{symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/artifacts.py
RENAMED
|
File without changes
|
{symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/collection.py
RENAMED
|
File without changes
|
{symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/compatibility.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/addons/persistence/presentation.py
RENAMED
|
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
|
{symphony_code-0.0.2 → symphony_code-0.0.3}/src/coding_agent/tui/transcript/thinking_markdown.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|