connectonion 0.5.6__tar.gz → 0.5.8__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 (131) hide show
  1. {connectonion-0.5.6 → connectonion-0.5.8}/PKG-INFO +1 -1
  2. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/__init__.py +1 -1
  3. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/asgi.py +20 -4
  4. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/static/docs.html +97 -0
  5. {connectonion-0.5.6 → connectonion-0.5.8}/pyproject.toml +1 -1
  6. {connectonion-0.5.6 → connectonion-0.5.8}/.gitignore +0 -0
  7. {connectonion-0.5.6 → connectonion-0.5.8}/README.md +0 -0
  8. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/address.py +0 -0
  9. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/agent.py +0 -0
  10. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/announce.py +0 -0
  11. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/auto_debug_exception.py +0 -0
  12. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/__init__.py +0 -0
  13. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/browser_agent/__init__.py +0 -0
  14. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/browser_agent/browser.py +0 -0
  15. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/browser_agent/prompt.md +0 -0
  16. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/__init__.py +0 -0
  17. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/auth_commands.py +0 -0
  18. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/browser_commands.py +0 -0
  19. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/create.py +0 -0
  20. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/deploy_commands.py +0 -0
  21. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/doctor_commands.py +0 -0
  22. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/init.py +0 -0
  23. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/project_cmd_lib.py +0 -0
  24. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/reset_commands.py +0 -0
  25. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/commands/status_commands.py +0 -0
  26. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/docs/co-vibecoding-principles-docs-contexts-all-in-one.md +0 -0
  27. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/docs/connectonion.md +0 -0
  28. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/docs.md +0 -0
  29. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/main.py +0 -0
  30. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/meta-agent/README.md +0 -0
  31. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/meta-agent/agent.py +0 -0
  32. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/meta-agent/prompts/answer_prompt.md +0 -0
  33. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/meta-agent/prompts/docs_retrieve_prompt.md +0 -0
  34. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/meta-agent/prompts/metagent.md +0 -0
  35. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/meta-agent/prompts/think_prompt.md +0 -0
  36. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/minimal/README.md +0 -0
  37. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/minimal/agent.py +0 -0
  38. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/playwright/README.md +0 -0
  39. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/playwright/agent.py +0 -0
  40. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/playwright/prompt.md +0 -0
  41. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/playwright/requirements.txt +0 -0
  42. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/cli/templates/web-research/agent.py +0 -0
  43. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/connect.py +0 -0
  44. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/console.py +0 -0
  45. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_agent/__init__.py +0 -0
  46. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_agent/agent.py +0 -0
  47. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_agent/prompts/debug_assistant.md +0 -0
  48. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_agent/runtime_inspector.py +0 -0
  49. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_explainer/__init__.py +0 -0
  50. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_explainer/explain_agent.py +0 -0
  51. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_explainer/explain_context.py +0 -0
  52. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_explainer/explainer_prompt.md +0 -0
  53. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debug_explainer/root_cause_analysis_prompt.md +0 -0
  54. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/debugger_ui.py +0 -0
  55. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/decorators.py +0 -0
  56. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/events.py +0 -0
  57. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/execution_analyzer/__init__.py +0 -0
  58. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/execution_analyzer/execution_analysis.py +0 -0
  59. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/execution_analyzer/execution_analysis_prompt.md +0 -0
  60. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/host.py +0 -0
  61. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/interactive_debugger.py +0 -0
  62. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/llm.py +0 -0
  63. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/llm_do.py +0 -0
  64. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/logger.py +0 -0
  65. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/prompt_files/__init__.py +0 -0
  66. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/prompt_files/analyze_contact.md +0 -0
  67. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/prompt_files/eval_expected.md +0 -0
  68. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/prompt_files/react_evaluate.md +0 -0
  69. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/prompt_files/react_plan.md +0 -0
  70. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/prompt_files/reflect.md +0 -0
  71. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/prompts.py +0 -0
  72. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/relay.py +0 -0
  73. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tool_executor.py +0 -0
  74. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tool_factory.py +0 -0
  75. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tool_registry.py +0 -0
  76. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/trust.py +0 -0
  77. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/trust_agents.py +0 -0
  78. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/trust_functions.py +0 -0
  79. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/__init__.py +0 -0
  80. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/divider.py +0 -0
  81. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/dropdown.py +0 -0
  82. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/footer.py +0 -0
  83. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/fuzzy.py +0 -0
  84. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/input.py +0 -0
  85. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/keys.py +0 -0
  86. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/pick.py +0 -0
  87. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/providers.py +0 -0
  88. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/tui/status_bar.py +0 -0
  89. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/usage.py +0 -0
  90. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_events_handlers/__init__.py +0 -0
  91. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_events_handlers/reflect.py +0 -0
  92. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_plugins/__init__.py +0 -0
  93. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_plugins/calendar_plugin.py +0 -0
  94. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_plugins/eval.py +0 -0
  95. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_plugins/gmail_plugin.py +0 -0
  96. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_plugins/image_result_formatter.py +0 -0
  97. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_plugins/re_act.py +0 -0
  98. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_plugins/shell_approval.py +0 -0
  99. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/__init__.py +0 -0
  100. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/diff_writer.py +0 -0
  101. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/get_emails.py +0 -0
  102. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/gmail.py +0 -0
  103. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/google_calendar.py +0 -0
  104. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/memory.py +0 -0
  105. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/microsoft_calendar.py +0 -0
  106. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/outlook.py +0 -0
  107. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/send_email.py +0 -0
  108. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/shell.py +0 -0
  109. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/slash_command.py +0 -0
  110. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/terminal.py +0 -0
  111. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/todo_list.py +0 -0
  112. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/useful_tools/web_fetch.py +0 -0
  113. {connectonion-0.5.6 → connectonion-0.5.8}/connectonion/xray.py +0 -0
  114. {connectonion-0.5.6 → connectonion-0.5.8}/docs/README.md +0 -0
  115. {connectonion-0.5.6 → connectonion-0.5.8}/docs/cli/README.md +0 -0
  116. {connectonion-0.5.6 → connectonion-0.5.8}/docs/debug/README.md +0 -0
  117. {connectonion-0.5.6 → connectonion-0.5.8}/docs/integrations/README.md +0 -0
  118. {connectonion-0.5.6 → connectonion-0.5.8}/docs/network/README.md +0 -0
  119. {connectonion-0.5.6 → connectonion-0.5.8}/docs/templates/README.md +0 -0
  120. {connectonion-0.5.6 → connectonion-0.5.8}/docs/tui/README.md +0 -0
  121. {connectonion-0.5.6 → connectonion-0.5.8}/docs/useful_plugins/README.md +0 -0
  122. {connectonion-0.5.6 → connectonion-0.5.8}/docs/useful_tools/README.md +0 -0
  123. {connectonion-0.5.6 → connectonion-0.5.8}/examples/README.md +0 -0
  124. {connectonion-0.5.6 → connectonion-0.5.8}/examples/browser-agent/README.md +0 -0
  125. {connectonion-0.5.6 → connectonion-0.5.8}/examples/email-agent/README.md +0 -0
  126. {connectonion-0.5.6 → connectonion-0.5.8}/examples/simple-agent/README.md +0 -0
  127. {connectonion-0.5.6 → connectonion-0.5.8}/prompts/README.md +0 -0
  128. {connectonion-0.5.6 → connectonion-0.5.8}/prompts/formats/README.md +0 -0
  129. {connectonion-0.5.6 → connectonion-0.5.8}/tests/README.md +0 -0
  130. {connectonion-0.5.6 → connectonion-0.5.8}/tests/cli/README.md +0 -0
  131. {connectonion-0.5.6 → connectonion-0.5.8}/tests/cli/aws/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: connectonion
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: A simple Python framework for creating AI agents with behavior tracking
5
5
  Project-URL: Homepage, https://github.com/openonion/connectonion
