superqode 0.1.5__py3-none-any.whl
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.
- superqode/__init__.py +33 -0
- superqode/acp/__init__.py +23 -0
- superqode/acp/client.py +913 -0
- superqode/acp/permission_screen.py +457 -0
- superqode/acp/types.py +480 -0
- superqode/acp_discovery.py +856 -0
- superqode/agent/__init__.py +22 -0
- superqode/agent/edit_strategies.py +334 -0
- superqode/agent/loop.py +892 -0
- superqode/agent/qe_report_templates.py +39 -0
- superqode/agent/system_prompts.py +353 -0
- superqode/agent_output.py +721 -0
- superqode/agent_stream.py +953 -0
- superqode/agents/__init__.py +59 -0
- superqode/agents/acp_registry.py +305 -0
- superqode/agents/client.py +249 -0
- superqode/agents/data/augmentcode.com.toml +51 -0
- superqode/agents/data/cagent.dev.toml +51 -0
- superqode/agents/data/claude.com.toml +60 -0
- superqode/agents/data/codeassistant.dev.toml +51 -0
- superqode/agents/data/codex.openai.com.toml +57 -0
- superqode/agents/data/fastagent.ai.toml +66 -0
- superqode/agents/data/geminicli.com.toml +77 -0
- superqode/agents/data/goose.block.xyz.toml +54 -0
- superqode/agents/data/junie.jetbrains.com.toml +56 -0
- superqode/agents/data/kimi.moonshot.cn.toml +57 -0
- superqode/agents/data/llmlingagent.dev.toml +51 -0
- superqode/agents/data/molt.bot.toml +49 -0
- superqode/agents/data/opencode.ai.toml +60 -0
- superqode/agents/data/stakpak.dev.toml +51 -0
- superqode/agents/data/vtcode.dev.toml +51 -0
- superqode/agents/discovery.py +266 -0
- superqode/agents/messaging.py +160 -0
- superqode/agents/persona.py +166 -0
- superqode/agents/registry.py +421 -0
- superqode/agents/schema.py +72 -0
- superqode/agents/unified.py +367 -0
- superqode/app/__init__.py +111 -0
- superqode/app/constants.py +314 -0
- superqode/app/css.py +366 -0
- superqode/app/models.py +118 -0
- superqode/app/suggester.py +125 -0
- superqode/app/widgets.py +1591 -0
- superqode/app_enhanced.py +399 -0
- superqode/app_main.py +17187 -0
- superqode/approval.py +312 -0
- superqode/atomic.py +296 -0
- superqode/commands/__init__.py +1 -0
- superqode/commands/acp.py +965 -0
- superqode/commands/agents.py +180 -0
- superqode/commands/auth.py +278 -0
- superqode/commands/config.py +374 -0
- superqode/commands/init.py +826 -0
- superqode/commands/providers.py +819 -0
- superqode/commands/qe.py +1145 -0
- superqode/commands/roles.py +380 -0
- superqode/commands/serve.py +172 -0
- superqode/commands/suggestions.py +127 -0
- superqode/commands/superqe.py +460 -0
- superqode/config/__init__.py +51 -0
- superqode/config/loader.py +812 -0
- superqode/config/schema.py +498 -0
- superqode/core/__init__.py +111 -0
- superqode/core/roles.py +281 -0
- superqode/danger.py +386 -0
- superqode/data/superqode-template.yaml +1522 -0
- superqode/design_system.py +1080 -0
- superqode/dialogs/__init__.py +6 -0
- superqode/dialogs/base.py +39 -0
- superqode/dialogs/model.py +130 -0
- superqode/dialogs/provider.py +870 -0
- superqode/diff_view.py +919 -0
- superqode/enterprise.py +21 -0
- superqode/evaluation/__init__.py +25 -0
- superqode/evaluation/adapters.py +93 -0
- superqode/evaluation/behaviors.py +89 -0
- superqode/evaluation/engine.py +209 -0
- superqode/evaluation/scenarios.py +96 -0
- superqode/execution/__init__.py +36 -0
- superqode/execution/linter.py +538 -0
- superqode/execution/modes.py +347 -0
- superqode/execution/resolver.py +283 -0
- superqode/execution/runner.py +642 -0
- superqode/file_explorer.py +811 -0
- superqode/file_viewer.py +471 -0
- superqode/flash.py +183 -0
- superqode/guidance/__init__.py +58 -0
- superqode/guidance/config.py +203 -0
- superqode/guidance/prompts.py +71 -0
- superqode/harness/__init__.py +54 -0
- superqode/harness/accelerator.py +291 -0
- superqode/harness/config.py +319 -0
- superqode/harness/validator.py +147 -0
- superqode/history.py +279 -0
- superqode/integrations/superopt_runner.py +124 -0
- superqode/logging/__init__.py +49 -0
- superqode/logging/adapters.py +219 -0
- superqode/logging/formatter.py +923 -0
- superqode/logging/integration.py +341 -0
- superqode/logging/sinks.py +170 -0
- superqode/logging/unified_log.py +417 -0
- superqode/lsp/__init__.py +26 -0
- superqode/lsp/client.py +544 -0
- superqode/main.py +1069 -0
- superqode/mcp/__init__.py +89 -0
- superqode/mcp/auth_storage.py +380 -0
- superqode/mcp/client.py +1236 -0
- superqode/mcp/config.py +319 -0
- superqode/mcp/integration.py +337 -0
- superqode/mcp/oauth.py +436 -0
- superqode/mcp/oauth_callback.py +385 -0
- superqode/mcp/types.py +290 -0
- superqode/memory/__init__.py +31 -0
- superqode/memory/feedback.py +342 -0
- superqode/memory/store.py +522 -0
- superqode/notifications.py +369 -0
- superqode/optimization/__init__.py +5 -0
- superqode/optimization/config.py +33 -0
- superqode/permissions/__init__.py +25 -0
- superqode/permissions/rules.py +488 -0
- superqode/plan.py +323 -0
- superqode/providers/__init__.py +33 -0
- superqode/providers/gateway/__init__.py +165 -0
- superqode/providers/gateway/base.py +228 -0
- superqode/providers/gateway/litellm_gateway.py +1170 -0
- superqode/providers/gateway/openresponses_gateway.py +436 -0
- superqode/providers/health.py +297 -0
- superqode/providers/huggingface/__init__.py +74 -0
- superqode/providers/huggingface/downloader.py +472 -0
- superqode/providers/huggingface/endpoints.py +442 -0
- superqode/providers/huggingface/hub.py +531 -0
- superqode/providers/huggingface/inference.py +394 -0
- superqode/providers/huggingface/transformers_runner.py +516 -0
- superqode/providers/local/__init__.py +100 -0
- superqode/providers/local/base.py +438 -0
- superqode/providers/local/discovery.py +418 -0
- superqode/providers/local/lmstudio.py +256 -0
- superqode/providers/local/mlx.py +457 -0
- superqode/providers/local/ollama.py +486 -0
- superqode/providers/local/sglang.py +268 -0
- superqode/providers/local/tgi.py +260 -0
- superqode/providers/local/tool_support.py +477 -0
- superqode/providers/local/vllm.py +258 -0
- superqode/providers/manager.py +1338 -0
- superqode/providers/models.py +1016 -0
- superqode/providers/models_dev.py +578 -0
- superqode/providers/openresponses/__init__.py +87 -0
- superqode/providers/openresponses/converters/__init__.py +17 -0
- superqode/providers/openresponses/converters/messages.py +343 -0
- superqode/providers/openresponses/converters/tools.py +268 -0
- superqode/providers/openresponses/schema/__init__.py +56 -0
- superqode/providers/openresponses/schema/models.py +585 -0
- superqode/providers/openresponses/streaming/__init__.py +5 -0
- superqode/providers/openresponses/streaming/parser.py +338 -0
- superqode/providers/openresponses/tools/__init__.py +21 -0
- superqode/providers/openresponses/tools/apply_patch.py +352 -0
- superqode/providers/openresponses/tools/code_interpreter.py +290 -0
- superqode/providers/openresponses/tools/file_search.py +333 -0
- superqode/providers/openresponses/tools/mcp_adapter.py +252 -0
- superqode/providers/registry.py +716 -0
- superqode/providers/usage.py +332 -0
- superqode/pure_mode.py +384 -0
- superqode/qr/__init__.py +23 -0
- superqode/qr/dashboard.py +781 -0
- superqode/qr/generator.py +1018 -0
- superqode/qr/templates.py +135 -0
- superqode/safety/__init__.py +41 -0
- superqode/safety/sandbox.py +413 -0
- superqode/safety/warnings.py +256 -0
- superqode/server/__init__.py +33 -0
- superqode/server/lsp_server.py +775 -0
- superqode/server/web.py +250 -0
- superqode/session/__init__.py +25 -0
- superqode/session/persistence.py +580 -0
- superqode/session/sharing.py +477 -0
- superqode/session.py +475 -0
- superqode/sidebar.py +2991 -0
- superqode/stream_view.py +648 -0
- superqode/styles/__init__.py +3 -0
- superqode/superqe/__init__.py +184 -0
- superqode/superqe/acp_runner.py +1064 -0
- superqode/superqe/constitution/__init__.py +62 -0
- superqode/superqe/constitution/evaluator.py +308 -0
- superqode/superqe/constitution/loader.py +432 -0
- superqode/superqe/constitution/schema.py +250 -0
- superqode/superqe/events.py +591 -0
- superqode/superqe/frameworks/__init__.py +65 -0
- superqode/superqe/frameworks/base.py +234 -0
- superqode/superqe/frameworks/e2e.py +263 -0
- superqode/superqe/frameworks/executor.py +237 -0
- superqode/superqe/frameworks/javascript.py +409 -0
- superqode/superqe/frameworks/python.py +373 -0
- superqode/superqe/frameworks/registry.py +92 -0
- superqode/superqe/mcp_tools/__init__.py +47 -0
- superqode/superqe/mcp_tools/core_tools.py +418 -0
- superqode/superqe/mcp_tools/registry.py +230 -0
- superqode/superqe/mcp_tools/testing_tools.py +167 -0
- superqode/superqe/noise.py +89 -0
- superqode/superqe/orchestrator.py +778 -0
- superqode/superqe/roles.py +609 -0
- superqode/superqe/session.py +713 -0
- superqode/superqe/skills/__init__.py +57 -0
- superqode/superqe/skills/base.py +106 -0
- superqode/superqe/skills/core_skills.py +899 -0
- superqode/superqe/skills/registry.py +90 -0
- superqode/superqe/verifier.py +101 -0
- superqode/superqe_cli.py +76 -0
- superqode/tool_call.py +358 -0
- superqode/tools/__init__.py +93 -0
- superqode/tools/agent_tools.py +496 -0
- superqode/tools/base.py +324 -0
- superqode/tools/batch_tool.py +133 -0
- superqode/tools/diagnostics.py +311 -0
- superqode/tools/edit_tools.py +653 -0
- superqode/tools/enhanced_base.py +515 -0
- superqode/tools/file_tools.py +269 -0
- superqode/tools/file_tracking.py +45 -0
- superqode/tools/lsp_tools.py +610 -0
- superqode/tools/network_tools.py +350 -0
- superqode/tools/permissions.py +400 -0
- superqode/tools/question_tool.py +324 -0
- superqode/tools/search_tools.py +598 -0
- superqode/tools/shell_tools.py +259 -0
- superqode/tools/todo_tools.py +121 -0
- superqode/tools/validation.py +80 -0
- superqode/tools/web_tools.py +639 -0
- superqode/tui.py +1152 -0
- superqode/tui_integration.py +875 -0
- superqode/tui_widgets/__init__.py +27 -0
- superqode/tui_widgets/widgets/__init__.py +18 -0
- superqode/tui_widgets/widgets/progress.py +185 -0
- superqode/tui_widgets/widgets/tool_display.py +188 -0
- superqode/undo_manager.py +574 -0
- superqode/utils/__init__.py +5 -0
- superqode/utils/error_handling.py +323 -0
- superqode/utils/fuzzy.py +257 -0
- superqode/widgets/__init__.py +477 -0
- superqode/widgets/agent_collab.py +390 -0
- superqode/widgets/agent_store.py +936 -0
- superqode/widgets/agent_switcher.py +395 -0
- superqode/widgets/animation_manager.py +284 -0
- superqode/widgets/code_context.py +356 -0
- superqode/widgets/command_palette.py +412 -0
- superqode/widgets/connection_status.py +537 -0
- superqode/widgets/conversation_history.py +470 -0
- superqode/widgets/diff_indicator.py +155 -0
- superqode/widgets/enhanced_status_bar.py +385 -0
- superqode/widgets/enhanced_toast.py +476 -0
- superqode/widgets/file_browser.py +809 -0
- superqode/widgets/file_reference.py +585 -0
- superqode/widgets/issue_timeline.py +340 -0
- superqode/widgets/leader_key.py +264 -0
- superqode/widgets/mode_switcher.py +445 -0
- superqode/widgets/model_picker.py +234 -0
- superqode/widgets/permission_preview.py +1205 -0
- superqode/widgets/prompt.py +358 -0
- superqode/widgets/provider_connect.py +725 -0
- superqode/widgets/pty_shell.py +587 -0
- superqode/widgets/qe_dashboard.py +321 -0
- superqode/widgets/resizable_sidebar.py +377 -0
- superqode/widgets/response_changes.py +218 -0
- superqode/widgets/response_display.py +528 -0
- superqode/widgets/rich_tool_display.py +613 -0
- superqode/widgets/sidebar_panels.py +1180 -0
- superqode/widgets/slash_complete.py +356 -0
- superqode/widgets/split_view.py +612 -0
- superqode/widgets/status_bar.py +273 -0
- superqode/widgets/superqode_display.py +786 -0
- superqode/widgets/thinking_display.py +815 -0
- superqode/widgets/throbber.py +87 -0
- superqode/widgets/toast.py +206 -0
- superqode/widgets/unified_output.py +1073 -0
- superqode/workspace/__init__.py +75 -0
- superqode/workspace/artifacts.py +472 -0
- superqode/workspace/coordinator.py +353 -0
- superqode/workspace/diff_tracker.py +429 -0
- superqode/workspace/git_guard.py +373 -0
- superqode/workspace/git_snapshot.py +526 -0
- superqode/workspace/manager.py +750 -0
- superqode/workspace/snapshot.py +357 -0
- superqode/workspace/watcher.py +535 -0
- superqode/workspace/worktree.py +440 -0
- superqode-0.1.5.dist-info/METADATA +204 -0
- superqode-0.1.5.dist-info/RECORD +288 -0
- superqode-0.1.5.dist-info/WHEEL +5 -0
- superqode-0.1.5.dist-info/entry_points.txt +3 -0
- superqode-0.1.5.dist-info/licenses/LICENSE +648 -0
- superqode-0.1.5.dist-info/top_level.txt +1 -0
superqode/acp/types.py
ADDED
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ACP Protocol Types for SuperQode.
|
|
3
|
+
|
|
4
|
+
Based on https://agentclientprotocol.com/protocol/schema
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import TypedDict, Literal, Any, List, Dict, Optional, Union
|
|
8
|
+
|
|
9
|
+
try:
|
|
10
|
+
from typing import Required
|
|
11
|
+
except ImportError:
|
|
12
|
+
# Python < 3.12 compatibility
|
|
13
|
+
from typing_extensions import Required
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Client Capabilities
|
|
17
|
+
class FileSystemCapability(TypedDict, total=False):
|
|
18
|
+
readTextFile: bool
|
|
19
|
+
writeTextFile: bool
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ClientCapabilities(TypedDict, total=False):
|
|
23
|
+
fs: FileSystemCapability
|
|
24
|
+
terminal: bool
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Implementation(TypedDict, total=False):
|
|
28
|
+
name: str
|
|
29
|
+
title: Optional[str]
|
|
30
|
+
version: str
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Agent Capabilities
|
|
34
|
+
class PromptCapabilities(TypedDict, total=False):
|
|
35
|
+
audio: bool
|
|
36
|
+
embeddedContent: bool
|
|
37
|
+
image: bool
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class AgentCapabilities(TypedDict, total=False):
|
|
41
|
+
loadSession: bool
|
|
42
|
+
promptCapabilities: PromptCapabilities
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# Content Types
|
|
46
|
+
class TextContent(TypedDict, total=False):
|
|
47
|
+
type: str
|
|
48
|
+
text: str
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class ImageContent(TypedDict, total=False):
|
|
52
|
+
type: str
|
|
53
|
+
data: str
|
|
54
|
+
mimeType: str
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
ContentBlock = Union[TextContent, ImageContent, Dict[str, Any]]
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# Tool Call Types
|
|
61
|
+
ToolKind = Literal[
|
|
62
|
+
"read", "edit", "delete", "move", "search", "execute", "think", "fetch", "switch_mode", "other"
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
ToolCallStatus = Literal["pending", "in_progress", "completed", "failed"]
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class ToolCallLocation(TypedDict, total=False):
|
|
69
|
+
line: Optional[int]
|
|
70
|
+
path: str
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class ToolCallContentDiff(TypedDict, total=False):
|
|
74
|
+
newText: str
|
|
75
|
+
oldText: Optional[str]
|
|
76
|
+
path: str
|
|
77
|
+
type: str
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class ToolCallContentTerminal(TypedDict, total=False):
|
|
81
|
+
terminalId: str
|
|
82
|
+
type: str
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
ToolCallContent = Union[ToolCallContentDiff, ToolCallContentTerminal, Dict[str, Any]]
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class ToolCall(TypedDict, total=False):
|
|
89
|
+
_meta: dict
|
|
90
|
+
content: List[ToolCallContent]
|
|
91
|
+
kind: str
|
|
92
|
+
locations: List[ToolCallLocation]
|
|
93
|
+
rawInput: dict
|
|
94
|
+
rawOutput: dict
|
|
95
|
+
sessionUpdate: str
|
|
96
|
+
status: str
|
|
97
|
+
title: str
|
|
98
|
+
toolCallId: str
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class ToolCallUpdate(TypedDict, total=False):
|
|
102
|
+
_meta: dict
|
|
103
|
+
content: Optional[List[ToolCallContent]]
|
|
104
|
+
kind: Optional[str]
|
|
105
|
+
locations: Optional[list]
|
|
106
|
+
rawInput: dict
|
|
107
|
+
rawOutput: dict
|
|
108
|
+
sessionUpdate: str
|
|
109
|
+
status: Optional[str]
|
|
110
|
+
title: Optional[str]
|
|
111
|
+
toolCallId: str
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
# Permission Types
|
|
115
|
+
PermissionOptionKind = Literal["allow_once", "allow_always", "reject_once", "reject_always"]
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
class PermissionOption(TypedDict, total=False):
|
|
119
|
+
_meta: dict
|
|
120
|
+
kind: str
|
|
121
|
+
name: str
|
|
122
|
+
optionId: str
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class PermissionRequest(TypedDict, total=False):
|
|
126
|
+
sessionId: str
|
|
127
|
+
options: List[PermissionOption]
|
|
128
|
+
toolCall: ToolCall
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# Session Updates
|
|
132
|
+
class AgentMessageChunk(TypedDict, total=False):
|
|
133
|
+
content: ContentBlock
|
|
134
|
+
sessionUpdate: str
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class AgentThoughtChunk(TypedDict, total=False):
|
|
138
|
+
content: ContentBlock
|
|
139
|
+
sessionUpdate: str
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class PlanEntry(TypedDict, total=False):
|
|
143
|
+
content: str
|
|
144
|
+
priority: str
|
|
145
|
+
status: str
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class Plan(TypedDict, total=False):
|
|
149
|
+
entries: List[PlanEntry]
|
|
150
|
+
sessionUpdate: str
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
SessionUpdate = Union[
|
|
154
|
+
AgentMessageChunk, AgentThoughtChunk, ToolCall, ToolCallUpdate, Plan, Dict[str, Any]
|
|
155
|
+
]
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
# Response Types
|
|
159
|
+
class InitializeResponse(TypedDict, total=False):
|
|
160
|
+
agentCapabilities: AgentCapabilities
|
|
161
|
+
protocolVersion: int
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class SessionMode(TypedDict, total=False):
|
|
165
|
+
id: str
|
|
166
|
+
name: str
|
|
167
|
+
description: Optional[str]
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class SessionModeState(TypedDict, total=False):
|
|
171
|
+
availableModes: List[SessionMode]
|
|
172
|
+
currentModeId: str
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
class NewSessionResponse(TypedDict, total=False):
|
|
176
|
+
sessionId: str
|
|
177
|
+
modes: Optional[SessionModeState]
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class SessionPromptResponse(TypedDict, total=False):
|
|
181
|
+
stopReason: str
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class RequestPermissionResponse(TypedDict, total=False):
|
|
185
|
+
outcome: Dict[str, Any]
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
# Terminal Types
|
|
189
|
+
class EnvVariable(TypedDict, total=False):
|
|
190
|
+
name: str
|
|
191
|
+
value: str
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class CreateTerminalResponse(TypedDict, total=False):
|
|
195
|
+
terminalId: str
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class TerminalOutputResponse(TypedDict, total=False):
|
|
199
|
+
output: str
|
|
200
|
+
truncated: bool
|
|
201
|
+
exitStatus: Optional[dict]
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class WaitForTerminalExitResponse(TypedDict, total=False):
|
|
205
|
+
exitCode: Optional[int]
|
|
206
|
+
signal: Optional[str]
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
# ============================================================================
|
|
210
|
+
# Authentication Types (ACP Protocol Completeness)
|
|
211
|
+
# ============================================================================
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class AuthMethod(TypedDict, total=False):
|
|
215
|
+
"""Authentication method supported by the agent."""
|
|
216
|
+
|
|
217
|
+
type: str # "api_key", "oauth2", "bearer", etc.
|
|
218
|
+
name: str
|
|
219
|
+
description: Optional[str]
|
|
220
|
+
required: bool
|
|
221
|
+
config: Optional[Dict[str, Any]]
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class AuthMethodsResponse(TypedDict, total=False):
|
|
225
|
+
"""Response containing available authentication methods."""
|
|
226
|
+
|
|
227
|
+
authMethods: List[AuthMethod]
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
class AuthConfig(TypedDict, total=False):
|
|
231
|
+
"""Authentication configuration."""
|
|
232
|
+
|
|
233
|
+
type: str
|
|
234
|
+
credentials: Dict[str, Any]
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
# ============================================================================
|
|
238
|
+
# Mode and Model Types (ACP Protocol Completeness)
|
|
239
|
+
# ============================================================================
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
class AvailableMode(TypedDict, total=False):
|
|
243
|
+
"""An available mode that the agent can operate in."""
|
|
244
|
+
|
|
245
|
+
slug: str
|
|
246
|
+
name: str
|
|
247
|
+
description: Optional[str]
|
|
248
|
+
icon: Optional[str]
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
class AvailableModel(TypedDict, total=False):
|
|
252
|
+
"""An available model that the agent can use."""
|
|
253
|
+
|
|
254
|
+
id: str
|
|
255
|
+
name: str
|
|
256
|
+
provider: Optional[str]
|
|
257
|
+
description: Optional[str]
|
|
258
|
+
capabilities: Optional[List[str]]
|
|
259
|
+
context_window: Optional[int]
|
|
260
|
+
max_output_tokens: Optional[int]
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
class ModesResponse(TypedDict, total=False):
|
|
264
|
+
"""Response containing available modes."""
|
|
265
|
+
|
|
266
|
+
modes: List[AvailableMode]
|
|
267
|
+
currentMode: Optional[str]
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
class ModelsResponse(TypedDict, total=False):
|
|
271
|
+
"""Response containing available models."""
|
|
272
|
+
|
|
273
|
+
models: List[AvailableModel]
|
|
274
|
+
currentModel: Optional[str]
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class SetModeRequest(TypedDict, total=False):
|
|
278
|
+
"""Request to set the current mode."""
|
|
279
|
+
|
|
280
|
+
sessionId: str
|
|
281
|
+
modeSlug: str
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
class SetModelRequest(TypedDict, total=False):
|
|
285
|
+
"""Request to set the current model."""
|
|
286
|
+
|
|
287
|
+
sessionId: str
|
|
288
|
+
modelId: str
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
# ============================================================================
|
|
292
|
+
# Slash Command Types (ACP Protocol Completeness)
|
|
293
|
+
# ============================================================================
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
class CommandArg(TypedDict, total=False):
|
|
297
|
+
"""Argument for a slash command."""
|
|
298
|
+
|
|
299
|
+
name: str
|
|
300
|
+
description: Optional[str]
|
|
301
|
+
required: bool
|
|
302
|
+
type: str # "string", "number", "boolean", "file", etc.
|
|
303
|
+
default: Optional[Any]
|
|
304
|
+
choices: Optional[List[str]]
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
class SlashCommand(TypedDict, total=False):
|
|
308
|
+
"""A slash command available in the agent."""
|
|
309
|
+
|
|
310
|
+
name: str
|
|
311
|
+
description: str
|
|
312
|
+
args: Optional[List[CommandArg]]
|
|
313
|
+
category: Optional[str]
|
|
314
|
+
aliases: Optional[List[str]]
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
class AvailableCommandsUpdate(TypedDict, total=False):
|
|
318
|
+
"""Update containing available commands."""
|
|
319
|
+
|
|
320
|
+
commands: List[SlashCommand]
|
|
321
|
+
sessionUpdate: str # "available_commands"
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
class AvailableCommandsResponse(TypedDict, total=False):
|
|
325
|
+
"""Response containing available commands."""
|
|
326
|
+
|
|
327
|
+
commands: List[SlashCommand]
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
# ============================================================================
|
|
331
|
+
# Batch Request Types (ACP Protocol Completeness)
|
|
332
|
+
# ============================================================================
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
class BatchRequestItem(TypedDict, total=False):
|
|
336
|
+
"""A single request in a batch."""
|
|
337
|
+
|
|
338
|
+
id: str
|
|
339
|
+
method: str
|
|
340
|
+
params: Dict[str, Any]
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
class BatchRequest(TypedDict, total=False):
|
|
344
|
+
"""A batch of requests to execute."""
|
|
345
|
+
|
|
346
|
+
requests: List[BatchRequestItem]
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
class BatchResponseItem(TypedDict, total=False):
|
|
350
|
+
"""A single response in a batch."""
|
|
351
|
+
|
|
352
|
+
id: str
|
|
353
|
+
result: Optional[Dict[str, Any]]
|
|
354
|
+
error: Optional[Dict[str, Any]]
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
class BatchResponse(TypedDict, total=False):
|
|
358
|
+
"""Response containing batch results."""
|
|
359
|
+
|
|
360
|
+
responses: List[BatchResponseItem]
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
# ============================================================================
|
|
364
|
+
# Extended Session Types (ACP Protocol Completeness)
|
|
365
|
+
# ============================================================================
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
class SessionConfig(TypedDict, total=False):
|
|
369
|
+
"""Configuration for a session."""
|
|
370
|
+
|
|
371
|
+
cwd: str
|
|
372
|
+
env: Optional[Dict[str, str]]
|
|
373
|
+
mcpServers: Optional[List[Dict[str, Any]]]
|
|
374
|
+
mode: Optional[str]
|
|
375
|
+
model: Optional[str]
|
|
376
|
+
systemPrompt: Optional[str]
|
|
377
|
+
maxTurns: Optional[int]
|
|
378
|
+
autoApprove: Optional[List[str]]
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
class LoadSessionRequest(TypedDict, total=False):
|
|
382
|
+
"""Request to load an existing session."""
|
|
383
|
+
|
|
384
|
+
sessionId: str
|
|
385
|
+
sessionPath: Optional[str]
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
class LoadSessionResponse(TypedDict, total=False):
|
|
389
|
+
"""Response from loading a session."""
|
|
390
|
+
|
|
391
|
+
sessionId: str
|
|
392
|
+
history: List[Dict[str, Any]]
|
|
393
|
+
modes: Optional[SessionModeState]
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
class SessionInfo(TypedDict, total=False):
|
|
397
|
+
"""Information about a session."""
|
|
398
|
+
|
|
399
|
+
sessionId: str
|
|
400
|
+
created: str
|
|
401
|
+
lastActive: str
|
|
402
|
+
cwd: str
|
|
403
|
+
mode: Optional[str]
|
|
404
|
+
model: Optional[str]
|
|
405
|
+
messageCount: int
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
class ListSessionsResponse(TypedDict, total=False):
|
|
409
|
+
"""Response containing list of sessions."""
|
|
410
|
+
|
|
411
|
+
sessions: List[SessionInfo]
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
# ============================================================================
|
|
415
|
+
# Context Types (ACP Protocol Completeness)
|
|
416
|
+
# ============================================================================
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
class FileContext(TypedDict, total=False):
|
|
420
|
+
"""File context to include in a prompt."""
|
|
421
|
+
|
|
422
|
+
path: str
|
|
423
|
+
content: Optional[str]
|
|
424
|
+
startLine: Optional[int]
|
|
425
|
+
endLine: Optional[int]
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
class URLContext(TypedDict, total=False):
|
|
429
|
+
"""URL context to include in a prompt."""
|
|
430
|
+
|
|
431
|
+
url: str
|
|
432
|
+
content: Optional[str]
|
|
433
|
+
fetchedAt: Optional[str]
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
class ContextItem(TypedDict, total=False):
|
|
437
|
+
"""A context item for the prompt."""
|
|
438
|
+
|
|
439
|
+
type: str # "file", "url", "text", "image"
|
|
440
|
+
file: Optional[FileContext]
|
|
441
|
+
url: Optional[URLContext]
|
|
442
|
+
text: Optional[str]
|
|
443
|
+
image: Optional[ImageContent]
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
class PromptWithContext(TypedDict, total=False):
|
|
447
|
+
"""A prompt with additional context."""
|
|
448
|
+
|
|
449
|
+
prompt: List[ContentBlock]
|
|
450
|
+
context: Optional[List[ContextItem]]
|
|
451
|
+
sessionId: str
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
# ============================================================================
|
|
455
|
+
# Capability Extensions (ACP Protocol Completeness)
|
|
456
|
+
# ============================================================================
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
class ExtendedAgentCapabilities(TypedDict, total=False):
|
|
460
|
+
"""Extended agent capabilities."""
|
|
461
|
+
|
|
462
|
+
loadSession: bool
|
|
463
|
+
promptCapabilities: PromptCapabilities
|
|
464
|
+
modes: bool
|
|
465
|
+
models: bool
|
|
466
|
+
commands: bool
|
|
467
|
+
batch: bool
|
|
468
|
+
streaming: bool
|
|
469
|
+
cancellation: bool
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
class ExtendedClientCapabilities(TypedDict, total=False):
|
|
473
|
+
"""Extended client capabilities."""
|
|
474
|
+
|
|
475
|
+
fs: FileSystemCapability
|
|
476
|
+
terminal: bool
|
|
477
|
+
browser: bool # Can open URLs in browser
|
|
478
|
+
notifications: bool # Can show notifications
|
|
479
|
+
clipboard: bool # Can access clipboard
|
|
480
|
+
ui: bool # Has UI for interactive prompts
|