Skip to content
This repository was archived by the owner on Apr 18, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 1 addition & 31 deletions packages/soliplex_agent/lib/soliplex_agent.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,38 +5,8 @@
/// `soliplex_logging` — no Flutter imports allowed.
library;

// Re-export signal types for consumers.
// Re-export signal types used in public API (sessions expose ReadonlySignal).
export 'package:signals_core/signals_core.dart' show ReadonlySignal, Signal;
// Re-export domain types and AG-UI events. Consumers who need HTTP plumbing
// (SoliplexApi, AgUiStreamClient, DartHttpClient, etc.) import soliplex_client
// directly.
export 'package:soliplex_client/soliplex_client.dart'
hide
AuthenticatedHttpClient,
DartHttpClient,
HttpErrorEvent,
HttpEvent,
HttpObserver,
HttpRequestEvent,
HttpResponse,
HttpResponseEvent,
HttpStreamEndEvent,
HttpStreamStartEvent,
HttpTransport,
ObservableHttpClient,
OidcDiscoveryDocument,
RefreshingHttpClient,
SoliplexApi,
SoliplexHttpClient,
TokenRefreshFailure,
TokenRefreshResult,
TokenRefreshService,
TokenRefreshSuccess,
TokenRefresher,
UrlBuilder,
convertToAgui,
defaultHttpTimeout,
fetchAuthProviders;

// ── Host API ──
export 'src/host/agent_api.dart';
Expand Down
7 changes: 3 additions & 4 deletions packages/soliplex_agent/lib/src/runtime/agent_runtime.dart
Original file line number Diff line number Diff line change
Expand Up @@ -155,11 +155,10 @@ class AgentRuntime {
);
} on Object {
parent?.removeChild(session);
_removeSession(session);
if (ephemeral) {
await _deleteThreadSafe(key);
}
session.dispose();
session.dispose(); // onDispose callback handles _removeSession.
rethrow;
}
_scheduleCompletion(session, timeout, autoDispose: autoDispose);
Expand Down Expand Up @@ -309,6 +308,7 @@ class AgentRuntime {
extensions: extensions,
uiDelegate: _uiDelegate,
logger: _logger,
onDispose: _removeSession,
);
}

Expand Down Expand Up @@ -383,8 +383,7 @@ class AgentRuntime {
if (session.ephemeral) {
await _deleteThreadSafe(session.threadKey);
}
session.dispose();
_removeSession(session);
session.dispose(); // onDispose callback handles _removeSession.
}

// ---------------------------------------------------------------------------
Expand Down
4 changes: 4 additions & 0 deletions packages/soliplex_agent/lib/src/runtime/agent_session.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,14 @@ class AgentSession implements ToolExecutionContext {
required Logger logger,
List<SessionExtension> extensions = const [],
AgentUiDelegate? uiDelegate,
void Function(AgentSession)? onDispose,
}) : _runtime = runtime,
_orchestrator = orchestrator,
_toolRegistry = toolRegistry,
_extensions = extensions,
_uiDelegate = uiDelegate,
_logger = logger,
_onDispose = onDispose,
id = '${threadKey.threadId}-'
'${DateTime.now().microsecondsSinceEpoch}';

