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.
Files changed (123) hide show
  1. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/PKG-INFO +1 -1
  2. dtspark-1.1.0a2/src/dtSpark/_version.txt +1 -0
  3. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/core/application.py +0 -28
  4. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/tools/builtin.py +18 -0
  5. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/PKG-INFO +1 -1
  6. dtspark-1.1.0a1/src/dtSpark/_version.txt +0 -1
  7. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/LICENSE +0 -0
  8. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/MANIFEST.in +0 -0
  9. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/README.md +0 -0
  10. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/pyproject.toml +0 -0
  11. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/setup.cfg +0 -0
  12. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/setup.py +0 -0
  13. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/__init__.py +0 -0
  14. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_description.txt +0 -0
  15. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_full_name.txt +0 -0
  16. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_licence.txt +0 -0
  17. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_metadata.yaml +0 -0
  18. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/_name.txt +0 -0
  19. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/__init__.py +0 -0
  20. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/authentication.py +0 -0
  21. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/bedrock.py +0 -0
  22. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/costs.py +0 -0
  23. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/aws/pricing.py +0 -0
  24. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/cli_interface.py +0 -0
  25. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/conversation_manager.py +0 -0
  26. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/core/__init__.py +0 -0
  27. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/core/context_compaction.py +0 -0
  28. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/__init__.py +0 -0
  29. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/__main__.py +0 -0
  30. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/action_monitor.py +0 -0
  31. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/daemon_app.py +0 -0
  32. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/daemon_manager.py +0 -0
  33. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/execution_coordinator.py +0 -0
  34. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/daemon/pid_file.py +0 -0
  35. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/__init__.py +0 -0
  36. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/autonomous_actions.py +0 -0
  37. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/backends.py +0 -0
  38. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/connection.py +0 -0
  39. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/conversations.py +0 -0
  40. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/credential_prompt.py +0 -0
  41. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/files.py +0 -0
  42. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/mcp_ops.py +0 -0
  43. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/messages.py +0 -0
  44. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/schema.py +0 -0
  45. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/tool_permissions.py +0 -0
  46. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/database/usage.py +0 -0
  47. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/files/__init__.py +0 -0
  48. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/files/manager.py +0 -0
  49. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/launch.py +0 -0
  50. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/limits/__init__.py +0 -0
  51. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/limits/costs.py +0 -0
  52. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/limits/tokens.py +0 -0
  53. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/__init__.py +0 -0
  54. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/anthropic_direct.py +0 -0
  55. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/base.py +0 -0
  56. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/context_limits.py +0 -0
  57. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/manager.py +0 -0
  58. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/llm/ollama.py +0 -0
  59. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/mcp_integration/__init__.py +0 -0
  60. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/mcp_integration/manager.py +0 -0
  61. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/mcp_integration/tool_selector.py +0 -0
  62. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/resources/config.yaml.template +0 -0
  63. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/__init__.py +0 -0
  64. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/llm_service.py +0 -0
  65. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/patterns.py +0 -0
  66. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/prompt_inspector.py +0 -0
  67. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/safety/violation_logger.py +0 -0
  68. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/__init__.py +0 -0
  69. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/creation_tools.py +0 -0
  70. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/execution_queue.py +0 -0
  71. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/executor.py +0 -0
  72. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/scheduler/manager.py +0 -0
  73. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/tools/__init__.py +0 -0
  74. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/__init__.py +0 -0
  75. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/auth.py +0 -0
  76. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/dependencies.py +0 -0
  77. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/__init__.py +0 -0
  78. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/autonomous_actions.py +0 -0
  79. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/chat.py +0 -0
  80. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/conversations.py +0 -0
  81. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/main_menu.py +0 -0
  82. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/endpoints/streaming.py +0 -0
  83. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/server.py +0 -0
  84. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/session.py +0 -0
  85. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/ssl_utils.py +0 -0
  86. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/css/dark-theme.css +0 -0
  87. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/actions.js +0 -0
  88. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/chat.js +0 -0
  89. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/main.js +0 -0
  90. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/static/js/sse-client.js +0 -0
  91. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/actions.html +0 -0
  92. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/base.html +0 -0
  93. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/chat.html +0 -0
  94. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/conversations.html +0 -0
  95. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/goodbye.html +0 -0
  96. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/login.html +0 -0
  97. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/main_menu.html +0 -0
  98. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/templates/new_conversation.html +0 -0
  99. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark/web/web_interface.py +0 -0
  100. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/SOURCES.txt +0 -0
  101. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/dependency_links.txt +0 -0
  102. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/entry_points.txt +0 -0
  103. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/not-zip-safe +0 -0
  104. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/requires.txt +0 -0
  105. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/src/dtSpark.egg-info/top_level.txt +0 -0
  106. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/README.md +0 -0
  107. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/debug_bulk_api.py +0 -0
  108. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/diagnose_aws_costs.py +0 -0
  109. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_builtin_tools.py +0 -0
  110. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_builtin_tools_integration.py +0 -0
  111. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_bulk_pricing.py +0 -0
  112. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_document_archive_tools.py +0 -0
  113. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_filesystem_tools.py +0 -0
  114. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_mcp_server.py +0 -0
  115. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_ollama_context.py +0 -0
  116. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_ollama_conversation.py +0 -0
  117. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_ollama_integration.py +0 -0
  118. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_pricing_integration.py +0 -0
  119. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_prompt_inspection.py +0 -0
  120. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_status_indicator.py +0 -0
  121. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_tool_selector.py +0 -0
  122. {dtspark-1.1.0a1 → dtspark-1.1.0a2}/tests/test_web_auth.py +0 -0
  123. {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.0a1
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.0a1
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