6
6
  Project-URL: Documentation, https://docs.connectonion.com
@@ -1,6 +1,6 @@
1
1
  """ConnectOnion - A simple agent framework with behavior tracking."""
2
2
 
3
- __version__ = "0.5.6"
3
+ __version__ = "0.5.8"
4
4
 
5
5
  # Auto-load .env files for the entire framework
6
6
  from dotenv import load_dotenv
@@ -36,11 +36,20 @@ async def read_body(receive) -> bytes:
36
36
  return body
37
37
 
38
38
 
39
+ # CORS headers for cross-origin requests (e.g., frontend at o.openonion.ai
40
+ # calling deployed agents at *.agents.openonion.ai)
41
+ CORS_HEADERS = [
42
+ [b"access-control-allow-origin", b"*"],
43
+ [b"access-control-allow-methods", b"GET, POST, OPTIONS"],
44
+ [b"access-control-allow-headers", b"authorization, content-type"],
45
+ ]
46
+
47
+
39
48
  async def send_json(send, data: dict, status: int = 200):
40
49
  """Send JSON response via ASGI send."""
41
50
  body = json.dumps(data, default=_json_default).encode()
42
- await send({"type": "http.response.start", "status": status,
43
- "headers": [[b"content-type", b"application/json"]]})
51
+ headers = [[b"content-type", b"application/json"]] + CORS_HEADERS
52
+ await send({"type": "http.response.start", "status": status, "headers": headers})
44
53
  await send({"type": "http.response.body", "body": body})
