@schlenkr/ragents 0.1.18 → 0.1.20
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.
- package/apps/server/src/host-api.json +6 -2
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-web.ts +3 -0
- package/apps/server/src/plugin-support/actor-programs/contract.ts +0 -3
- package/apps/server/src/plugin-support/removed-layout.ts +94 -0
- package/apps/server/src/ragents/engine.ts +2 -1
- package/apps/server/src/title-compactor.ts +5 -7
- package/apps/web/dist/assets/highlighted-body-KPVGNVTW-k67VKdbw.js +1 -0
- package/apps/web/dist/assets/main-CVjIz7BS.js +674 -0
- package/apps/web/dist/help/guide-clients.html +22 -42
- package/apps/web/dist/help/guide-clients.md +24 -45
- package/apps/web/dist/help/guide-functions.html +1 -1
- package/apps/web/dist/help/guide-functions.md +1 -1
- package/apps/web/dist/help/guide-getting-started.html +14 -22
- package/apps/web/dist/help/guide-getting-started.md +17 -24
- package/apps/web/dist/help/guide-ideas.html +1 -1
- package/apps/web/dist/help/guide-ideas.md +1 -1
- package/apps/web/dist/help/guide-plugins.html +1 -1
- package/apps/web/dist/help/guide-plugins.md +1 -1
- package/apps/web/dist/help/guide-programs.html +1 -1
- package/apps/web/dist/help/guide-programs.md +1 -1
- package/apps/web/dist/help/index.html +12 -79
- package/apps/web/dist/help/mini-app.css +8 -502
- package/apps/web/dist/host-web.json +28 -23
- package/apps/web/dist/index.html +2 -3
- package/apps/web/dist/run-panel.html +3 -4
- package/apps/web/src/Overview.tsx +4 -143
- package/apps/web/src/PluginChat.tsx +22 -116
- package/apps/web/src/PluginRegistry.tsx +4 -9
- package/apps/web/src/RunPreparationChat.tsx +4 -1
- package/apps/web/src/host-modules.ts +2 -0
- package/apps/web/src/main.tsx +23 -3
- package/apps/web/src/panel/RunLine.tsx +5 -2
- package/apps/web/src/panel/RunsPage.tsx +6 -6
- package/apps/web/src/panel/StartPage.tsx +6 -5
- package/apps/web/src/panel/contract.ts +3 -0
- package/apps/web/src/panel/page-props.ts +2 -0
- package/apps/web/src/run-apps.ts +34 -0
- package/apps/web/src/run-overview.ts +0 -27
- package/apps/web/src/run-panel/PanelContributions.tsx +41 -0
- package/apps/web/src/run-panel/RunPanelApp.tsx +172 -91
- package/apps/web/src/run-panel/RunPanelMenu.tsx +4 -3
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +8 -2
- package/apps/web/src/run-panel/clipboard.ts +17 -14
- package/apps/web/src/run-panel/host-contract.ts +8 -9
- package/apps/web/src/run-panel/host.ts +5 -31
- package/apps/web/src/run-panel/input-bridge.ts +15 -7
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/prompt.hbs +4 -5
- package/bundles/ragents.actor-programs/ragents-bundle.json +4 -14
- package/bundles/ragents.actor-programs/server/index.js +2 -14
- package/bundles/ragents.actor-programs/server/index.js.map +2 -2
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -3
- package/bundles/ragents.actor-programs/web/index.js.map +4 -4
- package/bundles/ragents.ask/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +15 -41
- package/bundles/ragents.orchestration/server/index.js +10 -249
- package/bundles/ragents.orchestration/server/index.js.map +4 -4
- package/bundles/ragents.orchestration/web/chunks/chunk-KU7O6MEX.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-KU7O6MEX.js.map +7 -0
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +10 -18
- package/bundles/ragents.orchestration/web/index.js.map +4 -4
- package/bundles/ragents.overseer/ragents-bundle.json +3 -3
- package/bundles/ragents.overseer/server/index.js +0 -1
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +3 -3
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +6 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +3 -3
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +3 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +1 -6
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -15
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/quick-note/RUN.md +1 -1
- package/bundles/ragents.reference/run-scripts/quick-note/src/server.ts +1 -2
- package/bundles/ragents.reference/run-scripts/quick-note/tests/program.test.ts +0 -2
- package/bundles/ragents.reference/run-scripts/run-roster/RUN.md +2 -2
- package/bundles/ragents.reference/run-scripts/run-roster/src/server.ts +1 -2
- package/bundles/ragents.reference/run-scripts/run-roster/tests/program.test.ts +0 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +0 -1
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +1 -2
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +1 -1
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/package.json +8 -8
- package/packages/agent/dist/core/agent-settings.d.ts +1 -1
- package/packages/agent/src/core/agent-settings.ts +2 -2
- package/packages/ai/dist/types.d.ts +2 -1
- package/packages/ai/src/api/ai-sdk.ts +15 -2
- package/packages/ai/src/types.ts +2 -1
- package/packages/ragents/src/runtime/journal.ts +4 -0
- package/plugins/ragents.actor-programs/prompt.hbs +4 -5
- package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
- package/plugins/ragents.actor-programs/server/index.ts +0 -2
- package/plugins/ragents.actor-programs/server/runtime.ts +2 -10
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +5 -20
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +3 -79
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +0 -9
- package/plugins/ragents.actor-programs/web/api.ts +0 -20
- package/plugins/ragents.actor-programs/web/context.ts +0 -3
- package/plugins/ragents.actor-programs/web/index.tsx +0 -9
- package/plugins/ragents.orchestration/ragents-plugin.json +1 -2
- package/plugins/ragents.orchestration/server/index.ts +1 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +1 -1
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +2 -4
- package/plugins/ragents.orchestration/web/InspectionPanel.tsx +21 -0
- package/plugins/ragents.orchestration/web/index.tsx +13 -9
- package/plugins/ragents.orchestration/web/program-slot.ts +0 -3
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +15 -36
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +76 -451
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +0 -27
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -40
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +0 -1
- package/plugins/ragents.reference/examples.ts +1 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +6 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +3 -3
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +3 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +1 -6
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -15
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/quick-note/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/quick-note/src/server.ts +1 -2
- package/plugins/ragents.reference/run-scripts/quick-note/tests/program.test.ts +0 -2
- package/plugins/ragents.reference/run-scripts/run-roster/RUN.md +2 -2
- package/plugins/ragents.reference/run-scripts/run-roster/src/server.ts +1 -2
- package/plugins/ragents.reference/run-scripts/run-roster/tests/program.test.ts +0 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +0 -1
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +1 -2
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
- package/plugins/ragents.reference/walkthroughs.ts +13 -14
- package/apps/web/dist/assets/highlighted-body-KPVGNVTW-BwD4uYEe.js +0 -1
- package/apps/web/dist/assets/main-KBrc5Q77.js +0 -11
- package/apps/web/dist/assets/mermaid-HWGCJPDP-CSCkaArr.js +0 -608
- package/apps/web/dist/assets/runPanel-BjG5NBKm.js +0 -26
- package/apps/web/src/App.tsx +0 -318
- package/apps/web/src/SessionList.tsx +0 -157
- package/apps/web/src/SurfaceShortcuts.tsx +0 -60
- package/apps/web/src/WorkspacePanel.tsx +0 -309
- package/apps/web/src/run-panel.tsx +0 -52
- package/bundles/ragents.orchestration/server/chunks/chunk-QS3WJ3D7.js +0 -11
- package/bundles/ragents.orchestration/server/chunks/chunk-QS3WJ3D7.js.map +0 -7
- package/bundles/ragents.orchestration/server/exports/server/contract.js +0 -9
- package/bundles/ragents.orchestration/server/exports/server/contract.js.map +0 -7
- package/bundles/ragents.orchestration/surface.hbs +0 -39
- package/bundles/ragents.orchestration/web/chunks/chunk-CFMJD5ZI.js +0 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-CFMJD5ZI.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +0 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-UCIMT2R4.js +0 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-UCIMT2R4.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +0 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +0 -7
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +0 -2
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +0 -7
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +0 -2
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +0 -7
- package/plugins/ragents.actor-programs/web/ExpandIcon.tsx +0 -5
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +0 -31
- package/plugins/ragents.orchestration/contract.ts +0 -51
- package/plugins/ragents.orchestration/server/contract.ts +0 -14
- package/plugins/ragents.orchestration/server/surface-tool.ts +0 -198
- package/plugins/ragents.orchestration/surface.hbs +0 -39
- package/plugins/ragents.orchestration/tiled-layout.ts +0 -55
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +0 -29
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +0 -74
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +0 -130
- package/plugins/ragents.orchestration/web/ActorTile.tsx +0 -23
- package/plugins/ragents.orchestration/web/Center.tsx +0 -133
- package/plugins/ragents.orchestration/web/SurfaceTiles.tsx +0 -47
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +0 -280
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +0 -41
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +0 -50
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +0 -47
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +0 -30
- package/plugins/ragents.orchestration/web/surface-entities.ts +0 -21
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +0 -42
- package/plugins/ragents.orchestration/web/tile-docking.ts +0 -105
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +0 -74
- /package/apps/web/dist/assets/{mermaid-HWGCJPDP-BPn4aV2r.css → main-BPn4aV2r.css} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"inputs": {
|
|
3
3
|
"apps/server/src/api/contracts.ts": "5dcbff61b0e317a674fa58475027e1d30da6ac9f1812aced1fdbf325c4271a91",
|
|
4
|
-
"apps/server/src/host-api.ts": "
|
|
5
|
-
"apps/server/src/plugin-support/actor-programs/contract.ts": "
|
|
4
|
+
"apps/server/src/host-api.ts": "b65b335eda3609c41f105a2c3feaeaa37723e2118059a7f47bc705c28e9e7c72",
|
|
5
|
+
"apps/server/src/plugin-support/actor-programs/contract.ts": "1216f5753d2eb0f4867aa4efae29d923a7a802e8af3b38c0e044714d06649c92",
|
|
6
6
|
"apps/server/src/plugin-support/chat-display-contract.ts": "2fb8aab13b5a60b4fe28f87f93cc82afb34b7d8ef1463e376bc3cbc0bcdc797b",
|
|
7
7
|
"apps/server/src/plugin-support/language-server/contract.ts": "01794d6b63c19bb3c201412b45480d8dde5bd0f3d50459fb936a5e9b314d5a83",
|
|
8
8
|
"apps/server/src/plugin-support/product-model-settings-contract.ts": "40d139db6a5c9047ad832c4f29465321e939cdf610789c367f9d064878c3e5f7",
|
|
@@ -10,13 +10,11 @@
|
|
|
10
10
|
"apps/server/src/plugin-support/start-options-contract.ts": "d56fe3df91c0c14cfab8ad58c688a47fc9215be47f62fe19f1ccb34c65065073",
|
|
11
11
|
"apps/server/src/run-preparation-input.ts": "ee806e0e74d99f65e72a63ffddcdeedc70c7d59961d9bae6850f8e3c0de52c25",
|
|
12
12
|
"apps/web/index.html": "4e01810a6b3f8d5924898324364b75ac03ea7eb3b631edf2e4c2ddb39dba3ae8",
|
|
13
|
-
"apps/web/run-panel.html": "615084affe6f0aacec1a0607b4d11cc270fb2bbaa68f04538129b45abe5b494a",
|
|
14
13
|
"apps/web/src/access-session.ts": "9628082681a6e426d0f4bc16fb18ecfce23f9b52538efd1910f6025a157711c2",
|
|
15
14
|
"apps/web/src/access-token.ts": "d3040d9148dd31395da920e2c933d5066c20a249aa967200716070a2b1ecfcce",
|
|
16
15
|
"apps/web/src/AccessContext.tsx": "38cffefabf8dd2bfb7171d1f1c6474c2cf6834c4134469fce460d1942d0ddfb4",
|
|
17
16
|
"apps/web/src/actor-conversation.ts": "73063988356134a2dbf0f83c5cadbe7301870a29aebaf0163301bde792b96b24",
|
|
18
17
|
"apps/web/src/api.ts": "13d17fb25c05aaf53220fe96be0bce9c7155270b7e3e22a0c605c3bd967bddd6",
|
|
19
|
-
"apps/web/src/App.tsx": "95f5eee9b1cb1a359fecc11c6322484842f6cf7f545a29d11764a98d3bcab8d2",
|
|
20
18
|
"apps/web/src/chat-view-settings.tsx": "8a8bd0a77093c0c657c401efd52143c88825b085c06b34bf37440a115e9b3ad5",
|
|
21
19
|
"apps/web/src/chat/chat-target.ts": "44303252e87f172b93194fe0c0eba84217992cb17a438cb2cd2ba00fefccf012",
|
|
22
20
|
"apps/web/src/chat/QuasselHost.tsx": "66b3e2f3549537b8daaf955251ae3ef8254229b92953b9583557d46c3515a486",
|
|
@@ -31,7 +29,7 @@
|
|
|
31
29
|
"apps/web/src/HelpDialog.tsx": "f26779378c46b01516d64dfa4f40ee8bb395fe93e45188788b08ba54dd3d5f91",
|
|
32
30
|
"apps/web/src/highlighting.css": "6a62919c7a97c46650d644c8e35c06f88a2a424fff76e1e813585eb942613b3c",
|
|
33
31
|
"apps/web/src/highlighting.ts": "230fcce0809920d1aa4d461080ae87e045a953b7c837dde3548e8eb0a06e60c6",
|
|
34
|
-
"apps/web/src/host-modules.ts": "
|
|
32
|
+
"apps/web/src/host-modules.ts": "eb42c55b7f4d0a712020c43fb76be807fe6200bb5b6883666066f063c69b0406",
|
|
35
33
|
"apps/web/src/language-server/api.ts": "e7ee2a9f951c7c3ef9418699cab508bfdcfd244e93275ca162f1d7a9c1c57460",
|
|
36
34
|
"apps/web/src/language-server/language-server-plugin.tsx": "f9395456dc3394b27356f5960ef9ac96191ce4a959fd6006f6cb9fad287b5cbf",
|
|
37
35
|
"apps/web/src/lib/format.ts": "b875bed8ad74e53c786c6449a7a87dffd597739c220014f46136326c0a84dfcc",
|
|
@@ -39,16 +37,25 @@
|
|
|
39
37
|
"apps/web/src/lib/http.ts": "492eb2e36fc36d2e9766d1fa38aa164cc8056dda3c95f80222a2b0d6f556cd2b",
|
|
40
38
|
"apps/web/src/lib/labels.ts": "4caffd0ec6a1c2793c863b63247a7f1cfae5a4f22ee9fc3d6f6ff3d6dbe7d66f",
|
|
41
39
|
"apps/web/src/lib/local-storage-setting.ts": "10ceec06882fffebb1f01b8b05bf98b1c9a5c5d07592d1fa05150af7e9bda2e8",
|
|
42
|
-
"apps/web/src/main.tsx": "
|
|
40
|
+
"apps/web/src/main.tsx": "aa28c092fc3c58bb2efd0f1ad9cb913c985fe71e6d4476c0f81b198e23347d34",
|
|
43
41
|
"apps/web/src/model-settings-events.ts": "4c9761536fe8bc3e2994bfe358225a3976f375df8402b366a8a54cf2392ea095",
|
|
44
42
|
"apps/web/src/offered-machines.ts": "46121a01a0e6e76de2143285bf01d46f1db2826e27311328eb47765e785cfd0e",
|
|
45
|
-
"apps/web/src/Overview.tsx": "
|
|
43
|
+
"apps/web/src/Overview.tsx": "d61f12b11ab668148e8494a0d8f1424b12cfa3b4d722b9502efea3f6bfd5fe50",
|
|
46
44
|
"apps/web/src/page-opener.tsx": "a8a61e533137dedcef84d4bf39811278d4ba6cfc456dfad13df0d376f8d24ffb",
|
|
45
|
+
"apps/web/src/panel/connection-state.ts": "75e269fadf95d109a5bfd83bdc441e1eebf3e574b3cb505c72fefa5e858fdd0b",
|
|
46
|
+
"apps/web/src/panel/ConnectionsPage.tsx": "16a5b6c4ed88e7d67fda409eda2c3d0dd170060458dddd2e813ec35dcd355562",
|
|
47
|
+
"apps/web/src/panel/LoginForm.tsx": "a015ea1cb56f5fac28ff2cae145704d7af1d503438b973723c3d4f2f43060d9f",
|
|
48
|
+
"apps/web/src/panel/PanelDialogs.tsx": "b6ff682f572f5b6d483a19492f2ccd2e8ad73f51e23627f2f7d519ab009bcce1",
|
|
49
|
+
"apps/web/src/panel/PanelHeader.tsx": "8f470418fdc09d0414d0995c35ac502ba570ac6e1f9e88457ec82881655ec702",
|
|
50
|
+
"apps/web/src/panel/PanelPage.tsx": "732374a64a47ce62ce7591fe879c67947d73955426f3197644268f9cd7474469",
|
|
51
|
+
"apps/web/src/panel/RunLine.tsx": "54455c334ca9644f5de0912bd424be39eb5162d26066e01c14a0b4fe8938aadd",
|
|
52
|
+
"apps/web/src/panel/RunsPage.tsx": "01a34878c270c166a551b0c3a243e8cef304668ee2fb51d5227bd85ab8c54d33",
|
|
53
|
+
"apps/web/src/panel/StartPage.tsx": "824e12414af71b75639c16e331821f4cc73a33288efd4e396b5bacc89d33cfe1",
|
|
47
54
|
"apps/web/src/plugin-bootstrap.ts": "57363e27011e78aa7a346d42e37eedeb840641aa55f14620fc8d782fff79cfac",
|
|
48
55
|
"apps/web/src/PluginActivation.ts": "4e2fa7ca943f3b4dae1f0eee5b1543971cb2cf81a5a5e29df374f9b1c066c3ec",
|
|
49
|
-
"apps/web/src/PluginChat.tsx": "
|
|
56
|
+
"apps/web/src/PluginChat.tsx": "f525f5bba4de16faa92eea0c53c561844c9407f927b0aa76c3e0f22e36240d2d",
|
|
50
57
|
"apps/web/src/PluginFailureNotice.tsx": "5443e628f50389ff6cc4f09be8b73f3d481efce5976f8955f853058c569bd932",
|
|
51
|
-
"apps/web/src/PluginRegistry.tsx": "
|
|
58
|
+
"apps/web/src/PluginRegistry.tsx": "4f5fdbfff4250bfb73dc606fc5ab1c4752016a4f909f7bc3be49a59820976f96",
|
|
52
59
|
"apps/web/src/product/model-settings.ts": "445b05f8dd34e8145b474d04825408c4b7a2527559ec3ee549f9dba61ef91e13",
|
|
53
60
|
"apps/web/src/product/ModelControl.tsx": "c3467c74fd0c595054b8be92f8df2cbf4be53cdceaac8f3337c96f3da547077a",
|
|
54
61
|
"apps/web/src/product/ProductModelSettings.tsx": "e8513da26228da46ed04a5913967b5453d1276b712e26fa0d663369c904fb608",
|
|
@@ -56,27 +63,27 @@
|
|
|
56
63
|
"apps/web/src/product/SystemPromptControl.tsx": "fcbabb5ae84ef29c89826e968bc3583075dba96423fdd003125bf23605920383",
|
|
57
64
|
"apps/web/src/rpc.ts": "586f9307afa85f11f11faef801bb731230f2099685649aa7d9f666a851c490b5",
|
|
58
65
|
"apps/web/src/rpc/client.ts": "5c50be675f7534b8a20a4e7db25cbe82444886b0f30a0aeed562e380c656f43a",
|
|
59
|
-
"apps/web/src/run-
|
|
60
|
-
"apps/web/src/run-
|
|
61
|
-
"apps/web/src/run-panel/clipboard.ts": "
|
|
62
|
-
"apps/web/src/run-panel/host-contract.ts": "
|
|
63
|
-
"apps/web/src/run-panel/host.ts": "
|
|
64
|
-
"apps/web/src/run-panel/input-bridge.ts": "
|
|
66
|
+
"apps/web/src/run-apps.ts": "cfae1fa570a259bfb41bf1fd13e4d35e8e4a65aab352a76f4f78e65c056938d0",
|
|
67
|
+
"apps/web/src/run-overview.ts": "a6635f9fb20fda1bf92e757c2e345241898d34a1516a022eff57768a53c73e0b",
|
|
68
|
+
"apps/web/src/run-panel/clipboard.ts": "abe517f8d287be7bbbfcf425028b6f202ba228ae08689abc6b36e9548f4fe9bb",
|
|
69
|
+
"apps/web/src/run-panel/host-contract.ts": "85fc6843984f9380c62bde95695d9afe13d8c14a103bbac87574099099def7b0",
|
|
70
|
+
"apps/web/src/run-panel/host.ts": "b8e104c4ee9c98ede8fdf47f64c7523298c17999f97aaded6977122d0ea91897",
|
|
71
|
+
"apps/web/src/run-panel/input-bridge.ts": "44434c17c074dd5f2527aa262497cce848c8ba2c41df01b17b3c82516f7e0069",
|
|
65
72
|
"apps/web/src/run-panel/keyboard.ts": "e89266a2e99c2d96dbec79f5c1aef937101cebdfa74fdc0b4bb1688986097526",
|
|
73
|
+
"apps/web/src/run-panel/PanelContributions.tsx": "fdeef503ae53f65741fdcbc0fbb67a276d4dfd893aced880c12387bf08ea2692",
|
|
66
74
|
"apps/web/src/run-panel/run-panel-location.ts": "d191d3d9da695f277cd8f899b9682ba149c4bf1ae8e3cecc1bc2bc60bf3e7adb",
|
|
67
|
-
"apps/web/src/run-panel/RunPanelApp.tsx": "
|
|
75
|
+
"apps/web/src/run-panel/RunPanelApp.tsx": "5144c5d1c4629ca43aacf185737fca3b1b54a99a5a29669bf7ee0182e970fe8b",
|
|
68
76
|
"apps/web/src/run-panel/RunPanelHeader.tsx": "a1ffbdbf4a705f14b859f11041f7954bfaccc7abe9b7640e7235774a953e0bad",
|
|
69
|
-
"apps/web/src/run-panel/RunPanelMenu.tsx": "
|
|
77
|
+
"apps/web/src/run-panel/RunPanelMenu.tsx": "c1e3820f6c215b4f5f2f5f75f766252beb7b8ed55d5c75664cdbd917728b154c",
|
|
70
78
|
"apps/web/src/run-panel/RunPanelRail.tsx": "d3c0cddb28805690f92d1aeb5fe32a9d7459022cae2a4cdeb4c15b1c6196bd10",
|
|
71
|
-
"apps/web/src/run-panel/RunPanelWorkspace.tsx": "
|
|
79
|
+
"apps/web/src/run-panel/RunPanelWorkspace.tsx": "47156df91e276ff1c638f61d37c3b426bf78fe1946e9380950ab4a4b6744baff",
|
|
72
80
|
"apps/web/src/run-panel/use-session-list.ts": "740a1040b50b597055b3950fcd99c42b3c6eef2cbbbac00eaee1c02370540838",
|
|
73
81
|
"apps/web/src/run-panel/workspace-state.ts": "689d2f9cbbfccc15933b58084e84701af3be058320622b61581c7010406e9758",
|
|
74
82
|
"apps/web/src/run-preparation.ts": "13726f2140a345b0d544758109004bdf05e1ce26df419cefa65001f4682c5422",
|
|
75
83
|
"apps/web/src/run-read-state.ts": "f84c443dbcd8a4d3580c216908884fa5ea7c5a5f6157870eb7e514435bee4901",
|
|
76
84
|
"apps/web/src/run-view.ts": "2f87b3d8a4e8b8dd613bc24def2e9a77b6058c6b527f37a7b90bc1b6d96ca49b",
|
|
77
|
-
"apps/web/src/RunPreparationChat.tsx": "
|
|
85
|
+
"apps/web/src/RunPreparationChat.tsx": "dac9636cb6e53312da07c5cb5cb39f4e2749e6880a8d80282fd859c25821c58e",
|
|
78
86
|
"apps/web/src/RunStore.ts": "3ca3b947521e8e5df5a11ced352d37f90fccbede5889fb873e9ab0157a1d4299",
|
|
79
|
-
"apps/web/src/SessionList.tsx": "456fb59bd476ac480debc2eb21aafd5c6ac1a9e4bbcb9e471d18c02dc599148a",
|
|
80
87
|
"apps/web/src/settings-contributions.ts": "5b5427293dde48cd85cbb99d1169823e0c89609d320363582bd131eb874ce893",
|
|
81
88
|
"apps/web/src/SettingsModal.tsx": "014c227bdbdbe9029db720368b4a1aa826560474dc3f3992938345cbb0efef76",
|
|
82
89
|
"apps/web/src/SourceCode.tsx": "bc80927cba80ac589dd89c8e0f9d1108dcf48d88a78e650051b084b9364c5001",
|
|
@@ -84,7 +91,6 @@
|
|
|
84
91
|
"apps/web/src/StartSelection.tsx": "2b510e3a22ab099c795f47763043ee70294f663c442628d333aaa432ab7e0f08",
|
|
85
92
|
"apps/web/src/StartTiles.tsx": "93b11279249ceeb2abf592bef24e9b6d853a313d08d10cc0b9ce65b3195eece3",
|
|
86
93
|
"apps/web/src/StatusGroup.tsx": "e4638f895a6b03381b1927adadfef28c5c6c11d9291fb46af5d6136663e7dc98",
|
|
87
|
-
"apps/web/src/SurfaceShortcuts.tsx": "89acfce21ebed770319afcb56e5f04ee95f54989c48e491bf5df656e43b07e9f",
|
|
88
94
|
"apps/web/src/theme.ts": "c2dcd2cca4cf931748ad5848f996eddd9baf7f9cf6520219a33ad5226ad93f5c",
|
|
89
95
|
"apps/web/src/ThemeSettings.tsx": "e4dedae92078d65945223128703cc99a3e9ad6fbce4b93285b10f3e6daeee633",
|
|
90
96
|
"apps/web/src/title-model-settings.ts": "08718ba8a4d2e1a38b50642858a2a9ea5cc6f8ead3268bef956c55bb5fa5c7d3",
|
|
@@ -128,8 +134,7 @@
|
|
|
128
134
|
"apps/web/src/ui/toggle.tsx": "039be815aed401e7e652271040fad53286ffa734743381a65f84ac61cb2ea4db",
|
|
129
135
|
"apps/web/src/ui/tooltip.tsx": "6b09f531a1e3e9b9a4bda2c37f25f537963d084b752bcff6e7f9262947abdd2f",
|
|
130
136
|
"apps/web/src/ui/useFileInput.ts": "ceeae0f796aabc947427fdc84454ede086c8dc38c667cf33a8145e427d001202",
|
|
131
|
-
"apps/web/
|
|
132
|
-
"apps/web/vite.config.ts": "6c9b8f92545455c36ab5f84324915052d056bdddb2321b21bfd9280aa5ab629e",
|
|
137
|
+
"apps/web/vite.config.ts": "02b6687438c3824d7444fa4f50b79cd1c5f84e4f0cf74ad0dbc69d5d49c9c651",
|
|
133
138
|
"packages/ragents/src/access.ts": "1317e14439da69f1744bd28e74f1f0a60d74bf11fff02991ddbe4154a54d0f5a",
|
|
134
139
|
"packages/ragents/src/domain/actor-reference.ts": "657f18122b55dfa9ceda91f4457a8cb95b51ff301c9e79387e1fd304a22d2da2",
|
|
135
140
|
"packages/ragents/src/domain/events.ts": "152d943440fe1948f9a5f8dbd0755d1317196037ca3b0bbc9ea2bba6116884a7",
|
package/apps/web/dist/index.html
CHANGED
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="stylesheet" href="/ragents.css" />
|
|
7
7
|
<title>RAgents</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
9
|
-
<link rel="
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/mermaid-HWGCJPDP-BPn4aV2r.css">
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CVjIz7BS.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/main-BPn4aV2r.css">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
12
|
<div id="root"></div>
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="stylesheet" href="/ragents.css" />
|
|
7
|
-
<title>RAgents
|
|
8
|
-
<script type="module" crossorigin src="/assets/
|
|
9
|
-
<link rel="
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/mermaid-HWGCJPDP-BPn4aV2r.css">
|
|
7
|
+
<title>RAgents</title>
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CVjIz7BS.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/main-BPn4aV2r.css">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
12
|
<div id="root"></div>
|
|
@@ -1,24 +1,7 @@
|
|
|
1
|
-
import { useCallback, useEffect, useRef,
|
|
2
|
-
import {
|
|
1
|
+
import { useCallback, useEffect, useRef, type ComponentType } from "react";
|
|
2
|
+
import { Card, DialogTitle } from "./ui";
|
|
3
3
|
import { Modal } from "./ui/modal";
|
|
4
|
-
import type { SessionInfo } from "./api";
|
|
5
4
|
import type { OverviewPanelContext, OverviewPanelContribution, PluginRegistry } from "./PluginRegistry";
|
|
6
|
-
import type { RunReadRevisions } from "./run-read-state";
|
|
7
|
-
import { SessionList } from "./SessionList";
|
|
8
|
-
|
|
9
|
-
/** The run list inside the overview; deletion is the host's job, the section only shows its outcome. */
|
|
10
|
-
export interface RunsSectionProps {
|
|
11
|
-
sessions: SessionInfo[];
|
|
12
|
-
seenRevisions?: RunReadRevisions;
|
|
13
|
-
activeId: string | undefined;
|
|
14
|
-
registry: PluginRegistry;
|
|
15
|
-
unreachable: boolean;
|
|
16
|
-
canCreate: boolean;
|
|
17
|
-
canDelete: boolean;
|
|
18
|
-
onOpen: (id: string) => void;
|
|
19
|
-
onCreate: () => void;
|
|
20
|
-
onDelete: (ids: readonly string[]) => Promise<void>;
|
|
21
|
-
}
|
|
22
5
|
|
|
23
6
|
interface OverviewProps {
|
|
24
7
|
open: boolean;
|
|
@@ -27,7 +10,6 @@ interface OverviewProps {
|
|
|
27
10
|
registry: PluginRegistry;
|
|
28
11
|
panels: readonly OverviewPanelContribution[];
|
|
29
12
|
onBusy: (id: string, busy: boolean) => void;
|
|
30
|
-
runs?: RunsSectionProps;
|
|
31
13
|
}
|
|
32
14
|
|
|
33
15
|
const FOCUSABLE_SELECTOR =
|
|
@@ -35,8 +17,8 @@ const FOCUSABLE_SELECTOR =
|
|
|
35
17
|
|
|
36
18
|
const overviewSurfaceClass = "pointer-events-auto shadow-pop";
|
|
37
19
|
|
|
38
|
-
/** The
|
|
39
|
-
export function Overview({ onBusy, onClose, onOpen, open, panels, registry
|
|
20
|
+
/** The shared shell opens contributions placed in the overview. */
|
|
21
|
+
export function Overview({ onBusy, onClose, onOpen, open, panels, registry }: OverviewProps) {
|
|
40
22
|
const overviewRef = useRef<HTMLDivElement>(null);
|
|
41
23
|
|
|
42
24
|
useEffect(() => {
|
|
@@ -56,7 +38,6 @@ export function Overview({ onBusy, onClose, onOpen, open, panels, registry, runs
|
|
|
56
38
|
{panels.map(({ id, Panel }) => (
|
|
57
39
|
<OverviewPanelHost id={id} key={id} onBusy={onBusy} onClose={onClose} onOpen={onOpen} open={open} Panel={Panel} registry={registry} />
|
|
58
40
|
))}
|
|
59
|
-
{runs && <RunsSection {...runs} />}
|
|
60
41
|
</div>
|
|
61
42
|
</Modal>
|
|
62
43
|
);
|
|
@@ -79,123 +60,3 @@ function OverviewPanelHost({ id, onBusy, onClose, onOpen, open, Panel, registry
|
|
|
79
60
|
</Card>
|
|
80
61
|
);
|
|
81
62
|
}
|
|
82
|
-
|
|
83
|
-
function RunsSection({ activeId, canCreate, canDelete, onCreate, onDelete, onOpen, registry, sessions, seenRevisions, unreachable }: RunsSectionProps) {
|
|
84
|
-
const [error, setError] = useState<string>();
|
|
85
|
-
const [selectMode, setSelectMode] = useState(false);
|
|
86
|
-
const [selectedIds, setSelectedIds] = useState<ReadonlySet<string>>(() => new Set());
|
|
87
|
-
const [confirmBulkDelete, setConfirmBulkDelete] = useState(false);
|
|
88
|
-
const [deleting, setDeleting] = useState(false);
|
|
89
|
-
|
|
90
|
-
const exitSelectMode = () => {
|
|
91
|
-
setSelectMode(false);
|
|
92
|
-
setSelectedIds(new Set());
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const toggleSelected = (id: string) => {
|
|
96
|
-
setSelectedIds((current) => {
|
|
97
|
-
const next = new Set(current);
|
|
98
|
-
if (!next.delete(id)) next.add(id);
|
|
99
|
-
return next;
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const remove = async (ids: readonly string[]) => {
|
|
104
|
-
setDeleting(true);
|
|
105
|
-
setError(undefined);
|
|
106
|
-
try {
|
|
107
|
-
await onDelete(ids);
|
|
108
|
-
} catch (cause) {
|
|
109
|
-
setError(cause instanceof Error ? cause.message : String(cause));
|
|
110
|
-
} finally {
|
|
111
|
-
setDeleting(false);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
const removeSelected = async () => {
|
|
116
|
-
await remove(sessions.filter((session) => selectedIds.has(session.id)).map((session) => session.id));
|
|
117
|
-
setConfirmBulkDelete(false);
|
|
118
|
-
exitSelectMode();
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
return (
|
|
122
|
-
<section aria-labelledby="overview-runs-title" className="flex min-h-0 min-w-0 flex-1 flex-col max-[900px]:flex-[1_1_50%]">
|
|
123
|
-
<Card className={`${overviewSurfaceClass} min-h-0 flex-1 gap-workspace-inset overflow-y-auto overscroll-contain pt-workspace-inset pr-6 pb-6 pl-6 max-[900px]:px-3 max-[900px]:pt-3.5 max-[900px]:pb-4`}>
|
|
124
|
-
<header className="flex flex-wrap items-center gap-x-3.5 gap-y-2.5">
|
|
125
|
-
<h2 className="text-[0.95rem] font-semibold" id="overview-runs-title">
|
|
126
|
-
Runs <span className="ml-1 text-[0.8rem] font-medium tabular-nums text-muted-foreground">{sessions.length}</span>
|
|
127
|
-
</h2>
|
|
128
|
-
{unreachable && <span className="text-[0.72rem] font-medium text-destructive" role="alert">Server unreachable</span>}
|
|
129
|
-
{canDelete && sessions.length > 0 && (
|
|
130
|
-
<div className="ml-auto flex flex-wrap items-center gap-1">
|
|
131
|
-
{selectMode
|
|
132
|
-
? (
|
|
133
|
-
<>
|
|
134
|
-
<Button onClick={() => setSelectedIds(new Set(sessions.map((session) => session.id)))} size="sm" variant="ghost">
|
|
135
|
-
All
|
|
136
|
-
</Button>
|
|
137
|
-
<Button onClick={() => setSelectedIds(new Set())} size="sm" variant="ghost">
|
|
138
|
-
None
|
|
139
|
-
</Button>
|
|
140
|
-
<Button
|
|
141
|
-
className="ml-auto"
|
|
142
|
-
disabled={selectedIds.size === 0 || deleting}
|
|
143
|
-
onClick={() => setConfirmBulkDelete(true)}
|
|
144
|
-
size="sm"
|
|
145
|
-
variant="destructive"
|
|
146
|
-
>
|
|
147
|
-
Delete ({selectedIds.size})
|
|
148
|
-
</Button>
|
|
149
|
-
<Button onClick={exitSelectMode} size="sm" variant="ghost">
|
|
150
|
-
Done
|
|
151
|
-
</Button>
|
|
152
|
-
</>
|
|
153
|
-
)
|
|
154
|
-
: (
|
|
155
|
-
<Button onClick={() => setSelectMode(true)} size="sm" variant="ghost">
|
|
156
|
-
Select
|
|
157
|
-
</Button>
|
|
158
|
-
)}
|
|
159
|
-
</div>
|
|
160
|
-
)}
|
|
161
|
-
</header>
|
|
162
|
-
{error && <p className="text-[0.72rem] font-medium text-destructive" role="alert">{error}</p>}
|
|
163
|
-
<p className="mb-5.5 text-[0.75rem] text-muted-foreground">By last activity in the run. New activity has come in since you last viewed it.</p>
|
|
164
|
-
<SessionList
|
|
165
|
-
seenRevisions={seenRevisions}
|
|
166
|
-
activeId={activeId}
|
|
167
|
-
onCreate={canCreate ? onCreate : undefined}
|
|
168
|
-
onDelete={canDelete ? (id) => void remove([id]) : undefined}
|
|
169
|
-
onSelect={onOpen}
|
|
170
|
-
onToggleSelected={toggleSelected}
|
|
171
|
-
registry={registry}
|
|
172
|
-
selectMode={selectMode}
|
|
173
|
-
selectedIds={selectedIds}
|
|
174
|
-
sessions={sessions}
|
|
175
|
-
/>
|
|
176
|
-
{confirmBulkDelete && (
|
|
177
|
-
<Dialog open onOpenChange={(open) => { if (!open && !deleting) setConfirmBulkDelete(false); }}>
|
|
178
|
-
<DialogContent scope="page" showCloseButton={false} size="small">
|
|
179
|
-
<DialogHeader>
|
|
180
|
-
<DialogTitle>Delete runs</DialogTitle>
|
|
181
|
-
<DialogDescription>
|
|
182
|
-
{selectedIds.size === 1
|
|
183
|
-
? "One run will be permanently deleted."
|
|
184
|
-
: `${selectedIds.size} runs will be permanently deleted.`}
|
|
185
|
-
</DialogDescription>
|
|
186
|
-
</DialogHeader>
|
|
187
|
-
<DialogFooter>
|
|
188
|
-
<Button disabled={deleting} onClick={() => setConfirmBulkDelete(false)} variant="outline">
|
|
189
|
-
Cancel
|
|
190
|
-
</Button>
|
|
191
|
-
<Button disabled={deleting} onClick={() => void removeSelected()}>
|
|
192
|
-
{deleting ? "Deleting ..." : `Delete (${selectedIds.size})`}
|
|
193
|
-
</Button>
|
|
194
|
-
</DialogFooter>
|
|
195
|
-
</DialogContent>
|
|
196
|
-
</Dialog>
|
|
197
|
-
)}
|
|
198
|
-
</Card>
|
|
199
|
-
</section>
|
|
200
|
-
);
|
|
201
|
-
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runApps, selectedRunApp, RunAppView } from "./run-apps";
|
|
1
2
|
import { isRecord } from "./lib/guards";
|
|
2
3
|
import { useAccess } from "./AccessContext";
|
|
3
4
|
import {
|
|
@@ -19,18 +20,15 @@ import { runUserLocation, type ChatRunLocation } from "./chat/user-location";
|
|
|
19
20
|
import { dismissAction, interruptActorTurn, type SessionInfo } from "./api";
|
|
20
21
|
import { useRunStore } from "./RunStore";
|
|
21
22
|
import { withToolSummaries } from "./toolLine";
|
|
22
|
-
import {
|
|
23
|
+
import { StartOptionControls, StartOptionsProvider, useStartOptions } from "./StartOptions";
|
|
23
24
|
import { useAttachmentCapabilities } from "./chat/useAttachmentCapabilities";
|
|
24
25
|
import { StartSelection } from "./StartSelection";
|
|
25
|
-
import { WorkspacePanel, useWorkspacePanelState, type WorkspacePanelState } from "./WorkspacePanel";
|
|
26
26
|
import { StatusGroup } from "./StatusGroup";
|
|
27
|
-
import { SurfaceShortcuts } from "./SurfaceShortcuts";
|
|
28
27
|
import { RunPanelHeader } from "./run-panel/RunPanelHeader";
|
|
29
28
|
import { RunPanelRail } from "./run-panel/RunPanelRail";
|
|
30
29
|
import { RunPanelWorkspace } from "./run-panel/RunPanelWorkspace";
|
|
31
30
|
import { activeWorkspaceTab, saveRunPanelWorkspaceState, useRunPanelWorkspaceState } from "./run-panel/workspace-state";
|
|
32
|
-
import {
|
|
33
|
-
import { cn, DialogTitle, Spinner } from "./ui";
|
|
31
|
+
import { cn, DialogTitle } from "./ui";
|
|
34
32
|
import { SurfaceModalContext, RunModalContext } from "./ui/dialog";
|
|
35
33
|
import { Modal } from "./ui/modal";
|
|
36
34
|
import {
|
|
@@ -51,8 +49,8 @@ import {
|
|
|
51
49
|
|
|
52
50
|
const chatElementClass = "flex h-full min-h-0 w-full min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border-soft/60 bg-card/55";
|
|
53
51
|
|
|
54
|
-
/**
|
|
55
|
-
export type ChatLayout = "
|
|
52
|
+
/** The shared run panel or one mini-app in an editor. */
|
|
53
|
+
export type ChatLayout = "panel" | { element: string };
|
|
56
54
|
|
|
57
55
|
interface PluginChatProps {
|
|
58
56
|
autoFocusChat?: boolean;
|
|
@@ -61,7 +59,6 @@ interface PluginChatProps {
|
|
|
61
59
|
toolbarContainer?: HTMLElement | null;
|
|
62
60
|
statusContainer?: HTMLElement | null;
|
|
63
61
|
headerContainer?: HTMLElement | null;
|
|
64
|
-
workspaceHeaderContainer?: HTMLElement | null;
|
|
65
62
|
startDialog?: { onClose: () => void; initialEntryId?: string };
|
|
66
63
|
initialStartOptions?: Readonly<Record<string, unknown>>;
|
|
67
64
|
onStarted?: () => void;
|
|
@@ -78,10 +75,9 @@ interface ChatWorkspaceProps {
|
|
|
78
75
|
layout: ChatLayout;
|
|
79
76
|
toolbarContainer?: HTMLElement | null;
|
|
80
77
|
statusContainer?: HTMLElement | null;
|
|
81
|
-
panelState:
|
|
78
|
+
panelState: "expanded" | "collapsed";
|
|
82
79
|
onTogglePanel: () => void;
|
|
83
80
|
headerContainer?: HTMLElement | null;
|
|
84
|
-
workspaceHeaderContainer?: HTMLElement | null;
|
|
85
81
|
startDialog?: { onClose: () => void; initialEntryId?: string };
|
|
86
82
|
onStarted: () => void;
|
|
87
83
|
onModalContainer: (element: HTMLDivElement | null) => void;
|
|
@@ -94,7 +90,7 @@ interface ChatWorkspaceProps {
|
|
|
94
90
|
tabs: readonly WorkspaceTabContribution[];
|
|
95
91
|
}
|
|
96
92
|
|
|
97
|
-
export function PluginChat({ autoFocusChat, onAutoFocusChatSettled, layout = "
|
|
93
|
+
export function PluginChat({ autoFocusChat, onAutoFocusChatSettled, layout = "panel", headerContainer, toolbarContainer, statusContainer, initialStartOptions, onStarted, onLocationChange, onViewed, viewing = false, registry, session, startDialog }: PluginChatProps) {
|
|
98
94
|
const access = useAccess();
|
|
99
95
|
const startOnly = startDialog !== undefined;
|
|
100
96
|
const [modalContainer, setModalContainer] = useState<HTMLDivElement | null>(null);
|
|
@@ -156,7 +152,7 @@ export function PluginChat({ autoFocusChat, onAutoFocusChatSettled, layout = "wo
|
|
|
156
152
|
|
|
157
153
|
const registeredTabs = useMemo(() => registry.registeredTabs(sessionContext, access), [access, registry, sessionContext]);
|
|
158
154
|
const availableTabs = useMemo(() => registry.availableTabs(sessionContext, access), [access, registry, sessionContext]);
|
|
159
|
-
const { activeTabId, panelState, showTab, togglePanel } = useWorkspaceTabs(session.id,
|
|
155
|
+
const { activeTabId, panelState, showTab, togglePanel } = useWorkspaceTabs(session.id, availableTabs);
|
|
160
156
|
|
|
161
157
|
const openTab = useCallback((tabId: string, selection?: unknown) => {
|
|
162
158
|
if (!registeredTabs.some((tab) => tab.id === tabId)) {
|
|
@@ -228,7 +224,6 @@ export function PluginChat({ autoFocusChat, onAutoFocusChatSettled, layout = "wo
|
|
|
228
224
|
panelState={panelState}
|
|
229
225
|
onTogglePanel={togglePanel}
|
|
230
226
|
headerContainer={headerContainer}
|
|
231
|
-
workspaceHeaderContainer={workspaceHeaderContainer}
|
|
232
227
|
statusContainer={statusContainer}
|
|
233
228
|
onModalContainer={setModalContainer}
|
|
234
229
|
onSurfaceModalContainer={setSurfaceModalContainer}
|
|
@@ -249,33 +244,18 @@ export function PluginChat({ autoFocusChat, onAutoFocusChatSettled, layout = "wo
|
|
|
249
244
|
);
|
|
250
245
|
}
|
|
251
246
|
|
|
252
|
-
|
|
253
|
-
function useWorkspaceTabs(runId: string, layout: ChatLayout, availableTabs: readonly WorkspaceTabContribution[]) {
|
|
254
|
-
const [requestedTabId, setRequestedTabId] = useState<string>();
|
|
255
|
-
const [workspaceState, updateWorkspaceState] = useWorkspacePanelState(runId);
|
|
247
|
+
function useWorkspaceTabs(runId: string, availableTabs: readonly WorkspaceTabContribution[]) {
|
|
256
248
|
const stored = useRunPanelWorkspaceState(runId);
|
|
257
|
-
const
|
|
258
|
-
const
|
|
259
|
-
? activeWorkspaceTab(stored, availableTabs)
|
|
260
|
-
: requestedTabId !== undefined && availableTabs.some((tab) => tab.id === requestedTabId) ? requestedTabId : availableTabs[0]?.id ?? "";
|
|
261
|
-
const panelState: WorkspacePanelState = runPanel ? (activeTabId === "" ? "collapsed" : "expanded") : workspaceState;
|
|
249
|
+
const activeTabId = activeWorkspaceTab(stored, availableTabs);
|
|
250
|
+
const panelState = activeTabId === "" ? "collapsed" : "expanded";
|
|
262
251
|
const firstTabId = availableTabs[0]?.id ?? null;
|
|
263
252
|
const showTab = useCallback((tabId: string) => {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
setRequestedTabId(tabId);
|
|
269
|
-
updateWorkspaceState("expanded");
|
|
270
|
-
}, [runId, runPanel, stored, updateWorkspaceState]);
|
|
253
|
+
saveRunPanelWorkspaceState(runId, { ...stored, tab: tabId });
|
|
254
|
+
}, [runId, stored]);
|
|
271
255
|
const togglePanel = useCallback(() => {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
}
|
|
276
|
-
updateWorkspaceState(panelState === "expanded" ? "collapsed" : "expanded");
|
|
277
|
-
}, [firstTabId, panelState, runId, runPanel, stored, updateWorkspaceState]);
|
|
278
|
-
return { activeTabId, panelState, showTab, togglePanel };
|
|
256
|
+
saveRunPanelWorkspaceState(runId, { ...stored, tab: panelState === "expanded" ? null : stored.tab ?? firstTabId });
|
|
257
|
+
}, [firstTabId, panelState, runId, stored]);
|
|
258
|
+
return { activeTabId, panelState, showTab, togglePanel } as const;
|
|
279
259
|
}
|
|
280
260
|
|
|
281
261
|
function UserLocationReporter({ activeTabId, onChange, panelVisible, runId, tabs }: {
|
|
@@ -304,7 +284,6 @@ function ChatWorkspace({
|
|
|
304
284
|
panelState,
|
|
305
285
|
onTogglePanel,
|
|
306
286
|
headerContainer,
|
|
307
|
-
workspaceHeaderContainer,
|
|
308
287
|
statusContainer = null,
|
|
309
288
|
onModalContainer,
|
|
310
289
|
onSurfaceModalContainer,
|
|
@@ -318,9 +297,7 @@ function ChatWorkspace({
|
|
|
318
297
|
tabs,
|
|
319
298
|
}: ChatWorkspaceProps) {
|
|
320
299
|
const access = useAccess();
|
|
321
|
-
const
|
|
322
|
-
const headerContributions = registry.headersFor(session, access, "header");
|
|
323
|
-
const surfaceContributions = registry.headersFor(session, access, "surface");
|
|
300
|
+
const headerContributions = registry.headersFor(session, access);
|
|
324
301
|
const startSession = useMemo<SessionContext>(() => {
|
|
325
302
|
const attempt = async (work: () => Promise<void>) => {
|
|
326
303
|
await work();
|
|
@@ -345,7 +322,6 @@ function ChatWorkspace({
|
|
|
345
322
|
};
|
|
346
323
|
}, [attentionActive]);
|
|
347
324
|
const hasWorkspace = !startDialog && tabs.length > 0;
|
|
348
|
-
const SurfaceCenter = registry.surface?.Center;
|
|
349
325
|
const SurfaceRunPanel = registry.surface?.RunPanel;
|
|
350
326
|
const bindCompactContainers = useCallback((element: HTMLDivElement | null) => {
|
|
351
327
|
onModalContainer(element);
|
|
@@ -375,29 +351,10 @@ function ChatWorkspace({
|
|
|
375
351
|
const status = registry.sessionStatus.filter((entry) => !entry.readRight || access.can(entry.readRight)).map(({ id, order, Status }) => <StatusGroup container={statusContainer} key={id} label="Run actions" order={order}>
|
|
376
352
|
<Status navigation={navigation} session={session} />
|
|
377
353
|
</StatusGroup>);
|
|
378
|
-
const header = headerContainer && createPortal(
|
|
379
|
-
|
|
380
|
-
: <div className="flex min-w-0 flex-[1_0_auto] items-stretch">
|
|
381
|
-
<div className="flex min-w-0 flex-none items-stretch text-[0.82rem] font-semibold text-foreground">
|
|
382
|
-
<ToolbarItem className="min-w-[140px] max-w-[260px] justify-start font-semibold max-md:min-w-[120px] max-md:max-w-[180px]" title={session.session.title}><ToolbarText>{session.session.title || "New run"}</ToolbarText></ToolbarItem>
|
|
383
|
-
{registry.sessionMetadata.map(({ id, Metadata }) => (
|
|
384
|
-
<Metadata key={id} placement="header" session={session.session} />
|
|
385
|
-
))}
|
|
386
|
-
<StartOptionBadges registry={registry} session={session} />
|
|
387
|
-
{session.running && <ToolbarItem className="text-[0.72rem] font-normal text-muted-foreground"><Spinner aria-hidden className="size-2.5" /><ToolbarText>Processing</ToolbarText></ToolbarItem>}
|
|
388
|
-
{runError && <ToolbarItem className="text-[0.72rem] font-medium text-destructive" title={runError}><ToolbarText>Run unreachable</ToolbarText></ToolbarItem>}
|
|
389
|
-
</div>
|
|
390
|
-
{headerContributions.length > 0 && (
|
|
391
|
-
<div className="flex min-w-0 flex-none items-stretch overflow-visible">
|
|
392
|
-
{headerContributions.map(({ id, Header }) => (
|
|
393
|
-
<Header key={id} navigation={navigation} session={session} />
|
|
394
|
-
))}
|
|
395
|
-
</div>
|
|
396
|
-
)}
|
|
397
|
-
{attention && <ToolbarItem as="div" className="bg-primary/10 text-[0.72rem] font-semibold text-primary" role="status"><ToolbarText>{attention.label}</ToolbarText></ToolbarItem>}
|
|
398
|
-
</div>, headerContainer);
|
|
354
|
+
const header = headerContainer && createPortal(
|
|
355
|
+
<RunPanelHeader attention={attention} contributions={headerContributions} navigation={navigation} registry={registry} runError={runError} session={session} working={session.running} />, headerContainer);
|
|
399
356
|
|
|
400
|
-
|
|
357
|
+
return (
|
|
401
358
|
<div className="flex min-h-0 min-w-0 flex-1 flex-col">
|
|
402
359
|
{status}
|
|
403
360
|
{header}
|
|
@@ -409,7 +366,6 @@ function ChatWorkspace({
|
|
|
409
366
|
{SurfaceRunPanel
|
|
410
367
|
? <SurfaceRunPanel
|
|
411
368
|
toolbarContainer={toolbarContainer}
|
|
412
|
-
runToolbarContainer={null}
|
|
413
369
|
statusContainer={statusContainer}
|
|
414
370
|
cardSections={registry.cardSections}
|
|
415
371
|
surfaceElements={registry.surfaceElements}
|
|
@@ -426,54 +382,6 @@ function ChatWorkspace({
|
|
|
426
382
|
</div>
|
|
427
383
|
</div>
|
|
428
384
|
);
|
|
429
|
-
|
|
430
|
-
return (
|
|
431
|
-
<div className="flex min-h-0 min-w-0 flex-1 flex-col">
|
|
432
|
-
{status}
|
|
433
|
-
{header}
|
|
434
|
-
<div
|
|
435
|
-
className="relative flex min-h-0 min-w-0 flex-1 data-[resizing=true]:cursor-col-resize data-[resizing=true]:select-none"
|
|
436
|
-
ref={onModalContainer}
|
|
437
|
-
>
|
|
438
|
-
<div className="flex min-h-0 min-w-0 flex-1 flex-col">
|
|
439
|
-
{(SurfaceCenter || surfaceContributions.length > 0) && <div aria-label="Apps and actors" className="flex min-h-[52px] min-w-0 flex-none items-stretch border-b border-border bg-[color-mix(in_srgb,var(--surface)_55%,var(--card))]" role="region">
|
|
440
|
-
<div className="flex flex-none items-stretch empty:hidden" ref={setRunToolbarContainer} />
|
|
441
|
-
<SurfaceShortcuts key={session.session.id}>
|
|
442
|
-
{surfaceContributions.map(({ id, Header }) => <Header key={id} navigation={navigation} session={session} />)}
|
|
443
|
-
</SurfaceShortcuts>
|
|
444
|
-
</div>}
|
|
445
|
-
<div className="relative isolate flex min-h-0 min-w-0 flex-1" ref={onSurfaceModalContainer}>
|
|
446
|
-
{SurfaceCenter
|
|
447
|
-
? (
|
|
448
|
-
<SurfaceCenter
|
|
449
|
-
toolbarContainer={toolbarContainer}
|
|
450
|
-
runToolbarContainer={runToolbarContainer}
|
|
451
|
-
statusContainer={statusContainer}
|
|
452
|
-
cardSections={registry.cardSections}
|
|
453
|
-
surfaceElements={registry.surfaceElements}
|
|
454
|
-
navigation={navigation}
|
|
455
|
-
renderChat={renderChat}
|
|
456
|
-
session={session}
|
|
457
|
-
tabIds={tabs.map((tab) => tab.id)}
|
|
458
|
-
/>
|
|
459
|
-
)
|
|
460
|
-
: <DefaultCenter renderChat={renderChat} />}
|
|
461
|
-
</div>
|
|
462
|
-
</div>
|
|
463
|
-
{hasWorkspace && (
|
|
464
|
-
<WorkspacePanel
|
|
465
|
-
headerContainer={workspaceHeaderContainer ?? null}
|
|
466
|
-
navigation={navigation}
|
|
467
|
-
onToggleState={onTogglePanel}
|
|
468
|
-
pendingTabIds={pendingTabIds}
|
|
469
|
-
session={session}
|
|
470
|
-
state={panelState}
|
|
471
|
-
tabs={tabs}
|
|
472
|
-
/>
|
|
473
|
-
)}
|
|
474
|
-
</div>
|
|
475
|
-
</div>
|
|
476
|
-
);
|
|
477
385
|
}
|
|
478
386
|
|
|
479
387
|
function DefaultCenter({ renderChat }: {
|
|
@@ -495,14 +403,12 @@ function SurfaceElementView({ elementId, navigation, registry, session }: {
|
|
|
495
403
|
registry: PluginRegistry;
|
|
496
404
|
session: SessionContext;
|
|
497
405
|
}) {
|
|
498
|
-
const match = registry.surfaceElements
|
|
499
|
-
.filter((definition) => definition.id === elementId && definition.visible !== false)
|
|
500
|
-
.map((definition) => ({ Element: contribution.Element, definition })))[0];
|
|
406
|
+
const match = selectedRunApp(runApps(session, registry.surfaceElements), elementId);
|
|
501
407
|
if (!match) return <div className="m-auto max-w-[420px] p-6 text-center text-muted-foreground" role="status">
|
|
502
408
|
{session.runView === undefined ? "Loading run ..." : "This mini-app no longer exists in the run."}
|
|
503
409
|
</div>;
|
|
504
410
|
return <div className="flex min-h-0 min-w-0 flex-1 flex-col" data-view="element">
|
|
505
|
-
<
|
|
411
|
+
<RunAppView app={match} navigation={navigation} session={session} />
|
|
506
412
|
</div>;
|
|
507
413
|
}
|
|
508
414
|
|
|
@@ -109,7 +109,7 @@ export interface EntityReference {
|
|
|
109
109
|
id: string;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
/** The
|
|
112
|
+
/** The selected actor or mini-app, reported as the current run location. */
|
|
113
113
|
export interface SurfaceController {
|
|
114
114
|
acceptSelection: (selection: EntityReference | undefined) => void;
|
|
115
115
|
selection: EntityReference | undefined;
|
|
@@ -124,7 +124,6 @@ export interface ChatDisplayOptions {
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
export interface SurfaceCenterContext {
|
|
127
|
-
runToolbarContainer: HTMLElement | null;
|
|
128
127
|
toolbarContainer: HTMLElement | null;
|
|
129
128
|
statusContainer: HTMLElement | null;
|
|
130
129
|
cardSections: readonly CardSectionContribution[];
|
|
@@ -136,9 +135,7 @@ export interface SurfaceCenterContext {
|
|
|
136
135
|
}
|
|
137
136
|
|
|
138
137
|
export interface SurfaceContribution {
|
|
139
|
-
|
|
140
|
-
/** The run panel (run-panel.html) with the same context; without a contribution it shows only the chat. */
|
|
141
|
-
RunPanel?: ComponentType<SurfaceCenterContext>;
|
|
138
|
+
RunPanel: ComponentType<SurfaceCenterContext>;
|
|
142
139
|
}
|
|
143
140
|
|
|
144
141
|
export interface SurfaceElementDefinition {
|
|
@@ -217,7 +214,6 @@ export interface SessionHeaderContribution {
|
|
|
217
214
|
readRight?: string;
|
|
218
215
|
/** The contribution needs the run's workspace and is missing where the viewer cannot reach it. */
|
|
219
216
|
requiresWorkspace?: boolean;
|
|
220
|
-
placement?: "header" | "surface";
|
|
221
217
|
id: string;
|
|
222
218
|
order: number;
|
|
223
219
|
Header: ComponentType<SessionHeaderContext>;
|
|
@@ -495,9 +491,8 @@ export class PluginRegistry {
|
|
|
495
491
|
.filter((tab) => (!tab.requiresWorkspace || workspaceAccessible(session.session)) && (tab.available?.(session) ?? true));
|
|
496
492
|
}
|
|
497
493
|
|
|
498
|
-
headersFor(session: SessionContext, access: AccessContext
|
|
499
|
-
return this.sessionHeaders.filter((entry) => (entry.
|
|
500
|
-
&& (!entry.readRight || access.can(entry.readRight))
|
|
494
|
+
headersFor(session: SessionContext, access: AccessContext): readonly SessionHeaderContribution[] {
|
|
495
|
+
return this.sessionHeaders.filter((entry) => (!entry.readRight || access.can(entry.readRight))
|
|
501
496
|
&& (!entry.requiresWorkspace || workspaceAccessible(session.session)));
|
|
502
497
|
}
|
|
503
498
|
|