@nomix-ai/nomix-harness 0.2.5 → 0.2.6
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/README.md +2 -9
- package/dist/assets/web/assets/index-BnapMmQ_.css +1 -0
- package/dist/assets/web/assets/index-Dx7Ws_OC.js +96 -0
- package/dist/assets/web/assets/langs/{php-D-uCvoST.js → php-DDkx9sim.js} +2 -2
- package/dist/{kernel/web-frontend/dist/assets/langs/ruby-DEItuUFs.js → assets/web/assets/langs/ruby-DCxyoPen.js} +2 -2
- package/dist/assets/web/assets/{vendor-Cjbwl5VI.js → vendor-D22_Mp1f.js} +2 -2
- package/dist/assets/web/favicon.svg +8 -0
- package/dist/assets/web/index.html +5 -5
- package/dist/bundles/base/cordis.patch.yml +31 -6
- package/dist/bundles/web-app/cordis.patch.yml +27 -6
- package/dist/cli/bin.js +4 -5
- package/dist/cli/builtin-registry.js +34 -4
- package/dist/cli/{dump-config-d3ECray2.js → dump-config-BEj2GlJo.js} +1 -1
- package/dist/cli/{plugin-Bw9wgrmj.js → plugin-D_gLgCYL.js} +1 -1
- package/dist/cli/profile-boot-BSrYtiQI.js +2 -0
- package/dist/cli/{profile-boot-DFHdh9Xq.js → profile-boot-CByqUxLM.js} +0 -2
- package/dist/cli/runtime.js +0 -2
- package/dist/config/agent-presets/code/agent.cordis.yml +4 -3
- package/dist/config/agent-presets/cordis/agent.cordis.yml +4 -3
- package/dist/config/agent-presets/cordis/skills/editing-cordis-compositions/SKILL.md +13 -2
- package/dist/config/agent-presets/minimal/agent.cordis.yml +27 -1
- package/dist/config/agent-presets/standard/agent.cordis.yml +4 -3
- package/dist/kernel/acp/package.json +1 -1
- package/dist/kernel/agent/package.json +1 -1
- package/dist/kernel/agent-default-model/package.json +1 -1
- package/dist/kernel/agent-instructions/package.json +1 -1
- package/dist/kernel/agent-loop/lib/index.js +33 -10
- package/dist/kernel/agent-loop/lib/types/agent.js +26 -6
- package/dist/kernel/agent-loop/package.json +1 -1
- package/dist/kernel/agent-presets/package.json +1 -1
- package/dist/kernel/agent-tool-presentation/package.json +1 -1
- package/dist/kernel/anonymous-user-id/package.json +1 -1
- package/dist/kernel/api-gateway/lib/client.js +84 -55
- package/dist/kernel/api-gateway/lib/types/client/index.js +93 -61
- package/dist/kernel/api-gateway/package.json +1 -1
- package/dist/kernel/api-remotes/lib/client.js +166 -27
- package/dist/kernel/api-remotes/lib/index.js +1 -1
- package/dist/kernel/api-remotes/lib/types/client/index.d.ts +4 -0
- package/dist/kernel/api-remotes/lib/types/client/index.js +4 -1
- package/dist/kernel/api-remotes/lib/types/remote-events.d.ts +1 -1
- package/dist/kernel/api-remotes/lib/types/remote-events.js +1 -1
- package/dist/kernel/api-remotes/package.json +11 -7
- package/dist/kernel/app-boot/lib/index.js +19 -41
- package/dist/kernel/app-boot/lib/types/index.d.ts +0 -1
- package/dist/kernel/app-boot/lib/types/index.js +2 -3
- package/dist/kernel/app-boot/lib/types/profile.d.ts +15 -12
- package/dist/kernel/app-boot/lib/types/profile.js +15 -25
- package/dist/kernel/app-boot/package.json +1 -1
- package/dist/kernel/atomic-write/lib/index.js +36 -16
- package/dist/kernel/atomic-write/lib/types/index.d.ts +21 -5
- package/dist/kernel/atomic-write/lib/types/index.js +40 -16
- package/dist/kernel/atomic-write/package.json +1 -1
- package/dist/kernel/attachment/lib/index.js +62 -3
- package/dist/kernel/attachment/lib/types/admission.d.ts +15 -0
- package/dist/kernel/attachment/lib/types/admission.js +33 -0
- package/dist/kernel/attachment/lib/types/brand.d.ts +8 -0
- package/dist/kernel/attachment/lib/types/brand.js +8 -0
- package/dist/kernel/attachment/lib/types/error.d.ts +2 -2
- package/dist/kernel/attachment/lib/types/error.js +1 -0
- package/dist/kernel/attachment/lib/types/index.d.ts +23 -5
- package/dist/kernel/attachment/lib/types/index.js +24 -2
- package/dist/kernel/attachment/lib/types/types.d.ts +47 -2
- package/dist/kernel/attachment/package.json +3 -2
- package/dist/kernel/attachment-local/lib/index.js +640 -48
- package/dist/kernel/attachment-local/lib/types/compression-limiter.d.ts +18 -0
- package/dist/kernel/attachment-local/lib/types/compression-limiter.js +43 -0
- package/dist/kernel/attachment-local/lib/types/encoding.d.ts +23 -0
- package/dist/kernel/attachment-local/lib/types/encoding.js +33 -0
- package/dist/kernel/attachment-local/lib/types/image.d.ts +31 -2
- package/dist/kernel/attachment-local/lib/types/image.js +43 -4
- package/dist/kernel/attachment-local/lib/types/index.d.ts +45 -10
- package/dist/kernel/attachment-local/lib/types/index.js +140 -10
- package/dist/kernel/attachment-local/lib/types/normalization.d.ts +44 -0
- package/dist/kernel/attachment-local/lib/types/normalization.js +148 -0
- package/dist/kernel/attachment-local/lib/types/request-image.d.ts +35 -0
- package/dist/kernel/attachment-local/lib/types/request-image.js +208 -0
- package/dist/kernel/attachment-local/lib/types/store.d.ts +36 -9
- package/dist/kernel/attachment-local/lib/types/store.js +60 -24
- package/dist/kernel/attachment-local/package.json +1 -1
- package/dist/kernel/authorization/lib/index.js +248 -0
- package/dist/kernel/authorization/lib/invariant.js +36 -0
- package/dist/kernel/authorization/lib/types/index.d.ts +223 -0
- package/dist/kernel/authorization/lib/types/index.js +299 -0
- package/dist/kernel/authorization/lib/types/invariant.d.ts +16 -0
- package/dist/kernel/authorization/lib/types/invariant.js +38 -0
- package/dist/kernel/authorization/lib/types/types.d.ts +83 -0
- package/dist/kernel/authorization/lib/types/types.js +8 -0
- package/dist/kernel/{client-web-react → authorization}/package.json +19 -16
- package/dist/kernel/base/cordis.patch.yml +31 -6
- package/dist/kernel/base/package.json +3 -1
- package/dist/kernel/bash-local/package.json +1 -1
- package/dist/kernel/bash-sandbox/package.json +1 -1
- package/dist/kernel/brand/package.json +1 -1
- package/dist/kernel/client-connection/lib/client.js +148 -28
- package/dist/kernel/client-connection/lib/index.js +4 -4
- package/dist/kernel/client-connection/lib/types/client/fixture.js +112 -20
- package/dist/kernel/client-connection/lib/types/client/index.d.ts +21 -1
- package/dist/kernel/client-connection/lib/types/client/index.js +3 -2
- package/dist/kernel/client-connection/lib/types/client/rpc.d.ts +4 -1
- package/dist/kernel/client-connection/lib/types/client/rpc.js +4 -2
- package/dist/kernel/client-connection/lib/types/http-bridge.d.ts +2 -2
- package/dist/kernel/client-connection/lib/types/http-bridge.js +3 -3
- package/dist/kernel/client-connection/lib/types/index.d.ts +1 -1
- package/dist/kernel/client-connection/package.json +15 -9
- package/dist/kernel/client-hmr/package.json +1 -1
- package/dist/kernel/client-locale/lib/client.js +48 -9
- package/dist/kernel/client-locale/lib/types/client/index.d.ts +19 -3
- package/dist/kernel/client-locale/lib/types/client/index.js +48 -7
- package/dist/kernel/client-locale/package.json +6 -6
- package/dist/kernel/client-modules/lib/client.js +188 -123
- package/dist/kernel/client-modules/lib/index.js +177 -31
- package/dist/kernel/client-modules/lib/types/client/index.d.ts +19 -8
- package/dist/kernel/client-modules/lib/types/client/index.js +25 -8
- package/dist/kernel/client-modules/lib/types/client/manifest.d.ts +90 -41
- package/dist/kernel/client-modules/lib/types/client/manifest.js +45 -12
- package/dist/kernel/client-modules/lib/types/client/system.d.ts +15 -17
- package/dist/kernel/client-modules/lib/types/client/system.js +85 -56
- package/dist/kernel/client-modules/lib/types/index.d.ts +28 -12
- package/dist/kernel/client-modules/lib/types/index.js +128 -34
- package/dist/kernel/client-modules/package.json +4 -2
- package/dist/kernel/client-runtime/lib/client.js +43 -8
- package/dist/kernel/client-runtime/lib/types/client/contract/session.d.ts +1 -1
- package/dist/kernel/client-runtime/lib/types/client/contract/store.d.ts +1 -1
- package/dist/kernel/client-runtime/lib/types/client/contract/store.js +2 -2
- package/dist/kernel/client-runtime/lib/types/client/index.d.ts +2 -2
- package/dist/kernel/client-runtime/lib/types/client/index.js +3 -3
- package/dist/kernel/client-runtime/lib/types/client/sessions/context-provenance.d.ts +8 -0
- package/dist/kernel/client-runtime/lib/types/client/sessions/context-provenance.js +13 -0
- package/dist/kernel/client-runtime/lib/types/client/sessions/conversation.d.ts +11 -7
- package/dist/kernel/client-runtime/lib/types/client/sessions/projection-store.d.ts +1 -1
- package/dist/kernel/client-runtime/lib/types/client/sessions/session.d.ts +1 -1
- package/dist/kernel/client-runtime/lib/types/client/sessions/session.js +4 -4
- package/dist/kernel/client-runtime/lib/types/client/slots.d.ts +1 -1
- package/dist/kernel/client-runtime/lib/types/client/slots.js +1 -1
- package/dist/kernel/client-runtime/lib/types/client/workspaces/path.d.ts +9 -0
- package/dist/kernel/client-runtime/lib/types/client/workspaces/path.js +27 -1
- package/dist/kernel/client-runtime/package.json +25 -14
- package/dist/kernel/client-ui-agent-preset/lib/client.js +55 -55
- package/dist/kernel/client-ui-agent-preset/lib/types/client/index.js +2 -2
- package/dist/kernel/client-ui-agent-preset/lib/types/client/settings-store.d.ts +7 -1
- package/dist/kernel/client-ui-agent-preset/lib/types/client/settings-store.js +21 -20
- package/dist/kernel/client-ui-agent-preset/package.json +2 -7
- package/dist/kernel/client-ui-attachment/lib/client.js +782 -0
- package/dist/kernel/client-ui-attachment/lib/index.js +5 -505
- package/dist/kernel/client-ui-attachment/lib/invariant.js +2 -3
- package/dist/kernel/client-ui-attachment/lib/types/client/ComposerAttachments.d.ts +4 -0
- package/dist/kernel/client-ui-attachment/lib/types/client/ComposerAttachments.js +85 -0
- package/dist/kernel/client-ui-attachment/lib/types/client/MessageImages.d.ts +4 -0
- package/dist/kernel/client-ui-attachment/lib/types/client/MessageImages.js +8 -0
- package/dist/kernel/client-ui-attachment/lib/types/client/index.d.ts +7 -0
- package/dist/kernel/client-ui-attachment/lib/types/client/index.js +16 -0
- package/dist/kernel/client-ui-attachment/lib/types/client/labels.d.ts +35 -0
- package/dist/kernel/client-ui-attachment/lib/types/client/labels.js +52 -0
- package/dist/kernel/client-ui-attachment/lib/types/index.d.ts +3 -15
- package/dist/kernel/client-ui-attachment/lib/types/index.js +3 -11
- package/dist/kernel/client-ui-attachment/lib/types/invariant.js +2 -3
- package/dist/kernel/client-ui-attachment/package.json +32 -9
- package/dist/kernel/client-ui-brand-official/lib/client.js +50 -0
- package/dist/kernel/client-ui-brand-official/lib/index.js +9 -0
- package/dist/kernel/{client-web-react → client-ui-brand-official}/lib/invariant.js +6 -8
- package/dist/kernel/client-ui-brand-official/lib/types/client/Brand.d.ts +16 -0
- package/dist/kernel/client-ui-brand-official/lib/types/client/Brand.js +18 -0
- package/dist/kernel/client-ui-brand-official/lib/types/client/index.d.ts +10 -0
- package/dist/kernel/client-ui-brand-official/lib/types/client/index.js +17 -0
- package/dist/kernel/client-ui-brand-official/lib/types/index.d.ts +7 -0
- package/dist/kernel/client-ui-brand-official/lib/types/index.js +7 -0
- package/dist/kernel/client-ui-brand-official/lib/types/invariant.d.ts +16 -0
- package/dist/kernel/{client-web-react → client-ui-brand-official}/lib/types/invariant.js +6 -8
- package/dist/kernel/client-ui-brand-official/package.json +72 -0
- package/dist/kernel/client-ui-commands/lib/client.js +44 -15
- package/dist/kernel/client-ui-commands/lib/types/client/locales.d.ts +2 -0
- package/dist/kernel/client-ui-commands/lib/types/client/locales.js +2 -0
- package/dist/kernel/client-ui-commands/lib/types/client/service.d.ts +11 -1
- package/dist/kernel/client-ui-commands/lib/types/client/service.js +39 -7
- package/dist/kernel/client-ui-commands/package.json +2 -5
- package/dist/kernel/client-ui-conversation/lib/client.js +949 -531
- package/dist/kernel/client-ui-conversation/lib/types/client/apply.js +6 -4
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/AssistantMarkdown.d.ts +4 -5
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/AssistantMarkdown.js +6 -6
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/AssistantNodeView.d.ts +1 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/AssistantNodeView.js +2 -2
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/ChatNodeSeat.d.ts +1 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/ChatNodeSeat.js +5 -3
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/ChatView.js +53 -10
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/ContextInjectionRow.js +4 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/MessageItem.d.ts +4 -5
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/MessageItem.js +46 -16
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/StatsLine.d.ts +5 -3
- package/dist/kernel/client-ui-conversation/lib/types/client/chat/StatsLine.js +54 -5
- package/dist/kernel/client-ui-conversation/lib/types/client/contract/slots.d.ts +90 -8
- package/dist/kernel/client-ui-conversation/lib/types/client/conversation-nodes/assistant.js +1 -0
- package/dist/kernel/client-ui-conversation/lib/types/client/conversation-nodes/chat-snapshot-builder.d.ts +1 -0
- package/dist/kernel/client-ui-conversation/lib/types/client/conversation-nodes/chat-snapshot-builder.js +95 -6
- package/dist/kernel/client-ui-conversation/lib/types/client/conversation-nodes/message.d.ts +11 -3
- package/dist/kernel/client-ui-conversation/lib/types/client/conversation-nodes/turn-error.d.ts +6 -3
- package/dist/kernel/client-ui-conversation/lib/types/client/conversation-nodes/turn-error.js +10 -26
- package/dist/kernel/client-ui-conversation/lib/types/client/image-labels.d.ts +1 -33
- package/dist/kernel/client-ui-conversation/lib/types/client/image-labels.js +5 -54
- package/dist/kernel/client-ui-conversation/lib/types/client/index.d.ts +1 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/input/contract.d.ts +17 -14
- package/dist/kernel/client-ui-conversation/lib/types/client/input/decorations.d.ts +13 -5
- package/dist/kernel/client-ui-conversation/lib/types/client/input/decorations.js +26 -10
- package/dist/kernel/client-ui-conversation/lib/types/client/input/facade.d.ts +34 -14
- package/dist/kernel/client-ui-conversation/lib/types/client/input/facade.js +116 -34
- package/dist/kernel/client-ui-conversation/lib/types/client/input/hub.d.ts +1 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/input/hub.js +21 -19
- package/dist/kernel/client-ui-conversation/lib/types/client/input/machine.d.ts +35 -14
- package/dist/kernel/client-ui-conversation/lib/types/client/input/machine.js +71 -34
- package/dist/kernel/client-ui-conversation/lib/types/client/locales.d.ts +16 -0
- package/dist/kernel/client-ui-conversation/lib/types/client/locales.js +16 -0
- package/dist/kernel/client-ui-conversation/lib/types/client/reference/ReferenceIcon.d.ts +16 -0
- package/dist/kernel/client-ui-conversation/lib/types/client/reference/ReferenceIcon.js +16 -0
- package/dist/kernel/client-ui-conversation/lib/types/client/service.d.ts +14 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/service.js +26 -6
- package/dist/kernel/client-ui-conversation/lib/types/client/skeleton/ConversationRoot.js +1 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/skeleton/ConversationSession.js +18 -3
- package/dist/kernel/client-ui-conversation/lib/types/client/skeleton/EmptyHero.d.ts +3 -1
- package/dist/kernel/client-ui-conversation/lib/types/client/skeleton/EmptyHero.js +4 -2
- package/dist/kernel/client-ui-conversation/lib/types/client/skeleton/InputBar.js +141 -126
- package/dist/kernel/client-ui-conversation/package.json +9 -8
- package/dist/kernel/client-ui-cordis/lib/client.js +48 -48
- package/dist/kernel/client-ui-cordis/package.json +2 -5
- package/dist/kernel/client-ui-deliverables/lib/client.js +5 -5
- package/dist/kernel/client-ui-deliverables/package.json +4 -6
- package/dist/kernel/client-ui-directory-picker-browse/lib/client.js +26 -26
- package/dist/kernel/client-ui-directory-picker-browse/package.json +2 -5
- package/dist/kernel/client-ui-directory-picker-native/package.json +2 -5
- package/dist/kernel/client-ui-goal/lib/client.js +8 -8
- package/dist/kernel/client-ui-goal/package.json +6 -5
- package/dist/kernel/client-ui-input-trigger/lib/client.js +82 -26
- package/dist/kernel/client-ui-input-trigger/lib/types/client/MenuView.js +13 -9
- package/dist/kernel/client-ui-input-trigger/lib/types/client/controller.d.ts +5 -3
- package/dist/kernel/client-ui-input-trigger/lib/types/client/controller.js +19 -7
- package/dist/kernel/client-ui-input-trigger/lib/types/client/index.d.ts +1 -1
- package/dist/kernel/client-ui-input-trigger/lib/types/core/contract.d.ts +7 -2
- package/dist/kernel/client-ui-input-trigger/lib/types/core/detect.d.ts +4 -4
- package/dist/kernel/client-ui-input-trigger/lib/types/core/detect.js +24 -6
- package/dist/kernel/client-ui-input-trigger/lib/types/core/menu.d.ts +15 -2
- package/dist/kernel/client-ui-input-trigger/lib/types/core/menu.js +13 -4
- package/dist/kernel/client-ui-input-trigger/lib/types/types.d.ts +52 -8
- package/dist/kernel/client-ui-input-trigger/package.json +4 -5
- package/dist/kernel/client-ui-jobs/lib/client.js +10 -10
- package/dist/kernel/client-ui-jobs/package.json +3 -7
- package/dist/kernel/client-ui-layout/lib/client.js +3 -3
- package/dist/kernel/client-ui-layout/package.json +2 -4
- package/dist/kernel/client-ui-message-feedback/lib/client.js +174 -58
- package/dist/kernel/client-ui-message-feedback/lib/types/client/MessageFeedbackActions.d.ts +9 -3
- package/dist/kernel/client-ui-message-feedback/lib/types/client/MessageFeedbackActions.js +164 -25
- package/dist/kernel/client-ui-message-feedback/lib/types/client/locales.d.ts +2 -0
- package/dist/kernel/client-ui-message-feedback/lib/types/client/locales.js +2 -0
- package/dist/kernel/client-ui-message-feedback/package.json +3 -5
- package/dist/kernel/client-ui-model-selection/lib/client.js +18 -18
- package/dist/kernel/client-ui-model-selection/package.json +7 -9
- package/dist/kernel/client-ui-permission-presets/lib/client.js +97 -83
- package/dist/kernel/client-ui-permission-presets/lib/types/client/index.js +6 -19
- package/dist/kernel/client-ui-permission-presets/lib/types/client/settings-store.d.ts +27 -18
- package/dist/kernel/client-ui-permission-presets/lib/types/client/settings-store.js +95 -68
- package/dist/kernel/client-ui-permission-presets/package.json +2 -8
- package/dist/kernel/client-ui-plan/lib/client.js +1 -1
- package/dist/kernel/client-ui-plan/lib/types/client/index.js +1 -1
- package/dist/kernel/client-ui-plan/package.json +2 -6
- package/dist/kernel/client-ui-primitives/lib/Button.module.css +79 -0
- package/dist/kernel/client-ui-primitives/lib/ConnectionBanner.module.css +13 -0
- package/dist/kernel/client-ui-primitives/lib/DiffBlock.module.css +107 -0
- package/dist/kernel/client-ui-primitives/lib/DisclosureRow.module.css +69 -0
- package/dist/kernel/client-ui-primitives/lib/HoverCard.module.css +54 -0
- package/dist/kernel/client-ui-primitives/lib/Input.module.css +38 -0
- package/dist/kernel/client-ui-primitives/lib/JsonTree.module.css +222 -0
- package/dist/kernel/client-ui-primitives/lib/Menu.module.css +242 -0
- package/dist/kernel/client-ui-primitives/lib/Modal.module.css +103 -0
- package/dist/kernel/client-ui-primitives/lib/OnboardingSurface.module.css +29 -0
- package/dist/kernel/client-ui-primitives/lib/Pill.module.css +27 -0
- package/dist/kernel/client-ui-primitives/lib/ReadBlock.module.css +117 -0
- package/dist/kernel/client-ui-primitives/lib/RiskConfirmation.module.css +73 -0
- package/dist/kernel/client-ui-primitives/lib/SearchBlock.module.css +120 -0
- package/dist/kernel/client-ui-primitives/lib/StateDot.module.css +65 -0
- package/dist/kernel/client-ui-primitives/lib/TerminalBlock.module.css +211 -0
- package/dist/kernel/client-ui-primitives/lib/Toast.module.css +70 -0
- package/dist/kernel/client-ui-primitives/lib/Tooltip.module.css +49 -0
- package/dist/kernel/client-ui-primitives/lib/WebBlock.module.css +130 -0
- package/dist/kernel/client-ui-primitives/lib/index.js +291 -261
- package/dist/kernel/client-ui-primitives/lib/invariant.js +2 -0
- package/dist/kernel/client-ui-primitives/lib/markdown/CodeBlock.module.css +96 -0
- package/dist/kernel/client-ui-primitives/lib/markdown/JsonBlock.module.css +32 -0
- package/dist/kernel/client-ui-primitives/lib/markdown/MarkdownText.module.css +304 -0
- package/dist/kernel/client-ui-primitives/lib/markdown/MessageText.module.css +9 -0
- package/dist/kernel/client-ui-primitives/lib/types/BrandWordmark.d.ts +7 -1
- package/dist/kernel/client-ui-primitives/lib/types/BrandWordmark.js +4 -2
- package/dist/kernel/client-ui-primitives/lib/types/index.d.ts +4 -1
- package/dist/kernel/client-ui-primitives/lib/types/index.js +2 -1
- package/dist/kernel/client-ui-primitives/lib/types/markdown/render.d.ts +2 -0
- package/dist/kernel/client-ui-primitives/lib/types/markdown/render.js +10 -2
- package/dist/kernel/client-ui-primitives/lib/types/useAnchoredPosition.d.ts +32 -0
- package/dist/kernel/client-ui-primitives/lib/types/useAnchoredPosition.js +69 -0
- package/dist/kernel/client-ui-primitives/package.json +2 -1
- package/dist/kernel/client-ui-reference/lib/client.js +149 -0
- package/dist/kernel/client-ui-reference/lib/index.js +11 -0
- package/dist/kernel/{client-schema-form → client-ui-reference}/lib/invariant.js +7 -8
- package/dist/kernel/client-ui-reference/lib/types/client/index.d.ts +9 -0
- package/dist/kernel/client-ui-reference/lib/types/client/index.js +106 -0
- package/dist/kernel/client-ui-reference/lib/types/client/locales.d.ts +30 -0
- package/dist/kernel/client-ui-reference/lib/types/client/locales.js +22 -0
- package/dist/kernel/client-ui-reference/lib/types/index.d.ts +9 -0
- package/dist/kernel/client-ui-reference/lib/types/index.js +9 -0
- package/dist/kernel/{client-schema-form → client-ui-reference}/lib/types/invariant.d.ts +3 -3
- package/dist/kernel/{client-schema-form → client-ui-reference}/lib/types/invariant.js +7 -8
- package/dist/kernel/client-ui-reference/package.json +77 -0
- package/dist/kernel/client-ui-renderer/lib/client.js +989 -0
- package/dist/kernel/client-ui-renderer/lib/index.js +6 -0
- package/dist/kernel/client-ui-renderer/lib/invariant.js +23 -0
- package/dist/kernel/{client-web/lib/types → client-ui-renderer/lib/types/client}/DocumentTitle.d.ts +4 -4
- package/dist/kernel/client-ui-renderer/lib/types/client/DocumentTitle.js +17 -0
- package/dist/kernel/client-ui-renderer/lib/types/client/app.d.ts +18 -0
- package/dist/kernel/{client-web/lib/types → client-ui-renderer/lib/types/client}/app.js +5 -5
- package/dist/kernel/{client-web-react/lib/types → client-ui-renderer/lib/types/client}/bind.d.ts +1 -1
- package/dist/kernel/client-ui-renderer/lib/types/client/index.d.ts +29 -0
- package/dist/kernel/client-ui-renderer/lib/types/client/index.js +51 -0
- package/dist/kernel/{client-web-react/lib/types → client-ui-renderer/lib/types/client}/scoped-slots.d.ts +1 -1
- package/dist/kernel/{client-web-react/lib/types → client-ui-renderer/lib/types/client}/scoped-slots.js +1 -1
- package/dist/kernel/{client-web-react/lib/types → client-ui-renderer/lib/types/client}/session-provider.d.ts +1 -1
- package/dist/kernel/client-ui-renderer/lib/types/index.d.ts +4 -0
- package/dist/kernel/client-ui-renderer/lib/types/index.js +4 -0
- package/dist/kernel/{client-web-react → client-ui-renderer}/lib/types/invariant.d.ts +3 -3
- package/dist/kernel/client-ui-renderer/lib/types/invariant.js +22 -0
- package/dist/kernel/client-ui-renderer/package.json +71 -0
- package/dist/kernel/client-ui-settings/lib/client.js +1177 -67
- package/dist/kernel/client-ui-settings/lib/types/client/index.d.ts +20 -12
- package/dist/kernel/client-ui-settings/lib/types/client/index.js +25 -6
- package/dist/kernel/client-ui-settings/lib/types/client/schema.d.ts +72 -0
- package/dist/kernel/client-ui-settings/lib/types/client/schema.js +152 -0
- package/dist/kernel/client-ui-settings/lib/types/client/settings-mirror.d.ts +118 -0
- package/dist/kernel/client-ui-settings/lib/types/client/settings-mirror.js +160 -0
- package/dist/kernel/client-ui-settings/lib/types/client/settings-scope.d.ts +51 -24
- package/dist/kernel/client-ui-settings/lib/types/client/settings-scope.js +88 -71
- package/dist/kernel/client-ui-settings/package.json +7 -7
- package/dist/kernel/client-ui-settings-general/lib/client.js +60 -64
- package/dist/kernel/client-ui-settings-general/lib/types/client/SettingsDocumentAction.d.ts +7 -6
- package/dist/kernel/client-ui-settings-general/lib/types/client/index.js +10 -11
- package/dist/kernel/client-ui-settings-general/lib/types/client/settings-document-store.d.ts +13 -11
- package/dist/kernel/client-ui-settings-general/lib/types/client/settings-document-store.js +37 -40
- package/dist/kernel/client-ui-settings-general/package.json +4 -8
- package/dist/kernel/client-ui-settings-models/lib/client.js +280 -210
- package/dist/kernel/client-ui-settings-models/lib/types/client/DeepSeekOnboardingDialog.d.ts +3 -0
- package/dist/kernel/client-ui-settings-models/lib/types/client/DeepSeekOnboardingDialog.js +2 -2
- package/dist/kernel/client-ui-settings-models/lib/types/client/ModelListEditor.js +11 -1
- package/dist/kernel/client-ui-settings-models/lib/types/client/ModelsSection.d.ts +10 -5
- package/dist/kernel/client-ui-settings-models/lib/types/client/ModelsSection.js +9 -6
- package/dist/kernel/client-ui-settings-models/lib/types/client/ProviderEditor.d.ts +3 -0
- package/dist/kernel/client-ui-settings-models/lib/types/client/ProviderEditor.js +30 -29
- package/dist/kernel/client-ui-settings-models/lib/types/client/index.js +27 -22
- package/dist/kernel/client-ui-settings-models/lib/types/client/locales.d.ts +2 -0
- package/dist/kernel/client-ui-settings-models/lib/types/client/locales.js +4 -0
- package/dist/kernel/client-ui-settings-models/lib/types/client/schema-operations.d.ts +10 -0
- package/dist/kernel/client-ui-settings-models/lib/types/client/schema-operations.js +17 -0
- package/dist/kernel/client-ui-settings-models/lib/types/client/store.d.ts +15 -7
- package/dist/kernel/client-ui-settings-models/lib/types/client/store.js +30 -21
- package/dist/kernel/client-ui-settings-models/lib/types/client/welcome-store.d.ts +35 -18
- package/dist/kernel/client-ui-settings-models/lib/types/client/welcome-store.js +89 -82
- package/dist/kernel/client-ui-settings-models/package.json +3 -8
- package/dist/kernel/client-ui-settings-plugin-inventory/lib/client.js +11 -11
- package/dist/kernel/client-ui-settings-plugin-inventory/package.json +2 -5
- package/dist/kernel/client-ui-settings-plugins/lib/client.js +42 -65
- package/dist/kernel/client-ui-settings-plugins/lib/types/client/index.js +5 -8
- package/dist/kernel/client-ui-settings-plugins/lib/types/client/tab-store.d.ts +8 -17
- package/dist/kernel/client-ui-settings-plugins/lib/types/client/tab-store.js +22 -44
- package/dist/kernel/client-ui-settings-plugins/package.json +2 -7
- package/dist/kernel/client-ui-sidebar/lib/client.js +50 -20
- package/dist/kernel/client-ui-sidebar/lib/types/client/SidebarRoot.js +7 -3
- package/dist/kernel/client-ui-sidebar/lib/types/client/contract/slots.d.ts +30 -1
- package/dist/kernel/client-ui-sidebar/lib/types/client/index.d.ts +1 -1
- package/dist/kernel/client-ui-sidebar/lib/types/client/index.js +2 -0
- package/dist/kernel/client-ui-sidebar/package.json +2 -4
- package/dist/kernel/client-ui-skill/lib/client.js +12 -12
- package/dist/kernel/client-ui-skill/package.json +2 -5
- package/dist/kernel/client-ui-slots/lib/index.js +2 -0
- package/dist/kernel/client-ui-slots/lib/invariant.js +2 -0
- package/dist/kernel/client-ui-slots/lib/types/renderer.d.ts +1 -1
- package/dist/kernel/client-ui-slots/lib/types/store.d.ts +1 -1
- package/dist/kernel/client-ui-slots/package.json +1 -1
- package/dist/kernel/client-ui-subagent/lib/client.js +289 -157
- package/dist/kernel/client-ui-subagent/lib/types/client/SubagentHeaderLineage.d.ts +18 -0
- package/dist/kernel/client-ui-subagent/lib/types/client/{SubagentCatalogAction.js → SubagentHeaderLineage.js} +153 -25
- package/dist/kernel/client-ui-subagent/lib/types/client/index.d.ts +4 -16
- package/dist/kernel/client-ui-subagent/lib/types/client/index.js +7 -45
- package/dist/kernel/client-ui-subagent/lib/types/client/locales.d.ts +1 -0
- package/dist/kernel/client-ui-subagent/lib/types/client/locales.js +2 -0
- package/dist/kernel/client-ui-subagent/package.json +6 -8
- package/dist/kernel/client-ui-theme/lib/client.js +46 -3
- package/dist/kernel/client-ui-theme/lib/index.js +22 -23
- package/dist/kernel/client-ui-theme/lib/types/boot-theme.d.ts +9 -10
- package/dist/kernel/client-ui-theme/lib/types/boot-theme.js +12 -19
- package/dist/kernel/client-ui-theme/lib/types/client/index.d.ts +1 -1
- package/dist/kernel/client-ui-theme/lib/types/client/index.js +3 -1
- package/dist/kernel/client-ui-theme/lib/types/client/styles.d.ts +7 -0
- package/dist/kernel/client-ui-theme/lib/types/client/styles.js +32 -0
- package/dist/kernel/client-ui-theme/lib/types/index.d.ts +4 -3
- package/dist/kernel/client-ui-theme/lib/types/index.js +7 -6
- package/dist/kernel/client-ui-theme/package.json +4 -6
- package/dist/kernel/client-ui-tool/lib/client.js +105 -65
- package/dist/kernel/client-ui-tool/lib/types/client/apply.d.ts +1 -2
- package/dist/kernel/client-ui-tool/lib/types/client/apply.js +6 -2
- package/dist/kernel/client-ui-tool/lib/types/client/contract/slots.d.ts +13 -3
- package/dist/kernel/client-ui-tool/lib/types/client/index.d.ts +1 -1
- package/dist/kernel/client-ui-tool/lib/types/client/tool/ToolCallTree.d.ts +1 -1
- package/dist/kernel/client-ui-tool/lib/types/client/tool/ToolCallTree.js +8 -6
- package/dist/kernel/client-ui-tool/lib/types/client/tool/ToolDetails.d.ts +2 -9
- package/dist/kernel/client-ui-tool/lib/types/client/tool/ToolDetails.js +4 -3
- package/dist/kernel/client-ui-tool/lib/types/client/tool/models/read-card-model.d.ts +4 -18
- package/dist/kernel/client-ui-tool/lib/types/client/tool/models/read-card-model.js +21 -4
- package/dist/kernel/client-ui-tool/lib/types/client/tool/models/tool-call-model.d.ts +2 -9
- package/dist/kernel/client-ui-tool/lib/types/client/tool/models/tool-call-model.js +22 -2
- package/dist/kernel/client-ui-tool/lib/types/client/tool/toolviews/GenericToolCard.d.ts +1 -1
- package/dist/kernel/client-ui-tool/lib/types/client/tool/toolviews/GenericToolCard.js +3 -3
- package/dist/kernel/client-ui-tool/lib/types/client/tool/toolviews/file-mutation-row.d.ts +1 -1
- package/dist/kernel/client-ui-tool/lib/types/client/tool/toolviews/file-mutation-row.js +2 -2
- package/dist/kernel/client-ui-tool/lib/types/client/tool/toolviews/read-row.d.ts +1 -1
- package/dist/kernel/client-ui-tool/lib/types/client/tool/toolviews/read-row.js +3 -3
- package/dist/kernel/client-ui-tool/package.json +4 -6
- package/dist/kernel/client-ui-trajectory/lib/client.js +144 -143
- package/dist/kernel/client-ui-trajectory/lib/types/client/trajectory-assistant-definition.js +2 -1
- package/dist/kernel/client-ui-trajectory/package.json +2 -4
- package/dist/kernel/client-ui-user-questions/lib/client.js +73 -36
- package/dist/kernel/client-ui-user-questions/lib/types/client/QuestionComposer.js +24 -6
- package/dist/kernel/client-ui-user-questions/package.json +12 -10
- package/dist/kernel/client-ui-workflow-run/lib/client.js +262 -87
- package/dist/kernel/client-ui-workflow-run/lib/types/client/WorkflowRunPanel.js +162 -23
- package/dist/kernel/client-ui-workflow-run/package.json +3 -7
- package/dist/kernel/client-ui-workspace/lib/client.js +96 -60
- package/dist/kernel/client-ui-workspace/lib/types/client/WorkspaceBrowser.d.ts +1 -1
- package/dist/kernel/client-ui-workspace/lib/types/client/WorkspaceBrowser.js +38 -6
- package/dist/kernel/client-ui-workspace/lib/types/client/contract/slots.d.ts +9 -7
- package/dist/kernel/client-ui-workspace/lib/types/client/index.js +4 -2
- package/dist/kernel/client-ui-workspace/lib/types/client/rows/Rows.d.ts +4 -1
- package/dist/kernel/client-ui-workspace/lib/types/client/rows/Rows.js +5 -3
- package/dist/kernel/client-ui-workspace/package.json +6 -4
- package/dist/kernel/client-web/lib/base.css +41 -0
- package/dist/kernel/client-web/lib/boot-page.module.css +104 -0
- package/dist/kernel/client-web/lib/index.js +154 -308
- package/dist/kernel/client-web/lib/invariant.js +2 -0
- package/dist/kernel/client-web/lib/types/boot-page.d.ts +46 -0
- package/dist/kernel/client-web/lib/types/boot-page.js +93 -0
- package/dist/kernel/client-web/lib/types/boot.d.ts +20 -33
- package/dist/kernel/client-web/lib/types/boot.js +76 -149
- package/dist/kernel/client-web/lib/types/index.d.ts +5 -11
- package/dist/kernel/client-web/lib/types/index.js +4 -10
- package/dist/kernel/client-web/lib/types/loader-status.d.ts +3 -51
- package/dist/kernel/client-web/lib/types/loader-status.js +0 -35
- package/dist/kernel/client-web/lib/types/platform.d.ts +3 -1
- package/dist/kernel/client-web/lib/types/platform.js +4 -3
- package/dist/kernel/client-web/lib/types/seed.js +0 -6
- package/dist/kernel/client-web/package.json +8 -15
- package/dist/kernel/cmdline/package.json +1 -1
- package/dist/kernel/code-runtime/package.json +1 -1
- package/dist/kernel/code-runtime-python/lib/index.js +413 -0
- package/dist/kernel/code-runtime-python/lib/invariant.js +24 -0
- package/dist/kernel/code-runtime-python/lib/types/index.d.ts +12 -0
- package/dist/kernel/code-runtime-python/lib/types/index.js +11 -0
- package/dist/kernel/code-runtime-python/lib/types/invariant.d.ts +16 -0
- package/dist/kernel/code-runtime-python/lib/types/invariant.js +23 -0
- package/dist/kernel/code-runtime-python/lib/types/protocol.d.ts +329 -0
- package/dist/kernel/code-runtime-python/lib/types/protocol.js +496 -0
- package/dist/kernel/{client-schema-form → code-runtime-python}/package.json +11 -14
- package/dist/kernel/code-runtime-python/py/protocol.py +138 -0
- package/dist/kernel/code-runtime-worker-thread/package.json +1 -1
- package/dist/kernel/command-compact/package.json +1 -1
- package/dist/kernel/command-feedback/package.json +1 -1
- package/dist/kernel/command-goal/lib/index.js +40 -6
- package/dist/kernel/command-goal/lib/types/index.js +35 -6
- package/dist/kernel/command-goal/package.json +2 -1
- package/dist/kernel/commands/lib/index.js +78 -21
- package/dist/kernel/commands/lib/typert.host.js +53 -9
- package/dist/kernel/commands/lib/typert.remote-client.d.ts +4 -3
- package/dist/kernel/commands/lib/typert.remote-client.js +18 -2
- package/dist/kernel/commands/lib/types/index.d.ts +20 -1
- package/dist/kernel/commands/lib/types/index.js +77 -20
- package/dist/kernel/commands/lib/types/types.d.ts +8 -0
- package/dist/kernel/commands/package.json +5 -1
- package/dist/kernel/compaction/package.json +1 -1
- package/dist/kernel/compaction-basic/package.json +1 -1
- package/dist/kernel/compaction-tool-result-pruner/package.json +1 -1
- package/dist/kernel/cordis/package.json +3 -1
- package/dist/kernel/cordis-client-runner/lib/client.js +171 -37
- package/dist/kernel/cordis-client-runner/lib/types/client/api-catalog.js +3 -3
- package/dist/kernel/cordis-client-runner/lib/types/client/slot-catalog.js +208 -30
- package/dist/kernel/cordis-client-runner/package.json +2 -5
- package/dist/kernel/cordis-host-runner/lib/index.js +28 -5
- package/dist/kernel/cordis-host-runner/lib/typert.host.js +54 -6
- package/dist/kernel/cordis-host-runner/lib/types/sandbox.d.ts +9 -3
- package/dist/kernel/cordis-host-runner/lib/types/sandbox.js +34 -6
- package/dist/kernel/cordis-host-runner/package.json +1 -1
- package/dist/kernel/cordis-plugin-group/package.json +3 -1
- package/dist/kernel/cordis-plugin-hmr/lib/types/index.js +1 -1
- package/dist/kernel/cordis-plugin-hmr/package.json +3 -1
- package/dist/kernel/cordis-plugin-include/lib/index.js +2 -2
- package/dist/kernel/cordis-plugin-include/lib/types/index.d.ts +2 -2
- package/dist/kernel/cordis-plugin-include/lib/types/index.js +2 -2
- package/dist/kernel/cordis-plugin-include/package.json +3 -1
- package/dist/kernel/cordis-plugin-loader/package.json +3 -1
- package/dist/kernel/cordis-plugin-logger-console/package.json +3 -1
- package/dist/kernel/cordis-plugin-timer/package.json +3 -1
- package/dist/kernel/cosmokit/package.json +3 -1
- package/dist/kernel/credentials/lib/index.js +104 -13
- package/dist/kernel/credentials/lib/invariant.js +3 -3
- package/dist/kernel/credentials/lib/types/index.d.ts +136 -7
- package/dist/kernel/credentials/lib/types/index.js +114 -15
- package/dist/kernel/credentials/lib/types/invariant.js +3 -3
- package/dist/kernel/credentials/lib/types/types.d.ts +58 -5
- package/dist/kernel/credentials/lib/types/types.js +4 -4
- package/dist/kernel/credentials/package.json +1 -1
- package/dist/kernel/credentials-local/lib/index.js +387 -29
- package/dist/kernel/credentials-local/lib/invariant.js +1 -1
- package/dist/kernel/credentials-local/lib/types/index.d.ts +57 -12
- package/dist/kernel/credentials-local/lib/types/index.js +445 -30
- package/dist/kernel/credentials-local/lib/types/invariant.js +1 -1
- package/dist/kernel/credentials-local/package.json +1 -1
- package/dist/kernel/e2b/package.json +1 -1
- package/dist/kernel/experimental-agent-team/lib/index.js +1728 -0
- package/dist/kernel/experimental-agent-team/lib/invariant.js +354 -0
- package/dist/kernel/experimental-agent-team/lib/types/activity.d.ts +23 -0
- package/dist/kernel/experimental-agent-team/lib/types/activity.js +85 -0
- package/dist/kernel/experimental-agent-team/lib/types/error.d.ts +13 -0
- package/dist/kernel/experimental-agent-team/lib/types/error.js +23 -0
- package/dist/kernel/experimental-agent-team/lib/types/fold.d.ts +44 -0
- package/dist/kernel/experimental-agent-team/lib/types/fold.js +243 -0
- package/dist/kernel/experimental-agent-team/lib/types/index.d.ts +115 -0
- package/dist/kernel/experimental-agent-team/lib/types/index.js +205 -0
- package/dist/kernel/experimental-agent-team/lib/types/invariant.d.ts +9 -0
- package/dist/kernel/experimental-agent-team/lib/types/invariant.js +29 -0
- package/dist/kernel/experimental-agent-team/lib/types/journal.d.ts +39 -0
- package/dist/kernel/experimental-agent-team/lib/types/journal.js +59 -0
- package/dist/kernel/experimental-agent-team/lib/types/lifecycle.d.ts +33 -0
- package/dist/kernel/experimental-agent-team/lib/types/lifecycle.js +85 -0
- package/dist/kernel/experimental-agent-team/lib/types/mailbox.d.ts +79 -0
- package/dist/kernel/experimental-agent-team/lib/types/mailbox.js +303 -0
- package/dist/kernel/experimental-agent-team/lib/types/roster.d.ts +113 -0
- package/dist/kernel/experimental-agent-team/lib/types/roster.js +445 -0
- package/dist/kernel/experimental-agent-team/lib/types/session-message.d.ts +11 -0
- package/dist/kernel/experimental-agent-team/lib/types/session-message.js +23 -0
- package/dist/kernel/experimental-agent-team/lib/types/task-board.d.ts +62 -0
- package/dist/kernel/experimental-agent-team/lib/types/task-board.js +275 -0
- package/dist/kernel/experimental-agent-team/lib/types/task-graph.d.ts +21 -0
- package/dist/kernel/experimental-agent-team/lib/types/task-graph.js +62 -0
- package/dist/kernel/experimental-agent-team/lib/types/types.d.ts +192 -0
- package/dist/kernel/experimental-agent-team/lib/types/types.js +26 -0
- package/dist/kernel/experimental-agent-team/lib/types/validation.d.ts +16 -0
- package/dist/kernel/experimental-agent-team/lib/types/validation.js +33 -0
- package/dist/kernel/experimental-agent-team/package.json +62 -0
- package/dist/kernel/experimental-tool-agent-team/lib/index.js +555 -0
- package/dist/kernel/experimental-tool-agent-team/lib/invariant.js +13 -0
- package/dist/kernel/experimental-tool-agent-team/lib/types/index.d.ts +19 -0
- package/dist/kernel/experimental-tool-agent-team/lib/types/index.js +379 -0
- package/dist/kernel/experimental-tool-agent-team/lib/types/invariant.d.ts +9 -0
- package/dist/kernel/experimental-tool-agent-team/lib/types/invariant.js +11 -0
- package/dist/kernel/experimental-tool-agent-team/package.json +61 -0
- package/dist/kernel/file-reference/lib/index.js +138 -0
- package/dist/kernel/file-reference/lib/invariant.js +23 -0
- package/dist/kernel/file-reference/lib/typert.host.d.ts +3 -0
- package/dist/kernel/file-reference/lib/typert.host.js +436 -0
- package/dist/kernel/file-reference/lib/typert.remote-client.d.ts +26 -0
- package/dist/kernel/file-reference/lib/typert.remote-client.js +59 -0
- package/dist/kernel/file-reference/lib/types/grammar.d.ts +33 -0
- package/dist/kernel/file-reference/lib/types/grammar.js +43 -0
- package/dist/kernel/file-reference/lib/types/index.d.ts +42 -0
- package/dist/kernel/file-reference/lib/types/index.js +75 -0
- package/dist/kernel/file-reference/lib/types/invariant.d.ts +16 -0
- package/dist/kernel/file-reference/lib/types/invariant.js +22 -0
- package/dist/kernel/file-reference/lib/types/types.d.ts +13 -0
- package/dist/kernel/file-reference/lib/types/types.js +7 -0
- package/dist/kernel/file-reference/package.json +70 -0
- package/dist/kernel/file-reference-local/lib/index.js +327 -0
- package/dist/kernel/file-reference-local/lib/invariant.js +23 -0
- package/dist/kernel/file-reference-local/lib/types/index.d.ts +35 -0
- package/dist/kernel/file-reference-local/lib/types/index.js +105 -0
- package/dist/kernel/file-reference-local/lib/types/invariant.d.ts +16 -0
- package/dist/kernel/file-reference-local/lib/types/invariant.js +22 -0
- package/dist/kernel/file-reference-local/lib/types/search.d.ts +52 -0
- package/dist/kernel/file-reference-local/lib/types/search.js +258 -0
- package/dist/kernel/file-reference-local/package.json +58 -0
- package/dist/kernel/fs/package.json +1 -1
- package/dist/kernel/fs-e2b/package.json +1 -1
- package/dist/kernel/fs-local/package.json +1 -1
- package/dist/kernel/fs-observation-policy/package.json +1 -1
- package/dist/kernel/fs-sandbox/package.json +1 -1
- package/dist/kernel/goal/lib/index.js +5 -2
- package/dist/kernel/goal/lib/typert.host.js +27 -3
- package/dist/kernel/goal/lib/types/index.js +2 -2
- package/dist/kernel/goal/lib/types/types.d.ts +3 -0
- package/dist/kernel/goal/package.json +1 -1
- package/dist/kernel/goal-round-driver/package.json +1 -1
- package/dist/kernel/headless/package.json +1 -1
- package/dist/kernel/home-paths/package.json +1 -1
- package/dist/kernel/hook-protocol/package.json +1 -1
- package/dist/kernel/hooks-claude-code/package.json +1 -1
- package/dist/kernel/hooks-codex/package.json +1 -1
- package/dist/kernel/host-apiproxy/lib/index.js +25 -57
- package/dist/kernel/host-apiproxy/lib/types/api/host.d.ts +2 -0
- package/dist/kernel/host-apiproxy/lib/types/api/host.schema.d.ts +1 -0
- package/dist/kernel/host-apiproxy/lib/types/api/host.schema.js +1 -0
- package/dist/kernel/host-apiproxy/lib/types/api/sessions.d.ts +4 -0
- package/dist/kernel/host-apiproxy/lib/types/api/sessions.schema.js +1 -0
- package/dist/kernel/host-apiproxy/lib/types/api-proxy.js +15 -53
- package/dist/kernel/host-apiproxy/package.json +1 -1
- package/dist/kernel/host-directory-picker/package.json +1 -1
- package/dist/kernel/host-directory-picker-auto/package.json +1 -1
- package/dist/kernel/host-directory-picker-browse/package.json +1 -1
- package/dist/kernel/host-directory-picker-native/package.json +1 -1
- package/dist/kernel/host-frontend-static/lib/index.js +34 -26
- package/dist/kernel/host-frontend-static/lib/types/index.d.ts +10 -10
- package/dist/kernel/host-frontend-static/lib/types/index.js +38 -27
- package/dist/kernel/host-frontend-static/package.json +2 -2
- package/dist/kernel/host-plugin-inventory/package.json +1 -1
- package/dist/kernel/host-webserver/lib/index.js +102 -6
- package/dist/kernel/host-webserver/lib/types/index.d.ts +33 -5
- package/dist/kernel/host-webserver/lib/types/index.js +28 -5
- package/dist/kernel/host-webserver/lib/types/injections.d.ts +56 -0
- package/dist/kernel/host-webserver/lib/types/injections.js +82 -0
- package/dist/kernel/host-webserver/package.json +1 -1
- package/dist/kernel/invariants/package.json +1 -1
- package/dist/kernel/jobs/package.json +1 -1
- package/dist/kernel/jobs-local/package.json +1 -1
- package/dist/kernel/launch-environment/package.json +1 -1
- package/dist/kernel/llm/lib/index.js +247 -25
- package/dist/kernel/llm/lib/types/assembler.d.ts +10 -1
- package/dist/kernel/llm/lib/types/assembler.js +20 -1
- package/dist/kernel/llm/lib/types/content.d.ts +59 -0
- package/dist/kernel/llm/lib/types/content.js +149 -0
- package/dist/kernel/llm/lib/types/index.d.ts +24 -1
- package/dist/kernel/llm/lib/types/index.js +61 -8
- package/dist/kernel/llm/lib/types/retry-policy.d.ts +1 -1
- package/dist/kernel/llm/lib/types/retry-policy.js +6 -2
- package/dist/kernel/llm/package.json +1 -1
- package/dist/kernel/llm-deepseek/lib/index.js +1100 -70
- package/dist/kernel/llm-deepseek/lib/types/adapter.d.ts +69 -1
- package/dist/kernel/llm-deepseek/lib/types/adapter.js +296 -60
- package/dist/kernel/llm-deepseek/lib/types/file-id.d.ts +19 -0
- package/dist/kernel/llm-deepseek/lib/types/file-id.js +18 -0
- package/dist/kernel/llm-deepseek/lib/types/file-store.d.ts +83 -0
- package/dist/kernel/llm-deepseek/lib/types/file-store.js +261 -0
- package/dist/kernel/llm-deepseek/lib/types/files-api.d.ts +103 -0
- package/dist/kernel/llm-deepseek/lib/types/files-api.js +206 -0
- package/dist/kernel/llm-deepseek/lib/types/index.d.ts +31 -3
- package/dist/kernel/llm-deepseek/lib/types/index.js +139 -3
- package/dist/kernel/llm-deepseek/lib/types/serialize.d.ts +55 -6
- package/dist/kernel/llm-deepseek/lib/types/serialize.js +179 -23
- package/dist/kernel/llm-deepseek/lib/types/types.d.ts +28 -5
- package/dist/kernel/llm-deepseek/lib/types/upload-index.d.ts +68 -0
- package/dist/kernel/llm-deepseek/lib/types/upload-index.js +171 -0
- package/dist/kernel/llm-deepseek/package.json +9 -1
- package/dist/kernel/llm-pi-ai/lib/index.js +1758 -1171
- package/dist/kernel/llm-pi-ai/lib/types/adapter.d.ts +30 -5
- package/dist/kernel/llm-pi-ai/lib/types/adapter.js +43 -23
- package/dist/kernel/llm-pi-ai/lib/types/auth.d.ts +60 -0
- package/dist/kernel/llm-pi-ai/lib/types/auth.js +196 -0
- package/dist/kernel/llm-pi-ai/lib/types/catalog.d.ts +176 -38
- package/dist/kernel/llm-pi-ai/lib/types/catalog.js +245 -50
- package/dist/kernel/llm-pi-ai/lib/types/config.d.ts +37 -5
- package/dist/kernel/llm-pi-ai/lib/types/config.js +67 -2
- package/dist/kernel/llm-pi-ai/lib/types/context.d.ts +8 -3
- package/dist/kernel/llm-pi-ai/lib/types/context.js +60 -16
- package/dist/kernel/llm-pi-ai/lib/types/index.d.ts +1 -0
- package/dist/kernel/llm-pi-ai/lib/types/index.js +21 -19
- package/dist/kernel/llm-pi-ai/lib/types/login.d.ts +21 -0
- package/dist/kernel/llm-pi-ai/lib/types/login.js +154 -0
- package/dist/kernel/llm-pi-ai/lib/types/stream.js +4 -0
- package/dist/kernel/llm-pi-ai/package.json +3 -1
- package/dist/kernel/llm-retry/package.json +1 -1
- package/dist/kernel/lsp/package.json +1 -1
- package/dist/kernel/lsp-stdio/package.json +1 -1
- package/dist/kernel/manifest.json +10 -2
- package/dist/kernel/mcp-client/package.json +1 -1
- package/dist/kernel/message-feedback/package.json +1 -1
- package/dist/kernel/native-command/package.json +1 -1
- package/dist/kernel/node-addon-landlock-run/lib/index.js +1 -1
- package/dist/kernel/node-addon-landlock-run/package.json +4 -2
- package/dist/kernel/output-retention/package.json +1 -1
- package/dist/kernel/permission-presets/lib/index.js +14 -2
- package/dist/kernel/permission-presets/lib/types/index.d.ts +5 -0
- package/dist/kernel/permission-presets/lib/types/index.js +11 -2
- package/dist/kernel/permission-presets/package.json +1 -1
- package/dist/kernel/persona/package.json +1 -1
- package/dist/kernel/plan-mode/lib/index.js +49 -15
- package/dist/kernel/plan-mode/lib/types/index.d.ts +22 -0
- package/dist/kernel/plan-mode/lib/types/index.js +45 -19
- package/dist/kernel/plan-mode/lib/types/types.d.ts +5 -4
- package/dist/kernel/plan-mode/package.json +1 -1
- package/dist/kernel/pwsh-local/package.json +1 -1
- package/dist/kernel/pwsh-sandbox/package.json +1 -1
- package/dist/kernel/repeat-tool-reminder/lib/index.js +1 -1
- package/dist/kernel/repeat-tool-reminder/package.json +1 -1
- package/dist/kernel/sandbox/package.json +1 -1
- package/dist/kernel/sandbox-local/lib/index.js +8 -13
- package/dist/kernel/sandbox-local/lib/types/index.d.ts +1 -3
- package/dist/kernel/sandbox-local/lib/types/index.js +4 -7
- package/dist/kernel/sandbox-local/lib/types/profiles.js +1 -1
- package/dist/kernel/sandbox-local/package.json +1 -1
- package/dist/kernel/sandbox-policy/package.json +1 -1
- package/dist/kernel/sandbox-windows-acl/package.json +1 -1
- package/dist/kernel/schedule/package.json +1 -1
- package/dist/kernel/schemastery/package.json +3 -1
- package/dist/kernel/scope/package.json +1 -1
- package/dist/kernel/sdk-client/lib/index.js +2 -2
- package/dist/kernel/sdk-client/lib/types/api.js +2 -2
- package/dist/kernel/sdk-client/lib/types/types.d.ts +4 -4
- package/dist/kernel/sdk-client/package.json +1 -1
- package/dist/kernel/sdk-jsonrpc-server/lib/index.js +12 -5
- package/dist/kernel/sdk-jsonrpc-server/lib/types/index.js +7 -0
- package/dist/kernel/sdk-jsonrpc-server/lib/types/server.d.ts +2 -1
- package/dist/kernel/sdk-jsonrpc-server/lib/types/server.js +15 -6
- package/dist/kernel/sdk-jsonrpc-server/package.json +2 -1
- package/dist/kernel/sdk-protocol/package.json +1 -1
- package/dist/kernel/session/lib/index.js +4 -0
- package/dist/kernel/session/lib/types/known-event-types.js +4 -0
- package/dist/kernel/session/lib/types/types.d.ts +6 -1
- package/dist/kernel/session/package.json +1 -1
- package/dist/kernel/session-checkpoint-policy/package.json +1 -1
- package/dist/kernel/session-log-export/package.json +2 -5
- package/dist/kernel/session-persistence/lib/index.js +1 -1
- package/dist/kernel/session-persistence/lib/types/coordinator.js +2 -1
- package/dist/kernel/session-persistence/package.json +1 -1
- package/dist/kernel/session-persistence-jsonl/package.json +1 -1
- package/dist/kernel/session-persistence-sqlite/lib/index.js +1105 -375
- package/dist/kernel/session-persistence-sqlite/lib/invariant.js +2 -2
- package/dist/kernel/session-persistence-sqlite/lib/types/codec.d.ts +72 -0
- package/dist/kernel/session-persistence-sqlite/lib/types/codec.js +304 -0
- package/dist/kernel/session-persistence-sqlite/lib/types/compression.d.ts +46 -0
- package/dist/kernel/session-persistence-sqlite/lib/types/compression.js +234 -0
- package/dist/kernel/session-persistence-sqlite/lib/types/index.d.ts +22 -80
- package/dist/kernel/session-persistence-sqlite/lib/types/index.js +27 -278
- package/dist/kernel/session-persistence-sqlite/lib/types/invariant.js +2 -2
- package/dist/kernel/session-persistence-sqlite/lib/types/schema.d.ts +63 -85
- package/dist/kernel/session-persistence-sqlite/lib/types/schema.js +293 -159
- package/dist/kernel/session-persistence-sqlite/lib/types/sql.d.ts +15 -0
- package/dist/kernel/session-persistence-sqlite/lib/types/sql.js +57 -0
- package/dist/kernel/session-persistence-sqlite/lib/types/store.d.ts +66 -0
- package/dist/kernel/session-persistence-sqlite/lib/types/store.js +394 -0
- package/dist/kernel/session-persistence-sqlite/package.json +9 -3
- package/dist/kernel/session-persistence-sqlite/resources/sql/begin-immediate.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/begin.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/commit.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/delete-events-from.sql +2 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/foreign-keys-on.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/insert-event.sql +3 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/insert-persistence-state.sql +2 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/journal-mode-delete.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/journal-mode-persist.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/journal-mode-truncate.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/journal-mode-wal.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/mmap-off.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/rollback.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/schema.sql +30 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-application-id.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-events-from.sql +4 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-events.sql +4 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-mmap-size.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-packed-predecessors.sql +6 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-schema-objects.sql +4 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-session.sql +4 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-sessions.sql +3 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-store-id.sql +3 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-synchronous.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-tail-events.sql +5 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-trusted-schema.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-user-object-count.sql +3 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/select-user-version.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/set-application-id.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/set-user-version-17.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/synchronous-full.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/trusted-schema-off.sql +1 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/update-session-revision.sql +3 -0
- package/dist/kernel/session-persistence-sqlite/resources/sql/upsert-session.sql +13 -0
- package/dist/kernel/session-projection/lib/index.js +55 -30
- package/dist/kernel/session-projection/lib/types/index.d.ts +57 -34
- package/dist/kernel/session-projection/lib/types/index.js +61 -36
- package/dist/kernel/session-projection/lib/types/types.d.ts +11 -4
- package/dist/kernel/session-projection/package.json +1 -1
- package/dist/kernel/session-projection-cache/lib/index.js +1 -1
- package/dist/kernel/session-projection-cache/lib/types/index.d.ts +1 -1
- package/dist/kernel/session-projection-cache/lib/types/index.js +4 -5
- package/dist/kernel/session-projection-cache/package.json +1 -1
- package/dist/kernel/session-query/package.json +1 -1
- package/dist/kernel/session-query-sqlite/package.json +1 -1
- package/dist/kernel/session-reference/lib/index.js +232 -110
- package/dist/kernel/session-reference/lib/typert.host.d.ts +3 -0
- package/dist/kernel/session-reference/lib/typert.host.js +458 -0
- package/dist/kernel/session-reference/lib/typert.remote-client.d.ts +26 -0
- package/dist/kernel/session-reference/lib/typert.remote-client.js +62 -0
- package/dist/kernel/session-reference/lib/types/index.d.ts +25 -5
- package/dist/kernel/session-reference/lib/types/index.js +230 -126
- package/dist/kernel/session-reference/lib/types/types.d.ts +14 -3
- package/dist/kernel/session-reference/lib/types/types.js +6 -1
- package/dist/kernel/session-reference/package.json +23 -3
- package/dist/kernel/session-stats/lib/index.js +31 -12
- package/dist/kernel/session-stats/lib/types/projection.d.ts +64 -2
- package/dist/kernel/session-stats/lib/types/projection.js +31 -12
- package/dist/kernel/session-stats/package.json +1 -1
- package/dist/kernel/session-telemetry/package.json +1 -1
- package/dist/kernel/session-telemetry-otel/package.json +1 -1
- package/dist/kernel/session-title/lib/index.js +6 -2
- package/dist/kernel/session-title/lib/types/index.js +3 -2
- package/dist/kernel/session-title/lib/types/types.d.ts +3 -0
- package/dist/kernel/session-title/package.json +1 -1
- package/dist/kernel/session-title-all-prompts-llm/package.json +1 -1
- package/dist/kernel/session-title-first-prompt-llm/package.json +1 -1
- package/dist/kernel/session-title-llm/package.json +1 -1
- package/dist/kernel/settings/package.json +1 -1
- package/dist/kernel/settings-file/package.json +1 -1
- package/dist/kernel/shell/package.json +1 -1
- package/dist/kernel/shell-env/package.json +1 -1
- package/dist/kernel/skill/package.json +1 -1
- package/dist/kernel/skill-badge/assets/nomix-badge.md +6 -6
- package/dist/kernel/skill-badge/assets/nomix-badge.png +0 -0
- package/dist/kernel/skill-badge/lib/index.js +1 -1
- package/dist/kernel/skill-badge/lib/types/index.js +1 -1
- package/dist/kernel/skill-badge/package.json +1 -1
- package/dist/kernel/skill-filesystem/package.json +1 -1
- package/dist/kernel/spill/package.json +1 -1
- package/dist/kernel/spill-local/package.json +1 -1
- package/dist/kernel/spill-policy/package.json +1 -1
- package/dist/kernel/storage/package.json +1 -1
- package/dist/kernel/storage-domain/package.json +1 -1
- package/dist/kernel/storage-json/package.json +1 -1
- package/dist/kernel/storage-sqlite/package.json +1 -1
- package/dist/kernel/subagent/lib/index.js +123 -20
- package/dist/kernel/subagent/lib/types/continuation.d.ts +21 -2
- package/dist/kernel/subagent/lib/types/continuation.js +58 -7
- package/dist/kernel/subagent/lib/types/index.d.ts +11 -0
- package/dist/kernel/subagent/lib/types/index.js +16 -0
- package/dist/kernel/subagent/lib/types/out-of-process.d.ts +2 -0
- package/dist/kernel/subagent/lib/types/out-of-process.js +31 -1
- package/dist/kernel/subagent/lib/types/projection.d.ts +55 -8
- package/dist/kernel/subagent/lib/types/projection.js +30 -15
- package/dist/kernel/subagent/lib/types/run-settlement.js +10 -3
- package/dist/kernel/subagent/lib/types/types.d.ts +7 -0
- package/dist/kernel/subagent/package.json +1 -1
- package/dist/kernel/subagent-acp/package.json +1 -1
- package/dist/kernel/subagent-claude-code/cordis.patch.yml +6 -0
- package/dist/kernel/subagent-claude-code/lib/index.js +267 -73
- package/dist/kernel/subagent-claude-code/lib/types/index.d.ts +16 -6
- package/dist/kernel/subagent-claude-code/lib/types/index.js +35 -14
- package/dist/kernel/subagent-claude-code/lib/types/process.d.ts +5 -7
- package/dist/kernel/subagent-claude-code/lib/types/process.js +12 -24
- package/dist/kernel/subagent-claude-code/lib/types/run.d.ts +24 -7
- package/dist/kernel/subagent-claude-code/lib/types/run.js +266 -40
- package/dist/kernel/subagent-claude-code/package.json +10 -2
- package/dist/kernel/subagent-codex/cordis.patch.yml +5 -0
- package/dist/kernel/subagent-codex/lib/index.js +482 -91
- package/dist/kernel/subagent-codex/lib/types/index.d.ts +11 -6
- package/dist/kernel/subagent-codex/lib/types/index.js +33 -12
- package/dist/kernel/subagent-codex/lib/types/run.d.ts +17 -8
- package/dist/kernel/subagent-codex/lib/types/run.js +235 -42
- package/dist/kernel/subagent-codex/lib/types/wire.d.ts +49 -1
- package/dist/kernel/subagent-codex/lib/types/wire.js +280 -33
- package/dist/kernel/subagent-codex/package.json +10 -5
- package/dist/kernel/subagent-fork-in-process/package.json +1 -1
- package/dist/kernel/subagent-in-process-driver/package.json +1 -1
- package/dist/kernel/subagent-nomix-sdk/package.json +1 -1
- package/dist/kernel/subagent-spawn-in-process/package.json +1 -1
- package/dist/kernel/subprocess/package.json +1 -1
- package/dist/kernel/subprocess-e2b/package.json +1 -1
- package/dist/kernel/subprocess-local/lib/index.js +303 -1
- package/dist/kernel/subprocess-local/lib/types/process-inspector.js +3 -0
- package/dist/kernel/subprocess-local/lib/types/terminal.d.ts +6 -1
- package/dist/kernel/subprocess-local/lib/types/terminal.js +78 -1
- package/dist/kernel/subprocess-local/lib/types/windows-inspector.d.ts +80 -0
- package/dist/kernel/subprocess-local/lib/types/windows-inspector.js +259 -0
- package/dist/kernel/subprocess-local/package.json +2 -1
- package/dist/kernel/system-prompt/package.json +1 -1
- package/dist/kernel/terminal/package.json +1 -1
- package/dist/kernel/terminal-bash/lib/index.js +85 -20
- package/dist/kernel/terminal-bash/lib/types/config.d.ts +29 -5
- package/dist/kernel/terminal-bash/lib/types/config.js +33 -3
- package/dist/kernel/terminal-bash/lib/types/index.d.ts +7 -0
- package/dist/kernel/terminal-bash/lib/types/index.js +65 -13
- package/dist/kernel/terminal-bash/package.json +2 -1
- package/dist/kernel/time-context/lib/index.js +1 -1
- package/dist/kernel/time-context/lib/invariant.js +1 -1
- package/dist/kernel/time-context/package.json +1 -1
- package/dist/kernel/timeout/package.json +1 -1
- package/dist/kernel/tmux-context/lib/index.js +1 -1
- package/dist/kernel/tmux-context/package.json +1 -1
- package/dist/kernel/token-meter/lib/index.js +77 -21
- package/dist/kernel/token-meter/lib/types/breakdown-projection.d.ts +76 -9
- package/dist/kernel/token-meter/lib/types/breakdown-projection.js +22 -6
- package/dist/kernel/token-meter/lib/types/usage-projection.d.ts +186 -25
- package/dist/kernel/token-meter/lib/types/usage-projection.js +44 -15
- package/dist/kernel/token-meter/package.json +1 -1
- package/dist/kernel/tool-ask-user/package.json +1 -1
- package/dist/kernel/tool-bash/package.json +1 -1
- package/dist/kernel/tool-bash-persistent/lib/index.js +15 -5
- package/dist/kernel/tool-bash-persistent/lib/types/index.js +23 -6
- package/dist/kernel/tool-bash-persistent/package.json +1 -1
- package/dist/kernel/tool-call-timeout-policy/package.json +1 -1
- package/dist/kernel/tool-cordis/lib/index.js +655 -83
- package/dist/kernel/tool-cordis/lib/types/api-catalog.js +439 -41
- package/dist/kernel/tool-cordis/package.json +1 -1
- package/dist/kernel/tool-fs/lib/index.js +80 -52
- package/dist/kernel/tool-fs/lib/types/read-image.d.ts +16 -12
- package/dist/kernel/tool-fs/lib/types/read-image.js +73 -29
- package/dist/kernel/tool-fs/package.json +1 -1
- package/dist/kernel/tool-fs-search/lib/index.js +11 -7
- package/dist/kernel/tool-fs-search/lib/types/search-core.d.ts +5 -6
- package/dist/kernel/tool-fs-search/lib/types/search-core.js +12 -7
- package/dist/kernel/tool-fs-search/package.json +1 -1
- package/dist/kernel/tool-goal/package.json +1 -1
- package/dist/kernel/tool-jobs/package.json +1 -1
- package/dist/kernel/tool-lsp/package.json +1 -1
- package/dist/kernel/tool-pwsh/package.json +1 -1
- package/dist/kernel/tool-pwsh-persistent/lib/index.js +407 -0
- package/dist/kernel/tool-pwsh-persistent/lib/invariant.js +24 -0
- package/dist/kernel/tool-pwsh-persistent/lib/types/index.d.ts +24 -0
- package/dist/kernel/tool-pwsh-persistent/lib/types/index.js +465 -0
- package/dist/kernel/tool-pwsh-persistent/lib/types/invariant.d.ts +16 -0
- package/dist/kernel/tool-pwsh-persistent/lib/types/invariant.js +23 -0
- package/dist/kernel/tool-pwsh-persistent/package.json +62 -0
- package/dist/kernel/tool-ralph/package.json +1 -1
- package/dist/kernel/tool-session-query/package.json +1 -1
- package/dist/kernel/tool-skill/package.json +1 -1
- package/dist/kernel/tool-str-replace-editor/package.json +1 -1
- package/dist/kernel/tool-subagent/lib/index.js +10 -8
- package/dist/kernel/tool-subagent/lib/types/index.js +15 -8
- package/dist/kernel/tool-subagent/package.json +1 -1
- package/dist/kernel/tool-subagent-control/package.json +1 -1
- package/dist/kernel/tool-subagent-report/lib/index.js +1 -1
- package/dist/kernel/tool-subagent-report/lib/types/index.d.ts +3 -3
- package/dist/kernel/tool-subagent-report/lib/types/index.js +1 -1
- package/dist/kernel/tool-subagent-report/package.json +1 -1
- package/dist/kernel/tool-terminal/package.json +1 -1
- package/dist/kernel/tool-todo/lib/index.js +5 -2
- package/dist/kernel/tool-todo/lib/types/index.js +2 -2
- package/dist/kernel/tool-todo/lib/types/types.d.ts +3 -0
- package/dist/kernel/tool-todo/package.json +1 -1
- package/dist/kernel/tool-web/lib/index.js +101 -26
- package/dist/kernel/tool-web/lib/types/index.d.ts +4 -2
- package/dist/kernel/tool-web/lib/types/index.js +5 -3
- package/dist/kernel/tool-web/lib/types/search.d.ts +23 -20
- package/dist/kernel/tool-web/lib/types/search.js +109 -20
- package/dist/kernel/tool-web/package.json +1 -1
- package/dist/kernel/tool-workflow/package.json +1 -1
- package/dist/kernel/tools/package.json +1 -1
- package/dist/kernel/typert-generator/lib/index.js +8 -3
- package/dist/kernel/typert-generator/lib/types/cordis-catalog.js +8 -3
- package/dist/kernel/typert-generator/package.json +1 -1
- package/dist/kernel/typert-loader/package.json +1 -1
- package/dist/kernel/typert-protocol/package.json +1 -1
- package/dist/kernel/typert-registry/package.json +1 -1
- package/dist/kernel/user-approval/package.json +1 -1
- package/dist/kernel/user-questions/package.json +1 -1
- package/dist/kernel/web/lib/types/types.d.ts +4 -3
- package/dist/kernel/web/package.json +1 -1
- package/dist/kernel/web-app/cordis.patch.yml +27 -6
- package/dist/kernel/web-app/lib/index.js +111 -15
- package/dist/kernel/web-app/lib/startup.js +4 -2
- package/dist/kernel/web-app/lib/types/index.d.ts +8 -4
- package/dist/kernel/web-app/lib/types/index.js +116 -23
- package/dist/kernel/web-app/lib/types/startup.d.ts +3 -1
- package/dist/kernel/web-app/lib/types/startup.js +4 -1
- package/dist/kernel/web-app/package.json +12 -2
- package/dist/kernel/web-fetch-http/lib/index.js +1 -1
- package/dist/kernel/web-fetch-http/lib/types/index.d.ts +1 -1
- package/dist/kernel/web-fetch-http/lib/types/index.js +1 -1
- package/dist/kernel/web-fetch-http/package.json +1 -1
- package/dist/kernel/web-frontend/dist/assets/index-BnapMmQ_.css +1 -0
- package/dist/kernel/web-frontend/dist/assets/index-Dx7Ws_OC.js +96 -0
- package/dist/kernel/web-frontend/dist/assets/langs/{php-D-uCvoST.js → php-DDkx9sim.js} +2 -2
- package/dist/{assets/web/assets/langs/ruby-DEItuUFs.js → kernel/web-frontend/dist/assets/langs/ruby-DCxyoPen.js} +2 -2
- package/dist/kernel/web-frontend/dist/assets/{vendor-Cjbwl5VI.js → vendor-D22_Mp1f.js} +2 -2
- package/dist/kernel/web-frontend/dist/favicon.svg +8 -0
- package/dist/kernel/web-frontend/dist/index.html +5 -5
- package/dist/kernel/web-frontend/package.json +5 -8
- package/dist/kernel/web-search-deepseek/lib/index.js +1 -1
- package/dist/kernel/web-search-deepseek/lib/types/provider.js +1 -1
- package/dist/kernel/web-search-deepseek/package.json +1 -1
- package/dist/kernel/web-search-exa/lib/index.js +1 -1
- package/dist/kernel/web-search-exa/lib/types/provider.js +1 -1
- package/dist/kernel/web-search-exa/package.json +1 -1
- package/dist/kernel/web-search-perplexity/lib/index.js +1 -1
- package/dist/kernel/web-search-perplexity/lib/types/provider.js +1 -1
- package/dist/kernel/web-search-perplexity/package.json +1 -1
- package/dist/kernel/workflow/package.json +1 -1
- package/dist/kernel/workflow-worker-thread/package.json +1 -1
- package/dist/kernel/workspace/package.json +1 -1
- package/dist/plugins/manifest.json +50 -10
- package/dist/runtime/index.js +0 -2
- package/package.json +8 -6
- package/dist/assets/web/assets/index-B_fSXASy.css +0 -1
- package/dist/assets/web/assets/index-B_sZ-Gsu.js +0 -112
- package/dist/cli/builtin-registry.d.ts +0 -5
- package/dist/cli/profile-boot-CeU09iFc.js +0 -2
- package/dist/kernel/app-boot/lib/types/legacy-branding.d.ts +0 -6
- package/dist/kernel/app-boot/lib/types/legacy-branding.js +0 -18
- package/dist/kernel/client-schema-form/lib/index.js +0 -137
- package/dist/kernel/client-schema-form/lib/types/index.d.ts +0 -10
- package/dist/kernel/client-schema-form/lib/types/index.js +0 -9
- package/dist/kernel/client-schema-form/lib/types/model.d.ts +0 -66
- package/dist/kernel/client-schema-form/lib/types/model.js +0 -153
- package/dist/kernel/client-ui-subagent/lib/types/client/SubagentCatalogAction.d.ts +0 -18
- package/dist/kernel/client-ui-theme/lib/styles/base.css +0 -15
- package/dist/kernel/client-ui-theme/lib/styles/design-platform.css +0 -338
- package/dist/kernel/client-ui-theme/lib/styles/gradient-shadow-text.css +0 -232
- package/dist/kernel/client-ui-theme/lib/styles/scrollbar.css +0 -90
- package/dist/kernel/client-ui-theme/lib/styles/shiki.css +0 -31
- package/dist/kernel/client-web/lib/types/AppRoot.d.ts +0 -16
- package/dist/kernel/client-web/lib/types/AppRoot.js +0 -27
- package/dist/kernel/client-web/lib/types/DocumentTitle.js +0 -16
- package/dist/kernel/client-web/lib/types/app-shell.d.ts +0 -28
- package/dist/kernel/client-web/lib/types/app-shell.js +0 -27
- package/dist/kernel/client-web/lib/types/app.d.ts +0 -21
- package/dist/kernel/client-web-react/lib/index.js +0 -810
- package/dist/kernel/client-web-react/lib/types/index.d.ts +0 -16
- package/dist/kernel/client-web-react/lib/types/index.js +0 -6
- package/dist/kernel/client-web-react/lib/types/use-invoke.d.ts +0 -9
- package/dist/kernel/client-web-react/lib/types/use-invoke.js +0 -52
- package/dist/kernel/skill-badge/assets/nomix-badge.svg +0 -8
- package/dist/kernel/web-frontend/dist/assets/index-B_fSXASy.css +0 -1
- package/dist/kernel/web-frontend/dist/assets/index-B_sZ-Gsu.js +0 -112
- /package/dist/kernel/{client-web-react/lib/types → client-ui-renderer/lib/types/client}/bind.js +0 -0
- /package/dist/kernel/{client-web-react/lib/types → client-ui-renderer/lib/types/client}/session-provider.js +0 -0
|
@@ -10,7 +10,6 @@ window.__ModuleLoader__.load({
|
|
|
10
10
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
11
11
|
let react = require("react");
|
|
12
12
|
let _nomix_ai_nomix_client_ui_primitives = require("@nomix-ai/nomix-client-ui-primitives");
|
|
13
|
-
let _nomix_ai_nomix_client_ui_attachment = require("@nomix-ai/nomix-client-ui-attachment");
|
|
14
13
|
//#region lib/types/client/stores.js
|
|
15
14
|
/**
|
|
16
15
|
* Per-session chat store shared by conversation and details registrations.
|
|
@@ -126,17 +125,19 @@ window.__ModuleLoader__.load({
|
|
|
126
125
|
* @param text - serialized prompt text.
|
|
127
126
|
* @param imageIds - ordered draft-local attachment ids.
|
|
128
127
|
* @param mode - queue or steer delivery selected by composer policy.
|
|
128
|
+
* @param signal - optional cancellation for the complete Host admission.
|
|
129
|
+
* @returns the Host admission outcome; local attachment preparation failures reject.
|
|
129
130
|
*/
|
|
130
|
-
async sendSession(session, text, imageIds, mode) {
|
|
131
|
+
async sendSession(session, text, imageIds, mode, signal) {
|
|
131
132
|
const attachments = this.draftImages(imageIds);
|
|
132
133
|
if (attachments.length !== imageIds.length) throw new Error("conversation.sendSession: one or more draft images are no longer available");
|
|
133
134
|
const content = [...await this.serializeImages(attachments.map((attachment) => attachment.file)), ...text === "" ? [] : [{
|
|
134
135
|
type: "text",
|
|
135
136
|
text
|
|
136
137
|
}]];
|
|
137
|
-
|
|
138
|
-
if (!result.ok) throw new Error(`conversation.send failed: ${result.error.code}: ${result.error.message}`);
|
|
138
|
+
if (!(await session.prompt(content, mode, signal)).ok) return { kind: "error" };
|
|
139
139
|
this.releaseDraftImages(attachments);
|
|
140
|
+
return { kind: "success" };
|
|
140
141
|
}
|
|
141
142
|
/**
|
|
142
143
|
* Create runtime-only draft images and their object URLs.
|
|
@@ -166,6 +167,18 @@ window.__ModuleLoader__.load({
|
|
|
166
167
|
return attachments;
|
|
167
168
|
}
|
|
168
169
|
/**
|
|
170
|
+
* Serialize ordered draft images to command-submit wire payloads without
|
|
171
|
+
* sending or releasing them (the composer releases only after the command
|
|
172
|
+
* settles successfully).
|
|
173
|
+
* @param imageIds - ordered draft-local attachment ids.
|
|
174
|
+
* @returns base64 payloads in id order.
|
|
175
|
+
*/
|
|
176
|
+
async serializeDraftImages(imageIds) {
|
|
177
|
+
const attachments = this.draftImages(imageIds);
|
|
178
|
+
if (attachments.length !== imageIds.length) throw new Error("conversation.serializeDraftImages: one or more draft images are no longer available");
|
|
179
|
+
return Promise.all(attachments.map((attachment) => this.encodeImage(attachment.file)));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
169
182
|
* Release one browser-owned draft image and preview URL.
|
|
170
183
|
* @param id - draft attachment id.
|
|
171
184
|
*/
|
|
@@ -271,10 +284,16 @@ window.__ModuleLoader__.load({
|
|
|
271
284
|
serializeImages(images) {
|
|
272
285
|
return Promise.all(images.map(async (file) => ({
|
|
273
286
|
type: "image",
|
|
287
|
+
...await this.encodeImage(file)
|
|
288
|
+
})));
|
|
289
|
+
}
|
|
290
|
+
/** Canonical base64 wire form of one browser image file. */
|
|
291
|
+
async encodeImage(file) {
|
|
292
|
+
return {
|
|
274
293
|
mediaType: imageMediaType(file.type),
|
|
275
294
|
data: bytesToBase64(new Uint8Array(await file.arrayBuffer())),
|
|
276
295
|
...file.name === "" ? {} : { name: file.name }
|
|
277
|
-
}
|
|
296
|
+
};
|
|
278
297
|
}
|
|
279
298
|
};
|
|
280
299
|
function imageMediaType(value) {
|
|
@@ -348,6 +367,18 @@ window.__ModuleLoader__.load({
|
|
|
348
367
|
subscribe: (fn) => session.subscribe(fn)
|
|
349
368
|
};
|
|
350
369
|
}
|
|
370
|
+
//#endregion
|
|
371
|
+
//#region lib/types/client/input/machine.js
|
|
372
|
+
const REFERENCE_PLACEHOLDER_RE = /[\uE100-\uE11D\uFFFC]/gu;
|
|
373
|
+
/**
|
|
374
|
+
* Build the inline draft text whose leading marker is decorated as the
|
|
375
|
+
* reference icon in the backdrop.
|
|
376
|
+
* @param reference - reference insertion with its cached display projection.
|
|
377
|
+
* @returns display text with one marker glyph followed by the complete label.
|
|
378
|
+
*/
|
|
379
|
+
function referenceDraftText(reference) {
|
|
380
|
+
return `@${reference.label}`;
|
|
381
|
+
}
|
|
351
382
|
/** The machine never writes the queue; the wiring layer overlays the queue store's projection. */
|
|
352
383
|
const EMPTY_QUEUE$1 = [];
|
|
353
384
|
/** Undo ring depth (bounded self-managed transaction log). */
|
|
@@ -391,6 +422,24 @@ window.__ModuleLoader__.load({
|
|
|
391
422
|
};
|
|
392
423
|
}
|
|
393
424
|
/**
|
|
425
|
+
* Expand the draft's reference ranges into their occurrences' clipboard text
|
|
426
|
+
* for persistence and clipboard projection. Table order is offset order, so
|
|
427
|
+
* one linear walk pairs ranges with entries.
|
|
428
|
+
* @param state - published input state.
|
|
429
|
+
* @returns the plain-text projection of the draft.
|
|
430
|
+
*/
|
|
431
|
+
function projectClipboard(state) {
|
|
432
|
+
const { draft, occurrences } = state;
|
|
433
|
+
if (occurrences.length === 0) return draft;
|
|
434
|
+
let out = "";
|
|
435
|
+
let cursor = 0;
|
|
436
|
+
for (const o of occurrences) {
|
|
437
|
+
out += draft.slice(cursor, o.offset) + o.clipboardText;
|
|
438
|
+
cursor = o.offset + o.length;
|
|
439
|
+
}
|
|
440
|
+
return out + draft.slice(cursor);
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
394
443
|
* Pure input machine, one instance per session (per-session isolation is by
|
|
395
444
|
* construction). The machine constructs one AbortController per SubmitAttempt
|
|
396
445
|
* at enter time and aborts it itself on release; the shell never aborts, it
|
|
@@ -429,7 +478,8 @@ window.__ModuleLoader__.load({
|
|
|
429
478
|
phase: this.phase,
|
|
430
479
|
...c ? { claim: {
|
|
431
480
|
token: c.token,
|
|
432
|
-
...c.hint !== void 0 ? { hint: c.hint } : {}
|
|
481
|
+
...c.hint !== void 0 ? { hint: c.hint } : {},
|
|
482
|
+
...c.images === true ? { images: true } : {}
|
|
433
483
|
} } : {},
|
|
434
484
|
occurrences: this.occurrences,
|
|
435
485
|
...this.paste !== void 0 ? { paste: this.paste } : {},
|
|
@@ -481,14 +531,14 @@ window.__ModuleLoader__.load({
|
|
|
481
531
|
}
|
|
482
532
|
/**
|
|
483
533
|
* Reconcile the occurrence table with one edit (old-draft coordinates):
|
|
484
|
-
* entries past the range shift by the length delta;
|
|
485
|
-
*
|
|
486
|
-
*
|
|
534
|
+
* entries past the range shift by the length delta; an edit that intersects
|
|
535
|
+
* a reference range removes its structured occurrence and leaves the edited
|
|
536
|
+
* characters as ordinary draft text.
|
|
487
537
|
*/
|
|
488
538
|
reconcile(range) {
|
|
489
539
|
const delta = range.insertedLength - (range.end - range.start);
|
|
490
540
|
const kept = [];
|
|
491
|
-
for (const o of this.occurrences) if (o.offset
|
|
541
|
+
for (const o of this.occurrences) if (o.offset + o.length <= range.start) kept.push(o);
|
|
492
542
|
else if (o.offset >= range.end) kept.push(delta === 0 ? o : {
|
|
493
543
|
...o,
|
|
494
544
|
offset: o.offset + delta
|
|
@@ -503,14 +553,16 @@ window.__ModuleLoader__.load({
|
|
|
503
553
|
}
|
|
504
554
|
}
|
|
505
555
|
/** Mint one occurrence at a draft offset. */
|
|
506
|
-
mint(reference, offset) {
|
|
556
|
+
mint(reference, offset, length) {
|
|
507
557
|
this.occurrenceSeq += 1;
|
|
508
558
|
return {
|
|
509
559
|
occurrenceId: this.occurrenceSeq,
|
|
510
560
|
source: reference.source,
|
|
511
561
|
ref: reference.ref,
|
|
512
562
|
offset,
|
|
563
|
+
length,
|
|
513
564
|
label: reference.label,
|
|
565
|
+
...reference.appearance === void 0 ? {} : { appearance: reference.appearance },
|
|
514
566
|
clipboardText: reference.clipboardText
|
|
515
567
|
};
|
|
516
568
|
}
|
|
@@ -567,22 +619,24 @@ window.__ModuleLoader__.load({
|
|
|
567
619
|
return [];
|
|
568
620
|
}
|
|
569
621
|
/**
|
|
570
|
-
* Shared
|
|
622
|
+
* Shared reference-insertion transaction: replace [span) with one inline
|
|
571
623
|
* occurrence (insert-ref and paste-upgrade both land here). A separating
|
|
572
|
-
* space follows the
|
|
573
|
-
* @returns the inserted length (
|
|
624
|
+
* space follows the reference unless one is already next.
|
|
625
|
+
* @returns the inserted length (display text plus optional gap).
|
|
574
626
|
*/
|
|
575
627
|
replaceSpanWithChip(reference, span) {
|
|
576
628
|
this.pushTxn();
|
|
577
629
|
this.typingRun = void 0;
|
|
578
630
|
const tail = this.draft.slice(span.end);
|
|
579
|
-
const
|
|
631
|
+
const gap = tail.length === 0 || tail[0] !== " " ? " " : "";
|
|
632
|
+
const displayText = referenceDraftText(reference);
|
|
633
|
+
const inserted = displayText + gap;
|
|
580
634
|
this.reconcile({
|
|
581
635
|
start: span.start,
|
|
582
636
|
end: span.end,
|
|
583
637
|
insertedLength: inserted.length
|
|
584
638
|
});
|
|
585
|
-
this.withMinted([this.mint(reference, span.start)]);
|
|
639
|
+
this.withMinted([this.mint(reference, span.start, displayText.length)]);
|
|
586
640
|
this.adopt(this.draft.slice(0, span.start) + inserted + tail);
|
|
587
641
|
this.watchClaim();
|
|
588
642
|
return inserted.length;
|
|
@@ -671,7 +725,7 @@ window.__ModuleLoader__.load({
|
|
|
671
725
|
return [];
|
|
672
726
|
}
|
|
673
727
|
/**
|
|
674
|
-
* Paste as one transaction: the text (
|
|
728
|
+
* Paste as one transaction: the text (reference-placeholder-sanitized) replaces the
|
|
675
729
|
* selection; hot-snapshot sync matches componentize inside the SAME
|
|
676
730
|
* transaction (one undo returns to pre-paste); a match attempt opens for
|
|
677
731
|
* the async remainder while the phase still accepts reference mutations.
|
|
@@ -679,7 +733,7 @@ window.__ModuleLoader__.load({
|
|
|
679
733
|
onPasteBegin(rawText, selection, components = [], generation = 0) {
|
|
680
734
|
const { start, end } = selection;
|
|
681
735
|
if (start < 0 || start > end || end > this.draft.length) return [];
|
|
682
|
-
const text = rawText.
|
|
736
|
+
const text = rawText.replace(REFERENCE_PLACEHOLDER_RE, "");
|
|
683
737
|
this.pushTxn(selection);
|
|
684
738
|
this.typingRun = void 0;
|
|
685
739
|
const sorted = [...components].sort((a, b) => a.start - b.start);
|
|
@@ -688,8 +742,9 @@ window.__ModuleLoader__.load({
|
|
|
688
742
|
let cursor = 0;
|
|
689
743
|
for (const c of sorted) {
|
|
690
744
|
inserted += text.slice(cursor, c.start);
|
|
691
|
-
|
|
692
|
-
inserted
|
|
745
|
+
const displayText = referenceDraftText(c.reference);
|
|
746
|
+
minted.push(this.mint(c.reference, start + inserted.length, displayText.length));
|
|
747
|
+
inserted += displayText;
|
|
693
748
|
cursor = c.end;
|
|
694
749
|
}
|
|
695
750
|
inserted += text.slice(cursor);
|
|
@@ -775,8 +830,11 @@ window.__ModuleLoader__.load({
|
|
|
775
830
|
draft: this.draft
|
|
776
831
|
}];
|
|
777
832
|
}
|
|
833
|
+
const attempt = this.beginAttempt(mode);
|
|
834
|
+
this.phase = "submitting";
|
|
778
835
|
return [{
|
|
779
836
|
type: "default-sink",
|
|
837
|
+
attempt,
|
|
780
838
|
draft: this.draft,
|
|
781
839
|
mode
|
|
782
840
|
}];
|
|
@@ -794,13 +852,18 @@ window.__ModuleLoader__.load({
|
|
|
794
852
|
args: argsAfter(attempt.draftSnapshot, outcome.claim.token)
|
|
795
853
|
}];
|
|
796
854
|
}
|
|
855
|
+
if (outcome === void 0) {
|
|
856
|
+
this.phase = "submitting";
|
|
857
|
+
return [{
|
|
858
|
+
type: "default-sink",
|
|
859
|
+
attempt,
|
|
860
|
+
draft: attempt.draftSnapshot,
|
|
861
|
+
mode: attempt.mode
|
|
862
|
+
}];
|
|
863
|
+
}
|
|
797
864
|
this.inflight = void 0;
|
|
798
865
|
this.phase = "plain";
|
|
799
|
-
return
|
|
800
|
-
type: "default-sink",
|
|
801
|
-
draft: attempt.draftSnapshot,
|
|
802
|
-
mode: attempt.mode
|
|
803
|
-
}] : [];
|
|
866
|
+
return [];
|
|
804
867
|
}
|
|
805
868
|
onAdjudicationFailed(attempt, message) {
|
|
806
869
|
if (this.phase !== "adjudicating" || this.inflight?.attempt.seq !== attempt.seq) return [];
|
|
@@ -820,7 +883,8 @@ window.__ModuleLoader__.load({
|
|
|
820
883
|
this.phase = "plain";
|
|
821
884
|
this.claim = void 0;
|
|
822
885
|
this.occurrences = [];
|
|
823
|
-
|
|
886
|
+
const snapshot = flight.attempt.draftSnapshot;
|
|
887
|
+
this.adopt(this.draft !== snapshot && this.draft.startsWith(snapshot) ? this.draft.slice(snapshot.length) : "");
|
|
824
888
|
this.log = [];
|
|
825
889
|
this.redoStack = [];
|
|
826
890
|
this.typingRun = void 0;
|
|
@@ -831,10 +895,10 @@ window.__ModuleLoader__.load({
|
|
|
831
895
|
text: ev.outcome.text
|
|
832
896
|
}] : [];
|
|
833
897
|
}
|
|
834
|
-
const text = ev.message ?? ev.outcome?.text
|
|
898
|
+
const text = ev.message ?? ev.outcome?.text;
|
|
835
899
|
if (this.draft === flight.attempt.draftSnapshot && this.claim !== void 0 && this.draft.startsWith(this.claim.token)) {
|
|
836
900
|
this.phase = "claimed";
|
|
837
|
-
return [{
|
|
901
|
+
return text === void 0 ? [] : [{
|
|
838
902
|
type: "notice",
|
|
839
903
|
level: "error",
|
|
840
904
|
text
|
|
@@ -842,15 +906,15 @@ window.__ModuleLoader__.load({
|
|
|
842
906
|
}
|
|
843
907
|
this.phase = "plain";
|
|
844
908
|
this.claim = void 0;
|
|
845
|
-
return [{
|
|
909
|
+
return text === void 0 ? [] : [{
|
|
846
910
|
type: "notice",
|
|
847
911
|
level: "error",
|
|
848
912
|
text
|
|
849
913
|
}];
|
|
850
914
|
}
|
|
851
|
-
/**
|
|
852
|
-
* must not be resurrectable — same discipline as submit-settled success). */
|
|
915
|
+
/** Cut undo state after an accepted image-only send. */
|
|
853
916
|
onSendCommitted() {
|
|
917
|
+
if (this.phase !== "plain") return [];
|
|
854
918
|
this.claim = void 0;
|
|
855
919
|
this.occurrences = [];
|
|
856
920
|
this.adopt("");
|
|
@@ -893,7 +957,7 @@ window.__ModuleLoader__.load({
|
|
|
893
957
|
deps;
|
|
894
958
|
/** Published machine state + queue overlay (the InputZone currency source). */
|
|
895
959
|
state;
|
|
896
|
-
/** Latest surfaced notice (null after clear); the
|
|
960
|
+
/** Latest surfaced notice (null after clear); the bar renders errors as banners and information inline. */
|
|
897
961
|
notices = (0, _nomix_ai_nomix_client_runtime_client.createSnapshotStore)(null);
|
|
898
962
|
/** The public provide-channel action face (one stable identity per session). */
|
|
899
963
|
actions = {
|
|
@@ -913,10 +977,12 @@ window.__ModuleLoader__.load({
|
|
|
913
977
|
};
|
|
914
978
|
core = new InputMachine({ now: () => Date.now() });
|
|
915
979
|
noticeSeq = 0;
|
|
916
|
-
|
|
980
|
+
lastMirroredDraft = "";
|
|
917
981
|
imageIds = [];
|
|
982
|
+
/** One image-only send at a time: Enter during the Host round-trip is a no-op. */
|
|
983
|
+
imageSendInFlight = false;
|
|
918
984
|
disposed = false;
|
|
919
|
-
/** Draft persistence mirror (chat store write; receives the clipboard projection, never
|
|
985
|
+
/** Draft persistence mirror (chat store write; receives the clipboard projection, never display-only ranges). */
|
|
920
986
|
mirrorFn;
|
|
921
987
|
constructor(deps) {
|
|
922
988
|
this.deps = deps;
|
|
@@ -946,8 +1012,13 @@ window.__ModuleLoader__.load({
|
|
|
946
1012
|
this.publish();
|
|
947
1013
|
return true;
|
|
948
1014
|
}
|
|
949
|
-
/**
|
|
1015
|
+
/**
|
|
1016
|
+
* Remove one image id from this draft. Busy admission phases refuse, like
|
|
1017
|
+
* {@link addImages}: a removal landing while a command submit serializes
|
|
1018
|
+
* would otherwise vanish from the rail yet still ride the in-flight send.
|
|
1019
|
+
*/
|
|
950
1020
|
removeImage(id) {
|
|
1021
|
+
if (this.snapshot.phase === "adjudicating" || this.snapshot.phase === "submitting") return;
|
|
951
1022
|
const next = this.imageIds.filter((candidate) => candidate !== id);
|
|
952
1023
|
if (next.length === this.imageIds.length) return;
|
|
953
1024
|
this.imageIds = next;
|
|
@@ -965,15 +1036,6 @@ window.__ModuleLoader__.load({
|
|
|
965
1036
|
this.publish();
|
|
966
1037
|
}
|
|
967
1038
|
/**
|
|
968
|
-
* Restore a failed attempt before any images added after its admission.
|
|
969
|
-
* @param ids - failed attempt image ids.
|
|
970
|
-
*/
|
|
971
|
-
restoreImages(ids) {
|
|
972
|
-
const current = new Set(this.imageIds);
|
|
973
|
-
this.imageIds = [...ids.filter((id) => !current.has(id)), ...this.imageIds];
|
|
974
|
-
this.publish();
|
|
975
|
-
}
|
|
976
|
-
/**
|
|
977
1039
|
* Clear the draft as a successful-send commit: no undo unit is recorded and
|
|
978
1040
|
* the undo history is cut, so Ctrl/Cmd-Z cannot resurrect sent content
|
|
979
1041
|
* (the command path gets the same discipline from submit-settled success).
|
|
@@ -1021,7 +1083,24 @@ window.__ModuleLoader__.load({
|
|
|
1021
1083
|
*/
|
|
1022
1084
|
submit(mode = "queue") {
|
|
1023
1085
|
if (this.snapshot.draft.trim() === "" && this.imageIds.length > 0) {
|
|
1024
|
-
if (this.snapshot.phase === "plain"
|
|
1086
|
+
if (this.snapshot.phase === "plain" && !this.imageSendInFlight) {
|
|
1087
|
+
const imageIds = [...this.imageIds];
|
|
1088
|
+
this.imageSendInFlight = true;
|
|
1089
|
+
this.deps.defaultSink("", imageIds, mode, new AbortController().signal).then((outcome) => {
|
|
1090
|
+
this.imageSendInFlight = false;
|
|
1091
|
+
if (this.disposed) return;
|
|
1092
|
+
if (outcome.kind === "success") this.commitSend(imageIds);
|
|
1093
|
+
else if (outcome.text !== void 0) this.notify("error", outcome.text);
|
|
1094
|
+
}, (error) => {
|
|
1095
|
+
this.imageSendInFlight = false;
|
|
1096
|
+
if (!this.disposed) this.notify("error", error instanceof Error ? error.message : String(error));
|
|
1097
|
+
});
|
|
1098
|
+
}
|
|
1099
|
+
return;
|
|
1100
|
+
}
|
|
1101
|
+
const before = this.snapshot;
|
|
1102
|
+
if (before.phase === "claimed" && this.imageIds.length > 0 && before.claim?.images !== true) {
|
|
1103
|
+
this.notify("error", this.deps.commandImages.unsupportedNotice(before.claim?.token ?? before.draft));
|
|
1025
1104
|
return;
|
|
1026
1105
|
}
|
|
1027
1106
|
this.run(this.core.dispatch({
|
|
@@ -1149,13 +1228,19 @@ window.__ModuleLoader__.load({
|
|
|
1149
1228
|
* a scan-derived decoration, never state.
|
|
1150
1229
|
* @param text - the plain reference text to splice in (e.g. `/name `).
|
|
1151
1230
|
* @param span - pick-time span snapshot (draftRev CAS).
|
|
1231
|
+
* @param keepCompleting - re-track at the caret after the splice so an open
|
|
1232
|
+
* token (a directory pick's trailing slash) reopens the menu.
|
|
1152
1233
|
* @returns whether the text was applied.
|
|
1153
1234
|
*/
|
|
1154
|
-
insertText(text, span) {
|
|
1235
|
+
insertText(text, span, keepCompleting = false) {
|
|
1155
1236
|
const snapshot = this.core.state;
|
|
1156
1237
|
if (span.draftRev !== snapshot.draftRev) return false;
|
|
1157
1238
|
const draft = snapshot.draft;
|
|
1158
1239
|
this.setDraft(draft.slice(0, span.start) + text + draft.slice(span.end));
|
|
1240
|
+
if (keepCompleting) {
|
|
1241
|
+
const next = this.snapshot;
|
|
1242
|
+
this.deps.inputTriggers?.()?.track(next.draft, span.start + text.length, { tier: guardOf(next.phase) }, next.draftRev);
|
|
1243
|
+
}
|
|
1159
1244
|
return true;
|
|
1160
1245
|
}
|
|
1161
1246
|
/**
|
|
@@ -1215,23 +1300,23 @@ window.__ModuleLoader__.load({
|
|
|
1215
1300
|
this.beginSubmit(fx.attempt, fx.claim, fx.args);
|
|
1216
1301
|
return;
|
|
1217
1302
|
case "default-sink":
|
|
1218
|
-
this.sinkSerialized(fx.draft, fx.mode);
|
|
1303
|
+
this.sinkSerialized(fx.attempt, fx.draft, fx.mode);
|
|
1219
1304
|
return;
|
|
1220
1305
|
default: return;
|
|
1221
1306
|
}
|
|
1222
1307
|
}
|
|
1223
1308
|
/**
|
|
1224
1309
|
* Prompt serialization before the sink: expand each
|
|
1225
|
-
*
|
|
1310
|
+
* inline reference range to its owner's model form via the session controller's
|
|
1226
1311
|
* codec routing. Owner missing / serialize failure / disposal blocks the
|
|
1227
1312
|
* send — notice + draft and chips retained, never a silent downgrade to
|
|
1228
1313
|
* the clipboard text. Chip-free drafts skip the async detour.
|
|
1229
1314
|
*/
|
|
1230
|
-
sinkSerialized(draft, mode) {
|
|
1315
|
+
sinkSerialized(attempt, draft, mode) {
|
|
1231
1316
|
const imageIds = [...this.imageIds];
|
|
1232
1317
|
const occurrences = this.core.state.occurrences;
|
|
1233
1318
|
if (occurrences.length === 0) {
|
|
1234
|
-
this.deps.defaultSink(draft.trim(), imageIds, mode);
|
|
1319
|
+
this.settleSubmit(attempt, this.deps.defaultSink(draft.trim(), imageIds, mode, attempt.signal), imageIds);
|
|
1235
1320
|
return;
|
|
1236
1321
|
}
|
|
1237
1322
|
const inputTriggers = this.deps.inputTriggers?.();
|
|
@@ -1240,6 +1325,7 @@ window.__ModuleLoader__.load({
|
|
|
1240
1325
|
if (inputTriggers === void 0) throw new Error(`no serializer for reference source "${o.source}"`);
|
|
1241
1326
|
return {
|
|
1242
1327
|
offset: o.offset,
|
|
1328
|
+
length: o.length,
|
|
1243
1329
|
text: await inputTriggers.serializeReference(o.source, o.ref, controller.signal)
|
|
1244
1330
|
};
|
|
1245
1331
|
})).then((parts) => {
|
|
@@ -1248,15 +1334,44 @@ window.__ModuleLoader__.load({
|
|
|
1248
1334
|
let cursor = 0;
|
|
1249
1335
|
for (const part of parts) {
|
|
1250
1336
|
out += draft.slice(cursor, part.offset) + part.text;
|
|
1251
|
-
cursor = part.offset +
|
|
1337
|
+
cursor = part.offset + part.length;
|
|
1252
1338
|
}
|
|
1253
1339
|
out += draft.slice(cursor);
|
|
1254
|
-
this.deps.defaultSink(out.trim(), imageIds, mode);
|
|
1340
|
+
this.settleSubmit(attempt, this.deps.defaultSink(out.trim(), imageIds, mode, attempt.signal), imageIds);
|
|
1255
1341
|
}, (error) => {
|
|
1256
1342
|
controller.abort();
|
|
1257
|
-
if (this.
|
|
1343
|
+
if (this.dead(attempt)) return;
|
|
1258
1344
|
const message = error instanceof Error ? error.message : String(error);
|
|
1259
|
-
this.
|
|
1345
|
+
this.run(this.core.dispatch({
|
|
1346
|
+
type: "submit-settled",
|
|
1347
|
+
attempt,
|
|
1348
|
+
ok: false,
|
|
1349
|
+
message
|
|
1350
|
+
}));
|
|
1351
|
+
});
|
|
1352
|
+
}
|
|
1353
|
+
/** Settle one admission attempt; successful sends consume only their captured images. */
|
|
1354
|
+
settleSubmit(attempt, pending, imageIds = []) {
|
|
1355
|
+
pending.then((outcome) => {
|
|
1356
|
+
if (this.dead(attempt)) return;
|
|
1357
|
+
if (outcome.kind === "success" && imageIds.length > 0) {
|
|
1358
|
+
const submitted = new Set(imageIds);
|
|
1359
|
+
this.imageIds = this.imageIds.filter((id) => !submitted.has(id));
|
|
1360
|
+
}
|
|
1361
|
+
this.run(this.core.dispatch({
|
|
1362
|
+
type: "submit-settled",
|
|
1363
|
+
attempt,
|
|
1364
|
+
ok: outcome.kind === "success",
|
|
1365
|
+
outcome
|
|
1366
|
+
}));
|
|
1367
|
+
}, (error) => {
|
|
1368
|
+
if (this.dead(attempt)) return;
|
|
1369
|
+
this.run(this.core.dispatch({
|
|
1370
|
+
type: "submit-settled",
|
|
1371
|
+
attempt,
|
|
1372
|
+
ok: false,
|
|
1373
|
+
message: error instanceof Error ? error.message : String(error)
|
|
1374
|
+
}));
|
|
1260
1375
|
});
|
|
1261
1376
|
}
|
|
1262
1377
|
/** Enter adjudication: poll the session controller; failure = notice + draft retained (never a silent downgrade). */
|
|
@@ -1270,7 +1385,7 @@ window.__ModuleLoader__.load({
|
|
|
1270
1385
|
}));
|
|
1271
1386
|
return;
|
|
1272
1387
|
}
|
|
1273
|
-
inputTriggers.adjudicate(draft.trim(), attempt.signal).then((outcome) => {
|
|
1388
|
+
inputTriggers.adjudicate(draft.trim(), attempt.signal, { images: this.imageIds.length }).then((outcome) => {
|
|
1274
1389
|
if (this.dead(attempt)) return;
|
|
1275
1390
|
this.run(this.core.dispatch({
|
|
1276
1391
|
type: "adjudicated",
|
|
@@ -1287,15 +1402,32 @@ window.__ModuleLoader__.load({
|
|
|
1287
1402
|
}));
|
|
1288
1403
|
});
|
|
1289
1404
|
}
|
|
1290
|
-
/**
|
|
1405
|
+
/**
|
|
1406
|
+
* The submit transaction: claim.submit against the session scope; ok maps
|
|
1407
|
+
* from the outcome kind. An accepting claim receives the serialized draft
|
|
1408
|
+
* images, which are cleared and released only on a success outcome; a
|
|
1409
|
+
* failure (serialize, transport, or handler error) keeps draft and images
|
|
1410
|
+
* for correction.
|
|
1411
|
+
*/
|
|
1291
1412
|
beginSubmit(attempt, claim, args) {
|
|
1292
|
-
|
|
1293
|
-
|
|
1413
|
+
const imageIds = claim.images === true ? [...this.imageIds] : [];
|
|
1414
|
+
Promise.resolve().then(async () => {
|
|
1415
|
+
const images = imageIds.length > 0 ? await this.deps.commandImages.serialize(imageIds) : [];
|
|
1416
|
+
if (this.dead(attempt)) return void 0;
|
|
1417
|
+
return claim.submit(args, this.deps.actx, images);
|
|
1418
|
+
}).then((outcome) => {
|
|
1419
|
+
if (outcome === void 0 || this.dead(attempt)) return;
|
|
1420
|
+
if (outcome.kind === "success" && imageIds.length > 0) {
|
|
1421
|
+
const submitted = new Set(imageIds);
|
|
1422
|
+
this.imageIds = this.imageIds.filter((id) => !submitted.has(id));
|
|
1423
|
+
this.deps.commandImages.release(imageIds);
|
|
1424
|
+
}
|
|
1294
1425
|
this.run(this.core.dispatch({
|
|
1295
1426
|
type: "submit-settled",
|
|
1296
1427
|
attempt,
|
|
1297
1428
|
ok: outcome.kind === "success",
|
|
1298
|
-
outcome
|
|
1429
|
+
outcome,
|
|
1430
|
+
...outcome.kind === "error" && outcome.text === void 0 ? { message: "command failed" } : {}
|
|
1299
1431
|
}));
|
|
1300
1432
|
}, (error) => {
|
|
1301
1433
|
if (this.dead(attempt)) return;
|
|
@@ -1322,9 +1454,10 @@ window.__ModuleLoader__.load({
|
|
|
1322
1454
|
publish() {
|
|
1323
1455
|
const next = this.compose();
|
|
1324
1456
|
this.state.set(next);
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
this.
|
|
1457
|
+
const mirroredDraft = projectClipboard(next);
|
|
1458
|
+
if (mirroredDraft !== this.lastMirroredDraft) {
|
|
1459
|
+
this.lastMirroredDraft = mirroredDraft;
|
|
1460
|
+
this.mirrorFn?.(mirroredDraft);
|
|
1328
1461
|
}
|
|
1329
1462
|
}
|
|
1330
1463
|
};
|
|
@@ -1370,11 +1503,17 @@ window.__ModuleLoader__.load({
|
|
|
1370
1503
|
inputTriggers: () => this.controller(actx),
|
|
1371
1504
|
popup: () => this.popup(actx),
|
|
1372
1505
|
queue: queueReadFaceOf(session),
|
|
1373
|
-
defaultSink: (text, imageIds, mode) =>
|
|
1374
|
-
this.sink(session, text, imageIds, mode);
|
|
1375
|
-
},
|
|
1506
|
+
defaultSink: (text, imageIds, mode, signal) => this.sink(session, text, imageIds, mode, signal),
|
|
1376
1507
|
steerQueue: () => {
|
|
1377
1508
|
this.steerQueue(session, shell);
|
|
1509
|
+
},
|
|
1510
|
+
commandImages: {
|
|
1511
|
+
serialize: (ids) => this.conversation().serializeDraftImages(ids),
|
|
1512
|
+
release: (ids) => {
|
|
1513
|
+
const conversation = this.rootCtx.get("conversation");
|
|
1514
|
+
for (const imageId of ids) conversation?.releaseDraftImage(imageId);
|
|
1515
|
+
},
|
|
1516
|
+
unsupportedNotice: (token) => this.t("command.imagesUnsupported", { command: token.trim().replace(/^\//u, "") })
|
|
1378
1517
|
}
|
|
1379
1518
|
});
|
|
1380
1519
|
this.shells.set(id, shell);
|
|
@@ -1383,7 +1522,7 @@ window.__ModuleLoader__.load({
|
|
|
1383
1522
|
actx.on("slash/input-begin-command", (req) => shell.beginCommand(req.claim, req.span) ? true : void 0),
|
|
1384
1523
|
actx.on("slash/input-insert-reference", (req) => shell.insertReference(req.reference, req.span) ? true : void 0),
|
|
1385
1524
|
actx.on("slash/input-consume-token", (req) => shell.consumeToken(req.guard) ? true : void 0),
|
|
1386
|
-
actx.on("slash/input-insert-text", (req) => shell.insertText(req.text, req.span) ? true : void 0)
|
|
1525
|
+
actx.on("slash/input-insert-text", (req) => shell.insertText(req.text, req.span, req.continue === true) ? true : void 0)
|
|
1387
1526
|
];
|
|
1388
1527
|
return () => {
|
|
1389
1528
|
for (const off of offs) off();
|
|
@@ -1433,21 +1572,11 @@ window.__ModuleLoader__.load({
|
|
|
1433
1572
|
* Default sink: optimistic clear + prompt. The session is always a real
|
|
1434
1573
|
* host entity (materialized when its workspace was picked), so there is
|
|
1435
1574
|
* exactly one path; a failed first prompt is an ordinary prompt failure
|
|
1436
|
-
* (
|
|
1575
|
+
* (banner via promptError, draft restored only while untouched).
|
|
1437
1576
|
*/
|
|
1438
|
-
sink(session, text, imageIds, mode) {
|
|
1439
|
-
if (text === "" && imageIds.length === 0) return;
|
|
1440
|
-
|
|
1441
|
-
shell?.commitSend(imageIds);
|
|
1442
|
-
this.conversation().sendSession(session, text, imageIds, mode).catch(() => {
|
|
1443
|
-
if (this.shells.get(session.sessionId) === shell) {
|
|
1444
|
-
shell?.restoreImages(imageIds);
|
|
1445
|
-
if (shell?.snapshot.draft === "") shell.setDraft(text);
|
|
1446
|
-
return;
|
|
1447
|
-
}
|
|
1448
|
-
const conversation = this.rootCtx.get("conversation");
|
|
1449
|
-
for (const id of imageIds) conversation?.releaseDraftImage(id);
|
|
1450
|
-
});
|
|
1577
|
+
sink(session, text, imageIds, mode, signal) {
|
|
1578
|
+
if (text === "" && imageIds.length === 0) return Promise.resolve({ kind: "success" });
|
|
1579
|
+
return this.conversation().sendSession(session, text, imageIds, mode, signal);
|
|
1451
1580
|
}
|
|
1452
1581
|
/**
|
|
1453
1582
|
* Steer every still-pending queued message into the running turn, in FIFO
|
|
@@ -2376,6 +2505,7 @@ window.__ModuleLoader__.load({
|
|
|
2376
2505
|
//#region lib/types/client/input/decorations.js
|
|
2377
2506
|
/** Token matcher: a trigger char at line start or after whitespace, then a word-ish name (never crosses \n). */
|
|
2378
2507
|
const TEXT_REF_RE = /(^|\s)([/@])([\w-]+)/g;
|
|
2508
|
+
const FOLDER_REF_RE = /(^|\s)(@(?:"[^"\n]*\/|[^\s"]+\/))/g;
|
|
2379
2509
|
/**
|
|
2380
2510
|
* Scan the draft for plain-text reference tokens against the hot lexicons.
|
|
2381
2511
|
* Word-boundary discipline: the trigger must sit at the draft
|
|
@@ -2386,23 +2516,38 @@ window.__ModuleLoader__.load({
|
|
|
2386
2516
|
* @returns matched ranges in draft order.
|
|
2387
2517
|
*/
|
|
2388
2518
|
function scanTextRefs(draft, lexicon) {
|
|
2389
|
-
if (
|
|
2519
|
+
if (draft === "") return [];
|
|
2390
2520
|
const out = [];
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2521
|
+
if (lexicon.size > 0) {
|
|
2522
|
+
TEXT_REF_RE.lastIndex = 0;
|
|
2523
|
+
let m;
|
|
2524
|
+
while ((m = TEXT_REF_RE.exec(draft)) !== null) {
|
|
2525
|
+
const trigger = m[2];
|
|
2526
|
+
const name = m[3] ?? "";
|
|
2527
|
+
if (lexicon.get(trigger)?.includes(name)) {
|
|
2528
|
+
const start = m.index + (m[1]?.length ?? 0);
|
|
2529
|
+
out.push({
|
|
2530
|
+
start,
|
|
2531
|
+
end: start + 1 + name.length,
|
|
2532
|
+
trigger
|
|
2533
|
+
});
|
|
2534
|
+
}
|
|
2403
2535
|
}
|
|
2404
2536
|
}
|
|
2405
|
-
|
|
2537
|
+
FOLDER_REF_RE.lastIndex = 0;
|
|
2538
|
+
let folder;
|
|
2539
|
+
while ((folder = FOLDER_REF_RE.exec(draft)) !== null) {
|
|
2540
|
+
const token = folder[2] ?? "";
|
|
2541
|
+
const start = folder.index + (folder[1]?.length ?? 0);
|
|
2542
|
+
const end = start + token.length;
|
|
2543
|
+
if (!out.some((range) => range.start < end && range.end > start)) out.push({
|
|
2544
|
+
start,
|
|
2545
|
+
end,
|
|
2546
|
+
trigger: "@",
|
|
2547
|
+
appearance: "folder"
|
|
2548
|
+
});
|
|
2549
|
+
}
|
|
2550
|
+
return out.sort((left, right) => left.start - right.start);
|
|
2406
2551
|
}
|
|
2407
2552
|
/** The empty lexicon (default: zero text-ref decorations, old call sites unchanged). */
|
|
2408
2553
|
const EMPTY_LEXICON$1 = /* @__PURE__ */ new Map();
|
|
@@ -2422,7 +2567,10 @@ window.__ModuleLoader__.load({
|
|
|
2422
2567
|
const chips = occurrences.map((o) => ({
|
|
2423
2568
|
occurrenceId: o.occurrenceId,
|
|
2424
2569
|
offset: o.offset,
|
|
2570
|
+
length: o.length,
|
|
2571
|
+
text: draft.slice(o.offset, o.offset + o.length),
|
|
2425
2572
|
label: o.label,
|
|
2573
|
+
...o.appearance === void 0 ? {} : { appearance: o.appearance },
|
|
2426
2574
|
invalid: o.invalid === true
|
|
2427
2575
|
}));
|
|
2428
2576
|
const hint = claimActive && claim.hint !== void 0 && draft.slice(claim.token.length).trim() === "" ? claim.hint : null;
|
|
@@ -2435,9 +2583,7 @@ window.__ModuleLoader__.load({
|
|
|
2435
2583
|
}
|
|
2436
2584
|
//#endregion
|
|
2437
2585
|
//#region lib/types/client/image-labels.js
|
|
2438
|
-
/**
|
|
2439
|
-
* atoms' label props (`@nomix-ai/nomix-client-ui-attachment` reads no
|
|
2440
|
-
* application state; owners resolve every string). */
|
|
2586
|
+
/** Attachment error and limit copy owned by the conversation input flow. */
|
|
2441
2587
|
/**
|
|
2442
2588
|
* Byte count as user-facing megabytes (`10MB`, `2.5MB`).
|
|
2443
2589
|
* @param bytes - the byte count.
|
|
@@ -2462,6 +2608,9 @@ window.__ModuleLoader__.load({
|
|
|
2462
2608
|
case "MODEL_DOES_NOT_SUPPORT_IMAGES": return t("image.modelUnsupported");
|
|
2463
2609
|
case "SUBAGENT_IMAGE_UNSUPPORTED": return t("image.subagentUnsupported");
|
|
2464
2610
|
case "IMAGE_TOO_MANY_PIXELS": return t("image.tooManyPixels");
|
|
2611
|
+
case "IMAGE_DIMENSION_TOO_LARGE":
|
|
2612
|
+
if (limits !== void 0) return t("image.dimensionTooLarge", { size: limits.maxImageDimension });
|
|
2613
|
+
break;
|
|
2465
2614
|
case "INVALID_IMAGE":
|
|
2466
2615
|
case "IMAGE_TYPE_MISMATCH": return t("image.unsupportedType");
|
|
2467
2616
|
case "TOO_MANY_IMAGES":
|
|
@@ -2477,61 +2626,36 @@ window.__ModuleLoader__.load({
|
|
|
2477
2626
|
}
|
|
2478
2627
|
return t("image.sendFailed", { reason });
|
|
2479
2628
|
}
|
|
2629
|
+
//#endregion
|
|
2630
|
+
//#region lib/types/client/reference/ReferenceIcon.js
|
|
2480
2631
|
/**
|
|
2481
|
-
*
|
|
2482
|
-
* @param
|
|
2483
|
-
* @returns
|
|
2484
|
-
*/
|
|
2485
|
-
function lightboxLabels(t) {
|
|
2486
|
-
return {
|
|
2487
|
-
dialog: t("image.preview"),
|
|
2488
|
-
close: t("image.closePreview")
|
|
2489
|
-
};
|
|
2490
|
-
}
|
|
2491
|
-
/**
|
|
2492
|
-
* Resolve the chat-history image strings.
|
|
2493
|
-
* @param t - the conversation-namespace translate.
|
|
2494
|
-
* @returns the message-image labels including the forwarded lightbox strings.
|
|
2495
|
-
*/
|
|
2496
|
-
function messageImageLabels(t) {
|
|
2497
|
-
return {
|
|
2498
|
-
image: t("image.label"),
|
|
2499
|
-
open: t("image.openOriginal"),
|
|
2500
|
-
openNamed: (label) => t("image.openOriginalLabel", { label }),
|
|
2501
|
-
loading: t("image.loading"),
|
|
2502
|
-
loadFailed: t("image.loadFailed"),
|
|
2503
|
-
lightbox: lightboxLabels(t)
|
|
2504
|
-
};
|
|
2505
|
-
}
|
|
2506
|
-
/**
|
|
2507
|
-
* Resolve the full-page drop overlay strings.
|
|
2508
|
-
* @param t - the conversation-namespace translate.
|
|
2509
|
-
* @param accepting - whether drops are currently accepted.
|
|
2510
|
-
* @param limits - per-message limits for the desc line, when known.
|
|
2511
|
-
* @returns the overlay title, with the limits desc while accepting.
|
|
2512
|
-
*/
|
|
2513
|
-
function dropOverlayLabels(t, accepting, limits) {
|
|
2514
|
-
if (!accepting) return { title: t("image.dropBlocked") };
|
|
2515
|
-
return {
|
|
2516
|
-
title: t("image.dropTitle"),
|
|
2517
|
-
desc: limits === void 0 ? void 0 : t("image.dropDesc", {
|
|
2518
|
-
count: limits.count,
|
|
2519
|
-
size: limits.size
|
|
2520
|
-
})
|
|
2521
|
-
};
|
|
2522
|
-
}
|
|
2523
|
-
/**
|
|
2524
|
-
* Resolve the composer draft-image rail strings.
|
|
2525
|
-
* @param t - the conversation-namespace translate.
|
|
2526
|
-
* @returns the rail group, open-tooltip, and paging-arrow labels.
|
|
2632
|
+
* Render the icon that identifies one inline reference domain.
|
|
2633
|
+
* @param props - Reference kind, optional size, and optional CSS class.
|
|
2634
|
+
* @returns The corresponding current-color SVG glyph.
|
|
2527
2635
|
*/
|
|
2528
|
-
function
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2636
|
+
function ReferenceIcon({ kind, size = 16, className }) {
|
|
2637
|
+
switch (kind) {
|
|
2638
|
+
case "session": return (0, react_jsx_runtime.jsx)("svg", {
|
|
2639
|
+
width: size,
|
|
2640
|
+
height: size,
|
|
2641
|
+
className,
|
|
2642
|
+
viewBox: "0 0 16 16",
|
|
2643
|
+
fill: "none",
|
|
2644
|
+
"aria-hidden": true,
|
|
2645
|
+
children: (0, react_jsx_runtime.jsx)("path", {
|
|
2646
|
+
d: "M8 0.597656C3.91296 0.597656 0.599716 3.91103 0.599609 7.99805C0.599609 9.13171 0.854567 10.2079 1.31152 11.1699L1.59277 11.7607L2.77441 11.1992L2.49414 10.6084L2.36035 10.3076C2.06865 9.59612 1.90723 8.81645 1.90723 7.99805C1.90733 4.63362 4.63554 1.90625 8 1.90625C11.3644 1.90635 14.0917 4.63368 14.0918 7.99805C14.0918 11.3625 11.3644 14.0907 8 14.0908C7.311 14.0908 6.80642 14.0414 6.35938 13.918C5.919 13.7963 5.50105 13.5929 5.00098 13.2441C4.26805 12.7329 3.21756 12.5526 2.35156 13.0996L2.33789 13.1084L2.32422 13.1182L1.74805 13.5234L2.18164 14.8184L3.05957 14.2002C3.37505 14.0068 3.84248 14.0319 4.25195 14.3174C4.84447 14.7307 5.39718 15.009 6.01172 15.1787C6.61963 15.3465 7.25579 15.3984 8 15.3984C12.087 15.3983 15.4004 12.0851 15.4004 7.99805C15.4003 3.9111 12.087 0.59776 8 0.597656ZM4.56836 8.50977V9.80371H8.12402V8.50977H4.56836ZM4.56836 7.30078H11.4619V6.00684H4.56836V7.30078Z",
|
|
2647
|
+
fill: "currentColor"
|
|
2648
|
+
})
|
|
2649
|
+
});
|
|
2650
|
+
case "file": return (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.IconBrowseOutline16, {
|
|
2651
|
+
size,
|
|
2652
|
+
className
|
|
2653
|
+
});
|
|
2654
|
+
case "folder": return (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.IconFolderClose16, {
|
|
2655
|
+
size,
|
|
2656
|
+
className
|
|
2657
|
+
});
|
|
2658
|
+
}
|
|
2535
2659
|
}
|
|
2536
2660
|
//#endregion
|
|
2537
2661
|
//#region lib/types/client/chat/message-chrome.js
|
|
@@ -2769,14 +2893,52 @@ window.__ModuleLoader__.load({
|
|
|
2769
2893
|
const whole = Math.round(s);
|
|
2770
2894
|
return `${Math.floor(whole / 60)}m${whole % 60}s`;
|
|
2771
2895
|
}
|
|
2896
|
+
/** Round a cache-read ratio to an integer percentage, with positive ties rounded up. */
|
|
2897
|
+
function roundedIntegerPercent(cacheReadTokens, denominator) {
|
|
2898
|
+
const denominatorQuotient = Math.floor(denominator / 200);
|
|
2899
|
+
const denominatorRemainder = denominator % 200;
|
|
2900
|
+
let lower = 0;
|
|
2901
|
+
let upper = 100;
|
|
2902
|
+
while (lower < upper) {
|
|
2903
|
+
const candidate = Math.floor((lower + upper + 1) / 2);
|
|
2904
|
+
const factor = candidate * 2 - 1;
|
|
2905
|
+
if (cacheReadTokens >= factor * denominatorQuotient + Math.ceil(factor * denominatorRemainder / 200)) lower = candidate;
|
|
2906
|
+
else upper = candidate - 1;
|
|
2907
|
+
}
|
|
2908
|
+
return lower;
|
|
2909
|
+
}
|
|
2772
2910
|
/**
|
|
2773
|
-
*
|
|
2911
|
+
* Display-ready cache-hit share of prompt-side input over the whole durable log.
|
|
2774
2912
|
* @param usage - the session's token-usage projection value.
|
|
2775
|
-
* @returns
|
|
2913
|
+
* @returns integer text when integer rounding stays below 100, otherwise the
|
|
2914
|
+
* minimum decimal precision that still rounds below 100; a full hit returns
|
|
2915
|
+
* 100, and no billed input returns null.
|
|
2776
2916
|
*/
|
|
2777
2917
|
function cacheHitPercent(usage) {
|
|
2778
2918
|
const denominator = billedInputTokens(usage);
|
|
2779
|
-
|
|
2919
|
+
if (denominator === 0) return null;
|
|
2920
|
+
const missedInputTokens = usage.uncachedInputTokens + usage.cacheWriteTokens;
|
|
2921
|
+
if (missedInputTokens === 0) return "100";
|
|
2922
|
+
const integerPercent = roundedIntegerPercent(usage.cacheReadTokens, denominator);
|
|
2923
|
+
if (integerPercent < 100) return String(integerPercent);
|
|
2924
|
+
let decimalPlaces = 1;
|
|
2925
|
+
let scaledDoubleGap = missedInputTokens * 200;
|
|
2926
|
+
const denominatorTens = Math.floor(denominator / 10);
|
|
2927
|
+
while (scaledDoubleGap <= denominatorTens) {
|
|
2928
|
+
scaledDoubleGap *= 10;
|
|
2929
|
+
decimalPlaces += 1;
|
|
2930
|
+
}
|
|
2931
|
+
const denominatorOnes = denominator % 10;
|
|
2932
|
+
let roundedLoss = 5;
|
|
2933
|
+
for (let loss = 1; loss < 5; loss += 1) {
|
|
2934
|
+
const factor = loss * 2 + 1;
|
|
2935
|
+
const threshold = factor * denominatorTens + Math.floor(factor * denominatorOnes / 10);
|
|
2936
|
+
if (scaledDoubleGap <= threshold) {
|
|
2937
|
+
roundedLoss = loss;
|
|
2938
|
+
break;
|
|
2939
|
+
}
|
|
2940
|
+
}
|
|
2941
|
+
return `99.${"9".repeat(decimalPlaces - 1)}${10 - roundedLoss}`;
|
|
2780
2942
|
}
|
|
2781
2943
|
/**
|
|
2782
2944
|
* Sum the three disjoint prompt-side billing buckets.
|
|
@@ -2881,23 +3043,23 @@ window.__ModuleLoader__.load({
|
|
|
2881
3043
|
document.head.appendChild(tag);
|
|
2882
3044
|
}
|
|
2883
3045
|
var ContextMeter_module_css_default = {
|
|
2884
|
-
"segment": "jexDtG_segment",
|
|
2885
|
-
"track": "jexDtG_track",
|
|
2886
|
-
"colorMessages": "jexDtG_colorMessages",
|
|
2887
|
-
"headline": "jexDtG_headline",
|
|
2888
|
-
"swatch": "jexDtG_swatch",
|
|
2889
|
-
"panel": "jexDtG_panel",
|
|
2890
|
-
"trigger": "jexDtG_trigger",
|
|
2891
3046
|
"bar": "jexDtG_bar",
|
|
3047
|
+
"colorMessages": "jexDtG_colorMessages",
|
|
2892
3048
|
"colorSystem": "jexDtG_colorSystem",
|
|
3049
|
+
"colorTools": "jexDtG_colorTools",
|
|
2893
3050
|
"figures": "jexDtG_figures",
|
|
2894
3051
|
"fill": "jexDtG_fill",
|
|
2895
|
-
"colorTools": "jexDtG_colorTools",
|
|
2896
|
-
"root": "jexDtG_root",
|
|
2897
3052
|
"header": "jexDtG_header",
|
|
3053
|
+
"headline": "jexDtG_headline",
|
|
3054
|
+
"panel": "jexDtG_panel",
|
|
2898
3055
|
"percent": "jexDtG_percent",
|
|
3056
|
+
"root": "jexDtG_root",
|
|
3057
|
+
"row": "jexDtG_row",
|
|
2899
3058
|
"rows": "jexDtG_rows",
|
|
2900
|
-
"
|
|
3059
|
+
"segment": "jexDtG_segment",
|
|
3060
|
+
"swatch": "jexDtG_swatch",
|
|
3061
|
+
"track": "jexDtG_track",
|
|
3062
|
+
"trigger": "jexDtG_trigger"
|
|
2901
3063
|
};
|
|
2902
3064
|
//#endregion
|
|
2903
3065
|
//#region lib/types/client/skeleton/ContextMeter.js
|
|
@@ -3069,10 +3231,10 @@ window.__ModuleLoader__.load({
|
|
|
3069
3231
|
document.head.appendChild(tag);
|
|
3070
3232
|
}
|
|
3071
3233
|
var PermissionSelect_module_css_default = {
|
|
3072
|
-
"triggerIcon": "DEwL5W_triggerIcon",
|
|
3073
3234
|
"chevron": "DEwL5W_chevron",
|
|
3074
|
-
"trigger": "DEwL5W_trigger",
|
|
3075
3235
|
"chevronOpen": "DEwL5W_chevronOpen",
|
|
3236
|
+
"trigger": "DEwL5W_trigger",
|
|
3237
|
+
"triggerIcon": "DEwL5W_triggerIcon",
|
|
3076
3238
|
"triggerLabel": "DEwL5W_triggerLabel"
|
|
3077
3239
|
};
|
|
3078
3240
|
//#endregion
|
|
@@ -3298,7 +3460,7 @@ window.__ModuleLoader__.load({
|
|
|
3298
3460
|
}
|
|
3299
3461
|
//#endregion
|
|
3300
3462
|
//#region \0nomix-css:/home/runner/work/nomix-harness/nomix-harness/packages/client/ui-conversation/src/client/skeleton/InputBar.module.css.mjs
|
|
3301
|
-
const css$17 = "
|
|
3463
|
+
const css$17 = ".LiGuRq_root{padding:0 var(--nomix-composer-side-clearance) 8px;flex-direction:column;align-items:center;display:flex}.LiGuRq_hero{padding:0 var(--nomix-composer-side-clearance)}.LiGuRq_notice{width:100%;max-width:var(--nomix-composer-card-max-width);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:8px;margin-bottom:6px;padding:4px 8px;font-size:12px;line-height:18px}.LiGuRq_card{box-sizing:border-box;width:100%;max-width:var(--nomix-composer-card-max-width);border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-shadow-lv2);--nomix-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--nomix-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:22px;flex-direction:column;gap:12px;padding-top:10px;font-size:16px;line-height:24px;display:flex;position:relative}.LiGuRq_cardWorkspaceTrigger{cursor:pointer;border-color:#0000}.LiGuRq_cardWorkspaceTrigger:after{content:\"\";background:var(--dsw-alias-border-l4);pointer-events:none;border-radius:22px;transition:background-color .1s;position:absolute;inset:-1px;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='22' ry='22' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E\");mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='22' ry='22' stroke='black' stroke-width='2' stroke-dasharray='4 4'/%3E%3C/svg%3E\")}.LiGuRq_cardWorkspaceTrigger :disabled{pointer-events:none}.LiGuRq_cardWorkspaceTrigger:hover:after{background:var(--dsw-alias-state-business-primary)}.LiGuRq_accessory{align-items:center;gap:8px;padding:10px 12px 0;display:flex}.LiGuRq_overlayAnchor{height:0;position:absolute;inset:0 0 auto}.LiGuRq_scroll{max-height:var(--nomix-composer-text-max-height);overflow-y:auto}.LiGuRq_grow{position:relative}.LiGuRq_backdrop{color:var(--dsw-alias-label-primary);pointer-events:none;position:absolute;inset:0;overflow:hidden}.LiGuRq_backdropDisabled,.LiGuRq_backdropDisabled :is(.LiGuRq_hlToken,.LiGuRq_hint,.LiGuRq_textRef,.LiGuRq_chip,.LiGuRq_chipInvalid){color:var(--dsw-alias-label-tertiary)}.LiGuRq_hlToken{color:var(--dsw-alias-state-warn-label);background-color:#0000}.LiGuRq_hlSegment{color:#0000;background-color:#0000;border-radius:4px}.LiGuRq_hint{color:var(--dsw-alias-label-caption)}.LiGuRq_pending{background:var(--dsw-alias-state-business-primary);border-radius:50%;width:8px;height:8px;animation:1s ease-in-out infinite alternate LiGuRq_input-pending}@keyframes LiGuRq_input-pending{0%{opacity:.35}to{opacity:1}}.LiGuRq_input{resize:none;color:#0000;-webkit-text-fill-color:transparent;width:100%;height:100%;caret-color:var(--dsw-alias-state-business-primary);background:0 0;border:none;outline:none;position:absolute;inset:0;overflow:hidden}.LiGuRq_input,.LiGuRq_mirror,.LiGuRq_backdrop{box-sizing:border-box;font-family:var(--dsw-font-family);font-size:inherit;line-height:inherit;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;padding:4px 12px 0 16px}.LiGuRq_input::placeholder{color:var(--dsw-alias-label-caption);-webkit-text-fill-color:var(--dsw-alias-label-caption);user-select:none}.LiGuRq_input:disabled{color:#0000;-webkit-text-fill-color:transparent;cursor:not-allowed}.LiGuRq_input[aria-haspopup=menu]{cursor:pointer}.LiGuRq_mirror{visibility:hidden;pointer-events:none}.LiGuRq_hero .LiGuRq_mirror{min-height:52px}.LiGuRq_row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:2px 8px 6px;display:flex;container-type:inline-size}.LiGuRq_tools,.LiGuRq_modes,.LiGuRq_trailing{align-items:center;min-width:0;display:flex}.LiGuRq_tools{gap:16px}.LiGuRq_modes{gap:12px}.LiGuRq_trailing{flex:none;gap:12px;margin-left:auto}.LiGuRq_add{background:var(--dsw-specific-selector);width:28px;height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;display:grid}.LiGuRq_add:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover-solid)}.LiGuRq_add:disabled{opacity:.5;cursor:default}.LiGuRq_select{max-width:220px;height:28px;color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;appearance:none;background-color:#0000;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2381858C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");background-position:right 4px center;background-repeat:no-repeat;background-size:12px 12px;border:none;border-radius:8px;outline:none;padding:0 20px 0 8px;font-size:13px;font-weight:500;line-height:20px}.LiGuRq_select:hover:not(:disabled){background-color:var(--dsw-alias-interactive-bg-hover)}.LiGuRq_select:disabled{opacity:.5;cursor:default}.LiGuRq_primary{background:var(--dsw-alias-button-info-fill);color:#fff;cursor:pointer;border:none;border-radius:999px;flex:none;place-items:center;width:34px;height:34px;transition:background-color .1s;display:grid;transform:translateY(-2px)}.LiGuRq_primary:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.LiGuRq_primary:disabled{opacity:.4;cursor:default}.LiGuRq_retry{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;margin-left:8px;padding:1px 8px;font-size:12px}.LiGuRq_textRef{color:var(--dsw-alias-state-business-primary);-webkit-box-decoration-break:clone;box-decoration-break:clone;background-color:#0000}.LiGuRq_textRef:after{display:none}.LiGuRq_textRefTrigger{position:relative}.LiGuRq_textRefTriggerGlyph{color:#0000}.LiGuRq_textRefIcon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.LiGuRq_chip{color:var(--dsw-alias-state-business-primary);-webkit-box-decoration-break:clone;box-decoration-break:clone;background:0 0;position:relative}.LiGuRq_chipTrigger{position:relative}.LiGuRq_chipTriggerGlyph{color:#0000}.LiGuRq_chipIcon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.LiGuRq_chipInvalid{opacity:.7;color:var(--dsw-alias-state-error-primary);text-decoration:line-through}";
|
|
3302
3464
|
const tagId$17 = "@nomix-ai/nomix-client-ui-conversation/InputBar.module.css";
|
|
3303
3465
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$17) + "]") === null) {
|
|
3304
3466
|
const tag = document.createElement("style");
|
|
@@ -3308,37 +3470,41 @@ window.__ModuleLoader__.load({
|
|
|
3308
3470
|
document.head.appendChild(tag);
|
|
3309
3471
|
}
|
|
3310
3472
|
var InputBar_module_css_default = {
|
|
3311
|
-
"
|
|
3312
|
-
"
|
|
3313
|
-
"attachments": "LiGuRq_attachments",
|
|
3314
|
-
"noticeError": "LiGuRq_noticeError",
|
|
3315
|
-
"trailing": "LiGuRq_trailing",
|
|
3316
|
-
"primary": "LiGuRq_primary",
|
|
3317
|
-
"select": "LiGuRq_select",
|
|
3318
|
-
"hero": "LiGuRq_hero",
|
|
3473
|
+
"accessory": "LiGuRq_accessory",
|
|
3474
|
+
"add": "LiGuRq_add",
|
|
3319
3475
|
"backdrop": "LiGuRq_backdrop",
|
|
3320
|
-
"
|
|
3321
|
-
"retry": "LiGuRq_retry",
|
|
3322
|
-
"textRef": "LiGuRq_textRef",
|
|
3323
|
-
"notice": "LiGuRq_notice",
|
|
3324
|
-
"chipLabel": "LiGuRq_chipLabel",
|
|
3325
|
-
"hlToken": "LiGuRq_hlToken",
|
|
3476
|
+
"backdropDisabled": "LiGuRq_backdropDisabled",
|
|
3326
3477
|
"card": "LiGuRq_card",
|
|
3327
|
-
"
|
|
3328
|
-
"
|
|
3478
|
+
"cardWorkspaceTrigger": "LiGuRq_cardWorkspaceTrigger",
|
|
3479
|
+
"chip": "LiGuRq_chip",
|
|
3480
|
+
"chipIcon": "LiGuRq_chipIcon",
|
|
3329
3481
|
"chipInvalid": "LiGuRq_chipInvalid",
|
|
3330
|
-
"
|
|
3331
|
-
"
|
|
3482
|
+
"chipTrigger": "LiGuRq_chipTrigger",
|
|
3483
|
+
"chipTriggerGlyph": "LiGuRq_chipTriggerGlyph",
|
|
3484
|
+
"grow": "LiGuRq_grow",
|
|
3485
|
+
"hero": "LiGuRq_hero",
|
|
3332
3486
|
"hint": "LiGuRq_hint",
|
|
3333
|
-
"
|
|
3334
|
-
"
|
|
3487
|
+
"hlSegment": "LiGuRq_hlSegment",
|
|
3488
|
+
"hlToken": "LiGuRq_hlToken",
|
|
3489
|
+
"input": "LiGuRq_input",
|
|
3335
3490
|
"input-pending": "LiGuRq_input-pending",
|
|
3336
|
-
"row": "LiGuRq_row",
|
|
3337
|
-
"cardWorkspaceTrigger": "LiGuRq_cardWorkspaceTrigger",
|
|
3338
3491
|
"mirror": "LiGuRq_mirror",
|
|
3492
|
+
"modes": "LiGuRq_modes",
|
|
3493
|
+
"notice": "LiGuRq_notice",
|
|
3494
|
+
"overlayAnchor": "LiGuRq_overlayAnchor",
|
|
3495
|
+
"pending": "LiGuRq_pending",
|
|
3496
|
+
"primary": "LiGuRq_primary",
|
|
3497
|
+
"retry": "LiGuRq_retry",
|
|
3498
|
+
"root": "LiGuRq_root",
|
|
3499
|
+
"row": "LiGuRq_row",
|
|
3500
|
+
"scroll": "LiGuRq_scroll",
|
|
3501
|
+
"select": "LiGuRq_select",
|
|
3502
|
+
"textRef": "LiGuRq_textRef",
|
|
3503
|
+
"textRefIcon": "LiGuRq_textRefIcon",
|
|
3504
|
+
"textRefTrigger": "LiGuRq_textRefTrigger",
|
|
3505
|
+
"textRefTriggerGlyph": "LiGuRq_textRefTriggerGlyph",
|
|
3339
3506
|
"tools": "LiGuRq_tools",
|
|
3340
|
-
"
|
|
3341
|
-
"chip": "LiGuRq_chip"
|
|
3507
|
+
"trailing": "LiGuRq_trailing"
|
|
3342
3508
|
};
|
|
3343
3509
|
//#endregion
|
|
3344
3510
|
//#region lib/types/client/skeleton/InputBar.js
|
|
@@ -3356,6 +3522,41 @@ window.__ModuleLoader__.load({
|
|
|
3356
3522
|
textRefs: [],
|
|
3357
3523
|
hint: null
|
|
3358
3524
|
};
|
|
3525
|
+
/**
|
|
3526
|
+
* Resolve one edit's range from the record taken before it applied.
|
|
3527
|
+
* A selection the edit replaces is the range outright. A caret delete replaces
|
|
3528
|
+
* nothing and reports the bare caret, so the removed span is whatever the draft
|
|
3529
|
+
* lost, on the side `inputType` names — measured, because one caret gesture can
|
|
3530
|
+
* remove a multi-unit grapheme, a word, or a line.
|
|
3531
|
+
* @param pending - record taken at `beforeinput`, null when none was seen.
|
|
3532
|
+
* @param prevLength - length of the draft the edit applied to.
|
|
3533
|
+
* @param nextLength - length of the resulting draft.
|
|
3534
|
+
* @returns the exact range, or undefined when the record cannot describe this
|
|
3535
|
+
* edit and the machine's diff scan has to recover it.
|
|
3536
|
+
*/
|
|
3537
|
+
function editRangeOf(pending, prevLength, nextLength) {
|
|
3538
|
+
if (pending === null || pending.draftLength !== prevLength) return void 0;
|
|
3539
|
+
const { start, end, inputType } = pending;
|
|
3540
|
+
if (start > end || end > prevLength) return void 0;
|
|
3541
|
+
const insertedLength = nextLength - prevLength + (end - start);
|
|
3542
|
+
if (insertedLength >= 0) return {
|
|
3543
|
+
start,
|
|
3544
|
+
end,
|
|
3545
|
+
insertedLength
|
|
3546
|
+
};
|
|
3547
|
+
if (start !== end) return void 0;
|
|
3548
|
+
const removed = prevLength - nextLength;
|
|
3549
|
+
if (inputType.endsWith("Backward")) return removed <= start ? {
|
|
3550
|
+
start: start - removed,
|
|
3551
|
+
end: start,
|
|
3552
|
+
insertedLength: 0
|
|
3553
|
+
} : void 0;
|
|
3554
|
+
if (inputType.endsWith("Forward")) return start + removed <= prevLength ? {
|
|
3555
|
+
start,
|
|
3556
|
+
end: start + removed,
|
|
3557
|
+
insertedLength: 0
|
|
3558
|
+
} : void 0;
|
|
3559
|
+
}
|
|
3359
3560
|
function InputBar({ useSession, useInput, inputActions, keyboard, addImages, removeImage, draftImages, resolveSubmitMode, toggleCommandMenu, stop, command, t, renderSlot, useNotices, useLexicon, useMenuLauncher, useProjection, sessionId, variant, disabled: inert = false, blocked, workspacePickerOpen = false, onRequestWorkspace, placeholder, accessory, overlay, leftItems, rightItems, footer }) {
|
|
3360
3561
|
const input = useInput((s) => s);
|
|
3361
3562
|
const notice = useNotices((s) => s);
|
|
@@ -3371,8 +3572,6 @@ window.__ModuleLoader__.load({
|
|
|
3371
3572
|
const draft = input?.draft ?? "";
|
|
3372
3573
|
const attachments = (0, react.useMemo)(() => input === void 0 || draftImages === void 0 ? [] : draftImages(input.imageIds), [draftImages, input?.imageIds]);
|
|
3373
3574
|
const empty = draft.trim() === "" && attachments.length === 0;
|
|
3374
|
-
const [preview, setPreview] = (0, react.useState)(null);
|
|
3375
|
-
const [dragActive, setDragActive] = (0, react.useState)(false);
|
|
3376
3575
|
const [toast, setToast] = (0, react.useState)(null);
|
|
3377
3576
|
const toastSeq = (0, react.useRef)(0);
|
|
3378
3577
|
const showToast = (0, react.useCallback)((text) => {
|
|
@@ -3395,9 +3594,11 @@ window.__ModuleLoader__.load({
|
|
|
3395
3594
|
t,
|
|
3396
3595
|
imageLimits
|
|
3397
3596
|
]);
|
|
3597
|
+
(0, react.useEffect)(() => {
|
|
3598
|
+
if (notice?.level === "error") showToast(notice.text);
|
|
3599
|
+
}, [notice, showToast]);
|
|
3398
3600
|
const inputRef = (0, react.useRef)(null);
|
|
3399
3601
|
const cardRef = (0, react.useRef)(null);
|
|
3400
|
-
const dragDepthRef = (0, react.useRef)(0);
|
|
3401
3602
|
const scrollRef = (0, react.useRef)(null);
|
|
3402
3603
|
const mirrorRef = (0, react.useRef)(null);
|
|
3403
3604
|
const safari = (0, react.useMemo)(() => isSafariBrowser(navigator), []);
|
|
@@ -3434,9 +3635,6 @@ window.__ModuleLoader__.load({
|
|
|
3434
3635
|
safariNativeShrinkRef.current = false;
|
|
3435
3636
|
if (safari && nativeShrink) repairSafariTextareaLayout(inputRef.current);
|
|
3436
3637
|
}, [draft, safari]);
|
|
3437
|
-
(0, react.useEffect)(() => {
|
|
3438
|
-
if (preview !== null && !attachments.some((attachment) => attachment.id === preview.id)) setPreview(null);
|
|
3439
|
-
}, [attachments, preview]);
|
|
3440
3638
|
const revealCaret = (caret) => {
|
|
3441
3639
|
const scrollEl = scrollRef.current;
|
|
3442
3640
|
const mirrorEl = mirrorRef.current;
|
|
@@ -3492,6 +3690,32 @@ window.__ModuleLoader__.load({
|
|
|
3492
3690
|
el.removeEventListener("wheel", onWheel);
|
|
3493
3691
|
};
|
|
3494
3692
|
}, []);
|
|
3693
|
+
const selectionOf = (el) => ({
|
|
3694
|
+
start: el.selectionStart ?? 0,
|
|
3695
|
+
end: el.selectionEnd ?? el.selectionStart ?? 0
|
|
3696
|
+
});
|
|
3697
|
+
const pendingEditRef = (0, react.useRef)(null);
|
|
3698
|
+
(0, react.useEffect)(() => {
|
|
3699
|
+
const el = inputRef.current;
|
|
3700
|
+
if (el === null) return;
|
|
3701
|
+
const onBeforeInput = (e) => {
|
|
3702
|
+
if (!e.inputType.startsWith("insert") && !e.inputType.startsWith("delete")) {
|
|
3703
|
+
pendingEditRef.current = null;
|
|
3704
|
+
return;
|
|
3705
|
+
}
|
|
3706
|
+
const { start, end } = selectionOf(el);
|
|
3707
|
+
pendingEditRef.current = {
|
|
3708
|
+
start,
|
|
3709
|
+
end,
|
|
3710
|
+
draftLength: el.value.length,
|
|
3711
|
+
inputType: e.inputType
|
|
3712
|
+
};
|
|
3713
|
+
};
|
|
3714
|
+
el.addEventListener("beforeinput", onBeforeInput);
|
|
3715
|
+
return () => {
|
|
3716
|
+
el.removeEventListener("beforeinput", onBeforeInput);
|
|
3717
|
+
};
|
|
3718
|
+
}, []);
|
|
3495
3719
|
const onKeyDown = (e) => {
|
|
3496
3720
|
if (workspaceTrigger) {
|
|
3497
3721
|
if (e.key === "Enter" || e.key === " ") {
|
|
@@ -3500,9 +3724,28 @@ window.__ModuleLoader__.load({
|
|
|
3500
3724
|
}
|
|
3501
3725
|
return;
|
|
3502
3726
|
}
|
|
3503
|
-
if (keyboard === void 0 || inputActions === void 0) return;
|
|
3727
|
+
if (input === void 0 || keyboard === void 0 || inputActions === void 0) return;
|
|
3504
3728
|
if (e.key === "Enter" && e.shiftKey) return;
|
|
3505
3729
|
const composing = composingRef.current || e.nativeEvent.isComposing || e.nativeEvent.keyCode === 229;
|
|
3730
|
+
if (!composing && !machineBusy && !locked && (e.key === "Backspace" || e.key === "Delete")) {
|
|
3731
|
+
const selection = selectionOf(e.currentTarget);
|
|
3732
|
+
if (selection.start === selection.end) {
|
|
3733
|
+
const occurrence = input.occurrences.find((o) => e.key === "Backspace" ? o.offset + o.length === selection.start : o.offset === selection.start);
|
|
3734
|
+
if (occurrence !== void 0) {
|
|
3735
|
+
e.preventDefault();
|
|
3736
|
+
const start = occurrence.offset;
|
|
3737
|
+
const end = occurrence.offset + occurrence.length;
|
|
3738
|
+
keyboard.setDraft(draft.slice(0, start) + draft.slice(end), {
|
|
3739
|
+
start,
|
|
3740
|
+
end,
|
|
3741
|
+
insertedLength: 0
|
|
3742
|
+
});
|
|
3743
|
+
restoreCaret(e.currentTarget, start);
|
|
3744
|
+
keyboard.track(keyboard.snapshot.draft, start);
|
|
3745
|
+
return;
|
|
3746
|
+
}
|
|
3747
|
+
}
|
|
3748
|
+
}
|
|
3506
3749
|
if (e.key === "ArrowUp" || e.key === "ArrowDown") {
|
|
3507
3750
|
if (keyboard.arbitrate(e.key === "ArrowUp" ? "up" : "down", composing) === "consumed") e.preventDefault();
|
|
3508
3751
|
return;
|
|
@@ -3544,38 +3787,37 @@ window.__ModuleLoader__.load({
|
|
|
3544
3787
|
if (keyboard === void 0 || locked) return;
|
|
3545
3788
|
if (machineBusy) return;
|
|
3546
3789
|
const next = e.target.value;
|
|
3790
|
+
const pending = pendingEditRef.current;
|
|
3791
|
+
pendingEditRef.current = null;
|
|
3547
3792
|
safariNativeShrinkRef.current = safari && next.length < draft.length;
|
|
3548
|
-
keyboard.setDraft(next);
|
|
3793
|
+
keyboard.setDraft(next, editRangeOf(pending, draft.length, next.length));
|
|
3549
3794
|
keyboard.track(next, e.target.selectionStart ?? next.length);
|
|
3550
3795
|
};
|
|
3551
|
-
const selectionOf = (el) => ({
|
|
3552
|
-
start: el.selectionStart ?? 0,
|
|
3553
|
-
end: el.selectionEnd ?? el.selectionStart ?? 0
|
|
3554
|
-
});
|
|
3555
3796
|
const onCopyOrCut = (e, cut) => {
|
|
3556
3797
|
if (input === void 0 || keyboard === void 0) return;
|
|
3557
3798
|
const el = e.currentTarget;
|
|
3558
3799
|
const { start, end } = selectionOf(el);
|
|
3559
3800
|
if (start === end) return;
|
|
3560
|
-
|
|
3561
|
-
const touched = input.occurrences.filter((o) => o.offset >= start && o.offset < end);
|
|
3801
|
+
const touched = input.occurrences.filter((o) => o.offset < end && o.offset + o.length > start);
|
|
3562
3802
|
if (touched.length === 0 && !cut) return;
|
|
3563
3803
|
e.preventDefault();
|
|
3804
|
+
const copyStart = touched.reduce((value, o) => Math.min(value, o.offset), start);
|
|
3805
|
+
const copyEnd = touched.reduce((value, o) => Math.max(value, o.offset + o.length), end);
|
|
3564
3806
|
let text = "";
|
|
3565
|
-
let cursor =
|
|
3807
|
+
let cursor = copyStart;
|
|
3566
3808
|
for (const o of touched) {
|
|
3567
3809
|
text += draft.slice(cursor, o.offset) + o.clipboardText;
|
|
3568
|
-
cursor = o.offset +
|
|
3810
|
+
cursor = o.offset + o.length;
|
|
3569
3811
|
}
|
|
3570
|
-
text += draft.slice(cursor,
|
|
3812
|
+
text += draft.slice(cursor, copyEnd);
|
|
3571
3813
|
e.clipboardData.setData("text/plain", text);
|
|
3572
3814
|
if (cut && !machineBusy && !locked) {
|
|
3573
|
-
keyboard.setDraft(draft.slice(0,
|
|
3574
|
-
start,
|
|
3575
|
-
end,
|
|
3815
|
+
keyboard.setDraft(draft.slice(0, copyStart) + draft.slice(copyEnd), {
|
|
3816
|
+
start: copyStart,
|
|
3817
|
+
end: copyEnd,
|
|
3576
3818
|
insertedLength: 0
|
|
3577
3819
|
});
|
|
3578
|
-
restoreCaret(el,
|
|
3820
|
+
restoreCaret(el, copyStart);
|
|
3579
3821
|
}
|
|
3580
3822
|
};
|
|
3581
3823
|
const onPaste = (e) => {
|
|
@@ -3616,60 +3858,6 @@ window.__ModuleLoader__.load({
|
|
|
3616
3858
|
t
|
|
3617
3859
|
]);
|
|
3618
3860
|
const canAcceptDrop = !locked && !machineBusy && addImages !== void 0;
|
|
3619
|
-
(0, react.useEffect)(() => {
|
|
3620
|
-
const hasFiles = (event) => event.dataTransfer?.types.includes("Files") ?? false;
|
|
3621
|
-
const reset = () => {
|
|
3622
|
-
dragDepthRef.current = 0;
|
|
3623
|
-
setDragActive(false);
|
|
3624
|
-
};
|
|
3625
|
-
const onDragEnter = (event) => {
|
|
3626
|
-
if (!hasFiles(event)) return;
|
|
3627
|
-
event.preventDefault();
|
|
3628
|
-
dragDepthRef.current += 1;
|
|
3629
|
-
setDragActive(true);
|
|
3630
|
-
};
|
|
3631
|
-
const onDragOver = (event) => {
|
|
3632
|
-
if (!hasFiles(event) || event.dataTransfer === null) return;
|
|
3633
|
-
event.preventDefault();
|
|
3634
|
-
event.dataTransfer.dropEffect = canAcceptDrop ? "copy" : "none";
|
|
3635
|
-
};
|
|
3636
|
-
const onDragLeave = (event) => {
|
|
3637
|
-
if (!hasFiles(event)) return;
|
|
3638
|
-
dragDepthRef.current = Math.max(0, dragDepthRef.current - 1);
|
|
3639
|
-
if (dragDepthRef.current === 0) setDragActive(false);
|
|
3640
|
-
const leavingViewport = event.clientX <= 0 || event.clientY <= 0 || event.clientX >= window.innerWidth || event.clientY >= window.innerHeight;
|
|
3641
|
-
if ((event.target === document.documentElement || event.target === document.body) && leavingViewport) reset();
|
|
3642
|
-
};
|
|
3643
|
-
const onDrop = (event) => {
|
|
3644
|
-
if (!hasFiles(event)) return;
|
|
3645
|
-
event.preventDefault();
|
|
3646
|
-
reset();
|
|
3647
|
-
if (!canAcceptDrop) return;
|
|
3648
|
-
intakeImages([...event.dataTransfer?.files ?? []]);
|
|
3649
|
-
};
|
|
3650
|
-
document.addEventListener("dragenter", onDragEnter);
|
|
3651
|
-
document.addEventListener("dragover", onDragOver);
|
|
3652
|
-
document.addEventListener("dragleave", onDragLeave);
|
|
3653
|
-
document.addEventListener("drop", onDrop);
|
|
3654
|
-
window.addEventListener("dragend", reset);
|
|
3655
|
-
return () => {
|
|
3656
|
-
document.removeEventListener("dragenter", onDragEnter);
|
|
3657
|
-
document.removeEventListener("dragover", onDragOver);
|
|
3658
|
-
document.removeEventListener("dragleave", onDragLeave);
|
|
3659
|
-
document.removeEventListener("drop", onDrop);
|
|
3660
|
-
window.removeEventListener("dragend", reset);
|
|
3661
|
-
};
|
|
3662
|
-
}, [canAcceptDrop, intakeImages]);
|
|
3663
|
-
const closePreview = (0, react.useCallback)(() => {
|
|
3664
|
-
setPreview(null);
|
|
3665
|
-
}, []);
|
|
3666
|
-
const railItems = (0, react.useMemo)(() => attachments.map((attachment) => ({
|
|
3667
|
-
id: attachment.id,
|
|
3668
|
-
previewUrl: attachment.previewUrl,
|
|
3669
|
-
alt: attachment.file.name || t("image.pending"),
|
|
3670
|
-
removeLabel: t("image.remove", { name: attachment.file.name }),
|
|
3671
|
-
attachment
|
|
3672
|
-
})), [attachments, t]);
|
|
3673
3861
|
const onSelect = (e) => {
|
|
3674
3862
|
if (keyboard !== void 0 && keyboard.snapshot.paste !== void 0) keyboard.invalidatePaste();
|
|
3675
3863
|
};
|
|
@@ -3719,34 +3907,54 @@ window.__ModuleLoader__.load({
|
|
|
3719
3907
|
at: chip.offset,
|
|
3720
3908
|
kind: "chip",
|
|
3721
3909
|
chip
|
|
3722
|
-
})), ...deco.textRefs.map((ref) => ({
|
|
3910
|
+
})), ...deco.textRefs.map((ref, ordinal) => ({
|
|
3723
3911
|
at: ref.start,
|
|
3724
3912
|
kind: "text-ref",
|
|
3725
|
-
ref
|
|
3913
|
+
ref,
|
|
3914
|
+
ordinal
|
|
3726
3915
|
}))].sort((a, b) => a.at - b.at);
|
|
3727
3916
|
for (const b of boundaries) {
|
|
3728
3917
|
if (b.at < cursor) continue;
|
|
3729
3918
|
pushPlain(b.at);
|
|
3730
3919
|
if (b.kind === "chip") {
|
|
3731
3920
|
const chip = b.chip;
|
|
3732
|
-
backdrop.push((0, react_jsx_runtime.
|
|
3921
|
+
backdrop.push((0, react_jsx_runtime.jsxs)("span", {
|
|
3733
3922
|
className: clsx(InputBar_module_css_default.chip, chip.invalid && InputBar_module_css_default.chipInvalid),
|
|
3734
3923
|
"data-decoration": "chip",
|
|
3924
|
+
"data-reference-appearance": chip.appearance,
|
|
3735
3925
|
"data-occurrence": chip.occurrenceId,
|
|
3736
3926
|
"data-invalid": chip.invalid || void 0,
|
|
3737
3927
|
title: chip.label,
|
|
3738
|
-
children: (0, react_jsx_runtime.
|
|
3739
|
-
className: InputBar_module_css_default.
|
|
3740
|
-
children:
|
|
3741
|
-
|
|
3928
|
+
children: [chip.appearance === void 0 ? chip.text[0] : (0, react_jsx_runtime.jsxs)("span", {
|
|
3929
|
+
className: InputBar_module_css_default.chipTrigger,
|
|
3930
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
3931
|
+
className: InputBar_module_css_default.chipTriggerGlyph,
|
|
3932
|
+
children: chip.text[0]
|
|
3933
|
+
}), (0, react_jsx_runtime.jsx)(ReferenceIcon, {
|
|
3934
|
+
kind: chip.appearance,
|
|
3935
|
+
size: 16,
|
|
3936
|
+
className: InputBar_module_css_default.chipIcon
|
|
3937
|
+
})]
|
|
3938
|
+
}), (0, react_jsx_runtime.jsx)("span", { children: chip.text.slice(1) })]
|
|
3742
3939
|
}, `chip-${chip.occurrenceId}`));
|
|
3743
|
-
cursor = chip.offset +
|
|
3940
|
+
cursor = chip.offset + chip.length;
|
|
3744
3941
|
} else {
|
|
3942
|
+
const text = draft.slice(b.ref.start, b.ref.end);
|
|
3745
3943
|
backdrop.push((0, react_jsx_runtime.jsx)("mark", {
|
|
3746
3944
|
className: InputBar_module_css_default.textRef,
|
|
3747
3945
|
"data-decoration": "text-ref",
|
|
3748
|
-
children:
|
|
3749
|
-
|
|
3946
|
+
children: b.ref.appearance === "folder" ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsxs)("span", {
|
|
3947
|
+
className: InputBar_module_css_default.textRefTrigger,
|
|
3948
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
3949
|
+
className: InputBar_module_css_default.textRefTriggerGlyph,
|
|
3950
|
+
children: text[0]
|
|
3951
|
+
}), (0, react_jsx_runtime.jsx)(ReferenceIcon, {
|
|
3952
|
+
kind: "folder",
|
|
3953
|
+
size: 16,
|
|
3954
|
+
className: InputBar_module_css_default.textRefIcon
|
|
3955
|
+
})]
|
|
3956
|
+
}), text.slice(1)] }) : text
|
|
3957
|
+
}, `ref-${b.ordinal}`));
|
|
3750
3958
|
cursor = b.ref.end;
|
|
3751
3959
|
}
|
|
3752
3960
|
}
|
|
@@ -3766,21 +3974,14 @@ window.__ModuleLoader__.load({
|
|
|
3766
3974
|
return (0, react_jsx_runtime.jsxs)("div", {
|
|
3767
3975
|
className: clsx(InputBar_module_css_default.root, variant === "hero" && InputBar_module_css_default.hero),
|
|
3768
3976
|
children: [
|
|
3769
|
-
dragActive && (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_attachment.DropOverlay, {
|
|
3770
|
-
disabled: !canAcceptDrop,
|
|
3771
|
-
labels: dropOverlayLabels(t, canAcceptDrop, imageLimits === void 0 ? void 0 : {
|
|
3772
|
-
count: imageLimits.maxImagesPerMessage,
|
|
3773
|
-
size: imageSizeText(imageLimits.maxImageBytes)
|
|
3774
|
-
})
|
|
3775
|
-
}),
|
|
3776
3977
|
toast !== null && (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.Toast, {
|
|
3777
3978
|
text: toast.text,
|
|
3778
3979
|
icon: (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.IconWarningOutline16, {}),
|
|
3779
3980
|
anchor: cardRef.current,
|
|
3780
3981
|
onDone: dismissToast
|
|
3781
3982
|
}, toast.seq),
|
|
3782
|
-
notice
|
|
3783
|
-
className:
|
|
3983
|
+
notice?.level === "info" && (0, react_jsx_runtime.jsx)("div", {
|
|
3984
|
+
className: InputBar_module_css_default.notice,
|
|
3784
3985
|
role: "status",
|
|
3785
3986
|
children: notice.text
|
|
3786
3987
|
}),
|
|
@@ -3801,18 +4002,17 @@ window.__ModuleLoader__.load({
|
|
|
3801
4002
|
className: InputBar_module_css_default.accessory,
|
|
3802
4003
|
children: accessory
|
|
3803
4004
|
}),
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
})
|
|
4005
|
+
renderSlot("conversation.input.attachments", {
|
|
4006
|
+
attachments,
|
|
4007
|
+
canAcceptDrop,
|
|
4008
|
+
onAddImages: intakeImages,
|
|
4009
|
+
onRemoveImage: (id) => {
|
|
4010
|
+
removeImage?.(id);
|
|
4011
|
+
},
|
|
4012
|
+
dropLimits: imageLimits === void 0 ? void 0 : {
|
|
4013
|
+
count: imageLimits.maxImagesPerMessage,
|
|
4014
|
+
size: imageSizeText(imageLimits.maxImageBytes)
|
|
4015
|
+
}
|
|
3816
4016
|
}),
|
|
3817
4017
|
(0, react_jsx_runtime.jsx)("div", {
|
|
3818
4018
|
ref: scrollRef,
|
|
@@ -3823,8 +4023,9 @@ window.__ModuleLoader__.load({
|
|
|
3823
4023
|
children: [
|
|
3824
4024
|
(0, react_jsx_runtime.jsx)("div", {
|
|
3825
4025
|
"aria-hidden": true,
|
|
3826
|
-
className: InputBar_module_css_default.backdrop,
|
|
4026
|
+
className: clsx(InputBar_module_css_default.backdrop, textareaDisabled && InputBar_module_css_default.backdropDisabled),
|
|
3827
4027
|
"data-input-backdrop": true,
|
|
4028
|
+
"data-disabled": textareaDisabled || void 0,
|
|
3828
4029
|
children: backdrop
|
|
3829
4030
|
}),
|
|
3830
4031
|
(0, react_jsx_runtime.jsx)("textarea", {
|
|
@@ -3966,12 +4167,6 @@ window.__ModuleLoader__.load({
|
|
|
3966
4167
|
})
|
|
3967
4168
|
]
|
|
3968
4169
|
}),
|
|
3969
|
-
preview !== null && (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_attachment.ImageLightbox, {
|
|
3970
|
-
src: preview.previewUrl,
|
|
3971
|
-
alt: preview.file.name || t("image.original"),
|
|
3972
|
-
labels: lightboxLabels(t),
|
|
3973
|
-
onClose: closePreview
|
|
3974
|
-
}),
|
|
3975
4170
|
footer
|
|
3976
4171
|
]
|
|
3977
4172
|
});
|
|
@@ -3988,12 +4183,12 @@ window.__ModuleLoader__.load({
|
|
|
3988
4183
|
document.head.appendChild(tag);
|
|
3989
4184
|
}
|
|
3990
4185
|
var EnterBehaviorRow_module_css_default = {
|
|
4186
|
+
"chevron": "IJntMa_chevron",
|
|
4187
|
+
"desc": "IJntMa_desc",
|
|
3991
4188
|
"row": "IJntMa_row",
|
|
3992
|
-
"title": "IJntMa_title",
|
|
3993
4189
|
"rowText": "IJntMa_rowText",
|
|
3994
4190
|
"selector": "IJntMa_selector",
|
|
3995
|
-
"
|
|
3996
|
-
"chevron": "IJntMa_chevron"
|
|
4191
|
+
"title": "IJntMa_title"
|
|
3997
4192
|
};
|
|
3998
4193
|
//#endregion
|
|
3999
4194
|
//#region lib/types/client/settings/EnterBehaviorRow.js
|
|
@@ -4056,7 +4251,7 @@ window.__ModuleLoader__.load({
|
|
|
4056
4251
|
}
|
|
4057
4252
|
//#endregion
|
|
4058
4253
|
//#region \0nomix-css:/home/runner/work/nomix-harness/nomix-harness/packages/client/ui-conversation/src/client/chat/MessageItem.module.css.mjs
|
|
4059
|
-
const css$15 = ".g7eWLW_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.g7eWLW_userStack{flex-direction:column;align-items:flex-end;gap:8px;min-width:0;max-width:min(525px,82%);display:flex}.g7eWLW_bubble{background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);border-radius:22px;padding:10px 16px;font-size:16px;line-height:24px}.g7eWLW_contextRow,.g7eWLW_compactionRow{padding:2px 0}.g7eWLW_compactionButton{width:100%;min-width:0;height:24px;color:inherit;font:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;padding:0;display:flex}.g7eWLW_compactionButton:not(:disabled){cursor:pointer}.g7eWLW_compactionButton:not(:disabled):hover{background:var(--dsw-alias-interactive-bg-hover)}.g7eWLW_compactionLeading{width:16px;height:16px;color:var(--dsw-alias-label-secondary);flex:none;place-items:center;margin-right:6px;display:inline-grid}.g7eWLW_compactionContextIcon,.g7eWLW_compactionDisclosureIcon{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.g7eWLW_compactionDisclosureIcon,.g7eWLW_compactionButton:not(:disabled):hover .g7eWLW_compactionContextIcon,.g7eWLW_compactionButton:not(:disabled):focus-visible .g7eWLW_compactionContextIcon{opacity:0}.g7eWLW_compactionButton:not(:disabled):hover .g7eWLW_compactionDisclosureIcon,.g7eWLW_compactionButton:not(:disabled):focus-visible .g7eWLW_compactionDisclosureIcon{opacity:1}.g7eWLW_compactionTitle{color:var(--dsw-alias-label-primary-dimmed);flex:none;font-size:14px;line-height:24px}.g7eWLW_compactionSep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.g7eWLW_compactionSummary{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:14px;line-height:24px;overflow:hidden}.g7eWLW_compactionBody{color:var(--dsw-alias-label-tertiary);padding:4px 0 4px 22px;font-size:14px;line-height:24px}.g7eWLW_retryRow{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:20px}.g7eWLW_retrySummary{width:fit-content;color:inherit;cursor:pointer;user-select:none;border-radius:3px;align-items:center;gap:7px;padding:2px 0;list-style:none;display:inline-flex}.g7eWLW_retrySummary::-webkit-details-marker{display:none}.g7eWLW_retrySummary:after{content:\"\";opacity:.8;border-bottom:1.5px solid;border-right:1.5px solid;width:6px;height:6px;transition:transform .12s;transform:rotate(-45deg)}.g7eWLW_retrySummary:hover{color:var(--dsw-alias-label-secondary)}.g7eWLW_retrySummary:focus-visible{outline:1.5px solid var(--dsw-alias-button-info-fill);outline-offset:2px}.g7eWLW_retryText{color:inherit}.g7eWLW_retryRow[data-active] .g7eWLW_retryText{background:linear-gradient(90deg, var(--dsw-alias-label-tertiary) 0%, var(--dsw-alias-label-tertiary) 40%, var(--dsw-alias-label-secondary) 50%, var(--dsw-alias-label-tertiary) 60%, var(--dsw-alias-label-tertiary) 100%);color:#0000;background-position:100%;background-size:200% 100%;background-clip:text;animation:1.6s ease-in-out infinite g7eWLW_retry-shimmer}.g7eWLW_retryRow[open] .g7eWLW_retrySummary:after{transform:rotate(45deg)}.g7eWLW_retryDetails{overflow-wrap:anywhere;gap:2px;margin-top:3px;padding-left:14px;font-size:12px;line-height:18px;display:grid}.g7eWLW_retryDetailLabel{color:var(--dsw-alias-label-secondary)}.g7eWLW_turnErrorRow{grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:8px;padding:2px 0;font-size:13px;line-height:20px;display:grid}.g7eWLW_turnErrorDot{margin-top:5px}.g7eWLW_turnErrorCopy{overflow-wrap:anywhere;min-width:0}.g7eWLW_turnErrorTitle{color:var(--dsw-alias-state-error-primary);margin-right:6px;font-weight:600}.g7eWLW_turnErrorMessage{color:var(--dsw-alias-label-secondary)}.g7eWLW_turnErrorCode{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-markdown-code-block-small)}.g7eWLW_maxTokensTitle{color:var(--dsw-alias-state-warn-primary);margin-right:6px;font-weight:600}@keyframes g7eWLW_retry-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.g7eWLW_retryRow[data-active] .g7eWLW_retryText{color:inherit;background:0 0;animation:none}}.g7eWLW_refChip{color:var(--dsw-alias-
|
|
4254
|
+
const css$15 = ".g7eWLW_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.g7eWLW_userStack{flex-direction:column;align-items:flex-end;gap:8px;min-width:0;max-width:min(525px,82%);display:flex}.g7eWLW_bubble{background:var(--dsw-specific-bubble);max-width:100%;color:var(--dsw-alias-label-primary);border-radius:22px;padding:10px 16px;font-size:16px;line-height:24px}.g7eWLW_referenceSummary{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.g7eWLW_contextRow,.g7eWLW_compactionRow{padding:2px 0}.g7eWLW_compactionButton{width:100%;min-width:0;height:24px;color:inherit;font:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;padding:0;display:flex}.g7eWLW_compactionButton:not(:disabled){cursor:pointer}.g7eWLW_compactionButton:not(:disabled):hover{background:var(--dsw-alias-interactive-bg-hover)}.g7eWLW_compactionLeading{width:16px;height:16px;color:var(--dsw-alias-label-secondary);flex:none;place-items:center;margin-right:6px;display:inline-grid}.g7eWLW_compactionContextIcon,.g7eWLW_compactionDisclosureIcon{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.g7eWLW_compactionDisclosureIcon,.g7eWLW_compactionButton:not(:disabled):hover .g7eWLW_compactionContextIcon,.g7eWLW_compactionButton:not(:disabled):focus-visible .g7eWLW_compactionContextIcon{opacity:0}.g7eWLW_compactionButton:not(:disabled):hover .g7eWLW_compactionDisclosureIcon,.g7eWLW_compactionButton:not(:disabled):focus-visible .g7eWLW_compactionDisclosureIcon{opacity:1}.g7eWLW_compactionTitle{color:var(--dsw-alias-label-primary-dimmed);flex:none;font-size:14px;line-height:24px}.g7eWLW_compactionSep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.g7eWLW_compactionSummary{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:14px;line-height:24px;overflow:hidden}.g7eWLW_compactionBody{color:var(--dsw-alias-label-tertiary);padding:4px 0 4px 22px;font-size:14px;line-height:24px}.g7eWLW_retryRow{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:20px}.g7eWLW_retrySummary{width:fit-content;color:inherit;cursor:pointer;user-select:none;border-radius:3px;align-items:center;gap:7px;padding:2px 0;list-style:none;display:inline-flex}.g7eWLW_retrySummary::-webkit-details-marker{display:none}.g7eWLW_retrySummary:after{content:\"\";opacity:.8;border-bottom:1.5px solid;border-right:1.5px solid;width:6px;height:6px;transition:transform .12s;transform:rotate(-45deg)}.g7eWLW_retrySummary:hover{color:var(--dsw-alias-label-secondary)}.g7eWLW_retrySummary:focus-visible{outline:1.5px solid var(--dsw-alias-button-info-fill);outline-offset:2px}.g7eWLW_retryText{color:inherit}.g7eWLW_retryRow[data-active] .g7eWLW_retryText{background:linear-gradient(90deg, var(--dsw-alias-label-tertiary) 0%, var(--dsw-alias-label-tertiary) 40%, var(--dsw-alias-label-secondary) 50%, var(--dsw-alias-label-tertiary) 60%, var(--dsw-alias-label-tertiary) 100%);color:#0000;background-position:100%;background-size:200% 100%;background-clip:text;animation:1.6s ease-in-out infinite g7eWLW_retry-shimmer}.g7eWLW_retryRow[open] .g7eWLW_retrySummary:after{transform:rotate(45deg)}.g7eWLW_retryDetails{overflow-wrap:anywhere;gap:2px;margin-top:3px;padding-left:14px;font-size:12px;line-height:18px;display:grid}.g7eWLW_retryDetailLabel{color:var(--dsw-alias-label-secondary)}.g7eWLW_turnErrorRow{grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:8px;padding:2px 0;font-size:13px;line-height:20px;display:grid}.g7eWLW_turnErrorDot{margin-top:5px}.g7eWLW_turnErrorCopy{overflow-wrap:anywhere;min-width:0}.g7eWLW_turnErrorTitle{color:var(--dsw-alias-state-error-primary);margin-right:6px;font-weight:600}.g7eWLW_turnErrorMessage{color:var(--dsw-alias-label-secondary)}.g7eWLW_turnErrorCode{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-markdown-code-block-small)}.g7eWLW_maxTokensTitle{color:var(--dsw-alias-state-warn-primary);margin-right:6px;font-weight:600}@keyframes g7eWLW_retry-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.g7eWLW_retryRow[data-active] .g7eWLW_retryText{color:inherit;background:0 0;animation:none}}.g7eWLW_refChip{color:var(--dsw-alias-state-business-primary);white-space:nowrap;vertical-align:baseline;align-items:center;gap:4px;margin:0 2px;font-weight:500;display:inline-flex}.g7eWLW_refIcon{flex:none}";
|
|
4060
4255
|
const tagId$15 = "@nomix-ai/nomix-client-ui-conversation/MessageItem.module.css";
|
|
4061
4256
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$15) + "]") === null) {
|
|
4062
4257
|
const tag = document.createElement("style");
|
|
@@ -4066,33 +4261,35 @@ window.__ModuleLoader__.load({
|
|
|
4066
4261
|
document.head.appendChild(tag);
|
|
4067
4262
|
}
|
|
4068
4263
|
var MessageItem_module_css_default = {
|
|
4069
|
-
"userRow": "g7eWLW_userRow",
|
|
4070
|
-
"compactionButton": "g7eWLW_compactionButton",
|
|
4071
|
-
"compactionLeading": "g7eWLW_compactionLeading",
|
|
4072
|
-
"compactionSummary": "g7eWLW_compactionSummary",
|
|
4073
4264
|
"bubble": "g7eWLW_bubble",
|
|
4074
4265
|
"compactionBody": "g7eWLW_compactionBody",
|
|
4075
|
-
"
|
|
4076
|
-
"
|
|
4077
|
-
"userStack": "g7eWLW_userStack",
|
|
4078
|
-
"retryRow": "g7eWLW_retryRow",
|
|
4266
|
+
"compactionButton": "g7eWLW_compactionButton",
|
|
4267
|
+
"compactionContextIcon": "g7eWLW_compactionContextIcon",
|
|
4079
4268
|
"compactionDisclosureIcon": "g7eWLW_compactionDisclosureIcon",
|
|
4080
|
-
"
|
|
4269
|
+
"compactionLeading": "g7eWLW_compactionLeading",
|
|
4270
|
+
"compactionRow": "g7eWLW_compactionRow",
|
|
4271
|
+
"compactionSep": "g7eWLW_compactionSep",
|
|
4272
|
+
"compactionSummary": "g7eWLW_compactionSummary",
|
|
4081
4273
|
"compactionTitle": "g7eWLW_compactionTitle",
|
|
4274
|
+
"contextRow": "g7eWLW_contextRow",
|
|
4275
|
+
"maxTokensTitle": "g7eWLW_maxTokensTitle",
|
|
4276
|
+
"refChip": "g7eWLW_refChip",
|
|
4277
|
+
"refIcon": "g7eWLW_refIcon",
|
|
4278
|
+
"referenceSummary": "g7eWLW_referenceSummary",
|
|
4279
|
+
"retry-shimmer": "g7eWLW_retry-shimmer",
|
|
4082
4280
|
"retryDetailLabel": "g7eWLW_retryDetailLabel",
|
|
4083
|
-
"
|
|
4281
|
+
"retryDetails": "g7eWLW_retryDetails",
|
|
4282
|
+
"retryRow": "g7eWLW_retryRow",
|
|
4283
|
+
"retrySummary": "g7eWLW_retrySummary",
|
|
4284
|
+
"retryText": "g7eWLW_retryText",
|
|
4285
|
+
"turnErrorCode": "g7eWLW_turnErrorCode",
|
|
4286
|
+
"turnErrorCopy": "g7eWLW_turnErrorCopy",
|
|
4084
4287
|
"turnErrorDot": "g7eWLW_turnErrorDot",
|
|
4085
4288
|
"turnErrorMessage": "g7eWLW_turnErrorMessage",
|
|
4086
|
-
"maxTokensTitle": "g7eWLW_maxTokensTitle",
|
|
4087
|
-
"refChip": "g7eWLW_refChip",
|
|
4088
|
-
"turnErrorTitle": "g7eWLW_turnErrorTitle",
|
|
4089
|
-
"compactionRow": "g7eWLW_compactionRow",
|
|
4090
|
-
"compactionSep": "g7eWLW_compactionSep",
|
|
4091
|
-
"contextRow": "g7eWLW_contextRow",
|
|
4092
4289
|
"turnErrorRow": "g7eWLW_turnErrorRow",
|
|
4093
|
-
"
|
|
4094
|
-
"
|
|
4095
|
-
"
|
|
4290
|
+
"turnErrorTitle": "g7eWLW_turnErrorTitle",
|
|
4291
|
+
"userRow": "g7eWLW_userRow",
|
|
4292
|
+
"userStack": "g7eWLW_userStack"
|
|
4096
4293
|
};
|
|
4097
4294
|
//#endregion
|
|
4098
4295
|
//#region lib/types/client/chat/CompactionItem.js
|
|
@@ -4164,29 +4361,29 @@ window.__ModuleLoader__.load({
|
|
|
4164
4361
|
document.head.appendChild(tag);
|
|
4165
4362
|
}
|
|
4166
4363
|
var ContextBody_module_css_default = {
|
|
4167
|
-
"
|
|
4168
|
-
"relaySender": "M0vZua_relaySender",
|
|
4169
|
-
"recalls": "M0vZua_recalls",
|
|
4170
|
-
"recallCounts": "M0vZua_recallCounts",
|
|
4171
|
-
"fieldKey": "M0vZua_fieldKey",
|
|
4172
|
-
"text": "M0vZua_text",
|
|
4173
|
-
"files": "M0vZua_files",
|
|
4174
|
-
"field": "M0vZua_field",
|
|
4175
|
-
"entryDescription": "M0vZua_entryDescription",
|
|
4176
|
-
"fileAction": "M0vZua_fileAction",
|
|
4364
|
+
"catalogNotice": "M0vZua_catalogNotice",
|
|
4177
4365
|
"entries": "M0vZua_entries",
|
|
4366
|
+
"entry": "M0vZua_entry",
|
|
4367
|
+
"entryDescription": "M0vZua_entryDescription",
|
|
4178
4368
|
"entryName": "M0vZua_entryName",
|
|
4179
|
-
"
|
|
4369
|
+
"field": "M0vZua_field",
|
|
4370
|
+
"fieldKey": "M0vZua_fieldKey",
|
|
4371
|
+
"fieldValue": "M0vZua_fieldValue",
|
|
4180
4372
|
"fields": "M0vZua_fields",
|
|
4373
|
+
"file": "M0vZua_file",
|
|
4374
|
+
"fileAction": "M0vZua_fileAction",
|
|
4181
4375
|
"filePath": "M0vZua_filePath",
|
|
4182
|
-
"
|
|
4376
|
+
"files": "M0vZua_files",
|
|
4377
|
+
"recall": "M0vZua_recall",
|
|
4378
|
+
"recallCounts": "M0vZua_recallCounts",
|
|
4379
|
+
"recallLabel": "M0vZua_recallLabel",
|
|
4380
|
+
"recalls": "M0vZua_recalls",
|
|
4381
|
+
"relaySender": "M0vZua_relaySender",
|
|
4183
4382
|
"section": "M0vZua_section",
|
|
4184
|
-
"catalogNotice": "M0vZua_catalogNotice",
|
|
4185
|
-
"fieldValue": "M0vZua_fieldValue",
|
|
4186
|
-
"entry": "M0vZua_entry",
|
|
4187
4383
|
"sectionName": "M0vZua_sectionName",
|
|
4188
|
-
"
|
|
4189
|
-
"
|
|
4384
|
+
"sectionText": "M0vZua_sectionText",
|
|
4385
|
+
"sections": "M0vZua_sections",
|
|
4386
|
+
"text": "M0vZua_text"
|
|
4190
4387
|
};
|
|
4191
4388
|
//#endregion
|
|
4192
4389
|
//#region lib/types/client/chat/ContextBody.js
|
|
@@ -4722,11 +4919,11 @@ window.__ModuleLoader__.load({
|
|
|
4722
4919
|
}
|
|
4723
4920
|
var ContextInjectionRow_module_css_default = {
|
|
4724
4921
|
"body": "_6Aj7nG_body",
|
|
4922
|
+
"chevron": "_6Aj7nG_chevron",
|
|
4923
|
+
"root": "_6Aj7nG_root",
|
|
4725
4924
|
"sep": "_6Aj7nG_sep",
|
|
4726
4925
|
"source": "_6Aj7nG_source",
|
|
4727
|
-
"summary": "_6Aj7nG_summary"
|
|
4728
|
-
"chevron": "_6Aj7nG_chevron",
|
|
4729
|
-
"root": "_6Aj7nG_root"
|
|
4926
|
+
"summary": "_6Aj7nG_summary"
|
|
4730
4927
|
};
|
|
4731
4928
|
//#endregion
|
|
4732
4929
|
//#region lib/types/client/chat/ContextInjectionRow.js
|
|
@@ -4750,7 +4947,10 @@ window.__ModuleLoader__.load({
|
|
|
4750
4947
|
});
|
|
4751
4948
|
return (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.DisclosureRow, {
|
|
4752
4949
|
className: ContextInjectionRow_module_css_default.root,
|
|
4753
|
-
icon: (0, react_jsx_runtime.jsx)(
|
|
4950
|
+
icon: provenance.role === "recall" ? (0, react_jsx_runtime.jsx)("span", {
|
|
4951
|
+
"data-context-recall-icon": true,
|
|
4952
|
+
children: (0, react_jsx_runtime.jsx)(ReferenceIcon, { kind: "session" })
|
|
4953
|
+
}) : (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.IconBrowseOutline16, { size: 14 }),
|
|
4754
4954
|
chevronClassName: ContextInjectionRow_module_css_default.chevron,
|
|
4755
4955
|
title: t(provenance.role === "recall" ? "message.contextRecall" : "message.contextInjection"),
|
|
4756
4956
|
collapsedContent: provenance.label === null ? void 0 : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
@@ -4821,12 +5021,12 @@ window.__ModuleLoader__.load({
|
|
|
4821
5021
|
document.head.appendChild(tag);
|
|
4822
5022
|
}
|
|
4823
5023
|
var MessageIconActions_module_css_default = {
|
|
4824
|
-
"visuallyHidden": "-pWzZa_visuallyHidden",
|
|
4825
|
-
"actions": "-pWzZa_actions",
|
|
4826
|
-
"timeStart": "-pWzZa_timeStart",
|
|
4827
5024
|
"action": "-pWzZa_action",
|
|
5025
|
+
"actions": "-pWzZa_actions",
|
|
5026
|
+
"runTimeDot": "-pWzZa_runTimeDot",
|
|
4828
5027
|
"timeEnd": "-pWzZa_timeEnd",
|
|
4829
|
-
"
|
|
5028
|
+
"timeStart": "-pWzZa_timeStart",
|
|
5029
|
+
"visuallyHidden": "-pWzZa_visuallyHidden"
|
|
4830
5030
|
};
|
|
4831
5031
|
//#endregion
|
|
4832
5032
|
//#region lib/types/client/chat/MessageIconActions.js
|
|
@@ -5074,28 +5274,62 @@ window.__ModuleLoader__.load({
|
|
|
5074
5274
|
* scan as the composer, minus the lexicon: sent tokens were validated at
|
|
5075
5275
|
* compose time, so shape alone decorates).
|
|
5076
5276
|
*/
|
|
5077
|
-
function projectUserText(text) {
|
|
5078
|
-
const
|
|
5079
|
-
const
|
|
5080
|
-
|
|
5277
|
+
function projectUserText(text, sessionLabels) {
|
|
5278
|
+
const ranges = [];
|
|
5279
|
+
for (const rawLabel of [...new Set(sessionLabels)].sort((a, b) => b.length - a.length)) {
|
|
5280
|
+
const label = `@${rawLabel}`;
|
|
5281
|
+
let start = text.indexOf(label);
|
|
5282
|
+
while (start >= 0) {
|
|
5283
|
+
ranges.push({
|
|
5284
|
+
start,
|
|
5285
|
+
end: start + label.length,
|
|
5286
|
+
label,
|
|
5287
|
+
kind: "session"
|
|
5288
|
+
});
|
|
5289
|
+
start = text.indexOf(label, start + label.length);
|
|
5290
|
+
}
|
|
5291
|
+
}
|
|
5292
|
+
const re = /(^|\s)(\/[\w-]+|@"[^"\n]+"|@[^\s]+)/gu;
|
|
5081
5293
|
let m;
|
|
5082
5294
|
while ((m = re.exec(text)) !== null) {
|
|
5083
5295
|
const tokenStart = m.index + (m[1]?.length ?? 0);
|
|
5084
|
-
const
|
|
5296
|
+
const rawLabel = m[2] ?? "";
|
|
5297
|
+
const label = rawLabel.startsWith("@\"") ? rawLabel : rawLabel.replace(/[.,;:!?,。;:!?]+$/gu, "");
|
|
5298
|
+
if (label.length <= 1) continue;
|
|
5299
|
+
ranges.push({
|
|
5300
|
+
start: tokenStart,
|
|
5301
|
+
end: tokenStart + label.length,
|
|
5302
|
+
label,
|
|
5303
|
+
kind: "plain"
|
|
5304
|
+
});
|
|
5305
|
+
}
|
|
5306
|
+
ranges.sort((a, b) => a.start - b.start || (a.kind === b.kind ? b.end - a.end : a.kind === "session" ? -1 : 1));
|
|
5307
|
+
const parts = [];
|
|
5308
|
+
let cursor = 0;
|
|
5309
|
+
for (const range of ranges) {
|
|
5310
|
+
if (range.start < cursor) continue;
|
|
5311
|
+
const { start: tokenStart, end, label, kind } = range;
|
|
5085
5312
|
if (tokenStart > cursor) parts.push((0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.MessageText, { text: text.slice(cursor, tokenStart) }, cursor));
|
|
5086
|
-
|
|
5313
|
+
const referenceKind = kind === "session" ? "session" : label.startsWith("@") ? label.endsWith("/") ? "folder" : "file" : void 0;
|
|
5314
|
+
const displayLabel = referenceKind === void 0 ? label : referenceKind === "session" ? label.slice(1) : label.slice(1).replace(/^"|"$/gu, "").split(/[\\/]/u).filter(Boolean).at(-1) ?? label.slice(1);
|
|
5315
|
+
parts.push((0, react_jsx_runtime.jsxs)("span", {
|
|
5087
5316
|
className: MessageItem_module_css_default.refChip,
|
|
5088
|
-
"data-ref-chip":
|
|
5089
|
-
|
|
5317
|
+
"data-ref-chip": referenceKind ?? "skill",
|
|
5318
|
+
title: label,
|
|
5319
|
+
children: [referenceKind !== void 0 && (0, react_jsx_runtime.jsx)(ReferenceIcon, {
|
|
5320
|
+
kind: referenceKind,
|
|
5321
|
+
size: 16,
|
|
5322
|
+
className: MessageItem_module_css_default.refIcon
|
|
5323
|
+
}), displayLabel]
|
|
5090
5324
|
}, tokenStart));
|
|
5091
|
-
cursor =
|
|
5325
|
+
cursor = end;
|
|
5092
5326
|
}
|
|
5093
5327
|
if (parts.length === 0) return (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.MessageText, { text });
|
|
5094
5328
|
if (cursor < text.length) parts.push((0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.MessageText, { text: text.slice(cursor) }, cursor));
|
|
5095
5329
|
return (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: parts });
|
|
5096
5330
|
}
|
|
5097
5331
|
/** Right-aligned bubble shared by user and steering rows. */
|
|
5098
|
-
function UserStyleBubble({ content,
|
|
5332
|
+
function UserStyleBubble({ content, renderMessageImages, actions, pending = false, referenceLabels = [], t }) {
|
|
5099
5333
|
const { text, images, rest } = contentParts(content);
|
|
5100
5334
|
const truncated = (total) => t("json.truncated", { total });
|
|
5101
5335
|
const showBubble = text !== "" || rest.length > 0;
|
|
@@ -5105,19 +5339,24 @@ window.__ModuleLoader__.load({
|
|
|
5105
5339
|
"data-time-hover-root": true,
|
|
5106
5340
|
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
5107
5341
|
className: MessageItem_module_css_default.userStack,
|
|
5108
|
-
children: [
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
|
|
5342
|
+
children: [
|
|
5343
|
+
renderMessageImages({
|
|
5344
|
+
images,
|
|
5345
|
+
align: "end"
|
|
5346
|
+
}),
|
|
5347
|
+
showBubble && (0, react_jsx_runtime.jsxs)("div", {
|
|
5348
|
+
className: MessageItem_module_css_default.bubble,
|
|
5349
|
+
children: [projectUserText(text, referenceLabels), rest.map((block, i) => (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.JsonBlock, {
|
|
5350
|
+
label: t("message.extraBlock"),
|
|
5351
|
+
payload: block,
|
|
5352
|
+
truncatedLabel: truncated
|
|
5353
|
+
}, i))]
|
|
5354
|
+
}),
|
|
5355
|
+
referenceLabels.length > 0 && (0, react_jsx_runtime.jsx)("div", {
|
|
5356
|
+
className: MessageItem_module_css_default.referenceSummary,
|
|
5357
|
+
children: t("message.referenceSummary", { labels: referenceLabels.join(t("message.referenceSeparator")) })
|
|
5358
|
+
})
|
|
5359
|
+
]
|
|
5121
5360
|
}), actions?.(text)]
|
|
5122
5361
|
});
|
|
5123
5362
|
}
|
|
@@ -5127,10 +5366,10 @@ window.__ModuleLoader__.load({
|
|
|
5127
5366
|
* @param props - Pending message content and conversation translator.
|
|
5128
5367
|
* @returns the pending steering bubble.
|
|
5129
5368
|
*/
|
|
5130
|
-
function PendingSteeringBubble({ content,
|
|
5369
|
+
function PendingSteeringBubble({ content, renderMessageImages, t }) {
|
|
5131
5370
|
return (0, react_jsx_runtime.jsx)(UserStyleBubble, {
|
|
5132
5371
|
content,
|
|
5133
|
-
|
|
5372
|
+
renderMessageImages,
|
|
5134
5373
|
pending: true,
|
|
5135
5374
|
t,
|
|
5136
5375
|
actions: (text) => (0, react_jsx_runtime.jsx)(MessageIconActions, {
|
|
@@ -5142,11 +5381,12 @@ window.__ModuleLoader__.load({
|
|
|
5142
5381
|
});
|
|
5143
5382
|
}
|
|
5144
5383
|
/** User and admitted-steering keyed Chat renderer. */
|
|
5145
|
-
const UserMessageNodeView = (0, react.memo)(function UserMessageNodeView({ node,
|
|
5384
|
+
const UserMessageNodeView = (0, react.memo)(function UserMessageNodeView({ node, renderMessageImages, t }) {
|
|
5146
5385
|
const data = node.data;
|
|
5147
5386
|
return (0, react_jsx_runtime.jsx)(UserStyleBubble, {
|
|
5148
5387
|
content: data.content,
|
|
5149
|
-
|
|
5388
|
+
renderMessageImages,
|
|
5389
|
+
...data.referenceLabels === void 0 ? {} : { referenceLabels: data.referenceLabels },
|
|
5150
5390
|
t,
|
|
5151
5391
|
actions: (text) => (0, react_jsx_runtime.jsx)(MessageIconActions, {
|
|
5152
5392
|
text,
|
|
@@ -5209,7 +5449,7 @@ window.__ModuleLoader__.load({
|
|
|
5209
5449
|
});
|
|
5210
5450
|
//#endregion
|
|
5211
5451
|
//#region \0nomix-css:/home/runner/work/nomix-harness/nomix-harness/packages/client/ui-conversation/src/client/chat/ChatView.module.css.mjs
|
|
5212
|
-
const css$11 = "._51QFdG_root{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}._51QFdG_scroll{min-height:0;padding:16px calc(var(--nomix-composer-side-clearance) + 16px);flex:auto;overflow-y:auto}[data-conversation-scroll] ._51QFdG_root{flex:none;height:auto;min-height:auto}[data-conversation-scroll] ._51QFdG_scroll{flex:none;min-height:auto;overflow:visible}._51QFdG_column{max-width:var(--nomix-chat-content-width);flex-direction:column;gap:16px;width:100%;margin:0 auto;display:flex}._51QFdG_flowItem{min-width:0}._51QFdG_flowItem:empty{display:none}._51QFdG_callRow{border-radius:6px}._51QFdG_turnStatus{height:26px;font:var(--dsw-font-s-strong-14);white-space:nowrap;background:linear-gradient(90deg, var(--dsw-static-deepseek-500) 0%, var(--dsw-static-deepseek-500) 40%, var(--dsw-static-deepseek-200) 50%, var(--dsw-static-deepseek-500) 60%, var(--dsw-static-deepseek-500) 100%);color:#0000;-webkit-text-fill-color:transparent;background-position:100% 0;background-size:250% 100%;-webkit-background-clip:text;background-clip:text;flex:none;align-self:flex-start;align-items:center;animation:1.8s linear infinite _51QFdG_nomix-turn-status-shimmer;display:inline-flex}._51QFdG_turnStatusClock{font:var(--dsw-font-xs-13);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-caption);-webkit-text-fill-color:var(--dsw-alias-label-caption);margin-left:8px;font-weight:400}@keyframes _51QFdG_nomix-turn-status-shimmer{to{background-position:0 0}}@media (prefers-reduced-motion:reduce){._51QFdG_turnStatus{background-position:0 0;background-size:100% 100%;animation:none}}._51QFdG_hint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._51QFdG_openError{color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px}._51QFdG_older{justify-content:center;display:flex}._51QFdG_older button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover-solid);cursor:pointer;border:none;border-radius:14px;padding:4px 12px;font-size:12px}._51QFdG_older button:disabled{cursor:default;opacity:.6}._51QFdG_toBottomSlot{z-index:8;height:0;padding-right:max(0px, calc((100% - var(--nomix-chat-content-width)) / 2));pointer-events:none;justify-content:flex-end;display:flex;position:sticky;bottom:16px}[data-conversation-scroll] ._51QFdG_toBottomSlot{bottom:calc(var(--nomix-composer-height,152px) + 16px)}._51QFdG_toBottom{border:1px solid var(--dsw-alias-border-l2);width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;pointer-events:auto;border-radius:100px;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex}._51QFdG_toBottom:hover{background:var(--dsw-alias-button-floating-hover)}";
|
|
5452
|
+
const css$11 = "._51QFdG_root{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}._51QFdG_scroll{min-height:0;padding:16px calc(var(--nomix-composer-side-clearance) + 16px);flex:auto;overflow-y:auto;container-type:inline-size}[data-conversation-scroll] ._51QFdG_root{flex:none;height:auto;min-height:auto}[data-conversation-scroll] ._51QFdG_scroll{flex:none;min-height:auto;overflow:visible}._51QFdG_column{max-width:var(--nomix-chat-content-width);flex-direction:column;gap:16px;width:100%;margin:0 auto;display:flex}._51QFdG_flowItem{min-width:0}._51QFdG_flowItem:empty{display:none}._51QFdG_callRow{border-radius:6px}._51QFdG_turnStatus{height:26px;font:var(--dsw-font-s-strong-14);white-space:nowrap;background:linear-gradient(90deg, var(--dsw-static-deepseek-500) 0%, var(--dsw-static-deepseek-500) 40%, var(--dsw-static-deepseek-200) 50%, var(--dsw-static-deepseek-500) 60%, var(--dsw-static-deepseek-500) 100%);color:#0000;-webkit-text-fill-color:transparent;background-position:100% 0;background-size:250% 100%;-webkit-background-clip:text;background-clip:text;flex:none;align-self:flex-start;align-items:center;animation:1.8s linear infinite _51QFdG_nomix-turn-status-shimmer;display:inline-flex}._51QFdG_turnStatusClock{font:var(--dsw-font-xs-13);font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-caption);-webkit-text-fill-color:var(--dsw-alias-label-caption);margin-left:8px;font-weight:400}@keyframes _51QFdG_nomix-turn-status-shimmer{to{background-position:0 0}}@media (prefers-reduced-motion:reduce){._51QFdG_turnStatus{background-position:0 0;background-size:100% 100%;animation:none}}._51QFdG_hint{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._51QFdG_openError{color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px}._51QFdG_older{justify-content:center;display:flex}._51QFdG_older button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover-solid);cursor:pointer;border:none;border-radius:14px;padding:4px 12px;font-size:12px}._51QFdG_older button:disabled{cursor:default;opacity:.6}._51QFdG_toBottomSlot{z-index:8;height:0;padding-right:max(0px, calc((100% - var(--nomix-chat-content-width)) / 2));pointer-events:none;justify-content:flex-end;display:flex;position:sticky;bottom:16px}[data-conversation-scroll] ._51QFdG_toBottomSlot{bottom:calc(var(--nomix-composer-height,152px) + 16px)}._51QFdG_toBottom{border:1px solid var(--dsw-alias-border-l2);width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;pointer-events:auto;border-radius:100px;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex}._51QFdG_toBottom:hover{background:var(--dsw-alias-button-floating-hover)}._51QFdG_modalAction{min-width:72px}";
|
|
5213
5453
|
const tagId$11 = "@nomix-ai/nomix-client-ui-conversation/ChatView.module.css";
|
|
5214
5454
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$11) + "]") === null) {
|
|
5215
5455
|
const tag = document.createElement("style");
|
|
@@ -5219,24 +5459,25 @@ window.__ModuleLoader__.load({
|
|
|
5219
5459
|
document.head.appendChild(tag);
|
|
5220
5460
|
}
|
|
5221
5461
|
var ChatView_module_css_default = {
|
|
5222
|
-
"root": "_51QFdG_root",
|
|
5223
|
-
"flowItem": "_51QFdG_flowItem",
|
|
5224
|
-
"column": "_51QFdG_column",
|
|
5225
|
-
"scroll": "_51QFdG_scroll",
|
|
5226
5462
|
"callRow": "_51QFdG_callRow",
|
|
5227
|
-
"
|
|
5228
|
-
"
|
|
5463
|
+
"column": "_51QFdG_column",
|
|
5464
|
+
"flowItem": "_51QFdG_flowItem",
|
|
5229
5465
|
"hint": "_51QFdG_hint",
|
|
5230
|
-
"
|
|
5466
|
+
"modalAction": "_51QFdG_modalAction",
|
|
5467
|
+
"nomix-turn-status-shimmer": "_51QFdG_nomix-turn-status-shimmer",
|
|
5231
5468
|
"older": "_51QFdG_older",
|
|
5469
|
+
"openError": "_51QFdG_openError",
|
|
5470
|
+
"root": "_51QFdG_root",
|
|
5471
|
+
"scroll": "_51QFdG_scroll",
|
|
5232
5472
|
"toBottom": "_51QFdG_toBottom",
|
|
5233
|
-
"
|
|
5234
|
-
"
|
|
5473
|
+
"toBottomSlot": "_51QFdG_toBottomSlot",
|
|
5474
|
+
"turnStatus": "_51QFdG_turnStatus",
|
|
5475
|
+
"turnStatusClock": "_51QFdG_turnStatusClock"
|
|
5235
5476
|
};
|
|
5236
5477
|
//#endregion
|
|
5237
5478
|
//#region lib/types/client/chat/ChatNodeSeat.js
|
|
5238
5479
|
/** Subscribe and dispatch one stable Context key without observing sibling Nodes. */
|
|
5239
|
-
const ChatNodeSeat = (0, react.memo)(function ChatNodeSeat({ nodeKey, selectedCallId, cwd, openFile, inspectCall, forkAt,
|
|
5480
|
+
const ChatNodeSeat = (0, react.memo)(function ChatNodeSeat({ nodeKey, selectedCallId, cwd, openFile, inspectCall, forkAt, renderMessageImages, fileMentions, useSession, renderSlot, t }) {
|
|
5240
5481
|
const node = useSession((snapshot) => snapshot.chat.nodes.get(nodeKey));
|
|
5241
5482
|
const routedNode = node;
|
|
5242
5483
|
const owner = (0, react.useMemo)(() => node === void 0 ? null : {
|
|
@@ -5245,7 +5486,7 @@ window.__ModuleLoader__.load({
|
|
|
5245
5486
|
openFile,
|
|
5246
5487
|
inspectCall,
|
|
5247
5488
|
forkAt,
|
|
5248
|
-
|
|
5489
|
+
renderMessageImages,
|
|
5249
5490
|
fileMentions
|
|
5250
5491
|
}, [
|
|
5251
5492
|
node,
|
|
@@ -5254,7 +5495,7 @@ window.__ModuleLoader__.load({
|
|
|
5254
5495
|
openFile,
|
|
5255
5496
|
inspectCall,
|
|
5256
5497
|
forkAt,
|
|
5257
|
-
|
|
5498
|
+
renderMessageImages,
|
|
5258
5499
|
fileMentions
|
|
5259
5500
|
]);
|
|
5260
5501
|
if (routedNode === void 0 || owner === null) return null;
|
|
@@ -5332,6 +5573,15 @@ window.__ModuleLoader__.load({
|
|
|
5332
5573
|
scrollTop: scrollport.scrollTop
|
|
5333
5574
|
};
|
|
5334
5575
|
}
|
|
5576
|
+
/** Host/OS refusal text for the file-open dialog; empty throws keep a locale fallback. */
|
|
5577
|
+
function openFailureMessage(error, fallback) {
|
|
5578
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
5579
|
+
return message === "" ? fallback : message;
|
|
5580
|
+
}
|
|
5581
|
+
/** ProducedFiles opens the session workspace as `.`. */
|
|
5582
|
+
function isFolderOpenPath(path) {
|
|
5583
|
+
return path === ".";
|
|
5584
|
+
}
|
|
5335
5585
|
function runningTurnStartTime(timeline) {
|
|
5336
5586
|
let latest = null;
|
|
5337
5587
|
for (const turn of timeline.turns.values()) if (turn.status === "open" && turn.start !== void 0) latest = turn.start.time;
|
|
@@ -5380,7 +5630,35 @@ window.__ModuleLoader__.load({
|
|
|
5380
5630
|
const hasMore = useSession((s) => s.hasMore);
|
|
5381
5631
|
const loadingOlder = useSession((s) => s.loadingOlder);
|
|
5382
5632
|
const selectedCallId = useStore((s) => s.selection?.callId);
|
|
5633
|
+
const [fileOpenError, setFileOpenError] = (0, react.useState)(null);
|
|
5634
|
+
const [fileOpenBusy, setFileOpenBusy] = (0, react.useState)(false);
|
|
5635
|
+
const fileOpenRequest = (0, react.useRef)(0);
|
|
5636
|
+
const requestOpenFile = (0, react.useCallback)((path) => {
|
|
5637
|
+
const id = ++fileOpenRequest.current;
|
|
5638
|
+
setFileOpenBusy(true);
|
|
5639
|
+
openFile(path).then(() => {
|
|
5640
|
+
if (id !== fileOpenRequest.current) return;
|
|
5641
|
+
setFileOpenError(null);
|
|
5642
|
+
setFileOpenBusy(false);
|
|
5643
|
+
}, (error) => {
|
|
5644
|
+
if (id !== fileOpenRequest.current) return;
|
|
5645
|
+
setFileOpenError({
|
|
5646
|
+
path,
|
|
5647
|
+
message: openFailureMessage(error, t(isFolderOpenPath(path) ? "fileOpen.folderUnknown" : "fileOpen.unknown"))
|
|
5648
|
+
});
|
|
5649
|
+
setFileOpenBusy(false);
|
|
5650
|
+
});
|
|
5651
|
+
}, [openFile, t]);
|
|
5652
|
+
const closeFileOpenError = (0, react.useCallback)(() => {
|
|
5653
|
+
fileOpenRequest.current += 1;
|
|
5654
|
+
setFileOpenError(null);
|
|
5655
|
+
setFileOpenBusy(false);
|
|
5656
|
+
}, []);
|
|
5383
5657
|
const pendingSteering = (0, react.useMemo)(() => inbox.filter((item) => item.placement === "steering"), [inbox]);
|
|
5658
|
+
const renderMessageImages = (0, react.useCallback)((owner) => renderSlot("conversation.message.images", {
|
|
5659
|
+
...owner,
|
|
5660
|
+
loadImage
|
|
5661
|
+
}), [loadImage, renderSlot]);
|
|
5384
5662
|
const runningTurnStart = (0, react.useMemo)(() => runningTurnStartTime(timeline), [timeline]);
|
|
5385
5663
|
const listRef = (0, react.useRef)(null);
|
|
5386
5664
|
const columnRef = (0, react.useRef)(null);
|
|
@@ -5540,9 +5818,9 @@ window.__ModuleLoader__.load({
|
|
|
5540
5818
|
}
|
|
5541
5819
|
loadOlder();
|
|
5542
5820
|
};
|
|
5543
|
-
return (0, react_jsx_runtime.
|
|
5821
|
+
return (0, react_jsx_runtime.jsxs)("div", {
|
|
5544
5822
|
className: ChatView_module_css_default.root,
|
|
5545
|
-
children: (0, react_jsx_runtime.jsxs)("div", {
|
|
5823
|
+
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
5546
5824
|
ref: listRef,
|
|
5547
5825
|
className: ChatView_module_css_default.scroll,
|
|
5548
5826
|
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -5575,10 +5853,10 @@ window.__ModuleLoader__.load({
|
|
|
5575
5853
|
useSession,
|
|
5576
5854
|
selectedCallId,
|
|
5577
5855
|
cwd,
|
|
5578
|
-
openFile,
|
|
5856
|
+
openFile: requestOpenFile,
|
|
5579
5857
|
inspectCall,
|
|
5580
5858
|
forkAt,
|
|
5581
|
-
|
|
5859
|
+
renderMessageImages,
|
|
5582
5860
|
fileMentions,
|
|
5583
5861
|
renderSlot,
|
|
5584
5862
|
t
|
|
@@ -5589,7 +5867,7 @@ window.__ModuleLoader__.load({
|
|
|
5589
5867
|
}),
|
|
5590
5868
|
pendingSteering.map((item) => (0, react_jsx_runtime.jsx)(PendingSteeringBubble, {
|
|
5591
5869
|
content: item.content,
|
|
5592
|
-
|
|
5870
|
+
renderMessageImages,
|
|
5593
5871
|
t
|
|
5594
5872
|
}, item.id))
|
|
5595
5873
|
]
|
|
@@ -5607,7 +5885,38 @@ window.__ModuleLoader__.load({
|
|
|
5607
5885
|
children: (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.IconChevronDownOutline14, {})
|
|
5608
5886
|
})
|
|
5609
5887
|
})]
|
|
5610
|
-
})
|
|
5888
|
+
}), fileOpenError !== null && (0, react_jsx_runtime.jsx)(FileOpenErrorDialog, {
|
|
5889
|
+
path: fileOpenError.path,
|
|
5890
|
+
message: fileOpenError.message,
|
|
5891
|
+
busy: fileOpenBusy,
|
|
5892
|
+
onClose: closeFileOpenError,
|
|
5893
|
+
onRetry: () => {
|
|
5894
|
+
requestOpenFile(fileOpenError.path);
|
|
5895
|
+
},
|
|
5896
|
+
t
|
|
5897
|
+
})]
|
|
5898
|
+
});
|
|
5899
|
+
}
|
|
5900
|
+
/** In-page Host open-path refusal: the wire reason plus a retry of the same path. */
|
|
5901
|
+
function FileOpenErrorDialog({ path, message, busy, onClose, onRetry, t }) {
|
|
5902
|
+
return (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.Modal, {
|
|
5903
|
+
open: true,
|
|
5904
|
+
onClose,
|
|
5905
|
+
closeLabel: t("close"),
|
|
5906
|
+
title: t(isFolderOpenPath(path) ? "fileOpen.folderTitle" : "fileOpen.title"),
|
|
5907
|
+
description: message,
|
|
5908
|
+
footer: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.Button, {
|
|
5909
|
+
variant: "outline",
|
|
5910
|
+
className: ChatView_module_css_default.modalAction,
|
|
5911
|
+
onClick: onClose,
|
|
5912
|
+
children: t("cancel")
|
|
5913
|
+
}), (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.Button, {
|
|
5914
|
+
variant: "primary",
|
|
5915
|
+
className: ChatView_module_css_default.modalAction,
|
|
5916
|
+
disabled: busy,
|
|
5917
|
+
onClick: onRetry,
|
|
5918
|
+
children: t("retry")
|
|
5919
|
+
})] })
|
|
5611
5920
|
});
|
|
5612
5921
|
}
|
|
5613
5922
|
//#endregion
|
|
@@ -5708,15 +6017,15 @@ window.__ModuleLoader__.load({
|
|
|
5708
6017
|
document.head.appendChild(tag);
|
|
5709
6018
|
}
|
|
5710
6019
|
var ApprovalPanel_module_css_default = {
|
|
5711
|
-
"dot": "DitUla_dot",
|
|
5712
|
-
"command": "DitUla_command",
|
|
5713
|
-
"root": "DitUla_root",
|
|
5714
6020
|
"actionRow": "DitUla_actionRow",
|
|
5715
6021
|
"body": "DitUla_body",
|
|
5716
|
-
"strip": "DitUla_strip",
|
|
5717
6022
|
"card": "DitUla_card",
|
|
6023
|
+
"command": "DitUla_command",
|
|
6024
|
+
"dot": "DitUla_dot",
|
|
6025
|
+
"headline": "DitUla_headline",
|
|
5718
6026
|
"reject": "DitUla_reject",
|
|
5719
|
-
"
|
|
6027
|
+
"root": "DitUla_root",
|
|
6028
|
+
"strip": "DitUla_strip"
|
|
5720
6029
|
};
|
|
5721
6030
|
//#endregion
|
|
5722
6031
|
//#region lib/types/client/skeleton/ApprovalPanel.js
|
|
@@ -5851,6 +6160,7 @@ window.__ModuleLoader__.load({
|
|
|
5851
6160
|
"image.fileTooLarge": "单张图片不能超过 {size}",
|
|
5852
6161
|
"image.totalTooLarge": "图片总大小超过 {size},请移除部分图片",
|
|
5853
6162
|
"image.tooManyPixels": "图片分辨率过大,请压缩后重试",
|
|
6163
|
+
"image.dimensionTooLarge": "图片宽高不能超过 {size}px,请缩小后重试",
|
|
5854
6164
|
"image.modelUnsupported": "当前模型不支持图片,请切换支持图片的模型",
|
|
5855
6165
|
"image.subagentUnsupported": "子智能体会话暂不支持图片",
|
|
5856
6166
|
"image.sendFailed": "图片发送失败({reason}),请重新添加图片后再试",
|
|
@@ -5896,9 +6206,15 @@ window.__ModuleLoader__.load({
|
|
|
5896
6206
|
"chat.loadError": "历史加载失败:{message}({code})",
|
|
5897
6207
|
"chat.loadOlder": "加载更早",
|
|
5898
6208
|
"chat.toBottom": "回到底部",
|
|
6209
|
+
"fileOpen.title": "无法打开文件",
|
|
6210
|
+
"fileOpen.unknown": "无法打开此文件",
|
|
6211
|
+
"fileOpen.folderTitle": "无法打开文件夹",
|
|
6212
|
+
"fileOpen.folderUnknown": "无法打开此文件夹",
|
|
5899
6213
|
"message.extraBlock": "附加内容块",
|
|
5900
6214
|
"message.contextInjection": "上下文注入",
|
|
5901
6215
|
"message.contextRecall": "跨会话召回",
|
|
6216
|
+
"message.referenceSummary": "引用会话 · {labels}",
|
|
6217
|
+
"message.referenceSeparator": "、",
|
|
5902
6218
|
"message.context.instructions.loaded": "已载入",
|
|
5903
6219
|
"message.context.instructions.added": "已新增",
|
|
5904
6220
|
"message.context.instructions.updated": "已更新",
|
|
@@ -5938,6 +6254,7 @@ window.__ModuleLoader__.load({
|
|
|
5938
6254
|
"command.failed": "命令失败",
|
|
5939
6255
|
"command.done": "已完成",
|
|
5940
6256
|
"command.title": "命令",
|
|
6257
|
+
"command.imagesUnsupported": "/{command} 不接受图片附件,请先移除图片",
|
|
5941
6258
|
"approval.waiting": "等待审批",
|
|
5942
6259
|
"approval.detail.aria": "审批详情",
|
|
5943
6260
|
"approval.escalation": "工具 {toolName} 请求越权执行",
|
|
@@ -6016,6 +6333,7 @@ window.__ModuleLoader__.load({
|
|
|
6016
6333
|
"image.fileTooLarge": "Each image must be smaller than {size}",
|
|
6017
6334
|
"image.totalTooLarge": "Images exceed {size} in total; remove some and try again",
|
|
6018
6335
|
"image.tooManyPixels": "Image resolution is too high; compress it and try again",
|
|
6336
|
+
"image.dimensionTooLarge": "Image sides must be at most {size}px; downscale it and try again",
|
|
6019
6337
|
"image.modelUnsupported": "The current model does not support images; switch to a model that does",
|
|
6020
6338
|
"image.subagentUnsupported": "Subagent sessions do not support images yet",
|
|
6021
6339
|
"image.sendFailed": "Sending images failed ({reason}); re-add them and try again",
|
|
@@ -6061,9 +6379,15 @@ window.__ModuleLoader__.load({
|
|
|
6061
6379
|
"chat.loadError": "Failed to load history: {message} ({code})",
|
|
6062
6380
|
"chat.loadOlder": "Load earlier",
|
|
6063
6381
|
"chat.toBottom": "Back to bottom",
|
|
6382
|
+
"fileOpen.title": "Couldn’t open file",
|
|
6383
|
+
"fileOpen.unknown": "Couldn’t open this file",
|
|
6384
|
+
"fileOpen.folderTitle": "Couldn’t open folder",
|
|
6385
|
+
"fileOpen.folderUnknown": "Couldn’t open this folder",
|
|
6064
6386
|
"message.extraBlock": "Extra content block",
|
|
6065
6387
|
"message.contextInjection": "Context injection",
|
|
6066
6388
|
"message.contextRecall": "Session recall",
|
|
6389
|
+
"message.referenceSummary": "Referenced session · {labels}",
|
|
6390
|
+
"message.referenceSeparator": ", ",
|
|
6067
6391
|
"message.context.instructions.loaded": "loaded",
|
|
6068
6392
|
"message.context.instructions.added": "added",
|
|
6069
6393
|
"message.context.instructions.updated": "updated",
|
|
@@ -6103,6 +6427,7 @@ window.__ModuleLoader__.load({
|
|
|
6103
6427
|
"command.failed": "Command failed",
|
|
6104
6428
|
"command.done": "Completed",
|
|
6105
6429
|
"command.title": "Command",
|
|
6430
|
+
"command.imagesUnsupported": "/{command} does not accept image attachments; remove them first",
|
|
6106
6431
|
"approval.waiting": "Waiting for approval",
|
|
6107
6432
|
"approval.detail.aria": "Approval details",
|
|
6108
6433
|
"approval.escalation": "Tool {toolName} requests privileged execution",
|
|
@@ -6155,21 +6480,21 @@ window.__ModuleLoader__.load({
|
|
|
6155
6480
|
document.head.appendChild(tag);
|
|
6156
6481
|
}
|
|
6157
6482
|
var TodoPanel_module_css_default = {
|
|
6158
|
-
"root": "XR6t8a_root",
|
|
6159
6483
|
"body": "XR6t8a_body",
|
|
6484
|
+
"chevron": "XR6t8a_chevron",
|
|
6485
|
+
"content": "XR6t8a_content",
|
|
6486
|
+
"glyph": "XR6t8a_glyph",
|
|
6487
|
+
"glyphCompleted": "XR6t8a_glyphCompleted",
|
|
6160
6488
|
"glyphPending": "XR6t8a_glyphPending",
|
|
6489
|
+
"glyphProgress": "XR6t8a_glyphProgress",
|
|
6161
6490
|
"header": "XR6t8a_header",
|
|
6491
|
+
"item": "XR6t8a_item",
|
|
6492
|
+
"lead": "XR6t8a_lead",
|
|
6162
6493
|
"list": "XR6t8a_list",
|
|
6163
|
-
"glyph": "XR6t8a_glyph",
|
|
6164
|
-
"chevron": "XR6t8a_chevron",
|
|
6165
|
-
"glyphCompleted": "XR6t8a_glyphCompleted",
|
|
6166
|
-
"content": "XR6t8a_content",
|
|
6167
|
-
"todo-progress-spin": "XR6t8a_todo-progress-spin",
|
|
6168
6494
|
"progress": "XR6t8a_progress",
|
|
6495
|
+
"root": "XR6t8a_root",
|
|
6169
6496
|
"title": "XR6t8a_title",
|
|
6170
|
-
"
|
|
6171
|
-
"item": "XR6t8a_item",
|
|
6172
|
-
"lead": "XR6t8a_lead"
|
|
6497
|
+
"todo-progress-spin": "XR6t8a_todo-progress-spin"
|
|
6173
6498
|
};
|
|
6174
6499
|
//#endregion
|
|
6175
6500
|
//#region lib/types/client/skeleton/TodoPanel.js
|
|
@@ -6362,18 +6687,18 @@ window.__ModuleLoader__.load({
|
|
|
6362
6687
|
document.head.appendChild(tag);
|
|
6363
6688
|
}
|
|
6364
6689
|
var QueueDock_module_css_default = {
|
|
6365
|
-
"
|
|
6366
|
-
"chevron": "i41fhG_chevron",
|
|
6367
|
-
"list": "i41fhG_list",
|
|
6690
|
+
"action": "i41fhG_action",
|
|
6368
6691
|
"actions": "i41fhG_actions",
|
|
6692
|
+
"chevron": "i41fhG_chevron",
|
|
6369
6693
|
"count": "i41fhG_count",
|
|
6370
|
-
"
|
|
6694
|
+
"dock": "i41fhG_dock",
|
|
6695
|
+
"editor": "i41fhG_editor",
|
|
6371
6696
|
"header": "i41fhG_header",
|
|
6372
|
-
"
|
|
6373
|
-
"
|
|
6697
|
+
"lead": "i41fhG_lead",
|
|
6698
|
+
"list": "i41fhG_list",
|
|
6374
6699
|
"panel": "i41fhG_panel",
|
|
6375
6700
|
"preview": "i41fhG_preview",
|
|
6376
|
-
"
|
|
6701
|
+
"row": "i41fhG_row"
|
|
6377
6702
|
};
|
|
6378
6703
|
//#endregion
|
|
6379
6704
|
//#region lib/types/client/queue/QueueDock.js
|
|
@@ -6621,7 +6946,7 @@ window.__ModuleLoader__.load({
|
|
|
6621
6946
|
};
|
|
6622
6947
|
//#endregion
|
|
6623
6948
|
//#region \0nomix-css:/home/runner/work/nomix-harness/nomix-harness/packages/client/ui-conversation/src/client/skeleton/HeroShell.module.css.mjs
|
|
6624
|
-
const css$7 = ".xoAT5G_root{justify-content:center;align-items:center;min-width:0;height:100%;padding:0 24px;display:flex}.xoAT5G_stack{width:100%;max-width:var(--nomix-composer-card-max-width);flex-direction:column;align-items:stretch;gap:12px;display:flex;overflow:visible}.xoAT5G_headline{color:var(--dsw-alias-label-primary);grid-template-columns:34px auto auto;justify-content:center;align-items:center;column-gap:10px;font-size:26px;font-weight:500;line-height:32px;display:grid}.xoAT5G_headlineText{grid-area:1/2}.xoAT5G_previewBadge{border:1px solid var(--dsw-alias-interactive-bg-hover);background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-label-primary-bluish);font-family:var(--ds-font-family-code);white-space:nowrap;border-radius:24px;grid-area:1/3;align-self:start;margin-top:2px;margin-left:-3px;padding:1px 7px 0;font-size:12px;font-weight:500;line-height:18px}.
|
|
6949
|
+
const css$7 = ".xoAT5G_root{justify-content:center;align-items:center;min-width:0;height:100%;padding:0 24px;display:flex}.xoAT5G_stack{width:100%;max-width:var(--nomix-composer-card-max-width);flex-direction:column;align-items:stretch;gap:12px;display:flex;overflow:visible}.xoAT5G_headline{color:var(--dsw-alias-label-primary);grid-template-columns:34px auto auto;justify-content:center;align-items:center;column-gap:10px;font-size:26px;font-weight:500;line-height:32px;display:grid}.xoAT5G_headlineText{grid-area:1/2}.xoAT5G_previewBadge{border:1px solid var(--dsw-alias-interactive-bg-hover);background:var(--dsw-alias-state-business-tertiary);color:var(--dsw-alias-label-primary-bluish);font-family:var(--ds-font-family-code);white-space:nowrap;border-radius:24px;grid-area:1/3;align-self:start;margin-top:2px;margin-left:-3px;padding:1px 7px 0;font-size:12px;font-weight:500;line-height:18px}.xoAT5G_fishHitbox{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.xoAT5G_fish{color:var(--dsw-alias-label-primary);transform-origin:50% 60%}@keyframes xoAT5G_hero-fish-swim{0%,to{transform:translate(0)rotate(0)}35%{transform:translate(-1px,-1px)rotate(-5deg)}70%{transform:translate(1px)rotate(3deg)}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.xoAT5G_fishHitbox:hover .xoAT5G_fish{animation:xoAT5G_hero-fish-swim var(--ds-transition-duration-slow) var(--ds-ease-in-out)}}.xoAT5G_body{flex-direction:column;gap:12px;min-width:0;display:flex;position:relative;overflow:visible}.xoAT5G_body>*{z-index:1;position:relative}.xoAT5G_body>.xoAT5G_workspaceRow{z-index:10;align-items:center;min-width:0;padding-left:8px;display:flex}.xoAT5G_workspace{max-width:min(100%,360px);min-height:28px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:16px;align-items:center;gap:4px;padding:0 8px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.xoAT5G_workspace:not(:disabled):hover,.xoAT5G_workspace[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover)}.xoAT5G_workspace:disabled{cursor:default}.xoAT5G_folder{color:var(--dsw-alias-label-primary);flex:none}.xoAT5G_workspaceLabel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.xoAT5G_chevron{color:var(--dsw-alias-label-caption);flex:none}.xoAT5G_modalInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;height:44px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:22px;outline:none;padding:7px 14px;font-size:14px;font-weight:400;line-height:22px}.xoAT5G_modalInput::placeholder{color:var(--dsw-alias-label-caption)}.xoAT5G_modalInput:disabled{color:var(--dsw-alias-label-dimmed)}.xoAT5G_modalAction{min-width:72px}.xoAT5G_modalError{color:var(--dsw-alias-state-error-primary);margin-top:8px;font-size:12px;line-height:18px}";
|
|
6625
6950
|
const tagId$7 = "@nomix-ai/nomix-client-ui-conversation/HeroShell.module.css";
|
|
6626
6951
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
6627
6952
|
const tag = document.createElement("style");
|
|
@@ -6631,23 +6956,23 @@ window.__ModuleLoader__.load({
|
|
|
6631
6956
|
document.head.appendChild(tag);
|
|
6632
6957
|
}
|
|
6633
6958
|
var HeroShell_module_css_default = {
|
|
6634
|
-
"
|
|
6635
|
-
"previewBadge": "xoAT5G_previewBadge",
|
|
6636
|
-
"logo": "xoAT5G_logo",
|
|
6637
|
-
"hero-logo-lift": "xoAT5G_hero-logo-lift",
|
|
6638
|
-
"workspaceRow": "xoAT5G_workspaceRow",
|
|
6639
|
-
"workspace": "xoAT5G_workspace",
|
|
6640
|
-
"workspaceLabel": "xoAT5G_workspaceLabel",
|
|
6641
|
-
"modalInput": "xoAT5G_modalInput",
|
|
6959
|
+
"body": "xoAT5G_body",
|
|
6642
6960
|
"chevron": "xoAT5G_chevron",
|
|
6961
|
+
"fish": "xoAT5G_fish",
|
|
6962
|
+
"fishHitbox": "xoAT5G_fishHitbox",
|
|
6643
6963
|
"folder": "xoAT5G_folder",
|
|
6964
|
+
"headline": "xoAT5G_headline",
|
|
6965
|
+
"headlineText": "xoAT5G_headlineText",
|
|
6966
|
+
"hero-fish-swim": "xoAT5G_hero-fish-swim",
|
|
6967
|
+
"modalAction": "xoAT5G_modalAction",
|
|
6644
6968
|
"modalError": "xoAT5G_modalError",
|
|
6969
|
+
"modalInput": "xoAT5G_modalInput",
|
|
6970
|
+
"previewBadge": "xoAT5G_previewBadge",
|
|
6645
6971
|
"root": "xoAT5G_root",
|
|
6646
|
-
"logoHitbox": "xoAT5G_logoHitbox",
|
|
6647
6972
|
"stack": "xoAT5G_stack",
|
|
6648
|
-
"
|
|
6649
|
-
"
|
|
6650
|
-
"
|
|
6973
|
+
"workspace": "xoAT5G_workspace",
|
|
6974
|
+
"workspaceLabel": "xoAT5G_workspaceLabel",
|
|
6975
|
+
"workspaceRow": "xoAT5G_workspaceRow"
|
|
6651
6976
|
};
|
|
6652
6977
|
//#endregion
|
|
6653
6978
|
//#region lib/types/client/skeleton/EmptyHero.js
|
|
@@ -6757,7 +7082,7 @@ window.__ModuleLoader__.load({
|
|
|
6757
7082
|
* @param props - see {@link HeroShellProps}.
|
|
6758
7083
|
* @returns the centered hero element tree.
|
|
6759
7084
|
*/
|
|
6760
|
-
function HeroShell({ t, children }) {
|
|
7085
|
+
function HeroShell({ t, renderSlot, children }) {
|
|
6761
7086
|
return (0, react_jsx_runtime.jsxs)("div", {
|
|
6762
7087
|
className: HeroShell_module_css_default.root,
|
|
6763
7088
|
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -6766,11 +7091,14 @@ window.__ModuleLoader__.load({
|
|
|
6766
7091
|
className: HeroShell_module_css_default.headline,
|
|
6767
7092
|
children: [
|
|
6768
7093
|
(0, react_jsx_runtime.jsx)("span", {
|
|
6769
|
-
className: HeroShell_module_css_default.
|
|
6770
|
-
children: (
|
|
7094
|
+
className: HeroShell_module_css_default.fishHitbox,
|
|
7095
|
+
children: renderSlot("conversation.hero.brand.mark", {
|
|
6771
7096
|
size: 34,
|
|
6772
|
-
className: HeroShell_module_css_default.
|
|
6773
|
-
})
|
|
7097
|
+
className: HeroShell_module_css_default.fish
|
|
7098
|
+
}, { fallback: (0, react_jsx_runtime.jsx)(_nomix_ai_nomix_client_ui_primitives.NomixLogo, {
|
|
7099
|
+
size: 34,
|
|
7100
|
+
className: HeroShell_module_css_default.fish
|
|
7101
|
+
}) })
|
|
6774
7102
|
}),
|
|
6775
7103
|
(0, react_jsx_runtime.jsx)("span", {
|
|
6776
7104
|
className: HeroShell_module_css_default.headlineText,
|
|
@@ -6787,7 +7115,7 @@ window.__ModuleLoader__.load({
|
|
|
6787
7115
|
}
|
|
6788
7116
|
//#endregion
|
|
6789
7117
|
//#region \0nomix-css:/home/runner/work/nomix-harness/nomix-harness/packages/client/ui-conversation/src/client/skeleton/ConversationRoot.module.css.mjs
|
|
6790
|
-
const css$6 = ".rwy4Oa_root{background:var(--dsw-alias-bg-base);--nomix-chat-content-width:748px;--nomix-composer-card-max-width:calc(var(--nomix-chat-content-width) + 32px);--nomix-composer-side-clearance:16px;--nomix-composer-dock-inset:8px;flex-direction:column;min-width:0;height:100%;display:flex}.rwy4Oa_header{border-bottom:1px solid #0000;flex:none;padding:12px 28px 0 20px;position:relative}.rwy4Oa_header:after{content:\"\";z-index:0;background:var(--dsw-alias-border-l2);pointer-events:none;height:1px;position:absolute;bottom:1px;left:0;right:0}.rwy4Oa_headerHidden{display:none}.rwy4Oa_titleRow{align-items:center;gap:0;min-height:32px;display:flex}.rwy4Oa_titleCluster{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.rwy4Oa_crumbs{white-space:nowrap;align-items:center;gap:4px;min-width:0;display:flex;overflow:hidden}.rwy4Oa_crumbSeg{align-items:center;gap:4px;min-width:0;display:inline-flex}.rwy4Oa_crumbSep{color:var(--dsw-alias-label-caption);font-size:14px;line-height:20px}.rwy4Oa_crumb{max-width:220px;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:12px;padding:4px 8px;font-size:14px;line-height:20px;overflow:hidden}.rwy4Oa_crumb:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.rwy4Oa_crumbCurrent{color:var(--dsw-alias-label-primary);cursor:default;font-weight:500}.rwy4Oa_headerActions{flex:none;align-items:center;gap:8px;display:flex}.rwy4Oa_headerUtilities{flex:none;align-items:center;gap:8px;margin-left:20px;display:flex}.rwy4Oa_headerUtilities:empty{display:none}.rwy4Oa_tabs{z-index:1;gap:36px;margin-top:4px;padding-left:8px;display:flex;position:relative}.rwy4Oa_tab{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:0 0 11px;font-size:13px;font-weight:500;line-height:16px;position:relative}.rwy4Oa_tab:after{content:\"\";background:0 0;border-radius:2px;height:2px;position:absolute;bottom:1px;left:0;right:0}.rwy4Oa_tabActive{color:var(--dsw-alias-state-business-primary)}.rwy4Oa_tabActive:after{background:var(--dsw-alias-state-business-primary)}.rwy4Oa_viewArea{flex-direction:column;flex:1;min-height:0;display:flex}.rwy4Oa_composerStack{--nomix-composer-stack-gap:6px;gap:var(--nomix-composer-stack-gap);flex-direction:column;display:flex}.rwy4Oa_composerSeat{--nomix-composer-text-max-height:336px;flex-direction:column;flex:none;display:flex}.rwy4Oa_root[data-phase=active]{overflow:hidden}.rwy4Oa_root[data-phase=active] .rwy4Oa_header{flex:none}.rwy4Oa_scrollBody{scrollbar-gutter:stable;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.rwy4Oa_root[data-phase=active] .rwy4Oa_viewArea{flex:1 0 auto;min-height:auto}.rwy4Oa_root[data-phase=active] .rwy4Oa_composerSeat{z-index:7;background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-base) 0%, transparent) 0px, var(--dsw-alias-bg-base) 36px);position:sticky;bottom:0}.rwy4Oa_scrollBody:has([data-conversation-composer-overlay]){scrollbar-gutter:auto;position:relative;overflow:hidden auto}.rwy4Oa_scrollBody:has([data-conversation-composer-overlay])>[data-slot=conversation\\.session]>.rwy4Oa_viewArea{flex:1 1 0;min-height:0;overflow:hidden}.rwy4Oa_scrollBody:has([data-conversation-composer-overlay])>.rwy4Oa_composerSeat{right:var(--nomix-scrollbar-width);position:absolute;bottom:0;left:0}.rwy4Oa_composerHero{width:min(calc(var(--nomix-composer-card-max-width) + 2 * var(--nomix-composer-side-clearance)), 100%);z-index:1;align-self:center;gap:8px;padding-bottom:32px;position:relative}.rwy4Oa_heroGlow{z-index:-1;aspect-ratio:1051/468;pointer-events:none;width:135.438%;position:absolute;bottom:92px;left:50%;transform:translate(-50%,50%)}.rwy4Oa_heroWorkspaceRow{align-items:center;gap:2px;min-width:0;margin-top:4px;padding-left:20px;display:flex}.rwy4Oa_root[data-phase=hero] .rwy4Oa_scrollBody{justify-content:center;overflow-y:auto}.rwy4Oa_root[data-phase=settling] .rwy4Oa_composerSeat{visibility:hidden}";
|
|
7118
|
+
const css$6 = ".rwy4Oa_root{background:var(--dsw-alias-bg-base);--nomix-chat-content-width:748px;--nomix-composer-card-max-width:calc(var(--nomix-chat-content-width) + 32px);--nomix-composer-side-clearance:16px;--nomix-composer-dock-inset:8px;flex-direction:column;min-width:0;height:100%;display:flex}.rwy4Oa_header{border-bottom:1px solid #0000;flex:none;padding:12px 28px 0 20px;position:relative}.rwy4Oa_header:after{content:\"\";z-index:0;background:var(--dsw-alias-border-l2);pointer-events:none;height:1px;position:absolute;bottom:1px;left:0;right:0}.rwy4Oa_headerHidden{display:none}.rwy4Oa_titleRow{align-items:center;gap:0;min-height:32px;display:flex}.rwy4Oa_titleCluster{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.rwy4Oa_crumbs{white-space:nowrap;align-items:center;gap:4px;min-width:0;display:flex;overflow:hidden}.rwy4Oa_crumbSeg{align-items:center;gap:4px;min-width:0;display:inline-flex}.rwy4Oa_crumbSep{color:var(--dsw-alias-label-caption);font-size:14px;line-height:20px}.rwy4Oa_crumb{max-width:220px;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:12px;padding:4px 8px;font-size:14px;line-height:20px;overflow:hidden}.rwy4Oa_crumbSubagent{font-size:12px;line-height:18px}.rwy4Oa_crumb:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.rwy4Oa_crumbCurrent{color:var(--dsw-alias-label-primary);cursor:default;font-weight:500}.rwy4Oa_headerActions{flex:none;align-items:center;gap:8px;display:flex}.rwy4Oa_headerUtilities{flex:none;align-items:center;gap:8px;margin-left:20px;display:flex}.rwy4Oa_headerUtilities:empty{display:none}.rwy4Oa_tabs{z-index:1;gap:36px;margin-top:4px;padding-left:8px;display:flex;position:relative}.rwy4Oa_tab{color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;padding:0 0 11px;font-size:13px;font-weight:500;line-height:16px;position:relative}.rwy4Oa_tab:after{content:\"\";background:0 0;border-radius:2px;height:2px;position:absolute;bottom:1px;left:0;right:0}.rwy4Oa_tabActive{color:var(--dsw-alias-state-business-primary)}.rwy4Oa_tabActive:after{background:var(--dsw-alias-state-business-primary)}.rwy4Oa_viewArea{flex-direction:column;flex:1;min-height:0;display:flex}.rwy4Oa_composerStack{--nomix-composer-stack-gap:6px;gap:var(--nomix-composer-stack-gap);flex-direction:column;display:flex}.rwy4Oa_composerSeat{--nomix-composer-text-max-height:336px;flex-direction:column;flex:none;display:flex}.rwy4Oa_root[data-phase=active]{overflow:hidden}.rwy4Oa_root[data-phase=active] .rwy4Oa_header{flex:none}.rwy4Oa_scrollBody{scrollbar-gutter:stable;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.rwy4Oa_root[data-phase=active] .rwy4Oa_viewArea{flex:1 0 auto;min-height:auto}.rwy4Oa_root[data-phase=active] .rwy4Oa_composerSeat{z-index:7;background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-base) 0%, transparent) 0px, var(--dsw-alias-bg-base) 36px);position:sticky;bottom:0}.rwy4Oa_scrollBody:has([data-conversation-composer-overlay]){scrollbar-gutter:auto;position:relative;overflow:hidden auto}.rwy4Oa_scrollBody:has([data-conversation-composer-overlay])>[data-slot=conversation\\.session]>.rwy4Oa_viewArea{flex:1 1 0;min-height:0;overflow:hidden}.rwy4Oa_scrollBody:has([data-conversation-composer-overlay])>.rwy4Oa_composerSeat{right:var(--nomix-scrollbar-width);position:absolute;bottom:0;left:0}.rwy4Oa_composerHero{width:min(calc(var(--nomix-composer-card-max-width) + 2 * var(--nomix-composer-side-clearance)), 100%);z-index:1;align-self:center;gap:8px;padding-bottom:32px;position:relative}.rwy4Oa_heroGlow{z-index:-1;aspect-ratio:1051/468;pointer-events:none;width:135.438%;position:absolute;bottom:92px;left:50%;transform:translate(-50%,50%)}.rwy4Oa_heroWorkspaceRow{align-items:center;gap:2px;min-width:0;margin-top:4px;padding-left:20px;display:flex}.rwy4Oa_root[data-phase=hero] .rwy4Oa_scrollBody{justify-content:center;overflow-y:auto}.rwy4Oa_root[data-phase=settling] .rwy4Oa_composerSeat{visibility:hidden}";
|
|
6791
7119
|
const tagId$6 = "@nomix-ai/nomix-client-ui-conversation/ConversationRoot.module.css";
|
|
6792
7120
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
6793
7121
|
const tag = document.createElement("style");
|
|
@@ -6797,28 +7125,29 @@ window.__ModuleLoader__.load({
|
|
|
6797
7125
|
document.head.appendChild(tag);
|
|
6798
7126
|
}
|
|
6799
7127
|
var ConversationRoot_module_css_default = {
|
|
6800
|
-
"crumbSep": "rwy4Oa_crumbSep",
|
|
6801
|
-
"crumbs": "rwy4Oa_crumbs",
|
|
6802
|
-
"titleCluster": "rwy4Oa_titleCluster",
|
|
6803
|
-
"root": "rwy4Oa_root",
|
|
6804
7128
|
"composerHero": "rwy4Oa_composerHero",
|
|
6805
|
-
"
|
|
6806
|
-
"
|
|
6807
|
-
"tab": "rwy4Oa_tab",
|
|
6808
|
-
"scrollBody": "rwy4Oa_scrollBody",
|
|
6809
|
-
"header": "rwy4Oa_header",
|
|
7129
|
+
"composerSeat": "rwy4Oa_composerSeat",
|
|
7130
|
+
"composerStack": "rwy4Oa_composerStack",
|
|
6810
7131
|
"crumb": "rwy4Oa_crumb",
|
|
6811
|
-
"heroGlow": "rwy4Oa_heroGlow",
|
|
6812
|
-
"tabs": "rwy4Oa_tabs",
|
|
6813
7132
|
"crumbCurrent": "rwy4Oa_crumbCurrent",
|
|
7133
|
+
"crumbSeg": "rwy4Oa_crumbSeg",
|
|
7134
|
+
"crumbSep": "rwy4Oa_crumbSep",
|
|
7135
|
+
"crumbSubagent": "rwy4Oa_crumbSubagent",
|
|
7136
|
+
"crumbs": "rwy4Oa_crumbs",
|
|
7137
|
+
"header": "rwy4Oa_header",
|
|
6814
7138
|
"headerActions": "rwy4Oa_headerActions",
|
|
7139
|
+
"headerHidden": "rwy4Oa_headerHidden",
|
|
6815
7140
|
"headerUtilities": "rwy4Oa_headerUtilities",
|
|
7141
|
+
"heroGlow": "rwy4Oa_heroGlow",
|
|
7142
|
+
"heroWorkspaceRow": "rwy4Oa_heroWorkspaceRow",
|
|
7143
|
+
"root": "rwy4Oa_root",
|
|
7144
|
+
"scrollBody": "rwy4Oa_scrollBody",
|
|
7145
|
+
"tab": "rwy4Oa_tab",
|
|
6816
7146
|
"tabActive": "rwy4Oa_tabActive",
|
|
6817
|
-
"
|
|
6818
|
-
"
|
|
6819
|
-
"crumbSeg": "rwy4Oa_crumbSeg",
|
|
7147
|
+
"tabs": "rwy4Oa_tabs",
|
|
7148
|
+
"titleCluster": "rwy4Oa_titleCluster",
|
|
6820
7149
|
"titleRow": "rwy4Oa_titleRow",
|
|
6821
|
-
"
|
|
7150
|
+
"viewArea": "rwy4Oa_viewArea"
|
|
6822
7151
|
};
|
|
6823
7152
|
//#endregion
|
|
6824
7153
|
//#region lib/types/client/skeleton/ConversationRoot.js
|
|
@@ -6917,7 +7246,10 @@ window.__ModuleLoader__.load({
|
|
|
6917
7246
|
className: clsx(ConversationRoot_module_css_default.composerStack, hero && ConversationRoot_module_css_default.composerHero),
|
|
6918
7247
|
children: [
|
|
6919
7248
|
hero && (0, react_jsx_runtime.jsx)(HeroGlow, { className: ConversationRoot_module_css_default.heroGlow }),
|
|
6920
|
-
hero && (0, react_jsx_runtime.jsx)(HeroShell, {
|
|
7249
|
+
hero && (0, react_jsx_runtime.jsx)(HeroShell, {
|
|
7250
|
+
t,
|
|
7251
|
+
renderSlot
|
|
7252
|
+
}),
|
|
6921
7253
|
hero && heroWorkspaceRow,
|
|
6922
7254
|
zone !== void 0 && renderSlot("conversation.input.dock", zone),
|
|
6923
7255
|
inputBar
|
|
@@ -6967,7 +7299,8 @@ window.__ModuleLoader__.load({
|
|
|
6967
7299
|
if (summary === void 0) break;
|
|
6968
7300
|
chain.unshift({
|
|
6969
7301
|
id: summary.id,
|
|
6970
|
-
displayTitle: summary.displayTitle
|
|
7302
|
+
displayTitle: summary.displayTitle,
|
|
7303
|
+
subagent: summary.origin === "subagent"
|
|
6971
7304
|
});
|
|
6972
7305
|
if (summary.origin !== "subagent") break;
|
|
6973
7306
|
cursor = summary.parentId;
|
|
@@ -7004,20 +7337,29 @@ window.__ModuleLoader__.load({
|
|
|
7004
7337
|
"aria-label": t("session.hierarchy"),
|
|
7005
7338
|
children: [ancestry.map((summary, index) => {
|
|
7006
7339
|
const last = index === ancestry.length - 1;
|
|
7340
|
+
const title = (0, react_jsx_runtime.jsx)("button", {
|
|
7341
|
+
type: "button",
|
|
7342
|
+
className: clsx(ConversationRoot_module_css_default.crumb, summary.subagent && ConversationRoot_module_css_default.crumbSubagent, last && ConversationRoot_module_css_default.crumbCurrent),
|
|
7343
|
+
disabled: last,
|
|
7344
|
+
onClick: () => {
|
|
7345
|
+
open(summary.id);
|
|
7346
|
+
},
|
|
7347
|
+
children: summary.displayTitle
|
|
7348
|
+
});
|
|
7349
|
+
const lineage = last || summary.subagent;
|
|
7350
|
+
const lineageOwner = {
|
|
7351
|
+
lineageSessionId: summary.id,
|
|
7352
|
+
displayTitle: summary.displayTitle,
|
|
7353
|
+
...last ? {} : { openTitle: () => {
|
|
7354
|
+
open(summary.id);
|
|
7355
|
+
} }
|
|
7356
|
+
};
|
|
7007
7357
|
return (0, react_jsx_runtime.jsxs)("span", {
|
|
7008
7358
|
className: ConversationRoot_module_css_default.crumbSeg,
|
|
7009
7359
|
children: [index > 0 && (0, react_jsx_runtime.jsx)("span", {
|
|
7010
7360
|
className: ConversationRoot_module_css_default.crumbSep,
|
|
7011
7361
|
children: "/"
|
|
7012
|
-
}), (0, react_jsx_runtime.
|
|
7013
|
-
type: "button",
|
|
7014
|
-
className: clsx(ConversationRoot_module_css_default.crumb, last && ConversationRoot_module_css_default.crumbCurrent),
|
|
7015
|
-
disabled: last,
|
|
7016
|
-
onClick: () => {
|
|
7017
|
-
open(summary.id);
|
|
7018
|
-
},
|
|
7019
|
-
children: summary.displayTitle
|
|
7020
|
-
})]
|
|
7362
|
+
}), lineage ? summary.subagent ? renderSlot("conversation.session.header.lineage", lineageOwner, { fallback: title }) : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [title, renderSlot("conversation.session.header.lineage", lineageOwner, { fallback: null })] }) : title]
|
|
7021
7363
|
}, summary.id);
|
|
7022
7364
|
}), ancestry.length === 0 && (0, react_jsx_runtime.jsx)("span", {
|
|
7023
7365
|
className: ConversationRoot_module_css_default.crumbCurrent,
|
|
@@ -7094,15 +7436,15 @@ window.__ModuleLoader__.load({
|
|
|
7094
7436
|
document.head.appendChild(tag);
|
|
7095
7437
|
}
|
|
7096
7438
|
var DetailsPanel_module_css_default = {
|
|
7097
|
-
"code": "L4qOyG_code",
|
|
7098
|
-
"section": "L4qOyG_section",
|
|
7099
7439
|
"body": "L4qOyG_body",
|
|
7100
|
-
"title": "L4qOyG_title",
|
|
7101
7440
|
"close": "L4qOyG_close",
|
|
7102
|
-
"
|
|
7441
|
+
"code": "L4qOyG_code",
|
|
7442
|
+
"empty": "L4qOyG_empty",
|
|
7103
7443
|
"header": "L4qOyG_header",
|
|
7104
7444
|
"root": "L4qOyG_root",
|
|
7105
|
-
"
|
|
7445
|
+
"section": "L4qOyG_section",
|
|
7446
|
+
"sectionLabel": "L4qOyG_sectionLabel",
|
|
7447
|
+
"title": "L4qOyG_title"
|
|
7106
7448
|
};
|
|
7107
7449
|
//#endregion
|
|
7108
7450
|
//#region lib/types/client/skeleton/DetailsPanel.js
|
|
@@ -7376,7 +7718,8 @@ window.__ModuleLoader__.load({
|
|
|
7376
7718
|
stepStartTime: context.start?.event.time ?? null,
|
|
7377
7719
|
firstTokenTime: state.firstTokenTime ?? null,
|
|
7378
7720
|
completedTime: event.time
|
|
7379
|
-
}
|
|
7721
|
+
},
|
|
7722
|
+
...event.data.interrupted === true ? { interrupted: true } : {}
|
|
7380
7723
|
};
|
|
7381
7724
|
}
|
|
7382
7725
|
const location = context.start?.location ?? context.matches.at(-1)?.location;
|
|
@@ -7644,6 +7987,76 @@ window.__ModuleLoader__.load({
|
|
|
7644
7987
|
function orderedVisible(nodes) {
|
|
7645
7988
|
return nodes.filter((node) => node.visibility === "visible").sort((left, right) => left.anchorSeq - right.anchorSeq || left.key.localeCompare(right.key));
|
|
7646
7989
|
}
|
|
7990
|
+
function referenceMessageSeq(node) {
|
|
7991
|
+
const candidate = node;
|
|
7992
|
+
return candidate.kind === "user" || candidate.kind === "steering" ? candidate.data.seq : void 0;
|
|
7993
|
+
}
|
|
7994
|
+
function followingRecall(node) {
|
|
7995
|
+
const candidate = node;
|
|
7996
|
+
if (candidate.kind !== "context") return void 0;
|
|
7997
|
+
return {
|
|
7998
|
+
messageSeq: candidate.data.seq - 1,
|
|
7999
|
+
labels: (0, _nomix_ai_nomix_client_runtime_client.sessionRecallLabels)(candidate.data.source)
|
|
8000
|
+
};
|
|
8001
|
+
}
|
|
8002
|
+
function withReferenceLabels(node, labels) {
|
|
8003
|
+
const candidate = node;
|
|
8004
|
+
if (candidate.kind !== "user" && candidate.kind !== "steering") return node;
|
|
8005
|
+
const current = candidate.data.referenceLabels ?? EMPTY_KEYS;
|
|
8006
|
+
const hasLabels = Object.hasOwn(candidate.data, "referenceLabels");
|
|
8007
|
+
if (sameReferences$1(current, labels) && hasLabels === labels.length > 0) return node;
|
|
8008
|
+
const data = { ...candidate.data };
|
|
8009
|
+
if (labels.length === 0) delete data.referenceLabels;
|
|
8010
|
+
else data.referenceLabels = labels;
|
|
8011
|
+
return {
|
|
8012
|
+
...candidate,
|
|
8013
|
+
data
|
|
8014
|
+
};
|
|
8015
|
+
}
|
|
8016
|
+
/** Associates a direct message with the sourced recall event that immediately follows it. */
|
|
8017
|
+
var ReferenceLabelProjector = class {
|
|
8018
|
+
messagesBySeq = /* @__PURE__ */ new Map();
|
|
8019
|
+
labelsByMessageSeq = /* @__PURE__ */ new Map();
|
|
8020
|
+
replace(nodes) {
|
|
8021
|
+
this.messagesBySeq.clear();
|
|
8022
|
+
this.labelsByMessageSeq.clear();
|
|
8023
|
+
for (const node of nodes) {
|
|
8024
|
+
const messageSeq = referenceMessageSeq(node);
|
|
8025
|
+
if (messageSeq !== void 0) this.messagesBySeq.set(messageSeq, node.key);
|
|
8026
|
+
const recall = followingRecall(node);
|
|
8027
|
+
if (recall !== void 0 && recall.labels.length > 0) this.labelsByMessageSeq.set(recall.messageSeq, recall.labels);
|
|
8028
|
+
}
|
|
8029
|
+
return nodes.map((node) => {
|
|
8030
|
+
const messageSeq = referenceMessageSeq(node);
|
|
8031
|
+
return messageSeq === void 0 ? node : withReferenceLabels(node, this.labelsByMessageSeq.get(messageSeq) ?? EMPTY_KEYS);
|
|
8032
|
+
});
|
|
8033
|
+
}
|
|
8034
|
+
apply(upserts, store) {
|
|
8035
|
+
const byKey = new Map(upserts.map((node) => [node.key, node]));
|
|
8036
|
+
const affected = /* @__PURE__ */ new Set();
|
|
8037
|
+
for (const node of upserts) {
|
|
8038
|
+
const messageSeq = referenceMessageSeq(node);
|
|
8039
|
+
if (messageSeq !== void 0) {
|
|
8040
|
+
this.messagesBySeq.set(messageSeq, node.key);
|
|
8041
|
+
affected.add(messageSeq);
|
|
8042
|
+
}
|
|
8043
|
+
const recall = followingRecall(node);
|
|
8044
|
+
if (recall === void 0) continue;
|
|
8045
|
+
const current = this.labelsByMessageSeq.get(recall.messageSeq);
|
|
8046
|
+
if (recall.labels.length === 0) this.labelsByMessageSeq.delete(recall.messageSeq);
|
|
8047
|
+
else this.labelsByMessageSeq.set(recall.messageSeq, current !== void 0 && sameReferences$1(current, recall.labels) ? current : recall.labels);
|
|
8048
|
+
affected.add(recall.messageSeq);
|
|
8049
|
+
}
|
|
8050
|
+
for (const messageSeq of affected) {
|
|
8051
|
+
const key = this.messagesBySeq.get(messageSeq);
|
|
8052
|
+
if (key === void 0) continue;
|
|
8053
|
+
const node = byKey.get(key) ?? store.get(key);
|
|
8054
|
+
if (node === void 0) continue;
|
|
8055
|
+
byKey.set(key, withReferenceLabels(node, this.labelsByMessageSeq.get(messageSeq) ?? EMPTY_KEYS));
|
|
8056
|
+
}
|
|
8057
|
+
return [...byKey.values()];
|
|
8058
|
+
}
|
|
8059
|
+
};
|
|
7647
8060
|
const EMPTY_CONTRIBUTION = {
|
|
7648
8061
|
anchorSeq: 0,
|
|
7649
8062
|
nodes: EMPTY_LIST,
|
|
@@ -7834,6 +8247,7 @@ window.__ModuleLoader__.load({
|
|
|
7834
8247
|
store = new MutableChatNodeStore();
|
|
7835
8248
|
locations = new MutableChatLocationIndex();
|
|
7836
8249
|
legacy = new LegacySliceBuilder();
|
|
8250
|
+
referenceLabels = new ReferenceLabelProjector();
|
|
7837
8251
|
order = EMPTY_KEYS;
|
|
7838
8252
|
empty;
|
|
7839
8253
|
constructor() {
|
|
@@ -7843,28 +8257,30 @@ window.__ModuleLoader__.load({
|
|
|
7843
8257
|
});
|
|
7844
8258
|
}
|
|
7845
8259
|
replace(input) {
|
|
7846
|
-
this.
|
|
7847
|
-
this.
|
|
8260
|
+
const nodes = this.referenceLabels.replace(input.nodes);
|
|
8261
|
+
this.store.replace(nodes);
|
|
8262
|
+
this.order = orderedVisible(nodes).map((node) => node.key);
|
|
7848
8263
|
this.locations.rebuild(this.order, this.store);
|
|
7849
|
-
return this.snapshot(input.timeline, this.legacy.replace(
|
|
8264
|
+
return this.snapshot(input.timeline, this.legacy.replace(nodes, input.timeline));
|
|
7850
8265
|
}
|
|
7851
8266
|
apply(input) {
|
|
8267
|
+
const upserts = this.referenceLabels.apply(input.upserts, this.store);
|
|
7852
8268
|
let structural = false;
|
|
7853
8269
|
const contentOnly = [];
|
|
7854
|
-
for (const node of
|
|
8270
|
+
for (const node of upserts) {
|
|
7855
8271
|
const previous = this.store.get(node.key);
|
|
7856
8272
|
const nodeStructural = previous === void 0 || previous.anchorSeq !== node.anchorSeq || previous.visibility !== node.visibility || locationIdentity(previous.location) !== locationIdentity(node.location);
|
|
7857
8273
|
structural ||= nodeStructural;
|
|
7858
8274
|
if (!nodeStructural) contentOnly.push(node);
|
|
7859
8275
|
}
|
|
7860
|
-
this.store.upsert(
|
|
8276
|
+
this.store.upsert(upserts);
|
|
7861
8277
|
if (structural) {
|
|
7862
8278
|
const next = orderedVisible(this.store.values()).map((node) => node.key);
|
|
7863
8279
|
this.order = sameReferences$1(this.order, next) ? this.order : next;
|
|
7864
8280
|
this.locations.rebuild(this.order, this.store);
|
|
7865
8281
|
}
|
|
7866
8282
|
this.locations.touch(contentOnly);
|
|
7867
|
-
return this.snapshot(input.timeline, this.legacy.apply(
|
|
8283
|
+
return this.snapshot(input.timeline, this.legacy.apply(upserts, input.timeline));
|
|
7868
8284
|
}
|
|
7869
8285
|
snapshot(timeline, legacy = this.legacy.replace(EMPTY_LIST, timeline)) {
|
|
7870
8286
|
return {
|
|
@@ -8581,9 +8997,6 @@ window.__ModuleLoader__.load({
|
|
|
8581
8997
|
if (location?.kind !== "turn" && location?.kind !== "step") return 0;
|
|
8582
8998
|
return location.turn.steps.at(-1)?.step ?? 0;
|
|
8583
8999
|
}
|
|
8584
|
-
function retryTurn(event) {
|
|
8585
|
-
return event.type === "llm/retry" || event.type === "llm/retry-started" ? event.data.turn : void 0;
|
|
8586
|
-
}
|
|
8587
9000
|
function failureFrom(match) {
|
|
8588
9001
|
if (match.event.type !== "turn/end" || match.event.data.reason.kind !== "error") return void 0;
|
|
8589
9002
|
const failure = match.event.data.reason.error;
|
|
@@ -8599,14 +9012,16 @@ window.__ModuleLoader__.load({
|
|
|
8599
9012
|
if (end?.event.type !== "turn/end") return void 0;
|
|
8600
9013
|
const failure = failureFrom(end);
|
|
8601
9014
|
if (failure === void 0) return void 0;
|
|
8602
|
-
const turn = end.event.data.turn;
|
|
8603
9015
|
return {
|
|
8604
|
-
turn,
|
|
8605
|
-
hidden: context.matches.some((match) => retryTurn(match.event) === turn),
|
|
9016
|
+
turn: end.event.data.turn,
|
|
8606
9017
|
failure
|
|
8607
9018
|
};
|
|
8608
9019
|
}
|
|
8609
|
-
/**
|
|
9020
|
+
/**
|
|
9021
|
+
* Terminal turn failure Definition. Retries run inside the failing turn, so the
|
|
9022
|
+
* turn's `llm/retry` history never suppresses this terminal row; the model-retry
|
|
9023
|
+
* node renders that history separately.
|
|
9024
|
+
*/
|
|
8610
9025
|
const turnErrorDefinition = {
|
|
8611
9026
|
kind: "turn-error",
|
|
8612
9027
|
target: "chat",
|
|
@@ -8619,29 +9034,18 @@ window.__ModuleLoader__.load({
|
|
|
8619
9034
|
id: String(event.data.turn),
|
|
8620
9035
|
role: "update"
|
|
8621
9036
|
};
|
|
8622
|
-
|
|
8623
|
-
return turn === void 0 ? null : {
|
|
8624
|
-
id: String(turn),
|
|
8625
|
-
role: "update"
|
|
8626
|
-
};
|
|
9037
|
+
return null;
|
|
8627
9038
|
},
|
|
8628
9039
|
start: (_context, match) => {
|
|
8629
9040
|
if (match.event.type !== "turn/start") throw new Error("turn-error start requires turn/start");
|
|
8630
|
-
return {
|
|
8631
|
-
turn: match.event.data.turn,
|
|
8632
|
-
hidden: false
|
|
8633
|
-
};
|
|
9041
|
+
return { turn: match.event.data.turn };
|
|
8634
9042
|
},
|
|
8635
9043
|
update: (context, match) => {
|
|
8636
9044
|
const failure = failureFrom(match);
|
|
8637
|
-
|
|
9045
|
+
return failure === void 0 ? context.state : {
|
|
8638
9046
|
...context.state,
|
|
8639
9047
|
failure
|
|
8640
9048
|
};
|
|
8641
|
-
return retryTurn(match.event) === context.state.turn ? {
|
|
8642
|
-
...context.state,
|
|
8643
|
-
hidden: true
|
|
8644
|
-
} : context.state;
|
|
8645
9049
|
},
|
|
8646
9050
|
buildViewNode: (context) => {
|
|
8647
9051
|
const state = context.state ?? fallbackState(context);
|
|
@@ -8656,9 +9060,7 @@ window.__ModuleLoader__.load({
|
|
|
8656
9060
|
message: failure.message,
|
|
8657
9061
|
...failure.code === void 0 ? {} : { code: failure.code }
|
|
8658
9062
|
};
|
|
8659
|
-
|
|
8660
|
-
const current = context.current.get("chat");
|
|
8661
|
-
return current === void 0 || current === null ? null : chatNode(context, "turn-error", node.seq, node, { visibility: "hidden" });
|
|
9063
|
+
return chatNode(context, "turn-error", node.seq, node);
|
|
8662
9064
|
}
|
|
8663
9065
|
};
|
|
8664
9066
|
/**
|
|
@@ -8955,15 +9357,15 @@ window.__ModuleLoader__.load({
|
|
|
8955
9357
|
document.head.appendChild(tag);
|
|
8956
9358
|
}
|
|
8957
9359
|
var ReasoningRow_module_css_default = {
|
|
8958
|
-
"root": "DQ_Ega_root",
|
|
8959
|
-
"title": "DQ_Ega_title",
|
|
8960
|
-
"nomix-reasoning-row-sweep": "DQ_Ega_nomix-reasoning-row-sweep",
|
|
8961
9360
|
"chevron": "DQ_Ega_chevron",
|
|
8962
|
-
"separator": "DQ_Ega_separator",
|
|
8963
|
-
"row": "DQ_Ega_row",
|
|
8964
9361
|
"leading": "DQ_Ega_leading",
|
|
9362
|
+
"nomix-reasoning-row-sweep": "DQ_Ega_nomix-reasoning-row-sweep",
|
|
9363
|
+
"root": "DQ_Ega_root",
|
|
9364
|
+
"row": "DQ_Ega_row",
|
|
9365
|
+
"separator": "DQ_Ega_separator",
|
|
8965
9366
|
"summary": "DQ_Ega_summary",
|
|
8966
|
-
"thinkBody": "DQ_Ega_thinkBody"
|
|
9367
|
+
"thinkBody": "DQ_Ega_thinkBody",
|
|
9368
|
+
"title": "DQ_Ega_title"
|
|
8967
9369
|
};
|
|
8968
9370
|
//#endregion
|
|
8969
9371
|
//#region lib/types/client/chat/ReasoningRow.js
|
|
@@ -9038,7 +9440,7 @@ window.__ModuleLoader__.load({
|
|
|
9038
9440
|
}
|
|
9039
9441
|
//#endregion
|
|
9040
9442
|
//#region \0nomix-css:/home/runner/work/nomix-harness/nomix-harness/packages/client/ui-conversation/src/client/chat/AssistantMarkdown.module.css.mjs
|
|
9041
|
-
const css$2 = ".h3DxwW_root{color:var(--dsw-alias-label-primary);flex-direction:column;font-size:16px;line-height:28px;display:flex}.h3DxwW_body{flex-direction:column;gap:16px;display:flex}.h3DxwW_stopped{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);border-radius:6px;align-self:flex-start;padding:0 6px;font-size:11px;line-height:18px}.h3DxwW_actions{margin-top:16px;margin-left:-6px}";
|
|
9443
|
+
const css$2 = ".h3DxwW_root{color:var(--dsw-alias-label-primary);flex-direction:column;font-size:16px;line-height:28px;display:flex}.h3DxwW_body{flex-direction:column;gap:16px;display:flex}.h3DxwW_body .md-table-wide{--nomix-table-spare:max(0px, calc((100cqw - var(--nomix-chat-content-width)) / 2));--nomix-table-lead:calc(var(--nomix-table-spare) + min(var(--nomix-chat-content-width), 100cqw) - 100%);box-sizing:border-box;width:calc(100% + var(--nomix-table-lead) + var(--nomix-table-spare));max-width:none;margin-left:calc(-1 * var(--nomix-table-lead));padding-left:var(--nomix-table-lead)}.h3DxwW_stopped{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);border-radius:6px;align-self:flex-start;padding:0 6px;font-size:11px;line-height:18px}.h3DxwW_actions{margin-top:16px;margin-left:-6px}";
|
|
9042
9444
|
const tagId$2 = "@nomix-ai/nomix-client-ui-conversation/AssistantMarkdown.module.css";
|
|
9043
9445
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
9044
9446
|
const tag = document.createElement("style");
|
|
@@ -9048,16 +9450,15 @@ window.__ModuleLoader__.load({
|
|
|
9048
9450
|
document.head.appendChild(tag);
|
|
9049
9451
|
}
|
|
9050
9452
|
var AssistantMarkdown_module_css_default = {
|
|
9051
|
-
"body": "h3DxwW_body",
|
|
9052
9453
|
"actions": "h3DxwW_actions",
|
|
9454
|
+
"body": "h3DxwW_body",
|
|
9053
9455
|
"root": "h3DxwW_root",
|
|
9054
9456
|
"stopped": "h3DxwW_stopped"
|
|
9055
9457
|
};
|
|
9056
9458
|
//#endregion
|
|
9057
9459
|
//#region lib/types/client/chat/AssistantMarkdown.js
|
|
9058
9460
|
/** Reasoning block as the Think variant summary row (figma 39:28304). */
|
|
9059
|
-
const AssistantMarkdown = (0, react.memo)(function AssistantMarkdown({ blocks, streaming, interrupted,
|
|
9060
|
-
const imageLoader = loadImage ?? (() => Promise.reject(new Error(t("image.serviceUnavailable"))));
|
|
9461
|
+
const AssistantMarkdown = (0, react.memo)(function AssistantMarkdown({ blocks, streaming, interrupted, renderMessageImages, mentions, t }) {
|
|
9061
9462
|
const codeLabels = (0, react.useMemo)(() => ({
|
|
9062
9463
|
copyLabel: t("copy"),
|
|
9063
9464
|
copiedLabel: t("copied")
|
|
@@ -9093,12 +9494,10 @@ window.__ModuleLoader__.load({
|
|
|
9093
9494
|
group.push(next);
|
|
9094
9495
|
i += 1;
|
|
9095
9496
|
}
|
|
9096
|
-
rendered.push((0, react_jsx_runtime.jsx)(
|
|
9097
|
-
images: group,
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
labels: messageImageLabels(t)
|
|
9101
|
-
}, start));
|
|
9497
|
+
rendered.push((0, react_jsx_runtime.jsx)(react.Fragment, { children: renderMessageImages({
|
|
9498
|
+
images: group.map(({ attachment }) => ({ attachment })),
|
|
9499
|
+
align: "start"
|
|
9500
|
+
}) }, start));
|
|
9102
9501
|
break;
|
|
9103
9502
|
}
|
|
9104
9503
|
case "tool-call": break;
|
|
@@ -9124,7 +9523,7 @@ window.__ModuleLoader__.load({
|
|
|
9124
9523
|
//#endregion
|
|
9125
9524
|
//#region lib/types/client/chat/AssistantNodeView.js
|
|
9126
9525
|
/** Streaming, settled, and interrupted Assistant states share one keyed renderer instance. */
|
|
9127
|
-
const AssistantNodeView = (0, react.memo)(function AssistantNodeView({ node, useTurnData, openFile,
|
|
9526
|
+
const AssistantNodeView = (0, react.memo)(function AssistantNodeView({ node, useTurnData, openFile, renderMessageImages, fileMentions, t }) {
|
|
9128
9527
|
const data = node.data;
|
|
9129
9528
|
const turn = node.location.kind === "turn" || node.location.kind === "step" ? node.location.turn : void 0;
|
|
9130
9529
|
const tail = useTurnData("turn-tail");
|
|
@@ -9147,7 +9546,7 @@ window.__ModuleLoader__.load({
|
|
|
9147
9546
|
blocks: data.blocks,
|
|
9148
9547
|
streaming: data.status === "running",
|
|
9149
9548
|
interrupted: data.status === "interrupted",
|
|
9150
|
-
|
|
9549
|
+
renderMessageImages,
|
|
9151
9550
|
mentions,
|
|
9152
9551
|
t
|
|
9153
9552
|
});
|
|
@@ -9164,15 +9563,15 @@ window.__ModuleLoader__.load({
|
|
|
9164
9563
|
document.head.appendChild(tag);
|
|
9165
9564
|
}
|
|
9166
9565
|
var GenericCommandCard_module_css_default = {
|
|
9167
|
-
"separator": "mLFSJq_separator",
|
|
9168
|
-
"nomix-command-row-sweep": "mLFSJq_nomix-command-row-sweep",
|
|
9169
|
-
"row": "mLFSJq_row",
|
|
9170
9566
|
"body": "mLFSJq_body",
|
|
9171
|
-
"title": "mLFSJq_title",
|
|
9172
|
-
"summary": "mLFSJq_summary",
|
|
9173
9567
|
"chevron": "mLFSJq_chevron",
|
|
9568
|
+
"leading": "mLFSJq_leading",
|
|
9569
|
+
"nomix-command-row-sweep": "mLFSJq_nomix-command-row-sweep",
|
|
9174
9570
|
"root": "mLFSJq_root",
|
|
9175
|
-
"
|
|
9571
|
+
"row": "mLFSJq_row",
|
|
9572
|
+
"separator": "mLFSJq_separator",
|
|
9573
|
+
"summary": "mLFSJq_summary",
|
|
9574
|
+
"title": "mLFSJq_title"
|
|
9176
9575
|
};
|
|
9177
9576
|
//#endregion
|
|
9178
9577
|
//#region lib/types/client/chat/GenericCommandCard.js
|
|
@@ -9307,8 +9706,8 @@ window.__ModuleLoader__.load({
|
|
|
9307
9706
|
document.head.appendChild(tag);
|
|
9308
9707
|
}
|
|
9309
9708
|
var TurnTailNodeView_module_css_default = {
|
|
9310
|
-
"
|
|
9311
|
-
"
|
|
9709
|
+
"actions": "_3lsFQG_actions",
|
|
9710
|
+
"root": "_3lsFQG_root"
|
|
9312
9711
|
};
|
|
9313
9712
|
//#endregion
|
|
9314
9713
|
//#region lib/types/client/chat/TurnTailNodeView.js
|
|
@@ -9591,6 +9990,10 @@ window.__ModuleLoader__.load({
|
|
|
9591
9990
|
kind: "list",
|
|
9592
9991
|
scope: "session"
|
|
9593
9992
|
},
|
|
9993
|
+
"conversation.hero.brand.mark": {
|
|
9994
|
+
kind: "single",
|
|
9995
|
+
scope: "root"
|
|
9996
|
+
},
|
|
9594
9997
|
"conversation.hero.workspace": {
|
|
9595
9998
|
kind: "single",
|
|
9596
9999
|
scope: "root"
|
|
@@ -9643,6 +10046,10 @@ window.__ModuleLoader__.load({
|
|
|
9643
10046
|
name: "conversation.session.header",
|
|
9644
10047
|
locale: NS,
|
|
9645
10048
|
children: {
|
|
10049
|
+
"conversation.session.header.lineage": {
|
|
10050
|
+
kind: "single",
|
|
10051
|
+
scope: "session"
|
|
10052
|
+
},
|
|
9646
10053
|
"conversation.session.header.actions": {
|
|
9647
10054
|
kind: "list",
|
|
9648
10055
|
scope: "session"
|
|
@@ -9664,6 +10071,10 @@ window.__ModuleLoader__.load({
|
|
|
9664
10071
|
name: "conversation.composer.bar",
|
|
9665
10072
|
locale: NS,
|
|
9666
10073
|
children: {
|
|
10074
|
+
"conversation.input.attachments": {
|
|
10075
|
+
kind: "single",
|
|
10076
|
+
scope: "session-maybe"
|
|
10077
|
+
},
|
|
9667
10078
|
"conversation.input.plan": {
|
|
9668
10079
|
kind: "single",
|
|
9669
10080
|
scope: "session"
|
|
@@ -9716,6 +10127,7 @@ window.__ModuleLoader__.load({
|
|
|
9716
10127
|
inputTriggers.toggleSource("command", {
|
|
9717
10128
|
trigger: "/",
|
|
9718
10129
|
query: "",
|
|
10130
|
+
quoted: false,
|
|
9719
10131
|
position: snapshot.draft.slice(0, selection.start).trim() === "" ? "leading" : "inline",
|
|
9720
10132
|
span: {
|
|
9721
10133
|
...selection,
|
|
@@ -9752,11 +10164,17 @@ window.__ModuleLoader__.load({
|
|
|
9752
10164
|
order: 0,
|
|
9753
10165
|
label: () => t("view.chat"),
|
|
9754
10166
|
locale: NS,
|
|
9755
|
-
children: {
|
|
9756
|
-
|
|
9757
|
-
|
|
9758
|
-
|
|
9759
|
-
|
|
10167
|
+
children: {
|
|
10168
|
+
"conversation.chat.node": {
|
|
10169
|
+
kind: "keyed",
|
|
10170
|
+
scope: "session",
|
|
10171
|
+
inject: CHAT_NODE_INJECT
|
|
10172
|
+
},
|
|
10173
|
+
"conversation.message.images": {
|
|
10174
|
+
kind: "single",
|
|
10175
|
+
scope: "session"
|
|
10176
|
+
}
|
|
10177
|
+
},
|
|
9760
10178
|
store: chatStore,
|
|
9761
10179
|
inject: (sessionId, actions) => {
|
|
9762
10180
|
const conversation = concreteConversation(ctx);
|
|
@@ -9769,7 +10187,7 @@ window.__ModuleLoader__.load({
|
|
|
9769
10187
|
fileMentions: (owner) => ctx.get("chatFileMentions")?.forClosing(owner),
|
|
9770
10188
|
openFile: (path) => {
|
|
9771
10189
|
const cwd = sessions.list.getSnapshot().byId[sessionId]?.cwd;
|
|
9772
|
-
workspaces.openPath((0, _nomix_ai_nomix_client_runtime_client.resolveWorkspacePath)(cwd, path))
|
|
10190
|
+
return workspaces.openPath((0, _nomix_ai_nomix_client_runtime_client.resolveWorkspacePath)(cwd, path));
|
|
9773
10191
|
},
|
|
9774
10192
|
loadOlder: () => {
|
|
9775
10193
|
scoped.loadOlder();
|