45
54
 
46
55
 
@@ -56,8 +65,8 @@ async def send_html(send, html: bytes, status: int = 200):
56
65
 
57
66
  async def send_text(send, text: str, status: int = 200):
58
67
  """Send plain text response via ASGI send."""
59
- await send({"type": "http.response.start", "status": status,
60
- "headers": [[b"content-type", b"text/plain; charset=utf-8"]]})
68
+ headers = [[b"content-type", b"text/plain; charset=utf-8"]] + CORS_HEADERS
69
+ await send({"type": "http.response.start", "status": status, "headers": headers})
61
70
  await send({"type": "http.response.body", "body": text.encode()})
62
71
 
63
72
 
@@ -90,6 +99,13 @@ async def handle_http(
90
99
  """
91
100
  method, path = scope["method"], scope["path"]
92
101
 
102
+ # Handle CORS preflight requests
103
+ if method == "OPTIONS":
104
+ headers = CORS_HEADERS + [[b"content-length", b"0"]]
105
+ await send({"type": "http.response.start", "status": 204, "headers": headers})
106
+ await send({"type": "http.response.body", "body": b""})
107
+ return
108
+
93
109
  # Admin endpoints require API key auth
94
110
  if path.startswith("/admin"):
95
111
  headers = dict(scope.get("headers", []))
@@ -366,6 +366,70 @@
366
366
  </div>
367
367
  </details>
368
368
 
369
+ <!-- Admin Endpoints Header -->
370
+ <div style="margin:24px 0 12px;padding:12px 16px;background:var(--panel);border:1px solid var(--panel-border);border-radius:4px;">
371
+ <div class="row between">
372
+ <div>
373
+ <h3 style="margin:0;font-size:14px;">Admin Endpoints</h3>
374
+ <p style="margin:4px 0 0;font-size:12px;color:var(--muted);">Requires OPENONION_API_KEY authorization</p>
375
+ </div>
376
+ <div class="row" style="gap:8px;">
377
+ <label for="api-key" style="font-size:12px;margin:0;">API Key:</label>
378
+ <input type="password" id="api-key" placeholder="Enter API key..." style="width:200px;height:36px;font-size:12px;" />
379
+ </div>
380
+ </div>
381
+ </div>
382
+
383
+ <!-- GET /admin/logs -->
384
+ <details class="endpoint">
385
+ <summary class="endpoint-header">
386
+ <span class="method get">GET</span>
387
+ <span class="endpoint-path">/admin/logs</span>
388
+ <span class="endpoint-desc">Get agent activity logs (auth required)</span>
389
+ <span class="endpoint-expand">▾</span>
390
+ </summary>
391
+ <div class="endpoint-body">
392
+ <button class="btn execute" onclick="fetchAdminLogs()">Execute</button>
393
+ <div class="endpoint-section" style="margin-top:12px;">
394
+ <h4>Curl</h4>
395
+ <div class="curl-box">
396
+ <pre id="admin-logs-curl">curl -X GET "http://localhost:8000/admin/logs" \
397
+ -H "Authorization: Bearer YOUR_API_KEY"</pre>
398
+ <button class="copy-btn" onclick="copyCurl('admin-logs-curl')">Copy</button>
399
+ </div>
400
+ </div>
401
+ <div class="endpoint-section">
402
+ <h4>Response</h4>
403
+ <pre id="admin-logs-result" style="max-height:400px;">{ }</pre>
404
+ </div>
405
+ </div>
406
+ </details>
407
+
408
+ <!-- GET /admin/sessions -->
409
+ <details class="endpoint">
410
+ <summary class="endpoint-header">
411
+ <span class="method get">GET</span>
412
+ <span class="endpoint-path">/admin/sessions</span>
413
+ <span class="endpoint-desc">Get all activity sessions (auth required)</span>
414
+ <span class="endpoint-expand">▾</span>
415
+ </summary>
416
+ <div class="endpoint-body">
417
+ <button class="btn execute" onclick="fetchAdminSessions()">Execute</button>
418
+ <div class="endpoint-section" style="margin-top:12px;">
419
+ <h4>Curl</h4>
420
+ <div class="curl-box">
421
+ <pre id="admin-sessions-curl">curl -X GET "http://localhost:8000/admin/sessions" \
422
+ -H "Authorization: Bearer YOUR_API_KEY"</pre>
423
+ <button class="copy-btn" onclick="copyCurl('admin-sessions-curl')">Copy</button>
424
+ </div>
425
+ </div>
426
+ <div class="endpoint-section">
427
+ <h4>Response</h4>
428
+ <pre id="admin-sessions-result" style="max-height:400px;">{ }</pre>
429
+ </div>
430
+ </div>
431
+ </details>
432
+
369
433
  <!-- WebSocket /ws -->
370
434
  <details class="endpoint">
371
435
  <summary class="endpoint-header">
@@ -580,6 +644,39 @@
580
644
  loadInfo(); refreshSessions();
581
645
  }
582
646
 
647
+ async function fetchAdminLogs(){
648
+ const apiKey = $('api-key').value.trim();
649
+ if (!apiKey) {
650
+ $('admin-logs-result').textContent = '{"error": "Please enter API key"}';
651
+ return;
652
+ }
653
+ $('admin-logs-result').textContent = 'Loading...';
654
+ const res = await fetch(buildUrl('/admin/logs'), {
655
+ headers: { 'Authorization': 'Bearer ' + apiKey }
656
+ });
657
+ if (res.ok) {
658
+ const text = await res.text();
659
+ $('admin-logs-result').textContent = text || '(empty)';
660
+ } else {
661
+ const data = await res.json().catch(() => ({ error: res.statusText }));
662
+ $('admin-logs-result').textContent = JSON.stringify(data, null, 2);
663
+ }
664
+ }
665
+
666
+ async function fetchAdminSessions(){
667
+ const apiKey = $('api-key').value.trim();
668
+ if (!apiKey) {
669
+ $('admin-sessions-result').textContent = '{"error": "Please enter API key"}';
670
+ return;
671
+ }
672
+ $('admin-sessions-result').textContent = 'Loading...';
673
+ const res = await fetch(buildUrl('/admin/sessions'), {
674
+ headers: { 'Authorization': 'Bearer ' + apiKey }
675
+ });
676
+ const data = await res.json();
677
+ $('admin-sessions-result').textContent = JSON.stringify(data, null, 2);
678
+ }
679
+
583
680
  $('prompt').addEventListener('input', updatePayloadPreview);
584
681
  $('from').addEventListener('input', updateCurlCommands);
585
682
  $('signature').addEventListener('input', updateCurlCommands);
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "connectonion"
7
- version = "0.5.6"
7
+ version = "0.5.8"
8
8
  description = "A simple Python framework for creating AI agents with behavior tracking"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
File without changes
File without changes