dtSpark 1.1.0a1__tar.gz → 1.1.0a2__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.
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/PKG-INFO +1 -1
- dtspark-1.1.0a2/src/dtSpark/_version.txt +1 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/core/application.py +0 -28
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/tools/builtin.py +18 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/PKG-INFO +1 -1
- dtspark-1.1.0a1/src/dtSpark/_version.txt +0 -1
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/LICENSE +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/MANIFEST.in +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/README.md +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/pyproject.toml +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/setup.cfg +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/setup.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_description.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_full_name.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_licence.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_metadata.yaml +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_name.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/authentication.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/bedrock.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/costs.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/pricing.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/cli_interface.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/conversation_manager.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/core/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/core/context_compaction.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/__main__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/action_monitor.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/daemon_app.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/daemon_manager.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/execution_coordinator.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/pid_file.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/autonomous_actions.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/backends.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/connection.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/conversations.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/credential_prompt.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/files.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/mcp_ops.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/messages.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/schema.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/tool_permissions.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/usage.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/files/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/files/manager.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/launch.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/limits/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/limits/costs.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/limits/tokens.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/anthropic_direct.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/base.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/context_limits.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/manager.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/ollama.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/mcp_integration/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/mcp_integration/manager.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/mcp_integration/tool_selector.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/resources/config.yaml.template +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/llm_service.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/patterns.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/prompt_inspector.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/violation_logger.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/creation_tools.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/execution_queue.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/executor.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/manager.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/tools/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/auth.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/dependencies.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/__init__.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/autonomous_actions.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/chat.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/conversations.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/main_menu.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/streaming.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/server.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/session.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/ssl_utils.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/css/dark-theme.css +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/actions.js +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/chat.js +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/main.js +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/sse-client.js +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/actions.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/base.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/chat.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/conversations.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/goodbye.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/login.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/main_menu.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/new_conversation.html +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/web_interface.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/SOURCES.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/dependency_links.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/entry_points.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/not-zip-safe +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/requires.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/top_level.txt +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/README.md +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/debug_bulk_api.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/diagnose_aws_costs.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_builtin_tools.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_builtin_tools_integration.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_bulk_pricing.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_document_archive_tools.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_filesystem_tools.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_mcp_server.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_ollama_context.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_ollama_conversation.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_ollama_integration.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_pricing_integration.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_prompt_inspection.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_status_indicator.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_tool_selector.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_web_auth.py +0 -0
- {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_web_session.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dtSpark
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.0a2
|
|
4
4
|
Summary: Secure Personal AI Research Kit - Multi-provider LLM CLI/Web interface with MCP tool integration
|
|
5
5
|
Home-page: https://github.com/digital-thought/dtSpark
|
|
6
6
|
Author: Matthew Westwood-Hill
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.1.0a2
|
|
@@ -328,34 +328,6 @@ class AWSBedrockCLI(AbstractApp):
|
|
|
328
328
|
|
|
329
329
|
logging.info('Initialising application components')
|
|
330
330
|
|
|
331
|
-
# Debug: Diagnose settings loading for llm_providers
|
|
332
|
-
# Try different access patterns to understand how Settings class works
|
|
333
|
-
logging.info("=== Settings Diagnostics ===")
|
|
334
|
-
|
|
335
|
-
# Try accessing the whole llm_providers section
|
|
336
|
-
llm_providers_raw = self.settings.get('llm_providers', None)
|
|
337
|
-
logging.info(f"settings.get('llm_providers'): {llm_providers_raw} (type: {type(llm_providers_raw).__name__ if llm_providers_raw else 'None'})")
|
|
338
|
-
|
|
339
|
-
# Try accessing aws_bedrock under llm_providers
|
|
340
|
-
aws_bedrock_raw = self.settings.get('llm_providers.aws_bedrock', None)
|
|
341
|
-
logging.info(f"settings.get('llm_providers.aws_bedrock'): {aws_bedrock_raw} (type: {type(aws_bedrock_raw).__name__ if aws_bedrock_raw else 'None'})")
|
|
342
|
-
|
|
343
|
-
# If llm_providers is a dict, try to access nested values directly
|
|
344
|
-
if isinstance(llm_providers_raw, dict):
|
|
345
|
-
logging.info(f"llm_providers keys: {list(llm_providers_raw.keys())}")
|
|
346
|
-
aws_bedrock_dict = llm_providers_raw.get('aws_bedrock', {})
|
|
347
|
-
logging.info(f"llm_providers['aws_bedrock']: {aws_bedrock_dict}")
|
|
348
|
-
if isinstance(aws_bedrock_dict, dict):
|
|
349
|
-
logging.info(f"aws_bedrock['enabled']: {aws_bedrock_dict.get('enabled', 'NOT_FOUND')}")
|
|
350
|
-
|
|
351
|
-
# Check if settings has a _settings or similar internal dict
|
|
352
|
-
if hasattr(self.settings, '_settings'):
|
|
353
|
-
logging.info(f"settings._settings type: {type(self.settings._settings)}")
|
|
354
|
-
if hasattr(self.settings, 'settings'):
|
|
355
|
-
logging.info(f"settings.settings type: {type(self.settings.settings)}")
|
|
356
|
-
|
|
357
|
-
logging.info("=== End Settings Diagnostics ===")
|
|
358
|
-
|
|
359
331
|
# Initialise CLI interface
|
|
360
332
|
self.cli = CLIInterface()
|
|
361
333
|
|
|
@@ -1630,6 +1630,17 @@ def _execute_create_word_document(tool_input: Dict[str, Any],
|
|
|
1630
1630
|
if content.get('title'):
|
|
1631
1631
|
doc.add_heading(content['title'], 0)
|
|
1632
1632
|
|
|
1633
|
+
# Define valid built-in styles that python-docx supports
|
|
1634
|
+
valid_styles = {
|
|
1635
|
+
'Normal', 'Title', 'Subtitle', 'Quote', 'Intense Quote',
|
|
1636
|
+
'List Paragraph', 'List Bullet', 'List Number',
|
|
1637
|
+
'Heading 1', 'Heading 2', 'Heading 3', 'Heading 4',
|
|
1638
|
+
'Heading 5', 'Heading 6', 'Heading 7', 'Heading 8', 'Heading 9',
|
|
1639
|
+
'Body Text', 'Body Text 2', 'Body Text 3',
|
|
1640
|
+
'Caption', 'Macro Text', 'No Spacing'
|
|
1641
|
+
}
|
|
1642
|
+
invalid_styles_used = set()
|
|
1643
|
+
|
|
1633
1644
|
# Add paragraphs
|
|
1634
1645
|
for para_data in content.get('paragraphs', []):
|
|
1635
1646
|
text = para_data.get('text', '')
|
|
@@ -1638,8 +1649,15 @@ def _execute_create_word_document(tool_input: Dict[str, Any],
|
|
|
1638
1649
|
level = int(style.split()[-1]) if style.split()[-1].isdigit() else 1
|
|
1639
1650
|
doc.add_heading(text, level)
|
|
1640
1651
|
else:
|
|
1652
|
+
# Validate style - fall back to Normal if invalid
|
|
1653
|
+
if style not in valid_styles:
|
|
1654
|
+
invalid_styles_used.add(style)
|
|
1655
|
+
style = 'Normal'
|
|
1641
1656
|
doc.add_paragraph(text, style=style)
|
|
1642
1657
|
|
|
1658
|
+
if invalid_styles_used:
|
|
1659
|
+
logging.warning(f"Invalid styles replaced with 'Normal': {', '.join(sorted(invalid_styles_used))}")
|
|
1660
|
+
|
|
1643
1661
|
doc.save(str(full_path))
|
|
1644
1662
|
|
|
1645
1663
|
result = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dtSpark
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.0a2
|
|
4
4
|
Summary: Secure Personal AI Research Kit - Multi-provider LLM CLI/Web interface with MCP tool integration
|
|
5
5
|
Home-page: https://github.com/digital-thought/dtSpark
|
|
6
6
|
Author: Matthew Westwood-Hill
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.1.0a1
|
|
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
|