idun-agent-engine 0.4.0__py3-none-any.whl → 0.4.2__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.
- idun_agent_engine/_version.py +1 -1
- idun_agent_engine/agent/adk/adk.py +7 -4
- idun_agent_engine/agent/haystack/__init__.py +0 -2
- idun_agent_engine/agent/haystack/haystack.py +9 -5
- idun_agent_engine/agent/langgraph/langgraph.py +10 -13
- idun_agent_engine/core/config_builder.py +33 -13
- idun_agent_engine/guardrails/guardrails_hub/guardrails_hub.py +52 -9
- idun_agent_engine/mcp/__init__.py +2 -2
- idun_agent_engine/mcp/helpers.py +53 -15
- idun_agent_engine/mcp/registry.py +5 -5
- idun_agent_engine/observability/base.py +11 -2
- idun_agent_engine/observability/gcp_trace/gcp_trace_handler.py +3 -1
- idun_agent_engine/observability/langfuse/langfuse_handler.py +1 -3
- idun_agent_engine/server/dependencies.py +7 -2
- idun_agent_engine/server/lifespan.py +2 -7
- idun_agent_engine/server/routers/agent.py +2 -1
- idun_agent_engine/server/routers/base.py +7 -5
- idun_agent_engine/telemetry/__init__.py +0 -1
- idun_agent_engine/telemetry/config.py +0 -1
- idun_agent_engine/telemetry/telemetry.py +3 -4
- idun_agent_engine/templates/correction.py +4 -7
- idun_agent_engine/templates/deep_research.py +1 -0
- idun_agent_engine/templates/translation.py +4 -4
- {idun_agent_engine-0.4.0.dist-info → idun_agent_engine-0.4.2.dist-info}/METADATA +2 -2
- idun_agent_engine-0.4.2.dist-info/RECORD +86 -0
- idun_platform_cli/groups/agent/package.py +4 -1
- idun_platform_cli/groups/agent/serve.py +2 -0
- idun_platform_cli/groups/init.py +2 -0
- idun_platform_cli/telemetry.py +55 -0
- idun_platform_cli/tui/css/create_agent.py +137 -14
- idun_platform_cli/tui/css/main.py +7 -10
- idun_platform_cli/tui/main.py +3 -3
- idun_platform_cli/tui/schemas/create_agent.py +8 -4
- idun_platform_cli/tui/screens/create_agent.py +186 -20
- idun_platform_cli/tui/utils/config.py +23 -2
- idun_platform_cli/tui/validators/guardrails.py +20 -6
- idun_platform_cli/tui/validators/mcps.py +9 -6
- idun_platform_cli/tui/widgets/__init__.py +8 -4
- idun_platform_cli/tui/widgets/chat_widget.py +155 -0
- idun_platform_cli/tui/widgets/guardrails_widget.py +12 -4
- idun_platform_cli/tui/widgets/identity_widget.py +28 -10
- idun_platform_cli/tui/widgets/mcps_widget.py +113 -25
- idun_platform_cli/tui/widgets/memory_widget.py +194 -0
- idun_platform_cli/tui/widgets/observability_widget.py +12 -14
- idun_platform_cli/tui/widgets/serve_widget.py +50 -47
- idun_agent_engine/agent/haystack/haystack_model.py +0 -13
- idun_agent_engine/guardrails/guardrails_hub/utils.py +0 -1
- idun_agent_engine/server/routers/agui.py +0 -47
- idun_agent_engine-0.4.0.dist-info/RECORD +0 -86
- {idun_agent_engine-0.4.0.dist-info → idun_agent_engine-0.4.2.dist-info}/WHEEL +0 -0
- {idun_agent_engine-0.4.0.dist-info → idun_agent_engine-0.4.2.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"""Memory and checkpoint configuration widget."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from pydantic import ValidationError
|
|
8
|
+
from textual.app import ComposeResult
|
|
9
|
+
from textual.containers import Horizontal, Vertical
|
|
10
|
+
from textual.css.query import NoMatches
|
|
11
|
+
from textual.reactive import reactive
|
|
12
|
+
from textual.widget import Widget
|
|
13
|
+
from textual.widgets import Input, RadioButton, RadioSet, Static
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from idun_agent_schema.engine.langgraph import CheckpointConfig
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class MemoryWidget(Widget):
|
|
20
|
+
selected_type = reactive("memory")
|
|
21
|
+
|
|
22
|
+
def compose(self) -> ComposeResult:
|
|
23
|
+
main_section = Vertical(classes="memory-main")
|
|
24
|
+
main_section.border_title = "Checkpoint Configuration"
|
|
25
|
+
|
|
26
|
+
with main_section, Horizontal(classes="field-row framework-row"):
|
|
27
|
+
yield Static("Type:", classes="field-label")
|
|
28
|
+
with RadioSet(id="checkpoint_type_select"):
|
|
29
|
+
yield RadioButton("In-Memory", id="memory", value=True)
|
|
30
|
+
yield RadioButton("SQLite", id="sqlite")
|
|
31
|
+
yield RadioButton("PostgreSQL", id="postgres")
|
|
32
|
+
|
|
33
|
+
config_container = Vertical(
|
|
34
|
+
classes="checkpoint-config-container",
|
|
35
|
+
id="checkpoint_config",
|
|
36
|
+
)
|
|
37
|
+
yield config_container
|
|
38
|
+
|
|
39
|
+
def on_mount(self) -> None:
|
|
40
|
+
self._update_checkpoint_config()
|
|
41
|
+
|
|
42
|
+
def on_radio_set_changed(self, event: RadioSet.Changed) -> None:
|
|
43
|
+
if event.radio_set.id == "checkpoint_type_select":
|
|
44
|
+
self.selected_type = str(event.pressed.id)
|
|
45
|
+
self._update_checkpoint_config()
|
|
46
|
+
|
|
47
|
+
def _update_checkpoint_config(self) -> None:
|
|
48
|
+
try:
|
|
49
|
+
config_container = self.query_one("#checkpoint_config", Vertical)
|
|
50
|
+
config_container.remove_children()
|
|
51
|
+
|
|
52
|
+
if self.selected_type == "memory":
|
|
53
|
+
pass
|
|
54
|
+
elif self.selected_type == "sqlite":
|
|
55
|
+
self._render_sqlite_config(config_container)
|
|
56
|
+
elif self.selected_type == "postgres":
|
|
57
|
+
self._render_postgres_config(config_container)
|
|
58
|
+
except Exception:
|
|
59
|
+
pass
|
|
60
|
+
|
|
61
|
+
def _render_sqlite_config(self, container: Vertical) -> None:
|
|
62
|
+
config_section = Vertical(
|
|
63
|
+
Horizontal(
|
|
64
|
+
Static("DB URL:", classes="field-label"),
|
|
65
|
+
Input(
|
|
66
|
+
placeholder="sqlite:///./checkpoints.db",
|
|
67
|
+
id="sqlite_db_url",
|
|
68
|
+
classes="field-input",
|
|
69
|
+
),
|
|
70
|
+
classes="field-row",
|
|
71
|
+
),
|
|
72
|
+
classes="checkpoint-fields-section",
|
|
73
|
+
)
|
|
74
|
+
config_section.border_title = "SQLite Configuration"
|
|
75
|
+
container.mount(config_section)
|
|
76
|
+
|
|
77
|
+
def _render_postgres_config(self, container: Vertical) -> None:
|
|
78
|
+
config_section = Vertical(
|
|
79
|
+
Horizontal(
|
|
80
|
+
Static("DB URL:", classes="field-label"),
|
|
81
|
+
Input(
|
|
82
|
+
placeholder="postgresql://user:pass@localhost:5432/db",
|
|
83
|
+
id="postgres_db_url",
|
|
84
|
+
classes="field-input",
|
|
85
|
+
),
|
|
86
|
+
classes="field-row",
|
|
87
|
+
),
|
|
88
|
+
classes="checkpoint-fields-section",
|
|
89
|
+
)
|
|
90
|
+
config_section.border_title = "PostgreSQL Configuration"
|
|
91
|
+
container.mount(config_section)
|
|
92
|
+
|
|
93
|
+
def get_data(self) -> CheckpointConfig | None:
|
|
94
|
+
from idun_agent_schema.engine.langgraph import (
|
|
95
|
+
InMemoryCheckpointConfig,
|
|
96
|
+
PostgresCheckpointConfig,
|
|
97
|
+
SqliteCheckpointConfig,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
try:
|
|
101
|
+
radio_set = self.query_one("#checkpoint_type_select", RadioSet)
|
|
102
|
+
|
|
103
|
+
checkpoint_type = "memory"
|
|
104
|
+
if radio_set.pressed_button:
|
|
105
|
+
checkpoint_type = str(radio_set.pressed_button.id)
|
|
106
|
+
|
|
107
|
+
if checkpoint_type == "memory":
|
|
108
|
+
return InMemoryCheckpointConfig(type="memory")
|
|
109
|
+
|
|
110
|
+
elif checkpoint_type == "sqlite":
|
|
111
|
+
try:
|
|
112
|
+
db_url_input = self.query_one("#sqlite_db_url", Input)
|
|
113
|
+
db_url = db_url_input.value.strip()
|
|
114
|
+
except NoMatches:
|
|
115
|
+
self.app.notify(
|
|
116
|
+
"Configuration error. Please reselect checkpoint type.",
|
|
117
|
+
severity="error",
|
|
118
|
+
)
|
|
119
|
+
return None
|
|
120
|
+
|
|
121
|
+
if not db_url:
|
|
122
|
+
self.app.notify(
|
|
123
|
+
"SQLite DB URL is required",
|
|
124
|
+
severity="error",
|
|
125
|
+
)
|
|
126
|
+
return None
|
|
127
|
+
|
|
128
|
+
if not db_url.startswith("sqlite:///"):
|
|
129
|
+
self.app.notify(
|
|
130
|
+
"SQLite URL must start with 'sqlite:///'",
|
|
131
|
+
severity="error",
|
|
132
|
+
)
|
|
133
|
+
return None
|
|
134
|
+
|
|
135
|
+
try:
|
|
136
|
+
return SqliteCheckpointConfig(type="sqlite", db_url=db_url)
|
|
137
|
+
except ValidationError:
|
|
138
|
+
self.app.notify(
|
|
139
|
+
"Invalid SQLite configuration. Check your URL format.",
|
|
140
|
+
severity="error",
|
|
141
|
+
)
|
|
142
|
+
return None
|
|
143
|
+
|
|
144
|
+
elif checkpoint_type == "postgres":
|
|
145
|
+
try:
|
|
146
|
+
db_url_input = self.query_one("#postgres_db_url", Input)
|
|
147
|
+
db_url = db_url_input.value.strip()
|
|
148
|
+
except NoMatches:
|
|
149
|
+
self.app.notify(
|
|
150
|
+
"Configuration error. Please reselect checkpoint type.",
|
|
151
|
+
severity="error",
|
|
152
|
+
)
|
|
153
|
+
return None
|
|
154
|
+
|
|
155
|
+
if not db_url:
|
|
156
|
+
self.app.notify(
|
|
157
|
+
"PostgreSQL DB URL is required",
|
|
158
|
+
severity="error",
|
|
159
|
+
)
|
|
160
|
+
return None
|
|
161
|
+
|
|
162
|
+
if not (
|
|
163
|
+
db_url.startswith("postgresql://")
|
|
164
|
+
or db_url.startswith("postgres://")
|
|
165
|
+
):
|
|
166
|
+
self.app.notify(
|
|
167
|
+
"PostgreSQL URL must start with 'postgresql://' or 'postgres://'",
|
|
168
|
+
severity="error",
|
|
169
|
+
)
|
|
170
|
+
return None
|
|
171
|
+
|
|
172
|
+
try:
|
|
173
|
+
return PostgresCheckpointConfig(type="postgres", db_url=db_url)
|
|
174
|
+
except ValidationError:
|
|
175
|
+
self.app.notify(
|
|
176
|
+
"Invalid PostgreSQL configuration. Check your URL format.",
|
|
177
|
+
severity="error",
|
|
178
|
+
)
|
|
179
|
+
return None
|
|
180
|
+
|
|
181
|
+
except NoMatches:
|
|
182
|
+
self.app.notify(
|
|
183
|
+
"Error reading checkpoint configuration",
|
|
184
|
+
severity="error",
|
|
185
|
+
)
|
|
186
|
+
return None
|
|
187
|
+
except Exception:
|
|
188
|
+
self.app.notify(
|
|
189
|
+
"Error validating checkpoint configuration",
|
|
190
|
+
severity="error",
|
|
191
|
+
)
|
|
192
|
+
return None
|
|
193
|
+
|
|
194
|
+
return None
|
|
@@ -4,29 +4,26 @@ from idun_agent_schema.engine.observability_v2 import (
|
|
|
4
4
|
)
|
|
5
5
|
from textual.app import ComposeResult
|
|
6
6
|
from textual.containers import Horizontal, Vertical
|
|
7
|
-
from textual.widgets import Static, Input, Switch, RadioSet, RadioButton
|
|
8
|
-
from textual.widget import Widget
|
|
9
7
|
from textual.reactive import reactive
|
|
8
|
+
from textual.widget import Widget
|
|
9
|
+
from textual.widgets import Input, RadioButton, RadioSet, Static, Switch
|
|
10
10
|
|
|
11
11
|
from idun_platform_cli.tui.validators.observability import validate_observability
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ObservabilityWidget(Widget):
|
|
15
|
-
selected_provider = reactive("
|
|
15
|
+
selected_provider = reactive("OFF")
|
|
16
16
|
|
|
17
17
|
def compose(self) -> ComposeResult:
|
|
18
18
|
main_section = Vertical(classes="observability-main")
|
|
19
19
|
main_section.border_title = "Observability"
|
|
20
20
|
|
|
21
21
|
with main_section:
|
|
22
|
-
with Horizontal(classes="field-row"):
|
|
23
|
-
yield Static("Enabled:", classes="field-label")
|
|
24
|
-
yield Switch(value=True, id="enabled_toggle")
|
|
25
|
-
|
|
26
22
|
with Horizontal(classes="field-row framework-row"):
|
|
27
23
|
yield Static("Provider:", classes="field-label")
|
|
28
24
|
with RadioSet(id="provider_select"):
|
|
29
|
-
yield RadioButton("
|
|
25
|
+
yield RadioButton("Off", id="OFF", value=True)
|
|
26
|
+
yield RadioButton("LANGFUSE", id="LANGFUSE")
|
|
30
27
|
yield RadioButton("PHOENIX", id="PHOENIX")
|
|
31
28
|
yield RadioButton("GCP LOGGING", id="GCP_LOGGING")
|
|
32
29
|
yield RadioButton("GCP TRACE", id="GCP_TRACE")
|
|
@@ -49,7 +46,9 @@ class ObservabilityWidget(Widget):
|
|
|
49
46
|
config_container = self.query_one("#provider_config", Vertical)
|
|
50
47
|
config_container.remove_children()
|
|
51
48
|
|
|
52
|
-
if self.selected_provider == "
|
|
49
|
+
if self.selected_provider == "OFF":
|
|
50
|
+
pass
|
|
51
|
+
elif self.selected_provider == "LANGFUSE":
|
|
53
52
|
self._render_langfuse_config(config_container)
|
|
54
53
|
elif self.selected_provider == "PHOENIX":
|
|
55
54
|
self._render_phoenix_config(config_container)
|
|
@@ -305,16 +304,15 @@ class ObservabilityWidget(Widget):
|
|
|
305
304
|
def get_data(self) -> ObservabilityConfig | None:
|
|
306
305
|
radio_set = self.query_one("#provider_select", RadioSet)
|
|
307
306
|
|
|
308
|
-
provider =
|
|
307
|
+
provider = "OFF"
|
|
309
308
|
if radio_set.pressed_button:
|
|
310
309
|
provider = str(radio_set.pressed_button.id)
|
|
311
310
|
|
|
312
|
-
|
|
313
|
-
config = {}
|
|
314
|
-
|
|
315
|
-
if not enabled:
|
|
311
|
+
if provider == "OFF":
|
|
316
312
|
return None
|
|
317
313
|
|
|
314
|
+
config = {}
|
|
315
|
+
|
|
318
316
|
match provider:
|
|
319
317
|
case "LANGFUSE":
|
|
320
318
|
config = {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"""Serve configuration widget."""
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
from rich.syntax import Syntax
|
|
3
5
|
from textual.app import ComposeResult
|
|
4
|
-
from textual.containers import Vertical
|
|
6
|
+
from textual.containers import Horizontal, Vertical
|
|
5
7
|
from textual.widget import Widget
|
|
6
8
|
from textual.widgets import Button, RichLog, Static
|
|
7
9
|
|
|
@@ -14,23 +16,20 @@ class ServeWidget(Widget):
|
|
|
14
16
|
self.shell_id = None
|
|
15
17
|
|
|
16
18
|
def compose(self) -> ComposeResult:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
with summary_container:
|
|
21
|
-
agent_box = Vertical(classes="summary-box", id="agent_summary")
|
|
22
|
-
agent_box.border_title = "Agent"
|
|
23
|
-
with agent_box:
|
|
24
|
-
yield Static("Loading...", id="agent_summary_text")
|
|
19
|
+
yaml_container = Vertical(classes="serve-yaml-display")
|
|
20
|
+
yaml_container.border_title = "Agent Configuration"
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
with obs_box:
|
|
29
|
-
yield Static("Loading...", id="obs_summary_text")
|
|
22
|
+
with yaml_container:
|
|
23
|
+
yield Static("Loading configuration...", id="yaml_content")
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
button_container = Horizontal(classes="serve-button-container")
|
|
26
|
+
with button_container:
|
|
27
|
+
yield Button(
|
|
28
|
+
"Save and Exit", id="save_exit_button", classes="validate-run-btn"
|
|
29
|
+
)
|
|
30
|
+
yield Button(
|
|
31
|
+
"Save and Run", id="save_run_button", classes="validate-run-btn"
|
|
32
|
+
)
|
|
34
33
|
|
|
35
34
|
logs_container = Vertical(classes="serve-logs", id="logs_container")
|
|
36
35
|
logs_container.border_title = "Server Logs"
|
|
@@ -40,37 +39,41 @@ class ServeWidget(Widget):
|
|
|
40
39
|
|
|
41
40
|
def load_config(self, config: dict) -> None:
|
|
42
41
|
self.config_data = config
|
|
43
|
-
self.
|
|
44
|
-
|
|
45
|
-
def
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
42
|
+
self._update_yaml_display()
|
|
43
|
+
|
|
44
|
+
def _update_yaml_display(self) -> None:
|
|
45
|
+
import yaml
|
|
46
|
+
|
|
47
|
+
if not self.config_data:
|
|
48
|
+
self.query_one("#yaml_content", Static).update(
|
|
49
|
+
"[yellow]No configuration loaded yet.[/yellow]\n"
|
|
50
|
+
"[dim]Complete the previous sections to generate configuration.[/dim]"
|
|
51
|
+
)
|
|
52
|
+
return
|
|
53
|
+
|
|
54
|
+
try:
|
|
55
|
+
yaml_string = yaml.dump(
|
|
56
|
+
self.config_data,
|
|
57
|
+
default_flow_style=False,
|
|
58
|
+
sort_keys=False,
|
|
59
|
+
allow_unicode=True,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
syntax = Syntax(
|
|
63
|
+
yaml_string,
|
|
64
|
+
"yaml",
|
|
65
|
+
theme="monokai",
|
|
66
|
+
line_numbers=True,
|
|
67
|
+
word_wrap=False,
|
|
68
|
+
indent_guides=True,
|
|
69
|
+
background_color="default",
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
self.query_one("#yaml_content", Static).update(syntax)
|
|
73
|
+
|
|
74
|
+
except Exception as e:
|
|
75
|
+
error_msg = f"[red]Error displaying configuration:[/red]\n{str(e)}"
|
|
76
|
+
self.query_one("#yaml_content", Static).update(error_msg)
|
|
74
77
|
|
|
75
78
|
def get_agent_name(self) -> str:
|
|
76
79
|
agent_info = self.config_data.get("agent", {})
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"""Configuration models for Haystack agents."""
|
|
2
|
-
|
|
3
|
-
from typing import Literal
|
|
4
|
-
|
|
5
|
-
from idun_agent_engine.core.engine_config import BaseAgentConfig
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class HaystackAgentConfig(BaseAgentConfig):
|
|
9
|
-
"""Configuration model for Haystack Agents."""
|
|
10
|
-
|
|
11
|
-
type: Literal["haystack"] = "haystack"
|
|
12
|
-
component_type: Literal["pipeline", "agent"]
|
|
13
|
-
component_definition: str
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"""Utils module."""
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# """AGUI routes for CopilotKit integration with LangGraph agents."""
|
|
2
|
-
|
|
3
|
-
# import logging
|
|
4
|
-
# from typing import Annotated
|
|
5
|
-
|
|
6
|
-
# from ag_ui_langgraph import add_langgraph_fastapi_endpoint
|
|
7
|
-
# from copilotkit import LangGraphAGUIAgent
|
|
8
|
-
# from ag_ui_adk import ADKAgent as ADKAGUIAgent
|
|
9
|
-
# from ag_ui_adk import add_adk_fastapi_endpoint
|
|
10
|
-
# from fastapi import APIRouter, Depends, HTTPException, Request
|
|
11
|
-
|
|
12
|
-
# from idun_agent_engine.agent.langgraph.langgraph import LanggraphAgent
|
|
13
|
-
# from idun_agent_engine.agent.adk.adk import AdkAgent
|
|
14
|
-
# from idun_agent_engine.server.dependencies import get_agent
|
|
15
|
-
|
|
16
|
-
# logging.basicConfig(
|
|
17
|
-
# format="%(asctime)s %(levelname)-8s %(message)s",
|
|
18
|
-
# level=logging.INFO,
|
|
19
|
-
# datefmt="%Y-%m-%d %H:%M:%S",
|
|
20
|
-
# )
|
|
21
|
-
|
|
22
|
-
# logger = logging.getLogger(__name__)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
# def setup_agui_router(app, agent: LanggraphAgent | AdkAgent) -> LangGraphAGUIAgent | ADKAGUIAgent:
|
|
26
|
-
# """Set up AGUI routes for CopilotKit integration.
|
|
27
|
-
|
|
28
|
-
# This function adds the LangGraph agent as a CopilotKit-compatible endpoint.
|
|
29
|
-
|
|
30
|
-
# Args:
|
|
31
|
-
# app: The FastAPI application instance
|
|
32
|
-
# agent: The initialized LangGraph agent instance
|
|
33
|
-
# """
|
|
34
|
-
# try:
|
|
35
|
-
# if isinstance(agent, LanggraphAgent):
|
|
36
|
-
# # Create the AGUI agent wrapper
|
|
37
|
-
# agui_agent = agent.copilotkit_agent_instance
|
|
38
|
-
# elif isinstance(agent, AdkAgent):
|
|
39
|
-
# # Create the AGUI agent wrapper
|
|
40
|
-
# agui_agent = agent.copilotkit_agent_instance # TODO: duplicate in agent.adk.adk.py init
|
|
41
|
-
# else:
|
|
42
|
-
# raise ValueError(f"Unsupported agent type: {type(agent)}")
|
|
43
|
-
# return agui_agent
|
|
44
|
-
# logger.info(f"✅ AGUI endpoint configured at /agui for agent: {agent.name}")
|
|
45
|
-
# except Exception as e:
|
|
46
|
-
# logger.error(f"❌ Failed to setup AGUI router: {e}")
|
|
47
|
-
# raise HTTPException(status_code=500, detail=f"Failed to setup AGUI router: {e}") from e
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
idun_agent_engine/__init__.py,sha256=PhOL6foq5V0eXaoXw7xKUeCWXIWrOHrAFB8OuJnBqyM,550
|
|
2
|
-
idun_agent_engine/_version.py,sha256=IhNtSwHLVf0OkJXf7kUXlUOI7HCuAsywgZymi_DTmac,72
|
|
3
|
-
idun_agent_engine/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
idun_agent_engine/agent/__init__.py,sha256=foyOoRdI_04q1b6f2A5EXEpWSCKjZxpgWMWrKcsHNl8,220
|
|
5
|
-
idun_agent_engine/agent/base.py,sha256=c-3gljSHQpm6aY0JNDmXkaPtcW55rXdsI8Cgv9l4bCs,3294
|
|
6
|
-
idun_agent_engine/agent/adk/__init__.py,sha256=jLV2Z9qQGZtBpF_0pQI1FRCPJ_J1G3Z6cEAzHnQyuu4,83
|
|
7
|
-
idun_agent_engine/agent/adk/adk.py,sha256=29YC5rgLjdod-CU3a2JqgAvzYcD5u2EY7pylozGNi9c,11375
|
|
8
|
-
idun_agent_engine/agent/haystack/__init__.py,sha256=y5ADrD8gWBeYIvV7tmu6OpPdJ8POHt-tyraIL7RkkWI,179
|
|
9
|
-
idun_agent_engine/agent/haystack/haystack.py,sha256=k4NAx_zTBO9uiExM9NtuDAN94H1lrCWtHf1GEWEN16g,10966
|
|
10
|
-
idun_agent_engine/agent/haystack/haystack_model.py,sha256=EtOYnsWRufcrQufTRMeB3V-rZVQqfnmwKwPsYGfZdCs,362
|
|
11
|
-
idun_agent_engine/agent/haystack/utils.py,sha256=sKRoPhzZWFw1NPsYwCockafzMBCCq3lGOrndbNE_C3M,609
|
|
12
|
-
idun_agent_engine/agent/langgraph/__init__.py,sha256=CoBdkp9P4livdy5B0bvj9o7ftoqKmXEr9cZv4TZLncs,107
|
|
13
|
-
idun_agent_engine/agent/langgraph/langgraph.py,sha256=cbVrUs74a0p6omypMHWO3-1uqGLtJdiyAMrCheQHF5w,22966
|
|
14
|
-
idun_agent_engine/core/__init__.py,sha256=F0DMDlWcSWS_1dvh3xMbrdcVvZRHVnoAFFgREuSJfBI,408
|
|
15
|
-
idun_agent_engine/core/app_factory.py,sha256=2w4o7wV8FQCZdBTk3W7cS0vnmpUM_TdAmphFKHbL31w,2597
|
|
16
|
-
idun_agent_engine/core/config_builder.py,sha256=oTWzdaYARZUGvVKVznMZT7pPRKKbCKQuXkCTno0Xn-8,25757
|
|
17
|
-
idun_agent_engine/core/engine_config.py,sha256=IR8WhbenDstNSL7ORrUW8AnzgS3exFQxtwip66pFhcM,545
|
|
18
|
-
idun_agent_engine/core/server_runner.py,sha256=DwN5kHiKVvUJLw5iSkaxs2rKRaMgOwSUZmeUPSuDbf8,4899
|
|
19
|
-
idun_agent_engine/guardrails/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
-
idun_agent_engine/guardrails/base.py,sha256=rvi7gcuKK8-3GtGicWzMWYsKKv0g3LjGBI-FycxgKVU,814
|
|
21
|
-
idun_agent_engine/guardrails/guardrails_hub/__init__.py,sha256=MwWdgrM1dNzKwuS9ZEFw5Cin91JXh2PYlMma8yZFO7o,123
|
|
22
|
-
idun_agent_engine/guardrails/guardrails_hub/guardrails_hub.py,sha256=DgcUIDy9_bcVcpYVvDJowFe_QVlCpEkr8hntPRgRmS0,3456
|
|
23
|
-
idun_agent_engine/guardrails/guardrails_hub/utils.py,sha256=bC6-MsCVF7xKTr48z7OzJJUeWvqAB7BiHeNTiKsme70,20
|
|
24
|
-
idun_agent_engine/mcp/__init__.py,sha256=ygChpEQ4MzMpEifW3szi5kNiLIMhOhJEtqxy0nmewDU,501
|
|
25
|
-
idun_agent_engine/mcp/helpers.py,sha256=KYYAi9VxX6mRvw70ZiN_6rUz2fMt_KMn3-vUFoa6GC0,5084
|
|
26
|
-
idun_agent_engine/mcp/registry.py,sha256=8zt9o8MZmYKx55xb0E7n-qOCR_3m2-XGf7ToQEwHkTU,4229
|
|
27
|
-
idun_agent_engine/observability/__init__.py,sha256=DCtK6b3xiX4dh0_8GBDOcSXQdcIJz2wTqqPa_ZFAES4,430
|
|
28
|
-
idun_agent_engine/observability/base.py,sha256=C6mY_ZafDEHkMz8_ZeaEh--pyYuzJYEUqhoJ0sVP2wY,5570
|
|
29
|
-
idun_agent_engine/observability/gcp_logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
idun_agent_engine/observability/gcp_logging/gcp_logging_handler.py,sha256=cMUKfukmSZhIdO2v5oWkqI2_c6umtYqlhzflnOeoq6A,1685
|
|
31
|
-
idun_agent_engine/observability/gcp_trace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
|
-
idun_agent_engine/observability/gcp_trace/gcp_trace_handler.py,sha256=YBlUqUwPuOPi0yDNEy9x_g52nJBlSe9a0EEHDIHIr68,3898
|
|
33
|
-
idun_agent_engine/observability/langfuse/__init__.py,sha256=J8XcHV4aT1pF97k5EZiqrnYYPs9VjwfV5rUMihc5Pgk,128
|
|
34
|
-
idun_agent_engine/observability/langfuse/langfuse_handler.py,sha256=RP9MXiYDRe7zWTmZmzQBn6AjRn0y8jrBnWOaUUaMxNA,2795
|
|
35
|
-
idun_agent_engine/observability/phoenix/__init__.py,sha256=tEwJYijcvSGNhFW4QJmvBcTu1D0YVJkZRTmkNCGTteM,130
|
|
36
|
-
idun_agent_engine/observability/phoenix/phoenix_handler.py,sha256=lGqSq-L1vmoEhAr9rbWO3KlNX5HSgBhCKESHMdZ-AfY,2539
|
|
37
|
-
idun_agent_engine/observability/phoenix_local/__init__.py,sha256=m9dIw1GWGKAW4wP08jxA7j4yrOg0Nxq_08bwVh8YogE,146
|
|
38
|
-
idun_agent_engine/observability/phoenix_local/phoenix_local_handler.py,sha256=wjOZuMpAxdD5D33rzxycNEzFMunETpPnYjiHjbjz5GA,4252
|
|
39
|
-
idun_agent_engine/server/__init__.py,sha256=WaFektUsy37bNg2niAUy_TykzStukgWPnxC-t49CEwo,177
|
|
40
|
-
idun_agent_engine/server/dependencies.py,sha256=MVH8STOQ8wu-iYE_28y5dvw5FGT5PX0uQl0ldkpxw6Y,2080
|
|
41
|
-
idun_agent_engine/server/lifespan.py,sha256=pTPZ36R4jlx1jq249kpj4DEe-opIGYiRNUHncKlnuGs,4670
|
|
42
|
-
idun_agent_engine/server/server_config.py,sha256=RYA7Y0c5aRw_WXaX8svFUIEtTPqzn3o-WQRm2p52C6g,213
|
|
43
|
-
idun_agent_engine/server/routers/__init__.py,sha256=BgNzSVvHtGPGn5zhXhomwpKlDYBkeFi7xCbdcWVOgc8,102
|
|
44
|
-
idun_agent_engine/server/routers/agent.py,sha256=qLaVRKgMIu-YfOi-tPEzLNRZKZ4DaZEQ8KQ-4HrWbbY,9194
|
|
45
|
-
idun_agent_engine/server/routers/agui.py,sha256=Z1G4fuo57MazQWfp7ao8QZ1or2H9BXLS_JB1nFPXAkE,1891
|
|
46
|
-
idun_agent_engine/server/routers/base.py,sha256=wICOXCokCIRjmHuDPDTWqeXqOVPes1CtDtiR_HvtsF0,3756
|
|
47
|
-
idun_agent_engine/telemetry/__init__.py,sha256=oYmmgUYvuwM-eV1qBeTgy6HoG6H3LC_S4fMH04QiMWY,519
|
|
48
|
-
idun_agent_engine/telemetry/config.py,sha256=APSmZWocwSqB1xSxoZkJrSTZnWlBiQdif4whdXi8uBE,845
|
|
49
|
-
idun_agent_engine/telemetry/telemetry.py,sha256=g14ouZnSIV85A58HeAH5IlJ_IDKO_uYo7kFbWRo5PpI,7319
|
|
50
|
-
idun_agent_engine/templates/__init__.py,sha256=xxbJZXaX6VEm_UrqzAOQcuujpEji5yqYzwQfwiqig8o,31
|
|
51
|
-
idun_agent_engine/templates/correction.py,sha256=qApH4W99K31maxNrGf0hPVe_Wd4xjYjJrEKlu7PbRpw,1823
|
|
52
|
-
idun_agent_engine/templates/deep_research.py,sha256=j4WypBkBz7V3EG-U8vawfNXDNhcCf2QiEK0veI4M68s,1077
|
|
53
|
-
idun_agent_engine/templates/translation.py,sha256=vjp1yEyhDMFO4nEbq5WG7LAA7nLrhVAjznOkV7ob_Ss,2149
|
|
54
|
-
idun_platform_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
-
idun_platform_cli/main.py,sha256=B7b1x0kgfuiAWGmSCFJeu_zkWiodJjOGu0nWuNAWM-k,299
|
|
56
|
-
idun_platform_cli/groups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
-
idun_platform_cli/groups/init.py,sha256=gQo_khZf-arvsG51bdwFXQyfaKvIBFaK9v5KU21AeDo,692
|
|
58
|
-
idun_platform_cli/groups/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
|
-
idun_platform_cli/groups/agent/main.py,sha256=QMGQi3JZ76SeFI3miIjVWpMt0L-hGz5FwxtTPQX4-Uw,301
|
|
60
|
-
idun_platform_cli/groups/agent/package.py,sha256=LdIFAcfrlUcCssmSliYQIi0NFMuVkpx6t8WhMHATan8,2525
|
|
61
|
-
idun_platform_cli/groups/agent/serve.py,sha256=2AbL0G1WqR33jlyiGaNvAoPZ3G1o52KYUptz_HaAjIg,3863
|
|
62
|
-
idun_platform_cli/tui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
-
idun_platform_cli/tui/main.py,sha256=QO63okOX7s91r5JDA5mVjvmHuDSY9IArO6GQRaDYxCk,3083
|
|
64
|
-
idun_platform_cli/tui/css/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
-
idun_platform_cli/tui/css/create_agent.py,sha256=SxqNhB-sEbBcq9B_X4fktyhi31DJgJj61ymR4s0i9PE,12264
|
|
66
|
-
idun_platform_cli/tui/css/main.py,sha256=9ii_dobgiz2DNdFhOC6VZSRNrRybI1a6ZykXrVqn7A4,1185
|
|
67
|
-
idun_platform_cli/tui/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
-
idun_platform_cli/tui/schemas/create_agent.py,sha256=2jsZ5v1sZLKmypgimdVoeVjd-wOylTE3IUYPw63eb8Y,1512
|
|
69
|
-
idun_platform_cli/tui/screens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
-
idun_platform_cli/tui/screens/create_agent.py,sha256=mtuN7HtQvwloiDZVIp9olJnEA9qHBmQPy-6YdiFXkaE,18332
|
|
71
|
-
idun_platform_cli/tui/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
|
-
idun_platform_cli/tui/utils/config.py,sha256=An-pfUiD-sYQ12QLiE_M0NHAcpBCYo4TnxUbAmqodIA,6316
|
|
73
|
-
idun_platform_cli/tui/validators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
|
-
idun_platform_cli/tui/validators/guardrails.py,sha256=XIDzouBtNo63ppyGFMx9lcRHquxOvhY67ouJpF01u50,2894
|
|
75
|
-
idun_platform_cli/tui/validators/mcps.py,sha256=oDxbxt7qOzsW8yjd_fwBnlDPOSxPqCXqbF5q8eEYRVQ,2852
|
|
76
|
-
idun_platform_cli/tui/validators/observability.py,sha256=IWNuJg42eZUxjV-7v12kms7DpJsAs3FSSD5zLU5eKUc,2436
|
|
77
|
-
idun_platform_cli/tui/widgets/__init__.py,sha256=d0tv94kZiFO6u7Rm8qvAXp5njDZqeVa7WfdU3A1GRdo,407
|
|
78
|
-
idun_platform_cli/tui/widgets/guardrails_widget.py,sha256=ZYnvdDiUkOcAAp8gcR8ThpL8wVeAlmQrhPj5j-gUdOw,14299
|
|
79
|
-
idun_platform_cli/tui/widgets/identity_widget.py,sha256=JWwfE4Dedv7F6r40tGnscHh8oevUr-_a-k5hZlXKvVg,8840
|
|
80
|
-
idun_platform_cli/tui/widgets/mcps_widget.py,sha256=x2IS0SKIX6sfM5yBXW2d_arxWnwuaTEKUfYMTK-hZHw,10958
|
|
81
|
-
idun_platform_cli/tui/widgets/observability_widget.py,sha256=Q2_vP7oC5LXznFUjMpse_1dLorrfGtbL11rhpEQOY8c,15064
|
|
82
|
-
idun_platform_cli/tui/widgets/serve_widget.py,sha256=B2wK16AHo8BP-igZ0MJWhdCzuILvTzT0zn8PSJ_Szvc,2950
|
|
83
|
-
idun_agent_engine-0.4.0.dist-info/METADATA,sha256=8PJDB-q0o90J46WfpMOrp13U9W-uJOeOYga1z2ZBeKA,10870
|
|
84
|
-
idun_agent_engine-0.4.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
85
|
-
idun_agent_engine-0.4.0.dist-info/entry_points.txt,sha256=XG3oxlSOaCrYKT1oyhKa0Ag1iJPMZ-WF6gaV_mzIJW4,52
|
|
86
|
-
idun_agent_engine-0.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|