flock-core 0.4.0b34__py3-none-any.whl → 0.4.0b36__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.

Potentially problematic release.


This version of flock-core might be problematic. Click here for more details.

Files changed (63) hide show
  1. flock/__init__.py +53 -8
  2. flock/cli/loaded_flock_cli.py +38 -18
  3. flock/core/api/main.py +138 -39
  4. flock/core/flock.py +48 -3
  5. flock/themes/alabaster.toml +43 -43
  6. flock/themes/guezwhoz.toml +43 -43
  7. flock/themes/wildcherry.toml +43 -43
  8. flock/themes/wombat.toml +43 -43
  9. flock/themes/zenburn.toml +43 -43
  10. flock/webapp/__init__.py +1 -0
  11. flock/webapp/app/__init__.py +0 -0
  12. flock/webapp/app/api/__init__.py +0 -0
  13. flock/webapp/app/api/agent_management.py +270 -0
  14. flock/webapp/app/api/execution.py +173 -0
  15. flock/webapp/app/api/flock_management.py +102 -0
  16. flock/webapp/app/api/registry_viewer.py +30 -0
  17. flock/webapp/app/config.py +87 -0
  18. flock/webapp/app/main.py +1074 -0
  19. flock/webapp/app/models_ui.py +7 -0
  20. flock/webapp/app/services/__init__.py +0 -0
  21. flock/webapp/app/services/flock_service.py +291 -0
  22. flock/webapp/app/templates/theme_mapper.html +326 -0
  23. flock/webapp/app/theme_mapper.py +812 -0
  24. flock/webapp/app/utils.py +85 -0
  25. flock/webapp/run.py +132 -0
  26. flock/webapp/static/css/custom.css +612 -0
  27. flock/webapp/templates/base.html +105 -0
  28. flock/webapp/templates/flock_editor.html +17 -0
  29. flock/webapp/templates/index.html +12 -0
  30. flock/webapp/templates/partials/_agent_detail_form.html +98 -0
  31. flock/webapp/templates/partials/_agent_list.html +19 -0
  32. flock/webapp/templates/partials/_agent_manager_view.html +53 -0
  33. flock/webapp/templates/partials/_agent_manager_view_old.html +19 -0
  34. flock/webapp/templates/partials/_agent_tools_checklist.html +14 -0
  35. flock/webapp/templates/partials/_create_flock_form.html +52 -0
  36. flock/webapp/templates/partials/_dashboard_flock_detail.html +18 -0
  37. flock/webapp/templates/partials/_dashboard_flock_file_list.html +17 -0
  38. flock/webapp/templates/partials/_dashboard_flock_properties_preview.html +29 -0
  39. flock/webapp/templates/partials/_dashboard_upload_flock_form.html +17 -0
  40. flock/webapp/templates/partials/_dynamic_input_form_content.html +22 -0
  41. flock/webapp/templates/partials/_env_vars_table.html +25 -0
  42. flock/webapp/templates/partials/_execution_form.html +48 -0
  43. flock/webapp/templates/partials/_execution_view_container.html +20 -0
  44. flock/webapp/templates/partials/_flock_file_list.html +24 -0
  45. flock/webapp/templates/partials/_flock_properties_form.html +52 -0
  46. flock/webapp/templates/partials/_flock_upload_form.html +17 -0
  47. flock/webapp/templates/partials/_header_flock_status.html +5 -0
  48. flock/webapp/templates/partials/_load_manager_view.html +50 -0
  49. flock/webapp/templates/partials/_registry_table.html +25 -0
  50. flock/webapp/templates/partials/_registry_viewer_content.html +47 -0
  51. flock/webapp/templates/partials/_results_display.html +35 -0
  52. flock/webapp/templates/partials/_settings_env_content.html +10 -0
  53. flock/webapp/templates/partials/_settings_theme_content.html +15 -0
  54. flock/webapp/templates/partials/_settings_view.html +36 -0
  55. flock/webapp/templates/partials/_sidebar.html +70 -0
  56. flock/webapp/templates/partials/_structured_data_view.html +40 -0
  57. flock/webapp/templates/partials/_theme_preview.html +23 -0
  58. flock/webapp/templates/registry_viewer.html +84 -0
  59. {flock_core-0.4.0b34.dist-info → flock_core-0.4.0b36.dist-info}/METADATA +1 -1
  60. {flock_core-0.4.0b34.dist-info → flock_core-0.4.0b36.dist-info}/RECORD +63 -14
  61. {flock_core-0.4.0b34.dist-info → flock_core-0.4.0b36.dist-info}/WHEEL +0 -0
  62. {flock_core-0.4.0b34.dist-info → flock_core-0.4.0b36.dist-info}/entry_points.txt +0 -0
  63. {flock_core-0.4.0b34.dist-info → flock_core-0.4.0b36.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,50 @@
1
+ <!-- <article id="dashboard-flock-manager-content"> -->
2
+ <!-- {# This outer header is removed, title moves into the left-pane's new article structure #}
3
+ {# <header>
4
+ <h2>Manage & Load Flocks</h2> #}
5
+ </header> -->
6
+
7
+ {% if error_message %}
8
+ <div class="error DANGER" role="alert" x-data="{ show: true }" x-show="show" x-init="setTimeout(() => show = false, 5000)">
9
+ {{ error_message }} <button type="button" class="close" @click="show = false">×</button>
10
+ </div>
11
+ {% endif %}
12
+ {% if success_message %}
13
+ <div class="success SUCCESS" role="alert" x-data="{ show: true }" x-show="show" x-init="setTimeout(() => show = false, 5000)">
14
+ {{ success_message }} <button type="button" class="close" @click="show = false">×</button>
15
+ </div>
16
+ {% endif %}
17
+
18
+ <article class="two-pane-flex-container">
19
+ <article class="left-pane"> {# Changed section to article, or wrap section in article #}
20
+ <header class="grid">
21
+ <h2>Load Flock</h2> {# Moved title here #}
22
+ <div style="text-align: right;">
23
+ <button role="button" class="outline" hx-get="/ui/htmx/create-flock-form?ui_mode={{ ui_mode }}" hx-target="#flock-properties-or-action-content" hx-swap="innerHTML">Add New Flock</button>
24
+ </div>
25
+ </header>
26
+ {# Content of the left pane now goes into this article #}
27
+ <div style="padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal); flex-grow: 1; display: flex; flex-direction: column;">
28
+ <div hx-get="/ui/htmx/dashboard-flock-file-list"
29
+ hx-trigger="load, flockFileListChanged from:body"
30
+ hx-swap="innerHTML"
31
+ id="dashboard-flock-file-list-target"
32
+ class="item-list-container" style="flex-grow: 1; overflow-y: auto;border: 1px solid var(--pico-border-color); border-radius: var(--pico-border-radius);">
33
+ <p style="padding:1rem; border: 1px solid var(--pico-border-color); border-radius: var(--pico-border-radius);">Loading files...</p><progress indeterminate></progress>
34
+ </div>
35
+ </div>
36
+ </article>
37
+
38
+ <section id="flock-detail-action-column" class="right-pane-framed">
39
+ <header>
40
+ <h5>Flock Details</h5>
41
+ </header>
42
+ <div id="flock-properties-or-action-content">
43
+ <article style="text-align:center; margin-top: 2rem; border: none; background: transparent;">
44
+ <p>Select a Flock from the list to view its details and load it into the editor.</p>
45
+ <p><small>To create a new Flock or upload an existing one, use the options in the sidebar.</small></p>
46
+ </article>
47
+ </div>
48
+ </section>
49
+ </article>
50
+ <!-- </article> -->
@@ -0,0 +1,25 @@
1
+ <article style="margin-top:0; padding-top:0;"> {# Remove top margin/padding from article to align with buttons #}
2
+ <header>
3
+ <h4 style="margin-bottom: 0.5rem;">{{ item_type_display }}</h4>
4
+ </header>
5
+ {% if items %}
6
+ <table>
7
+ <thead>
8
+ <tr>
9
+ <th>Name</th>
10
+ <th>Module Path</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ {% for item in items %}
15
+ <tr>
16
+ <td>{{ item.name }}</td>
17
+ <td>{{ item.module }}</td>
18
+ </tr>
19
+ {% endfor %}
20
+ </tbody>
21
+ </table>
22
+ {% else %}
23
+ <p>No {{ item_type_display.lower() }} found in the registry.</p>
24
+ {% endif %}
25
+ </article>
@@ -0,0 +1,47 @@
1
+ <article>
2
+ <header>
3
+ <h2>Flock Registry Viewer</h2>
4
+ <p>Browse items registered with the Flock framework.</p>
5
+ </header>
6
+
7
+ <nav>
8
+ <ul role="group">
9
+ <li>
10
+ <button role="button" class="outline" hx-get="/api/registry/htmx/type/table" hx-target="#registry-table-container" hx-indicator="#registry-loading" hx-on:click="setActiveButton(this)">
11
+ View Types
12
+ </button>
13
+ </li>
14
+ <li>
15
+ <button role="button" class="outline" hx-get="/api/registry/htmx/tool/table" hx-target="#registry-table-container" hx-indicator="#registry-loading" hx-on:click="setActiveButton(this)">
16
+ View Tools/Callables
17
+ </button>
18
+ </li>
19
+ <li>
20
+ <button role="button" class="outline" hx-get="/api/registry/htmx/component/table" hx-target="#registry-table-container" hx-indicator="#registry-loading" hx-on:click="setActiveButton(this)">
21
+ View Components
22
+ </button>
23
+ </li>
24
+ </ul>
25
+ </nav>
26
+
27
+ <div id="registry-loading" class="htmx-indicator" style="text-align: center; margin-top: 1rem;">
28
+ <progress></progress> Loading...
29
+ </div>
30
+
31
+ <div id="registry-table-container" style="margin-top: 1.5rem;">
32
+ <p>Select a category above to view registered items.</p>
33
+ </div>
34
+ </article>
35
+
36
+ <script>
37
+ // Make sure this script is included or available globally
38
+ function setActiveButton(clickedButton) {
39
+ const buttons = clickedButton.closest('ul[role="group"]').querySelectorAll('button');
40
+ buttons.forEach(button => {
41
+ button.classList.remove('primary');
42
+ button.classList.add('outline');
43
+ });
44
+ clickedButton.classList.remove('outline');
45
+ clickedButton.classList.add('primary');
46
+ }
47
+ </script>
@@ -0,0 +1,35 @@
1
+ {% from "partials/_structured_data_view.html" import render_value %}
2
+
3
+ <article id="results-display-content" x-data="{ viewMode: 'structured' }">
4
+ <header class="grid">
5
+ <h5 style="margin-bottom: 0;">Execution Result</h5>
6
+ <div style="text-align: right;">
7
+ <button role="button" class="outline contrast" @click="viewMode = 'structured'" :aria-pressed="viewMode === 'structured'">Structured</button>
8
+ <button role="button" class="outline contrast" @click="viewMode = 'json'" :aria-pressed="viewMode === 'json'">Raw JSON</button>
9
+ </div>
10
+ </header>
11
+
12
+ <div x-show="viewMode === 'json'">
13
+ {% if result_data is string %}
14
+ <p class="error" style="white-space: pre-wrap;">{{ result_data }}</p>
15
+ {% elif result_data %}
16
+ <pre><code style="word-break: break-all; white-space: pre-wrap;">{{ result_data | tojson(indent=2) }}</code></pre>
17
+ {% else %}
18
+ <p>No results to display yet.</p>
19
+ {% endif %}
20
+ </div>
21
+
22
+ <div x-show="viewMode === 'structured'">
23
+ {% if result_data is string %}
24
+ <p class="error" style="white-space: pre-wrap;">{{ result_data }}</p>
25
+ {% elif result_data is mapping %}
26
+ {# Call our new macro for structured display #}
27
+ {{ render_value(result_data) }}
28
+ {% elif result_data %}
29
+ <p>Structured view not available for this result type (not a dictionary).</p>
30
+ <pre><code>{{ result_data | tojson(indent=2) }}</code></pre>
31
+ {% else %}
32
+ <p>No results to display yet.</p>
33
+ {% endif %}
34
+ </div>
35
+ </article>
@@ -0,0 +1,10 @@
1
+ <article>
2
+ <h3>Environment Variables</h3>
3
+ <div style="display:flex; gap:0.5rem; flex-wrap:wrap;">
4
+ <button class="outline small" id="toggle-secrets-btn" hx-post="/ui/htmx/toggle-show-secrets" hx-target="#env-vars-container" hx-swap="outerHTML">
5
+ {% if show_secrets %}Hide Secrets{% else %}Show Secrets{% endif %}
6
+ </button>
7
+ <button class="outline small" hx-get="/ui/htmx/env-add-form" hx-target="#env-vars-container" hx-swap="afterbegin">Add Variable</button>
8
+ </div>
9
+ {% include 'partials/_env_vars_table.html' %}
10
+ </article>
@@ -0,0 +1,15 @@
1
+ <article>
2
+ <h3>Theme Switcher</h3>
3
+ <div style="display:flex; gap:0.5rem; flex-wrap:wrap; align-items:center;">
4
+ <label for="theme-select" style="margin:0;">Select Theme:</label>
5
+ <select id="theme-select" name="theme" hx-get="/ui/htmx/theme-preview" hx-target="#theme-preview" hx-trigger="load, change" hx-include="#theme-select">
6
+ {% for t in themes %}
7
+ <option value="{{ t }}" {% if t == current_theme %}selected{% endif %}>{{ t }}</option>
8
+ {% endfor %}
9
+ </select>
10
+ <button class="small" hx-post="/ui/apply-theme" hx-target="body" hx-include="#theme-select" hx-swap="none">Apply</button>
11
+ </div>
12
+ <div id="theme-preview" style="margin-top:1rem;">
13
+ <!-- Preview generated by theme-preview endpoint -->
14
+ </div>
15
+ </article>
@@ -0,0 +1,36 @@
1
+ <!-- Settings View -->
2
+ <article>
3
+ <header>
4
+ <h2>Settings</h2>
5
+ </header>
6
+ <nav>
7
+ <ul role="group">
8
+ <li>
9
+ <button role="button" class="primary" hx-get="/ui/htmx/settings/env-vars" hx-target="#settings-content-container" hx-indicator="#settings-loading" hx-on:click="setActiveButton(this)">Environment</button>
10
+ </li>
11
+ <li>
12
+ <button role="button" class="outline" hx-get="/ui/htmx/settings/theme" hx-target="#settings-content-container" hx-indicator="#settings-loading" hx-on:click="setActiveButton(this)">Theme</button>
13
+ </li>
14
+ </ul>
15
+ </nav>
16
+
17
+ <div id="settings-loading" class="htmx-indicator" style="text-align:center; margin-top:1rem;">
18
+ <progress></progress> Loading...
19
+ </div>
20
+
21
+ <div id="settings-content-container" style="margin-top:1.5rem;">
22
+ {% include 'partials/_settings_env_content.html' %}
23
+ </div>
24
+ </article>
25
+
26
+ <script>
27
+ function setActiveButton(clickedButton) {
28
+ const buttons = clickedButton.closest('ul[role="group"]').querySelectorAll('button');
29
+ buttons.forEach(btn => {
30
+ btn.classList.remove('primary');
31
+ btn.classList.add('outline');
32
+ });
33
+ clickedButton.classList.remove('outline');
34
+ clickedButton.classList.add('primary');
35
+ }
36
+ </script>
@@ -0,0 +1,70 @@
1
+ <nav>
2
+ {% if ui_mode == 'standalone' %}
3
+ <h5>Manage Flocks</h5>
4
+ <ul>
5
+ <li>
6
+ <button hx-get="/ui/htmx/load-flock-view?ui_mode={{ ui_mode }}" hx-target="#main-content-area"
7
+ hx-push-url="/?ui_mode={{ ui_mode }}" hx-indicator="#content-loading-indicator-main"
8
+ class="contrast {% if request.url.path == '/' or request.url.path == '/ui/htmx/load-flock-view' %}active-nav{% endif %}">
9
+ <i class="fas fa-folder-open"></i> Load Flock
10
+ </button>
11
+ </li>
12
+ <!-- <li>
13
+ <button hx-get="/ui/htmx/create-flock-form?ui_mode={{ ui_mode }}" hx-target="#main-content-area"
14
+ hx-push-url="/ui/create?ui_mode={{ ui_mode }}" hx-indicator="#content-loading-indicator-main"
15
+ class="contrast {% if request.url.path == '/ui/create' %}active-nav{% endif %}">
16
+ <i class="fas fa-plus-circle"></i> Create New Flock
17
+ </button>
18
+ </li> -->
19
+ </ul>
20
+ {% endif %}
21
+
22
+ {% if current_flock %}
23
+ <hr>
24
+ <h5>Current Flock</h5>
25
+ <ul>
26
+ <li>
27
+ <button hx-get="/api/flocks/htmx/flock-properties-form?ui_mode={{ ui_mode }}" hx-target="#main-content-area"
28
+ hx-push-url="/ui/editor/properties?ui_mode={{ ui_mode }}" hx-indicator="#content-loading-indicator-main"
29
+ class="contrast {% if request.url.path == '/ui/editor/properties' %}active-nav{% endif %}">
30
+ <i class="fas fa-cog"></i> Properties
31
+ </button>
32
+ </li>
33
+ <li>
34
+ <button hx-get="/ui/htmx/agent-manager-view?ui_mode={{ ui_mode }}" hx-target="#main-content-area"
35
+ hx-push-url="/ui/editor/agents?ui_mode={{ ui_mode }}" hx-indicator="#content-loading-indicator-main"
36
+ class="contrast{% if request.url.path == '/ui/editor/agents' %}active-nav{% endif %}">
37
+ <i class="fas fa-robot"></i> Agents ({{ current_flock.agents|length }})
38
+ </button>
39
+ </li>
40
+ <li>
41
+ <button hx-get="/ui/htmx/execution-view-container?ui_mode={{ ui_mode }}" hx-target="#main-content-area"
42
+ hx-push-url="/ui/editor/execute?ui_mode={{ ui_mode }}" hx-indicator="#content-loading-indicator-main"
43
+ class="contrast {% if request.url.path == '/ui/editor/execute' %}active-nav{% endif %}">
44
+ <i class="fas fa-play-circle"></i> Execute Flock
45
+ </button>
46
+ </li>
47
+ </ul>
48
+ {% endif %}
49
+
50
+ <hr>
51
+ <h5>Tools</h5>
52
+ <ul>
53
+ <li>
54
+ <button hx-get="/ui/htmx/registry-viewer?ui_mode={{ ui_mode }}" hx-target="#main-content-area"
55
+ hx-push-url="/ui/registry?ui_mode={{ ui_mode }}" hx-indicator="#content-loading-indicator-main"
56
+ class="contrast {% if request.url.path == '/ui/registry' %}active-nav{% endif %}">
57
+ <i class="fas fa-book"></i> View Registry
58
+ </button>
59
+ </li>
60
+ <li>
61
+ <button hx-get="/ui/htmx/settings-view?ui_mode={{ ui_mode }}" hx-target="#main-content-area"
62
+ hx-push-url="/ui/settings?ui_mode={{ ui_mode }}" hx-indicator="#content-loading-indicator-main"
63
+ class="contrast {% if request.url.path == '/ui/settings' %}active-nav{% endif %}">
64
+ <i class="fas fa-sliders-h"></i> Settings
65
+ </button>
66
+ </li>
67
+ </ul>
68
+ <div id="content-loading-indicator-main" class="htmx-indicator" style="text-align:center; padding:1rem;"><progress
69
+ indeterminate></progress></div>
70
+ </nav>
@@ -0,0 +1,40 @@
1
+ {% macro render_value(value, level=0) %}
2
+ {% if value is mapping %}
3
+ {% if not value %}
4
+ <em style="color: var(--pico-muted-color);">(Empty Dictionary)</em>
5
+ {% else %}
6
+ <table class="structured-table level-{{ level }}" style="margin-left: {{ level * 20 }}px; margin-bottom: 0.5em; border-collapse: collapse; width: auto;">
7
+ <tbody>
8
+ {% for k, v in value.items() %}
9
+ <tr style="border-bottom: 1px solid var(--pico-muted-border-color);">
10
+ <td style="font-weight: bold; padding: 0.25em 0.5em; vertical-align: top; border-right: 1px solid var(--pico-muted-border-color); width: 30%;">{{ k }}</td>
11
+ <td style="padding: 0.25em 0.5em; vertical-align: top;">{{ render_value(v, level + 1) }}</td>
12
+ </tr>
13
+ {% endfor %}
14
+ </tbody>
15
+ </table>
16
+ {% endif %}
17
+ {% elif value is iterable and value is not string %}
18
+ {% if not value %}
19
+ <em style="color: var(--pico-code-color);">(Empty List)</em>
20
+ {% else %}
21
+ <ul style="margin-left: {{ level * 20 }}px; padding-left: 1em; list-style-type: disc; margin-bottom:0.5em;">
22
+ {% for item in value %}
23
+ <li>{{ render_value(item, level + 1) }}</li>
24
+ {% endfor %}
25
+ </ul>
26
+ {% endif %}
27
+ {% elif value is boolean %}
28
+ <code style="color: {{ 'var(--flock-success-color)' if value else 'var(--flock-error-color)' }}; font-weight:bold;">{{ value }}</code>
29
+ {% elif value is number %}
30
+ <code style="color: var(--pico-code-color);">{{ value }}</code>
31
+ {% elif value is none %}
32
+ <em style="color: var(--pico-code-color);">None</em>
33
+ {% else %}
34
+ {# Apply pre-wrap for multi-line strings #}
35
+ <span style="white-space: pre-wrap; word-break: break-word;">{{ value }}</span>
36
+ {% endif %}
37
+ {% endmacro %}
38
+
39
+ {# Main entry point for this partial, assuming result_data is in context #}
40
+ {{ render_value(result_data) }}
@@ -0,0 +1,23 @@
1
+ {% if css_vars_str %}
2
+ <style>
3
+ {{ css_vars_str | safe }}
4
+ </style>
5
+ {% endif %}
6
+ <article style="border:1px solid var(--pico-border-color); padding:1rem; border-radius:8px;">
7
+ <hgroup>
8
+ <h3>Theme Preview: {{ theme_name }}</h3>
9
+ </hgroup>
10
+ <div class="grid" style="grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap:0.5rem;">
11
+ {% for color_name, color_value in main_colors %}
12
+ <div>
13
+ <div style="height:24px; border-radius:4px; background-color: {{ color_value }};"></div>
14
+ <small>{{ color_name }}<br>{{ color_value }}</small>
15
+ </div>
16
+ {% endfor %}
17
+ </div>
18
+ <hr>
19
+ <button>Button</button>
20
+ <button class="secondary">Secondary</button>
21
+ <button class="contrast">Contrast</button>
22
+ <p>Sample text with <a href="#">link</a>, <mark>mark</mark>, <code>code</code>.</p>
23
+ </article>
@@ -0,0 +1,84 @@
1
+ {% extends "base.html" %}
2
+
3
+ {% block title %}Flock UI - Registry Viewer{% endblock %}
4
+
5
+ {% block content %}
6
+ <article>
7
+ <header>
8
+ <h2>Flock Registry Viewer</h2>
9
+ <p>Browse items registered with the Flock framework.</p>
10
+ </header>
11
+
12
+ <nav>
13
+ <ul role="group">
14
+ <li>
15
+ <button role="button"
16
+ class="outline"
17
+ hx-get="/api/registry/htmx/type/table"
18
+ hx-target="#registry-table-container"
19
+ hx-indicator="#registry-loading"
20
+ hx-on:click="setActiveButton(this)">
21
+ View Types
22
+ </button>
23
+ </li>
24
+ <li>
25
+ <button role="button"
26
+ class="outline"
27
+ hx-get="/api/registry/htmx/tool/table"
28
+ hx-target="#registry-table-container"
29
+ hx-indicator="#registry-loading"
30
+ hx-on:click="setActiveButton(this)">
31
+ View Tools/Callables
32
+ </button>
33
+ </li>
34
+ <li>
35
+ <button role="button"
36
+ class="outline"
37
+ hx-get="/api/registry/htmx/component/table"
38
+ hx-target="#registry-table-container"
39
+ hx-indicator="#registry-loading"
40
+ hx-on:click="setActiveButton(this)">
41
+ View Components
42
+ </button>
43
+ </li>
44
+ </ul>
45
+ </nav>
46
+
47
+ <div id="registry-loading" class="htmx-indicator" style="text-align: center; margin-top: 1rem;">
48
+ <progress></progress> Loading...
49
+ </div>
50
+
51
+ <div id="registry-table-container" style="margin-top: 1.5rem;">
52
+ <p>Select a category above to view registered items.</p>
53
+ </div>
54
+
55
+ <footer style="margin-top: 2rem;">
56
+ <a href="/ui/editor" role="button" class="secondary contrast">Back to Editor</a>
57
+ </footer>
58
+ </article>
59
+
60
+ <script>
61
+ function setActiveButton(clickedButton) {
62
+ // Get all buttons in the group
63
+ const buttons = clickedButton.closest('ul[role="group"]').querySelectorAll('button');
64
+ // Remove 'primary' (or any active class) and add 'outline' to all
65
+ buttons.forEach(button => {
66
+ button.classList.remove('primary'); // Assuming 'primary' is your active class
67
+ button.classList.add('outline');
68
+ });
69
+ // Add 'primary' and remove 'outline' from the clicked button
70
+ clickedButton.classList.remove('outline');
71
+ clickedButton.classList.add('primary'); // Use Pico's primary button style for active
72
+ }
73
+
74
+ // Optional: Set the first button as active on initial load,
75
+ // or if you want to default to loading "Types"
76
+ document.addEventListener('DOMContentLoaded', function() {
77
+ const firstButton = document.querySelector('nav ul[role="group"] button');
78
+ if (firstButton) {
79
+ // setActiveButton(firstButton); // Uncomment if you want a default active button
80
+ // htmx.trigger(firstButton, 'click'); // Uncomment to auto-load Types on page load
81
+ }
82
+ });
83
+ </script>
84
+ {% endblock %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flock-core
3
- Version: 0.4.0b34
3
+ Version: 0.4.0b36
4
4
  Summary: Declarative LLM Orchestration at Scale
5
5
  Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
6
6
  License-File: LICENSE
@@ -1,4 +1,4 @@
1
- flock/__init__.py,sha256=O_8dFcANbbrAMHVUUYXKVj6vzYTOKh4cDO5pEaEXFEs,4532
1
+ flock/__init__.py,sha256=1tMdEwpFvJXVso96jyGvGPXhD9P7EbZfkSV-WX1fXuE,5918
2
2
  flock/config.py,sha256=Nrip1Nn03KGVmRq2NYkuI-hJtnIVI1lHkurIrsPt7YI,1588
3
3
  flock/cli/config.py,sha256=5DvFLObOx3ObisHnc9JfnUBnK83y0CBsUQzXfxPZve0,138
4
4
  flock/cli/constants.py,sha256=ZyXtTW91P1hUMkbMwmOwp_JEL5e9-YkcuM3vHM5glP4,978
@@ -9,7 +9,7 @@ flock/cli/load_agent.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
9
9
  flock/cli/load_examples.py,sha256=DkeLUlrb7rGx3nZ04aADU9HXXu5mZTf_DBwT0xhzIv4,7
10
10
  flock/cli/load_flock.py,sha256=sfZ9B9aiyC5TCEbn1xR5Yd5SoaVji6MBNYzXlWOpoZ4,7111
11
11
  flock/cli/load_release_notes.py,sha256=bkMIjjQFfOngXkDCh2kB404lQYIToeR91LodzI2IUWM,555
12
- flock/cli/loaded_flock_cli.py,sha256=IkeYvw52Bh3uFIm2O5xgppJ9KaY7jfh0VSFkiI46tTg,6855
12
+ flock/cli/loaded_flock_cli.py,sha256=lGZ9Y2O16v4OEr0dxvPQA8HqreB_bP25C9teg4ViSsA,8202
13
13
  flock/cli/manage_agents.py,sha256=Psl014LCrJmBgwrjsp7O3WNlWvQmVd_IDud3rd0lnLI,12786
14
14
  flock/cli/registry_management.py,sha256=mAHy3wT97YgODR0gVOkTXDqR5NIPzM-E-z9dEtw9-tw,29790
15
15
  flock/cli/runner.py,sha256=TgiuhRLkpa6dn3C-3eCmWx-bWUlTjaH0sD7Y-O7MrYM,1122
@@ -19,7 +19,7 @@ flock/cli/view_results.py,sha256=dOzK0O1FHSIDERnx48y-2Xke9BkOHS7pcOhs64AyIg0,781
19
19
  flock/cli/yaml_editor.py,sha256=K3N0bh61G1TSDAZDnurqW9e_-hO6CtSQKXQqlDhCjVo,12527
20
20
  flock/cli/assets/release_notes.md,sha256=bqnk50jxM3w5uY44Dc7MkdT8XmRREFxrVBAG9XCOSSU,4896
21
21
  flock/core/__init__.py,sha256=p7lmQULRu9ejIAELfanZiyMhW0CougIPvyFHW2nqBFQ,847
22
- flock/core/flock.py,sha256=_T_KAFePtEGDzfiFGV1HCdz7VHzj_U0cCquhAQ4xMAM,28199
22
+ flock/core/flock.py,sha256=HLJyWDdpUfDfpp-hHeyhrJty0FiOHBa8CBM2YrSMFyM,30139
23
23
  flock/core/flock_agent.py,sha256=JTqaGD_OnZSd3bVU989WMsK1rAT6UGn-JYrPxFV15EE,39576
24
24
  flock/core/flock_evaluator.py,sha256=dOXZeDOGZcAmJ9ahqq_2bdGUU1VOXY4skmwTVpAjiVw,1685
25
25
  flock/core/flock_factory.py,sha256=_4zsjkEmJnCR7IvJ3SUHnDbX6c7Tt3E4P5ohxwKvE6w,3173
@@ -28,7 +28,7 @@ flock/core/flock_registry.py,sha256=Qcu9juUFNyDAOEsqVxauwVlWdfgKZrSzc8yT8JMiK-c,
28
28
  flock/core/flock_router.py,sha256=1OAXDsdaIIFApEfo6SRfFEDoTuGt3Si7n2MXiySEfis,2644
29
29
  flock/core/api/__init__.py,sha256=OKlhzDWZJfA6ddBwxQUmATY0TSzESsH032u00iVGvdA,228
30
30
  flock/core/api/endpoints.py,sha256=qQnJmtcYGkjdKtLllVpyJVjc-iZrvu5EEeVIryyt4tc,12987
31
- flock/core/api/main.py,sha256=glu9ThsYNTt35Ogjx732SGYJ9-aFftpvzLMQEJ7VuvQ,19189
31
+ flock/core/api/main.py,sha256=Z8XSHV9iJsVr5k_77GqOZrdc9Lr5CJZ_N3SfaPNlixE,23663
32
32
  flock/core/api/models.py,sha256=seqKuzhbN37nCNO7KrcJjI2mWuwiOKCLFcJcTPvTtag,3422
33
33
  flock/core/api/run_store.py,sha256=bFodJvVyWogzoezVy0cOoWWU3MdEBXf_6_5sBqCRWps,9227
34
34
  flock/core/api/runner.py,sha256=PjKQyMNawHm_N-X2uTUWBKAKBe7AEzNmRIGwQI6tUWw,1156
@@ -109,7 +109,7 @@ flock/themes/abernathy.toml,sha256=T-FeYc_Nkz4dXxj-1SwKhr1BpBPg0bmqAt2Wve9cqUo,1
109
109
  flock/themes/adventure.toml,sha256=sgT63QdUaoq9yatWTnm9H5jp7G6DTsECvfnVon_4LK4,1658
110
110
  flock/themes/adventuretime.toml,sha256=ZIrnONaakvI4uqVWfMF4U7OhxtpA-uwzxzlpBgFSQu8,1664
111
111
  flock/themes/afterglow.toml,sha256=3gDfvb3D8FBtKjX25NoFrkLl-CVg18ZI8qGhWe5vjOM,1667
112
- flock/themes/alabaster.toml,sha256=vixhwKHNW39rb4Blgd33PBCGtB6xvkTRf3cJMgc4ikw,1670
112
+ flock/themes/alabaster.toml,sha256=PstGD2YqNkk0oyKg0yN9bp-9xMehsPPigKbBj98RHgk,1713
113
113
  flock/themes/alienblood.toml,sha256=1xME0JoUgdMc3kbT7hYK-4LaK8kJrTEZOekGPkhZbfs,1673
114
114
  flock/themes/andromeda.toml,sha256=l8HftFpTWtQj8dg_9aRuidnMyKruNSvOGaGpkBoJ3iw,1670
115
115
  flock/themes/apple-classic.toml,sha256=tHa8YwdROQgewwB5-2Fw2d9L56GDB61azmG9nNiYPtM,1667
@@ -228,7 +228,7 @@ flock/themes/gruber-darker.toml,sha256=fCorkKK4YO3bPE7f8tgZIfmQ_nUBRdWeTsmsK1ayg
228
228
  flock/themes/gruvboxdark.toml,sha256=3FD37Uvy4X7JNdTWtbat96jjPXTaAvC9Y7dpj6bx0kI,1663
229
229
  flock/themes/gruvboxdarkhard.toml,sha256=KHkr-KKuOYjTkoY4o9qPQXnH5sckK7WeBSfXUsQwZVI,1665
230
230
  flock/themes/gruvboxlight.toml,sha256=CtBoE4ujuaQ92CDzIe5rTJXrpVBntT3iARqeKAl13Us,1671
231
- flock/themes/guezwhoz.toml,sha256=BnqtIZd6kxjY-jOeVQmS5rKS6h4ZjmRkUJUHhoHqWo8,1671
231
+ flock/themes/guezwhoz.toml,sha256=mIrXQCl9rfrz0NEmD4BH7lLZacePQ8jXsO0NI3Sv1E0,1714
232
232
  flock/themes/hacktober.toml,sha256=Rztvv9BhuA0oK8nr2t4fi3qvUTNk9_54LrCesn79IV0,1667
233
233
  flock/themes/hardcore.toml,sha256=pc8BJasVwEZ8DhEEQLlv5qiH8z1veGxwUS6d7FFXTdo,1666
234
234
  flock/themes/harper.toml,sha256=eu_rj2fjozgE_W1nM21uZZz118wiyW7YpowgNK-m5-g,1676
@@ -422,9 +422,9 @@ flock/themes/violet-light.toml,sha256=HP14ITuiHhVxLQ71TRsIEFk6DaBWCzfyULsGqx4xZ6
422
422
  flock/themes/warmneon.toml,sha256=1Zol382-WDi7mgb4DmOtxgr1pWv7o80zctfVOGcFNSI,1665
423
423
  flock/themes/wez.toml,sha256=ZfnAQwhfaA_1hNI-Fm_nGQyqP0jCy2dO4aQFTvPb2fw,1663
424
424
  flock/themes/whimsy.toml,sha256=xGlS4olSJQqmAG6mIq2DNEzTwFkfnfxbpdeCw3M2msQ,1668
425
- flock/themes/wildcherry.toml,sha256=XCRStV3IptZ1a35VFksrWgraF3eMAORf3l_qhVUEPds,1676
425
+ flock/themes/wildcherry.toml,sha256=caVn8FqmlyHcKY2iE-ledAU2YWx-jUHVViyTsBl54OI,1719
426
426
  flock/themes/wilmersdorf.toml,sha256=2Z9Y493ygAggGQvOaoERzdPHVDN2a7ZFGuLtVLaaGks,1671
427
- flock/themes/wombat.toml,sha256=j7XcbT3ELK5lHTT-OoIIoPCDi2njX68eFMAKB6vMG6A,1665
427
+ flock/themes/wombat.toml,sha256=TCjXgMNoHjIPd9Q7Dg6ElJkvMvLKE5b2im3mC71Y4Ik,1708
428
428
  flock/themes/wryan.toml,sha256=hede2Z_uWh9qNUo1GKLxD4IN-5iEy5IYsgO9Q-NWkyc,1670
429
429
  flock/themes/xcodedark.toml,sha256=xI2MXOxmsG3riVcmOIkBuJFfIWizYVRv9_MPQhJIEZ4,1665
430
430
  flock/themes/xcodedarkhc.toml,sha256=yuHNlpiuDhiqFfnxzoJ8oBNbb4yfq4FOjrzDJp2YyI8,1669
@@ -434,10 +434,59 @@ flock/themes/xcodewwdc.toml,sha256=J3LSja00Jr9AVbIgXcDNx-ZnNRuxmtArvASUCJvwhug,1
434
434
  flock/themes/zenbones-dark.toml,sha256=sMC44n-zpKbm0zskPNT_pJnfCtxpxvtBa0wPRjCP3lc,1665
435
435
  flock/themes/zenbones-light.toml,sha256=lhUL5pZUerhvjlf12A_jeYjQDoHbPGLaBz1l7yw_rHc,1671
436
436
  flock/themes/zenbones.toml,sha256=OaET0eQSsNQ4Xen4HGqq8TxOk8zEWWjrJi2WKnuM-rE,1667
437
- flock/themes/zenburn.toml,sha256=HBlDUROb1eaX7sTqhCMINukM9GTHdiN4rgHIJxU53jg,1668
437
+ flock/themes/zenburn.toml,sha256=NxOAR3cx-Z9PVErEKHFZ6jsjfKBtPmfyN_vGSri5_qo,1711
438
438
  flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1664
439
439
  flock/themes/zenwritten-dark.toml,sha256=To5l6520_3UqAGiEumpzGWsHhXxqu9ThrMildXKgIO0,1669
440
440
  flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
441
+ flock/webapp/__init__.py,sha256=YtRbbyciN3Z2oMB9fdXZuvM3e49R8m2mY5qHLDoapRA,37
442
+ flock/webapp/run.py,sha256=DGXcZ9APSE9ae0r7t2DhVKsKdIx1kGZrhzzXFZmHqYc,4944
443
+ flock/webapp/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
444
+ flock/webapp/app/config.py,sha256=lx99sF8_8hCdWxDn0lmROp-BXnBXjrr022lq7lfIs3A,4166
445
+ flock/webapp/app/main.py,sha256=DV-k_oZ-EkpujLCK3x0wZWdA0GtWsFK-3wiOw4hdmzA,42980
446
+ flock/webapp/app/models_ui.py,sha256=vrEBLbhEp6FziAgBSFOLT1M7ckwadsTdT7qus5_NduE,329
447
+ flock/webapp/app/theme_mapper.py,sha256=QzWwLWpED78oYp3FjZ9zxv1KxCyj43m8MZ0fhfzz37w,34302
448
+ flock/webapp/app/utils.py,sha256=RF8DMKKAj1XPmm4txUdo2OdswI1ATQ7cqUm6G9JFDzA,2942
449
+ flock/webapp/app/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
450
+ flock/webapp/app/api/agent_management.py,sha256=sV1lGmfujjiMumItVqkvFIgzolNzbSUExVjBsieesI8,9159
451
+ flock/webapp/app/api/execution.py,sha256=V-vjtd3lWCVADYj9o2aDx9sYdqT4qUEVoE7nCQppuaI,6875
452
+ flock/webapp/app/api/flock_management.py,sha256=nrPrXimTNYawV2n9iS_854KobTVU3MQJW8bEww9owmE,3516
453
+ flock/webapp/app/api/registry_viewer.py,sha256=IoInxJiRR0yFlecG_l2_eRc6l35RQQyEDMG9BcBkipY,1020
454
+ flock/webapp/app/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
455
+ flock/webapp/app/services/flock_service.py,sha256=52TjryxYT9nYadXTbwWnsyLFiqtKIwbdXm6L9aqPUyk,10294
456
+ flock/webapp/app/templates/theme_mapper.html,sha256=z8ZY7nmk6PiUGzD_-px7wSXcEnuBM121rMq6u-2oaCo,14249
457
+ flock/webapp/static/css/custom.css,sha256=Y1ZRBha-2AW9qUH3dczRnB72WYXb6i3Jp53KsF-1gHc,16484
458
+ flock/webapp/templates/base.html,sha256=NprLbMIB7WCG2YswvhS5aFkgSxQldR0qvxDD3bhYWpw,4657
459
+ flock/webapp/templates/flock_editor.html,sha256=tB17wRixXfzRDiZHQaDlxVk-s2GbpxB2y18B7FhbiLY,540
460
+ flock/webapp/templates/index.html,sha256=eK7s5Cnh63unqPwq9NGZGEKyvYwkhudfmSn9su3Ctyg,412
461
+ flock/webapp/templates/registry_viewer.html,sha256=gZM1MeefVBhCvTgNU8fzj0ZBRfbZQeobgyOo2WE31m4,3226
462
+ flock/webapp/templates/partials/_agent_detail_form.html,sha256=iRVyCgwdo7I-sjR3r2RfdIRe8XXRS-ySukBvxJTgMEg,5941
463
+ flock/webapp/templates/partials/_agent_list.html,sha256=PHWYz5aazrxoE4I36Mww3e5ukDvAwPTDe7PuXEiFy2o,857
464
+ flock/webapp/templates/partials/_agent_manager_view.html,sha256=mA4Y6ymDh2aeMU_y49Kj9q_ifhDljZlkdzZkZRB65c8,2467
465
+ flock/webapp/templates/partials/_agent_manager_view_old.html,sha256=hJRNvVpVOyxqyAuZ7BBT6aeVwOWPHvvnRgJ5Y-Myhuc,1005
466
+ flock/webapp/templates/partials/_agent_tools_checklist.html,sha256=T60fb7OrJYHUw0hJLC_otskgvbH9dZXbv5klgWBkSWk,686
467
+ flock/webapp/templates/partials/_create_flock_form.html,sha256=nQVbuTWqOQ59q5zyGXkuBixikvCkaZIPVW8CRF6wCm0,2806
468
+ flock/webapp/templates/partials/_dashboard_flock_detail.html,sha256=c7srF0nL8ETmP0ATsIxF8MMHMtHVXJqWVzdrnu2i-1Q,1012
469
+ flock/webapp/templates/partials/_dashboard_flock_file_list.html,sha256=hevhRzK94tHJC6j8_iLc0ORCOb0wEYHCpRWecXB-5io,795
470
+ flock/webapp/templates/partials/_dashboard_flock_properties_preview.html,sha256=jxBKR6hnDXccqxUqFV6zJjsE1YeXhdELwlXGB6uMDEU,1595
471
+ flock/webapp/templates/partials/_dashboard_upload_flock_form.html,sha256=lQxR75yLgeRdm1vSkpGGgkhhfQ5JQvu14jx1y-QZUAM,956
472
+ flock/webapp/templates/partials/_dynamic_input_form_content.html,sha256=WYr2M7Mb5vKITFhIVXXEHppRx9IjGew91yLo1_I9kkI,1230
473
+ flock/webapp/templates/partials/_env_vars_table.html,sha256=6TFUWvkYwzwodqXZ0yJhH_NU6L4tz7V09mDamSfDI8c,1082
474
+ flock/webapp/templates/partials/_execution_form.html,sha256=WiUi8LJTUEQZRR9kZTwmu37XKjpAoyeBqhM8Fdeq_L0,2298
475
+ flock/webapp/templates/partials/_execution_view_container.html,sha256=OtRNZVn3M-tjh7cOTNCsCDuUCpPB6gL1PMYawfB7rnQ,1029
476
+ flock/webapp/templates/partials/_flock_file_list.html,sha256=FjIxAqB0OxA0mQ8f2jBX1_M_AM5ea7gCA8PEjPpiZVc,1209
477
+ flock/webapp/templates/partials/_flock_properties_form.html,sha256=8VqgTk7c0CsyH57ON91dHgQS0zLshILghybIcxPCFpc,2887
478
+ flock/webapp/templates/partials/_flock_upload_form.html,sha256=h2dIPwPeTg5dv_ubrZiwBXReF0NjzJ6eKSwwz7mbQQs,960
479
+ flock/webapp/templates/partials/_header_flock_status.html,sha256=reNB4Prsu9lObz5tFhGk3AMe4bNw92gDJZUKABVaVBM,158
480
+ flock/webapp/templates/partials/_load_manager_view.html,sha256=2u4lufQMEpUlQOThUzo1zrE3AulDQ-aErruS6t91W44,2909
481
+ flock/webapp/templates/partials/_registry_table.html,sha256=z4EW5G3DTknymBeSlpL2PZLcb2143P35upMnmHFfeJs,715
482
+ flock/webapp/templates/partials/_registry_viewer_content.html,sha256=c8-qlA0FT1dbKSLTzIHw1aBGsKUo5IHD47epgXFRKJs,1882
483
+ flock/webapp/templates/partials/_results_display.html,sha256=vuAbIdnG_7jzeHxeeoRvPqStD_7CJwXnyhvry_kMfLQ,1625
484
+ flock/webapp/templates/partials/_settings_env_content.html,sha256=Q1Xr6wLHLlqiduqNk6PyF1B4juP-vvqLOLZyiHHNRLc,572
485
+ flock/webapp/templates/partials/_settings_theme_content.html,sha256=-y5vGRKBZf3Cp5DDE1M4Qw-yunuMtCG54Sa7r60XfJE,807
486
+ flock/webapp/templates/partials/_settings_view.html,sha256=7Uy2EfAgVJ2Kac5S6nkeaIEr2tSagVyR5CBbf07fbSQ,1349
487
+ flock/webapp/templates/partials/_sidebar.html,sha256=JXvxZpAihndiZ83Fg9JQVsUihFnog443IsM-lqF9oPc,3541
488
+ flock/webapp/templates/partials/_structured_data_view.html,sha256=IsmGbm2rKHZr6qx0a_n6QGs89Rq4xNFhymrZVI6OShc,2063
489
+ flock/webapp/templates/partials/_theme_preview.html,sha256=81vP5z8958LjhGWGwjVAVw3zW0uvYwfcXlU30i9exmo,867
441
490
  flock/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
442
491
  flock/workflow/activities.py,sha256=Rcgcepa-RzaEjKo2aNuI14O_sX8ij0RrqeyPa0oSw8M,9910
443
492
  flock/workflow/agent_activities.py,sha256=NhBZscflEf2IMfSRa_pBM_TRP7uVEF_O0ROvWZ33eDc,963
@@ -445,8 +494,8 @@ flock/workflow/agent_execution_activity.py,sha256=Gy6FtuVAjf0NiUXmC3syS2eJpNQF4R
445
494
  flock/workflow/flock_workflow.py,sha256=iSUF_soFvWar0ffpkzE4irkDZRx0p4HnwmEBi_Ne2sY,9666
446
495
  flock/workflow/temporal_config.py,sha256=3_8O7SDEjMsSMXsWJBfnb6XTp0TFaz39uyzSlMTSF_I,3988
447
496
  flock/workflow/temporal_setup.py,sha256=YIHnSBntzOchHfMSh8hoLeNXrz3B1UbR14YrR6soM7A,1606
448
- flock_core-0.4.0b34.dist-info/METADATA,sha256=xImOi53HupDqDi8RpnOjZfkS_rbLJQ6j_CrwoIR7RPA,17125
449
- flock_core-0.4.0b34.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
450
- flock_core-0.4.0b34.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
451
- flock_core-0.4.0b34.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
452
- flock_core-0.4.0b34.dist-info/RECORD,,
497
+ flock_core-0.4.0b36.dist-info/METADATA,sha256=Leuqr5U34G0jlFWVEnwJuQ9Ny-GlEwBsPQedzkV-jRI,17125
498
+ flock_core-0.4.0b36.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
499
+ flock_core-0.4.0b36.dist-info/entry_points.txt,sha256=rWaS5KSpkTmWySURGFZk6PhbJ87TmvcFQDi2uzjlagQ,37
500
+ flock_core-0.4.0b36.dist-info/licenses/LICENSE,sha256=iYEqWy0wjULzM9GAERaybP4LBiPeu7Z1NEliLUdJKSc,1072
501
+ flock_core-0.4.0b36.dist-info/RECORD,,