@lemoncat7/dsh-partner 2.5.0 → 2.7.1
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 +4 -0
- package/docs/THIRD_PARTY_LICENSES.md +13 -0
- package/docs/attachment-storage.md +18 -0
- package/docs/director-skills.md +24 -0
- package/docs/long-task-continuation.md +1 -1
- package/docs/releases/2.6.0.md +11 -0
- package/docs/releases/2.7.1.md +10 -0
- package/lib/agent-runtime.d.ts +3 -1
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +35 -11
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/attachments-api.d.ts.map +1 -1
- package/lib/api/features/attachments-api.js +31 -1
- package/lib/api/features/attachments-api.js.map +1 -1
- package/lib/api.d.ts +1 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +1 -1
- package/lib/api.js.map +1 -1
- package/lib/attachments/grouped-storage.d.ts +5 -0
- package/lib/attachments/grouped-storage.d.ts.map +1 -0
- package/lib/attachments/grouped-storage.js +47 -0
- package/lib/attachments/grouped-storage.js.map +1 -0
- package/lib/attachments/service.d.ts +17 -0
- package/lib/attachments/service.d.ts.map +1 -1
- package/lib/attachments/service.js +100 -8
- package/lib/attachments/service.js.map +1 -1
- package/lib/attachments/shared-storage.d.ts +7 -0
- package/lib/attachments/shared-storage.d.ts.map +1 -0
- package/lib/attachments/shared-storage.js +44 -0
- package/lib/attachments/shared-storage.js.map +1 -0
- package/lib/attachments/storage-admin.d.ts +6 -0
- package/lib/attachments/storage-admin.d.ts.map +1 -0
- package/lib/attachments/storage-admin.js +43 -0
- package/lib/attachments/storage-admin.js.map +1 -0
- package/lib/attachments/storage-types.d.ts +33 -0
- package/lib/attachments/storage-types.d.ts.map +1 -0
- package/lib/attachments/storage-types.js +2 -0
- package/lib/attachments/storage-types.js.map +1 -0
- package/lib/attachments/tool.d.ts.map +1 -1
- package/lib/attachments/tool.js +16 -5
- package/lib/attachments/tool.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts.map +1 -1
- package/lib/channels/delivery-policy.js +6 -4
- package/lib/channels/delivery-policy.js.map +1 -1
- package/lib/channels/direct/message-format.js +294 -157
- package/lib/channels/direct/message-format.js.map +4 -4
- package/lib/channels/manager.d.ts +6 -3
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +64 -44
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/weixin/api.d.ts.map +1 -1
- package/lib/channels/weixin/api.js +7 -2
- package/lib/channels/weixin/api.js.map +1 -1
- package/lib/channels/weixin/errors.d.ts +14 -0
- package/lib/channels/weixin/errors.d.ts.map +1 -0
- package/lib/channels/weixin/errors.js +29 -0
- package/lib/channels/weixin/errors.js.map +1 -0
- package/lib/channels/weixin/poll.d.ts +14 -0
- package/lib/channels/weixin/poll.d.ts.map +1 -0
- package/lib/channels/weixin/poll.js +50 -0
- package/lib/channels/weixin/poll.js.map +1 -0
- package/lib/client-controller.d.ts.map +1 -1
- package/lib/client-controller.js +3 -3
- package/lib/client-controller.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +983 -575
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +16 -6
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/domain.d.ts +6 -0
- package/lib/collaboration/domain.d.ts.map +1 -1
- package/lib/collaboration/domain.js.map +1 -1
- package/lib/collaboration/service.d.ts.map +1 -1
- package/lib/collaboration/service.js +33 -3
- package/lib/collaboration/service.js.map +1 -1
- package/lib/concern-notification.d.ts.map +1 -1
- package/lib/concern-notification.js +2 -1
- package/lib/concern-notification.js.map +1 -1
- package/lib/concern-tool.js +1 -1
- package/lib/concern-tool.js.map +1 -1
- package/lib/execution/reply-progress.d.ts.map +1 -1
- package/lib/execution/reply-progress.js +4 -2
- package/lib/execution/reply-progress.js.map +1 -1
- package/lib/execution/service.d.ts +1 -1
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +4 -7
- package/lib/execution/service.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/memory-reflection.js +2 -2
- package/lib/memory-reflection.js.map +1 -1
- package/lib/message-source.d.ts +25 -0
- package/lib/message-source.d.ts.map +1 -0
- package/lib/message-source.js +8 -0
- package/lib/message-source.js.map +1 -0
- package/lib/observation-loop.js +4 -4
- package/lib/observation-loop.js.map +1 -1
- package/lib/pendant/reader.js +1 -1
- package/lib/pendant/reader.js.map +1 -1
- package/lib/pendant/renderer.d.ts.map +1 -1
- package/lib/pendant/renderer.js +18 -2
- package/lib/pendant/renderer.js.map +1 -1
- package/lib/pendant/settings-panel.js +1 -1
- package/lib/pendant/settings-panel.js.map +1 -1
- package/lib/pendant/startup.d.ts +4 -0
- package/lib/pendant/startup.d.ts.map +1 -0
- package/lib/pendant/startup.js +64 -0
- package/lib/pendant/startup.js.map +1 -0
- package/lib/pendant/widget.d.ts.map +1 -1
- package/lib/pendant/widget.js +2 -1
- package/lib/pendant/widget.js.map +1 -1
- package/lib/pendant-renderer.js +169 -169
- package/lib/persona/service.js +1 -1
- package/lib/persona/service.js.map +1 -1
- package/lib/requirements/attachments.d.ts +7 -0
- package/lib/requirements/attachments.d.ts.map +1 -0
- package/lib/requirements/attachments.js +26 -0
- package/lib/requirements/attachments.js.map +1 -0
- package/lib/requirements/domain.d.ts +1 -1
- package/lib/requirements/domain.d.ts.map +1 -1
- package/lib/requirements/service.d.ts.map +1 -1
- package/lib/requirements/service.js +4 -1
- package/lib/requirements/service.js.map +1 -1
- package/lib/scheduler/channel-origin.d.ts +7 -0
- package/lib/scheduler/channel-origin.d.ts.map +1 -0
- package/lib/scheduler/channel-origin.js +27 -0
- package/lib/scheduler/channel-origin.js.map +1 -0
- package/lib/scheduler/continuations.d.ts +2 -2
- package/lib/scheduler/continuations.d.ts.map +1 -1
- package/lib/scheduler/continuations.js +28 -8
- package/lib/scheduler/continuations.js.map +1 -1
- package/lib/scheduler/domain.d.ts +13 -0
- package/lib/scheduler/domain.d.ts.map +1 -1
- package/lib/scheduler/final-reply.d.ts +13 -0
- package/lib/scheduler/final-reply.d.ts.map +1 -0
- package/lib/scheduler/final-reply.js +21 -0
- package/lib/scheduler/final-reply.js.map +1 -0
- package/lib/skills/builtin-resources.d.ts +6 -0
- package/lib/skills/builtin-resources.d.ts.map +1 -0
- package/lib/skills/builtin-resources.js +47 -0
- package/lib/skills/builtin-resources.js.map +1 -0
- package/lib/skills/builtin.d.ts +2 -5
- package/lib/skills/builtin.d.ts.map +1 -1
- package/lib/skills/builtin.js +6 -0
- package/lib/skills/builtin.js.map +1 -1
- package/lib/skills/director-builtins.d.ts +8 -0
- package/lib/skills/director-builtins.d.ts.map +1 -0
- package/lib/skills/director-builtins.js +65 -0
- package/lib/skills/director-builtins.js.map +1 -0
- package/lib/skills/drama-builtin.d.ts +3 -0
- package/lib/skills/drama-builtin.d.ts.map +1 -0
- package/lib/skills/drama-builtin.js +49 -0
- package/lib/skills/drama-builtin.js.map +1 -0
- package/lib/skills/long-task-continuation.d.ts +2 -2
- package/lib/skills/long-task-continuation.d.ts.map +1 -1
- package/lib/skills/long-task-continuation.js +2 -2
- package/lib/skills/service.d.ts.map +1 -1
- package/lib/skills/service.js +8 -3
- package/lib/skills/service.js.map +1 -1
- package/lib/skills/viora-canvas-builtin.d.ts +3 -0
- package/lib/skills/viora-canvas-builtin.d.ts.map +1 -0
- package/lib/skills/viora-canvas-builtin.js +19 -0
- package/lib/skills/viora-canvas-builtin.js.map +1 -0
- package/lib/storage/migrate-layout.d.ts.map +1 -1
- package/lib/storage/migrate-layout.js +13 -4
- package/lib/storage/migrate-layout.js.map +1 -1
- package/lib/tasks/context.js +1 -0
- package/lib/tasks/context.js.map +1 -1
- package/lib/tasks/continuation.d.ts.map +1 -1
- package/lib/tasks/continuation.js +3 -0
- package/lib/tasks/continuation.js.map +1 -1
- package/lib/tasks/domain.d.ts +2 -0
- package/lib/tasks/domain.d.ts.map +1 -1
- package/lib/tasks/service.d.ts +2 -1
- package/lib/tasks/service.d.ts.map +1 -1
- package/lib/tasks/service.js +15 -1
- package/lib/tasks/service.js.map +1 -1
- package/lib/ui/attachment-storage.d.ts +2 -0
- package/lib/ui/attachment-storage.d.ts.map +1 -0
- package/lib/ui/attachment-storage.js +59 -0
- package/lib/ui/attachment-storage.js.map +1 -0
- package/lib/ui/capability-editor.js +1 -1
- package/lib/ui/capability-editor.js.map +1 -1
- package/lib/ui/companion-access-panel.js +1 -1
- package/lib/ui/companion-access-panel.js.map +1 -1
- package/lib/ui/companion-create.js +1 -1
- package/lib/ui/companion-create.js.map +1 -1
- package/lib/ui/companion-picker.js +1 -1
- package/lib/ui/companion-picker.js.map +1 -1
- package/lib/ui/identity-editor.js +1 -1
- package/lib/ui/identity-editor.js.map +1 -1
- package/lib/ui/mcp-capabilities.js +1 -1
- package/lib/ui/mcp-capabilities.js.map +1 -1
- package/lib/ui/mcp-panel.js +1 -1
- package/lib/ui/mcp-panel.js.map +1 -1
- package/lib/ui/memory/concern-board.js +2 -2
- package/lib/ui/memory/concern-board.js.map +1 -1
- package/lib/ui/memory/concern-deletion.d.ts +1 -1
- package/lib/ui/memory/concern-deletion.d.ts.map +1 -1
- package/lib/ui/memory/concern-deletion.js +9 -4
- package/lib/ui/memory/concern-deletion.js.map +1 -1
- package/lib/ui/memory/concern-panel.js +1 -1
- package/lib/ui/memory/concern-panel.js.map +1 -1
- package/lib/ui/memory/memory-library.js +1 -1
- package/lib/ui/memory/memory-library.js.map +1 -1
- package/lib/ui/memory/memory-panel.js +1 -1
- package/lib/ui/memory/memory-panel.js.map +1 -1
- package/lib/ui/partner-components.js +1 -1
- package/lib/ui/partner-components.js.map +1 -1
- package/lib/ui/requirement-board.js +1 -1
- package/lib/ui/requirement-board.js.map +1 -1
- package/lib/ui/requirement-dialog.js +1 -1
- package/lib/ui/requirement-dialog.js.map +1 -1
- package/lib/ui/requirement-tasks-panel.js +1 -1
- package/lib/ui/requirement-tasks-panel.js.map +1 -1
- package/lib/ui/schedule-panel.js +1 -1
- package/lib/ui/schedule-panel.js.map +1 -1
- package/lib/ui/skills-panel.js +1 -1
- package/lib/ui/skills-panel.js.map +1 -1
- package/lib/ui/storage-settings.d.ts.map +1 -1
- package/lib/ui/storage-settings.js +2 -1
- package/lib/ui/storage-settings.js.map +1 -1
- package/lib/ui/task-board-stage.js +1 -1
- package/lib/ui/task-board-stage.js.map +1 -1
- package/lib/ui/workspace-components.js +1 -1
- package/lib/ui/workspace-components.js.map +1 -1
- package/lib/ui/workspace-navigation.d.ts +16 -16
- package/lib/ui/workspace-navigation.js +1 -1
- package/lib/ui/workspace-navigation.js.map +1 -1
- package/package.json +53 -41
- package/resources/skills/cinematic-director/manifest.json +205 -0
- package/resources/skills/cinematic-director/upstream/CHANGELOG.md +213 -0
- package/resources/skills/cinematic-director/upstream/CONTRIBUTING.md +316 -0
- package/resources/skills/cinematic-director/upstream/LICENSE +21 -0
- package/resources/skills/cinematic-director/upstream/README.md +507 -0
- package/resources/skills/cinematic-director/upstream/SKILL.md +420 -0
- package/resources/skills/cinematic-director/upstream/assets/beat-sheet-template.md +97 -0
- package/resources/skills/cinematic-director/upstream/assets/director-book-template.md +254 -0
- package/resources/skills/cinematic-director/upstream/assets/edit-timeline-template.md +147 -0
- package/resources/skills/cinematic-director/upstream/assets/keyframe-prompt-template.md +334 -0
- package/resources/skills/cinematic-director/upstream/assets/qc-checklist.md +153 -0
- package/resources/skills/cinematic-director/upstream/assets/shot-plan-template.md +95 -0
- package/resources/skills/cinematic-director/upstream/assets/sound-plan-template.md +181 -0
- package/resources/skills/cinematic-director/upstream/assets/video-prompt-template.md +305 -0
- package/resources/skills/cinematic-director/upstream/evals/run.md +69 -0
- package/resources/skills/cinematic-director/upstream/references/ai-video-tool-adapters.md +527 -0
- package/resources/skills/cinematic-director/upstream/references/blocking-and-staging.md +424 -0
- package/resources/skills/cinematic-director/upstream/references/cinematic-language.md +595 -0
- package/resources/skills/cinematic-director/upstream/references/continuity-bible.md +410 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/01_spielberg.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/02_hitchcock.md +193 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/03_kubrick.md +196 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/04_kurosawa.md +196 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/05_scorsese.md +195 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/06_fellini.md +197 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/07_bergman.md +197 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/08_tarkovsky.md +184 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/09_wong_kar_wai.md +189 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/10_nolan.md +185 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/11_villeneuve.md +188 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/12_fincher.md +185 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/13_refn.md +186 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/14_bi_gan.md +188 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/15_zhang_yimou.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/16_hou_hsiao_hsien.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/17_park_chan_wook.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/18_malick.md +191 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/19_michael_mann.md +192 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/20_coen_brothers.md +194 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/README.md +89 -0
- package/resources/skills/cinematic-director/upstream/references/director_styles/example_comparisons.md +140 -0
- package/resources/skills/cinematic-director/upstream/references/editing-and-assembly.md +263 -0
- package/resources/skills/cinematic-director/upstream/references/failure-modes.md +594 -0
- package/resources/skills/cinematic-director/upstream/references/genre-playbooks.md +407 -0
- package/resources/skills/cinematic-director/upstream/references/image-model-adapters.md +290 -0
- package/resources/skills/cinematic-director/upstream/references/lighting-and-color.md +349 -0
- package/resources/skills/cinematic-director/upstream/references/product-and-macro.md +207 -0
- package/resources/skills/cinematic-director/upstream/references/production-workflow.md +238 -0
- package/resources/skills/cinematic-director/upstream/references/prompt-lexicon.md +602 -0
- package/resources/skills/cinematic-director/upstream/references/sound-and-dialogue.md +364 -0
- package/resources/skills/director-skills/manifest.json +541 -0
- package/resources/skills/director-skills/upstream/CHANGELOG.md +32 -0
- package/resources/skills/director-skills/upstream/LICENSE +21 -0
- package/resources/skills/director-skills/upstream/MANIFEST.md +366 -0
- package/resources/skills/director-skills/upstream/README.md +251 -0
- package/resources/skills/director-skills/upstream/RESEARCH_PROVENANCE.md +37 -0
- package/resources/skills/director-skills/upstream/SKILL.md +114 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/SKILL.md +81 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/checklists/continuity_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/character_continuity_update.md +9 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/examples/location_continuity_update.md +9 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/continuity_system.md +21 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/golden_image_workflow.md +29 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/identity_anchors.md +14 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/references/visual_bible_system.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/character_profile.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/continuity_checklist.md +11 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/costume_profile.md +12 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/location_profile.md +14 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/prop_profile.md +13 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/templates/visual_style_bible.md +15 -0
- package/resources/skills/director-skills/upstream/skills/character-location-prop-bible/tests/continuity_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/SKILL.md +80 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/checklists/image_prompt_quality_checklist.md +10 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/examples/shot_list_to_image_prompts.md +4 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/image_prompt_components.md +22 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/lighting_and_photorealism.md +19 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/negative_prompt_patterns.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/references/prompt_anatomy.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/character_reference_sheet_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/cinematic_still_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/keyframe_prompt.md +6 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/location_reference_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/templates/prop_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-image-prompting/tests/image_prompt_completeness_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/SKILL.md +84 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/checklists/video_prompt_quality_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/examples/image_prompt_to_video_prompt.md +3 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/ai_film_production_pipeline.md +21 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/audio_motion_timing.md +16 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/camera_lens_movement.md +26 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/negative_prompt_patterns.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/prompt_anatomy.md +18 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/references/video_prompt_components.md +25 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/image_to_video_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/text_to_video_prompt.md +5 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/templates/video_beat_prompt.md +9 -0
- package/resources/skills/director-skills/upstream/skills/cinematic-video-prompting/tests/video_prompt_completeness_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/SKILL.md +82 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/checklists/model_export_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/failed_model_transfer_diagnosis.md +5 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/image_prompt_translation.md +10 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/same_scene_across_models.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/universal_prompt_to_model_specific_exports.md +14 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/examples/video_prompt_translation.md +9 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/failure_modes_by_model.md +13 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/image_model_profiles.md +226 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_capability_matrix.md +24 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/model_update_protocol.md +10 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/parameter_compatibility.md +20 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/prompt_translation_rules.md +18 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/references/video_model_profiles.md +251 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_comparison_table.md +4 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/model_specific_prompt_export.md +21 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/multi_model_export_package.md +18 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/prompt_translation_report.md +13 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/templates/universal_prompt_brief.md +25 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/model_routing_tests.md +8 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/prompt_translation_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/research_provenance_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/model-adaptation/tests/unknown_capability_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/SKILL.md +82 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/diagnostic_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/checklists/release_quality_checklist.md +9 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/failed_output_to_revised_prompt.md +10 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/examples/final_prompt_package_export.md +10 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/failure_modes.md +13 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/iteration_diagnostics.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/revision_loops.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/references/story_voice_release_qc.md +30 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/failed_output_intake.md +13 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/final_production_package.md +11 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/templates/prompt_revision_report.md +17 -0
- package/resources/skills/director-skills/upstream/skills/prompt-iteration-and-diagnostics/tests/prompt_quality_checklist_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/SKILL.md +81 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/checklists/scene_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/examples/scene_to_screenplay_excerpt.md +18 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/dialogue_and_subtext.md +15 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/fountain_workflow.md +29 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/scene_construction.md +20 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/references/screenplay_format.md +18 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/beat_sheet.md +6 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/dialogue_pass.md +9 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/fountain_scene.md +25 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/templates/screenplay_scene.md +19 -0
- package/resources/skills/director-skills/upstream/skills/screenplay-and-scene-writing/tests/screenplay_scene_tests.md +6 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/SKILL.md +83 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/checklists/concept_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/examples/idea_to_logline.md +13 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/examples/logline_to_outline.md +10 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/ai_storytelling_workflow.md +46 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/continuity_handoff.md +8 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/screenplay_structure.md +19 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/references/story_development_workflow.md +23 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/beat_sheet.md +7 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/idea_intake.md +16 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/logline.md +10 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_film_treatment.md +23 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/short_story_plan.md +22 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_premise.md +19 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/templates/story_revision_audit.md +22 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/tests/output_format_tests.md +3 -0
- package/resources/skills/director-skills/upstream/skills/short-film-development/tests/routing_tests.md +7 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/SKILL.md +77 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/checklists/shotlist_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/examples/screenplay_scene_to_shot_list.md +8 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/camera_plan.md +11 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/production_breakdown.md +11 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/references/shotlist_schema.md +21 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/asset_list.md +7 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/camera_plan.md +10 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/scene_breakdown.md +16 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/templates/shot_list.md +5 -0
- package/resources/skills/director-skills/upstream/skills/shotlist-and-visual-breakdown/tests/screenplay_to_shotlist_tests.md +5 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/SKILL.md +77 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/checklists/style_quality_checklist.md +8 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/examples/genre_to_visual_direction.md +15 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/camera_lens_movement.md +26 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/cinematic_language.md +32 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/genre_style_tone.md +17 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/references/lighting_and_photorealism.md +19 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/templates/visual_style_bible.md +33 -0
- package/resources/skills/director-skills/upstream/skills/style-cinematography-director/tests/style_translation_tests.md +5 -0
- package/resources/skills/director-skills/upstream/tests/master_router_tests.md +80 -0
- package/resources/skills/drama-production/manifest.json +933 -0
- package/resources/skills/drama-production/upstream/LICENSE +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/SKILL.md +153 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/creator-decision.example.jsonl +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/app.js +1263 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/index.html +114 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/dashboard/styles.css +297 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/production-observation.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/project-template/short-drama.json +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/assets/reference-observation.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/audience-reveal.md +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/contract-and-ownership.md +45 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-documents.md +230 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/creator-workflow.md +98 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +73 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +74 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +79 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +75 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +85 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +72 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/knowhow-index.md +85 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/look-development.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/pickup-and-alternate.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/production-form-profiles.md +126 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/reference-roles.md +53 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/references/runtime-preflight.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/creator_markdown_check.py +1413 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/dashboard_server.py +1798 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/project_tool.py +2454 -0
- package/resources/skills/drama-production/upstream/skills/short-drama/scripts/selftest.py +287 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/SKILL.md +76 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/character-look.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/continuity.example.jsonl +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/decisions.example.jsonl +5 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/location-view.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/occurrences.example.jsonl +5 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/assets/prop-state.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/characters.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/examples/minimal/looks.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/asset-review-checklist.md +82 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/character-and-look.md +190 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-delta.md +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/continuity-lock.md +122 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/identity-vs-variant.md +140 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/location-and-view.md +84 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/occurrence-extraction.md +108 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/prop-and-state.md +126 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/stage-contract.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/references/voice-direction.md +179 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/asset_check.py +267 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-assets/scripts/selftest.py +89 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/SKILL.md +157 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/creative-brief.md +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/episode-map.jsonl +1 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/assets/story-engine.md +181 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/adaptation-craft.md +219 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/creative-reference-intake.md +57 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/director-brief-craft.md +113 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/episode-design.md +509 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-and-hook-playbook.md +240 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +112 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//345/256/266/345/272/255/345/205/263/347/263/273.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +109 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/201/214/345/234/272/345/226/234/345/211/247.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/genre-cards.md +92 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/mechanism-loop.md +282 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/multi-episode-intake.md +128 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/premise-devices.md +211 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/reveal-reversal-payoff.md +99 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/serial-character-and-memory.md +293 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/stage-contract.md +88 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/references/story-craft.md +359 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/episode_intake.py +699 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-develop/scripts/selftest.py +47 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/SKILL.md +146 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/README.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/package.json +15 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/cut-craft.md +38 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/delivery-verify.md +29 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/generated-footage.md +54 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/references/stage-contract.md +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-edit/scripts/selftest.py +520 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/SKILL.md +73 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +187 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/image-prompts.md +42 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +128 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/assets/lookdev-prompts.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/examples/minimal-image-prompt-specs.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/character-and-look.md +153 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/common-recipe.md +241 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/edit-and-revision.md +110 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/location-plate.md +151 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/look-and-state-variant.md +97 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/lookdev-frame.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/production-sheet-recipes.md +177 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/prop-plate.md +137 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/review-and-fixtures.md +92 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/references/stage-contract.md +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/image_prompt_check.py +443 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-image-prompts/scripts/selftest.py +95 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/SKILL.md +245 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +3 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-triage.md +116 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/adaptation-value.md +124 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +155 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/chapter-extraction.md +144 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/references/stage-contract.md +67 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/novel_index.py +651 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-novel-analyze/scripts/selftest.py +51 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/SKILL.md +183 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/adapter-contract.md +219 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/gpt-image-2.md +24 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-h3-video.md +86 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-music.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/references/providers/seedance.md +64 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/fixture_adapter.py +77 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/production_tool.py +2205 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/provider_adapters.py +1747 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-produce/scripts/selftest.py +135 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/SKILL.md +118 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/finding-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/supersession-decision.example.json +42 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/assets/verdict-template.json +32 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-findings.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/examples/minimal-verdict.json +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/anti-template-repair.md +109 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/production-quality-gates.md +276 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/project-calibration.md +83 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/review-method.md +81 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-assets-prompts.md +111 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-source-analysis.md +108 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-story-script.md +264 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/rubric-visual-motion.md +184 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/references/stage-contract.md +28 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/review_check.py +325 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-review/scripts/selftest.py +87 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/SKILL.md +175 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-audition.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/coverage-template.json +49 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-prompts.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/keyframe-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/revision-lineage.fragment.json +12 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/scene-visual-plan.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/assets/shot-template.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/blocking-playbooks.md +216 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +156 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/coverage-audition.md +34 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/keyframe-craft.md +174 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/production-shot-grammar.md +279 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/review-and-fixtures.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/scene-visual-plan.md +30 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +155 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-craft.md +266 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/shot-revision-identity.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/references/stage-contract.md +57 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/selftest.py +191 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-storyboard/scripts/storyboard_check.py +824 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/SKILL.md +154 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/coverage-scope.fragment.json +21 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +101 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +217 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/motion-terminal.example.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +31 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/performance.fragment.json +38 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/assets/video-prompts.md +67 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/examples/minimal-music-specs.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/camera-audio-continuity.md +259 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/delivery-profile.md +273 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/generability.md +93 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/minimax-h3.md +253 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/motion-recipe.md +315 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/performance-action-timing.md +209 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/production-prompt-grammar.md +304 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/review-and-fixtures.md +139 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.0.md +50 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/seedance-2.5.md +122 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/stage-contract.md +60 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/references/target-model-profile.md +116 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/container_check.py +329 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/motion_timing_check.py +450 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/music_spec_check.py +327 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-video-prompts/scripts/selftest.py +82 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/SKILL.md +99 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/agents/openai.yaml +4 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/beats.jsonl +2 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card-standalone.json +120 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/episode-card.json +55 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/screenplay.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +89 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/dialogue-craft.md +526 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/production-format-dialect.md +273 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-handoff-capsule.md +25 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/scene-sound-dramaturgy.md +43 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/screenplay-format.md +266 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/script-craft.md +745 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/stage-contract.md +36 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/references/substitutable-realization.md +107 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/duration_estimate.py +309 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/screenplay_index.py +1091 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/selftest.py +229 -0
- package/resources/skills/drama-production/upstream/skills/short-drama-write/scripts/voice_sheet_check.py +416 -0
- package/resources/skills/viora-canvas-production/manifest.json +23 -0
- package/resources/skills/viora-canvas-production/references/canvas-contract.md +50 -0
- package/resources/skills/viora-canvas-production/references/creative-production.md +50 -0
- package/resources/skills/viora-canvas-production/references/generation-delivery.md +36 -0
- package/resources/skills/viora-canvas-production/references/production-ledger.md +25 -0
package/lib/client.js
CHANGED
|
@@ -35,7 +35,7 @@ __export(client_exports, {
|
|
|
35
35
|
inject: () => inject
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(client_exports);
|
|
38
|
-
var
|
|
38
|
+
var import_react51 = require("react");
|
|
39
39
|
|
|
40
40
|
// src/workspace-ownership.ts
|
|
41
41
|
var WORKSPACE_ACTIVATE_EVENT = "@lemoncat7/dsh-plugin-ui/workspace-activate";
|
|
@@ -851,13 +851,13 @@ function excavateModules(modules, excavation) {
|
|
|
851
851
|
});
|
|
852
852
|
});
|
|
853
853
|
}
|
|
854
|
-
function getImageSettings(cells,
|
|
854
|
+
function getImageSettings(cells, size2, margin, imageSettings) {
|
|
855
855
|
if (imageSettings == null) {
|
|
856
856
|
return null;
|
|
857
857
|
}
|
|
858
858
|
const numCells = cells.length + margin * 2;
|
|
859
|
-
const defaultSize = Math.floor(
|
|
860
|
-
const scale = numCells /
|
|
859
|
+
const defaultSize = Math.floor(size2 * DEFAULT_IMG_SCALE);
|
|
860
|
+
const scale = numCells / size2;
|
|
861
861
|
const w = (imageSettings.width || defaultSize) * scale;
|
|
862
862
|
const h = (imageSettings.height || defaultSize) * scale;
|
|
863
863
|
const x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;
|
|
@@ -887,7 +887,7 @@ function useQRCode({
|
|
|
887
887
|
includeMargin,
|
|
888
888
|
marginSize,
|
|
889
889
|
imageSettings,
|
|
890
|
-
size,
|
|
890
|
+
size: size2,
|
|
891
891
|
boostLevel
|
|
892
892
|
}) {
|
|
893
893
|
let qrcode = import_react.default.useMemo(() => {
|
|
@@ -911,7 +911,7 @@ function useQRCode({
|
|
|
911
911
|
const numCells2 = cells2.length + margin2 * 2;
|
|
912
912
|
const calculatedImageSettings2 = getImageSettings(
|
|
913
913
|
cells2,
|
|
914
|
-
|
|
914
|
+
size2,
|
|
915
915
|
margin2,
|
|
916
916
|
imageSettings
|
|
917
917
|
);
|
|
@@ -921,7 +921,7 @@ function useQRCode({
|
|
|
921
921
|
numCells: numCells2,
|
|
922
922
|
calculatedImageSettings: calculatedImageSettings2
|
|
923
923
|
};
|
|
924
|
-
}, [qrcode,
|
|
924
|
+
}, [qrcode, size2, imageSettings, includeMargin, marginSize]);
|
|
925
925
|
return {
|
|
926
926
|
qrcode,
|
|
927
927
|
margin,
|
|
@@ -942,7 +942,7 @@ var QRCodeCanvas = import_react.default.forwardRef(
|
|
|
942
942
|
function QRCodeCanvas2(props, forwardedRef) {
|
|
943
943
|
const _a = props, {
|
|
944
944
|
value,
|
|
945
|
-
size = DEFAULT_SIZE,
|
|
945
|
+
size: size2 = DEFAULT_SIZE,
|
|
946
946
|
level = DEFAULT_LEVEL,
|
|
947
947
|
bgColor = DEFAULT_BGCOLOR,
|
|
948
948
|
fgColor = DEFAULT_FGCOLOR,
|
|
@@ -987,7 +987,7 @@ var QRCodeCanvas = import_react.default.forwardRef(
|
|
|
987
987
|
includeMargin,
|
|
988
988
|
marginSize,
|
|
989
989
|
imageSettings,
|
|
990
|
-
size
|
|
990
|
+
size: size2
|
|
991
991
|
});
|
|
992
992
|
import_react.default.useEffect(() => {
|
|
993
993
|
if (_canvas.current != null) {
|
|
@@ -1008,8 +1008,8 @@ var QRCodeCanvas = import_react.default.forwardRef(
|
|
|
1008
1008
|
}
|
|
1009
1009
|
}
|
|
1010
1010
|
const pixelRatio = window.devicePixelRatio || 1;
|
|
1011
|
-
canvas.height = canvas.width =
|
|
1012
|
-
const scale =
|
|
1011
|
+
canvas.height = canvas.width = size2 * pixelRatio;
|
|
1012
|
+
const scale = size2 / numCells * pixelRatio;
|
|
1013
1013
|
ctx.scale(scale, scale);
|
|
1014
1014
|
ctx.fillStyle = bgColor;
|
|
1015
1015
|
ctx.fillRect(0, 0, numCells, numCells);
|
|
@@ -1042,7 +1042,7 @@ var QRCodeCanvas = import_react.default.forwardRef(
|
|
|
1042
1042
|
import_react.default.useEffect(() => {
|
|
1043
1043
|
setIsImageLoaded(false);
|
|
1044
1044
|
}, [imgSrc]);
|
|
1045
|
-
const canvasStyle = __spreadValues({ height:
|
|
1045
|
+
const canvasStyle = __spreadValues({ height: size2, width: size2 }, style);
|
|
1046
1046
|
let img = null;
|
|
1047
1047
|
if (imgSrc != null) {
|
|
1048
1048
|
img = /* @__PURE__ */ import_react.default.createElement(
|
|
@@ -1063,8 +1063,8 @@ var QRCodeCanvas = import_react.default.forwardRef(
|
|
|
1063
1063
|
"canvas",
|
|
1064
1064
|
__spreadValues({
|
|
1065
1065
|
style: canvasStyle,
|
|
1066
|
-
height:
|
|
1067
|
-
width:
|
|
1066
|
+
height: size2,
|
|
1067
|
+
width: size2,
|
|
1068
1068
|
ref: setCanvasRef,
|
|
1069
1069
|
role: "img"
|
|
1070
1070
|
}, otherProps)
|
|
@@ -1076,7 +1076,7 @@ var QRCodeSVG = import_react.default.forwardRef(
|
|
|
1076
1076
|
function QRCodeSVG2(props, forwardedRef) {
|
|
1077
1077
|
const _a = props, {
|
|
1078
1078
|
value,
|
|
1079
|
-
size = DEFAULT_SIZE,
|
|
1079
|
+
size: size2 = DEFAULT_SIZE,
|
|
1080
1080
|
level = DEFAULT_LEVEL,
|
|
1081
1081
|
bgColor = DEFAULT_BGCOLOR,
|
|
1082
1082
|
fgColor = DEFAULT_FGCOLOR,
|
|
@@ -1107,7 +1107,7 @@ var QRCodeSVG = import_react.default.forwardRef(
|
|
|
1107
1107
|
includeMargin,
|
|
1108
1108
|
marginSize,
|
|
1109
1109
|
imageSettings,
|
|
1110
|
-
size
|
|
1110
|
+
size: size2
|
|
1111
1111
|
});
|
|
1112
1112
|
let cellsToDraw = cells;
|
|
1113
1113
|
let image = null;
|
|
@@ -1136,8 +1136,8 @@ var QRCodeSVG = import_react.default.forwardRef(
|
|
|
1136
1136
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
1137
1137
|
"svg",
|
|
1138
1138
|
__spreadValues({
|
|
1139
|
-
height:
|
|
1140
|
-
width:
|
|
1139
|
+
height: size2,
|
|
1140
|
+
width: size2,
|
|
1141
1141
|
viewBox: `0 0 ${numCells} ${numCells}`,
|
|
1142
1142
|
ref: forwardedRef,
|
|
1143
1143
|
role: "img"
|
|
@@ -2216,6 +2216,14 @@ body[data-ds-dark-theme] .dsh-partner-workspace {
|
|
|
2216
2216
|
.dsh-partner-concern-resolved article { display: grid; min-height: 38px; grid-template-columns: 22px minmax(0, 1fr) auto; align-items: center; gap: 7px; padding: 4px 10px; border-bottom: 1px solid color-mix(in srgb, var(--partner-border) 60%, transparent); }
|
|
2217
2217
|
.dsh-partner-concern-resolved article > span { display: grid; width: 20px; height: 20px; border-radius: 7px; place-items: center; color: var(--partner-accent); background: color-mix(in srgb, var(--partner-accent) 8%, transparent); }
|
|
2218
2218
|
.dsh-partner-concern-resolved article strong { overflow: hidden; font-size: var(--partner-font-caption); font-weight: 560; text-overflow: ellipsis; white-space: nowrap; }
|
|
2219
|
+
.dsh-partner-concern-resolved-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; min-width: 0; }
|
|
2220
|
+
.dsh-partner-concern-resolved-actions > button { min-height: 32px; white-space: nowrap; }
|
|
2221
|
+
.dsh-partner-concern-resolved-actions > button.is-danger:hover { color: var(--partner-danger); border-color: var(--partner-danger); }
|
|
2222
|
+
@media (max-width: 600px) {
|
|
2223
|
+
.dsh-partner-concern-resolved article { grid-template-columns: 22px minmax(0, 1fr); padding-block: 8px; }
|
|
2224
|
+
.dsh-partner-concern-resolved-actions { grid-column: 2; }
|
|
2225
|
+
.dsh-partner-concern-resolved-actions > button { min-height: 44px; }
|
|
2226
|
+
}
|
|
2219
2227
|
.dsh-partner-concern-archive { min-width: 0; border-top: 1px solid var(--partner-border); }
|
|
2220
2228
|
.dsh-partner-concern-archive-toggle { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; min-height: 68px; padding: 14px 16px; border: 0; border-radius: 10px; text-align: left; color: var(--partner-text-secondary); background: transparent; font: inherit; cursor: pointer; transition: background .16s ease; }
|
|
2221
2229
|
.dsh-partner-concern-archive-toggle > span { display: grid; gap: 5px; min-width: 0; }
|
|
@@ -2758,6 +2766,41 @@ body[data-ds-dark-theme] .dsh-partner-workspace {
|
|
|
2758
2766
|
.dsh-partner-record-options button small { flex-shrink: 0; color: var(--partner-text-tertiary); }
|
|
2759
2767
|
.dsh-partner-record-selection, .dsh-partner-record-summary { margin: 0; padding: 8px 12px; font-size: var(--partner-font-caption); color: var(--partner-text-secondary); overflow-wrap: anywhere; }
|
|
2760
2768
|
.dsh-partner-record-selection { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
|
2769
|
+
.dsh-partner-workspace .attachment-storage-block { padding: 16px; gap: 10px; }
|
|
2770
|
+
#partner-attachment-storage { min-width: 0; font: var(--partner-font-body)/1.5 var(--partner-font-family); }
|
|
2771
|
+
#partner-attachment-storage :is(form, label, p) { margin: 0; }
|
|
2772
|
+
#partner-attachment-storage :is(.attachment-storage-overview, form, .attachment-storage-filters, .attachment-storage-selection) { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
2773
|
+
#partner-attachment-storage .attachment-storage-usage { flex: 1 1 180px; display: grid; gap: 2px; font-variant-numeric: tabular-nums; }
|
|
2774
|
+
#partner-attachment-storage small { color: var(--partner-text-secondary); font-size: 12px; }
|
|
2775
|
+
#partner-attachment-storage label { display: inline-flex; align-items: center; gap: 6px; min-width: 0; font-size: 13px; color: var(--partner-text-secondary); }
|
|
2776
|
+
#partner-attachment-storage :is(button, select, input[type=number]) { appearance: none !important; box-sizing: border-box; width: auto; min-width: 0; max-width: 100%; min-height: 32px; height: 32px; padding: 4px 10px !important; border: 1px solid var(--partner-border) !important; border-radius: 8px !important; background: var(--partner-control) !important; color: var(--partner-text) !important; box-shadow: none !important; font: 13px/1.4 var(--partner-font-family) !important; }
|
|
2777
|
+
#partner-attachment-storage button { cursor: pointer; white-space: nowrap; }
|
|
2778
|
+
#partner-attachment-storage button:hover:not(:disabled) { background: var(--partner-card-surface) !important; }
|
|
2779
|
+
#partner-attachment-storage input[type=number] { width: 86px; font-variant-numeric: tabular-nums; }
|
|
2780
|
+
#partner-attachment-storage select { max-width: 160px; padding-right: 28px !important; text-overflow: ellipsis; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23909095' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 7px center !important; }
|
|
2781
|
+
#partner-attachment-storage :is(button,input,select,summary):focus-visible { outline: 2px solid var(--partner-focus-ring); outline-offset: 2px; }
|
|
2782
|
+
#partner-attachment-storage :disabled { opacity: .5; cursor: not-allowed; }
|
|
2783
|
+
#attachment-storage-manager { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--partner-border); display: grid; gap: 10px; }
|
|
2784
|
+
#partner-attachment-storage .attachment-storage-list { max-height: 360px; overflow-y: auto; scrollbar-width: thin; }
|
|
2785
|
+
#partner-attachment-storage .attachment-storage-row { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--partner-border); }
|
|
2786
|
+
#partner-attachment-storage .attachment-storage-row > span { flex: 1; min-width: 0; }
|
|
2787
|
+
#partner-attachment-storage .attachment-storage-row strong { display: block; color: var(--partner-text); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
2788
|
+
#partner-attachment-storage .attachment-storage-row small { display: block; overflow-wrap: anywhere; }
|
|
2789
|
+
#partner-attachment-storage input[type=checkbox] { flex: 0 0 16px; width: 16px; height: 16px; margin: 0; accent-color: var(--partner-accent-strong); }
|
|
2790
|
+
#partner-attachment-storage .attachment-storage-help { font-size: 12px; color: var(--partner-text-secondary); }
|
|
2791
|
+
#partner-attachment-storage .attachment-storage-help summary { cursor: pointer; padding: 4px 0; }
|
|
2792
|
+
#partner-attachment-storage .attachment-storage-help p { margin: 6px 0; }
|
|
2793
|
+
#partner-attachment-storage code { display: block; overflow-wrap: anywhere; font-size: 12px; }
|
|
2794
|
+
#partner-attachment-storage > :is([role=alert],[role=status]) { margin-top: 8px; font-size: 13px; }
|
|
2795
|
+
@media (pointer: coarse) {
|
|
2796
|
+
#partner-attachment-storage :is(button,select,input[type=number]) { min-height: 40px; height: 40px; }
|
|
2797
|
+
#partner-attachment-storage .attachment-storage-row { min-height: 44px; }
|
|
2798
|
+
}
|
|
2799
|
+
@media (max-width: 540px) {
|
|
2800
|
+
#partner-attachment-storage .attachment-storage-usage { flex-basis: 100%; }
|
|
2801
|
+
#partner-attachment-storage :is(select,input[type=number]) { font-size: 16px !important; }
|
|
2802
|
+
#partner-attachment-storage select { max-width: 145px; }
|
|
2803
|
+
}
|
|
2761
2804
|
`;
|
|
2762
2805
|
|
|
2763
2806
|
// src/ui/workspace-ui.css
|
|
@@ -3287,7 +3330,7 @@ function WorkspaceDialog({ eyebrow = "CREATE & CONFIGURE", title, detail, close,
|
|
|
3287
3330
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { id: titleId, children: title }),
|
|
3288
3331
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { id: detailId, children: detail })
|
|
3289
3332
|
] }),
|
|
3290
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", onClick: close, "aria-label": "\u5173\u95ED", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.
|
|
3333
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", onClick: close, "aria-label": "\u5173\u95ED", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconCloseOutlineRegular, { size: 16 }) })
|
|
3291
3334
|
] }),
|
|
3292
3335
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "dsh-partner-workspace-dialog-body", children })
|
|
3293
3336
|
] }) });
|
|
@@ -3300,7 +3343,7 @@ function WorkspaceNotice({ children, kind = "error" }) {
|
|
|
3300
3343
|
}
|
|
3301
3344
|
function CollectionEmpty({ title, detail, action }) {
|
|
3302
3345
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "dsh-partner-collection-empty", children: [
|
|
3303
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.
|
|
3346
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconAgentPresetOutlineRegular, { size: 18 }) }),
|
|
3304
3347
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: title }),
|
|
3305
3348
|
detail && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: detail }),
|
|
3306
3349
|
action
|
|
@@ -3360,7 +3403,7 @@ function SectionHeading({ eyebrow, title, detail }) {
|
|
|
3360
3403
|
}
|
|
3361
3404
|
function ContentState({ title, detail, action, compact = false }) {
|
|
3362
3405
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: `dsh-partner-state${compact ? " is-compact" : ""}`, children: [
|
|
3363
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.
|
|
3406
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_dsh_client_ui_primitives2.IconAgentPresetOutlineRegular, { size: 20 }),
|
|
3364
3407
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("strong", { children: title }),
|
|
3365
3408
|
detail && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { children: detail }),
|
|
3366
3409
|
action
|
|
@@ -4006,11 +4049,11 @@ function MemoryLibrary({ companionId, scopeId, collection, layers, enabled, chan
|
|
|
4006
4049
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { className: "dsh-partner-memory-library-v2", children: [
|
|
4007
4050
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("nav", { className: "dsh-partner-memory-nav", "aria-label": "\u8BB0\u5FC6\u5185\u5BB9", children: [
|
|
4008
4051
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", "aria-pressed": mode === "memory" || mode === "scenes", onClick: () => selectMode("memory"), children: [
|
|
4009
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.
|
|
4052
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconDataOutlineRegular, { size: 16 }),
|
|
4010
4053
|
"\u8BB0\u5FC6"
|
|
4011
4054
|
] }),
|
|
4012
4055
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", "aria-pressed": mode === "reflection" || mode === "history", onClick: () => selectMode("reflection"), children: [
|
|
4013
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.
|
|
4056
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconBrowseOutlineRegular, { size: 16 }),
|
|
4014
4057
|
"\u56DE\u987E"
|
|
4015
4058
|
] }),
|
|
4016
4059
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("details", { className: "dsh-partner-memory-more", ref: more, onKeyDown: (event) => {
|
|
@@ -4026,16 +4069,16 @@ function MemoryLibrary({ companionId, scopeId, collection, layers, enabled, chan
|
|
|
4026
4069
|
] }),
|
|
4027
4070
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
|
|
4028
4071
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", onClick: () => selectMode("scenes"), children: [
|
|
4029
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.
|
|
4072
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconDataOutlineRegular, { size: 16 }),
|
|
4030
4073
|
"\u573A\u666F\u6458\u8981"
|
|
4031
4074
|
] }),
|
|
4032
4075
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", onClick: () => selectMode("experiences"), children: [
|
|
4033
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.
|
|
4076
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconListPenOutlineRegular, { size: 16 }),
|
|
4034
4077
|
"\u7ECF\u9A8C\u5BA1\u6838 ",
|
|
4035
4078
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("small", { children: layers?.experiences.filter((item) => item.status === "draft").length ?? 0 })
|
|
4036
4079
|
] }),
|
|
4037
4080
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("button", { type: "button", onClick: () => selectMode("graph"), children: [
|
|
4038
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.
|
|
4081
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_dsh_client_ui_primitives3.IconLinkOutlineRegular, { size: 16 }),
|
|
4039
4082
|
"\u5173\u7CFB\u56FE\u8C31"
|
|
4040
4083
|
] })
|
|
4041
4084
|
] })
|
|
@@ -4346,7 +4389,7 @@ function MemoryPanel({ companion, snapshot, openSession, startSession, renewSess
|
|
|
4346
4389
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "dsh-partner-memory-badge", children: companion.automation.memory.enabled ? "\u5B66\u4E60\u5DF2\u5F00\u542F" : "\u5B66\u4E60\u5DF2\u6682\u505C" }),
|
|
4347
4390
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("button", { type: "button", "aria-label": "\u5237\u65B0\u8BB0\u5FC6", disabled: collection.loading || layers.loading, onClick: () => {
|
|
4348
4391
|
void reload();
|
|
4349
|
-
}, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_dsh_client_ui_primitives4.
|
|
4392
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_dsh_client_ui_primitives4.IconRefreshOutlineRegular, { size: 16 }) })
|
|
4350
4393
|
] }),
|
|
4351
4394
|
(error || collection.error || layers.error) && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(WorkspaceNotice, { children: error || collection.error || layers.error }),
|
|
4352
4395
|
notice && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(WorkspaceNotice, { kind: "success", children: notice }),
|
|
@@ -4479,18 +4522,20 @@ function ArchivedConcerns({ companionId, onChanged }) {
|
|
|
4479
4522
|
const contentId = (0, import_react13.useId)();
|
|
4480
4523
|
const [open, setOpen] = (0, import_react13.useState)(false);
|
|
4481
4524
|
const [offset, setOffset] = (0, import_react13.useState)(0);
|
|
4482
|
-
const resource = useMemoryResource(
|
|
4525
|
+
const resource = useMemoryResource(`/companions/${encodeURIComponent(companionId)}/concerns/archived?offset=${offset}`, 15e3);
|
|
4483
4526
|
const refresh = async () => {
|
|
4484
|
-
|
|
4527
|
+
if (offset > 0 && resource.data?.items.length === 1) setOffset(offset - 50);
|
|
4528
|
+
else await resource.reload();
|
|
4485
4529
|
await onChanged();
|
|
4486
4530
|
};
|
|
4531
|
+
if (!resource.error && (!resource.data || offset === 0 && resource.data.items.length === 0)) return null;
|
|
4487
4532
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("section", { className: "dsh-partner-concern-archive", children: [
|
|
4488
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { type: "button", className: "dsh-partner-concern-archive-toggle", "aria-label": "\u5DF2\
|
|
4533
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("button", { type: "button", className: "dsh-partner-concern-archive-toggle", "aria-label": "\u5DF2\u505C\u6B62\u5173\u6CE8 \xB7 \u67E5\u770B\u4E0E\u6E05\u7406", "aria-expanded": open, "aria-controls": open ? contentId : void 0, onClick: () => setOpen(!open), children: [
|
|
4489
4534
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { children: [
|
|
4490
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("strong", { children: "\u5DF2\
|
|
4491
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("small", { children: "\
|
|
4535
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("strong", { children: "\u5DF2\u505C\u6B62\u5173\u6CE8" }),
|
|
4536
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("small", { children: "\u4E0D\u518D\u5173\u6CE8\u6216\u957F\u671F\u672A\u6D3B\u8DC3\u800C\u81EA\u52A8\u505C\u6B62\u7684\u8BB0\u5F55\uFF0C\u53EF\u6309\u9700\u6E05\u7406" })
|
|
4492
4537
|
] }),
|
|
4493
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.
|
|
4538
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.IconChevronDownOutlineRegular, { size: 16 })
|
|
4494
4539
|
] }),
|
|
4495
4540
|
open && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { id: contentId, className: "dsh-partner-concern-archive-content", children: [
|
|
4496
4541
|
resource.error && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(WorkspaceNotice, { children: [
|
|
@@ -4500,11 +4545,11 @@ function ArchivedConcerns({ companionId, onChanged }) {
|
|
|
4500
4545
|
}, children: "\u91CD\u8BD5" })
|
|
4501
4546
|
] }),
|
|
4502
4547
|
!resource.data ? !resource.error && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u2026" }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
4503
|
-
resource.data.items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children: "\u6B64\u9875\u6CA1\u6709\u5DF2\
|
|
4548
|
+
resource.data.items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children: "\u6B64\u9875\u6CA1\u6709\u5DF2\u505C\u6B62\u5173\u6CE8\u3002" }),
|
|
4504
4549
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "dsh-partner-concern-archive-list", children: resource.data.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("article", { className: "dsh-partner-concern-archive-row", children: [
|
|
4505
4550
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("details", { className: "dsh-partner-concern-archive-details", children: [
|
|
4506
4551
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("summary", { children: [
|
|
4507
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.
|
|
4552
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_dsh_client_ui_primitives5.IconChevronDownOutlineRegular, { size: 14 }),
|
|
4508
4553
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("strong", { children: item.subject })
|
|
4509
4554
|
] }),
|
|
4510
4555
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("dl", { children: [
|
|
@@ -4519,7 +4564,7 @@ function ArchivedConcerns({ companionId, onChanged }) {
|
|
|
4519
4564
|
] }),
|
|
4520
4565
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "dsh-partner-concern-archive-action", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ConcernDeleteButton, { companionId, item, onDeleted: refresh }) })
|
|
4521
4566
|
] }, item.id)) }),
|
|
4522
|
-
(offset > 0 || resource.data.hasMore) && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("nav", { className: "dsh-partner-concern-archive-pages", "aria-label": "\
|
|
4567
|
+
(offset > 0 || resource.data.hasMore) && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("nav", { className: "dsh-partner-concern-archive-pages", "aria-label": "\u5DF2\u505C\u6B62\u5173\u6CE8\u5206\u9875", children: [
|
|
4523
4568
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { children: [
|
|
4524
4569
|
"\u7B2C ",
|
|
4525
4570
|
Math.floor(offset / 50) + 1,
|
|
@@ -4757,7 +4802,7 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
|
|
|
4757
4802
|
setEditing(void 0);
|
|
4758
4803
|
setComposing((current2) => !current2);
|
|
4759
4804
|
}, children: [
|
|
4760
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.
|
|
4805
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconPlusOutlineRegular, { size: 14 }),
|
|
4761
4806
|
"\u4EA4\u4EE3\u4E00\u4EF6\u4E8B"
|
|
4762
4807
|
] })
|
|
4763
4808
|
] }),
|
|
@@ -4821,7 +4866,7 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
|
|
|
4821
4866
|
onMouseEnter: () => setActiveSource(index2),
|
|
4822
4867
|
onClick: () => chooseSource(source),
|
|
4823
4868
|
children: [
|
|
4824
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: source.kind === "file" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.
|
|
4869
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: source.kind === "file" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconDataOutlineRegular, { size: 15 }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconLinkOutlineRegular, { size: 15 }) }),
|
|
4825
4870
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: source.label }),
|
|
4826
4871
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("small", { children: source.detail })
|
|
4827
4872
|
]
|
|
@@ -4869,7 +4914,7 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
|
|
|
4869
4914
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("small", { children: "\u4E0B\u6B21\u7559\u610F" }),
|
|
4870
4915
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: futureTime(item.nextCheckAt) })
|
|
4871
4916
|
] }),
|
|
4872
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.
|
|
4917
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconChevronDownOutlineRegular, { size: 14 })
|
|
4873
4918
|
] }),
|
|
4874
4919
|
expanded && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "dsh-partner-concern-detail", children: [
|
|
4875
4920
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { children: item.reason }),
|
|
@@ -4920,10 +4965,12 @@ function ConcernBoard({ companionId, activity, value, busy, onValue, onAdd, onCh
|
|
|
4920
4965
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("b", { children: resolved.length })
|
|
4921
4966
|
] }),
|
|
4922
4967
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { children: resolved.slice(0, 30).map((item) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("article", { children: [
|
|
4923
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.
|
|
4924
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: item.subject }),
|
|
4925
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.
|
|
4926
|
-
|
|
4968
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_dsh_client_ui_primitives6.IconCheckOutlineRegular, { size: 13 }) }),
|
|
4969
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { title: item.subject, children: item.subject }),
|
|
4970
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "dsh-partner-concern-resolved-actions", role: "group", "aria-label": `${item.subject} \u7684\u64CD\u4F5C`, children: [
|
|
4971
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { type: "button", disabled: busy, onClick: () => onAct(item, "watch"), children: "\u91CD\u65B0\u7559\u610F" }),
|
|
4972
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ConcernDeleteButton, { companionId, item, disabled: busy, onDeleted: onEdited })
|
|
4973
|
+
] })
|
|
4927
4974
|
] }, item.id)) })
|
|
4928
4975
|
] }),
|
|
4929
4976
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ArchivedConcerns, { companionId, onChanged: onEdited })
|
|
@@ -5059,7 +5106,7 @@ function ConcernPanel({ companion, snapshot, onChanged }) {
|
|
|
5059
5106
|
] }),
|
|
5060
5107
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { type: "button", disabled: resource.loading, "aria-label": "\u5237\u65B0\u5173\u6CE8", onClick: () => {
|
|
5061
5108
|
void resource.reload();
|
|
5062
|
-
}, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_dsh_client_ui_primitives7.
|
|
5109
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_dsh_client_ui_primitives7.IconRefreshOutlineRegular, { size: 16 }) })
|
|
5063
5110
|
] }),
|
|
5064
5111
|
(error || resource.error || heartbeat?.lastError) && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(WorkspaceNotice, { children: error || resource.error || heartbeat?.lastError }),
|
|
5065
5112
|
notice && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(WorkspaceNotice, { kind: "success", children: notice }),
|
|
@@ -5373,7 +5420,7 @@ function PendantSettingsPanel() {
|
|
|
5373
5420
|
};
|
|
5374
5421
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-feature-page dsh-partner-pendant-settings", children: [
|
|
5375
5422
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(WorkspaceHero, { eyebrow: "PERSONAL TOUCH", title: "\u5361\u7247\u8BBE\u7F6E", detail: "\u8BA9\u6302\u9970\u6709\u81EA\u5DF1\u7684\u6837\u5B50\u3002\u5916\u89C2\u4EC5\u4FDD\u5B58\u5728\u5F53\u524D\u6D4F\u89C8\u5668\uFF0C\u4E0D\u5F71\u54CD\u4F19\u4F34\u6267\u884C\u548C\u6E20\u9053\u901A\u77E5\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: !dirty || processing, onClick: save, children: [
|
|
5376
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.
|
|
5423
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutlineRegular, { size: 15 }),
|
|
5377
5424
|
"\u4FDD\u5B58\u8BBE\u7F6E"
|
|
5378
5425
|
] }) }),
|
|
5379
5426
|
error && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(WorkspaceNotice, { children: error }),
|
|
@@ -5410,13 +5457,13 @@ function PendantSettingsPanel() {
|
|
|
5410
5457
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(StrapPreview, { material: item.id, color: previewColor, swatch: true }),
|
|
5411
5458
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("strong", { children: item.name }),
|
|
5412
5459
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("small", { children: item.detail }),
|
|
5413
|
-
draft.material === item.id && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.
|
|
5460
|
+
draft.material === item.id && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutlineRegular, { size: 14 })
|
|
5414
5461
|
] }, item.id)) }),
|
|
5415
5462
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-color-row", children: [
|
|
5416
5463
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: "\u7EF3\u5B50\u989C\u8272" }),
|
|
5417
5464
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "dsh-partner-pendant-swatches", role: "group", "aria-label": "\u9884\u8BBE\u7EF3\u5B50\u989C\u8272", children: COLORS.map((color2) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", "aria-label": `\u7EF3\u5B50\u989C\u8272 ${color2}`, "aria-pressed": draft.color.toLowerCase() === color2, onClick: () => update({ color: color2 }), children: [
|
|
5418
5465
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("i", { style: { backgroundColor: color2 } }),
|
|
5419
|
-
draft.color.toLowerCase() === color2 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.
|
|
5466
|
+
draft.color.toLowerCase() === color2 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconCheckOutlineRegular, { size: 12 })
|
|
5420
5467
|
] }, color2)) }),
|
|
5421
5468
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("label", { className: "dsh-partner-pendant-hex", children: [
|
|
5422
5469
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "dsh-partner-pendant-sr", children: "\u81EA\u5B9A\u4E49\u7EF3\u5B50\u989C\u8272" }),
|
|
@@ -5429,7 +5476,7 @@ function PendantSettingsPanel() {
|
|
|
5429
5476
|
} }),
|
|
5430
5477
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-image-actions", children: [
|
|
5431
5478
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: processing, onClick: () => strapFile.current?.click(), children: [
|
|
5432
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.
|
|
5479
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconPlusOutlineRegular, { size: 15 }),
|
|
5433
5480
|
draft.strapImage ? "\u66F4\u6362\u7EF3\u5B50\u7EB9\u7406" : "\u81EA\u5B9A\u4E49\u7EF3\u5B50\u7EB9\u7406"
|
|
5434
5481
|
] }),
|
|
5435
5482
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("button", { type: "button", disabled: processing || !draft.strapImage, onClick: () => update({ strapImage: "" }), children: "\u79FB\u9664\u7EB9\u7406" })
|
|
@@ -5442,11 +5489,11 @@ function PendantSettingsPanel() {
|
|
|
5442
5489
|
} }),
|
|
5443
5490
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-image-actions", children: [
|
|
5444
5491
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: processing, onClick: () => file.current?.click(), children: [
|
|
5445
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.
|
|
5492
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconPlusOutlineRegular, { size: 15 }),
|
|
5446
5493
|
processing ? "\u6B63\u5728\u5904\u7406\u2026" : draft.image ? "\u66F4\u6362\u56FE\u7247" : "\u9009\u62E9\u56FE\u7247"
|
|
5447
5494
|
] }),
|
|
5448
5495
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("button", { type: "button", disabled: !draft.image || processing, onClick: () => update({ image: "" }), children: [
|
|
5449
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.
|
|
5496
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconRefreshOutlineRegular, { size: 15 }),
|
|
5450
5497
|
"\u6062\u590D\u9ED8\u8BA4\u56FE\u6848"
|
|
5451
5498
|
] })
|
|
5452
5499
|
] }),
|
|
@@ -5481,7 +5528,7 @@ function PendantSettingsPanel() {
|
|
|
5481
5528
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "dsh-partner-pendant-preview-stage", children: [
|
|
5482
5529
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(StrapPreview, { material: draft.material, color: previewColor, image: draft.strapImage, length: draft.strapLength }),
|
|
5483
5530
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "dsh-partner-pendant-preview-card", children: draft.image ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("img", { src: draft.image, style: { objectFit: draft.imageFit }, alt: "\u81EA\u5B9A\u4E49\u5361\u7247\u6B63\u9762\u9884\u89C8" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { children: [
|
|
5484
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.
|
|
5531
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_dsh_client_ui_primitives8.IconAgentPresetOutlineRegular, { size: 38 }),
|
|
5485
5532
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("strong", { children: "WITH YOU" }),
|
|
5486
5533
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("small", { children: "\u9ED8\u8BA4\u4F19\u4F34\u56FE\u6848" })
|
|
5487
5534
|
] }) })
|
|
@@ -5908,8 +5955,8 @@ function regexCheck(regex) {
|
|
|
5908
5955
|
|
|
5909
5956
|
// node_modules/micromark-factory-space/index.js
|
|
5910
5957
|
function factorySpace(effects, ok3, type, max) {
|
|
5911
|
-
const limit = max ? max - 1 :
|
|
5912
|
-
let
|
|
5958
|
+
const limit = max ? max - 1 : Infinity;
|
|
5959
|
+
let size2 = 0;
|
|
5913
5960
|
return start;
|
|
5914
5961
|
function start(code2) {
|
|
5915
5962
|
if (markdownSpace(code2)) {
|
|
@@ -5919,7 +5966,7 @@ function factorySpace(effects, ok3, type, max) {
|
|
|
5919
5966
|
return ok3(code2);
|
|
5920
5967
|
}
|
|
5921
5968
|
function prefix(code2) {
|
|
5922
|
-
if (markdownSpace(code2) &&
|
|
5969
|
+
if (markdownSpace(code2) && size2++ < limit) {
|
|
5923
5970
|
effects.consume(code2);
|
|
5924
5971
|
return prefix;
|
|
5925
5972
|
}
|
|
@@ -5927,6 +5974,29 @@ function factorySpace(effects, ok3, type, max) {
|
|
|
5927
5974
|
return ok3(code2);
|
|
5928
5975
|
}
|
|
5929
5976
|
}
|
|
5977
|
+
function factorySpaceMinMax(effects, ok3, nok, type, min, max) {
|
|
5978
|
+
let size2 = 0;
|
|
5979
|
+
return start;
|
|
5980
|
+
function start(code2) {
|
|
5981
|
+
if (max > 0 && markdownSpace(code2)) {
|
|
5982
|
+
effects.enter(type);
|
|
5983
|
+
return prefix(code2);
|
|
5984
|
+
}
|
|
5985
|
+
return after(code2);
|
|
5986
|
+
}
|
|
5987
|
+
function prefix(code2) {
|
|
5988
|
+
if (markdownSpace(code2) && size2 < max) {
|
|
5989
|
+
effects.consume(code2);
|
|
5990
|
+
size2++;
|
|
5991
|
+
return prefix;
|
|
5992
|
+
}
|
|
5993
|
+
effects.exit(type);
|
|
5994
|
+
return after(code2);
|
|
5995
|
+
}
|
|
5996
|
+
function after(code2) {
|
|
5997
|
+
return size2 >= min ? ok3(code2) : nok(code2);
|
|
5998
|
+
}
|
|
5999
|
+
}
|
|
5930
6000
|
|
|
5931
6001
|
// node_modules/micromark/lib/initialize/content.js
|
|
5932
6002
|
var content = {
|
|
@@ -5978,6 +6048,104 @@ function initializeContent(effects) {
|
|
|
5978
6048
|
}
|
|
5979
6049
|
}
|
|
5980
6050
|
|
|
6051
|
+
// node_modules/micromark-util-edit-map/index.js
|
|
6052
|
+
var EditMap = class {
|
|
6053
|
+
/**
|
|
6054
|
+
* Create a new edit map.
|
|
6055
|
+
*
|
|
6056
|
+
* @returns
|
|
6057
|
+
* New instance.
|
|
6058
|
+
*/
|
|
6059
|
+
constructor() {
|
|
6060
|
+
this.index = /* @__PURE__ */ new Map();
|
|
6061
|
+
this.map = [];
|
|
6062
|
+
}
|
|
6063
|
+
/**
|
|
6064
|
+
* Create an edit: a remove and/or add at a certain place.
|
|
6065
|
+
*
|
|
6066
|
+
* @param {number} index
|
|
6067
|
+
* Index at which to apply the edit.
|
|
6068
|
+
* @param {number} remove
|
|
6069
|
+
* Count of items to remove at the index.
|
|
6070
|
+
* @param {Array<Event>} add
|
|
6071
|
+
* Items to add at the index.
|
|
6072
|
+
* @returns {undefined}
|
|
6073
|
+
* Nothing.
|
|
6074
|
+
*/
|
|
6075
|
+
add(index2, remove, add) {
|
|
6076
|
+
addImplementation(this, index2, remove, add, false);
|
|
6077
|
+
}
|
|
6078
|
+
/**
|
|
6079
|
+
* Create an edit: but insert `add` before existing additions, instead of
|
|
6080
|
+
* after them.
|
|
6081
|
+
*
|
|
6082
|
+
* @param {number} index
|
|
6083
|
+
* Index at which to apply the edit.
|
|
6084
|
+
* @param {number} remove
|
|
6085
|
+
* Count of items to remove at the index.
|
|
6086
|
+
* @param {Array<Event>} add
|
|
6087
|
+
* Items to add at the index.
|
|
6088
|
+
* @returns {undefined}
|
|
6089
|
+
* Nothing.
|
|
6090
|
+
*/
|
|
6091
|
+
addBefore(index2, remove, add) {
|
|
6092
|
+
addImplementation(this, index2, remove, add, true);
|
|
6093
|
+
}
|
|
6094
|
+
/**
|
|
6095
|
+
* Done, change the events.
|
|
6096
|
+
*
|
|
6097
|
+
* @param {Array<Event>} events
|
|
6098
|
+
* List of events to apply the edits to.
|
|
6099
|
+
* @returns {undefined}
|
|
6100
|
+
* Nothing.
|
|
6101
|
+
*/
|
|
6102
|
+
consume(events) {
|
|
6103
|
+
this.map.sort(function(a, b) {
|
|
6104
|
+
return a[0] - b[0];
|
|
6105
|
+
});
|
|
6106
|
+
if (this.map.length === 0) {
|
|
6107
|
+
return;
|
|
6108
|
+
}
|
|
6109
|
+
let index2 = this.map.length;
|
|
6110
|
+
const vecs = [];
|
|
6111
|
+
while (index2 > 0) {
|
|
6112
|
+
index2 -= 1;
|
|
6113
|
+
vecs.push(events.slice(this.map[index2][0] + this.map[index2][1]), this.map[index2][2]);
|
|
6114
|
+
events.length = this.map[index2][0];
|
|
6115
|
+
}
|
|
6116
|
+
vecs.push(events.slice());
|
|
6117
|
+
events.length = 0;
|
|
6118
|
+
let slice = vecs.pop();
|
|
6119
|
+
while (slice) {
|
|
6120
|
+
for (const element2 of slice) {
|
|
6121
|
+
events.push(element2);
|
|
6122
|
+
}
|
|
6123
|
+
slice = vecs.pop();
|
|
6124
|
+
}
|
|
6125
|
+
this.map.length = 0;
|
|
6126
|
+
this.index.clear();
|
|
6127
|
+
}
|
|
6128
|
+
};
|
|
6129
|
+
function addImplementation(editMap, at, remove, add, before) {
|
|
6130
|
+
if (remove === 0 && add.length === 0) {
|
|
6131
|
+
return;
|
|
6132
|
+
}
|
|
6133
|
+
const existing = editMap.index.get(at);
|
|
6134
|
+
if (existing) {
|
|
6135
|
+
existing[1] += remove;
|
|
6136
|
+
if (before) {
|
|
6137
|
+
add.push(...existing[2]);
|
|
6138
|
+
existing[2] = add;
|
|
6139
|
+
} else {
|
|
6140
|
+
existing[2].push(...add);
|
|
6141
|
+
}
|
|
6142
|
+
return;
|
|
6143
|
+
}
|
|
6144
|
+
const change = [at, remove, add];
|
|
6145
|
+
editMap.map.push(change);
|
|
6146
|
+
editMap.index.set(at, change);
|
|
6147
|
+
}
|
|
6148
|
+
|
|
5981
6149
|
// node_modules/micromark/lib/initialize/document.js
|
|
5982
6150
|
var document2 = {
|
|
5983
6151
|
tokenize: initializeDocument
|
|
@@ -6025,8 +6193,10 @@ function initializeDocument(effects) {
|
|
|
6025
6193
|
};
|
|
6026
6194
|
index2++;
|
|
6027
6195
|
}
|
|
6028
|
-
|
|
6029
|
-
self.events.
|
|
6196
|
+
const editMap = new EditMap();
|
|
6197
|
+
editMap.add(indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));
|
|
6198
|
+
editMap.add(indexBeforeExits, index2 - indexBeforeExits, []);
|
|
6199
|
+
editMap.consume(self.events);
|
|
6030
6200
|
return checkNewContainers(code2);
|
|
6031
6201
|
}
|
|
6032
6202
|
return start(code2);
|
|
@@ -6045,7 +6215,9 @@ function initializeDocument(effects) {
|
|
|
6045
6215
|
return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code2);
|
|
6046
6216
|
}
|
|
6047
6217
|
function thereIsANewContainer(code2) {
|
|
6048
|
-
if (childFlow)
|
|
6218
|
+
if (childFlow) {
|
|
6219
|
+
closeFlow();
|
|
6220
|
+
}
|
|
6049
6221
|
exitContainers(continued);
|
|
6050
6222
|
return documentContinued(code2);
|
|
6051
6223
|
}
|
|
@@ -6065,7 +6237,9 @@ function initializeDocument(effects) {
|
|
|
6065
6237
|
}
|
|
6066
6238
|
function flowStart(code2) {
|
|
6067
6239
|
if (code2 === null) {
|
|
6068
|
-
if (childFlow)
|
|
6240
|
+
if (childFlow) {
|
|
6241
|
+
closeFlow();
|
|
6242
|
+
}
|
|
6069
6243
|
exitContainers(0);
|
|
6070
6244
|
effects.consume(code2);
|
|
6071
6245
|
return;
|
|
@@ -6097,9 +6271,13 @@ function initializeDocument(effects) {
|
|
|
6097
6271
|
}
|
|
6098
6272
|
function writeToChild(token, endOfFile) {
|
|
6099
6273
|
const stream = self.sliceStream(token);
|
|
6100
|
-
if (endOfFile)
|
|
6274
|
+
if (endOfFile) {
|
|
6275
|
+
stream.push(null);
|
|
6276
|
+
}
|
|
6101
6277
|
token.previous = childToken;
|
|
6102
|
-
if (childToken)
|
|
6278
|
+
if (childToken) {
|
|
6279
|
+
childToken.next = token;
|
|
6280
|
+
}
|
|
6103
6281
|
childToken = token;
|
|
6104
6282
|
childFlow.defineSkip(token.start);
|
|
6105
6283
|
childFlow.write(stream);
|
|
@@ -6136,18 +6314,20 @@ function initializeDocument(effects) {
|
|
|
6136
6314
|
};
|
|
6137
6315
|
index2++;
|
|
6138
6316
|
}
|
|
6139
|
-
|
|
6140
|
-
self.events.
|
|
6317
|
+
const editMap = new EditMap();
|
|
6318
|
+
editMap.add(indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));
|
|
6319
|
+
editMap.add(indexBeforeExits, index2 - indexBeforeExits, []);
|
|
6320
|
+
editMap.consume(self.events);
|
|
6141
6321
|
}
|
|
6142
6322
|
}
|
|
6143
|
-
function exitContainers(
|
|
6323
|
+
function exitContainers(size2) {
|
|
6144
6324
|
let index2 = stack.length;
|
|
6145
|
-
while (index2-- >
|
|
6325
|
+
while (index2-- > size2) {
|
|
6146
6326
|
const entry = stack[index2];
|
|
6147
6327
|
self.containerState = entry[1];
|
|
6148
6328
|
entry[0].exit.call(self, effects);
|
|
6149
6329
|
}
|
|
6150
|
-
stack.length =
|
|
6330
|
+
stack.length = size2;
|
|
6151
6331
|
}
|
|
6152
6332
|
function closeFlow() {
|
|
6153
6333
|
childFlow.write([null]);
|
|
@@ -6192,24 +6372,17 @@ var attention = {
|
|
|
6192
6372
|
};
|
|
6193
6373
|
function resolveAllAttention(events, context) {
|
|
6194
6374
|
let index2 = -1;
|
|
6195
|
-
let open;
|
|
6196
|
-
let group;
|
|
6197
|
-
let text4;
|
|
6198
|
-
let openingSequence;
|
|
6199
|
-
let closingSequence;
|
|
6200
|
-
let use;
|
|
6201
6375
|
let nextEvents;
|
|
6202
|
-
let offset;
|
|
6203
6376
|
while (++index2 < events.length) {
|
|
6204
6377
|
if (events[index2][0] === "enter" && events[index2][1].type === "attentionSequence" && events[index2][1]._close) {
|
|
6205
|
-
open = index2;
|
|
6378
|
+
let open = index2;
|
|
6206
6379
|
while (open--) {
|
|
6207
6380
|
if (events[open][0] === "exit" && events[open][1].type === "attentionSequence" && events[open][1]._open && // If the markers are the same:
|
|
6208
6381
|
context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index2][1]).charCodeAt(0)) {
|
|
6209
6382
|
if ((events[open][1]._close || events[index2][1]._open) && (events[index2][1].end.offset - events[index2][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index2][1].end.offset - events[index2][1].start.offset) % 3)) {
|
|
6210
6383
|
continue;
|
|
6211
6384
|
}
|
|
6212
|
-
use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1;
|
|
6385
|
+
const use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1;
|
|
6213
6386
|
const start = {
|
|
6214
6387
|
...events[open][1].end
|
|
6215
6388
|
};
|
|
@@ -6218,21 +6391,21 @@ function resolveAllAttention(events, context) {
|
|
|
6218
6391
|
};
|
|
6219
6392
|
movePoint(start, -use);
|
|
6220
6393
|
movePoint(end, use);
|
|
6221
|
-
openingSequence = {
|
|
6394
|
+
const openingSequence = {
|
|
6222
6395
|
type: use > 1 ? "strongSequence" : "emphasisSequence",
|
|
6223
6396
|
start,
|
|
6224
6397
|
end: {
|
|
6225
6398
|
...events[open][1].end
|
|
6226
6399
|
}
|
|
6227
6400
|
};
|
|
6228
|
-
closingSequence = {
|
|
6401
|
+
const closingSequence = {
|
|
6229
6402
|
type: use > 1 ? "strongSequence" : "emphasisSequence",
|
|
6230
6403
|
start: {
|
|
6231
6404
|
...events[index2][1].start
|
|
6232
6405
|
},
|
|
6233
6406
|
end
|
|
6234
6407
|
};
|
|
6235
|
-
text4 = {
|
|
6408
|
+
const text4 = {
|
|
6236
6409
|
type: use > 1 ? "strongText" : "emphasisText",
|
|
6237
6410
|
start: {
|
|
6238
6411
|
...events[open][1].end
|
|
@@ -6241,7 +6414,7 @@ function resolveAllAttention(events, context) {
|
|
|
6241
6414
|
...events[index2][1].start
|
|
6242
6415
|
}
|
|
6243
6416
|
};
|
|
6244
|
-
group = {
|
|
6417
|
+
const group = {
|
|
6245
6418
|
type: use > 1 ? "strong" : "emphasis",
|
|
6246
6419
|
start: {
|
|
6247
6420
|
...openingSequence.start
|
|
@@ -6263,11 +6436,10 @@ function resolveAllAttention(events, context) {
|
|
|
6263
6436
|
nextEvents = push(nextEvents, [["enter", group, context], ["enter", openingSequence, context], ["exit", openingSequence, context], ["enter", text4, context]]);
|
|
6264
6437
|
nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index2), context));
|
|
6265
6438
|
nextEvents = push(nextEvents, [["exit", text4, context], ["enter", closingSequence, context], ["exit", closingSequence, context], ["exit", group, context]]);
|
|
6439
|
+
let offset = 0;
|
|
6266
6440
|
if (events[index2][1].end.offset - events[index2][1].start.offset) {
|
|
6267
6441
|
offset = 2;
|
|
6268
6442
|
nextEvents = push(nextEvents, [["enter", events[index2][1], context], ["exit", events[index2][1], context]]);
|
|
6269
|
-
} else {
|
|
6270
|
-
offset = 0;
|
|
6271
6443
|
}
|
|
6272
6444
|
splice(events, open - 1, index2 - open + 3, nextEvents);
|
|
6273
6445
|
index2 = open + nextEvents.length - offset - 2;
|
|
@@ -6302,8 +6474,8 @@ function tokenizeAttention(effects, ok3) {
|
|
|
6302
6474
|
}
|
|
6303
6475
|
const token = effects.exit("attentionSequence");
|
|
6304
6476
|
const after = classifyCharacter(code2);
|
|
6305
|
-
const open = !after || after === 2 && before || attentionMarkers2.includes(code2);
|
|
6306
|
-
const close = !before || before === 2 && after || attentionMarkers2.includes(previous3);
|
|
6477
|
+
const open = !after || after === 2 && before || attentionMarkers2.includes(code2) && code2 !== 42 && code2 !== 95;
|
|
6478
|
+
const close = !before || before === 2 && after || attentionMarkers2.includes(previous3) && previous3 !== 42 && previous3 !== 95;
|
|
6307
6479
|
token._open = Boolean(marker === 42 ? open : open && (before || !close));
|
|
6308
6480
|
token._close = Boolean(marker === 42 ? close : close && (after || !open));
|
|
6309
6481
|
return ok3(code2);
|
|
@@ -6321,7 +6493,7 @@ var autolink = {
|
|
|
6321
6493
|
tokenize: tokenizeAutolink
|
|
6322
6494
|
};
|
|
6323
6495
|
function tokenizeAutolink(effects, ok3, nok) {
|
|
6324
|
-
let
|
|
6496
|
+
let size2 = 0;
|
|
6325
6497
|
return start;
|
|
6326
6498
|
function start(code2) {
|
|
6327
6499
|
effects.enter("autolink");
|
|
@@ -6343,7 +6515,7 @@ function tokenizeAutolink(effects, ok3, nok) {
|
|
|
6343
6515
|
}
|
|
6344
6516
|
function schemeOrEmailAtext(code2) {
|
|
6345
6517
|
if (code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) {
|
|
6346
|
-
|
|
6518
|
+
size2 = 1;
|
|
6347
6519
|
return schemeInsideOrEmailAtext(code2);
|
|
6348
6520
|
}
|
|
6349
6521
|
return emailAtext(code2);
|
|
@@ -6351,14 +6523,14 @@ function tokenizeAutolink(effects, ok3, nok) {
|
|
|
6351
6523
|
function schemeInsideOrEmailAtext(code2) {
|
|
6352
6524
|
if (code2 === 58) {
|
|
6353
6525
|
effects.consume(code2);
|
|
6354
|
-
|
|
6526
|
+
size2 = 0;
|
|
6355
6527
|
return urlInside;
|
|
6356
6528
|
}
|
|
6357
|
-
if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) &&
|
|
6529
|
+
if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size2++ < 32) {
|
|
6358
6530
|
effects.consume(code2);
|
|
6359
6531
|
return schemeInsideOrEmailAtext;
|
|
6360
6532
|
}
|
|
6361
|
-
|
|
6533
|
+
size2 = 0;
|
|
6362
6534
|
return emailAtext(code2);
|
|
6363
6535
|
}
|
|
6364
6536
|
function urlInside(code2) {
|
|
@@ -6393,7 +6565,7 @@ function tokenizeAutolink(effects, ok3, nok) {
|
|
|
6393
6565
|
function emailLabel(code2) {
|
|
6394
6566
|
if (code2 === 46) {
|
|
6395
6567
|
effects.consume(code2);
|
|
6396
|
-
|
|
6568
|
+
size2 = 0;
|
|
6397
6569
|
return emailAtSignOrDot;
|
|
6398
6570
|
}
|
|
6399
6571
|
if (code2 === 62) {
|
|
@@ -6407,7 +6579,7 @@ function tokenizeAutolink(effects, ok3, nok) {
|
|
|
6407
6579
|
return emailValue(code2);
|
|
6408
6580
|
}
|
|
6409
6581
|
function emailValue(code2) {
|
|
6410
|
-
if ((code2 === 45 || asciiAlphanumeric(code2)) &&
|
|
6582
|
+
if ((code2 === 45 || asciiAlphanumeric(code2)) && size2++ < 63) {
|
|
6411
6583
|
const next = code2 === 45 ? emailValue : emailLabel;
|
|
6412
6584
|
effects.consume(code2);
|
|
6413
6585
|
return next;
|
|
@@ -6522,7 +6694,7 @@ var characterReference = {
|
|
|
6522
6694
|
};
|
|
6523
6695
|
function tokenizeCharacterReference(effects, ok3, nok) {
|
|
6524
6696
|
const self = this;
|
|
6525
|
-
let
|
|
6697
|
+
let size2 = 0;
|
|
6526
6698
|
let max;
|
|
6527
6699
|
let test;
|
|
6528
6700
|
return start;
|
|
@@ -6561,7 +6733,7 @@ function tokenizeCharacterReference(effects, ok3, nok) {
|
|
|
6561
6733
|
return value(code2);
|
|
6562
6734
|
}
|
|
6563
6735
|
function value(code2) {
|
|
6564
|
-
if (code2 === 59 &&
|
|
6736
|
+
if (code2 === 59 && size2) {
|
|
6565
6737
|
const token = effects.exit("characterReferenceValue");
|
|
6566
6738
|
if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {
|
|
6567
6739
|
return nok(code2);
|
|
@@ -6572,7 +6744,7 @@ function tokenizeCharacterReference(effects, ok3, nok) {
|
|
|
6572
6744
|
effects.exit("characterReference");
|
|
6573
6745
|
return ok3;
|
|
6574
6746
|
}
|
|
6575
|
-
if (test(code2) &&
|
|
6747
|
+
if (test(code2) && size2++ < max) {
|
|
6576
6748
|
effects.consume(code2);
|
|
6577
6749
|
return value;
|
|
6578
6750
|
}
|
|
@@ -6580,11 +6752,29 @@ function tokenizeCharacterReference(effects, ok3, nok) {
|
|
|
6580
6752
|
}
|
|
6581
6753
|
}
|
|
6582
6754
|
|
|
6583
|
-
// node_modules/micromark-core-commonmark/lib/
|
|
6755
|
+
// node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js
|
|
6584
6756
|
var nonLazyContinuation = {
|
|
6585
6757
|
partial: true,
|
|
6586
6758
|
tokenize: tokenizeNonLazyContinuation
|
|
6587
6759
|
};
|
|
6760
|
+
function tokenizeNonLazyContinuation(effects, ok3, nok) {
|
|
6761
|
+
const self = this;
|
|
6762
|
+
return start;
|
|
6763
|
+
function start(code2) {
|
|
6764
|
+
if (code2 === null) {
|
|
6765
|
+
return nok(code2);
|
|
6766
|
+
}
|
|
6767
|
+
effects.enter("lineEnding");
|
|
6768
|
+
effects.consume(code2);
|
|
6769
|
+
effects.exit("lineEnding");
|
|
6770
|
+
return after;
|
|
6771
|
+
}
|
|
6772
|
+
function after(code2) {
|
|
6773
|
+
return self.parser.lazy[self.now().line] ? nok(code2) : ok3(code2);
|
|
6774
|
+
}
|
|
6775
|
+
}
|
|
6776
|
+
|
|
6777
|
+
// node_modules/micromark-core-commonmark/lib/code-fenced.js
|
|
6588
6778
|
var codeFenced = {
|
|
6589
6779
|
concrete: true,
|
|
6590
6780
|
name: "codeFenced",
|
|
@@ -6706,7 +6896,7 @@ function tokenizeCodeFenced(effects, ok3, nok) {
|
|
|
6706
6896
|
return ok3(code2);
|
|
6707
6897
|
}
|
|
6708
6898
|
function tokenizeCloseStart(effects2, ok4, nok2) {
|
|
6709
|
-
let
|
|
6899
|
+
let size2 = 0;
|
|
6710
6900
|
return startBefore;
|
|
6711
6901
|
function startBefore(code2) {
|
|
6712
6902
|
effects2.enter("lineEnding");
|
|
@@ -6727,11 +6917,11 @@ function tokenizeCodeFenced(effects, ok3, nok) {
|
|
|
6727
6917
|
}
|
|
6728
6918
|
function sequenceClose(code2) {
|
|
6729
6919
|
if (code2 === marker) {
|
|
6730
|
-
|
|
6920
|
+
size2++;
|
|
6731
6921
|
effects2.consume(code2);
|
|
6732
6922
|
return sequenceClose;
|
|
6733
6923
|
}
|
|
6734
|
-
if (
|
|
6924
|
+
if (size2 >= sizeOpen) {
|
|
6735
6925
|
effects2.exit("codeFencedFenceSequence");
|
|
6736
6926
|
return markdownSpace(code2) ? factorySpace(effects2, sequenceCloseAfter, "whitespace")(code2) : sequenceCloseAfter(code2);
|
|
6737
6927
|
}
|
|
@@ -6746,22 +6936,6 @@ function tokenizeCodeFenced(effects, ok3, nok) {
|
|
|
6746
6936
|
}
|
|
6747
6937
|
}
|
|
6748
6938
|
}
|
|
6749
|
-
function tokenizeNonLazyContinuation(effects, ok3, nok) {
|
|
6750
|
-
const self = this;
|
|
6751
|
-
return start;
|
|
6752
|
-
function start(code2) {
|
|
6753
|
-
if (code2 === null) {
|
|
6754
|
-
return nok(code2);
|
|
6755
|
-
}
|
|
6756
|
-
effects.enter("lineEnding");
|
|
6757
|
-
effects.consume(code2);
|
|
6758
|
-
effects.exit("lineEnding");
|
|
6759
|
-
return lineStart;
|
|
6760
|
-
}
|
|
6761
|
-
function lineStart(code2) {
|
|
6762
|
-
return self.parser.lazy[self.now().line] ? nok(code2) : ok3(code2);
|
|
6763
|
-
}
|
|
6764
|
-
}
|
|
6765
6939
|
|
|
6766
6940
|
// node_modules/micromark-core-commonmark/lib/code-indented.js
|
|
6767
6941
|
var codeIndented = {
|
|
@@ -6773,15 +6947,10 @@ var furtherStart = {
|
|
|
6773
6947
|
tokenize: tokenizeFurtherStart
|
|
6774
6948
|
};
|
|
6775
6949
|
function tokenizeCodeIndented(effects, ok3, nok) {
|
|
6776
|
-
const self = this;
|
|
6777
6950
|
return start;
|
|
6778
6951
|
function start(code2) {
|
|
6779
6952
|
effects.enter("codeIndented");
|
|
6780
|
-
return
|
|
6781
|
-
}
|
|
6782
|
-
function afterPrefix(code2) {
|
|
6783
|
-
const tail = self.events[self.events.length - 1];
|
|
6784
|
-
return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code2) : nok(code2);
|
|
6953
|
+
return factorySpaceMinMax(effects, atBreak, nok, "linePrefix", 4, 4)(code2);
|
|
6785
6954
|
}
|
|
6786
6955
|
function atBreak(code2) {
|
|
6787
6956
|
if (code2 === null) {
|
|
@@ -6819,11 +6988,10 @@ function tokenizeFurtherStart(effects, ok3, nok) {
|
|
|
6819
6988
|
effects.exit("lineEnding");
|
|
6820
6989
|
return furtherStart2;
|
|
6821
6990
|
}
|
|
6822
|
-
return
|
|
6991
|
+
return factorySpaceMinMax(effects, ok3, onNotEnoughPrefix, "linePrefix", 4, 4)(code2);
|
|
6823
6992
|
}
|
|
6824
|
-
function
|
|
6825
|
-
|
|
6826
|
-
return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok3(code2) : markdownLineEnding(code2) ? furtherStart2(code2) : nok(code2);
|
|
6993
|
+
function onNotEnoughPrefix(code2) {
|
|
6994
|
+
return markdownLineEnding(code2) ? furtherStart2(code2) : nok(code2);
|
|
6827
6995
|
}
|
|
6828
6996
|
}
|
|
6829
6997
|
|
|
@@ -6877,7 +7045,7 @@ function previous(code2) {
|
|
|
6877
7045
|
function tokenizeCodeText(effects, ok3, nok) {
|
|
6878
7046
|
const self = this;
|
|
6879
7047
|
let sizeOpen = 0;
|
|
6880
|
-
let
|
|
7048
|
+
let size2;
|
|
6881
7049
|
let token;
|
|
6882
7050
|
return start;
|
|
6883
7051
|
function start(code2) {
|
|
@@ -6906,7 +7074,7 @@ function tokenizeCodeText(effects, ok3, nok) {
|
|
|
6906
7074
|
}
|
|
6907
7075
|
if (code2 === 96) {
|
|
6908
7076
|
token = effects.enter("codeTextSequence");
|
|
6909
|
-
|
|
7077
|
+
size2 = 0;
|
|
6910
7078
|
return sequenceClose(code2);
|
|
6911
7079
|
}
|
|
6912
7080
|
if (markdownLineEnding(code2)) {
|
|
@@ -6929,10 +7097,10 @@ function tokenizeCodeText(effects, ok3, nok) {
|
|
|
6929
7097
|
function sequenceClose(code2) {
|
|
6930
7098
|
if (code2 === 96) {
|
|
6931
7099
|
effects.consume(code2);
|
|
6932
|
-
|
|
7100
|
+
size2++;
|
|
6933
7101
|
return sequenceClose;
|
|
6934
7102
|
}
|
|
6935
|
-
if (
|
|
7103
|
+
if (size2 === sizeOpen) {
|
|
6936
7104
|
effects.exit("codeTextSequence");
|
|
6937
7105
|
effects.exit("codeText");
|
|
6938
7106
|
return ok3(code2);
|
|
@@ -7454,7 +7622,7 @@ function factoryDestination(effects, ok3, nok, type, literalType, literalMarkerT
|
|
|
7454
7622
|
// node_modules/micromark-factory-label/index.js
|
|
7455
7623
|
function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
|
|
7456
7624
|
const self = this;
|
|
7457
|
-
let
|
|
7625
|
+
let size2 = 0;
|
|
7458
7626
|
let seen;
|
|
7459
7627
|
return start;
|
|
7460
7628
|
function start(code2) {
|
|
@@ -7466,12 +7634,12 @@ function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
|
|
|
7466
7634
|
return atBreak;
|
|
7467
7635
|
}
|
|
7468
7636
|
function atBreak(code2) {
|
|
7469
|
-
if (
|
|
7637
|
+
if (size2 > 999 || code2 === null || code2 === 91 || code2 === 93 && !seen || // To do: remove in the future once we’ve switched from
|
|
7470
7638
|
// `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,
|
|
7471
7639
|
// which doesn’t need this.
|
|
7472
7640
|
// Hidden footnotes hook.
|
|
7473
7641
|
/* c8 ignore next 3 */
|
|
7474
|
-
code2 === 94 && !
|
|
7642
|
+
code2 === 94 && !size2 && "_hiddenFootnoteSupport" in self.parser.constructs) {
|
|
7475
7643
|
return nok(code2);
|
|
7476
7644
|
}
|
|
7477
7645
|
if (code2 === 93) {
|
|
@@ -7494,7 +7662,7 @@ function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
|
|
|
7494
7662
|
return labelInside(code2);
|
|
7495
7663
|
}
|
|
7496
7664
|
function labelInside(code2) {
|
|
7497
|
-
if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) ||
|
|
7665
|
+
if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size2++ > 999) {
|
|
7498
7666
|
effects.exit("chunkString");
|
|
7499
7667
|
return atBreak(code2);
|
|
7500
7668
|
}
|
|
@@ -7505,7 +7673,7 @@ function factoryLabel(effects, ok3, nok, type, markerType, stringType) {
|
|
|
7505
7673
|
function labelEscape(code2) {
|
|
7506
7674
|
if (code2 === 91 || code2 === 92 || code2 === 93) {
|
|
7507
7675
|
effects.consume(code2);
|
|
7508
|
-
|
|
7676
|
+
size2++;
|
|
7509
7677
|
return labelInside;
|
|
7510
7678
|
}
|
|
7511
7679
|
return labelInside(code2);
|
|
@@ -7709,8 +7877,6 @@ var headingAtx = {
|
|
|
7709
7877
|
function resolveHeadingAtx(events, context) {
|
|
7710
7878
|
let contentEnd = events.length - 2;
|
|
7711
7879
|
let contentStart = 3;
|
|
7712
|
-
let content3;
|
|
7713
|
-
let text4;
|
|
7714
7880
|
if (events[contentStart][1].type === "whitespace") {
|
|
7715
7881
|
contentStart += 2;
|
|
7716
7882
|
}
|
|
@@ -7721,12 +7887,12 @@ function resolveHeadingAtx(events, context) {
|
|
|
7721
7887
|
contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;
|
|
7722
7888
|
}
|
|
7723
7889
|
if (contentEnd > contentStart) {
|
|
7724
|
-
content3 = {
|
|
7890
|
+
const content3 = {
|
|
7725
7891
|
type: "atxHeadingText",
|
|
7726
7892
|
start: events[contentStart][1].start,
|
|
7727
7893
|
end: events[contentEnd][1].end
|
|
7728
7894
|
};
|
|
7729
|
-
text4 = {
|
|
7895
|
+
const text4 = {
|
|
7730
7896
|
type: "chunkText",
|
|
7731
7897
|
start: events[contentStart][1].start,
|
|
7732
7898
|
end: events[contentEnd][1].end,
|
|
@@ -7737,7 +7903,7 @@ function resolveHeadingAtx(events, context) {
|
|
|
7737
7903
|
return events;
|
|
7738
7904
|
}
|
|
7739
7905
|
function tokenizeHeadingAtx(effects, ok3, nok) {
|
|
7740
|
-
let
|
|
7906
|
+
let size2 = 0;
|
|
7741
7907
|
return start;
|
|
7742
7908
|
function start(code2) {
|
|
7743
7909
|
effects.enter("atxHeading");
|
|
@@ -7748,7 +7914,7 @@ function tokenizeHeadingAtx(effects, ok3, nok) {
|
|
|
7748
7914
|
return sequenceOpen(code2);
|
|
7749
7915
|
}
|
|
7750
7916
|
function sequenceOpen(code2) {
|
|
7751
|
-
if (code2 === 35 &&
|
|
7917
|
+
if (code2 === 35 && size2++ < 6) {
|
|
7752
7918
|
effects.consume(code2);
|
|
7753
7919
|
return sequenceOpen;
|
|
7754
7920
|
}
|
|
@@ -7869,10 +8035,6 @@ var blankLineBefore = {
|
|
|
7869
8035
|
partial: true,
|
|
7870
8036
|
tokenize: tokenizeBlankLineBefore
|
|
7871
8037
|
};
|
|
7872
|
-
var nonLazyContinuationStart = {
|
|
7873
|
-
partial: true,
|
|
7874
|
-
tokenize: tokenizeNonLazyContinuationStart
|
|
7875
|
-
};
|
|
7876
8038
|
function resolveToHtmlFlow(events) {
|
|
7877
8039
|
let index2 = events.length;
|
|
7878
8040
|
while (index2--) {
|
|
@@ -8134,7 +8296,7 @@ function tokenizeHtmlFlow(effects, ok3, nok) {
|
|
|
8134
8296
|
return continuation;
|
|
8135
8297
|
}
|
|
8136
8298
|
function continuationStart(code2) {
|
|
8137
|
-
return effects.check(
|
|
8299
|
+
return effects.check(nonLazyContinuation, continuationStartNonLazy, continuationAfter)(code2);
|
|
8138
8300
|
}
|
|
8139
8301
|
function continuationStartNonLazy(code2) {
|
|
8140
8302
|
effects.enter("lineEnding");
|
|
@@ -8211,22 +8373,6 @@ function tokenizeHtmlFlow(effects, ok3, nok) {
|
|
|
8211
8373
|
return ok3(code2);
|
|
8212
8374
|
}
|
|
8213
8375
|
}
|
|
8214
|
-
function tokenizeNonLazyContinuationStart(effects, ok3, nok) {
|
|
8215
|
-
const self = this;
|
|
8216
|
-
return start;
|
|
8217
|
-
function start(code2) {
|
|
8218
|
-
if (markdownLineEnding(code2)) {
|
|
8219
|
-
effects.enter("lineEnding");
|
|
8220
|
-
effects.consume(code2);
|
|
8221
|
-
effects.exit("lineEnding");
|
|
8222
|
-
return after;
|
|
8223
|
-
}
|
|
8224
|
-
return nok(code2);
|
|
8225
|
-
}
|
|
8226
|
-
function after(code2) {
|
|
8227
|
-
return self.parser.lazy[self.now().line] ? nok(code2) : ok3(code2);
|
|
8228
|
-
}
|
|
8229
|
-
}
|
|
8230
8376
|
function tokenizeBlankLineBefore(effects, ok3, nok) {
|
|
8231
8377
|
return start;
|
|
8232
8378
|
function start(code2) {
|
|
@@ -8579,12 +8725,11 @@ function resolveAllLabelEnd(events) {
|
|
|
8579
8725
|
function resolveToLabelEnd(events, context) {
|
|
8580
8726
|
let index2 = events.length;
|
|
8581
8727
|
let offset = 0;
|
|
8582
|
-
let token;
|
|
8583
8728
|
let open;
|
|
8584
8729
|
let close;
|
|
8585
8730
|
let media;
|
|
8586
8731
|
while (index2--) {
|
|
8587
|
-
token = events[index2][1];
|
|
8732
|
+
const token = events[index2][1];
|
|
8588
8733
|
if (open) {
|
|
8589
8734
|
if (token.type === "link" || token.type === "labelLink" && token._inactive) {
|
|
8590
8735
|
break;
|
|
@@ -8643,14 +8788,14 @@ function resolveToLabelEnd(events, context) {
|
|
|
8643
8788
|
}
|
|
8644
8789
|
function tokenizeLabelEnd(effects, ok3, nok) {
|
|
8645
8790
|
const self = this;
|
|
8646
|
-
|
|
8791
|
+
const labelStarts = self._labelStarts;
|
|
8647
8792
|
let labelStart;
|
|
8648
8793
|
let defined;
|
|
8649
|
-
|
|
8650
|
-
|
|
8651
|
-
|
|
8652
|
-
break;
|
|
8794
|
+
if (labelStarts) {
|
|
8795
|
+
while (labelStarts.length > 0 && labelStarts[labelStarts.length - 1]._balanced) {
|
|
8796
|
+
labelStarts.pop();
|
|
8653
8797
|
}
|
|
8798
|
+
labelStart = labelStarts[labelStarts.length - 1];
|
|
8654
8799
|
}
|
|
8655
8800
|
return start;
|
|
8656
8801
|
function start(code2) {
|
|
@@ -8684,6 +8829,7 @@ function tokenizeLabelEnd(effects, ok3, nok) {
|
|
|
8684
8829
|
return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code2);
|
|
8685
8830
|
}
|
|
8686
8831
|
function labelEndOk(code2) {
|
|
8832
|
+
labelStarts.pop();
|
|
8687
8833
|
return ok3(code2);
|
|
8688
8834
|
}
|
|
8689
8835
|
function labelEndNok(code2) {
|
|
@@ -8777,6 +8923,7 @@ var labelStartImage = {
|
|
|
8777
8923
|
};
|
|
8778
8924
|
function tokenizeLabelStartImage(effects, ok3, nok) {
|
|
8779
8925
|
const self = this;
|
|
8926
|
+
let labelImage;
|
|
8780
8927
|
return start;
|
|
8781
8928
|
function start(code2) {
|
|
8782
8929
|
effects.enter("labelImage");
|
|
@@ -8790,13 +8937,18 @@ function tokenizeLabelStartImage(effects, ok3, nok) {
|
|
|
8790
8937
|
effects.enter("labelMarker");
|
|
8791
8938
|
effects.consume(code2);
|
|
8792
8939
|
effects.exit("labelMarker");
|
|
8793
|
-
effects.exit("labelImage");
|
|
8940
|
+
labelImage = effects.exit("labelImage");
|
|
8794
8941
|
return after;
|
|
8795
8942
|
}
|
|
8796
8943
|
return nok(code2);
|
|
8797
8944
|
}
|
|
8798
8945
|
function after(code2) {
|
|
8799
|
-
|
|
8946
|
+
if (code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs) {
|
|
8947
|
+
return nok(code2);
|
|
8948
|
+
}
|
|
8949
|
+
self._labelStarts = self._labelStarts || [];
|
|
8950
|
+
self._labelStarts.push(labelImage);
|
|
8951
|
+
return ok3(code2);
|
|
8800
8952
|
}
|
|
8801
8953
|
}
|
|
8802
8954
|
|
|
@@ -8808,17 +8960,23 @@ var labelStartLink = {
|
|
|
8808
8960
|
};
|
|
8809
8961
|
function tokenizeLabelStartLink(effects, ok3, nok) {
|
|
8810
8962
|
const self = this;
|
|
8963
|
+
let labelLink;
|
|
8811
8964
|
return start;
|
|
8812
8965
|
function start(code2) {
|
|
8813
8966
|
effects.enter("labelLink");
|
|
8814
8967
|
effects.enter("labelMarker");
|
|
8815
8968
|
effects.consume(code2);
|
|
8816
8969
|
effects.exit("labelMarker");
|
|
8817
|
-
effects.exit("labelLink");
|
|
8970
|
+
labelLink = effects.exit("labelLink");
|
|
8818
8971
|
return after;
|
|
8819
8972
|
}
|
|
8820
8973
|
function after(code2) {
|
|
8821
|
-
|
|
8974
|
+
if (code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs) {
|
|
8975
|
+
return nok(code2);
|
|
8976
|
+
}
|
|
8977
|
+
self._labelStarts = self._labelStarts || [];
|
|
8978
|
+
self._labelStarts.push(labelLink);
|
|
8979
|
+
return ok3(code2);
|
|
8822
8980
|
}
|
|
8823
8981
|
}
|
|
8824
8982
|
|
|
@@ -8843,7 +9001,7 @@ var thematicBreak = {
|
|
|
8843
9001
|
tokenize: tokenizeThematicBreak
|
|
8844
9002
|
};
|
|
8845
9003
|
function tokenizeThematicBreak(effects, ok3, nok) {
|
|
8846
|
-
let
|
|
9004
|
+
let size2 = 0;
|
|
8847
9005
|
let marker;
|
|
8848
9006
|
return start;
|
|
8849
9007
|
function start(code2) {
|
|
@@ -8859,7 +9017,7 @@ function tokenizeThematicBreak(effects, ok3, nok) {
|
|
|
8859
9017
|
effects.enter("thematicBreakSequence");
|
|
8860
9018
|
return sequence(code2);
|
|
8861
9019
|
}
|
|
8862
|
-
if (
|
|
9020
|
+
if (size2 >= 3 && (code2 === null || markdownLineEnding(code2))) {
|
|
8863
9021
|
effects.exit("thematicBreak");
|
|
8864
9022
|
return ok3(code2);
|
|
8865
9023
|
}
|
|
@@ -8868,7 +9026,7 @@ function tokenizeThematicBreak(effects, ok3, nok) {
|
|
|
8868
9026
|
function sequence(code2) {
|
|
8869
9027
|
if (code2 === marker) {
|
|
8870
9028
|
effects.consume(code2);
|
|
8871
|
-
|
|
9029
|
+
size2++;
|
|
8872
9030
|
return sequence;
|
|
8873
9031
|
}
|
|
8874
9032
|
effects.exit("thematicBreakSequence");
|
|
@@ -8897,7 +9055,7 @@ function tokenizeListStart(effects, ok3, nok) {
|
|
|
8897
9055
|
const self = this;
|
|
8898
9056
|
const tail = self.events[self.events.length - 1];
|
|
8899
9057
|
let initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0;
|
|
8900
|
-
let
|
|
9058
|
+
let size2 = 0;
|
|
8901
9059
|
return start;
|
|
8902
9060
|
function start(code2) {
|
|
8903
9061
|
const kind = self.containerState.type || (code2 === 42 || code2 === 43 || code2 === 45 ? "listUnordered" : "listOrdered");
|
|
@@ -8921,11 +9079,11 @@ function tokenizeListStart(effects, ok3, nok) {
|
|
|
8921
9079
|
return nok(code2);
|
|
8922
9080
|
}
|
|
8923
9081
|
function inside(code2) {
|
|
8924
|
-
if (asciiDigit(code2) && ++
|
|
9082
|
+
if (asciiDigit(code2) && ++size2 < 10) {
|
|
8925
9083
|
effects.consume(code2);
|
|
8926
9084
|
return inside;
|
|
8927
9085
|
}
|
|
8928
|
-
if ((!self.interrupt ||
|
|
9086
|
+
if ((!self.interrupt || size2 < 2) && (self.containerState.marker ? code2 === self.containerState.marker : code2 === 41 || code2 === 46)) {
|
|
8929
9087
|
effects.exit("listItemValue");
|
|
8930
9088
|
return atMarker(code2);
|
|
8931
9089
|
}
|
|
@@ -9013,6 +9171,7 @@ var setextUnderline = {
|
|
|
9013
9171
|
tokenize: tokenizeSetextUnderline
|
|
9014
9172
|
};
|
|
9015
9173
|
function resolveToSetextUnderline(events, context) {
|
|
9174
|
+
const editMap = new EditMap();
|
|
9016
9175
|
let index2 = events.length;
|
|
9017
9176
|
let content3;
|
|
9018
9177
|
let text4;
|
|
@@ -9028,7 +9187,7 @@ function resolveToSetextUnderline(events, context) {
|
|
|
9028
9187
|
}
|
|
9029
9188
|
} else {
|
|
9030
9189
|
if (events[index2][1].type === "content") {
|
|
9031
|
-
|
|
9190
|
+
editMap.add(index2, 1, []);
|
|
9032
9191
|
}
|
|
9033
9192
|
if (!definition2 && events[index2][1].type === "definition") {
|
|
9034
9193
|
definition2 = index2;
|
|
@@ -9046,15 +9205,16 @@ function resolveToSetextUnderline(events, context) {
|
|
|
9046
9205
|
};
|
|
9047
9206
|
events[text4][1].type = "setextHeadingText";
|
|
9048
9207
|
if (definition2) {
|
|
9049
|
-
|
|
9050
|
-
|
|
9208
|
+
editMap.add(text4, 0, [["enter", heading, context]]);
|
|
9209
|
+
editMap.add(definition2 + 1, 0, [["exit", events[content3][1], context]]);
|
|
9051
9210
|
events[content3][1].end = {
|
|
9052
9211
|
...events[definition2][1].end
|
|
9053
9212
|
};
|
|
9054
9213
|
} else {
|
|
9055
9214
|
events[content3][1] = heading;
|
|
9056
9215
|
}
|
|
9057
|
-
events.
|
|
9216
|
+
editMap.add(events.length, 0, [["exit", heading, context]]);
|
|
9217
|
+
editMap.consume(events);
|
|
9058
9218
|
return events;
|
|
9059
9219
|
}
|
|
9060
9220
|
function tokenizeSetextUnderline(effects, ok3, nok) {
|
|
@@ -9214,6 +9374,7 @@ function createResolver(extraResolver) {
|
|
|
9214
9374
|
}
|
|
9215
9375
|
}
|
|
9216
9376
|
function resolveAllLineSuffixes(events, context) {
|
|
9377
|
+
const editMap = new EditMap();
|
|
9217
9378
|
let eventIndex = 0;
|
|
9218
9379
|
while (++eventIndex <= events.length) {
|
|
9219
9380
|
if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") {
|
|
@@ -9221,21 +9382,23 @@ function resolveAllLineSuffixes(events, context) {
|
|
|
9221
9382
|
const chunks = context.sliceStream(data);
|
|
9222
9383
|
let index2 = chunks.length;
|
|
9223
9384
|
let bufferIndex = -1;
|
|
9224
|
-
let
|
|
9385
|
+
let size2 = 0;
|
|
9225
9386
|
let tabs;
|
|
9226
9387
|
while (index2--) {
|
|
9227
9388
|
const chunk = chunks[index2];
|
|
9228
9389
|
if (typeof chunk === "string") {
|
|
9229
9390
|
bufferIndex = chunk.length;
|
|
9230
9391
|
while (chunk.charCodeAt(bufferIndex - 1) === 32) {
|
|
9231
|
-
|
|
9392
|
+
size2++;
|
|
9232
9393
|
bufferIndex--;
|
|
9233
9394
|
}
|
|
9234
|
-
if (bufferIndex)
|
|
9395
|
+
if (bufferIndex) {
|
|
9396
|
+
break;
|
|
9397
|
+
}
|
|
9235
9398
|
bufferIndex = -1;
|
|
9236
9399
|
} else if (chunk === -2) {
|
|
9237
9400
|
tabs = true;
|
|
9238
|
-
|
|
9401
|
+
size2++;
|
|
9239
9402
|
} else if (chunk === -1) {
|
|
9240
9403
|
} else {
|
|
9241
9404
|
index2++;
|
|
@@ -9243,17 +9406,17 @@ function resolveAllLineSuffixes(events, context) {
|
|
|
9243
9406
|
}
|
|
9244
9407
|
}
|
|
9245
9408
|
if (context._contentTypeTextTrailing && eventIndex === events.length) {
|
|
9246
|
-
|
|
9409
|
+
size2 = 0;
|
|
9247
9410
|
}
|
|
9248
|
-
if (
|
|
9411
|
+
if (size2) {
|
|
9249
9412
|
const token = {
|
|
9250
|
-
type: eventIndex === events.length || tabs ||
|
|
9413
|
+
type: eventIndex === events.length || tabs || size2 < 2 ? "lineSuffix" : "hardBreakTrailing",
|
|
9251
9414
|
start: {
|
|
9252
9415
|
_bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex,
|
|
9253
9416
|
_index: data.start._index + index2,
|
|
9254
9417
|
line: data.end.line,
|
|
9255
|
-
column: data.end.column -
|
|
9256
|
-
offset: data.end.offset -
|
|
9418
|
+
column: data.end.column - size2,
|
|
9419
|
+
offset: data.end.offset - size2
|
|
9257
9420
|
},
|
|
9258
9421
|
end: {
|
|
9259
9422
|
...data.end
|
|
@@ -9265,13 +9428,13 @@ function resolveAllLineSuffixes(events, context) {
|
|
|
9265
9428
|
if (data.start.offset === data.end.offset) {
|
|
9266
9429
|
Object.assign(data, token);
|
|
9267
9430
|
} else {
|
|
9268
|
-
|
|
9269
|
-
eventIndex += 2;
|
|
9431
|
+
editMap.add(eventIndex, 0, [["enter", token, context], ["exit", token, context]]);
|
|
9270
9432
|
}
|
|
9271
9433
|
}
|
|
9272
9434
|
eventIndex++;
|
|
9273
9435
|
}
|
|
9274
9436
|
}
|
|
9437
|
+
editMap.consume(events);
|
|
9275
9438
|
return events;
|
|
9276
9439
|
}
|
|
9277
9440
|
|
|
@@ -9429,11 +9592,10 @@ function createTokenizer(parser, initialize, from) {
|
|
|
9429
9592
|
accountForPotentialSkip();
|
|
9430
9593
|
}
|
|
9431
9594
|
function main() {
|
|
9432
|
-
let chunkIndex;
|
|
9433
9595
|
while (point4._index < chunks.length) {
|
|
9434
9596
|
const chunk = chunks[point4._index];
|
|
9435
9597
|
if (typeof chunk === "string") {
|
|
9436
|
-
chunkIndex = point4._index;
|
|
9598
|
+
const chunkIndex = point4._index;
|
|
9437
9599
|
if (point4._bufferIndex < 0) {
|
|
9438
9600
|
point4._bufferIndex = 0;
|
|
9439
9601
|
}
|
|
@@ -9641,30 +9803,34 @@ function serializeChunks(chunks, expandTabs) {
|
|
|
9641
9803
|
let value;
|
|
9642
9804
|
if (typeof chunk === "string") {
|
|
9643
9805
|
value = chunk;
|
|
9644
|
-
} else
|
|
9645
|
-
|
|
9646
|
-
|
|
9647
|
-
|
|
9648
|
-
|
|
9649
|
-
|
|
9650
|
-
|
|
9651
|
-
|
|
9652
|
-
|
|
9653
|
-
|
|
9654
|
-
|
|
9655
|
-
|
|
9656
|
-
|
|
9657
|
-
|
|
9658
|
-
|
|
9659
|
-
|
|
9660
|
-
|
|
9661
|
-
|
|
9662
|
-
|
|
9663
|
-
|
|
9664
|
-
|
|
9665
|
-
|
|
9666
|
-
|
|
9667
|
-
|
|
9806
|
+
} else {
|
|
9807
|
+
switch (chunk) {
|
|
9808
|
+
case -5: {
|
|
9809
|
+
value = "\r";
|
|
9810
|
+
break;
|
|
9811
|
+
}
|
|
9812
|
+
case -4: {
|
|
9813
|
+
value = "\n";
|
|
9814
|
+
break;
|
|
9815
|
+
}
|
|
9816
|
+
case -3: {
|
|
9817
|
+
value = "\r\n";
|
|
9818
|
+
break;
|
|
9819
|
+
}
|
|
9820
|
+
case -2: {
|
|
9821
|
+
value = expandTabs ? " " : " ";
|
|
9822
|
+
break;
|
|
9823
|
+
}
|
|
9824
|
+
case -1: {
|
|
9825
|
+
if (!expandTabs && atTab) {
|
|
9826
|
+
continue;
|
|
9827
|
+
}
|
|
9828
|
+
value = " ";
|
|
9829
|
+
break;
|
|
9830
|
+
}
|
|
9831
|
+
default: {
|
|
9832
|
+
value = String.fromCharCode(chunk);
|
|
9833
|
+
}
|
|
9668
9834
|
}
|
|
9669
9835
|
}
|
|
9670
9836
|
atTab = chunk === -2;
|
|
@@ -9715,14 +9881,9 @@ function preprocess() {
|
|
|
9715
9881
|
let atCarriageReturn;
|
|
9716
9882
|
return preprocessor;
|
|
9717
9883
|
function preprocessor(value, encoding, end) {
|
|
9718
|
-
const chunks = [];
|
|
9719
|
-
let match;
|
|
9720
|
-
let next;
|
|
9721
|
-
let startPosition;
|
|
9722
|
-
let endPosition;
|
|
9723
|
-
let code2;
|
|
9724
9884
|
value = buffer + (typeof value === "string" ? value.toString() : new TextDecoder(encoding || void 0).decode(value));
|
|
9725
|
-
|
|
9885
|
+
const chunks = [];
|
|
9886
|
+
let startPosition = 0;
|
|
9726
9887
|
buffer = "";
|
|
9727
9888
|
if (start) {
|
|
9728
9889
|
if (value.charCodeAt(0) === 65279) {
|
|
@@ -9732,9 +9893,9 @@ function preprocess() {
|
|
|
9732
9893
|
}
|
|
9733
9894
|
while (startPosition < value.length) {
|
|
9734
9895
|
search.lastIndex = startPosition;
|
|
9735
|
-
match = search.exec(value);
|
|
9736
|
-
endPosition = match && match.index !== void 0 ? match.index : value.length;
|
|
9737
|
-
code2 = value.charCodeAt(endPosition);
|
|
9896
|
+
const match = search.exec(value);
|
|
9897
|
+
const endPosition = match && match.index !== void 0 ? match.index : value.length;
|
|
9898
|
+
const code2 = value.charCodeAt(endPosition);
|
|
9738
9899
|
if (!match) {
|
|
9739
9900
|
buffer = value.slice(startPosition);
|
|
9740
9901
|
break;
|
|
@@ -9758,9 +9919,11 @@ function preprocess() {
|
|
|
9758
9919
|
break;
|
|
9759
9920
|
}
|
|
9760
9921
|
case 9: {
|
|
9761
|
-
next = Math.ceil(column / 4) * 4;
|
|
9922
|
+
const next = Math.ceil(column / 4) * 4;
|
|
9762
9923
|
chunks.push(-2);
|
|
9763
|
-
while (column++ < next)
|
|
9924
|
+
while (column++ < next) {
|
|
9925
|
+
chunks.push(-1);
|
|
9926
|
+
}
|
|
9764
9927
|
break;
|
|
9765
9928
|
}
|
|
9766
9929
|
case 10: {
|
|
@@ -9777,8 +9940,12 @@ function preprocess() {
|
|
|
9777
9940
|
startPosition = endPosition + 1;
|
|
9778
9941
|
}
|
|
9779
9942
|
if (end) {
|
|
9780
|
-
if (atCarriageReturn)
|
|
9781
|
-
|
|
9943
|
+
if (atCarriageReturn) {
|
|
9944
|
+
chunks.push(-5);
|
|
9945
|
+
}
|
|
9946
|
+
if (buffer) {
|
|
9947
|
+
chunks.push(buffer);
|
|
9948
|
+
}
|
|
9782
9949
|
chunks.push(null);
|
|
9783
9950
|
}
|
|
9784
9951
|
return chunks;
|
|
@@ -10712,15 +10879,15 @@ function tokenizeProtocolAutolink(effects, ok3, nok) {
|
|
|
10712
10879
|
}
|
|
10713
10880
|
}
|
|
10714
10881
|
function tokenizeWwwPrefix(effects, ok3, nok) {
|
|
10715
|
-
let
|
|
10882
|
+
let size2 = 0;
|
|
10716
10883
|
return wwwPrefixInside;
|
|
10717
10884
|
function wwwPrefixInside(code2) {
|
|
10718
|
-
if ((code2 === 87 || code2 === 119) &&
|
|
10719
|
-
|
|
10885
|
+
if ((code2 === 87 || code2 === 119) && size2 < 3) {
|
|
10886
|
+
size2++;
|
|
10720
10887
|
effects.consume(code2);
|
|
10721
10888
|
return wwwPrefixInside;
|
|
10722
10889
|
}
|
|
10723
|
-
if (code2 === 46 &&
|
|
10890
|
+
if (code2 === 46 && size2 === 3) {
|
|
10724
10891
|
effects.consume(code2);
|
|
10725
10892
|
return wwwPrefixAfter;
|
|
10726
10893
|
}
|
|
@@ -11006,7 +11173,7 @@ function resolveToPotentialGfmFootnoteCall(events, context) {
|
|
|
11006
11173
|
function tokenizeGfmFootnoteCall(effects, ok3, nok) {
|
|
11007
11174
|
const self = this;
|
|
11008
11175
|
const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);
|
|
11009
|
-
let
|
|
11176
|
+
let size2 = 0;
|
|
11010
11177
|
let data;
|
|
11011
11178
|
return start;
|
|
11012
11179
|
function start(code2) {
|
|
@@ -11028,7 +11195,7 @@ function tokenizeGfmFootnoteCall(effects, ok3, nok) {
|
|
|
11028
11195
|
function callData(code2) {
|
|
11029
11196
|
if (
|
|
11030
11197
|
// Too long.
|
|
11031
|
-
|
|
11198
|
+
size2 > 999 || // Closing brace with nothing.
|
|
11032
11199
|
code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.
|
|
11033
11200
|
// `\n` and `[` not being supported makes sense.
|
|
11034
11201
|
code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)
|
|
@@ -11050,14 +11217,14 @@ function tokenizeGfmFootnoteCall(effects, ok3, nok) {
|
|
|
11050
11217
|
if (!markdownLineEndingOrSpace(code2)) {
|
|
11051
11218
|
data = true;
|
|
11052
11219
|
}
|
|
11053
|
-
|
|
11220
|
+
size2++;
|
|
11054
11221
|
effects.consume(code2);
|
|
11055
11222
|
return code2 === 92 ? callEscape : callData;
|
|
11056
11223
|
}
|
|
11057
11224
|
function callEscape(code2) {
|
|
11058
11225
|
if (code2 === 91 || code2 === 92 || code2 === 93) {
|
|
11059
11226
|
effects.consume(code2);
|
|
11060
|
-
|
|
11227
|
+
size2++;
|
|
11061
11228
|
return callData;
|
|
11062
11229
|
}
|
|
11063
11230
|
return callData(code2);
|
|
@@ -11067,7 +11234,7 @@ function tokenizeDefinitionStart(effects, ok3, nok) {
|
|
|
11067
11234
|
const self = this;
|
|
11068
11235
|
const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);
|
|
11069
11236
|
let identifier;
|
|
11070
|
-
let
|
|
11237
|
+
let size2 = 0;
|
|
11071
11238
|
let data;
|
|
11072
11239
|
return start;
|
|
11073
11240
|
function start(code2) {
|
|
@@ -11092,7 +11259,7 @@ function tokenizeDefinitionStart(effects, ok3, nok) {
|
|
|
11092
11259
|
function labelInside(code2) {
|
|
11093
11260
|
if (
|
|
11094
11261
|
// Too long.
|
|
11095
|
-
|
|
11262
|
+
size2 > 999 || // Closing brace with nothing.
|
|
11096
11263
|
code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.
|
|
11097
11264
|
// `\n` and `[` not being supported makes sense.
|
|
11098
11265
|
code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)
|
|
@@ -11112,14 +11279,14 @@ function tokenizeDefinitionStart(effects, ok3, nok) {
|
|
|
11112
11279
|
if (!markdownLineEndingOrSpace(code2)) {
|
|
11113
11280
|
data = true;
|
|
11114
11281
|
}
|
|
11115
|
-
|
|
11282
|
+
size2++;
|
|
11116
11283
|
effects.consume(code2);
|
|
11117
11284
|
return code2 === 92 ? labelEscape : labelInside;
|
|
11118
11285
|
}
|
|
11119
11286
|
function labelEscape(code2) {
|
|
11120
11287
|
if (code2 === 91 || code2 === 92 || code2 === 93) {
|
|
11121
11288
|
effects.consume(code2);
|
|
11122
|
-
|
|
11289
|
+
size2++;
|
|
11123
11290
|
return labelInside;
|
|
11124
11291
|
}
|
|
11125
11292
|
return labelInside(code2);
|
|
@@ -11222,7 +11389,7 @@ function gfmStrikethrough(options) {
|
|
|
11222
11389
|
function tokenizeStrikethrough(effects, ok3, nok) {
|
|
11223
11390
|
const previous3 = this.previous;
|
|
11224
11391
|
const events = this.events;
|
|
11225
|
-
let
|
|
11392
|
+
let size2 = 0;
|
|
11226
11393
|
return start;
|
|
11227
11394
|
function start(code2) {
|
|
11228
11395
|
if (previous3 === 126 && events[events.length - 1][1].type !== "characterEscape") {
|
|
@@ -11234,12 +11401,12 @@ function gfmStrikethrough(options) {
|
|
|
11234
11401
|
function more(code2) {
|
|
11235
11402
|
const before = classifyCharacter(previous3);
|
|
11236
11403
|
if (code2 === 126) {
|
|
11237
|
-
if (
|
|
11404
|
+
if (size2 > 1) return nok(code2);
|
|
11238
11405
|
effects.consume(code2);
|
|
11239
|
-
|
|
11406
|
+
size2++;
|
|
11240
11407
|
return more;
|
|
11241
11408
|
}
|
|
11242
|
-
if (
|
|
11409
|
+
if (size2 < 2 && !single) return nok(code2);
|
|
11243
11410
|
const token = effects.exit("strikethroughSequenceTemporary");
|
|
11244
11411
|
const after = classifyCharacter(code2);
|
|
11245
11412
|
token._open = !after || after === 2 && Boolean(before);
|
|
@@ -11250,23 +11417,28 @@ function gfmStrikethrough(options) {
|
|
|
11250
11417
|
}
|
|
11251
11418
|
|
|
11252
11419
|
// node_modules/micromark-extension-gfm-table/lib/edit-map.js
|
|
11253
|
-
var
|
|
11420
|
+
var EditMap2 = class {
|
|
11254
11421
|
/**
|
|
11255
11422
|
* Create a new edit map.
|
|
11256
11423
|
*/
|
|
11257
11424
|
constructor() {
|
|
11258
11425
|
this.map = [];
|
|
11426
|
+
this.index = /* @__PURE__ */ new Map();
|
|
11259
11427
|
}
|
|
11260
11428
|
/**
|
|
11261
11429
|
* Create an edit: a remove and/or add at a certain place.
|
|
11262
11430
|
*
|
|
11263
11431
|
* @param {number} index
|
|
11432
|
+
* Index at which to apply the edit.
|
|
11264
11433
|
* @param {number} remove
|
|
11434
|
+
* Count of items to remove at the index.
|
|
11265
11435
|
* @param {Array<Event>} add
|
|
11436
|
+
* Items to add at the index.
|
|
11266
11437
|
* @returns {undefined}
|
|
11438
|
+
* Nothing.
|
|
11267
11439
|
*/
|
|
11268
11440
|
add(index2, remove, add) {
|
|
11269
|
-
|
|
11441
|
+
addImplementation2(this, index2, remove, add);
|
|
11270
11442
|
}
|
|
11271
11443
|
// To do: add this when moving to `micromark`.
|
|
11272
11444
|
// /**
|
|
@@ -11284,7 +11456,9 @@ var EditMap = class {
|
|
|
11284
11456
|
* Done, change the events.
|
|
11285
11457
|
*
|
|
11286
11458
|
* @param {Array<Event>} events
|
|
11459
|
+
* List of events to apply the edits to.
|
|
11287
11460
|
* @returns {undefined}
|
|
11461
|
+
* Nothing.
|
|
11288
11462
|
*/
|
|
11289
11463
|
consume(events) {
|
|
11290
11464
|
this.map.sort(function(a, b) {
|
|
@@ -11310,22 +11484,22 @@ var EditMap = class {
|
|
|
11310
11484
|
slice = vecs.pop();
|
|
11311
11485
|
}
|
|
11312
11486
|
this.map.length = 0;
|
|
11487
|
+
this.index.clear();
|
|
11313
11488
|
}
|
|
11314
11489
|
};
|
|
11315
|
-
function
|
|
11316
|
-
let index2 = 0;
|
|
11490
|
+
function addImplementation2(editMap, at, remove, add) {
|
|
11317
11491
|
if (remove === 0 && add.length === 0) {
|
|
11318
11492
|
return;
|
|
11319
11493
|
}
|
|
11320
|
-
|
|
11321
|
-
|
|
11322
|
-
|
|
11323
|
-
|
|
11324
|
-
|
|
11325
|
-
}
|
|
11326
|
-
index2 += 1;
|
|
11494
|
+
const existing = editMap.index.get(at);
|
|
11495
|
+
if (existing) {
|
|
11496
|
+
existing[1] += remove;
|
|
11497
|
+
existing[2].push(...add);
|
|
11498
|
+
return;
|
|
11327
11499
|
}
|
|
11328
|
-
|
|
11500
|
+
const change = [at, remove, add];
|
|
11501
|
+
editMap.map.push(change);
|
|
11502
|
+
editMap.index.set(at, change);
|
|
11329
11503
|
}
|
|
11330
11504
|
|
|
11331
11505
|
// node_modules/micromark-extension-gfm-table/lib/infer.js
|
|
@@ -11369,17 +11543,22 @@ function gfmTable() {
|
|
|
11369
11543
|
}
|
|
11370
11544
|
function tokenizeTable(effects, ok3, nok) {
|
|
11371
11545
|
const self = this;
|
|
11372
|
-
let
|
|
11546
|
+
let size2 = 0;
|
|
11373
11547
|
let sizeB = 0;
|
|
11374
11548
|
let seen;
|
|
11375
11549
|
return start;
|
|
11376
11550
|
function start(code2) {
|
|
11377
11551
|
let index2 = self.events.length - 1;
|
|
11378
11552
|
while (index2 > -1) {
|
|
11379
|
-
const
|
|
11553
|
+
const {
|
|
11554
|
+
type
|
|
11555
|
+
} = self.events[index2][1];
|
|
11380
11556
|
if (type === "lineEnding" || // Note: markdown-rs uses `whitespace` instead of `linePrefix`
|
|
11381
|
-
type === "linePrefix")
|
|
11382
|
-
|
|
11557
|
+
type === "linePrefix") {
|
|
11558
|
+
index2--;
|
|
11559
|
+
} else {
|
|
11560
|
+
break;
|
|
11561
|
+
}
|
|
11383
11562
|
}
|
|
11384
11563
|
const tail = index2 > -1 ? self.events[index2][1].type : null;
|
|
11385
11564
|
const next = tail === "tableHead" || tail === "tableRow" ? bodyRowStart : headRowBefore;
|
|
@@ -11423,7 +11602,7 @@ function tokenizeTable(effects, ok3, nok) {
|
|
|
11423
11602
|
sizeB += 1;
|
|
11424
11603
|
if (seen) {
|
|
11425
11604
|
seen = false;
|
|
11426
|
-
|
|
11605
|
+
size2 += 1;
|
|
11427
11606
|
}
|
|
11428
11607
|
if (code2 === 124) {
|
|
11429
11608
|
effects.enter("tableCellDivider");
|
|
@@ -11533,7 +11712,7 @@ function tokenizeTable(effects, ok3, nok) {
|
|
|
11533
11712
|
return headDelimiterBefore(code2);
|
|
11534
11713
|
}
|
|
11535
11714
|
if (code2 === null || markdownLineEnding(code2)) {
|
|
11536
|
-
if (!seen ||
|
|
11715
|
+
if (!seen || size2 !== sizeB) {
|
|
11537
11716
|
return headDelimiterNok(code2);
|
|
11538
11717
|
}
|
|
11539
11718
|
effects.exit("tableDelimiterRow");
|
|
@@ -11593,7 +11772,7 @@ function resolveTable(events, context) {
|
|
|
11593
11772
|
let currentTable;
|
|
11594
11773
|
let currentBody;
|
|
11595
11774
|
let currentCell;
|
|
11596
|
-
const map = new
|
|
11775
|
+
const map = new EditMap2();
|
|
11597
11776
|
while (++index2 < events.length) {
|
|
11598
11777
|
const event = events[index2];
|
|
11599
11778
|
const token = event[1];
|
|
@@ -12335,6 +12514,7 @@ function gfmFootnoteFromMarkdown() {
|
|
|
12335
12514
|
}
|
|
12336
12515
|
|
|
12337
12516
|
// node_modules/mdast-util-gfm-strikethrough/lib/index.js
|
|
12517
|
+
handleDelete.attention = attentionDelete;
|
|
12338
12518
|
handleDelete.peek = peekDelete;
|
|
12339
12519
|
function gfmStrikethroughFromMarkdown() {
|
|
12340
12520
|
return {
|
|
@@ -12344,24 +12524,28 @@ function gfmStrikethroughFromMarkdown() {
|
|
|
12344
12524
|
};
|
|
12345
12525
|
}
|
|
12346
12526
|
function enterStrikethrough(token) {
|
|
12347
|
-
this.enter({ type: "delete", children: [] }, token);
|
|
12527
|
+
this.enter({ type: "delete", children: [], position: void 0 }, token);
|
|
12348
12528
|
}
|
|
12349
12529
|
function exitStrikethrough(token) {
|
|
12350
12530
|
this.exit(token);
|
|
12351
12531
|
}
|
|
12352
12532
|
function handleDelete(node2, _, state, info) {
|
|
12353
12533
|
const tracker = state.createTracker(info);
|
|
12534
|
+
const sequence = state.stack.includes("strikethrough") ? "~" : "~~";
|
|
12354
12535
|
const exit3 = state.enter("strikethrough");
|
|
12355
|
-
let value = tracker.move(
|
|
12536
|
+
let value = tracker.move(sequence);
|
|
12356
12537
|
value += state.containerPhrasing(node2, {
|
|
12357
12538
|
...tracker.current(),
|
|
12358
12539
|
before: value,
|
|
12359
12540
|
after: "~"
|
|
12360
12541
|
});
|
|
12361
|
-
value += tracker.move(
|
|
12542
|
+
value += tracker.move(sequence);
|
|
12362
12543
|
exit3();
|
|
12363
12544
|
return value;
|
|
12364
12545
|
}
|
|
12546
|
+
function attentionDelete() {
|
|
12547
|
+
return { construct: "strikethrough", markers: ["~"], sizes: [2, 1] };
|
|
12548
|
+
}
|
|
12365
12549
|
function peekDelete() {
|
|
12366
12550
|
return "~";
|
|
12367
12551
|
}
|
|
@@ -12616,14 +12800,14 @@ function PendantReader({ inbox, selected, error, anchor, onSelect, onClose, onVi
|
|
|
12616
12800
|
}, [onClose, anchor]);
|
|
12617
12801
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("section", { ref: panel, id: "dsh-partner-pendant-inbox", className: "dsh-partner-pendant-inbox", "aria-label": "\u4F19\u4F34\u6D88\u606F", tabIndex: -1, style: placement, children: [
|
|
12618
12802
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("header", { children: [
|
|
12619
|
-
detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u8FD4\u56DE\u6D88\u606F\u5217\u8868", onClick: () => onSelect(), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.
|
|
12620
|
-
!detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "dsh-partner-pendant-reader-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.
|
|
12803
|
+
detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u8FD4\u56DE\u6D88\u606F\u5217\u8868", onClick: () => onSelect(), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconChevronDownOutlineRegular, { size: 16, className: "dsh-partner-pendant-back" }) }),
|
|
12804
|
+
!detail && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "dsh-partner-pendant-reader-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconNewChatOutlineRegular, { size: 18 }) }),
|
|
12621
12805
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "dsh-partner-pendant-reader-heading", children: [
|
|
12622
12806
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("strong", { children: detail ? detail.companionName : "\u4F19\u4F34\u6D88\u606F" }),
|
|
12623
12807
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("small", { children: detail ? detail.kind === "system" ? "\u63D2\u4EF6\u7CFB\u7EDF\u901A\u77E5" : "\u6765\u81EA\u4F19\u4F34\u7684\u6D88\u606F" : "\u56DE\u590D\u4E0E\u4EFB\u52A1\u52A8\u6001" })
|
|
12624
12808
|
] }),
|
|
12625
12809
|
!!inbox.unread && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "dsh-partner-pendant-reader-count", "aria-label": `${inbox.unread} \u6761\u672A\u8BFB`, children: inbox.unread }),
|
|
12626
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u5173\u95ED\u4F19\u4F34\u6D88\u606F", onClick: (event) => onClose(event.detail === 0), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.
|
|
12810
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", "aria-label": "\u5173\u95ED\u4F19\u4F34\u6D88\u606F", onClick: (event) => onClose(event.detail === 0), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconCloseOutlineRegular, { size: 16 }) })
|
|
12627
12811
|
] }),
|
|
12628
12812
|
error && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { role: "alert", className: "dsh-partner-pendant-error", children: error }),
|
|
12629
12813
|
detail ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
|
|
@@ -12641,7 +12825,7 @@ function PendantReader({ inbox, selected, error, anchor, onSelect, onClose, onVi
|
|
|
12641
12825
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: inbox.items.length })
|
|
12642
12826
|
] }),
|
|
12643
12827
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("button", { type: "button", className: "dsh-partner-pendant-source", onClick: () => onVisit(detail), children: [
|
|
12644
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.
|
|
12828
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconLinkOutlineRegular, { size: 15 }),
|
|
12645
12829
|
detail.kind === "system" ? "\u524D\u5F80\u5347\u7EA7\u8FC1\u79FB" : detail.kind === "task" ? "\u67E5\u770B\u4EFB\u52A1" : detail.kind === "schedule" ? "\u67E5\u770B\u5B9A\u65F6\u4EFB\u52A1" : "\u8FDB\u5165\u4F1A\u8BDD"
|
|
12646
12830
|
] })
|
|
12647
12831
|
] })
|
|
@@ -12664,7 +12848,7 @@ function PendantReader({ inbox, selected, error, anchor, onSelect, onClose, onVi
|
|
|
12664
12848
|
" \u6761"
|
|
12665
12849
|
] }),
|
|
12666
12850
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("button", { type: "button", disabled: !inbox.unread, onClick: onReadAll, children: [
|
|
12667
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.
|
|
12851
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_dsh_client_ui_primitives9.IconCheckOutlineRegular, { size: 14 }),
|
|
12668
12852
|
"\u5168\u90E8\u5DF2\u8BFB"
|
|
12669
12853
|
] })
|
|
12670
12854
|
] })
|
|
@@ -12672,6 +12856,63 @@ function PendantReader({ inbox, selected, error, anchor, onSelect, onClose, onVi
|
|
|
12672
12856
|
] });
|
|
12673
12857
|
}
|
|
12674
12858
|
|
|
12859
|
+
// src/pendant/startup.ts
|
|
12860
|
+
function waitForPendantStartup(signal, doc = document) {
|
|
12861
|
+
return new Promise((resolve, reject) => {
|
|
12862
|
+
const win = doc.defaultView;
|
|
12863
|
+
let timer2 = 0, idle = 0;
|
|
12864
|
+
const started = Date.now();
|
|
12865
|
+
const cleanup = () => {
|
|
12866
|
+
win.clearTimeout(timer2);
|
|
12867
|
+
if (idle) win.cancelIdleCallback?.(idle);
|
|
12868
|
+
doc.removeEventListener("visibilitychange", schedule);
|
|
12869
|
+
doc.removeEventListener("pointerdown", schedule);
|
|
12870
|
+
doc.removeEventListener("keydown", schedule);
|
|
12871
|
+
signal.removeEventListener("abort", abort);
|
|
12872
|
+
};
|
|
12873
|
+
const abort = () => {
|
|
12874
|
+
cleanup();
|
|
12875
|
+
reject(signal.reason ?? new DOMException("Aborted", "AbortError"));
|
|
12876
|
+
};
|
|
12877
|
+
const run = () => {
|
|
12878
|
+
idle = 0;
|
|
12879
|
+
if (signal.aborted) {
|
|
12880
|
+
abort();
|
|
12881
|
+
return;
|
|
12882
|
+
}
|
|
12883
|
+
if (doc.hidden) {
|
|
12884
|
+
schedule();
|
|
12885
|
+
return;
|
|
12886
|
+
}
|
|
12887
|
+
cleanup();
|
|
12888
|
+
resolve();
|
|
12889
|
+
};
|
|
12890
|
+
function schedule() {
|
|
12891
|
+
win.clearTimeout(timer2);
|
|
12892
|
+
if (idle) {
|
|
12893
|
+
win.cancelIdleCallback?.(idle);
|
|
12894
|
+
idle = 0;
|
|
12895
|
+
}
|
|
12896
|
+
if (doc.hidden) return;
|
|
12897
|
+
const elapsed = Date.now() - started;
|
|
12898
|
+
timer2 = win.setTimeout(() => {
|
|
12899
|
+
timer2 = 0;
|
|
12900
|
+
if (win.requestIdleCallback) idle = win.requestIdleCallback(run, { timeout: 1500 });
|
|
12901
|
+
else run();
|
|
12902
|
+
}, Math.max(0, 2e3 - elapsed, Math.min(600, 6e3 - elapsed)));
|
|
12903
|
+
}
|
|
12904
|
+
if (signal.aborted) {
|
|
12905
|
+
abort();
|
|
12906
|
+
return;
|
|
12907
|
+
}
|
|
12908
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
12909
|
+
doc.addEventListener("visibilitychange", schedule);
|
|
12910
|
+
doc.addEventListener("pointerdown", schedule, { passive: true });
|
|
12911
|
+
doc.addEventListener("keydown", schedule);
|
|
12912
|
+
schedule();
|
|
12913
|
+
});
|
|
12914
|
+
}
|
|
12915
|
+
|
|
12675
12916
|
// src/pendant/widget.tsx
|
|
12676
12917
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
12677
12918
|
function messageLabel(notice) {
|
|
@@ -12720,10 +12961,10 @@ function ActivePendant({ controller, settings }) {
|
|
|
12720
12961
|
(0, import_react25.useEffect)(() => {
|
|
12721
12962
|
const abort = new AbortController();
|
|
12722
12963
|
const url = `${PARTNER_API}/pendant/renderer.js`;
|
|
12723
|
-
void import(
|
|
12964
|
+
void waitForPendantStartup(abort.signal).then(() => import(
|
|
12724
12965
|
/* @vite-ignore */
|
|
12725
12966
|
url
|
|
12726
|
-
).then(async (module2) => {
|
|
12967
|
+
)).then(async (module2) => {
|
|
12727
12968
|
if (abort.signal.aborted || !canvas.current || !hit.current) return;
|
|
12728
12969
|
const instance = await module2.createLanyard(canvas.current, hit.current, {
|
|
12729
12970
|
signal: abort.signal,
|
|
@@ -12861,7 +13102,7 @@ function CompanionPicker({ companions, selectedId, onChange }) {
|
|
|
12861
13102
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("strong", { children: current2?.name ?? "\u8FD8\u6CA1\u6709\u4F19\u4F34" }),
|
|
12862
13103
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("small", { children: current2?.role || "\u9009\u62E9\u4F19\u4F34" })
|
|
12863
13104
|
] }),
|
|
12864
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-chevron", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.
|
|
13105
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-chevron", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.IconChevronDownOutlineRegular, { size: 14 }) })
|
|
12865
13106
|
] }),
|
|
12866
13107
|
open && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { ref: list2, id: listId, role: "listbox", "aria-label": "\u9009\u62E9\u4F19\u4F34", className: "dsh-partner-companion-options", onKeyDown: navigate, children: companions.map((item) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("button", { type: "button", role: "option", "aria-selected": item.id === current2?.id, tabIndex: item.id === current2?.id ? 0 : -1, onClick: () => {
|
|
12867
13108
|
dismiss();
|
|
@@ -12872,7 +13113,7 @@ function CompanionPicker({ companions, selectedId, onChange }) {
|
|
|
12872
13113
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("strong", { children: item.name }),
|
|
12873
13114
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("small", { children: item.role })
|
|
12874
13115
|
] }),
|
|
12875
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-check", "aria-hidden": "true", children: item.id === current2?.id && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.
|
|
13116
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "dsh-partner-companion-check", "aria-hidden": "true", children: item.id === current2?.id && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_dsh_client_ui_primitives10.IconCheckOutlineRegular, { size: 14 }) })
|
|
12876
13117
|
] }, item.id)) })
|
|
12877
13118
|
] });
|
|
12878
13119
|
}
|
|
@@ -13288,7 +13529,7 @@ function SkillsPanel() {
|
|
|
13288
13529
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(WorkspaceHero, { eyebrow: "Capability catalog", title: "Skill \u5E02\u573A", detail: "\u96C6\u4E2D\u5B89\u88C5\u548C\u7EF4\u62A4\u5DE5\u4F5C\u80FD\u529B\uFF1B\u5B89\u88C5\u540E\uFF0C\u518D\u4E3A\u9700\u8981\u5B83\u7684\u4F19\u4F34\u5355\u72EC\u542F\u7528\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", disabled: loading, onClick: () => {
|
|
13289
13530
|
void load2(true);
|
|
13290
13531
|
}, children: [
|
|
13291
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13532
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconRefreshOutlineRegular, { size: 15 }),
|
|
13292
13533
|
loading ? "\u540C\u6B65\u4E2D\u2026" : "\u5237\u65B0\u5E02\u573A"
|
|
13293
13534
|
] }) }),
|
|
13294
13535
|
error && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(WorkspaceNotice, { children: error }),
|
|
@@ -13302,15 +13543,15 @@ function SkillsPanel() {
|
|
|
13302
13543
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(WorkspaceBlock, { title: "\u5DF2\u5B89\u88C5", detail: `${catalog.installed.length} \u4E2A\u53EF\u4F9B\u4F19\u4F34\u4F7F\u7528`, actions: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
|
|
13303
13544
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", onClick: () => setImportingSkill(true), children: "\u5BFC\u5165 Skill" }),
|
|
13304
13545
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", onClick: () => setCreatingSkill(true), children: [
|
|
13305
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13546
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
|
|
13306
13547
|
"\u65B0\u5EFA Skill"
|
|
13307
13548
|
] })
|
|
13308
13549
|
] }), children: loading ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CollectionSkeleton, { rows: 2 }) : catalog.installed.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u5B89\u88C5 Skill", detail: "\u53EF\u4EE5\u521B\u5EFA\u81EA\u5DF1\u7684 Skill\uFF0C\u6216\u4ECE\u4E0B\u65B9\u5E02\u573A\u9009\u62E9\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", onClick: () => setCreatingSkill(true), children: [
|
|
13309
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13550
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
|
|
13310
13551
|
"\u65B0\u5EFA\u7B2C\u4E00\u4E2A Skill"
|
|
13311
13552
|
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
|
|
13312
13553
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "dsh-partner-skill-installed is-market", children: visibleInstalled.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("article", { children: [
|
|
13313
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13554
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutlineRegular, { size: 16 }) }),
|
|
13314
13555
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { children: [
|
|
13315
13556
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("strong", { children: skill.displayName }),
|
|
13316
13557
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { children: skill.description }),
|
|
@@ -13324,7 +13565,7 @@ function SkillsPanel() {
|
|
|
13324
13565
|
] }),
|
|
13325
13566
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", className: "is-icon", disabled: busy === skill.id, "aria-label": `\u5378\u8F7D ${skill.displayName}`, onClick: () => {
|
|
13326
13567
|
void uninstall(skill.id);
|
|
13327
|
-
}, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13568
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconTrashOutlineRegular, { size: 15 }) }),
|
|
13328
13569
|
actionError?.kind === "uninstall" && actionError.id === skill.id && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("p", { className: "dsh-partner-skill-action-error", role: "alert", children: [
|
|
13329
13570
|
"\u5378\u8F7D\u5931\u8D25\uFF1A",
|
|
13330
13571
|
actionError.message
|
|
@@ -13338,7 +13579,7 @@ function SkillsPanel() {
|
|
|
13338
13579
|
network.proxyUrl ? " \xB7 \u5DF2\u542F\u7528" : ""
|
|
13339
13580
|
] }),
|
|
13340
13581
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", onClick: () => setAddingSource(true), children: [
|
|
13341
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13582
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
|
|
13342
13583
|
"\u81EA\u5B9A\u4E49\u6E90"
|
|
13343
13584
|
] })
|
|
13344
13585
|
] }), children: [
|
|
@@ -13370,7 +13611,7 @@ function SkillsPanel() {
|
|
|
13370
13611
|
entry.version
|
|
13371
13612
|
] }),
|
|
13372
13613
|
current2 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", disabled: true, children: [
|
|
13373
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13614
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutlineRegular, { size: 14 }),
|
|
13374
13615
|
"\u5DF2\u5B89\u88C5"
|
|
13375
13616
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", disabled: busy === entry.id, "aria-describedby": errorId, onClick: () => {
|
|
13376
13617
|
void install(entry);
|
|
@@ -13441,7 +13682,7 @@ function CompanionSkillSettings({ companionId, onBusyChange }) {
|
|
|
13441
13682
|
" \u4E2A\u542F\u7528"
|
|
13442
13683
|
] }),
|
|
13443
13684
|
catalog.installed.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "button", "aria-expanded": selecting, onClick: () => setSelecting((value) => !value), children: [
|
|
13444
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13685
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
|
|
13445
13686
|
"\u6DFB\u52A0 Skill"
|
|
13446
13687
|
] })
|
|
13447
13688
|
] })
|
|
@@ -13469,7 +13710,7 @@ function CompanionSkillSettings({ companionId, onBusyChange }) {
|
|
|
13469
13710
|
] }),
|
|
13470
13711
|
catalog.installed.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "dsh-partner-feature-empty", children: "\u5C1A\u672A\u5B89\u88C5 Skill\uFF0C\u8BF7\u5148\u4ECE\u5DE6\u4FA7\u7684 Skill \u5E02\u573A\u5B89\u88C5\u3002" }) : enabledSkills.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "dsh-partner-feature-empty", children: "\u5F53\u524D\u4F19\u4F34\u8FD8\u6CA1\u6709\u542F\u7528 Skill\u3002\u70B9\u51FB\u201C\u6DFB\u52A0 Skill\u201D\u9009\u62E9\u9700\u8981\u7684\u80FD\u529B\u3002" }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
|
|
13471
13712
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "dsh-partner-skill-installed is-binding", children: visibleEnabledSkills.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("article", { children: [
|
|
13472
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13713
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-mark", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCheckOutlineRegular, { size: 16 }) }),
|
|
13473
13714
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { children: [
|
|
13474
13715
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("strong", { children: skill.displayName }),
|
|
13475
13716
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { children: skill.description }),
|
|
@@ -13486,7 +13727,7 @@ function CompanionSkillSettings({ companionId, onBusyChange }) {
|
|
|
13486
13727
|
}
|
|
13487
13728
|
function SkillSearch({ value, change, count, label, placeholder, loading = false, autoFocus = false, compact = false }) {
|
|
13488
13729
|
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: `dsh-partner-skill-search${compact ? " is-compact" : ""}`, role: "search", "aria-label": label, children: [
|
|
13489
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-search-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13730
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-search-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconSearchOutlineRegular, { size: 16 }) }),
|
|
13490
13731
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
13491
13732
|
"input",
|
|
13492
13733
|
{
|
|
@@ -13504,7 +13745,7 @@ function SkillSearch({ value, change, count, label, placeholder, loading = false
|
|
|
13504
13745
|
}
|
|
13505
13746
|
}
|
|
13506
13747
|
),
|
|
13507
|
-
value && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", className: "dsh-partner-skill-search-clear", "aria-label": "\u6E05\u7A7A\u641C\u7D22", title: "\u6E05\u7A7A\u641C\u7D22", onClick: () => change(""), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13748
|
+
value && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", className: "dsh-partner-skill-search-clear", "aria-label": "\u6E05\u7A7A\u641C\u7D22", title: "\u6E05\u7A7A\u641C\u7D22", onClick: () => change(""), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconCloseOutlineRegular, { size: 14 }) }),
|
|
13508
13749
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "dsh-partner-skill-search-count", "aria-live": "polite", children: loading ? "\u540C\u6B65\u4E2D" : `${count} \u9879` })
|
|
13509
13750
|
] });
|
|
13510
13751
|
}
|
|
@@ -13573,7 +13814,7 @@ function NewSkillForm({ existingIds, close, changed: changed2 }) {
|
|
|
13573
13814
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("footer", { children: [
|
|
13574
13815
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
|
|
13575
13816
|
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
|
|
13576
|
-
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.
|
|
13817
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_dsh_client_ui_primitives11.IconPlusOutlineRegular, { size: 14 }),
|
|
13577
13818
|
busy ? "\u521B\u5EFA\u4E2D\u2026" : "\u521B\u5EFA Skill"
|
|
13578
13819
|
] })
|
|
13579
13820
|
] })
|
|
@@ -13852,7 +14093,7 @@ function McpPanel() {
|
|
|
13852
14093
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(WorkspaceHero, { eyebrow: "Capability catalog", title: "MCP \u670D\u52A1", detail: "\u96C6\u4E2D\u7BA1\u7406\u5916\u90E8\u5DE5\u5177\uFF0C\u518D\u5728\u4F19\u4F34\u80FD\u529B\u4E2D\u5355\u72EC\u6388\u6743\u3002\u914D\u7F6E\u4E0E\u5DE5\u5177\u76EE\u5F55\u7684\u66F4\u65B0\u5728\u4E0B\u4E00\u8F6E\u5BF9\u8BDD\u751F\u6548\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("button", { type: "button", disabled: loading || !!busy, onClick: () => {
|
|
13853
14094
|
void load2();
|
|
13854
14095
|
}, children: [
|
|
13855
|
-
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.
|
|
14096
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.IconRefreshOutlineRegular, { size: 15 }),
|
|
13856
14097
|
"\u5237\u65B0\u5217\u8868"
|
|
13857
14098
|
] }) }),
|
|
13858
14099
|
error && !deleting && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(WorkspaceNotice, { children: error }),
|
|
@@ -13860,7 +14101,7 @@ function McpPanel() {
|
|
|
13860
14101
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(WorkspaceBlock, { title: "\u5DF2\u914D\u7F6E\u670D\u52A1", detail: `${catalog.servers.length} \u4E2A\u670D\u52A1 \xB7 \u5B89\u88C5\u4E0D\u7B49\u4E8E\u6388\u6743`, actions: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
|
|
13861
14102
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("button", { type: "button", onClick: () => setEditor("import"), children: "\u5BFC\u5165 JSON" }),
|
|
13862
14103
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("button", { type: "button", onClick: () => setEditor("new"), children: [
|
|
13863
|
-
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.
|
|
14104
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_dsh_client_ui_primitives12.IconPlusOutlineRegular, { size: 14 }),
|
|
13864
14105
|
"\u65B0\u589E MCP"
|
|
13865
14106
|
] })
|
|
13866
14107
|
] }), children: [
|
|
@@ -14122,7 +14363,7 @@ function RequirementDetail({ item, tasks, directory, changed: changed2, close })
|
|
|
14122
14363
|
" \u4E2A\u4EFB\u52A1"
|
|
14123
14364
|
] })
|
|
14124
14365
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("button", { type: "button", className: "is-danger", onClick: () => setConfirming(true), children: [
|
|
14125
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_dsh_client_ui_primitives13.
|
|
14366
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_dsh_client_ui_primitives13.IconTrashOutlineRegular, { size: 14 }),
|
|
14126
14367
|
"\u5220\u9664\u9700\u6C42"
|
|
14127
14368
|
] })
|
|
14128
14369
|
] }),
|
|
@@ -14151,7 +14392,7 @@ function TaskBoardStage({ id, label, tasks, focused, filtered, renderTask }) {
|
|
|
14151
14392
|
const expanded = !collapsed;
|
|
14152
14393
|
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("section", { "data-status": id, "data-empty": tasks.length === 0, "aria-labelledby": titleId, children: [
|
|
14153
14394
|
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("header", { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("button", { type: "button", className: "dsh-partner-board-stage-toggle", "aria-expanded": expanded, "aria-controls": listId, onClick: () => setCollapsed((value) => !value), children: [
|
|
14154
|
-
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_dsh_client_ui_primitives14.
|
|
14395
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_dsh_client_ui_primitives14.IconChevronRightOutlineRegular, { size: 14 }),
|
|
14155
14396
|
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("strong", { id: titleId, children: label }),
|
|
14156
14397
|
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("b", { children: tasks.length })
|
|
14157
14398
|
] }) }),
|
|
@@ -14400,7 +14641,7 @@ function RequirementTasksPanel({ initialTaskId, openRequest, requirementId, back
|
|
|
14400
14641
|
!detailOnly && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
14401
14642
|
back && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("nav", { className: "dsh-partner-requirement-breadcrumb", children: [
|
|
14402
14643
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: back, children: "\u9700\u6C42\u770B\u677F" }),
|
|
14403
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
14644
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconChevronRightOutlineRegular, { size: 14 }),
|
|
14404
14645
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { children: requirement?.title ?? "\u672A\u5F52\u7C7B\u65E7\u4EFB\u52A1" })
|
|
14405
14646
|
] }),
|
|
14406
14647
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(WorkspaceHero, { eyebrow: requirement ? requirementStatus(requirement) : "\u65E7\u4EFB\u52A1", title: requirement?.title ?? "\u672A\u5F52\u7C7B\u65E7\u4EFB\u52A1", detail: requirement?.description || "\u4EFB\u52A1\u6309\u9636\u6BB5\u5C55\u793A\uFF0C\u70B9\u51FB\u67E5\u770B\u4EA4\u4ED8\u3001\u4F9D\u8D56\u548C\u6267\u884C\u72B6\u6001\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
@@ -14410,7 +14651,7 @@ function RequirementTasksPanel({ initialTaskId, openRequest, requirementId, back
|
|
|
14410
14651
|
] }),
|
|
14411
14652
|
requirement && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: () => setRequirementDetail(true), children: "\u9700\u6C42\u8BE6\u60C5" }),
|
|
14412
14653
|
requirement?.status === "planning" && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { type: "button", onClick: () => setCreating(true), children: [
|
|
14413
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
14654
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconPlusOutlineRegular, { size: 15 }),
|
|
14414
14655
|
"\u65B0\u4EFB\u52A1"
|
|
14415
14656
|
] })
|
|
14416
14657
|
] }) })
|
|
@@ -14455,9 +14696,9 @@ function RequirementTasksPanel({ initialTaskId, openRequest, requirementId, back
|
|
|
14455
14696
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "dsh-partner-board-tools", children: [
|
|
14456
14697
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("label", { className: "dsh-partner-board-search", children: [
|
|
14457
14698
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "sr-only", children: "\u641C\u7D22\u4EFB\u52A1" }),
|
|
14458
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
14699
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconSearchOutlineRegular, { size: 16 }) }),
|
|
14459
14700
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("input", { value: query, onChange: (event) => setQuery(event.target.value), placeholder: "\u641C\u7D22\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u6216\u524D\u7F6E\u4EFB\u52A1" }),
|
|
14460
|
-
query && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: () => setQuery(""), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
14701
|
+
query && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", onClick: () => setQuery(""), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconCloseOutlineRegular, { size: 14 }) })
|
|
14461
14702
|
] }),
|
|
14462
14703
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("label", { className: "dsh-partner-board-assignee", children: [
|
|
14463
14704
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "sr-only", children: "\u6309\u8D1F\u8D23\u4EBA\u7B5B\u9009" }),
|
|
@@ -14553,7 +14794,7 @@ function TaskCard({ task, tasksById, directoryById, dependentCount, execution, o
|
|
|
14553
14794
|
] })
|
|
14554
14795
|
] })
|
|
14555
14796
|
] }),
|
|
14556
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
14797
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconChevronRightOutlineRegular, { size: 14 })
|
|
14557
14798
|
] }) });
|
|
14558
14799
|
}
|
|
14559
14800
|
function TaskDetail({ task, tasks, activities, directory, execution, busy, update, delegate, review, accept, reject, remove }) {
|
|
@@ -14634,7 +14875,7 @@ function TaskDetail({ task, tasks, activities, directory, execution, busy, updat
|
|
|
14634
14875
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("small", { children: blockers.length ? `${blockers.length} \u9879\u672A\u5B8C\u6210\uFF0C\u5F53\u524D\u4EFB\u52A1\u4E0D\u80FD\u542F\u52A8` : dependencies.length ? "\u5DF2\u5168\u90E8\u5B8C\u6210\uFF0C\u53EF\u4EE5\u542F\u52A8" : "\u6CA1\u6709\u524D\u7F6E\u4F9D\u8D56" })
|
|
14635
14876
|
] }),
|
|
14636
14877
|
dependencies.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { children: dependencies.map((item) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { "data-done": item.status === "done", children: [
|
|
14637
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("i", { children: item.status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
14878
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("i", { children: item.status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconCheckOutlineRegular, { size: 12 }) : "" }),
|
|
14638
14879
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("b", { children: item.title }),
|
|
14639
14880
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy || ["doing", "review", "done"].includes(task.status), "aria-label": `\u79FB\u9664\u524D\u7F6E\u4EFB\u52A1 ${item.title}`, onClick: () => update({ dependencyTaskIds: task.dependencyTaskIds.filter((id) => id !== item.id) }), children: "\u79FB\u9664" })
|
|
14640
14881
|
] }, item.id)) }),
|
|
@@ -14704,7 +14945,7 @@ function TaskDetail({ task, tasks, activities, directory, execution, busy, updat
|
|
|
14704
14945
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy, onClick: () => setRejecting(true), children: "\u6253\u56DE\u91CD\u505A" }),
|
|
14705
14946
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", className: "is-primary", disabled: busy || Boolean(task.acceptanceCriteria?.length && (checks.length !== task.acceptanceCriteria.length || checks.some((c) => c.verdict !== "passed" || !c.evidence?.trim()))), onClick: () => accept(checks), children: "\u9A8C\u6536\u901A\u8FC7" })
|
|
14706
14947
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy || !canExecute, title: blockers.length ? "\u53EF\u63D0\u524D\u6392\u961F\uFF0C\u4F9D\u8D56\u901A\u8FC7\u9A8C\u6536\u540E\u81EA\u52A8\u6267\u884C" : !task.assigneeCompanionId ? "\u8BF7\u5148\u9009\u62E9\u8D1F\u8D23\u4EBA" : void 0, onClick: delegate, children: busy ? "\u6267\u884C\u4E2D\u2026" : execution?.status === "queued" ? "\u5DF2\u63D0\u4EA4\uFF0C\u7B49\u5F85\u6267\u884C" : task.status === "doing" ? "\u6B63\u5728\u6267\u884C" : task.status === "done" ? "\u5DF2\u7ECF\u5B8C\u6210" : `\u4EA4\u7ED9 @${assignee?.name ?? "\u4F19\u4F34"}` }),
|
|
14707
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", className: "is-icon", "aria-label": `\u5220\u9664 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
14948
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", className: "is-icon", "aria-label": `\u5220\u9664 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconTrashOutlineRegular, { size: 14 }) })
|
|
14708
14949
|
] })
|
|
14709
14950
|
] })
|
|
14710
14951
|
] });
|
|
@@ -14817,7 +15058,7 @@ function TaskForm({ requirementId, companions, tasks, close, changed: changed2 }
|
|
|
14817
15058
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("footer", { children: [
|
|
14818
15059
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
|
|
14819
15060
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
|
|
14820
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.
|
|
15061
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_dsh_client_ui_primitives15.IconPlusOutlineRegular, { size: 14 }),
|
|
14821
15062
|
busy ? "\u521B\u5EFA\u4E2D\u2026" : "\u521B\u5EFA\u4EFB\u52A1"
|
|
14822
15063
|
] })
|
|
14823
15064
|
] })
|
|
@@ -14902,7 +15143,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
|
|
|
14902
15143
|
} }, selected);
|
|
14903
15144
|
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "dsh-partner-feature-page is-board", children: [
|
|
14904
15145
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(WorkspaceHero, { eyebrow: "Shared workspace", title: "\u9700\u6C42\u770B\u677F", detail: "\u6309\u9700\u6C42\u7EC4\u7EC7\u5DE5\u4F5C\uFF0C\u5B50\u4EFB\u52A1\u72EC\u7ACB\u63A8\u8FDB\uFF0C\u6574\u4F53\u5B8C\u6210\u540E\u7EDF\u4E00\u6C47\u603B\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("button", { type: "button", onClick: () => setCreating(true), children: [
|
|
14905
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.
|
|
15146
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconPlusOutlineRegular, { size: 15 }),
|
|
14906
15147
|
"\u65B0\u9700\u6C42"
|
|
14907
15148
|
] }) }),
|
|
14908
15149
|
error && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(WorkspaceNotice, { children: [
|
|
@@ -14921,7 +15162,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
|
|
|
14921
15162
|
] }, String(value))) }),
|
|
14922
15163
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("label", { className: "dsh-partner-board-search", children: [
|
|
14923
15164
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "sr-only", children: "\u641C\u7D22\u9700\u6C42" }),
|
|
14924
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.
|
|
15165
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconSearchOutlineRegular, { size: 16 }) }),
|
|
14925
15166
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("input", { placeholder: "\u641C\u7D22\u9700\u6C42\u6216\u8D1F\u8D23\u4EBA", value: query, onChange: (event) => {
|
|
14926
15167
|
setQuery(event.target.value);
|
|
14927
15168
|
setLimit(24);
|
|
@@ -14950,7 +15191,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
|
|
|
14950
15191
|
" \u5DF2\u9A8C\u6536",
|
|
14951
15192
|
blocked ? ` \xB7 ${blocked} \u53D7\u963B` : ""
|
|
14952
15193
|
] }),
|
|
14953
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.
|
|
15194
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconChevronRightOutlineRegular, { size: 14 })
|
|
14954
15195
|
] })
|
|
14955
15196
|
] }),
|
|
14956
15197
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("footer", { children: [
|
|
@@ -14975,7 +15216,7 @@ function RequirementBoard({ initialTaskId, openRequest } = {}) {
|
|
|
14975
15216
|
"\u672A\u5F52\u7C7B\u65E7\u4EFB\u52A1 ",
|
|
14976
15217
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("b", { children: groups.get("legacy").length }),
|
|
14977
15218
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: "\u4FDD\u7559\u539F\u8BB0\u5F55\uFF0C\u4E0D\u81EA\u52A8\u5408\u5E76" }),
|
|
14978
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.
|
|
15219
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_dsh_client_ui_primitives16.IconChevronRightOutlineRegular, { size: 14 })
|
|
14979
15220
|
] })
|
|
14980
15221
|
] }),
|
|
14981
15222
|
creating && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(WorkspaceDialog, { title: "\u65B0\u5EFA\u9700\u6C42", detail: "\u4E00\u4E2A\u9700\u6C42\u5BF9\u5E94\u4E00\u4EFD\u6700\u7EC8\u4EA4\u4ED8\uFF0C\u7531\u8D1F\u8D23\u4EBA\u7EDF\u4E00\u6536\u5C3E\u3002", close: () => setCreating(false), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(RequirementForm, { directory, close: () => setCreating(false), created: async (item) => {
|
|
@@ -15064,11 +15305,11 @@ function SchedulePanel({ companions }) {
|
|
|
15064
15305
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: loading, onClick: () => {
|
|
15065
15306
|
void load2();
|
|
15066
15307
|
}, children: [
|
|
15067
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.
|
|
15308
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconRefreshOutlineRegular, { size: 15 }),
|
|
15068
15309
|
"\u5237\u65B0"
|
|
15069
15310
|
] }),
|
|
15070
15311
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: eligible.length === 0, onClick: () => setCreating(true), children: [
|
|
15071
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.
|
|
15312
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutlineRegular, { size: 15 }),
|
|
15072
15313
|
"\u65B0\u8BA1\u5212"
|
|
15073
15314
|
] })
|
|
15074
15315
|
] }) }),
|
|
@@ -15076,7 +15317,7 @@ function SchedulePanel({ companions }) {
|
|
|
15076
15317
|
error && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceNotice, { children: error }),
|
|
15077
15318
|
creating && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceDialog, { title: "\u65B0\u5EFA\u5B9A\u65F6\u4EFB\u52A1", detail: "\u9009\u62E9\u6267\u884C\u4F19\u4F34\u3001\u8FD0\u884C\u9891\u7387\u548C\u4F1A\u8BDD\u4FDD\u7559\u7B56\u7565\u3002\u957F\u4EFB\u52A1\u7EED\u63A5\u7531\u4F19\u4F34\u901A\u8FC7\u5DE5\u5177\u9884\u7EA6\uFF0C\u65E0\u9700\u5728\u8FD9\u91CC\u624B\u52A8\u521B\u5EFA\u3002", close: () => setCreating(false), width: "wide", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ScheduleForm, { companions: eligible, close: () => setCreating(false), changed: load2 }) }),
|
|
15078
15319
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(WorkspaceBlock, { title: "\u6267\u884C\u8BA1\u5212", detail: `${schedules.filter((item) => item.enabled && eligible.some((c) => c.id === item.companionId)).length} \u4E2A\u542F\u7528`, children: loading ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CollectionSkeleton, { rows: 3 }) : schedules.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CollectionEmpty, { title: "\u8FD8\u6CA1\u6709\u5B9A\u65F6\u4EFB\u52A1", detail: "\u5468\u671F\u8BA1\u5212\u548C\u957F\u4EFB\u52A1\u7EED\u63A5\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: eligible.length === 0, onClick: () => setCreating(true), children: [
|
|
15079
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.
|
|
15320
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutlineRegular, { size: 14 }),
|
|
15080
15321
|
"\u521B\u5EFA\u7B2C\u4E00\u4E2A\u8BA1\u5212"
|
|
15081
15322
|
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dsh-partner-schedule-list", children: schedules.map((entry) => {
|
|
15082
15323
|
const wake = entry.continuation, allowed = eligible.some((c) => c.id === entry.companionId);
|
|
@@ -15132,12 +15373,12 @@ function SchedulePanel({ companions }) {
|
|
|
15132
15373
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "button", disabled: busy === entry.id || !allowed || !!terminal || !!wake && (!entry.enabled || wake.state === "running"), onClick: () => {
|
|
15133
15374
|
void run(entry);
|
|
15134
15375
|
}, children: [
|
|
15135
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.
|
|
15376
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlayOutlineRegular, { size: 14 }),
|
|
15136
15377
|
busy === entry.id ? "\u5DF2\u63D0\u4EA4\u2026" : wake ? "\u7ACB\u5373\u68C0\u67E5" : "\u7ACB\u5373\u6267\u884C"
|
|
15137
15378
|
] }),
|
|
15138
15379
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { type: "button", className: "is-icon", disabled: busy === entry.id, onClick: () => {
|
|
15139
15380
|
void remove(entry);
|
|
15140
|
-
}, "aria-label": `\u5220\u9664 ${entry.title}`, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.
|
|
15381
|
+
}, "aria-label": `\u5220\u9664 ${entry.title}`, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconTrashOutlineRegular, { size: 14 }) })
|
|
15141
15382
|
] }, entry.id);
|
|
15142
15383
|
}) }) }),
|
|
15143
15384
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(WorkspaceBlock, { title: "\u6700\u8FD1\u8FD0\u884C", detail: "\u4FDD\u7559\u6700\u8FD1\u7684\u72B6\u6001\u4E0E\u7ED3\u679C\u6458\u8981", children: [
|
|
@@ -15246,7 +15487,7 @@ function ScheduleForm({ companions, close, changed: changed2 }) {
|
|
|
15246
15487
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("footer", { children: [
|
|
15247
15488
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
|
|
15248
15489
|
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
|
|
15249
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.
|
|
15490
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_dsh_client_ui_primitives17.IconPlusOutlineRegular, { size: 14 }),
|
|
15250
15491
|
busy ? "\u521B\u5EFA\u4E2D\u2026" : "\u521B\u5EFA\u8BA1\u5212"
|
|
15251
15492
|
] })
|
|
15252
15493
|
] })
|
|
@@ -15358,7 +15599,7 @@ function CompanionMcpSettings({ companionId, embedded = false, onBusyChange }) {
|
|
|
15358
15599
|
setSelecting(true);
|
|
15359
15600
|
void load2();
|
|
15360
15601
|
}, children: [
|
|
15361
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_dsh_client_ui_primitives18.
|
|
15602
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_dsh_client_ui_primitives18.IconPlusOutlineRegular, { size: 14 }),
|
|
15362
15603
|
"\u9009\u62E9 MCP"
|
|
15363
15604
|
] }), children: [
|
|
15364
15605
|
!selecting && feedback,
|
|
@@ -15448,7 +15689,7 @@ function CompanionAccessPanel({ companionId, onBusyChange }) {
|
|
|
15448
15689
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { children: companion.description || "\u672A\u586B\u5199\u4F19\u4F34\u8BF4\u660E" }),
|
|
15449
15690
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: [...abilities, ...companion.enabledSkills.map((skill) => skill.name)].map((item) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("em", { children: item }, item)) })
|
|
15450
15691
|
] }),
|
|
15451
|
-
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "dsh-partner-access-check", "aria-hidden": "true", children: selected && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_dsh_client_ui_primitives19.
|
|
15692
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "dsh-partner-access-check", "aria-hidden": "true", children: selected && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_dsh_client_ui_primitives19.IconCheckOutlineRegular, { size: 15 }) })
|
|
15452
15693
|
] }, companion.id);
|
|
15453
15694
|
}) }),
|
|
15454
15695
|
error && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(WorkspaceNotice, { children: error })
|
|
@@ -15653,7 +15894,7 @@ function CapabilityEditor({ companion, presets, onChanged }) {
|
|
|
15653
15894
|
group.choices.map((choice) => {
|
|
15654
15895
|
const active2 = form.capabilities.includes(choice.id);
|
|
15655
15896
|
const control = /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("button", { type: "button", disabled: saving, className: active2 ? "is-active" : "", "aria-pressed": active2, onClick: () => toggle(choice.id), children: [
|
|
15656
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { children: active2 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dsh_client_ui_primitives20.
|
|
15897
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { children: active2 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_dsh_client_ui_primitives20.IconCheckOutlineRegular, { size: 14 }) }),
|
|
15657
15898
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("strong", { children: choice.title }),
|
|
15658
15899
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("small", { children: choice.detail })
|
|
15659
15900
|
] });
|
|
@@ -15758,7 +15999,7 @@ function IdentityEditorForm({ companion, count, onChanged, onRemoved }) {
|
|
|
15758
15999
|
error && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: "dsh-partner-inline-error", role: "alert", children: error }),
|
|
15759
16000
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "dsh-partner-form-actions", children: [
|
|
15760
16001
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { role: "status", children: saved && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
|
|
15761
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.
|
|
16002
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.IconCheckOutlineRegular, { size: 14 }),
|
|
15762
16003
|
"\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u4E00\u8F6E\u5C06\u4F7F\u7528\u65B0\u8EAB\u4EFD"
|
|
15763
16004
|
] }) }),
|
|
15764
16005
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("button", { disabled: busy, children: operation === "save" ? "\u6B63\u5728\u4FDD\u5B58\u2026" : "\u4FDD\u5B58\u8EAB\u4EFD" })
|
|
@@ -15772,7 +16013,7 @@ function IdentityEditorForm({ companion, count, onChanged, onRemoved }) {
|
|
|
15772
16013
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { children: [
|
|
15773
16014
|
confirming && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("button", { type: "button", disabled: busy, className: "is-secondary", onClick: () => setConfirmationId(void 0), children: "\u53D6\u6D88" }),
|
|
15774
16015
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("button", { type: "button", className: confirming ? "is-danger" : "", disabled: busy || count <= 1, onClick: () => confirming ? void remove() : setConfirmationId(companion.id), children: [
|
|
15775
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.
|
|
16016
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_dsh_client_ui_primitives21.IconTrashOutlineRegular, { size: 16 }),
|
|
15776
16017
|
operation === "remove" ? "\u6B63\u5728\u5220\u9664\u2026" : removed ? "\u5DF2\u5220\u9664" : confirming ? "\u786E\u8BA4\u5220\u9664" : "\u5220\u9664"
|
|
15777
16018
|
] })
|
|
15778
16019
|
] })
|
|
@@ -16310,7 +16551,7 @@ function CompanionCreateDialog({ close, create }) {
|
|
|
16310
16551
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("footer", { children: [
|
|
16311
16552
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }),
|
|
16312
16553
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("button", { type: "submit", className: "is-primary", disabled: busy, children: [
|
|
16313
|
-
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_dsh_client_ui_primitives22.
|
|
16554
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_dsh_client_ui_primitives22.IconPlusOutlineRegular, { size: 14 }),
|
|
16314
16555
|
busy ? "\u6B63\u5728\u521B\u5EFA\u2026" : "\u521B\u5EFA\u4F19\u4F34"
|
|
16315
16556
|
] })
|
|
16316
16557
|
] })
|
|
@@ -16391,19 +16632,19 @@ function createPartnerController(ctx, pluginId, render) {
|
|
|
16391
16632
|
if (prepared.sessionId !== sessionId) throw new Error("\u4F19\u4F34\u4F1A\u8BDD\u6807\u8BC6\u4E0D\u4E00\u81F4");
|
|
16392
16633
|
await waitForClientSession(ctx, sessionId);
|
|
16393
16634
|
controller.close();
|
|
16394
|
-
|
|
16635
|
+
ctx.uiWorkspace.openSession(sessionId);
|
|
16395
16636
|
},
|
|
16396
16637
|
async startSession(companionId) {
|
|
16397
16638
|
const created = await api(`/companions/${encodeURIComponent(companionId)}/session`, { method: "POST" });
|
|
16398
16639
|
await waitForClientSession(ctx, created.sessionId);
|
|
16399
16640
|
controller.close();
|
|
16400
|
-
|
|
16641
|
+
ctx.uiWorkspace.openSession(created.sessionId);
|
|
16401
16642
|
},
|
|
16402
16643
|
async renewSession(routeId) {
|
|
16403
16644
|
const renewed = await api(`/sessions/${encodeURIComponent(routeId)}/renew`, { method: "POST" });
|
|
16404
16645
|
await waitForClientSession(ctx, renewed.sessionId);
|
|
16405
16646
|
controller.close();
|
|
16406
|
-
|
|
16647
|
+
ctx.uiWorkspace.openSession(renewed.sessionId);
|
|
16407
16648
|
},
|
|
16408
16649
|
subscribe(listener) {
|
|
16409
16650
|
listeners3.add(listener);
|
|
@@ -16439,7 +16680,7 @@ function sessions(ctx) {
|
|
|
16439
16680
|
var import_dsh_client_ui_primitives23 = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
16440
16681
|
|
|
16441
16682
|
// src/ui/storage-settings.tsx
|
|
16442
|
-
var
|
|
16683
|
+
var import_react50 = require("react");
|
|
16443
16684
|
|
|
16444
16685
|
// src/ui/storage-recovery.ts
|
|
16445
16686
|
var StorageStatusError = class extends Error {
|
|
@@ -16486,17 +16727,183 @@ async function waitForStorage(signal, onWait, options = {}) {
|
|
|
16486
16727
|
throw Error("\u670D\u52A1\u5C1A\u672A\u6062\u590D\uFF0C\u5DF2\u505C\u6B62\u81EA\u52A8\u68C0\u67E5\u3002\u8BF7\u7A0D\u540E\u70B9\u51FB\u300C\u91CD\u65B0\u8FDE\u63A5\u300D\uFF1B\u4E0D\u8981\u91CD\u590D\u63D0\u4EA4\u8FC1\u79FB\u3002");
|
|
16487
16728
|
}
|
|
16488
16729
|
|
|
16489
|
-
// src/ui/storage
|
|
16730
|
+
// src/ui/attachment-storage.tsx
|
|
16731
|
+
var import_react49 = require("react");
|
|
16490
16732
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
16733
|
+
var size = (bytes) => `${(bytes / 1048576).toFixed(2)} MiB`;
|
|
16734
|
+
function AttachmentStoragePanel() {
|
|
16735
|
+
const [view, setView] = (0, import_react49.useState)(), [limit, setLimit] = (0, import_react49.useState)("512");
|
|
16736
|
+
const [owner, setOwner] = (0, import_react49.useState)(""), [days, setDays] = (0, import_react49.useState)("0"), [offset, setOffset] = (0, import_react49.useState)(0);
|
|
16737
|
+
const [selected, setSelected] = (0, import_react49.useState)([]), [busy, setBusy] = (0, import_react49.useState)(false), [confirm, setConfirm] = (0, import_react49.useState)(false);
|
|
16738
|
+
const [error, setError] = (0, import_react49.useState)(""), [notice, setNotice] = (0, import_react49.useState)(""), [revision, setRevision] = (0, import_react49.useState)(0);
|
|
16739
|
+
const [expanded, setExpanded] = (0, import_react49.useState)(false);
|
|
16740
|
+
(0, import_react49.useEffect)(() => {
|
|
16741
|
+
const controller = new AbortController();
|
|
16742
|
+
setBusy(true);
|
|
16743
|
+
setSelected([]);
|
|
16744
|
+
setError("");
|
|
16745
|
+
api(`/attachments/storage?${new URLSearchParams({ owner, days, offset: String(offset) })}`, { signal: controller.signal }).then((data) => {
|
|
16746
|
+
setView(data);
|
|
16747
|
+
setLimit(String(data.limitMiB));
|
|
16748
|
+
}).catch((e) => {
|
|
16749
|
+
if (!controller.signal.aborted) setError(errorMessage(e));
|
|
16750
|
+
}).finally(() => {
|
|
16751
|
+
if (!controller.signal.aborted) setBusy(false);
|
|
16752
|
+
});
|
|
16753
|
+
return () => controller.abort();
|
|
16754
|
+
}, [owner, days, offset, revision]);
|
|
16755
|
+
const save = async () => {
|
|
16756
|
+
setBusy(true);
|
|
16757
|
+
setError("");
|
|
16758
|
+
setNotice("");
|
|
16759
|
+
try {
|
|
16760
|
+
await api("/attachments/storage", { method: "PUT", body: JSON.stringify({ limitMiB: Number(limit) }) });
|
|
16761
|
+
setNotice("\u989D\u5EA6\u5DF2\u4FDD\u5B58\uFF0C\u7ACB\u5373\u751F\u6548\uFF1B\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\u4EFB\u4F55\u6587\u4EF6\u3002");
|
|
16762
|
+
setRevision((v) => v + 1);
|
|
16763
|
+
} catch (e) {
|
|
16764
|
+
setError(errorMessage(e));
|
|
16765
|
+
} finally {
|
|
16766
|
+
setBusy(false);
|
|
16767
|
+
}
|
|
16768
|
+
};
|
|
16769
|
+
const clean = async () => {
|
|
16770
|
+
setBusy(true);
|
|
16771
|
+
setError("");
|
|
16772
|
+
setNotice("");
|
|
16773
|
+
try {
|
|
16774
|
+
const result = await api("/attachments/cleanup", { method: "POST", body: JSON.stringify({ ids: selected, confirm: true }) });
|
|
16775
|
+
setConfirm(false);
|
|
16776
|
+
setNotice(`\u5DF2\u6E05\u7406 ${result.removed} \u4E2A\u526F\u672C\uFF0C\u91CA\u653E ${size(result.freedBytes)}\uFF1B\u8DF3\u8FC7 ${result.skipped} \u4E2A\uFF0C\u5931\u8D25 ${result.failed} \u4E2A\u3002`);
|
|
16777
|
+
setRevision((v) => v + 1);
|
|
16778
|
+
} catch (e) {
|
|
16779
|
+
setError(errorMessage(e));
|
|
16780
|
+
} finally {
|
|
16781
|
+
setBusy(false);
|
|
16782
|
+
}
|
|
16783
|
+
};
|
|
16784
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(WorkspaceBlock, { title: "\u9644\u4EF6\u5B58\u50A8", className: "attachment-storage-block", children: [
|
|
16785
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { id: "partner-attachment-storage", className: "dsh-partner-attachment-storage", "aria-busy": busy, children: [
|
|
16786
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-overview", children: [
|
|
16787
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-usage", children: [
|
|
16788
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("strong", { children: view ? `${size(view.usedBytes)} / ${view.limitMiB} MiB` : "\u6B63\u5728\u8BFB\u53D6\u2026" }),
|
|
16789
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("small", { children: view ? `${view.count} \u4E2A\u526F\u672C \xB7 \u5168\u90E8\u4F19\u4F34\u5171\u4EAB` : "\u6B63\u5728\u7EDF\u8BA1\u9644\u4EF6\u5360\u7528" })
|
|
16790
|
+
] }),
|
|
16791
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("form", { onSubmit: (e) => {
|
|
16792
|
+
e.preventDefault();
|
|
16793
|
+
void save();
|
|
16794
|
+
}, children: [
|
|
16795
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { children: [
|
|
16796
|
+
"\u989D\u5EA6",
|
|
16797
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("input", { "aria-label": "\u603B\u989D\u5EA6\uFF08MiB\uFF09", type: "number", min: "64", max: "1048576", step: "1", required: true, value: limit, disabled: busy, onChange: (e) => setLimit(e.target.value) }),
|
|
16798
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: "MiB" })
|
|
16799
|
+
] }),
|
|
16800
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { "aria-label": "\u4FDD\u5B58\u989D\u5EA6", disabled: busy || !view || Number(limit) === view.limitMiB, children: "\u4FDD\u5B58" })
|
|
16801
|
+
] }),
|
|
16802
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", "aria-expanded": expanded, "aria-controls": "attachment-storage-manager", onClick: () => setExpanded((v) => !v), children: expanded ? "\u6536\u8D77\u660E\u7EC6" : "\u7BA1\u7406\u526F\u672C" })
|
|
16803
|
+
] }),
|
|
16804
|
+
expanded && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { id: "attachment-storage-manager", children: [
|
|
16805
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-filters", children: [
|
|
16806
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { children: [
|
|
16807
|
+
"\u4F19\u4F34",
|
|
16808
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("select", { value: owner, disabled: busy, onChange: (e) => {
|
|
16809
|
+
setOwner(e.target.value);
|
|
16810
|
+
setOffset(0);
|
|
16811
|
+
}, children: [
|
|
16812
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "", children: "\u5168\u90E8\u4F19\u4F34" }),
|
|
16813
|
+
view?.owners.map((o) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: o.id, children: o.name }, o.id))
|
|
16814
|
+
] })
|
|
16815
|
+
] }),
|
|
16816
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { children: [
|
|
16817
|
+
"\u521B\u5EFA\u65F6\u95F4",
|
|
16818
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("select", { value: days, disabled: busy, onChange: (e) => {
|
|
16819
|
+
setDays(e.target.value);
|
|
16820
|
+
setOffset(0);
|
|
16821
|
+
}, children: [
|
|
16822
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "0", children: "\u5168\u90E8\u65F6\u95F4" }),
|
|
16823
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "7", children: "7 \u5929\u4EE5\u524D" }),
|
|
16824
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "30", children: "30 \u5929\u4EE5\u524D" }),
|
|
16825
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("option", { value: "90", children: "90 \u5929\u4EE5\u524D" })
|
|
16826
|
+
] })
|
|
16827
|
+
] }),
|
|
16828
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy, onClick: () => setRevision((v) => v + 1), children: "\u5237\u65B0" })
|
|
16829
|
+
] }),
|
|
16830
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-selection", children: [
|
|
16831
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy || !view?.items.some((i) => !i.protectedReason), onClick: () => setSelected(selected.length ? [] : view.items.filter((i) => !i.protectedReason).map((i) => i.id)), children: selected.length ? "\u53D6\u6D88\u9009\u62E9" : "\u9009\u62E9\u672C\u9875" }),
|
|
16832
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("small", { children: [
|
|
16833
|
+
"\u53EF\u6E05\u7406 ",
|
|
16834
|
+
size(view?.eligibleBytes ?? 0),
|
|
16835
|
+
" \xB7 \u4F7F\u7528\u4E2D\u7684\u526F\u672C\u53D7\u4FDD\u62A4"
|
|
16836
|
+
] })
|
|
16837
|
+
] }),
|
|
16838
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "attachment-storage-list", children: view?.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("label", { className: "attachment-storage-row", children: [
|
|
16839
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("input", { type: "checkbox", disabled: busy || !!item.protectedReason, checked: selected.includes(item.id), onChange: (e) => setSelected((ids) => e.target.checked ? [...ids, item.id] : ids.filter((id) => id !== item.id)) }),
|
|
16840
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { children: [
|
|
16841
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("strong", { title: item.name, children: item.name }),
|
|
16842
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("small", { children: [
|
|
16843
|
+
item.companionName,
|
|
16844
|
+
" \xB7 ",
|
|
16845
|
+
size(item.size),
|
|
16846
|
+
" \xB7 ",
|
|
16847
|
+
item.createdAt ? new Date(item.createdAt).toLocaleString() : "\u65F6\u95F4\u672A\u77E5",
|
|
16848
|
+
" \xB7 ",
|
|
16849
|
+
item.protectedReason ?? (item.channel === "sent" ? "\u5DF2\u53D1\u9001" : "\u4F1A\u8BDD\u526F\u672C")
|
|
16850
|
+
] })
|
|
16851
|
+
] })
|
|
16852
|
+
] }, item.id)) }),
|
|
16853
|
+
view && !view.items.length && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u526F\u672C\u3002" }),
|
|
16854
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "attachment-storage-filters", children: [
|
|
16855
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy || offset === 0, onClick: () => setOffset(Math.max(0, offset - 30)), children: "\u4E0A\u4E00\u9875" }),
|
|
16856
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { children: [
|
|
16857
|
+
"\u7B2C ",
|
|
16858
|
+
Math.floor(offset / 30) + 1,
|
|
16859
|
+
" \u9875 \xB7 \u5171 ",
|
|
16860
|
+
view?.filteredCount ?? 0,
|
|
16861
|
+
" \u9879"
|
|
16862
|
+
] }),
|
|
16863
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { disabled: busy || !view || offset + 30 >= view.filteredCount, onClick: () => setOffset(offset + 30), children: "\u4E0B\u4E00\u9875" }),
|
|
16864
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("button", { disabled: busy || !selected.length, onClick: () => setConfirm(true), children: [
|
|
16865
|
+
"\u6E05\u7406\u6240\u9009\uFF08",
|
|
16866
|
+
selected.length,
|
|
16867
|
+
"\uFF09"
|
|
16868
|
+
] })
|
|
16869
|
+
] }),
|
|
16870
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("details", { className: "attachment-storage-help", children: [
|
|
16871
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("summary", { children: "\u5B58\u50A8\u4E0E\u6E05\u7406\u8BF4\u660E" }),
|
|
16872
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u526F\u672C\u7EDF\u4E00\u5B58\u653E\uFF0C\u539F\u6587\u4EF6\u4E0D\u53D7\u5F71\u54CD\u3002\u4E0D\u4F1A\u81EA\u52A8\u6E05\u7406\uFF1B\u964D\u4F4E\u989D\u5EA6\u4E0D\u5220\u9664\u65E7\u526F\u672C\uFF0C\u8D85\u989D\u65F6\u505C\u6B62\u65B0\u589E\u3002\u5355\u6587\u4EF6\u4E0A\u9650 64 MiB\u3002" }),
|
|
16873
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: "\u53D1\u9001\u4E2D\u3001\u5931\u8D25\u5F85\u91CD\u8BD5\u3001\u6700\u8FD1 5 \u5206\u949F\u521B\u5EFA\u53CA\u672A\u5B8C\u6210\u4EFB\u52A1/\u9700\u6C42\u5F15\u7528\u7684\u526F\u672C\u4E0D\u80FD\u6E05\u7406\u3002\u6E05\u7406\u540E\u5BF9\u5E94\u5386\u53F2\u4E0B\u8F7D\u94FE\u63A5\u5931\u6548\u3002" }),
|
|
16874
|
+
[...new Set(view?.owners.map((o) => o.directory) ?? [])].map((directory) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("code", { children: directory }, directory))
|
|
16875
|
+
] })
|
|
16876
|
+
] }),
|
|
16877
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { role: "alert", children: error }),
|
|
16878
|
+
notice && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { role: "status", children: notice })
|
|
16879
|
+
] }),
|
|
16880
|
+
confirm && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(WorkspaceDialog, { eyebrow: "\u9644\u4EF6\u7BA1\u7406", title: "\u6E05\u7406\u4EA4\u4ED8\u526F\u672C", detail: `\u5DF2\u9009\u62E9 ${selected.length} \u4E2A\u526F\u672C\u3002\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002`, close: () => {
|
|
16881
|
+
if (!busy) setConfirm(false);
|
|
16882
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("form", { className: "dsh-partner-feature-form", onSubmit: (event) => {
|
|
16883
|
+
event.preventDefault();
|
|
16884
|
+
if (!busy) void clean();
|
|
16885
|
+
}, children: [
|
|
16886
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "is-wide", children: "\u53EA\u5220\u9664\u4EA4\u4ED8\u526F\u672C\uFF0C\u539F\u59CB\u6587\u4EF6\u4FDD\u6301\u4E0D\u53D8\u3002\u5386\u53F2\u4F1A\u8BDD\u548C\u770B\u677F\u4E2D\u7684\u5BF9\u5E94\u9644\u4EF6\u4E0B\u8F7D\u94FE\u63A5\u5C06\u5931\u6548\u3002\u6267\u884C\u65F6\u4F1A\u518D\u6B21\u68C0\u67E5\u4FDD\u62A4\u72B6\u6001\u3002" }),
|
|
16887
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "is-wide", role: "alert", children: error }),
|
|
16888
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("footer", { children: [
|
|
16889
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(false), children: "\u53D6\u6D88" }),
|
|
16890
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "submit", className: "is-primary", disabled: busy, children: busy ? "\u6E05\u7406\u4E2D\u2026" : "\u786E\u8BA4\u6E05\u7406" })
|
|
16891
|
+
] })
|
|
16892
|
+
] }) })
|
|
16893
|
+
] });
|
|
16894
|
+
}
|
|
16895
|
+
|
|
16896
|
+
// src/ui/storage-settings.tsx
|
|
16897
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
16491
16898
|
function GeneralSettingsPanel() {
|
|
16492
|
-
const [version, setVersion] = (0,
|
|
16493
|
-
const [inspection, setInspection] = (0,
|
|
16494
|
-
const [busy, setBusy] = (0,
|
|
16495
|
-
const [error, setError] = (0,
|
|
16496
|
-
const request = (0,
|
|
16497
|
-
const mounted = (0,
|
|
16498
|
-
const [reconnect, setReconnect] = (0,
|
|
16499
|
-
const [cleanupPending, setCleanupPending] = (0,
|
|
16899
|
+
const [version, setVersion] = (0, import_react50.useState)();
|
|
16900
|
+
const [inspection, setInspection] = (0, import_react50.useState)();
|
|
16901
|
+
const [busy, setBusy] = (0, import_react50.useState)(false), [confirm, setConfirm] = (0, import_react50.useState)(false);
|
|
16902
|
+
const [error, setError] = (0, import_react50.useState)(""), [notice, setNotice] = (0, import_react50.useState)("");
|
|
16903
|
+
const request = (0, import_react50.useRef)();
|
|
16904
|
+
const mounted = (0, import_react50.useRef)(true);
|
|
16905
|
+
const [reconnect, setReconnect] = (0, import_react50.useState)(false);
|
|
16906
|
+
const [cleanupPending, setCleanupPending] = (0, import_react50.useState)(0);
|
|
16500
16907
|
const cleanup = version === 1 && cleanupPending > 0;
|
|
16501
16908
|
const recover = async (expected = pendingStorageRecovery()) => {
|
|
16502
16909
|
request.current?.abort();
|
|
@@ -16527,7 +16934,7 @@ function GeneralSettingsPanel() {
|
|
|
16527
16934
|
if (!controller.signal.aborted) setBusy(false);
|
|
16528
16935
|
}
|
|
16529
16936
|
};
|
|
16530
|
-
(0,
|
|
16937
|
+
(0, import_react50.useEffect)(() => {
|
|
16531
16938
|
mounted.current = true;
|
|
16532
16939
|
void recover();
|
|
16533
16940
|
return () => {
|
|
@@ -16564,16 +16971,17 @@ function GeneralSettingsPanel() {
|
|
|
16564
16971
|
}
|
|
16565
16972
|
if (mounted.current) await recover(expected);
|
|
16566
16973
|
};
|
|
16567
|
-
return /* @__PURE__ */ (0,
|
|
16568
|
-
/* @__PURE__ */ (0,
|
|
16569
|
-
/* @__PURE__ */ (0,
|
|
16570
|
-
|
|
16974
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("section", { className: "dsh-partner-general-settings", "aria-busy": busy, children: [
|
|
16975
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("h2", { children: "\u57FA\u672C\u8BBE\u7F6E" }),
|
|
16976
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(AttachmentStoragePanel, {}),
|
|
16977
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(WorkspaceBlock, { title: "\u5347\u7EA7\u8FC1\u79FB", detail: "\u624B\u52A8\u6574\u7406\u516C\u5171\u6570\u636E\u548C\u6BCF\u4F4D\u4F19\u4F34\u7684\u79C1\u6709\u76EE\u5F55\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u6267\u884C\u3002", actions: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => void inspect(), children: busy ? "\u5904\u7406\u4E2D\u2026" : "\u68C0\u67E5\u8FC1\u79FB" }), children: [
|
|
16978
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("p", { children: [
|
|
16571
16979
|
"\u6570\u636E\u5B58\u50A8\u7248\u672C\uFF1A",
|
|
16572
16980
|
version === void 0 ? "\u6B63\u5728\u8BFB\u53D6\u2026" : `v${version}${version === 0 ? " \xB7 \u5F85\u8FC1\u79FB" : " \xB7 \u5DF2\u5347\u7EA7"}`
|
|
16573
16981
|
] }),
|
|
16574
|
-
/* @__PURE__ */ (0,
|
|
16575
|
-
inspection && /* @__PURE__ */ (0,
|
|
16576
|
-
inspection.steps.map((step) => /* @__PURE__ */ (0,
|
|
16982
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { children: "\u5347\u7EA7\u524D\u8BF7\u7ED3\u675F\u4F19\u4F34\u4F1A\u8BDD\u548C\u540E\u53F0\u6267\u884C\u3002\u5B8C\u6574\u5907\u4EFD\u5E76\u6821\u9A8C\u540E\u624D\u6E05\u7406\u5DF2\u8FC1\u79FB\u7684\u65E7\u8DEF\u5F84\uFF0C\u4E0D\u4FEE\u6539\u7528\u6237\u5DE5\u4F5C\u6587\u6863\uFF1B\u670D\u52A1\u91CD\u8F7D\u540E\u81EA\u52A8\u91CD\u65B0\u8FDE\u63A5\u3002" }),
|
|
16983
|
+
inspection && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [
|
|
16984
|
+
inspection.steps.map((step) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("p", { children: [
|
|
16577
16985
|
"v",
|
|
16578
16986
|
step.from,
|
|
16579
16987
|
" \u2192 v",
|
|
@@ -16581,79 +16989,79 @@ function GeneralSettingsPanel() {
|
|
|
16581
16989
|
" \xB7 ",
|
|
16582
16990
|
step.title
|
|
16583
16991
|
] }, step.id)),
|
|
16584
|
-
/* @__PURE__ */ (0,
|
|
16585
|
-
/* @__PURE__ */ (0,
|
|
16586
|
-
/* @__PURE__ */ (0,
|
|
16587
|
-
/* @__PURE__ */ (0,
|
|
16588
|
-
/* @__PURE__ */ (0,
|
|
16589
|
-
/* @__PURE__ */ (0,
|
|
16590
|
-
/* @__PURE__ */ (0,
|
|
16591
|
-
/* @__PURE__ */ (0,
|
|
16992
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("details", { children: [
|
|
16993
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("summary", { children: "\u67E5\u770B\u76EE\u5F55\u4E0E\u68C0\u67E5\u8BE6\u60C5" }),
|
|
16994
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "dsh-partner-migration-paths", children: inspection.items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { children: [
|
|
16995
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("strong", { children: item.label }),
|
|
16996
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("code", { children: item.source }),
|
|
16997
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { children: "\u8FC1\u79FB\u81F3" }),
|
|
16998
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("code", { children: item.target }),
|
|
16999
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("small", { children: item.exists ? `${item.files} \u4E2A\u6587\u4EF6 \xB7 ${(item.bytes / 1024 / 1024).toFixed(2)} MB` : "\u5F53\u524D\u65E0\u6587\u4EF6" })
|
|
16592
17000
|
] }, i)) }),
|
|
16593
|
-
inspection.notices.map((text4, i) => /* @__PURE__ */ (0,
|
|
17001
|
+
inspection.notices.map((text4, i) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { children: text4 }, i))
|
|
16594
17002
|
] }),
|
|
16595
|
-
!!inspection.blockers.length && /* @__PURE__ */ (0,
|
|
16596
|
-
/* @__PURE__ */ (0,
|
|
16597
|
-
/* @__PURE__ */ (0,
|
|
17003
|
+
!!inspection.blockers.length && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { role: "alert", children: [
|
|
17004
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { children: "\u4EE5\u4E0B\u95EE\u9898\u9700\u8981\u5148\u5904\u7406\uFF1A" }),
|
|
17005
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("ul", { children: inspection.blockers.map((text4, i) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("li", { children: text4 }, i)) })
|
|
16598
17006
|
] }),
|
|
16599
|
-
inspection.migrationAvailable && /* @__PURE__ */ (0,
|
|
17007
|
+
inspection.migrationAvailable && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", className: "is-primary", disabled: busy, onClick: () => setConfirm(true), children: "\u5347\u7EA7\u8FC1\u79FB" })
|
|
16600
17008
|
] }),
|
|
16601
|
-
error && /* @__PURE__ */ (0,
|
|
16602
|
-
notice && /* @__PURE__ */ (0,
|
|
16603
|
-
reconnect && /* @__PURE__ */ (0,
|
|
16604
|
-
cleanup && /* @__PURE__ */ (0,
|
|
17009
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { role: "alert", children: error }),
|
|
17010
|
+
notice && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { role: "status", children: notice }),
|
|
17011
|
+
reconnect && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => void recover(), children: "\u91CD\u65B0\u8FDE\u63A5" }),
|
|
17012
|
+
cleanup && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(true), children: "\u91CD\u8BD5\u6E05\u7406\u65E7\u8DEF\u5F84" })
|
|
16605
17013
|
] }),
|
|
16606
|
-
confirm && /* @__PURE__ */ (0,
|
|
17014
|
+
confirm && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(WorkspaceDialog, { title: cleanup ? "\u786E\u8BA4\u6E05\u7406\u65E7\u8DEF\u5F84" : "\u786E\u8BA4\u5347\u7EA7\u8FC1\u79FB", detail: cleanup ? "\u91CD\u65B0\u6838\u5BF9\u5B8C\u6574\u5907\u4EFD\uFF0C\u53EA\u6E05\u7406\u672A\u53D8\u5316\u7684\u65E7\u6587\u4EF6\uFF0C\u4E0D\u91CD\u65B0\u8FC1\u79FB\u6D3B\u52A8\u6570\u636E\u3002" : "\u516C\u5171\u6570\u636E\u4E0E\u6240\u6709\u4F19\u4F34\u79C1\u6709\u6570\u636E\u5C06\u4E00\u8D77\u8FC1\u79FB\uFF0C\u5168\u90E8\u6821\u9A8C\u540E\u624D\u5207\u6362\u76EE\u5F55\u7248\u672C\u3002", close: () => {
|
|
16607
17015
|
if (!busy) setConfirm(false);
|
|
16608
|
-
}, children: /* @__PURE__ */ (0,
|
|
17016
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("form", { className: "dsh-partner-feature-form", onSubmit: (event) => {
|
|
16609
17017
|
event.preventDefault();
|
|
16610
17018
|
void migrate();
|
|
16611
17019
|
}, children: [
|
|
16612
|
-
/* @__PURE__ */ (0,
|
|
16613
|
-
/* @__PURE__ */ (0,
|
|
16614
|
-
/* @__PURE__ */ (0,
|
|
16615
|
-
/* @__PURE__ */ (0,
|
|
16616
|
-
/* @__PURE__ */ (0,
|
|
17020
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "is-wide", children: "\u5148\u5B8C\u6574\u5907\u4EFD\uFF0C\u7248\u672C\u63D0\u4EA4\u540E\u6E05\u7406\u5DF2\u6838\u9A8C\u7684\u65E7\u8DEF\u5F84\uFF1B\u5386\u53F2\u8BB0\u5FC6\u5907\u4EFD\u4F1A\u539F\u6837\u5F52\u6863\u3002\u5907\u4EFD\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\u3002\u8FC1\u79FB\u671F\u95F4\u8BF7\u52FF\u7F16\u8F91\u6587\u4EF6\u3001\u4FEE\u6539\u63D2\u4EF6\u914D\u7F6E\u6216\u542F\u52A8\u5176\u4ED6\u5B9E\u4F8B\u3002" }),
|
|
17021
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "is-wide", children: "\u8D26\u53F7\u51ED\u636E\u548C\u5BBF\u4E3B\u4F1A\u8BDD\u4E0D\u642C\u52A8\u3002\u5347\u7EA7\u540E\u4E0D\u8981\u76F4\u63A5\u5B89\u88C5\u4E0D\u652F\u6301\u65B0\u7248\u5B58\u50A8\u7684\u65E7\u63D2\u4EF6\u3002" }),
|
|
17022
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("footer", { children: [
|
|
17023
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", disabled: busy, onClick: () => setConfirm(false), children: "\u53D6\u6D88" }),
|
|
17024
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "submit", className: "is-primary", disabled: busy, children: busy ? "\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u52FF\u5173\u95ED\u2026" : cleanup ? "\u786E\u8BA4\u6E05\u7406\u5DF2\u5907\u4EFD\u7684\u65E7\u8DEF\u5F84" : "\u786E\u8BA4\u8FC1\u79FB\u76EE\u5F55\u548C\u6570\u636E" })
|
|
16617
17025
|
] })
|
|
16618
17026
|
] }) })
|
|
16619
17027
|
] });
|
|
16620
17028
|
}
|
|
16621
17029
|
|
|
16622
17030
|
// src/ui/workspace-navigation.tsx
|
|
16623
|
-
var
|
|
17031
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
16624
17032
|
var workspaceGroups = [
|
|
16625
|
-
{ id: "features", label: "\u529F\u80FD", detail: "\u80FD\u529B\u3001\u534F\u4F5C\u4E0E\u8BA1\u5212", icon: import_dsh_client_ui_primitives23.
|
|
16626
|
-
{ id: "skills", label: "Skill \u5E02\u573A", icon: import_dsh_client_ui_primitives23.
|
|
16627
|
-
{ id: "mcp", label: "MCP \u670D\u52A1", icon: import_dsh_client_ui_primitives23.
|
|
16628
|
-
{ id: "board", label: "\u4EFB\u52A1\u770B\u677F", icon: import_dsh_client_ui_primitives23.
|
|
16629
|
-
{ id: "schedules", label: "\u5B9A\u65F6\u4EFB\u52A1", icon: import_dsh_client_ui_primitives23.
|
|
17033
|
+
{ id: "features", label: "\u529F\u80FD", detail: "\u80FD\u529B\u3001\u534F\u4F5C\u4E0E\u8BA1\u5212", icon: import_dsh_client_ui_primitives23.IconBrowseOutlineRegular, pages: [
|
|
17034
|
+
{ id: "skills", label: "Skill \u5E02\u573A", icon: import_dsh_client_ui_primitives23.IconBrowseOutlineRegular },
|
|
17035
|
+
{ id: "mcp", label: "MCP \u670D\u52A1", icon: import_dsh_client_ui_primitives23.IconBrowseOutlineRegular },
|
|
17036
|
+
{ id: "board", label: "\u4EFB\u52A1\u770B\u677F", icon: import_dsh_client_ui_primitives23.IconListPenOutlineRegular },
|
|
17037
|
+
{ id: "schedules", label: "\u5B9A\u65F6\u4EFB\u52A1", icon: import_dsh_client_ui_primitives23.IconPlayOutlineRegular }
|
|
16630
17038
|
] },
|
|
16631
|
-
{ id: "settings", label: "\u8BBE\u7F6E", detail: "\u57FA\u672C\u8BBE\u7F6E\u4E0E\u5361\u7247\u5916\u89C2", icon: import_dsh_client_ui_primitives23.
|
|
16632
|
-
{ id: "general", label: "\u57FA\u672C\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.
|
|
16633
|
-
{ id: "pendant", label: "\u5361\u7247\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.
|
|
17039
|
+
{ id: "settings", label: "\u8BBE\u7F6E", detail: "\u57FA\u672C\u8BBE\u7F6E\u4E0E\u5361\u7247\u5916\u89C2", icon: import_dsh_client_ui_primitives23.IconEditOutlineRegular, pages: [
|
|
17040
|
+
{ id: "general", label: "\u57FA\u672C\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.IconEditOutlineRegular },
|
|
17041
|
+
{ id: "pendant", label: "\u5361\u7247\u8BBE\u7F6E", icon: import_dsh_client_ui_primitives23.IconEditOutlineRegular }
|
|
16634
17042
|
] }
|
|
16635
17043
|
];
|
|
16636
17044
|
var workspaceGroup = (page) => workspaceGroups.find((group) => group.pages.some((item) => item.id === page));
|
|
16637
17045
|
function WorkspaceGroupLinks({ view, open, compact = false }) {
|
|
16638
17046
|
const active2 = workspaceGroup(view);
|
|
16639
|
-
return /* @__PURE__ */ (0,
|
|
17047
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_jsx_runtime46.Fragment, { children: workspaceGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("button", { type: "button", className: active2?.id === group.id ? "is-active" : "", "aria-current": active2?.id === group.id ? "page" : void 0, onClick: () => {
|
|
16640
17048
|
if (active2?.id !== group.id) open(group.pages[0].id);
|
|
16641
17049
|
}, children: [
|
|
16642
|
-
/* @__PURE__ */ (0,
|
|
16643
|
-
compact ? /* @__PURE__ */ (0,
|
|
16644
|
-
/* @__PURE__ */ (0,
|
|
16645
|
-
/* @__PURE__ */ (0,
|
|
17050
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(group.icon, { size: 16 }) }),
|
|
17051
|
+
compact ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: group.label }) : /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
|
|
17052
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("strong", { children: group.label }),
|
|
17053
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("small", { children: group.detail })
|
|
16646
17054
|
] })
|
|
16647
17055
|
] }, group.id)) });
|
|
16648
17056
|
}
|
|
16649
17057
|
function WorkspaceGroupTabs({ view, open }) {
|
|
16650
17058
|
const group = workspaceGroup(view);
|
|
16651
17059
|
if (!group) return null;
|
|
16652
|
-
return /* @__PURE__ */ (0,
|
|
17060
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("nav", { className: "dsh-partner-tabs dsh-partner-group-tabs", "aria-label": `${group.label}\u6807\u7B7E\u9875`, children: group.pages.map((page) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TabButton, { active: view === page.id, onClick: () => open(page.id), icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(page.icon, { size: 16 }), children: page.label }, page.id)) });
|
|
16653
17061
|
}
|
|
16654
17062
|
|
|
16655
17063
|
// src/client.tsx
|
|
16656
|
-
var
|
|
17064
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
16657
17065
|
var PLUGIN_ID = "@lemoncat7/dsh-partner";
|
|
16658
17066
|
var STYLE_ID = `${PLUGIN_ID}/client`;
|
|
16659
17067
|
var cssText = `${client_default}
|
|
@@ -16668,29 +17076,29 @@ ${identity_editor_default}
|
|
|
16668
17076
|
${form_surface_default}
|
|
16669
17077
|
${mcp_default}`;
|
|
16670
17078
|
var WORKSPACE_PAGES = /* @__PURE__ */ new Set(["skills", "mcp", "board", "schedules", "pendant", "general"]);
|
|
16671
|
-
var inject = ["slots", "layout", "sessions"];
|
|
17079
|
+
var inject = ["slots", "layout", "sessions", "uiWorkspace"];
|
|
16672
17080
|
function apply(ctx) {
|
|
16673
17081
|
ctx.effect(installStyles, "dsh-partner: styles");
|
|
16674
|
-
const controller = createPartnerController(ctx, PLUGIN_ID, (props, current2) => /* @__PURE__ */ (0,
|
|
17082
|
+
const controller = createPartnerController(ctx, PLUGIN_ID, (props, current2) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PartnerWorkspace, { ...props, controller: current2 }));
|
|
16675
17083
|
if (pendingStorageRecovery() !== void 0) controller.open(void 0, { page: "general" });
|
|
16676
|
-
ctx.slots.inject("shell.overlay", () => ctx.slots.register({ name: "shell.overlay", id: "partner-pendant", order: 30 }, () => /* @__PURE__ */ (0,
|
|
17084
|
+
ctx.slots.inject("shell.overlay", () => ctx.slots.register({ name: "shell.overlay", id: "partner-pendant", order: 30 }, () => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PartnerPendant, { controller })));
|
|
16677
17085
|
ctx.effect(() => observePluginWorkspace(PLUGIN_ID, controller.close), "dsh-partner: exclusive workspace");
|
|
16678
17086
|
ctx.effect(() => () => controller.close(), "dsh-partner: workspace lifecycle");
|
|
16679
17087
|
ctx.slots.inject("sidebar.footer.action", () => ctx.slots.register({
|
|
16680
17088
|
name: "sidebar.footer.action",
|
|
16681
17089
|
id: "partner",
|
|
16682
17090
|
order: -120
|
|
16683
|
-
}, (props) => /* @__PURE__ */ (0,
|
|
17091
|
+
}, (props) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PartnerSidebar, { ...props, controller, collapse: () => ctx.layout.toggleSidebar() })));
|
|
16684
17092
|
}
|
|
16685
17093
|
function PartnerSidebar(props) {
|
|
16686
|
-
const ref = (0,
|
|
17094
|
+
const ref = (0, import_react51.useRef)(null);
|
|
16687
17095
|
useWorkspaceTopAnchor(ref);
|
|
16688
|
-
const [open, setOpen] = (0,
|
|
16689
|
-
const [snapshot, setSnapshot] = (0,
|
|
17096
|
+
const [open, setOpen] = (0, import_react51.useState)(true);
|
|
17097
|
+
const [snapshot, setSnapshot] = (0, import_react51.useState)();
|
|
16690
17098
|
useChannelStatus(setSnapshot);
|
|
16691
|
-
const [, update] = (0,
|
|
16692
|
-
(0,
|
|
16693
|
-
(0,
|
|
17099
|
+
const [, update] = (0, import_react51.useState)(0);
|
|
17100
|
+
(0, import_react51.useEffect)(() => props.controller.subscribe(() => update((value) => value + 1)), [props.controller]);
|
|
17101
|
+
(0, import_react51.useEffect)(() => {
|
|
16694
17102
|
void loadPartner().then(setSnapshot).catch(() => {
|
|
16695
17103
|
});
|
|
16696
17104
|
}, [props.controller.isOpen()]);
|
|
@@ -16698,35 +17106,35 @@ function PartnerSidebar(props) {
|
|
|
16698
17106
|
props.controller.open(id);
|
|
16699
17107
|
if (props.wide && window.matchMedia("(max-width: 820px)").matches) props.collapse();
|
|
16700
17108
|
};
|
|
16701
|
-
if (!props.wide) return /* @__PURE__ */ (0,
|
|
16702
|
-
return /* @__PURE__ */ (0,
|
|
16703
|
-
/* @__PURE__ */ (0,
|
|
16704
|
-
/* @__PURE__ */ (0,
|
|
17109
|
+
if (!props.wide) return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("section", { ref, className: "dsh-partner-sidebar is-rail", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: `dsh-partner-rail${props.controller.isOpen() ? " is-active" : ""}`, title: "\u4F19\u4F34", onClick: () => props.controller.toggle(), children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 18 }) }) });
|
|
17110
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { ref, className: "dsh-partner-sidebar", children: [
|
|
17111
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-sidebar-heading", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", className: "dsh-partner-sidebar-title", "aria-expanded": open, onClick: () => setOpen((value) => !value), children: [
|
|
17112
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { "data-open": open, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconChevronDownOutlineRegular, { size: 14 }) }),
|
|
16705
17113
|
"\u4F19\u4F34"
|
|
16706
17114
|
] }) }),
|
|
16707
|
-
/* @__PURE__ */ (0,
|
|
16708
|
-
/* @__PURE__ */ (0,
|
|
16709
|
-
/* @__PURE__ */ (0,
|
|
16710
|
-
/* @__PURE__ */ (0,
|
|
16711
|
-
/* @__PURE__ */ (0,
|
|
17115
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: `dsh-partner-sidebar-list${open ? " is-open" : ""}`, "aria-hidden": !open, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-sidebar-list-inner", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", tabIndex: open ? 0 : -1, className: `dsh-partner-sidebar-row${props.controller.isOpen() ? " is-active" : ""}`, onClick: () => launch(), children: [
|
|
17116
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "dsh-partner-sidebar-symbol", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }) }),
|
|
17117
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17118
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u4F19\u4F34\u9762\u677F" }),
|
|
17119
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: snapshot ? `${snapshot.companions.length} \u4F4D\u4F19\u4F34 \xB7 ${snapshot.channels.filter((item) => item.runtimeStatus === "running").length} \u4E2A\u6E20\u9053\u5728\u7EBF` : "\u8EAB\u4EFD\u3001\u80FD\u529B\u4E0E\u6E20\u9053" })
|
|
16712
17120
|
] }),
|
|
16713
|
-
/* @__PURE__ */ (0,
|
|
17121
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", { className: snapshot?.channels.some((item) => item.runtimeStatus === "running") ? "is-online" : "" })
|
|
16714
17122
|
] }) }) })
|
|
16715
17123
|
] });
|
|
16716
17124
|
}
|
|
16717
17125
|
function PartnerWorkspace({ controller }) {
|
|
16718
|
-
const [snapshot, setSnapshot] = (0,
|
|
17126
|
+
const [snapshot, setSnapshot] = (0, import_react51.useState)();
|
|
16719
17127
|
useChannelStatus(setSnapshot);
|
|
16720
|
-
const [selectedId, setSelectedId] = (0,
|
|
16721
|
-
const [view, setView] = (0,
|
|
16722
|
-
const [requestedDestination, setRequestedDestination] = (0,
|
|
16723
|
-
const [error, setError] = (0,
|
|
16724
|
-
const [loading, setLoading] = (0,
|
|
16725
|
-
const [creatingCompanion, setCreatingCompanion] = (0,
|
|
16726
|
-
const [notice, setNotice] = (0,
|
|
16727
|
-
const selectionRef = (0,
|
|
17128
|
+
const [selectedId, setSelectedId] = (0, import_react51.useState)(controller.selected());
|
|
17129
|
+
const [view, setView] = (0, import_react51.useState)(controller.destination()?.page ?? "home");
|
|
17130
|
+
const [requestedDestination, setRequestedDestination] = (0, import_react51.useState)(controller.destination());
|
|
17131
|
+
const [error, setError] = (0, import_react51.useState)();
|
|
17132
|
+
const [loading, setLoading] = (0, import_react51.useState)(true);
|
|
17133
|
+
const [creatingCompanion, setCreatingCompanion] = (0, import_react51.useState)(false);
|
|
17134
|
+
const [notice, setNotice] = (0, import_react51.useState)();
|
|
17135
|
+
const selectionRef = (0, import_react51.useRef)({ selectedId, companions: snapshot?.companions });
|
|
16728
17136
|
selectionRef.current = { selectedId, companions: snapshot?.companions };
|
|
16729
|
-
const refresh = (0,
|
|
17137
|
+
const refresh = (0, import_react51.useCallback)(async (throwOnError = false) => {
|
|
16730
17138
|
try {
|
|
16731
17139
|
const next = await loadPartner();
|
|
16732
17140
|
setSnapshot(next);
|
|
@@ -16739,10 +17147,10 @@ function PartnerWorkspace({ controller }) {
|
|
|
16739
17147
|
setLoading(false);
|
|
16740
17148
|
}
|
|
16741
17149
|
}, []);
|
|
16742
|
-
(0,
|
|
17150
|
+
(0, import_react51.useEffect)(() => {
|
|
16743
17151
|
void refresh();
|
|
16744
17152
|
}, [refresh]);
|
|
16745
|
-
(0,
|
|
17153
|
+
(0, import_react51.useEffect)(() => controller.subscribe(() => {
|
|
16746
17154
|
const next = controller.selected();
|
|
16747
17155
|
if (next) setSelectedId(next);
|
|
16748
17156
|
const destination = controller.destination();
|
|
@@ -16811,18 +17219,18 @@ function PartnerWorkspace({ controller }) {
|
|
|
16811
17219
|
setSelectedId(id);
|
|
16812
17220
|
setView("home");
|
|
16813
17221
|
};
|
|
16814
|
-
return /* @__PURE__ */ (0,
|
|
16815
|
-
creatingCompanion && /* @__PURE__ */ (0,
|
|
16816
|
-
/* @__PURE__ */ (0,
|
|
16817
|
-
/* @__PURE__ */ (0,
|
|
16818
|
-
/* @__PURE__ */ (0,
|
|
16819
|
-
/* @__PURE__ */ (0,
|
|
16820
|
-
/* @__PURE__ */ (0,
|
|
16821
|
-
/* @__PURE__ */ (0,
|
|
16822
|
-
/* @__PURE__ */ (0,
|
|
17222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("main", { className: "dsh-partner-workspace", children: [
|
|
17223
|
+
creatingCompanion && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompanionCreateDialog, { close: () => setCreatingCompanion(false), create }),
|
|
17224
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { className: "dsh-partner-topbar", children: [
|
|
17225
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-topbar-brand", children: [
|
|
17226
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", "data-xiaohei-workspace-close": true, onClick: controller.close, "aria-label": "\u8FD4\u56DE\u4F1A\u8BDD", title: "\u8FD4\u56DE\u4F1A\u8BDD", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconChevronLeftOutlineRegular, { size: 15 }) }),
|
|
17227
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 18 }),
|
|
17228
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17229
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u4F19\u4F34" }),
|
|
17230
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u957F\u671F\u8EAB\u4EFD\u4E0E\u6D88\u606F\u6E20\u9053" })
|
|
16823
17231
|
] })
|
|
16824
17232
|
] }),
|
|
16825
|
-
/* @__PURE__ */ (0,
|
|
17233
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
16826
17234
|
MobileWorkspaceControls,
|
|
16827
17235
|
{
|
|
16828
17236
|
companions: snapshot?.companions ?? [],
|
|
@@ -16834,87 +17242,87 @@ function PartnerWorkspace({ controller }) {
|
|
|
16834
17242
|
}
|
|
16835
17243
|
)
|
|
16836
17244
|
] }),
|
|
16837
|
-
/* @__PURE__ */ (0,
|
|
16838
|
-
/* @__PURE__ */ (0,
|
|
16839
|
-
/* @__PURE__ */ (0,
|
|
16840
|
-
/* @__PURE__ */ (0,
|
|
16841
|
-
/* @__PURE__ */ (0,
|
|
16842
|
-
/* @__PURE__ */ (0,
|
|
17245
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-grid", children: [
|
|
17246
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("aside", { className: "dsh-partner-roster", children: [
|
|
17247
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-roster-title", children: [
|
|
17248
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17249
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "COMPANIONS" }),
|
|
17250
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u4F19\u4F34\u540D\u518C" })
|
|
16843
17251
|
] }),
|
|
16844
|
-
/* @__PURE__ */ (0,
|
|
17252
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => setCreatingCompanion(true), "aria-label": "\u65B0\u5EFA\u4F19\u4F34", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconPlusOutlineRegular, { size: 16 }) })
|
|
16845
17253
|
] }),
|
|
16846
|
-
/* @__PURE__ */ (0,
|
|
17254
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-roster-list", children: snapshot?.companions.map((companion) => {
|
|
16847
17255
|
const channel = snapshot.channels.find((item) => item.companionId === companion.id);
|
|
16848
|
-
return /* @__PURE__ */ (0,
|
|
16849
|
-
/* @__PURE__ */ (0,
|
|
16850
|
-
/* @__PURE__ */ (0,
|
|
16851
|
-
/* @__PURE__ */ (0,
|
|
16852
|
-
/* @__PURE__ */ (0,
|
|
17256
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", className: !workspacePage && selectedId === companion.id ? "is-active" : "", onClick: () => openCompanion(companion.id), children: [
|
|
17257
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Avatar, { name: companion.name }),
|
|
17258
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17259
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: companion.name }),
|
|
17260
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: companion.role })
|
|
16853
17261
|
] }),
|
|
16854
|
-
/* @__PURE__ */ (0,
|
|
17262
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", { className: channel?.runtimeStatus === "running" ? "is-online" : "", title: channel ? channel.runtimeStatus : "\u672A\u8FDE\u63A5\u6E20\u9053" })
|
|
16855
17263
|
] }, companion.id);
|
|
16856
17264
|
}) }),
|
|
16857
|
-
/* @__PURE__ */ (0,
|
|
16858
|
-
/* @__PURE__ */ (0,
|
|
16859
|
-
/* @__PURE__ */ (0,
|
|
16860
|
-
/* @__PURE__ */ (0,
|
|
16861
|
-
/* @__PURE__ */ (0,
|
|
16862
|
-
/* @__PURE__ */ (0,
|
|
17265
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("nav", { className: "dsh-partner-workspace-nav", "aria-label": "\u4F19\u4F34\u5DE5\u4F5C\u533A", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WorkspaceGroupLinks, { view, open: setView }) }),
|
|
17266
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-roster-note", children: [
|
|
17267
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconLinkOutlineRegular, { size: 16 }),
|
|
17268
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17269
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u8EAB\u4EFD\u4E0E\u6E20\u9053\u5206\u79BB" }),
|
|
17270
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u6E20\u9053\u53EA\u8D1F\u8D23\u6536\u53D1\uFF0C\u6743\u9650\u4ECD\u7531 DSH \u5DE5\u5177\u51B3\u5B9A\u3002" })
|
|
16863
17271
|
] })
|
|
16864
17272
|
] })
|
|
16865
17273
|
] }),
|
|
16866
|
-
/* @__PURE__ */ (0,
|
|
16867
|
-
loading ? /* @__PURE__ */ (0,
|
|
16868
|
-
/* @__PURE__ */ (0,
|
|
16869
|
-
/* @__PURE__ */ (0,
|
|
16870
|
-
/* @__PURE__ */ (0,
|
|
16871
|
-
view === "skills" && /* @__PURE__ */ (0,
|
|
16872
|
-
view === "mcp" && /* @__PURE__ */ (0,
|
|
16873
|
-
view === "board" && /* @__PURE__ */ (0,
|
|
16874
|
-
view === "schedules" && /* @__PURE__ */ (0,
|
|
16875
|
-
view === "pendant" && /* @__PURE__ */ (0,
|
|
16876
|
-
view === "general" && /* @__PURE__ */ (0,
|
|
17274
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: `dsh-partner-stage${workspacePage ? " is-workspace-page" : ""}`, children: [
|
|
17275
|
+
loading ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ContentState, { title: "\u6B63\u5728\u8BFB\u53D6\u4F19\u4F34\u2026" }) : workspacePage ? /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
|
|
17276
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-group-heading", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h1", { children: workspaceGroup(view)?.label }) }),
|
|
17277
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WorkspaceGroupTabs, { view, open: setView }),
|
|
17278
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-stage-scroll is-workspace-page", children: [
|
|
17279
|
+
view === "skills" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SkillsPanel, {}),
|
|
17280
|
+
view === "mcp" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(McpPanel, {}),
|
|
17281
|
+
view === "board" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(RequirementBoard, { initialTaskId: requestedDestination?.taskId, openRequest: requestedDestination }),
|
|
17282
|
+
view === "schedules" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SchedulePanel, { companions: snapshot?.companions ?? [] }),
|
|
17283
|
+
view === "pendant" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(PendantSettingsPanel, {}),
|
|
17284
|
+
view === "general" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(GeneralSettingsPanel, {})
|
|
16877
17285
|
] })
|
|
16878
|
-
] }) : selected === void 0 ? /* @__PURE__ */ (0,
|
|
16879
|
-
/* @__PURE__ */ (0,
|
|
16880
|
-
/* @__PURE__ */ (0,
|
|
16881
|
-
/* @__PURE__ */ (0,
|
|
16882
|
-
/* @__PURE__ */ (0,
|
|
16883
|
-
/* @__PURE__ */ (0,
|
|
16884
|
-
/* @__PURE__ */ (0,
|
|
17286
|
+
] }) : selected === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ContentState, { title: "\u521B\u5EFA\u7B2C\u4E00\u4E2A\u4F19\u4F34", detail: "\u4F19\u4F34\u4F1A\u4FDD\u5B58\u72EC\u7ACB\u8EAB\u4EFD\u3001\u80FD\u529B\u548C\u5FAE\u4FE1\u4F1A\u8BDD\u3002", action: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => setCreatingCompanion(true), children: "\u65B0\u5EFA\u4F19\u4F34" }) }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
|
|
17287
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-identity", children: [
|
|
17288
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Avatar, { name: selected.name }),
|
|
17289
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17290
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "ACTIVE COMPANION" }),
|
|
17291
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h1", { children: selected.name }),
|
|
17292
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: selected.description || selected.role })
|
|
16885
17293
|
] }),
|
|
16886
|
-
/* @__PURE__ */ (0,
|
|
17294
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ChannelStatus, { channel: snapshot?.channels.find((item) => item.companionId === selected.id) })
|
|
16887
17295
|
] }),
|
|
16888
|
-
/* @__PURE__ */ (0,
|
|
16889
|
-
/* @__PURE__ */ (0,
|
|
16890
|
-
/* @__PURE__ */ (0,
|
|
16891
|
-
/* @__PURE__ */ (0,
|
|
16892
|
-
/* @__PURE__ */ (0,
|
|
16893
|
-
/* @__PURE__ */ (0,
|
|
16894
|
-
/* @__PURE__ */ (0,
|
|
17296
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("nav", { className: "dsh-partner-tabs", "aria-label": "\u4F19\u4F34\u914D\u7F6E", children: [
|
|
17297
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "home", onClick: () => setView("home"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }), children: "\u603B\u89C8" }),
|
|
17298
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "identity", onClick: () => setView("identity"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconEditOutlineRegular, { size: 16 }), children: "\u8EAB\u4EFD" }),
|
|
17299
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "capabilities", onClick: () => setView("capabilities"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }), children: "\u80FD\u529B" }),
|
|
17300
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "weixin", onClick: () => setView("weixin"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconLinkOutlineRegular, { size: 16 }), children: "\u6E20\u9053" }),
|
|
17301
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "memory", onClick: () => setView("memory"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconDataOutlineRegular, { size: 16 }), children: "\u8BB0\u5FC6" }),
|
|
17302
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(TabButton, { active: view === "concerns", onClick: () => setView("concerns"), icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconBrowseOutlineRegular, { size: 16 }), children: "\u6301\u7EED\u5173\u6CE8" })
|
|
16895
17303
|
] }),
|
|
16896
|
-
/* @__PURE__ */ (0,
|
|
16897
|
-
notice && /* @__PURE__ */ (0,
|
|
16898
|
-
view === "home" && /* @__PURE__ */ (0,
|
|
16899
|
-
view === "identity" && /* @__PURE__ */ (0,
|
|
16900
|
-
view === "capabilities" && /* @__PURE__ */ (0,
|
|
16901
|
-
view === "weixin" && /* @__PURE__ */ (0,
|
|
16902
|
-
view === "memory" && /* @__PURE__ */ (0,
|
|
16903
|
-
view === "concerns" && /* @__PURE__ */ (0,
|
|
17304
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-stage-scroll", children: [
|
|
17305
|
+
notice && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-inline-notice", role: "status", children: notice }),
|
|
17306
|
+
view === "home" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(HomePanel, { companion: selected, snapshot, navigate: setView, openSession, startSession, renewSession }),
|
|
17307
|
+
view === "identity" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(IdentityEditor, { companion: selected, count: snapshot?.companions.length ?? 1, onChanged: () => refresh(true), onRemoved: companionRemoved }),
|
|
17308
|
+
view === "capabilities" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CapabilityEditor, { companion: selected, presets: snapshot?.presets ?? [], onChanged: () => refresh(true) }, selected.id),
|
|
17309
|
+
view === "weixin" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ChannelsPanel, { companion: selected, snapshot, onChanged: refresh, weixin: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinPanel, { companion: selected, snapshot, onChanged: refresh }) }, selected.id),
|
|
17310
|
+
view === "memory" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(MemoryPanel, { companion: selected, snapshot, openSession, startSession, renewSession, onChanged: refresh }, selected.id),
|
|
17311
|
+
view === "concerns" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ConcernPanel, { companion: selected, snapshot, onChanged: refresh }, selected.id)
|
|
16904
17312
|
] })
|
|
16905
17313
|
] }),
|
|
16906
|
-
error && /* @__PURE__ */ (0,
|
|
17314
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-error", role: "alert", children: error })
|
|
16907
17315
|
] })
|
|
16908
17316
|
] })
|
|
16909
17317
|
] });
|
|
16910
17318
|
}
|
|
16911
17319
|
function MobileWorkspaceControls({ companions, selectedId, view, openCompanion, openPage, createCompanion }) {
|
|
16912
|
-
return /* @__PURE__ */ (0,
|
|
16913
|
-
/* @__PURE__ */ (0,
|
|
16914
|
-
/* @__PURE__ */ (0,
|
|
16915
|
-
/* @__PURE__ */ (0,
|
|
17320
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-mobile-controls", children: [
|
|
17321
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-mobile-companion-row", children: [
|
|
17322
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompanionPicker, { companions, selectedId, onChange: openCompanion }),
|
|
17323
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: "dsh-partner-mobile-create", onClick: createCompanion, "aria-label": "\u65B0\u5EFA\u4F19\u4F34", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconPlusOutlineRegular, { size: 17 }) })
|
|
16916
17324
|
] }),
|
|
16917
|
-
/* @__PURE__ */ (0,
|
|
17325
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("nav", { className: "dsh-partner-mobile-workspace-nav", "aria-label": "\u4F19\u4F34\u5DE5\u4F5C\u533A\u5FEB\u6377\u5165\u53E3", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WorkspaceGroupLinks, { view, open: openPage, compact: true }) })
|
|
16918
17326
|
] });
|
|
16919
17327
|
}
|
|
16920
17328
|
function HomePanel({ companion, snapshot, navigate, openSession, startSession, renewSession }) {
|
|
@@ -16925,77 +17333,77 @@ function HomePanel({ companion, snapshot, navigate, openSession, startSession, r
|
|
|
16925
17333
|
const approved = channel ? snapshot.pairings.filter((item) => item.channelId === channel.id && item.status === "approved").length : 0;
|
|
16926
17334
|
const capabilities = companion.capabilities.map((item) => CAPABILITY_LABELS[item]);
|
|
16927
17335
|
const online = channel?.runtimeStatus === "running";
|
|
16928
|
-
return /* @__PURE__ */ (0,
|
|
16929
|
-
/* @__PURE__ */ (0,
|
|
16930
|
-
/* @__PURE__ */ (0,
|
|
16931
|
-
/* @__PURE__ */ (0,
|
|
16932
|
-
/* @__PURE__ */ (0,
|
|
17336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home", children: [
|
|
17337
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { className: "dsh-partner-home-heading", children: [
|
|
17338
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17339
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u5DE5\u4F5C\u53F0" }),
|
|
17340
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h2", { children: online ? `${companion.name} \u6B63\u5728\u6E20\u9053\u5F85\u547D` : `${companion.name} \u5DF2\u51C6\u5907\u5C31\u7EEA` })
|
|
16933
17341
|
] }),
|
|
16934
|
-
/* @__PURE__ */ (0,
|
|
17342
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: online ? "\u6D88\u606F\u3001\u6388\u6743\u4E0E\u4E0A\u4E0B\u6587\u8FB9\u754C\u90FD\u5728\u8FD9\u91CC\u6C47\u603B\u3002" : "\u4F19\u4F34\u8EAB\u4EFD\u3001\u4F1A\u8BDD\u4E0E\u80FD\u529B\u5DF2\u7ECF\u51C6\u5907\u5B8C\u6210\u3002" })
|
|
16935
17343
|
] }),
|
|
16936
|
-
/* @__PURE__ */ (0,
|
|
16937
|
-
/* @__PURE__ */ (0,
|
|
16938
|
-
/* @__PURE__ */ (0,
|
|
16939
|
-
/* @__PURE__ */ (0,
|
|
16940
|
-
/* @__PURE__ */ (0,
|
|
17344
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: `dsh-partner-home-channel${online ? " is-online" : ""}`, children: [
|
|
17345
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-route", "aria-hidden": "true", children: [
|
|
17346
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Avatar, { name: companion.name }),
|
|
17347
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "dsh-partner-route-line", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", {}) }),
|
|
17348
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "dsh-partner-route-weixin", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinGlyph, { large: true }) })
|
|
16941
17349
|
] }),
|
|
16942
|
-
/* @__PURE__ */ (0,
|
|
16943
|
-
/* @__PURE__ */ (0,
|
|
16944
|
-
/* @__PURE__ */ (0,
|
|
17350
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-channel-copy", children: [
|
|
17351
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { className: "dsh-partner-home-kicker", children: [
|
|
17352
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", {}),
|
|
16945
17353
|
"\u6D88\u606F\u6E20\u9053 \xB7 ",
|
|
16946
17354
|
channel?.platform === "matrix" ? "Matrix" : channel?.platform === "mattermost" ? "Mattermost" : "\u5FAE\u4FE1"
|
|
16947
17355
|
] }),
|
|
16948
|
-
/* @__PURE__ */ (0,
|
|
16949
|
-
/* @__PURE__ */ (0,
|
|
16950
|
-
/* @__PURE__ */ (0,
|
|
16951
|
-
/* @__PURE__ */ (0,
|
|
16952
|
-
/* @__PURE__ */ (0,
|
|
17356
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("h3", { children: !channel ? "\u7B49\u5F85\u626B\u7801\u8FDE\u63A5" : online ? "\u8FDE\u63A5\u6B63\u5E38\uFF0C\u6B63\u5728\u63A5\u6536\u6D88\u606F" : channel.runtimeStatus === "error" ? "\u6E20\u9053\u8FDE\u63A5\u9700\u8981\u5904\u7406" : "\u6E20\u9053\u5F53\u524D\u5DF2\u505C\u7528" }),
|
|
17357
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: !channel ? "\u8FDE\u63A5\u5FAE\u4FE1\u3001Matrix \u6216 Mattermost\uFF0C\u8054\u7CFB\u4EBA\u9996\u6B21\u53D1\u6D88\u606F\u9700\u6279\u51C6\u3002" : online ? "\u672C\u5730\u4E0E\u6240\u6709\u5DF2\u6388\u6743\u6E20\u9053\u5171\u7528\u4F19\u4F34\u4E3B\u5BF9\u8BDD\uFF0C\u56DE\u590D\u8FD4\u56DE\u6D88\u606F\u6765\u6E90\u3002" : channel.lastError || "\u6E20\u9053\u914D\u7F6E\u4ECD\u7136\u4FDD\u7559\uFF0C\u53EF\u4EE5\u968F\u65F6\u91CD\u65B0\u542F\u7528\u3002" }),
|
|
17358
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-channel-actions", children: [
|
|
17359
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: "is-primary", onClick: () => navigate("weixin"), children: !channel ? "\u8FDE\u63A5\u5FAE\u4FE1" : pending > 0 ? `\u5904\u7406 ${pending} \u4E2A\u8BF7\u6C42` : "\u7BA1\u7406\u6E20\u9053" }),
|
|
17360
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: !channel ? "\u9009\u62E9\u6E20\u9053\u5E76\u8FDE\u63A5\u8D26\u53F7" : `${approved} \u4F4D\u8054\u7CFB\u4EBA \xB7 \u5171\u7528\u4E3B\u5BF9\u8BDD` })
|
|
16953
17361
|
] })
|
|
16954
17362
|
] })
|
|
16955
17363
|
] }),
|
|
16956
|
-
/* @__PURE__ */ (0,
|
|
16957
|
-
/* @__PURE__ */ (0,
|
|
16958
|
-
/* @__PURE__ */ (0,
|
|
16959
|
-
/* @__PURE__ */ (0,
|
|
16960
|
-
/* @__PURE__ */ (0,
|
|
16961
|
-
/* @__PURE__ */ (0,
|
|
16962
|
-
/* @__PURE__ */ (0,
|
|
17364
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-home-details", children: [
|
|
17365
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: "dsh-partner-home-profile", children: [
|
|
17366
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { children: [
|
|
17367
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconUserOutlineRegular, { size: 16 }) }),
|
|
17368
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
|
|
17369
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u4F19\u4F34\u5E95\u7A3F" }),
|
|
17370
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: companion.role })
|
|
16963
17371
|
] }),
|
|
16964
|
-
/* @__PURE__ */ (0,
|
|
17372
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => navigate("identity"), children: "\u7F16\u8F91" })
|
|
16965
17373
|
] }),
|
|
16966
|
-
/* @__PURE__ */ (0,
|
|
17374
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("blockquote", { children: companion.instructions || companion.description || "\u5C1A\u672A\u8BBE\u7F6E\u957F\u671F\u884C\u4E3A\u51C6\u5219\u3002" })
|
|
16967
17375
|
] }),
|
|
16968
|
-
/* @__PURE__ */ (0,
|
|
16969
|
-
/* @__PURE__ */ (0,
|
|
16970
|
-
/* @__PURE__ */ (0,
|
|
16971
|
-
/* @__PURE__ */ (0,
|
|
16972
|
-
/* @__PURE__ */ (0,
|
|
16973
|
-
/* @__PURE__ */ (0,
|
|
17376
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: "dsh-partner-home-runtime", children: [
|
|
17377
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { children: [
|
|
17378
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconAgentPresetOutlineRegular, { size: 16 }) }),
|
|
17379
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
|
|
17380
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u8FD0\u884C\u80FD\u529B" }),
|
|
17381
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: companion.presetId || "DSH \u9ED8\u8BA4 Preset" })
|
|
16974
17382
|
] }),
|
|
16975
|
-
/* @__PURE__ */ (0,
|
|
17383
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => navigate("capabilities"), children: "\u8C03\u6574" })
|
|
16976
17384
|
] }),
|
|
16977
|
-
/* @__PURE__ */ (0,
|
|
17385
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-home-capability-list", children: capabilities.length ? capabilities.map((item) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("em", { children: item }, item)) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u5C1A\u672A\u58F0\u660E\u80FD\u529B\u8303\u56F4" }) })
|
|
16978
17386
|
] }),
|
|
16979
|
-
/* @__PURE__ */ (0,
|
|
16980
|
-
/* @__PURE__ */ (0,
|
|
16981
|
-
/* @__PURE__ */ (0,
|
|
16982
|
-
/* @__PURE__ */ (0,
|
|
16983
|
-
/* @__PURE__ */ (0,
|
|
16984
|
-
/* @__PURE__ */ (0,
|
|
17387
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("section", { className: "dsh-partner-home-continuity", children: [
|
|
17388
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("header", { children: [
|
|
17389
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconDataOutlineRegular, { size: 16 }) }),
|
|
17390
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
|
|
17391
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "\u4F19\u4F34\u5BF9\u8BDD" }),
|
|
17392
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: localSession?.archived ? "\u4F1A\u8BDD\u5DF2\u5F52\u6863" : "\u4F19\u4F34\u4F1A\u8BDD\u5DF2\u5EFA\u7ACB" })
|
|
16985
17393
|
] }),
|
|
16986
|
-
/* @__PURE__ */ (0,
|
|
17394
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", onClick: () => localSession === void 0 ? void startSession(companion.id) : localSession.archived ? void renewSession(localSession.id) : void openSession(localSession.id, localSession.sessionId), children: localSession === void 0 ? "\u5F00\u59CB\u5BF9\u8BDD" : localSession.archived ? "\u5F00\u59CB\u65B0\u4F1A\u8BDD" : "\u6253\u5F00\u4F1A\u8BDD" })
|
|
16987
17395
|
] }),
|
|
16988
|
-
/* @__PURE__ */ (0,
|
|
17396
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: localSession ? `\u6700\u8FD1\u6D3B\u52A8\u4E8E ${relativeTime(localSession.lastMessageAt)}\uFF1B\u672C\u5730\u4E0E\u6E20\u9053\u5728\u8FD9\u91CC\u63A5\u7740\u804A\u3002` : "\u4F19\u4F34\u4F1A\u8BDD\u6B63\u5728\u521D\u59CB\u5316\uFF0C\u7A0D\u540E\u5373\u53EF\u6253\u5F00\u3002" })
|
|
16989
17397
|
] })
|
|
16990
17398
|
] })
|
|
16991
17399
|
] });
|
|
16992
17400
|
}
|
|
16993
17401
|
function WeixinPanel({ companion, snapshot, onChanged }) {
|
|
16994
17402
|
const channel = snapshot.channels.find((item) => item.companionId === companion.id && (!item.platform || item.platform === "weixin"));
|
|
16995
|
-
const [login, setLogin] = (0,
|
|
16996
|
-
const [busy, setBusy] = (0,
|
|
16997
|
-
const [error, setError] = (0,
|
|
16998
|
-
(0,
|
|
17403
|
+
const [login, setLogin] = (0, import_react51.useState)();
|
|
17404
|
+
const [busy, setBusy] = (0, import_react51.useState)(false);
|
|
17405
|
+
const [error, setError] = (0, import_react51.useState)();
|
|
17406
|
+
(0, import_react51.useEffect)(() => {
|
|
16999
17407
|
if (!login || login.phase === "confirmed" || login.phase === "expired" || login.phase === "error") return;
|
|
17000
17408
|
const timer2 = window.setInterval(() => {
|
|
17001
17409
|
void api(`/weixin/login/${login.id}`).then(async (result) => {
|
|
@@ -17041,93 +17449,93 @@ function WeixinPanel({ companion, snapshot, onChanged }) {
|
|
|
17041
17449
|
setError(errorMessage(reason));
|
|
17042
17450
|
}
|
|
17043
17451
|
};
|
|
17044
|
-
return /* @__PURE__ */ (0,
|
|
17045
|
-
/* @__PURE__ */ (0,
|
|
17046
|
-
!channel && !login && /* @__PURE__ */ (0,
|
|
17047
|
-
/* @__PURE__ */ (0,
|
|
17048
|
-
/* @__PURE__ */ (0,
|
|
17049
|
-
/* @__PURE__ */ (0,
|
|
17452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-form is-channel", children: [
|
|
17453
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SectionHeading, { eyebrow: "PRIMARY CHANNEL", title: "\u5FAE\u4FE1\u6E20\u9053", detail: "\u4F7F\u7528\u5FAE\u4FE1 iLink Bot \u626B\u7801\u63A5\u5165\u3002\u6BCF\u4E2A\u673A\u5668\u4EBA\u53EA\u7ED1\u5B9A\u4E00\u4E2A\u4F19\u4F34\uFF0C\u6BCF\u4F4D\u8054\u7CFB\u4EBA\u4FDD\u6301\u72EC\u7ACB DSH \u4F1A\u8BDD\u3002" }),
|
|
17454
|
+
!channel && !login && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-weixin-connect", borderRadius: 15, distortionScale: -10, saturation: 1.06, children: [
|
|
17455
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-weixin-mark", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinGlyph, { large: true }) }),
|
|
17456
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17457
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("strong", { children: [
|
|
17050
17458
|
"\u628A ",
|
|
17051
17459
|
companion.name,
|
|
17052
17460
|
" \u5E26\u5230\u5FAE\u4FE1"
|
|
17053
17461
|
] }),
|
|
17054
|
-
/* @__PURE__ */ (0,
|
|
17055
|
-
/* @__PURE__ */ (0,
|
|
17056
|
-
/* @__PURE__ */ (0,
|
|
17057
|
-
/* @__PURE__ */ (0,
|
|
17058
|
-
/* @__PURE__ */ (0,
|
|
17462
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: "\u626B\u7801\u540E\uFF0C\u673A\u5668\u4EBA\u51ED\u636E\u76F4\u63A5\u4FDD\u5B58\u8FDB DSH \u51ED\u636E\u5E93\uFF0C\u4E0D\u4F1A\u663E\u793A\u5728\u6D4F\u89C8\u5668\u6216\u666E\u901A\u914D\u7F6E\u6587\u4EF6\u4E2D\u3002" }),
|
|
17463
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("ul", { children: [
|
|
17464
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("li", { children: "\u79C1\u804A\u9996\u6B21\u8054\u7CFB\u5FC5\u987B\u5BA1\u6279" }),
|
|
17465
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("li", { children: "\u8054\u7CFB\u4EBA\u4E4B\u95F4\u4E0A\u4E0B\u6587\u5B8C\u5168\u9694\u79BB" }),
|
|
17466
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("li", { children: "\u5DE5\u5177\u6743\u9650\u4E0D\u4F1A\u56E0\u5FAE\u4FE1\u8EAB\u4EFD\u81EA\u52A8\u6269\u5927" })
|
|
17059
17467
|
] })
|
|
17060
17468
|
] }),
|
|
17061
|
-
/* @__PURE__ */ (0,
|
|
17469
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", disabled: busy, onClick: () => {
|
|
17062
17470
|
void begin();
|
|
17063
17471
|
}, children: busy ? "\u6B63\u5728\u7533\u8BF7\u4E8C\u7EF4\u7801\u2026" : "\u626B\u7801\u8FDE\u63A5\u5FAE\u4FE1" })
|
|
17064
17472
|
] }),
|
|
17065
|
-
login && /* @__PURE__ */ (0,
|
|
17066
|
-
/* @__PURE__ */ (0,
|
|
17067
|
-
/* @__PURE__ */ (0,
|
|
17068
|
-
/* @__PURE__ */ (0,
|
|
17069
|
-
/* @__PURE__ */ (0,
|
|
17070
|
-
/* @__PURE__ */ (0,
|
|
17071
|
-
(login.phase === "expired" || login.phase === "error") && /* @__PURE__ */ (0,
|
|
17473
|
+
login && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-qr", borderRadius: 16, distortionScale: -10, saturation: 1.06, children: [
|
|
17474
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-qr-code", children: login.qrContent && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(QRCodeSVG, { value: login.qrContent, size: 176, level: "M" }) }),
|
|
17475
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17476
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "WECHAT ILINK BOT" }),
|
|
17477
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: login.phase === "scanned" ? "\u5DF2\u626B\u7801\uFF0C\u8BF7\u5728\u5FAE\u4FE1\u786E\u8BA4" : login.phase === "expired" ? "\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F" : login.phase === "error" ? "\u8FDE\u63A5\u5931\u8D25" : "\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801" }),
|
|
17478
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: login.error || (login.phase === "scanned" ? "\u786E\u8BA4\u540E\u4F1A\u81EA\u52A8\u542F\u52A8\u6E20\u9053\uFF0C\u4E0D\u9700\u8981\u590D\u5236 Token\u3002" : "\u4E8C\u7EF4\u7801\u7EA6 5 \u5206\u949F\u6709\u6548\u3002\u6B64\u9875\u9762\u53EF\u4EE5\u5B89\u5168\u5730\u4FDD\u6301\u6253\u5F00\u3002") }),
|
|
17479
|
+
(login.phase === "expired" || login.phase === "error") && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { type: "button", onClick: () => {
|
|
17072
17480
|
setLogin(void 0);
|
|
17073
17481
|
void begin();
|
|
17074
17482
|
}, children: [
|
|
17075
|
-
/* @__PURE__ */ (0,
|
|
17483
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconRefreshOutlineRegular, { size: 16 }),
|
|
17076
17484
|
"\u91CD\u65B0\u751F\u6210"
|
|
17077
17485
|
] })
|
|
17078
17486
|
] })
|
|
17079
17487
|
] }),
|
|
17080
|
-
channel && /* @__PURE__ */ (0,
|
|
17081
|
-
/* @__PURE__ */ (0,
|
|
17082
|
-
/* @__PURE__ */ (0,
|
|
17083
|
-
/* @__PURE__ */ (0,
|
|
17084
|
-
/* @__PURE__ */ (0,
|
|
17085
|
-
/* @__PURE__ */ (0,
|
|
17086
|
-
/* @__PURE__ */ (0,
|
|
17488
|
+
channel && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
|
|
17489
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(GlassSurface, { as: "div", interactive: true, className: "dsh-partner-channel-card", borderRadius: 14, distortionScale: -10, saturation: 1.06, children: [
|
|
17490
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-weixin-mark", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(WeixinGlyph, { large: true }) }),
|
|
17491
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17492
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "WECHAT CHANNEL" }),
|
|
17493
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: channel.name }),
|
|
17494
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { children: channel.accountId })
|
|
17087
17495
|
] }),
|
|
17088
|
-
/* @__PURE__ */ (0,
|
|
17089
|
-
/* @__PURE__ */ (0,
|
|
17496
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ChannelStatus, { channel }),
|
|
17497
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { type: "button", className: "dsh-partner-switch", "data-on": channel.enabled, disabled: busy, "aria-label": channel.enabled ? "\u505C\u7528\u5FAE\u4FE1\u6E20\u9053" : "\u542F\u7528\u5FAE\u4FE1\u6E20\u9053", onClick: () => {
|
|
17090
17498
|
void toggle();
|
|
17091
|
-
}, children: /* @__PURE__ */ (0,
|
|
17499
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("i", {}) })
|
|
17092
17500
|
] }),
|
|
17093
|
-
channel.lastError && /* @__PURE__ */ (0,
|
|
17094
|
-
/* @__PURE__ */ (0,
|
|
17095
|
-
/* @__PURE__ */ (0,
|
|
17096
|
-
/* @__PURE__ */ (0,
|
|
17097
|
-
/* @__PURE__ */ (0,
|
|
17501
|
+
channel.lastError && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-inline-error", children: channel.lastError }),
|
|
17502
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "dsh-partner-pairing-heading", children: [
|
|
17503
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
|
|
17504
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("small", { children: "ACCESS" }),
|
|
17505
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: "\u79C1\u804A\u914D\u5BF9" })
|
|
17098
17506
|
] }),
|
|
17099
|
-
/* @__PURE__ */ (0,
|
|
17507
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("em", { children: [
|
|
17100
17508
|
pairings.filter((item) => item.status === "pending").length,
|
|
17101
17509
|
" \u4E2A\u5F85\u5904\u7406"
|
|
17102
17510
|
] })
|
|
17103
17511
|
] }),
|
|
17104
|
-
/* @__PURE__ */ (0,
|
|
17105
|
-
/* @__PURE__ */ (0,
|
|
17106
|
-
/* @__PURE__ */ (0,
|
|
17107
|
-
/* @__PURE__ */ (0,
|
|
17108
|
-
/* @__PURE__ */ (0,
|
|
17512
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dsh-partner-pairings", children: pairings.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(ContentState, { title: "\u8FD8\u6CA1\u6709\u8054\u7CFB\u4EBA", detail: "\u6709\u4EBA\u9996\u6B21\u5411\u673A\u5668\u4EBA\u53D1\u6D88\u606F\u540E\uFF0C\u914D\u5BF9\u8BF7\u6C42\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002", compact: true }) : pairings.map((pairing) => /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("article", { children: [
|
|
17513
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: `is-${pairing.status}`, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_dsh_client_ui_primitives24.IconUserOutlineRegular, { size: 16 }) }),
|
|
17514
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
|
|
17515
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("strong", { children: pairing.displayName }),
|
|
17516
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("small", { children: [
|
|
17109
17517
|
pairing.status === "pending" ? "\u7B49\u5F85\u5BA1\u6279" : pairing.status === "approved" ? "\u5DF2\u6388\u6743\u72EC\u7ACB\u4F1A\u8BDD" : "\u5DF2\u963B\u6B62",
|
|
17110
17518
|
" \xB7 ",
|
|
17111
17519
|
new Date(pairing.updatedAt).toLocaleString()
|
|
17112
17520
|
] })
|
|
17113
17521
|
] }),
|
|
17114
|
-
pairing.status === "pending" && /* @__PURE__ */ (0,
|
|
17115
|
-
/* @__PURE__ */ (0,
|
|
17522
|
+
pairing.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_jsx_runtime47.Fragment, { children: [
|
|
17523
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => {
|
|
17116
17524
|
void actPairing(pairing.id, "blocked");
|
|
17117
17525
|
}, children: "\u62D2\u7EDD" }),
|
|
17118
|
-
/* @__PURE__ */ (0,
|
|
17526
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { className: "is-primary", onClick: () => {
|
|
17119
17527
|
void actPairing(pairing.id, "approved");
|
|
17120
17528
|
}, children: "\u6279\u51C6" })
|
|
17121
17529
|
] }),
|
|
17122
|
-
pairing.status === "approved" && /* @__PURE__ */ (0,
|
|
17530
|
+
pairing.status === "approved" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => {
|
|
17123
17531
|
void actPairing(pairing.id, "blocked");
|
|
17124
17532
|
}, children: "\u64A4\u9500" }),
|
|
17125
|
-
pairing.status === "blocked" && /* @__PURE__ */ (0,
|
|
17533
|
+
pairing.status === "blocked" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("button", { onClick: () => {
|
|
17126
17534
|
void actPairing(pairing.id, "approved");
|
|
17127
17535
|
}, children: "\u91CD\u65B0\u6279\u51C6" })
|
|
17128
17536
|
] }, pairing.id)) })
|
|
17129
17537
|
] }),
|
|
17130
|
-
error && /* @__PURE__ */ (0,
|
|
17538
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "dsh-partner-inline-error", children: error })
|
|
17131
17539
|
] });
|
|
17132
17540
|
}
|
|
17133
17541
|
function installStyles() {
|