@schlenkr/ragents 0.1.10 → 0.1.11
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/package.json +1 -1
- package/apps/server/src/access-projection.ts +4 -4
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +29 -29
- package/apps/server/src/api/core-methods.ts +17 -17
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +6 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +61 -56
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +23 -23
- package/apps/server/src/ragents/global-chat.ts +8 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +48 -48
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +53 -54
- package/apps/web/dist/help/guide-clients.md +50 -51
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +196 -144
- package/apps/web/dist/help/mini-app.css +6 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +26 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +28 -28
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +225 -225
- 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 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -2
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +2 -2
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- 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/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +2 -2
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +98 -98
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -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 +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +81 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/plugin-host.ts +119 -119
- package/packages/ragents/src/plugin-types.ts +16 -16
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +12 -12
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -2
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +6 -6
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -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 +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +7 -7
- package/plugins/ragents.workspace/server/index.ts +3 -3
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
- package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -20,7 +20,7 @@ function RunExecutionsPanel({ active, runId, view }: { active: boolean; runId: s
|
|
|
20
20
|
const [journal, setJournal] = useState<{ events: readonly JournalEvent[]; loaded: boolean; loading: boolean; error: string | null }>({ events: [], loaded: false, loading: false, error: null });
|
|
21
21
|
const [query, setQuery] = useState("");
|
|
22
22
|
const [status, setStatus] = useState<ExecutionStatus | "all">("all");
|
|
23
|
-
const statusOptions = [{ value: "all", label: "
|
|
23
|
+
const statusOptions = [{ value: "all", label: "All statuses" }, ...(["running", "completed", "failed", "interrupted"] as const).map((value) => ({ value, label: executionStatusLabel(value) }))];
|
|
24
24
|
const [now, setNow] = useState(Date.now);
|
|
25
25
|
const [reload, setReload] = useState(0);
|
|
26
26
|
const revision = view?.revision;
|
|
@@ -50,19 +50,19 @@ function RunExecutionsPanel({ active, runId, view }: { active: boolean; runId: s
|
|
|
50
50
|
return () => window.clearInterval(timer);
|
|
51
51
|
}, [active, running]);
|
|
52
52
|
|
|
53
|
-
return <section aria-label="TypeScript
|
|
54
|
-
<header className="px-3.5 pt-3.5 pb-2.5"><h2 className="mb-1.5 text-[0.92rem]">Executions</h2><p className="leading-[1.5] text-muted-foreground">TypeScript
|
|
53
|
+
return <section aria-label="TypeScript executions" className="flex h-full min-h-0 min-w-0 flex-col bg-background text-[0.78rem] text-foreground">
|
|
54
|
+
<header className="px-3.5 pt-3.5 pb-2.5"><h2 className="mb-1.5 text-[0.92rem]">Executions</h2><p className="leading-[1.5] text-muted-foreground">TypeScript snippets of all actors in this run.</p></header>
|
|
55
55
|
<div className="grid grid-cols-[minmax(0,1fr)_auto] gap-2 border-b border-border-soft px-3.5 pb-3">
|
|
56
|
-
<Input className="col-span-full" aria-label="
|
|
56
|
+
<Input className="col-span-full" aria-label="Search executions" onChange={(event) => setQuery(event.target.value)} placeholder="Search actor, code or result" type="search" value={query} />
|
|
57
57
|
<Select items={statusOptions} value={status} onValueChange={(value) => { if (value !== null) setStatus(value as ExecutionStatus | "all"); }}>
|
|
58
|
-
<SelectTrigger className="min-w-0" aria-label="
|
|
58
|
+
<SelectTrigger className="min-w-0" aria-label="Execution status"><SelectValue /></SelectTrigger>
|
|
59
59
|
<SelectContent>{statusOptions.map((option) => <SelectItem key={option.value} value={option.value}>{option.label}</SelectItem>)}</SelectContent>
|
|
60
60
|
</Select>
|
|
61
|
-
<span className="self-center text-right text-[0.68rem] text-muted-foreground" role="status">{journal.loading ? (journal.loaded ? "
|
|
61
|
+
<span className="self-center text-right text-[0.68rem] text-muted-foreground" role="status">{journal.loading ? (journal.loaded ? "Refreshing ..." : "Loading ...") : journal.loaded ? `${filtered.length} of ${executions.length} executions` : "Not loaded yet"}</span>
|
|
62
62
|
</div>
|
|
63
|
-
{journal.error && <Alert className="mx-3.5 my-2 w-auto" variant="destructive"><AlertDescription className="whitespace-pre-wrap text-destructive [overflow-wrap:anywhere]">{journal.error}{journal.loaded ? "
|
|
64
|
-
<div aria-label="
|
|
65
|
-
{journal.loaded && !journal.loading && filtered.length === 0 && <p className="mx-0.5 my-4.5 leading-[1.6] text-muted-foreground">{executions.length === 0 ? "
|
|
63
|
+
{journal.error && <Alert className="mx-3.5 my-2 w-auto" variant="destructive"><AlertDescription className="whitespace-pre-wrap text-destructive [overflow-wrap:anywhere]">{journal.error}{journal.loaded ? " The last loaded state stays visible." : ""}</AlertDescription><Button disabled={!active || journal.loading} onClick={() => setReload((value) => value + 1)} size="sm" variant="ghost">Reload</Button></Alert>}
|
|
64
|
+
<div aria-label="Executions, newest first" className="min-h-0 flex-1 overflow-auto overscroll-contain px-3 pb-3">
|
|
65
|
+
{journal.loaded && !journal.loading && filtered.length === 0 && <p className="mx-0.5 my-4.5 leading-[1.6] text-muted-foreground">{executions.length === 0 ? "No TypeScript snippet has been executed in this run yet." : "No executions match this search."}</p>}
|
|
66
66
|
{filtered.map((execution) => <ExecutionEntry execution={execution} key={execution.key} now={now} />)}
|
|
67
67
|
</div>
|
|
68
68
|
</section>;
|
|
@@ -85,21 +85,21 @@ const logClass = "m-0 max-h-[24rem] overflow-auto rounded-sm bg-background p-2 f
|
|
|
85
85
|
|
|
86
86
|
function ExecutionEntry({ execution, now }: { execution: TypeScriptExecution; now: number }) {
|
|
87
87
|
const [expanded, setExpanded] = useState(false);
|
|
88
|
-
const preview = execution.code?.trim().split("\n").find((line) => line.trim()) ?? execution.path ?? "TypeScript
|
|
88
|
+
const preview = execution.code?.trim().split("\n").find((line) => line.trim()) ?? execution.path ?? "TypeScript snippet";
|
|
89
89
|
return <details className="mt-2.5 overflow-hidden rounded-sm border border-border-soft bg-card open:[&>summary]:before:rotate-45" onToggle={(event) => setExpanded(event.currentTarget.open)}>
|
|
90
90
|
<summary className={summaryClass}>
|
|
91
91
|
<span className="truncate font-[650]" title={`${execution.actorName} (${execution.actorId})`}>@{execution.actorHandle}</span>
|
|
92
92
|
<Badge className={`h-auto rounded-[5px] px-[5px] py-0.5 text-[0.64rem] ${statusBadgeClass[execution.status] ?? "bg-secondary text-muted-foreground"}`}>{executionStatusLabel(execution.status)}</Badge>
|
|
93
93
|
<span className="col-span-full truncate font-mono text-[0.68rem]" title={preview}>{preview}</span>
|
|
94
|
-
<span className="col-span-full flex flex-wrap justify-between gap-x-3 gap-y-1.5 text-[0.65rem] tabular-nums text-muted-foreground"><time dateTime={execution.startedAt} title={new Date(execution.startedAt).toLocaleString("
|
|
94
|
+
<span className="col-span-full flex flex-wrap justify-between gap-x-3 gap-y-1.5 text-[0.65rem] tabular-nums text-muted-foreground"><time dateTime={execution.startedAt} title={new Date(execution.startedAt).toLocaleString("en-US")}>{new Date(execution.startedAt).toLocaleString("en-US", { day: "2-digit", month: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit" })}</time><span>{executionDuration(execution, now)}</span></span>
|
|
95
95
|
</summary>
|
|
96
96
|
{expanded && <div className={contentClass}>
|
|
97
|
-
{execution.path && <p className="mt-2.5 grid gap-1 text-[0.68rem] text-muted-foreground"><span>
|
|
97
|
+
{execution.path && <p className="mt-2.5 grid gap-1 text-[0.68rem] text-muted-foreground"><span>Path</span><code className="[overflow-wrap:anywhere]">{execution.path}</code></p>}
|
|
98
98
|
<h3>Code</h3>
|
|
99
|
-
{execution.code !== null ? <SourceCode className={sourceClass} content={execution.code} language="typescript" path={execution.path ?? "snippet.ts"} /> : <p className="text-[0.72rem] leading-[1.5] text-muted-foreground">{execution.path ? "
|
|
99
|
+
{execution.code !== null ? <SourceCode className={sourceClass} content={execution.code} language="typescript" path={execution.path ?? "snippet.ts"} /> : <p className="text-[0.72rem] leading-[1.5] text-muted-foreground">{execution.path ? "No historical code is stored for this path call." : "No historical code is stored for this call."}</p>}
|
|
100
100
|
{execution.logs.length > 0 && <><h3>Logs</h3><pre className={logClass}>{execution.logs.join("\n")}</pre></>}
|
|
101
|
-
{execution.result !== undefined && <><h3>
|
|
102
|
-
{execution.error && <><h3>{execution.status === "interrupted" ? "
|
|
101
|
+
{execution.result !== undefined && <><h3>Result</h3><SourceCode className={sourceClass} content={JSON.stringify(execution.result, null, 2)} language="json" path="result.json" /></>}
|
|
102
|
+
{execution.error && <><h3>{execution.status === "interrupted" ? "Interruption" : "Error"}</h3><pre className={`${logClass} text-destructive`}>{execution.error}</pre></>}
|
|
103
103
|
</div>}
|
|
104
104
|
</details>;
|
|
105
105
|
}
|
|
@@ -42,7 +42,7 @@ interface FlowInspectorProps {
|
|
|
42
42
|
actorConversations?: Readonly<Record<string, readonly Message[]>>;
|
|
43
43
|
conversationError?: string;
|
|
44
44
|
primaryRunning: boolean;
|
|
45
|
-
/**
|
|
45
|
+
/** Display surface for the remembered detail level; the popout registers separately from the side inspector. */
|
|
46
46
|
chatDisplay?: string;
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -92,26 +92,26 @@ const pillToneClass: Readonly<Record<string, string>> = {
|
|
|
92
92
|
const tabClass = "grid size-[30px] flex-[0_0_30px] place-items-center p-0";
|
|
93
93
|
|
|
94
94
|
const STATUS_LABELS: Record<string, string> = {
|
|
95
|
-
active: "
|
|
96
|
-
approved: "
|
|
97
|
-
completed: "
|
|
98
|
-
dismissed: "
|
|
99
|
-
failed: "
|
|
100
|
-
idle: "
|
|
101
|
-
interrupted: "
|
|
102
|
-
pending: "
|
|
103
|
-
removed: "
|
|
104
|
-
running: "
|
|
105
|
-
stopped: "
|
|
95
|
+
active: "Active",
|
|
96
|
+
approved: "Approved",
|
|
97
|
+
completed: "Completed",
|
|
98
|
+
dismissed: "Dismissed",
|
|
99
|
+
failed: "Failed",
|
|
100
|
+
idle: "Ready",
|
|
101
|
+
interrupted: "Interrupted",
|
|
102
|
+
pending: "Open",
|
|
103
|
+
removed: "Removed",
|
|
104
|
+
running: "Running",
|
|
105
|
+
stopped: "Stopped",
|
|
106
106
|
};
|
|
107
107
|
|
|
108
108
|
const ACTOR_KIND_LABELS: Record<RunActor["kind"], string> = {
|
|
109
109
|
human: "Person",
|
|
110
110
|
agent: "Agent",
|
|
111
|
-
script: "
|
|
111
|
+
script: "Logic actor",
|
|
112
112
|
};
|
|
113
113
|
|
|
114
|
-
const STOP_REASON = "
|
|
114
|
+
const STOP_REASON = "Stopped by the operator";
|
|
115
115
|
|
|
116
116
|
const shortId = (id: string) => (id.length > 12 ? `${id.slice(0, 12)}...` : id);
|
|
117
117
|
|
|
@@ -128,7 +128,7 @@ const runCostUsd = (view: RunView): number | undefined => {
|
|
|
128
128
|
};
|
|
129
129
|
|
|
130
130
|
const formatCostUsd = (value: number) =>
|
|
131
|
-
`${value.toLocaleString("
|
|
131
|
+
`${value.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: value > 0 && value < 0.005 ? 4 : 2 })} USD`;
|
|
132
132
|
|
|
133
133
|
interface RunIndex {
|
|
134
134
|
view: RunView;
|
|
@@ -165,8 +165,8 @@ export function FlowInspector(props: FlowInspectorProps) {
|
|
|
165
165
|
return (
|
|
166
166
|
<Empty>
|
|
167
167
|
<EmptyHeader>
|
|
168
|
-
<EmptyTitle>
|
|
169
|
-
<EmptyDescription>
|
|
168
|
+
<EmptyTitle>No flow yet</EmptyTitle>
|
|
169
|
+
<EmptyDescription>As soon as actors are started, the detail view appears here.</EmptyDescription>
|
|
170
170
|
</EmptyHeader>
|
|
171
171
|
</Empty>
|
|
172
172
|
);
|
|
@@ -194,12 +194,12 @@ export function FlowInspector(props: FlowInspectorProps) {
|
|
|
194
194
|
if (actor) return <ActorView actor={actor} index={index} key={actor.id} {...props} />;
|
|
195
195
|
if (fallbackActor) return <ActorView actor={fallbackActor} index={index} key={fallbackActor.id} {...props} />;
|
|
196
196
|
|
|
197
|
-
return <Empty><EmptyHeader><EmptyTitle>
|
|
197
|
+
return <Empty><EmptyHeader><EmptyTitle>No actors</EmptyTitle></EmptyHeader></Empty>;
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
function BackButton({ canGoBack, onBack }: { canGoBack: boolean; onBack: () => void }) {
|
|
201
201
|
if (!canGoBack) return null;
|
|
202
|
-
return <Button aria-label="
|
|
202
|
+
return <Button aria-label="Back" className="rounded-full" onClick={onBack} size="icon" variant="outline"><ArrowLeftIcon /></Button>;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
function StatusPill({ status }: { status: string }) {
|
|
@@ -240,8 +240,8 @@ function SectionTabs({ sections, children }: { sections: SectionTab[]; children:
|
|
|
240
240
|
|
|
241
241
|
return (
|
|
242
242
|
<Tabs className="contents" onValueChange={(value) => setOpenId(value === "chat" ? null : String(value))} value={open?.id ?? "chat"}>
|
|
243
|
-
<TabsList aria-label="Actor
|
|
244
|
-
<TabsTrigger aria-label="
|
|
243
|
+
<TabsList aria-label="Actor views" className="flex h-auto w-auto max-w-full flex-shrink-0 flex-nowrap justify-start gap-1 overflow-x-auto rounded-none border-b border-border-soft px-workspace-inset py-1.5" variant="line">
|
|
244
|
+
<TabsTrigger aria-label="Show chat" className={tabClass} id={`${id}-chat-tab`} title="Show chat" value="chat">
|
|
245
245
|
<SectionIcon kind="chat" />
|
|
246
246
|
</TabsTrigger>
|
|
247
247
|
{sections.map((section) => (
|
|
@@ -264,14 +264,14 @@ function SectionTabs({ sections, children }: { sections: SectionTab[]; children:
|
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
function CapabilityList({ grants }: { grants: RunCapabilityGrant[] }) {
|
|
267
|
-
if (grants.length === 0) return <Badge className={pillClass}>
|
|
267
|
+
if (grants.length === 0) return <Badge className={pillClass}>No capabilities</Badge>;
|
|
268
268
|
return (
|
|
269
269
|
<div className="flex flex-wrap gap-1 py-1.5">
|
|
270
270
|
{grants.map((grant, position) => {
|
|
271
271
|
const scope = grant.scope.kind === "workspace" ? grant.scope.path : "Run";
|
|
272
272
|
const suffix = [
|
|
273
|
-
grant.delegable ? "
|
|
274
|
-
grant.usable === false ? "
|
|
273
|
+
grant.delegable ? "delegable" : undefined,
|
|
274
|
+
grant.usable === false ? "pass on only" : undefined,
|
|
275
275
|
].filter(Boolean).join(", ");
|
|
276
276
|
return (
|
|
277
277
|
<span className="rounded-full border border-border-soft px-2 py-0.5 text-[0.68rem] [&>small]:text-muted-foreground" key={`${grant.capability}-${position}`} title={scope}>
|
|
@@ -307,7 +307,7 @@ function ActionCard({ action, runId, onError }: { action: RunAction; runId: stri
|
|
|
307
307
|
<div className={actionClass}>
|
|
308
308
|
<strong>{action.title}</strong>
|
|
309
309
|
{action.description && <p>{action.description}</p>}
|
|
310
|
-
{action.owner && <p>
|
|
310
|
+
{action.owner && <p>waiting for input - {action.owner}</p>}
|
|
311
311
|
{action.input && (
|
|
312
312
|
<Input
|
|
313
313
|
className="my-1.5 text-[0.76rem]"
|
|
@@ -320,14 +320,14 @@ function ActionCard({ action, runId, onError }: { action: RunAction; runId: stri
|
|
|
320
320
|
)}
|
|
321
321
|
<div className="mt-1 flex justify-end gap-1.5">
|
|
322
322
|
<Button disabled={!writable || busy} onClick={() => void resolve("dismissed", undefined)} size="sm" variant="outline">
|
|
323
|
-
|
|
323
|
+
Dismiss
|
|
324
324
|
</Button>
|
|
325
325
|
<Button
|
|
326
326
|
disabled={!writable || busy || (action.input?.required === true && response.trim() === "")}
|
|
327
327
|
onClick={() => void resolve("approved", response.trim() || undefined)}
|
|
328
328
|
size="sm"
|
|
329
329
|
>
|
|
330
|
-
|
|
330
|
+
Acknowledge
|
|
331
331
|
</Button>
|
|
332
332
|
</div>
|
|
333
333
|
</div>
|
|
@@ -365,46 +365,46 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
365
365
|
const driverLabel = actor.kind === "script"
|
|
366
366
|
? "TypeScript"
|
|
367
367
|
: !driver || driver.kind === "manual"
|
|
368
|
-
? "
|
|
368
|
+
? "Manual"
|
|
369
369
|
: [driver.kind, driver.config.provider].filter(Boolean).join(" - ");
|
|
370
370
|
|
|
371
371
|
const config = driver && driver.kind !== "manual" ? driver.config : undefined;
|
|
372
372
|
const sections: SectionTab[] = [
|
|
373
|
-
{ id: "info", label: "Info:
|
|
373
|
+
{ id: "info", label: "Info: model and run details", icon: <SectionIcon kind="info" />, content: (
|
|
374
374
|
<div className={statusClass}>
|
|
375
375
|
{lifecycle && <StatusPill status={lifecycle} />}
|
|
376
|
-
<span>{primary ? "
|
|
376
|
+
<span>{primary ? "Primary actor" : ACTOR_KIND_LABELS[actor.kind]}</span>
|
|
377
377
|
<span>{driverLabel}</span>
|
|
378
378
|
{config?.model && <span className="max-w-[220px] truncate" title={config.model}>{config.model}</span>}
|
|
379
|
-
{config?.thinking && <span>
|
|
380
|
-
<span>{pendingInputCount}
|
|
379
|
+
{config?.thinking && <span>Thinking level {thinkingLabel(config.thinking)}</span>}
|
|
380
|
+
<span>{pendingInputCount} open</span>
|
|
381
381
|
<span>{turns.length} Turns</span>
|
|
382
382
|
{primary && runCost !== undefined && (
|
|
383
|
-
<span title="
|
|
383
|
+
<span title="Total cost of the run across all turns">{formatCostUsd(runCost)}</span>
|
|
384
384
|
)}
|
|
385
385
|
</div>
|
|
386
386
|
) },
|
|
387
387
|
...(actor.prompt ? [{
|
|
388
|
-
id: "
|
|
389
|
-
label: "
|
|
388
|
+
id: "prompt",
|
|
389
|
+
label: "Task",
|
|
390
390
|
icon: <SectionIcon kind="prompt" />,
|
|
391
391
|
content: <pre className={textBlockClass}>{actor.prompt}</pre>,
|
|
392
392
|
}] : []),
|
|
393
393
|
...(programSource ? [{
|
|
394
394
|
id: "source",
|
|
395
|
-
label: "
|
|
395
|
+
label: "Source code",
|
|
396
396
|
icon: <SectionIcon kind="source" />,
|
|
397
397
|
content: programSource,
|
|
398
398
|
}] : actor.source ? [{
|
|
399
399
|
id: "source",
|
|
400
|
-
label: "
|
|
400
|
+
label: "Source code",
|
|
401
401
|
icon: <SectionIcon kind="source" />,
|
|
402
402
|
count: actor.source.replace(/\n$/, "").split("\n").length,
|
|
403
403
|
content: <SourceListing handle={actor.handle} source={actor.source} />,
|
|
404
404
|
}] : []),
|
|
405
405
|
...(inputsConfig.length > 0 ? [{
|
|
406
|
-
id: "
|
|
407
|
-
label: "
|
|
406
|
+
id: "settings",
|
|
407
|
+
label: "Settings",
|
|
408
408
|
icon: <SectionIcon kind="settings" />,
|
|
409
409
|
count: inputsConfig.length,
|
|
410
410
|
content: (
|
|
@@ -414,8 +414,8 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
414
414
|
),
|
|
415
415
|
}] : []),
|
|
416
416
|
{
|
|
417
|
-
id: "
|
|
418
|
-
label: "
|
|
417
|
+
id: "inputs",
|
|
418
|
+
label: "Inputs",
|
|
419
419
|
icon: <SectionIcon kind="inputs" />,
|
|
420
420
|
count: inputs.length,
|
|
421
421
|
content: (
|
|
@@ -462,8 +462,8 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
462
462
|
),
|
|
463
463
|
},
|
|
464
464
|
...(actions.length > 0 ? [{
|
|
465
|
-
id: "
|
|
466
|
-
label: "
|
|
465
|
+
id: "actions",
|
|
466
|
+
label: "Actions",
|
|
467
467
|
icon: <SectionIcon kind="actions" />,
|
|
468
468
|
count: actions.length,
|
|
469
469
|
content: (
|
|
@@ -478,8 +478,8 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
478
478
|
),
|
|
479
479
|
}] : []),
|
|
480
480
|
...(artifacts.length > 0 ? [{
|
|
481
|
-
id: "
|
|
482
|
-
label: "
|
|
481
|
+
id: "artifacts",
|
|
482
|
+
label: "Artifacts",
|
|
483
483
|
icon: <SectionIcon kind="artifacts" />,
|
|
484
484
|
count: artifacts.length,
|
|
485
485
|
content: (
|
|
@@ -500,13 +500,13 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
500
500
|
content: <CapabilityList grants={actor.grants} />,
|
|
501
501
|
},
|
|
502
502
|
{
|
|
503
|
-
id: "
|
|
504
|
-
label: "
|
|
503
|
+
id: "tools",
|
|
504
|
+
label: "Tools",
|
|
505
505
|
icon: <WrenchIcon size={15} />,
|
|
506
506
|
...(actor.toolNames ? { count: actor.toolNames.length } : {}),
|
|
507
507
|
content: (
|
|
508
508
|
<p className={mutedClass}>
|
|
509
|
-
{actor.toolNames === null ? "
|
|
509
|
+
{actor.toolNames === null ? "All available tools" : actor.toolNames?.join(", ") || "No tools"}
|
|
510
510
|
</p>
|
|
511
511
|
),
|
|
512
512
|
},
|
|
@@ -519,7 +519,7 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
519
519
|
<div className="flex min-w-0 flex-1 items-baseline gap-2 [&>span]:flex-1">
|
|
520
520
|
<h2>{actor.displayName}</h2>
|
|
521
521
|
<span className={subtitleClass}>
|
|
522
|
-
@{actor.handle}{inspect && actor.createdBy ? ` -
|
|
522
|
+
@{actor.handle}{inspect && actor.createdBy ? ` - created by ${actorLabel(index, actor.createdBy)}` : ""}
|
|
523
523
|
</span>
|
|
524
524
|
</div>
|
|
525
525
|
{active && writable && (
|
|
@@ -527,7 +527,7 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
527
527
|
className="flex-shrink-0"
|
|
528
528
|
onClick={() => void stopActor(view.id, actor.id, STOP_REASON).catch((caught: Error) => setError(caught.message))}
|
|
529
529
|
size="sm"
|
|
530
|
-
title={
|
|
530
|
+
title={`Stop @${actor.handle} and its assigned children permanently; the chat input, in contrast, only interrupts the running turn`}
|
|
531
531
|
variant="destructive"
|
|
532
532
|
>
|
|
533
533
|
Stop
|
|
@@ -539,7 +539,7 @@ function ActorView({ actor, index, ...props }: FlowInspectorProps & { actor: Run
|
|
|
539
539
|
size="sm"
|
|
540
540
|
variant="outline"
|
|
541
541
|
>
|
|
542
|
-
|
|
542
|
+
Restart
|
|
543
543
|
</Button>
|
|
544
544
|
)}
|
|
545
545
|
</header>
|
|
@@ -588,21 +588,21 @@ function InputView({ index, input, ...props }: FlowInspectorProps & { index: Run
|
|
|
588
588
|
<div className={inspectorClass}>
|
|
589
589
|
<DetailHeader canGoBack={props.canGoBack} eyebrow="ActorInput" onBack={props.onBack} subtitle={formatTime(input.enqueuedAt)} title={shortId(input.id)} />
|
|
590
590
|
<div className={scrollClass}>
|
|
591
|
-
<section className={sectionClass}><h3>
|
|
591
|
+
<section className={sectionClass}><h3>Content</h3><pre className={textBlockClass}>{input.content}</pre></section>
|
|
592
592
|
<section className={sectionClass}>
|
|
593
593
|
<h3>Routing</h3>
|
|
594
594
|
<dl className={propertiesClass}>
|
|
595
595
|
<dt>Actor</dt><dd><EntityLink id={input.actorId} index={index} onNavigate={props.onNavigate} /></dd>
|
|
596
|
-
<dt>
|
|
597
|
-
<dt>Turn</dt><dd>{input.lifecycle.kind === "claimed" ? <SelectionLink label={shortId(input.lifecycle.turnId)} onNavigate={props.onNavigate} selection={{ type: "turn", id: input.lifecycle.turnId }} /> : input.lifecycle.kind === "discarded" ? "
|
|
598
|
-
<dt>Subscription</dt><dd>{input.subscriptionId ? <SelectionLink label={shortId(input.subscriptionId)} onNavigate={props.onNavigate} selection={{ type: "subscription", id: input.subscriptionId }} /> : "
|
|
596
|
+
<dt>Enqueued by</dt><dd><EntityLink id={input.enqueuedBy} index={index} onNavigate={props.onNavigate} /></dd>
|
|
597
|
+
<dt>Turn</dt><dd>{input.lifecycle.kind === "claimed" ? <SelectionLink label={shortId(input.lifecycle.turnId)} onNavigate={props.onNavigate} selection={{ type: "turn", id: input.lifecycle.turnId }} /> : input.lifecycle.kind === "discarded" ? "dismissed" : "waiting"}</dd>
|
|
598
|
+
<dt>Subscription</dt><dd>{input.subscriptionId ? <SelectionLink label={shortId(input.subscriptionId)} onNavigate={props.onNavigate} selection={{ type: "subscription", id: input.subscriptionId }} /> : "none"}</dd>
|
|
599
599
|
{input.lifecycle.kind === "discarded" && <>
|
|
600
|
-
<dt>
|
|
601
|
-
<dt>
|
|
600
|
+
<dt>Dismissed</dt><dd>{formatTime(input.lifecycle.at)}</dd>
|
|
601
|
+
<dt>Reason</dt><dd>{input.lifecycle.reason}</dd>
|
|
602
602
|
</>}
|
|
603
603
|
</dl>
|
|
604
604
|
</section>
|
|
605
|
-
{input.sourceEventIds.length > 0 && <section className={sectionClass}><h3>
|
|
605
|
+
{input.sourceEventIds.length > 0 && <section className={sectionClass}><h3>Source events</h3><p className={mutedClass}>{input.sourceEventIds.join(", ")}</p></section>}
|
|
606
606
|
{artifacts.length > 0 && <ArtifactRows artifacts={artifacts} onNavigate={props.onNavigate} />}
|
|
607
607
|
</div>
|
|
608
608
|
</div>
|
|
@@ -620,20 +620,20 @@ function TurnView({ index, turn, ...props }: FlowInspectorProps & { index: RunIn
|
|
|
620
620
|
<h3>Details</h3>
|
|
621
621
|
<dl className={propertiesClass}>
|
|
622
622
|
<dt>Actor</dt><dd><EntityLink id={turn.actorId} index={index} onNavigate={props.onNavigate} /></dd>
|
|
623
|
-
<dt>
|
|
624
|
-
<dt>
|
|
625
|
-
{turn.reason && <><dt>
|
|
623
|
+
<dt>Input</dt><dd><SelectionLink label={shortId(turn.inputId)} onNavigate={props.onNavigate} selection={{ type: "input", id: turn.inputId }} /></dd>
|
|
624
|
+
<dt>Ended</dt><dd>{turn.finishedAt ? formatTime(turn.finishedAt) : "running"}</dd>
|
|
625
|
+
{turn.reason && <><dt>Reason</dt><dd>{turn.reason}</dd></>}
|
|
626
626
|
</dl>
|
|
627
627
|
</section>
|
|
628
628
|
{usage && (
|
|
629
629
|
<section className={sectionClass}>
|
|
630
|
-
<h3>
|
|
630
|
+
<h3>Usage</h3>
|
|
631
631
|
<dl className={propertiesClass}>
|
|
632
|
-
<dt>Input
|
|
633
|
-
<dt>Output
|
|
634
|
-
<dt>Cache
|
|
635
|
-
<dt>Cache
|
|
636
|
-
<dt>
|
|
632
|
+
<dt>Input tokens</dt><dd>{usage.inputTokens ?? 0}</dd>
|
|
633
|
+
<dt>Output tokens</dt><dd>{usage.outputTokens ?? 0}</dd>
|
|
634
|
+
<dt>Cache read</dt><dd>{usage.cacheReadTokens ?? 0}</dd>
|
|
635
|
+
<dt>Cache written</dt><dd>{usage.cacheWriteTokens ?? 0}</dd>
|
|
636
|
+
<dt>Cost</dt><dd>{(usage.costUsd ?? 0).toFixed(6)} USD</dd>
|
|
637
637
|
</dl>
|
|
638
638
|
</section>
|
|
639
639
|
)}
|
|
@@ -652,16 +652,16 @@ function SubscriptionView({ index, subscription, ...props }: FlowInspectorProps
|
|
|
652
652
|
<h3>Filter</h3>
|
|
653
653
|
<dl className={propertiesClass}>
|
|
654
654
|
<dt>Subscriber</dt><dd><EntityLink id={subscription.subscriberId} index={index} onNavigate={props.onNavigate} /></dd>
|
|
655
|
-
<dt>
|
|
656
|
-
<dt>Actor
|
|
657
|
-
<dt>Event
|
|
658
|
-
<dt>
|
|
659
|
-
<dt>
|
|
660
|
-
{subscription.status !== "active" && <><dt>
|
|
661
|
-
{subscription.status === "failed" && <><dt>
|
|
655
|
+
<dt>Source actors</dt><dd>{subscription.sourceActorIds?.map((id) => actorLabel(index, id)).join(", ") ?? "all"}</dd>
|
|
656
|
+
<dt>Actor kinds</dt><dd>{subscription.sourceActorKinds?.join(", ") ?? "all"}</dd>
|
|
657
|
+
<dt>Event types</dt><dd>{subscription.eventTypes.join(", ")}</dd>
|
|
658
|
+
<dt>Own events</dt><dd>{subscription.includeSelf ? "yes" : "no"}</dd>
|
|
659
|
+
<dt>Created by</dt><dd><EntityLink id={subscription.createdBy} index={index} onNavigate={props.onNavigate} /></dd>
|
|
660
|
+
{subscription.status !== "active" && <><dt>Reason</dt><dd>{subscription.reason}</dd></>}
|
|
661
|
+
{subscription.status === "failed" && <><dt>Error event</dt><dd>{subscription.sourceEventId}</dd></>}
|
|
662
662
|
</dl>
|
|
663
663
|
</section>
|
|
664
|
-
{subscription.sourceActorIds && <section className={sectionClass}><h3>
|
|
664
|
+
{subscription.sourceActorIds && <section className={sectionClass}><h3>Source actors</h3><ActorRows actorIds={subscription.sourceActorIds} index={index} onNavigate={props.onNavigate} /></section>}
|
|
665
665
|
</div>
|
|
666
666
|
</div>
|
|
667
667
|
);
|
|
@@ -671,23 +671,23 @@ function ActionView({ action, index, ...props }: FlowInspectorProps & { action:
|
|
|
671
671
|
const [error, setError] = useState<string>();
|
|
672
672
|
return (
|
|
673
673
|
<div className={inspectorClass}>
|
|
674
|
-
<DetailHeader canGoBack={props.canGoBack} eyebrow="
|
|
674
|
+
<DetailHeader canGoBack={props.canGoBack} eyebrow="Action" onBack={props.onBack} subtitle={actorLabel(index, action.askedBy)} title={action.title} />
|
|
675
675
|
<div className={statusClass}><StatusPill status={action.status} /></div>
|
|
676
676
|
<div className={scrollClass}>
|
|
677
677
|
{action.status === "pending" && <ActionCard action={action} onError={setError} runId={index.view.id} />}
|
|
678
|
-
{action.description && <section className={sectionClass}><h3>
|
|
678
|
+
{action.description && <section className={sectionClass}><h3>Description</h3><p>{action.description}</p></section>}
|
|
679
679
|
<section className={sectionClass}>
|
|
680
680
|
<h3>Details</h3>
|
|
681
681
|
<dl className={propertiesClass}>
|
|
682
|
-
<dt>
|
|
683
|
-
<dt>
|
|
684
|
-
{action.resolvedAt && <><dt>
|
|
685
|
-
{action.owner && <><dt>
|
|
686
|
-
{action.result !== null && action.result !== undefined && <><dt>
|
|
682
|
+
<dt>Asked by</dt><dd><EntityLink id={action.askedBy} index={index} onNavigate={props.onNavigate} /></dd>
|
|
683
|
+
<dt>Proposed</dt><dd>{formatTime(action.proposedAt)}</dd>
|
|
684
|
+
{action.resolvedAt && <><dt>Resolved</dt><dd>{formatTime(action.resolvedAt)}</dd></>}
|
|
685
|
+
{action.owner && <><dt>Owner</dt><dd>{action.owner}</dd></>}
|
|
686
|
+
{action.result !== null && action.result !== undefined && <><dt>Result</dt><dd>{typeof action.result === "string" ? action.result : JSON.stringify(action.result)}</dd></>}
|
|
687
687
|
</dl>
|
|
688
688
|
</section>
|
|
689
|
-
{Object.keys(action.parameters).length > 0 && <section className={sectionClass}><h3>
|
|
690
|
-
{action.payload !== null && action.payload !== undefined && <section className={sectionClass}><h3>
|
|
689
|
+
{Object.keys(action.parameters).length > 0 && <section className={sectionClass}><h3>Parameters</h3><pre className={textBlockClass}>{JSON.stringify(action.parameters, null, 2)}</pre></section>}
|
|
690
|
+
{action.payload !== null && action.payload !== undefined && <section className={sectionClass}><h3>Payload</h3><pre className={textBlockClass}>{JSON.stringify(action.payload, null, 2)}</pre></section>}
|
|
691
691
|
{error && <p className={errorClass}>{error}</p>}
|
|
692
692
|
</div>
|
|
693
693
|
</div>
|
|
@@ -729,7 +729,7 @@ function ActorRows({ actorIds, index, onNavigate }: {
|
|
|
729
729
|
function ArtifactRows({ artifacts, onNavigate }: { artifacts: RunArtifact[]; onNavigate: (selection: FlowSelection) => void }) {
|
|
730
730
|
return (
|
|
731
731
|
<section className={sectionClass}>
|
|
732
|
-
<h3>
|
|
732
|
+
<h3>Artifacts</h3>
|
|
733
733
|
<div className={rowsClass}>
|
|
734
734
|
{artifacts.map((artifact) => (
|
|
735
735
|
<button className={rowClass} key={artifact.id} onClick={() => onNavigate({ type: "artifact", id: artifact.id })} type="button">
|
|
@@ -848,16 +848,16 @@ function ArtifactDiff({ artifact, index }: { artifact: RunArtifact; index: RunIn
|
|
|
848
848
|
if (beforeText === undefined || afterText === undefined) return undefined;
|
|
849
849
|
const left = beforeText.split("\n");
|
|
850
850
|
const right = afterText.split("\n");
|
|
851
|
-
if (left.length > DIFF_LINE_LIMIT || right.length > DIFF_LINE_LIMIT) return "
|
|
851
|
+
if (left.length > DIFF_LINE_LIMIT || right.length > DIFF_LINE_LIMIT) return "too large" as const;
|
|
852
852
|
return lineDiff(left, right);
|
|
853
853
|
}, [beforeText, afterText]);
|
|
854
854
|
|
|
855
855
|
if (!artifact.previousVersionId) return null;
|
|
856
|
-
if (!previous) return <p className={mutedClass}>
|
|
857
|
-
if (!before || !after || before.kind === "loading" || after.kind === "loading") return <p className={mutedClass}>
|
|
858
|
-
if (rows === undefined) return <p className={mutedClass}>{artifact.mediaType}
|
|
859
|
-
if (rows === "
|
|
860
|
-
if (rows.every((entry) => entry.kind === "same")) return <p className={mutedClass}>
|
|
856
|
+
if (!previous) return <p className={mutedClass}>Previous version not in this projection.</p>;
|
|
857
|
+
if (!before || !after || before.kind === "loading" || after.kind === "loading") return <p className={mutedClass}>Loading comparison ...</p>;
|
|
858
|
+
if (rows === undefined) return <p className={mutedClass}>{artifact.mediaType} is not compared line by line.</p>;
|
|
859
|
+
if (rows === "too large") return <p className={mutedClass}>Too large for the line comparison (more than {DIFF_LINE_LIMIT} lines).</p>;
|
|
860
|
+
if (rows.every((entry) => entry.kind === "same")) return <p className={mutedClass}>Both versions have the same text.</p>;
|
|
861
861
|
const marks = { same: " ", added: "+", removed: "-" };
|
|
862
862
|
return <pre className="my-1.5 overflow-x-auto rounded-lg bg-foreground/4 p-2 text-[0.7rem] [&>span]:block [&>span]:whitespace-pre [&>span[data-diff=added]]:bg-success-soft [&>span[data-diff=removed]]:bg-destructive-soft">{rows.map((entry, position) => <span data-diff={entry.kind} key={position}>{marks[entry.kind]} {entry.text}{"\n"}</span>)}</pre>;
|
|
863
863
|
}
|
|
@@ -871,25 +871,25 @@ function ArtifactView({ artifact, index, ...props }: FlowInspectorProps & { arti
|
|
|
871
871
|
<header className={headClass}>
|
|
872
872
|
<BackButton canGoBack={props.canGoBack} onBack={props.onBack} />
|
|
873
873
|
<div className="min-w-0 flex-1">
|
|
874
|
-
<p className="mb-0.5 text-[0.66rem] font-semibold tracking-[0.08em] uppercase text-muted-foreground">
|
|
874
|
+
<p className="mb-0.5 text-[0.66rem] font-semibold tracking-[0.08em] uppercase text-muted-foreground">Artifact</p>
|
|
875
875
|
<h2>{artifact.title}</h2>
|
|
876
|
-
<span className={subtitleClass}>
|
|
876
|
+
<span className={subtitleClass}>by {actorLabel(index, artifact.createdBy)} - {formatBytes(artifact.size)} - {artifact.mediaType}</span>
|
|
877
877
|
</div>
|
|
878
|
-
<Button render={<a href={runArtifactContentUrl(view.id, artifact.id)} />} size="sm" variant="outline">
|
|
878
|
+
<Button render={<a href={runArtifactContentUrl(view.id, artifact.id)} />} size="sm" variant="outline">Download</Button>
|
|
879
879
|
</header>
|
|
880
880
|
<div className={scrollClass}>
|
|
881
881
|
<section className={sectionClass}>
|
|
882
|
-
<h3>
|
|
883
|
-
{(!content || content.kind === "loading") && <p className={mutedClass}>
|
|
884
|
-
{content?.kind === "error" && <p className={errorClass}>{content.message} <button className={linkClass} onClick={retry} type="button">
|
|
885
|
-
{content?.kind === "download" && <p className={mutedClass}>
|
|
882
|
+
<h3>Content</h3>
|
|
883
|
+
{(!content || content.kind === "loading") && <p className={mutedClass}>Loading artifact ...</p>}
|
|
884
|
+
{content?.kind === "error" && <p className={errorClass}>{content.message} <button className={linkClass} onClick={retry} type="button">Reload</button></p>}
|
|
885
|
+
{content?.kind === "download" && <p className={mutedClass}>No preview for {artifact.mediaType}.</p>}
|
|
886
886
|
{content?.kind === "image" && <img alt={artifact.title} className="max-w-full rounded-lg" src={runArtifactContentUrl(view.id, artifact.id)} />}
|
|
887
887
|
{content?.kind === "text" && <pre className={textBlockClass}>{content.text}</pre>}
|
|
888
888
|
</section>
|
|
889
|
-
{artifact.previousVersionId && <section className={sectionClass}><h3
|
|
889
|
+
{artifact.previousVersionId && <section className={sectionClass}><h3>Change from previous version</h3><ArtifactDiff artifact={artifact} index={index} /></section>}
|
|
890
890
|
{carriedOn.length > 0 && (
|
|
891
891
|
<section className={sectionClass}>
|
|
892
|
-
<h3>
|
|
892
|
+
<h3>Used in inputs</h3>
|
|
893
893
|
<div className={rowsClass}>
|
|
894
894
|
{carriedOn.map((input) => (
|
|
895
895
|
<button className={rowClass} key={input.id} onClick={() => props.onNavigate({ type: "input", id: input.id })} type="button">
|
|
@@ -902,10 +902,10 @@ function ArtifactView({ artifact, index, ...props }: FlowInspectorProps & { arti
|
|
|
902
902
|
<section className={sectionClass}>
|
|
903
903
|
<h3>Details</h3>
|
|
904
904
|
<dl className={propertiesClass}>
|
|
905
|
-
<dt>
|
|
905
|
+
<dt>Created by</dt><dd><EntityLink id={artifact.createdBy} index={index} onNavigate={props.onNavigate} /></dd>
|
|
906
906
|
<dt>Hash</dt><dd>{shortId(artifact.hash)}</dd>
|
|
907
|
-
<dt>
|
|
908
|
-
{artifact.previousVersionId && <><dt>
|
|
907
|
+
<dt>Created</dt><dd>{formatTime(artifact.createdAt)}</dd>
|
|
908
|
+
{artifact.previousVersionId && <><dt>Previous version</dt><dd><SelectionLink label={shortId(artifact.previousVersionId)} onNavigate={props.onNavigate} selection={{ type: "artifact", id: artifact.previousVersionId }} /></dd></>}
|
|
909
909
|
</dl>
|
|
910
910
|
</section>
|
|
911
911
|
</div>
|
|
@@ -40,9 +40,9 @@ export function JournalStatus({ session }: SessionHeaderContext) {
|
|
|
40
40
|
}, [open, session.session.id, revision, reload]);
|
|
41
41
|
|
|
42
42
|
const filtered = useMemo(() => {
|
|
43
|
-
const search = query.trim().toLocaleLowerCase("
|
|
43
|
+
const search = query.trim().toLocaleLowerCase("en-US");
|
|
44
44
|
const handles = new Map(view?.actors.map((actor) => [actor.id, actor.handle]));
|
|
45
|
-
return [...events].reverse().filter((event) => !search || `${handles.get(event.actorId) ?? ""} ${JSON.stringify(event)}`.toLocaleLowerCase("
|
|
45
|
+
return [...events].reverse().filter((event) => !search || `${handles.get(event.actorId) ?? ""} ${JSON.stringify(event)}`.toLocaleLowerCase("en-US").includes(search));
|
|
46
46
|
}, [events, query, view?.actors]);
|
|
47
47
|
const actors = new Map(view?.actors.map((actor) => [actor.id, actor.handle]));
|
|
48
48
|
|
|
@@ -51,22 +51,22 @@ export function JournalStatus({ session }: SessionHeaderContext) {
|
|
|
51
51
|
Journal
|
|
52
52
|
</button>
|
|
53
53
|
<Popover open={open} onOpenChange={(next) => { if (!next) close(); }}>
|
|
54
|
-
<PopoverContent align="start" anchor={buttonRef} aria-label="Journal
|
|
54
|
+
<PopoverContent align="start" anchor={buttonRef} aria-label="Journal of the run" className="flex min-h-0 min-w-0 flex-col gap-0 overflow-hidden rounded-t-sm rounded-b-none p-0 text-[0.76rem]" collisionPadding={8} id={panelId}
|
|
55
55
|
initialFocus={searchRef} role="region" side="top" style={{ width: "min(900px, var(--available-width))", height: "min(480px, var(--available-height))" }}>
|
|
56
56
|
<header className="flex flex-none items-center gap-2 border-b border-border-soft px-2.5 py-2">
|
|
57
57
|
<div className="flex min-w-0 flex-1 items-baseline gap-2.5 [&>span]:truncate"><strong>Journal</strong><span className="text-muted-foreground">{session.session.title || "Run"}</span></div>
|
|
58
|
-
<Button onClick={() => setReload((value) => value + 1)} size="sm" variant="ghost">
|
|
59
|
-
<Button aria-label="
|
|
58
|
+
<Button onClick={() => setReload((value) => value + 1)} size="sm" variant="ghost">Refresh</Button>
|
|
59
|
+
<Button aria-label="Close journal" onClick={() => close(true)} size="icon-sm" title="Close journal" variant="ghost"><XIcon /></Button>
|
|
60
60
|
</header>
|
|
61
61
|
<div className="flex flex-none items-center gap-3 px-2.5 py-2">
|
|
62
|
-
<Input className="flex-1" aria-label="
|
|
63
|
-
<span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{loading ? "
|
|
62
|
+
<Input className="flex-1" aria-label="Search journal" onChange={(event) => { setQuery(event.target.value); setLimit(100); }} placeholder="Search event type, actor or content ..." ref={searchRef} type="search" value={query} />
|
|
63
|
+
<span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{loading ? "Loading ..." : `${filtered.length} events`}</span>
|
|
64
64
|
</div>
|
|
65
65
|
{error && <p className="flex-none px-2.5 pb-2 text-destructive" role="alert">{error}</p>}
|
|
66
|
-
<div aria-label="
|
|
67
|
-
{!loading && !error && filtered.length === 0 && <p className="text-muted-foreground">{query ? "
|
|
66
|
+
<div aria-label="Journal events, newest first" className="min-h-0 flex-1 overflow-auto overscroll-contain px-2.5 pb-2.5">
|
|
67
|
+
{!loading && !error && filtered.length === 0 && <p className="text-muted-foreground">{query ? "No matching events." : "The journal contains no events yet."}</p>}
|
|
68
68
|
{filtered.slice(0, limit).map((event) => <JournalEntry actor={actors.get(event.actorId)} event={event} key={event.eventId} />)}
|
|
69
|
-
{filtered.length > limit && <Button onClick={() => setLimit((value) => value + 100)} size="sm" variant="outline">
|
|
69
|
+
{filtered.length > limit && <Button onClick={() => setLimit((value) => value + 100)} size="sm" variant="outline">Show more events</Button>}
|
|
70
70
|
</div>
|
|
71
71
|
</PopoverContent>
|
|
72
72
|
</Popover>
|
|
@@ -80,7 +80,7 @@ function JournalEntry({ actor, event }: { actor: string | undefined; event: Jour
|
|
|
80
80
|
<span className="text-muted-foreground tabular-nums">{event.sequence}</span>
|
|
81
81
|
<span className="font-mono [overflow-wrap:anywhere]">{event.type}</span>
|
|
82
82
|
<span className="truncate max-[550px]:col-start-2 max-[550px]:row-start-2" title={event.actorId}>{actor ? `@${actor}` : event.actorId}</span>
|
|
83
|
-
<time className="text-muted-foreground tabular-nums max-[550px]:col-start-3 max-[550px]:row-start-1" dateTime={event.occurredAt}>{new Date(event.occurredAt).toLocaleTimeString("
|
|
83
|
+
<time className="text-muted-foreground tabular-nums max-[550px]:col-start-3 max-[550px]:row-start-1" dateTime={event.occurredAt}>{new Date(event.occurredAt).toLocaleTimeString("en-US")}</time>
|
|
84
84
|
</summary>
|
|
85
85
|
{expanded && <SourceCode className="m-0 mb-2 text-[0.68rem]" content={JSON.stringify(event, null, 2)} language="json" path="event.json" />}
|
|
86
86
|
</details>;
|