Expand All @@ -71,6 +73,7 @@ class AgentSession implements ToolExecutionContext {
final List<SessionExtension> _extensions;
final AgentUiDelegate? _uiDelegate;
final Logger _logger;
final void Function(AgentSession)? _onDispose;

static const _toolTimeout = Duration(seconds: 60);

Expand Down Expand Up @@ -285,6 +288,7 @@ class AgentSession implements ToolExecutionContext {
_runStateSignal.dispose();
_sessionStateSignal.dispose();
_executionEventSignal.dispose();
_onDispose?.call(this);
}

// ---------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';

/// Test double for [ToolExecutionContext].
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
import 'dart:io';

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show
AgUiStreamClient,
DartHttpClient,
HttpTransport,
SoliplexApi,
UrlBuilder;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
11 changes: 1 addition & 10 deletions packages/soliplex_agent/test/integration/verbose_agui_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,7 @@ library;
import 'dart:io';

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show
DartHttpClient,
HttpErrorEvent,
HttpObserver,
HttpRequestEvent,
HttpResponseEvent,
HttpStreamEndEvent,
HttpStreamStartEvent,
ObservableHttpClient;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

void main() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

void main() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

void main() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

const ThreadKey _key = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:async';

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_completions/soliplex_completions.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ library;
import 'dart:convert';

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

import '../integration/helpers/helpers.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
library;

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

import '../integration/helpers/helpers.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
3 changes: 1 addition & 2 deletions packages/soliplex_agent/test/runtime/agent_runtime_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
3 changes: 1 addition & 2 deletions packages/soliplex_agent/test/runtime/agent_session_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi, SoliplexHttpClient;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

class MockSoliplexApi extends Mock implements SoliplexApi {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

class MockSoliplexApi extends Mock implements SoliplexApi {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import 'dart:async';

import 'package:mocktail/mocktail.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show AgUiStreamClient, SoliplexApi;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:test/test.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

// ---------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:convert';

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

import '../helpers/fake_tool_execution_context.dart';
Expand Down
1 change: 1 addition & 0 deletions packages/soliplex_agent/test/tools/tool_registry_test.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

import '../helpers/fake_tool_execution_context.dart';
Expand Down
1 change: 1 addition & 0 deletions packages/soliplex_cli/lib/src/tool_definitions.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:convert';

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';

/// All demo tools available in the CLI.
///
Expand Down
1 change: 1 addition & 0 deletions packages/soliplex_cli/test/src/tool_definitions_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:convert';

import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_cli/src/tool_definitions.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:test/test.dart';

/// Minimal [ToolExecutionContext] for test-only use.
Expand Down
3 changes: 1 addition & 2 deletions packages/soliplex_tui/lib/src/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import 'package:meta/meta.dart';
import 'package:nocterm/nocterm.dart';
import 'package:signals_core/signals_core.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart'
show DartHttpClient, SoliplexApi, ThreadHistory, ToolCallInfo;
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_completions/soliplex_completions.dart';
import 'package:soliplex_logging/soliplex_logging.dart';
import 'package:soliplex_mcp/soliplex_mcp.dart';
Expand Down
1 change: 1 addition & 0 deletions packages/soliplex_tui/lib/src/chat_session_view.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:signals_core/signals_core.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';
import 'package:soliplex_tui/src/loggers.dart';
import 'package:soliplex_tui/src/services/tui_ui_delegate.dart';

Expand Down
1 change: 1 addition & 0 deletions packages/soliplex_tui/lib/src/components/chat_body.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:nocterm/nocterm.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';

import 'package:soliplex_tui/src/components/message_item.dart';
import 'package:soliplex_tui/src/signal_builder.dart';
Expand Down
2 changes: 1 addition & 1 deletion packages/soliplex_tui/lib/src/components/chat_page.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:nocterm/nocterm.dart';
import 'package:soliplex_agent/soliplex_agent.dart' hide State;
import 'package:soliplex_agent/soliplex_agent.dart';

import 'package:soliplex_tui/src/chat_session_view.dart';
import 'package:soliplex_tui/src/components/chat_body.dart';
Expand Down
2 changes: 1 addition & 1 deletion packages/soliplex_tui/lib/src/components/message_item.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:nocterm/nocterm.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';

/// Renders a single chat message based on its subtype.
class MessageItem extends StatelessComponent {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:nocterm/nocterm.dart';
import 'package:soliplex_agent/soliplex_agent.dart' hide State;
import 'package:soliplex_agent/soliplex_agent.dart';

import 'package:soliplex_tui/src/signal_builder.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:nocterm/nocterm.dart';
import 'package:soliplex_agent/soliplex_agent.dart';
import 'package:soliplex_client/soliplex_client.dart';

/// Status bar shown while client-side tools are executing.
class ToolStatusBar extends StatelessComponent {
Expand Down
Loading
Loading