flock-core 0.5.0b63__py3-none-any.whl → 0.5.0b70__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.
- flock/agent.py +205 -27
- flock/cli.py +74 -2
- flock/dashboard/websocket.py +13 -2
- flock/engines/dspy_engine.py +70 -13
- flock/examples.py +4 -1
- flock/frontend/README.md +15 -1
- flock/frontend/package-lock.json +11 -21
- flock/frontend/package.json +1 -1
- flock/frontend/src/App.tsx +74 -6
- flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx +4 -5
- flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx +7 -3
- flock/frontend/src/components/filters/ArtifactTypeFilter.tsx +21 -0
- flock/frontend/src/components/filters/FilterFlyout.module.css +104 -0
- flock/frontend/src/components/filters/FilterFlyout.tsx +80 -0
- flock/frontend/src/components/filters/FilterPills.module.css +186 -45
- flock/frontend/src/components/filters/FilterPills.test.tsx +115 -99
- flock/frontend/src/components/filters/FilterPills.tsx +120 -44
- flock/frontend/src/components/filters/ProducerFilter.tsx +21 -0
- flock/frontend/src/components/filters/SavedFiltersControl.module.css +60 -0
- flock/frontend/src/components/filters/SavedFiltersControl.test.tsx +158 -0
- flock/frontend/src/components/filters/SavedFiltersControl.tsx +159 -0
- flock/frontend/src/components/filters/TagFilter.tsx +21 -0
- flock/frontend/src/components/filters/TimeRangeFilter.module.css +24 -0
- flock/frontend/src/components/filters/TimeRangeFilter.tsx +6 -1
- flock/frontend/src/components/filters/VisibilityFilter.tsx +21 -0
- flock/frontend/src/components/graph/GraphCanvas.tsx +24 -0
- flock/frontend/src/components/layout/DashboardLayout.css +13 -0
- flock/frontend/src/components/layout/DashboardLayout.tsx +8 -24
- flock/frontend/src/components/modules/HistoricalArtifactsModule.module.css +288 -0
- flock/frontend/src/components/modules/HistoricalArtifactsModule.tsx +460 -0
- flock/frontend/src/components/modules/HistoricalArtifactsModuleWrapper.tsx +13 -0
- flock/frontend/src/components/modules/ModuleRegistry.ts +7 -1
- flock/frontend/src/components/modules/registerModules.ts +9 -10
- flock/frontend/src/hooks/useModules.ts +11 -1
- flock/frontend/src/services/api.ts +140 -0
- flock/frontend/src/services/indexeddb.ts +56 -2
- flock/frontend/src/services/websocket.ts +129 -0
- flock/frontend/src/store/filterStore.test.ts +105 -185
- flock/frontend/src/store/filterStore.ts +173 -26
- flock/frontend/src/store/graphStore.test.ts +19 -0
- flock/frontend/src/store/graphStore.ts +166 -27
- flock/frontend/src/types/filters.ts +34 -1
- flock/frontend/src/types/graph.ts +7 -0
- flock/frontend/src/utils/artifacts.ts +24 -0
- flock/mcp/client.py +25 -1
- flock/mcp/config.py +1 -10
- flock/mcp/manager.py +34 -3
- flock/mcp/types/callbacks.py +4 -1
- flock/orchestrator.py +56 -5
- flock/service.py +146 -9
- flock/store.py +971 -24
- {flock_core-0.5.0b63.dist-info → flock_core-0.5.0b70.dist-info}/METADATA +27 -1
- {flock_core-0.5.0b63.dist-info → flock_core-0.5.0b70.dist-info}/RECORD +56 -49
- flock/frontend/src/components/filters/FilterBar.module.css +0 -29
- flock/frontend/src/components/filters/FilterBar.test.tsx +0 -133
- flock/frontend/src/components/filters/FilterBar.tsx +0 -33
- flock/frontend/src/components/modules/EventLogModule.test.tsx +0 -401
- flock/frontend/src/components/modules/EventLogModule.tsx +0 -396
- flock/frontend/src/components/modules/EventLogModuleWrapper.tsx +0 -17
- {flock_core-0.5.0b63.dist-info → flock_core-0.5.0b70.dist-info}/WHEEL +0 -0
- {flock_core-0.5.0b63.dist-info → flock_core-0.5.0b70.dist-info}/entry_points.txt +0 -0
- {flock_core-0.5.0b63.dist-info → flock_core-0.5.0b70.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flock-core
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0b70
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Author-email: Andre Ratzenberger <andre.ratzenberger@whiteduck.de>
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
Requires-Python: >=3.10
|
|
8
|
+
Requires-Dist: aiosqlite>=0.20.0
|
|
8
9
|
Requires-Dist: devtools>=0.12.2
|
|
9
10
|
Requires-Dist: dspy==3.0.0
|
|
10
11
|
Requires-Dist: duckdb>=1.1.0
|
|
11
12
|
Requires-Dist: fastapi>=0.117.1
|
|
13
|
+
Requires-Dist: hanging-threads>=2.0.7
|
|
12
14
|
Requires-Dist: httpx>=0.28.1
|
|
13
15
|
Requires-Dist: litellm==1.75.3
|
|
14
16
|
Requires-Dist: loguru>=0.7.3
|
|
@@ -282,6 +284,30 @@ asyncio.run(main())
|
|
|
282
284
|
|
|
283
285
|
---
|
|
284
286
|
|
|
287
|
+
## Persistent Blackboard History
|
|
288
|
+
|
|
289
|
+
The in-memory store is still great for local tinkering, but production teams now have a durable option. Plugging in `SQLiteBlackboardStore` turns the blackboard into a persistent event log with first-class ergonomics:
|
|
290
|
+
|
|
291
|
+
- **Long-lived artifacts** — every field (payload, tags, partition keys, visibility) is stored for replay, audits, and postmortems
|
|
292
|
+
- **Historical APIs** — `/api/v1/artifacts`, `/summary`, and `/agents/{agent_id}/history-summary` expose pagination, filtering, and consumption counts
|
|
293
|
+
- **Dashboard module** — the new **Historical Blackboard** experience preloads persisted history, enriches the graph with consumer metadata, and highlights retention windows
|
|
294
|
+
- **Operational tooling** — CLI helpers (`init-sqlite-store`, `sqlite-maintenance --delete-before ... --vacuum`) make schema setup and retention policies scriptable
|
|
295
|
+
|
|
296
|
+
Quick start:
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
from flock import Flock
|
|
300
|
+
from flock.store import SQLiteBlackboardStore
|
|
301
|
+
|
|
302
|
+
store = SQLiteBlackboardStore(".flock/blackboard.db")
|
|
303
|
+
await store.ensure_schema()
|
|
304
|
+
flock = Flock("openai/gpt-4.1", store=store)
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Run `examples/02-the-blackboard/01_persistent_pizza.py` to generate history, then launch `examples/03-the-dashboard/04_persistent_pizza_dashboard.py` and explore previous runs, consumption trails, and retention banners inside the dashboard.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
285
311
|
## Core Concepts
|
|
286
312
|
|
|
287
313
|
### Typed Artifacts (The Vocabulary)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
flock/__init__.py,sha256=fvp4ltfaAGmYliShuTY_XVIpOUN6bMXbWiBnwb1NBoM,310
|
|
2
|
-
flock/agent.py,sha256=
|
|
2
|
+
flock/agent.py,sha256=LHc2COiV_w0eKmGaq9IsTDaNg_gc6iTSKmGPk1FKbt0,39731
|
|
3
3
|
flock/artifacts.py,sha256=Xnizu0V4Jbwd1yV_FhXjUZG8Em-5GYsLt7sMX0V2OKI,2222
|
|
4
|
-
flock/cli.py,sha256=
|
|
4
|
+
flock/cli.py,sha256=Ysr-u68QqY5YLjY7AKQSwzeJdYhNM4NMk9S5plmzg8w,4526
|
|
5
5
|
flock/components.py,sha256=17vhNMHKc3VUruEbSdb9YNKcDziIe0coS9jpfWBmX4o,6259
|
|
6
|
-
flock/examples.py,sha256=
|
|
7
|
-
flock/orchestrator.py,sha256=
|
|
6
|
+
flock/examples.py,sha256=eQb8k6EYBbUhauFuSN_0EIIu5KW0mTqJU0HM4-p14sc,3632
|
|
7
|
+
flock/orchestrator.py,sha256=Im22Nw9BUC7Hcd8GzOR0oBP1m2wb35_-dE2Hw-d_bZ8,35898
|
|
8
8
|
flock/registry.py,sha256=s0-H-TMtOsDZiZQCc7T1tYiWQg3OZHn5T--jaI_INIc,4786
|
|
9
9
|
flock/runtime.py,sha256=UG-38u578h628mSddBmyZn2VIzFQ0wlHCpCALFiScqA,8518
|
|
10
|
-
flock/service.py,sha256=
|
|
11
|
-
flock/store.py,sha256
|
|
10
|
+
flock/service.py,sha256=P_ntjfaCdRRTmdeOVe7vf6A9MResktLiqDu0x3SKSpg,11041
|
|
11
|
+
flock/store.py,sha256=78QV5n8za-w1Toll3g29TynvhXUv3-0ExDgIL4aOP4o,39168
|
|
12
12
|
flock/subscription.py,sha256=ylIOV2G37KNfncdexrl4kxZOjo7SLS3LmddTaoSkrIk,3103
|
|
13
13
|
flock/utilities.py,sha256=bqTPnFF6E-pDqx1ISswDNEzTU2-ED_URlkyKWLjF3mU,12109
|
|
14
14
|
flock/visibility.py,sha256=Cu2PMBjRtqjiWzlwHLCIC2AUFBjJ2augecG-jvK8ky0,2949
|
|
@@ -18,23 +18,23 @@ flock/dashboard/collector.py,sha256=dF8uddDMpOSdxGkhDSAvRNNaABo-TfOceipf1SQmLSU,
|
|
|
18
18
|
flock/dashboard/events.py,sha256=ujdmRJK-GQubrv43qfQ73dnrTj7g39VzBkWfmskJ0j8,5234
|
|
19
19
|
flock/dashboard/launcher.py,sha256=zXWVpyLNxCIu6fJ2L2j2sJ4oDWTvkxhT4FWz7K6eooM,8122
|
|
20
20
|
flock/dashboard/service.py,sha256=30_uUxDhvX1jfy02G4muNuzbcMH5TujY_G5aXWNQa8Q,32104
|
|
21
|
-
flock/dashboard/websocket.py,sha256=
|
|
21
|
+
flock/dashboard/websocket.py,sha256=6piBJ92nSAeTgGFDUgAaQ8CthqThwRUC6aMUBB_2O6E,9508
|
|
22
22
|
flock/engines/__init__.py,sha256=waNyObJ8PKCLFZL3WUFynxSK-V47m559P3Px-vl_OSc,124
|
|
23
|
-
flock/engines/dspy_engine.py,sha256=
|
|
24
|
-
flock/frontend/README.md,sha256=
|
|
23
|
+
flock/engines/dspy_engine.py,sha256=rp8luOGz3u69NJSmQBLegbZyws8dt7TWa6Hzqb3wB5o,37525
|
|
24
|
+
flock/frontend/README.md,sha256=bWElU0eKmVCYI6VHCqH5KQCi3Ysg6T808mkUXs2xoTY,26232
|
|
25
25
|
flock/frontend/index.html,sha256=BFg1VR_YVAJ_MGN16xa7sT6wTGwtFYUhfJhGuKv89VM,312
|
|
26
|
-
flock/frontend/package-lock.json,sha256=
|
|
27
|
-
flock/frontend/package.json,sha256=
|
|
26
|
+
flock/frontend/package-lock.json,sha256=1edo2JDle0if_MljnK4Xto7Q7hhGUEBQAvQFqKy9RzQ,150798
|
|
27
|
+
flock/frontend/package.json,sha256=4hHxn3NhjZnHgVM4tooAC0LnePEuC2QlrdwfgFjIj9Y,1258
|
|
28
28
|
flock/frontend/tsconfig.json,sha256=B9p9jXohg_jrCZAq5_yIHvznpeXHiHQkwUZrVE2oMRA,705
|
|
29
29
|
flock/frontend/tsconfig.node.json,sha256=u5_YWSqeNkZBRBIZ8Q2E2q6bospcyF23mO-taRO7glc,233
|
|
30
30
|
flock/frontend/vite.config.ts,sha256=OQOr6Hl75iW7EvEm2_GXFdicYWthgdLhp4lz3d7RkJA,566
|
|
31
31
|
flock/frontend/vitest.config.ts,sha256=xSWyGrBv2Cy_5eeZA68NCO5AXS6q8WKZXXzqu2JnXPY,244
|
|
32
32
|
flock/frontend/docs/DESIGN_SYSTEM.md,sha256=xDTKBDikSIyJMP5Lk0gWSimQHeXv8IzIuJR7SLOEdPY,48503
|
|
33
|
-
flock/frontend/src/App.tsx,sha256=
|
|
33
|
+
flock/frontend/src/App.tsx,sha256=E3l8SKAnFJb3RXuKomhSFXY49KUwf0SK6dhef57hRhk,5285
|
|
34
34
|
flock/frontend/src/main.tsx,sha256=sfWsPgNn5AyDH4LJJLTz2c5OwOPl0o4oi-FArpqc-W4,354
|
|
35
35
|
flock/frontend/src/vite-env.d.ts,sha256=tDjMtvUVN9uIgSCHe__Jhp0-nZiIV21pkcQuyOjaryw,344
|
|
36
|
-
flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx,sha256=
|
|
37
|
-
flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx,sha256=
|
|
36
|
+
flock/frontend/src/__tests__/e2e/critical-scenarios.test.tsx,sha256=PTSuyTqQ1IfE6SVntWJMJLHw3HqbyUMZ0WycmujaJo8,21802
|
|
37
|
+
flock/frontend/src/__tests__/integration/filtering-e2e.test.tsx,sha256=VrGOgI-4QaCIroIZIdtxxAP4Sw8UpPkMX5wMpcehmdU,11608
|
|
38
38
|
flock/frontend/src/__tests__/integration/graph-rendering.test.tsx,sha256=BrXule_v1w-Y_xMR1V318_QH3mIpYstxIWDnWVI5HbI,19845
|
|
39
39
|
flock/frontend/src/__tests__/integration/indexeddb-persistence.test.tsx,sha256=LDbotzC9cyTvyIhng8m_2TckZehD9zHemR6Ng3lSyV8,21825
|
|
40
40
|
flock/frontend/src/components/common/BuildInfo.tsx,sha256=9J5Fww8dhnrxywDvg6jVNrIlLbEGkuRD8Vv2naVQiWk,983
|
|
@@ -57,40 +57,46 @@ flock/frontend/src/components/details/NodeDetailWindow.test.tsx,sha256=nmRhAN5NF
|
|
|
57
57
|
flock/frontend/src/components/details/NodeDetailWindow.tsx,sha256=yAwtio36uobKq75BQWYE_aX2gNcxUmUo946YX50l5oQ,7675
|
|
58
58
|
flock/frontend/src/components/details/RunStatusTab.tsx,sha256=D_6nz0oef3bvbuRMnzlcKroLDKV8t_wXCP4QJJB086g,9895
|
|
59
59
|
flock/frontend/src/components/details/tabs.test.tsx,sha256=drC38YbfUEvfp5eXzDU04IdHL_TlyxNP_lWEEYA7IP4,30519
|
|
60
|
+
flock/frontend/src/components/filters/ArtifactTypeFilter.tsx,sha256=fCB5KmF5phQ3vDVJ6XE_0TQQEMV0aZ1NIX3DbkS_mhs,690
|
|
60
61
|
flock/frontend/src/components/filters/CorrelationIDFilter.module.css,sha256=c_GWPe7itor8AbUYKlBV10JSGvI8_lLaMEXBKkMVbjk,2236
|
|
61
62
|
flock/frontend/src/components/filters/CorrelationIDFilter.test.tsx,sha256=_Pylk0-0gzRyUHgAS2KZuxMGuVCSdjY4jay_8AxYAFY,6181
|
|
62
63
|
flock/frontend/src/components/filters/CorrelationIDFilter.tsx,sha256=AZ8S0ZPyxFtfwk8QBZfduq2fVz214N-Xpz8CZDhQSYo,3635
|
|
63
|
-
flock/frontend/src/components/filters/
|
|
64
|
-
flock/frontend/src/components/filters/
|
|
65
|
-
flock/frontend/src/components/filters/
|
|
66
|
-
flock/frontend/src/components/filters/FilterPills.
|
|
67
|
-
flock/frontend/src/components/filters/FilterPills.
|
|
68
|
-
flock/frontend/src/components/filters/
|
|
69
|
-
flock/frontend/src/components/filters/
|
|
64
|
+
flock/frontend/src/components/filters/FilterFlyout.module.css,sha256=GGPbaRruVKqimU6lDuIIPjvt_MkatLMQJnHhr8i7S80,1941
|
|
65
|
+
flock/frontend/src/components/filters/FilterFlyout.tsx,sha256=FC-7QMBe0EunUTATLZwq2B_ya91VsB6rk6HB64lFlU0,2605
|
|
66
|
+
flock/frontend/src/components/filters/FilterPills.module.css,sha256=OUKsDGKurM3-9OA8TS05QKFBVakJ5J3cy6iyh49jzYI,5293
|
|
67
|
+
flock/frontend/src/components/filters/FilterPills.test.tsx,sha256=T18d4oc8EU9Pe5kxMx0J0uLvL8Vzx3-SGd3LYaSKROI,6204
|
|
68
|
+
flock/frontend/src/components/filters/FilterPills.tsx,sha256=y1pBw8yeF0O6x3LE73Y4h-RnLdveNzLv_cWE5QYCkE0,4831
|
|
69
|
+
flock/frontend/src/components/filters/ProducerFilter.tsx,sha256=fqha0vPMea5V4EBNVYsh51bZ5TqFI8dv4ver34w7dl8,660
|
|
70
|
+
flock/frontend/src/components/filters/SavedFiltersControl.module.css,sha256=JJ06RS7JU91tv62vr-6Af6QTNVQSzY0GzenLh7sK1wA,1155
|
|
71
|
+
flock/frontend/src/components/filters/SavedFiltersControl.test.tsx,sha256=2RLvLx61NjcQZwQZO-TpU5TrTOo-6QCpYv4Jyh_ykFg,5309
|
|
72
|
+
flock/frontend/src/components/filters/SavedFiltersControl.tsx,sha256=flh6_4RPSQ1jxC-T0GzA3bJIQ0dwBSptV78U34eWgIU,4976
|
|
73
|
+
flock/frontend/src/components/filters/TagFilter.tsx,sha256=k6f7V_PNJRhTRDoFOrZDo_Msa64moDcBlQw6nokasFY,625
|
|
74
|
+
flock/frontend/src/components/filters/TimeRangeFilter.module.css,sha256=iownJK2OYJJGiyyCM9OYjwDkuT4F8exmHdpFr9mfcVM,2849
|
|
70
75
|
flock/frontend/src/components/filters/TimeRangeFilter.test.tsx,sha256=4vkGYNecXcwOzp5Oikgyl3B2T0PHGrRpfSZ3Cwv0Tn4,4934
|
|
71
|
-
flock/frontend/src/components/filters/TimeRangeFilter.tsx,sha256=
|
|
76
|
+
flock/frontend/src/components/filters/TimeRangeFilter.tsx,sha256=4-INbQXk0RrDfP4NK1LBNcLQQWhNYos2Ken8cizb114,3311
|
|
77
|
+
flock/frontend/src/components/filters/VisibilityFilter.tsx,sha256=rFS4U90ltzYIUyfVR8NFRDLuTOLZdk_rTIQsXlB9EuI,679
|
|
72
78
|
flock/frontend/src/components/graph/AgentNode.test.tsx,sha256=Wd3AGe1E9GJ26wyRU1AUakki9AQ9euYsKx5lhi1xAfg,1966
|
|
73
79
|
flock/frontend/src/components/graph/AgentNode.tsx,sha256=JOSMiR_YXq6MgME2DfhqHldS_4zZEPySEIEM6t4fg48,12447
|
|
74
|
-
flock/frontend/src/components/graph/GraphCanvas.tsx,sha256=
|
|
80
|
+
flock/frontend/src/components/graph/GraphCanvas.tsx,sha256=x8wBiXgfZjR9AhDhvEg8udZHHF7V9AuvTLE8dxUmRNc,21733
|
|
75
81
|
flock/frontend/src/components/graph/MessageFlowEdge.tsx,sha256=OWYmmlS5P9yIxfCddEleEd27MA-djMd_3fcQmyT22r4,3914
|
|
76
82
|
flock/frontend/src/components/graph/MessageNode.test.tsx,sha256=S0vmtk2r4HGm8844Pb65syim-ZsCqvia24CECGgq5SY,1828
|
|
77
83
|
flock/frontend/src/components/graph/MessageNode.tsx,sha256=axwYof1z3UtLO0QDPfTKnZX6w_TNFlZvVJsun1aDD_k,3645
|
|
78
84
|
flock/frontend/src/components/graph/MiniMap.tsx,sha256=i2lQ51EAp35mwo2C35U6zktwm8o54iKm4MBSN4UJh3Y,1305
|
|
79
85
|
flock/frontend/src/components/graph/TransformEdge.tsx,sha256=dL-FH4a7ujNd7mBgzQvFXrj_KvZeyYXKoEALfnDDCxA,3737
|
|
80
|
-
flock/frontend/src/components/layout/DashboardLayout.css,sha256=
|
|
81
|
-
flock/frontend/src/components/layout/DashboardLayout.tsx,sha256=
|
|
86
|
+
flock/frontend/src/components/layout/DashboardLayout.css,sha256=CPiz_GqEMx6WDR6FTtlnbLJJPVKezNxdKLM7DJ3ANv8,9409
|
|
87
|
+
flock/frontend/src/components/layout/DashboardLayout.tsx,sha256=RX5_N2NkANyh8b1FC69HOkJaNV8DyBtuDyVfyS73JmE,10692
|
|
82
88
|
flock/frontend/src/components/layout/Header.module.css,sha256=BstB1qIzIbGiFmdLVWQnN0Q9iKteDJlBlWApGAcHfTo,1984
|
|
83
89
|
flock/frontend/src/components/layout/Header.tsx,sha256=0Fkd2-KIvbhExizfAa05uSrUBkahD2CCadn0hGFrr1o,1486
|
|
84
|
-
flock/frontend/src/components/modules/
|
|
85
|
-
flock/frontend/src/components/modules/
|
|
86
|
-
flock/frontend/src/components/modules/
|
|
90
|
+
flock/frontend/src/components/modules/HistoricalArtifactsModule.module.css,sha256=uYZSaOhobVNAWiJ8xOgWNucjUhla86cTtkErEB3kDIc,5722
|
|
91
|
+
flock/frontend/src/components/modules/HistoricalArtifactsModule.tsx,sha256=gREg5zUuGWsRsjRlnq5CaNbcn3TPR0tmVspJmRtJPWE,17567
|
|
92
|
+
flock/frontend/src/components/modules/HistoricalArtifactsModuleWrapper.tsx,sha256=2E9Uv0YqGw3oqbnw4sTkG5ZztX5Irh6TWj87XQkhFMw,451
|
|
87
93
|
flock/frontend/src/components/modules/JsonAttributeRenderer.tsx,sha256=PyZAzcEpmVXkWVY4WU08haxY6aqEsaw2k3EPfFKYGF4,4835
|
|
88
94
|
flock/frontend/src/components/modules/ModuleRegistry.test.ts,sha256=gwpRhu0cKp_V3cODpiVKNIMOs33Z6vUxuWpWGmm2Z7U,10419
|
|
89
|
-
flock/frontend/src/components/modules/ModuleRegistry.ts,sha256=
|
|
95
|
+
flock/frontend/src/components/modules/ModuleRegistry.ts,sha256=5d-a_7h_SC-vFi7ssMVBZDq6HjvG0zxCvcgbChVWog8,2563
|
|
90
96
|
flock/frontend/src/components/modules/ModuleWindow.tsx,sha256=RCeWOHWRAWsz46rzGdaBJz61ZJn1rMs2_wePNLeu5OM,7746
|
|
91
97
|
flock/frontend/src/components/modules/TraceModuleJaeger.tsx,sha256=V_QoDKiN4danykesL5suIVnGH2tz7U2fDr565t5ZSB4,78275
|
|
92
98
|
flock/frontend/src/components/modules/TraceModuleJaegerWrapper.tsx,sha256=CLUVG79wEAWTXdMsoBAwR-fRmg_gdjBPcFSk8Zh80w8,390
|
|
93
|
-
flock/frontend/src/components/modules/registerModules.ts,sha256=
|
|
99
|
+
flock/frontend/src/components/modules/registerModules.ts,sha256=iU-dTGBf4tVfsw9gA4LTnlCiFCTVW4S6-UOxXziuU7c,971
|
|
94
100
|
flock/frontend/src/components/settings/AdvancedSettings.tsx,sha256=Ngw5jAIRn3ocXC9r89EwpMJRCK8kMO-Jj2pBZhJ-Uls,6349
|
|
95
101
|
flock/frontend/src/components/settings/AppearanceSettings.tsx,sha256=UHH4BcJ9-F-nRJEJf2rzmX0W-0hvmeKo6AYNF3lZPWE,6872
|
|
96
102
|
flock/frontend/src/components/settings/GraphSettings.tsx,sha256=qX1F4hnsxGcCbn3oHP7nsPPMLyETHG3UL55kJ_3tA-s,3815
|
|
@@ -102,21 +108,21 @@ flock/frontend/src/components/settings/TracingSettings.tsx,sha256=zHZrUuVQzUANcl
|
|
|
102
108
|
flock/frontend/src/hooks/useKeyboardShortcuts.ts,sha256=Dsf64nPtJdW2kV-a-bBpaq1VXZkXyxpioBnI1WIGduM,5019
|
|
103
109
|
flock/frontend/src/hooks/useModulePersistence.test.ts,sha256=kqYlFSzqYK_0jGxeRTeXORZ2KTDo3MdByJ2t2ivbg20,14323
|
|
104
110
|
flock/frontend/src/hooks/useModulePersistence.ts,sha256=ShXIE-OkwJrMYUNRDGjbZQVs4TK97sI85uc0BG6NuWo,5338
|
|
105
|
-
flock/frontend/src/hooks/useModules.ts,sha256=
|
|
111
|
+
flock/frontend/src/hooks/useModules.ts,sha256=2Nmp0GmhWTThMeYkT241VQx0PmFL3BeF31886_n9DSU,5454
|
|
106
112
|
flock/frontend/src/hooks/usePersistence.ts,sha256=J4vFL2a2cS_haQeAMXStzgJMKSvpC8XidzeuOZXaTog,4483
|
|
107
|
-
flock/frontend/src/services/api.ts,sha256=
|
|
113
|
+
flock/frontend/src/services/api.ts,sha256=7-p4CltdA4cyU7RIGrE-PEP6sBv_wFO8dRc-pUOPmOw,8881
|
|
108
114
|
flock/frontend/src/services/indexeddb.test.ts,sha256=lY1JzyKRd4Kaw135JlO7njy5rpaAsRRXLM8SwYxDhAc,27452
|
|
109
|
-
flock/frontend/src/services/indexeddb.ts,sha256=
|
|
115
|
+
flock/frontend/src/services/indexeddb.ts,sha256=gSTkrR-JJlN9ovDuLK45uQrYSrS2dwgOcy14C1pvNdY,28708
|
|
110
116
|
flock/frontend/src/services/layout.test.ts,sha256=-KwUxWCum_Rsyc5NIpk99UB3prfAkMO5ksJULhjOiwA,16174
|
|
111
117
|
flock/frontend/src/services/layout.ts,sha256=5WzlOv7OBlQXiUxrv4l1JwaAfHbUK1C99JOT0fQCNRY,9503
|
|
112
118
|
flock/frontend/src/services/themeApplicator.ts,sha256=utRFw-45e1IEOrI6lHkB_E_-5kc2kFKbN-veAUdXiOM,5802
|
|
113
119
|
flock/frontend/src/services/themeService.ts,sha256=ltDAE30KzzVFDQJGm8awN0Go-l16NgTWYOxlvgxvx0E,1743
|
|
114
120
|
flock/frontend/src/services/websocket.test.ts,sha256=Ix5dQI3lzKJPyFPcTs5yXxu8ZZoJ05f1CWgcQEpCOtg,17062
|
|
115
|
-
flock/frontend/src/services/websocket.ts,sha256=
|
|
116
|
-
flock/frontend/src/store/filterStore.test.ts,sha256=
|
|
117
|
-
flock/frontend/src/store/filterStore.ts,sha256=
|
|
118
|
-
flock/frontend/src/store/graphStore.test.ts,sha256=
|
|
119
|
-
flock/frontend/src/store/graphStore.ts,sha256=
|
|
121
|
+
flock/frontend/src/services/websocket.ts,sha256=u0wWytdtkmQAQ1IpdAbLGDeHSlRuD8v6kemcAt0neQc,29327
|
|
122
|
+
flock/frontend/src/store/filterStore.test.ts,sha256=RUGFlpGe5DUb77Qw4HJvuXEt4vD8GrFUjub9FZMzJ40,5856
|
|
123
|
+
flock/frontend/src/store/filterStore.ts,sha256=qq_iHF4pTyQ_tAbEavkjf9eTg1n4HmBqN_nETWgs8FE,8087
|
|
124
|
+
flock/frontend/src/store/graphStore.test.ts,sha256=ji7r1tJghKEHfWGJ0u7fBiyyJCVbkkZ-6dwAxTvrxaM,5322
|
|
125
|
+
flock/frontend/src/store/graphStore.ts,sha256=FYHDsi7kbV6d72nfOyES38izaJkQgdU3joyLfzM3n78,19621
|
|
120
126
|
flock/frontend/src/store/moduleStore.test.ts,sha256=VxkoEPu0-B3ln20oBk3xLN-c7J55hMYLN2wQQPs4q-k,7800
|
|
121
127
|
flock/frontend/src/store/moduleStore.ts,sha256=rlC412QuCCrV7xAtcyaqU3eJkx0KNWR9OTewjniiT3g,1617
|
|
122
128
|
flock/frontend/src/store/settingsStore.ts,sha256=JNB25kkKxOlaSY1jFTM64BGynhUZ98jZL1mM87PLCF0,5995
|
|
@@ -128,10 +134,11 @@ flock/frontend/src/styles/index.css,sha256=HVMvVEMvlFk8_vqxBdt8CzkleXkV-oSUcQUzo
|
|
|
128
134
|
flock/frontend/src/styles/scrollbar.css,sha256=OHH2nryMANNvuJBloG_t1BPY_BtKMSb36Df4q2X47Rk,1207
|
|
129
135
|
flock/frontend/src/styles/variables.css,sha256=EcOH8mb8ZIoGZU5c-K_2zcuGdtbu_vQWk_gC-X6vtmk,13889
|
|
130
136
|
flock/frontend/src/test/setup.ts,sha256=pG1mhRrywFboBf3VdL9ew62xGBxDxeQfChxZLjOK_mQ,36
|
|
131
|
-
flock/frontend/src/types/filters.ts,sha256=
|
|
132
|
-
flock/frontend/src/types/graph.ts,sha256=
|
|
137
|
+
flock/frontend/src/types/filters.ts,sha256=zPa4AvL9xudvB6RZsqJCllMoLTnvPuBhqU6vLeWO89Y,1041
|
|
138
|
+
flock/frontend/src/types/graph.ts,sha256=c9H3cdc11Q1ToxUMetCUnbD68nrUWooI2DXVfS8YacE,1943
|
|
133
139
|
flock/frontend/src/types/modules.ts,sha256=l5ThtDoD1AxXLjGya-EdQM3eAU55Q0J4XZHQsFrUWws,341
|
|
134
140
|
flock/frontend/src/types/theme.ts,sha256=bjV2zWxBJilEXeosjSSirw05dL7zICShUDx2H0oA5J8,903
|
|
141
|
+
flock/frontend/src/utils/artifacts.ts,sha256=JjbNXKgcBaUJdR7VKDi0LK0T3d-ltYt4HHbiQNB3rmI,790
|
|
135
142
|
flock/frontend/src/utils/mockData.ts,sha256=kAYLkUZCmz09wj6p2q_ZqBUNNROyOFJz5uF3M4nBJRk,1961
|
|
136
143
|
flock/frontend/src/utils/performance.ts,sha256=ZcZjR8DKwF2ixveng2tKIRiW8wZ-ee_RPZFfi1jm4Zo,507
|
|
137
144
|
flock/frontend/src/utils/transforms.test.ts,sha256=zqScvoEyXk_UPaQj2UuJGc5c85p1_8juBwHUF6slnxA,27171
|
|
@@ -152,9 +159,9 @@ flock/logging/telemetry_exporter/duckdb_exporter.py,sha256=MoFFsAb-twZF9ZAB0s8TO
|
|
|
152
159
|
flock/logging/telemetry_exporter/file_exporter.py,sha256=uTgQZSKfbLjzypirBbiVnccaKBDkiRzhFvUdV26pKEY,3126
|
|
153
160
|
flock/logging/telemetry_exporter/sqlite_exporter.py,sha256=754G8s4X-JHHpCdoNydJnPX4NZijZk9URutfPWFIT7s,3479
|
|
154
161
|
flock/mcp/__init__.py,sha256=QuANhTz09E2fFhtp2yJ716WxXKwEpCMTGqHj54VRs2Q,2512
|
|
155
|
-
flock/mcp/client.py,sha256=
|
|
156
|
-
flock/mcp/config.py,sha256=
|
|
157
|
-
flock/mcp/manager.py,sha256=
|
|
162
|
+
flock/mcp/client.py,sha256=FRkuWNohFhzAzv-8aLz8Nd3CxkCf_SgHpfbPGTjRbMg,25790
|
|
163
|
+
flock/mcp/config.py,sha256=EgCFYTkV97fy8PlmnFVkB8FLCCSIni5vF3mQB0Yy-3c,14850
|
|
164
|
+
flock/mcp/manager.py,sha256=X54Ph5CtcIIZNuWndSH2sZijVjVBpPCNHS4M-B1bViU,10942
|
|
158
165
|
flock/mcp/tool.py,sha256=cn59dFM1wD0_hl0GjcHxtVYEmPClqskYVMc9AVMB9RY,5397
|
|
159
166
|
flock/mcp/servers/sse/__init__.py,sha256=qyfDdkZkgscHOkFREvsvoNtzA-CCnXPNma5w9uaIUCo,51
|
|
160
167
|
flock/mcp/servers/sse/flock_sse_server.py,sha256=dbkRAcn11V9bBEoPlCMuuzuErTjHigqsnvGYJL4v2ts,3685
|
|
@@ -165,7 +172,7 @@ flock/mcp/servers/streamable_http/flock_streamable_http_server.py,sha256=qPAypNi
|
|
|
165
172
|
flock/mcp/servers/websockets/__init__.py,sha256=KeNgNQRdeCQ9xgpaHB1I0-HyYeBhkifAuZPTIA8eDqM,47
|
|
166
173
|
flock/mcp/servers/websockets/flock_websocket_server.py,sha256=UywSLftw3stbg_b-3Ygn_tNMo5Btm6I3bmSebcprfjk,3118
|
|
167
174
|
flock/mcp/types/__init__.py,sha256=iwO7MXRjA-WhIyHSCI9fR6KF_UhzjqXJWT13f_8w4HM,1274
|
|
168
|
-
flock/mcp/types/callbacks.py,sha256=
|
|
175
|
+
flock/mcp/types/callbacks.py,sha256=8S-ZhWTnR7dzUtxTc9nFcKCDbNyhnE3Bsm1QpA_ArEg,2607
|
|
169
176
|
flock/mcp/types/factories.py,sha256=B7h8apMDT2nR6POOj7aWWn39UbELt6nxHluPhRmemGw,3424
|
|
170
177
|
flock/mcp/types/handlers.py,sha256=6ukkSMv1VZSfk2QDUiJnm8xifHnQvWZsxWXqN21BYSg,7804
|
|
171
178
|
flock/mcp/types/types.py,sha256=ZbzbVihABFnfmZz2X-CCN7hQDzaSY0T-en43PFbFwQQ,11469
|
|
@@ -508,8 +515,8 @@ flock/themes/zenburned.toml,sha256=UEmquBbcAO3Zj652XKUwCsNoC2iQSlIh-q5c6DH-7Kc,1
|
|
|
508
515
|
flock/themes/zenwritten-dark.toml,sha256=-dgaUfg1iCr5Dv4UEeHv_cN4GrPUCWAiHSxWK20X1kI,1663
|
|
509
516
|
flock/themes/zenwritten-light.toml,sha256=G1iEheCPfBNsMTGaVpEVpDzYBHA_T-MV27rolUYolmE,1666
|
|
510
517
|
flock/utility/output_utility_component.py,sha256=yVHhlIIIoYKziI5UyT_zvQb4G-NsxCTgLwA1wXXTTj4,9047
|
|
511
|
-
flock_core-0.5.
|
|
512
|
-
flock_core-0.5.
|
|
513
|
-
flock_core-0.5.
|
|
514
|
-
flock_core-0.5.
|
|
515
|
-
flock_core-0.5.
|
|
518
|
+
flock_core-0.5.0b70.dist-info/METADATA,sha256=7HdFD28o8dnz71ZYg2lFJ-omhj_v1mFjb3JvmKO1Irg,36377
|
|
519
|
+
flock_core-0.5.0b70.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
520
|
+
flock_core-0.5.0b70.dist-info/entry_points.txt,sha256=UQdPmtHd97gSA_IdLt9MOd-1rrf_WO-qsQeIiHWVrp4,42
|
|
521
|
+
flock_core-0.5.0b70.dist-info/licenses/LICENSE,sha256=U3IZuTbC0yLj7huwJdldLBipSOHF4cPf6cUOodFiaBE,1072
|
|
522
|
+
flock_core-0.5.0b70.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
.filterBar {
|
|
2
|
-
display: flex;
|
|
3
|
-
flex-direction: column;
|
|
4
|
-
gap: var(--space-layout-sm);
|
|
5
|
-
padding: var(--space-layout-sm) var(--space-layout-md);
|
|
6
|
-
background-color: var(--color-bg-elevated);
|
|
7
|
-
border-bottom: 1px solid var(--color-border-subtle);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.filterControls {
|
|
11
|
-
display: flex;
|
|
12
|
-
gap: var(--space-layout-sm);
|
|
13
|
-
align-items: flex-start;
|
|
14
|
-
flex-wrap: wrap;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.filterGroup {
|
|
18
|
-
display: flex;
|
|
19
|
-
flex-direction: column;
|
|
20
|
-
gap: var(--gap-md);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.filterLabel {
|
|
24
|
-
font-size: var(--font-size-overline);
|
|
25
|
-
font-weight: var(--font-weight-semibold);
|
|
26
|
-
color: var(--color-text-tertiary);
|
|
27
|
-
text-transform: uppercase;
|
|
28
|
-
letter-spacing: var(--letter-spacing-wider);
|
|
29
|
-
}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import FilterBar from './FilterBar';
|
|
4
|
-
import { useFilterStore } from '../../store/filterStore';
|
|
5
|
-
|
|
6
|
-
vi.mock('../../store/filterStore');
|
|
7
|
-
vi.mock('./CorrelationIDFilter', () => ({
|
|
8
|
-
default: () => <div data-testid="correlation-id-filter">CorrelationIDFilter</div>,
|
|
9
|
-
}));
|
|
10
|
-
vi.mock('./TimeRangeFilter', () => ({
|
|
11
|
-
default: () => <div data-testid="time-range-filter">TimeRangeFilter</div>,
|
|
12
|
-
}));
|
|
13
|
-
vi.mock('./FilterPills', () => ({
|
|
14
|
-
default: () => <div data-testid="filter-pills">FilterPills</div>,
|
|
15
|
-
}));
|
|
16
|
-
|
|
17
|
-
describe('FilterBar', () => {
|
|
18
|
-
it('should render all filter components', () => {
|
|
19
|
-
vi.mocked(useFilterStore).mockImplementation((selector: any) => {
|
|
20
|
-
const state = {
|
|
21
|
-
correlationId: null,
|
|
22
|
-
timeRange: { preset: 'last10min' },
|
|
23
|
-
availableCorrelationIds: [],
|
|
24
|
-
getActiveFilters: () => [],
|
|
25
|
-
};
|
|
26
|
-
return selector(state);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
render(<FilterBar />);
|
|
30
|
-
|
|
31
|
-
expect(screen.getByTestId('correlation-id-filter')).toBeInTheDocument();
|
|
32
|
-
expect(screen.getByTestId('time-range-filter')).toBeInTheDocument();
|
|
33
|
-
expect(screen.getByTestId('filter-pills')).toBeInTheDocument();
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should have proper layout structure', () => {
|
|
37
|
-
vi.mocked(useFilterStore).mockImplementation((selector: any) => {
|
|
38
|
-
const state = {
|
|
39
|
-
correlationId: null,
|
|
40
|
-
timeRange: { preset: 'last10min' },
|
|
41
|
-
availableCorrelationIds: [],
|
|
42
|
-
getActiveFilters: () => [],
|
|
43
|
-
};
|
|
44
|
-
return selector(state);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
const { container } = render(<FilterBar />);
|
|
48
|
-
|
|
49
|
-
// Should have a container with CSS module class (hashed)
|
|
50
|
-
const filterBar = container.firstChild as HTMLElement;
|
|
51
|
-
expect(filterBar.className).toMatch(/filterBar/);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('should render correlation ID filter and time range filter in top row', () => {
|
|
55
|
-
vi.mocked(useFilterStore).mockImplementation((selector: any) => {
|
|
56
|
-
const state = {
|
|
57
|
-
correlationId: null,
|
|
58
|
-
timeRange: { preset: 'last10min' },
|
|
59
|
-
availableCorrelationIds: [],
|
|
60
|
-
getActiveFilters: () => [],
|
|
61
|
-
};
|
|
62
|
-
return selector(state);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
render(<FilterBar />);
|
|
66
|
-
|
|
67
|
-
const correlationFilter = screen.getByTestId('correlation-id-filter');
|
|
68
|
-
const timeRangeFilter = screen.getByTestId('time-range-filter');
|
|
69
|
-
|
|
70
|
-
// Both should be present
|
|
71
|
-
expect(correlationFilter).toBeInTheDocument();
|
|
72
|
-
expect(timeRangeFilter).toBeInTheDocument();
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it('should render filter pills below filter controls', () => {
|
|
76
|
-
vi.mocked(useFilterStore).mockImplementation((selector: any) => {
|
|
77
|
-
const state = {
|
|
78
|
-
correlationId: 'test-123',
|
|
79
|
-
timeRange: { preset: 'last5min' },
|
|
80
|
-
availableCorrelationIds: [],
|
|
81
|
-
getActiveFilters: () => [
|
|
82
|
-
{
|
|
83
|
-
type: 'correlationId',
|
|
84
|
-
value: 'test-123',
|
|
85
|
-
label: 'Correlation ID: test-123',
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
};
|
|
89
|
-
return selector(state);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
render(<FilterBar />);
|
|
93
|
-
|
|
94
|
-
expect(screen.getByTestId('filter-pills')).toBeInTheDocument();
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('should have appropriate spacing between components', () => {
|
|
98
|
-
vi.mocked(useFilterStore).mockImplementation((selector: any) => {
|
|
99
|
-
const state = {
|
|
100
|
-
correlationId: null,
|
|
101
|
-
timeRange: { preset: 'last10min' },
|
|
102
|
-
availableCorrelationIds: [],
|
|
103
|
-
getActiveFilters: () => [],
|
|
104
|
-
};
|
|
105
|
-
return selector(state);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
const { container } = render(<FilterBar />);
|
|
109
|
-
const filterBar = container.firstChild as HTMLElement;
|
|
110
|
-
|
|
111
|
-
// Should have filter controls with CSS module class (hashed)
|
|
112
|
-
const filterControls = filterBar.querySelector('[class*="filterControls"]');
|
|
113
|
-
expect(filterControls).toBeInTheDocument();
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it('should maintain consistent styling with dashboard theme', () => {
|
|
117
|
-
vi.mocked(useFilterStore).mockImplementation((selector: any) => {
|
|
118
|
-
const state = {
|
|
119
|
-
correlationId: null,
|
|
120
|
-
timeRange: { preset: 'last10min' },
|
|
121
|
-
availableCorrelationIds: [],
|
|
122
|
-
getActiveFilters: () => [],
|
|
123
|
-
};
|
|
124
|
-
return selector(state);
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
const { container } = render(<FilterBar />);
|
|
128
|
-
const filterBar = container.firstChild as HTMLElement;
|
|
129
|
-
|
|
130
|
-
// Should have padding and background consistent with dashboard
|
|
131
|
-
expect(filterBar).toBeDefined();
|
|
132
|
-
});
|
|
133
|
-
});
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import CorrelationIDFilter from './CorrelationIDFilter';
|
|
3
|
-
import TimeRangeFilter from './TimeRangeFilter';
|
|
4
|
-
import FilterPills from './FilterPills';
|
|
5
|
-
import styles from './FilterBar.module.css';
|
|
6
|
-
|
|
7
|
-
const FilterBar: React.FC = () => {
|
|
8
|
-
return (
|
|
9
|
-
<div className={styles.filterBar}>
|
|
10
|
-
{/* Filter Controls */}
|
|
11
|
-
<div className={styles.filterControls}>
|
|
12
|
-
<div className={styles.filterGroup}>
|
|
13
|
-
<label className={styles.filterLabel}>
|
|
14
|
-
Correlation ID
|
|
15
|
-
</label>
|
|
16
|
-
<CorrelationIDFilter />
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
<div className={styles.filterGroup}>
|
|
20
|
-
<label className={styles.filterLabel}>
|
|
21
|
-
Time Range
|
|
22
|
-
</label>
|
|
23
|
-
<TimeRangeFilter />
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
{/* Active Filter Pills */}
|
|
28
|
-
<FilterPills />
|
|
29
|
-
</div>
|
|
30
|
-
);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export default FilterBar;
|