dsh-mutipleagent 0.0.0-stage → 0.2.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.
Files changed (138) hide show
  1. package/CHANGELOG.md +149 -0
  2. package/CONTRIBUTING.md +49 -0
  3. package/LICENSE +21 -0
  4. package/README.en.md +95 -0
  5. package/README.md +273 -2
  6. package/SECURITY.md +27 -0
  7. package/THIRD_PARTY_NOTICES.md +29 -0
  8. package/assets/agents/MAGPIE-LICENSE +21 -0
  9. package/assets/agents/README.md +47 -0
  10. package/assets/agents/antigravity.png +0 -0
  11. package/assets/agents/claude.png +0 -0
  12. package/assets/agents/codex.png +0 -0
  13. package/assets/agents/copilot.svg +1 -0
  14. package/assets/agents/dsh.svg +1 -0
  15. package/assets/agents/gemini.png +0 -0
  16. package/assets/agents/grok.svg +1 -0
  17. package/assets/agents/hermes.svg +1 -0
  18. package/assets/agents/kimi.svg +1 -0
  19. package/assets/agents/omp.svg +7 -0
  20. package/assets/agents/opencode.svg +1 -0
  21. package/assets/agents/pi.svg +1 -0
  22. package/assets/kenney/LICENSE-furniture-kit.txt +23 -0
  23. package/assets/kenney/LICENSE-mini-characters.txt +28 -0
  24. package/assets/kenney/characters/Textures/colormap.png +0 -0
  25. package/assets/kenney/characters/character-female-a.glb +0 -0
  26. package/assets/kenney/characters/character-female-b.glb +0 -0
  27. package/assets/kenney/characters/character-female-c.glb +0 -0
  28. package/assets/kenney/characters/character-female-d.glb +0 -0
  29. package/assets/kenney/characters/character-female-e.glb +0 -0
  30. package/assets/kenney/characters/character-female-f.glb +0 -0
  31. package/assets/kenney/characters/character-male-a.glb +0 -0
  32. package/assets/kenney/characters/character-male-b.glb +0 -0
  33. package/assets/kenney/characters/character-male-c.glb +0 -0
  34. package/assets/kenney/characters/character-male-d.glb +0 -0
  35. package/assets/kenney/characters/character-male-e.glb +0 -0
  36. package/assets/kenney/characters/character-male-f.glb +0 -0
  37. package/assets/kenney/furniture/benchCushion.glb +0 -0
  38. package/assets/kenney/furniture/bookcaseOpen.glb +0 -0
  39. package/assets/kenney/furniture/books.glb +0 -0
  40. package/assets/kenney/furniture/cabinetTelevision.glb +0 -0
  41. package/assets/kenney/furniture/cardboardBoxClosed.glb +0 -0
  42. package/assets/kenney/furniture/chairCushion.glb +0 -0
  43. package/assets/kenney/furniture/chairDesk.glb +0 -0
  44. package/assets/kenney/furniture/chairModernCushion.glb +0 -0
  45. package/assets/kenney/furniture/coatRackStanding.glb +0 -0
  46. package/assets/kenney/furniture/computerKeyboard.glb +0 -0
  47. package/assets/kenney/furniture/computerMouse.glb +0 -0
  48. package/assets/kenney/furniture/computerScreen.glb +0 -0
  49. package/assets/kenney/furniture/desk.glb +0 -0
  50. package/assets/kenney/furniture/doorway.glb +0 -0
  51. package/assets/kenney/furniture/kitchenBar.glb +0 -0
  52. package/assets/kenney/furniture/kitchenCabinet.glb +0 -0
  53. package/assets/kenney/furniture/kitchenCoffeeMachine.glb +0 -0
  54. package/assets/kenney/furniture/kitchenFridgeLarge.glb +0 -0
  55. package/assets/kenney/furniture/kitchenMicrowave.glb +0 -0
  56. package/assets/kenney/furniture/kitchenSink.glb +0 -0
  57. package/assets/kenney/furniture/lampRoundFloor.glb +0 -0
  58. package/assets/kenney/furniture/lampSquareTable.glb +0 -0
  59. package/assets/kenney/furniture/laptop.glb +0 -0
  60. package/assets/kenney/furniture/loungeChairRelax.glb +0 -0
  61. package/assets/kenney/furniture/loungeSofa.glb +0 -0
  62. package/assets/kenney/furniture/plantSmall1.glb +0 -0
  63. package/assets/kenney/furniture/plantSmall2.glb +0 -0
  64. package/assets/kenney/furniture/plantSmall3.glb +0 -0
  65. package/assets/kenney/furniture/pottedPlant.glb +0 -0
  66. package/assets/kenney/furniture/radio.glb +0 -0
  67. package/assets/kenney/furniture/rugRectangle.glb +0 -0
  68. package/assets/kenney/furniture/rugRound.glb +0 -0
  69. package/assets/kenney/furniture/sideTable.glb +0 -0
  70. package/assets/kenney/furniture/speaker.glb +0 -0
  71. package/assets/kenney/furniture/stoolBar.glb +0 -0
  72. package/assets/kenney/furniture/table.glb +0 -0
  73. package/assets/kenney/furniture/tableCoffee.glb +0 -0
  74. package/assets/kenney/furniture/tableRound.glb +0 -0
  75. package/assets/kenney/furniture/televisionModern.glb +0 -0
  76. package/assets/kenney/furniture/toaster.glb +0 -0
  77. package/assets/kenney/furniture/trashcan.glb +0 -0
  78. package/assets/kenney/furniture/wallWindow.glb +0 -0
  79. package/assets/logo.svg +12 -0
  80. package/assets/scene-icons/arcade.png +0 -0
  81. package/assets/scene-icons/cafe.png +0 -0
  82. package/assets/scene-icons/castle.png +0 -0
  83. package/assets/scene-icons/christmas.png +0 -0
  84. package/assets/scene-icons/graveyard.png +0 -0
  85. package/assets/scene-icons/map.png +0 -0
  86. package/assets/scene-icons/office.png +0 -0
  87. package/assets/scene-icons/pirate.png +0 -0
  88. package/assets/scene-icons/station.png +0 -0
  89. package/assets/scenes/arcade.jpg +0 -0
  90. package/assets/scenes/cafe.jpg +0 -0
  91. package/assets/scenes/castle.jpg +0 -0
  92. package/assets/scenes/christmas.jpg +0 -0
  93. package/assets/scenes/graveyard.jpg +0 -0
  94. package/assets/scenes/office.jpg +0 -0
  95. package/assets/scenes/pirate.jpg +0 -0
  96. package/assets/scenes/station.jpg +0 -0
  97. package/client.js +90 -0
  98. package/cordis.patch.yml +3 -0
  99. package/harness.cjs +49 -0
  100. package/package.json +87 -4
  101. package/public/app.js +1 -0
  102. package/public/chunks/chunk-RQUUGNU7.js +4305 -0
  103. package/public/demo-icons/arrow-counterclockwise.svg +4 -0
  104. package/public/demo-icons/arrow-right.svg +3 -0
  105. package/public/demo-icons/bell.svg +3 -0
  106. package/public/demo-icons/box-seam-fill.svg +3 -0
  107. package/public/demo-icons/chat-left-text-fill.svg +3 -0
  108. package/public/demo-icons/check-lg.svg +3 -0
  109. package/public/demo-icons/chevron-down.svg +3 -0
  110. package/public/demo-icons/cpu-fill.svg +4 -0
  111. package/public/demo-icons/crosshair.svg +3 -0
  112. package/public/demo-icons/diagram-3-fill.svg +3 -0
  113. package/public/demo-icons/file-earmark-code-fill.svg +3 -0
  114. package/public/demo-icons/fullscreen.svg +3 -0
  115. package/public/demo-icons/pause-fill.svg +3 -0
  116. package/public/demo-icons/people-fill.svg +3 -0
  117. package/public/demo-icons/pie-chart-fill.svg +3 -0
  118. package/public/demo-icons/play-fill.svg +3 -0
  119. package/public/demo-icons/search.svg +3 -0
  120. package/public/demo-icons/shield-check.svg +4 -0
  121. package/public/demo-icons/stack.svg +4 -0
  122. package/public/demo-icons/x-lg.svg +3 -0
  123. package/public/demo.css +173 -0
  124. package/public/demo.html +64 -0
  125. package/public/demo.js +7 -0
  126. package/public/index.html +59 -0
  127. package/public/style.css +15 -0
  128. package/public/vendor/office.js +1631 -0
  129. package/src/codex.js +674 -0
  130. package/src/demo.js +103 -0
  131. package/src/harness-watcher.js +584 -0
  132. package/src/server.js +239 -0
  133. package/vendor/licenses/BOOTSTRAP-ICONS-LICENSE.txt +21 -0
  134. package/vendor/licenses/ESBUILD-LICENSE.txt +21 -0
  135. package/vendor/licenses/MESHOPTIMIZER-LICENSE.txt +22 -0
  136. package/vendor/licenses/PLAYWRIGHT-LICENSE.txt +202 -0
  137. package/vendor/licenses/PLAYWRIGHT-NOTICE.txt +5 -0
  138. package/vendor/licenses/THREE-LICENSE.txt +21 -0
@@ -0,0 +1,29 @@
1
+ # Third-party notices
2
+
3
+ ## whatsmyagentdoing
4
+
5
+ - Project: https://github.com/Charonyuu/whatsmyagentdoing
6
+ - Revision: c69bf2bc98cf96a63d146070e9bbc83b507bf0bf (0.8.1)
7
+ - Copyright (c) 2026 cheoyu
8
+ - License: MIT, reproduced in LICENSE.
9
+ - Reused source: public/office.js → public/vendor/office.js; web/office3d.js → vendor/office3d.js. Resource URLs were adapted to support the Harness plugin mount path. Team layout and behavior extensions are in web/team-office.js.
10
+ - The incremental log reader design informed the Codex-only reader in src/codex.js.
11
+
12
+ ## Kenney assets
13
+
14
+ Mini Characters and Furniture Kit by Kenney, https://kenney.nl, CC0.
15
+ Original license files are retained in assets/kenney.
16
+
17
+ ## Agent icons and logo
18
+
19
+ Assets are preserved from the pinned upstream revision. Source and attribution are in assets/agents/README.md and assets/agents/MAGPIE-LICENSE.
20
+
21
+ ## JavaScript dependencies
22
+
23
+ The browser bundle includes Three.js (MIT) and its bundled loaders, controls, SkeletonUtils and Meshopt decoder. The Meshopt decoder is available under the MIT license as distributed with Three.js. esbuild is MIT-licensed and used only at build time. Playwright is Apache-2.0-licensed and used only for verification.
24
+
25
+ Dependency license texts are copied into vendor/licenses with the distributable.
26
+
27
+ ## Bootstrap Icons
28
+
29
+ The independent reference-style demo uses locally bundled SVG icons from https://github.com/twbs/icons. Bootstrap Icons is MIT-licensed; its original license is preserved in vendor/licenses/BOOTSTRAP-ICONS-LICENSE.txt. Icon paths are preserved; their displayed colors are styled by the demo stylesheet.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 yetone
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,47 @@
1
+ # Provider icons
2
+
3
+ `omp.svg` is a neutral OMP monogram made for this interface. It is not an
4
+ official oh-my-pi logo and contains no external resources. `opencode.svg` and
5
+ `hermes.svg` are likewise neutral marks drawn for this interface — a terminal
6
+ prompt and an H in a ring. Neither reproduces an official OpenCode or Hermes
7
+ logo, and neither contains external resources.
8
+
9
+ These official product icons identify the providers of sessions. They are served
10
+ locally so offline use and canvas/video capture do not depend on a third party.
11
+ Brand marks belong to their respective owners; this project is not endorsed by
12
+ them. The project code license does not grant rights to these trademarks.
13
+
14
+ Retrieved 2026-10-25, artwork unchanged:
15
+
16
+ - `antigravity.png`: the official Google Antigravity mark, retrieved 2026-10-31 from
17
+ https://antigravity.google/assets/image/antigravity-logo.png (linked as an icon by
18
+ https://antigravity.google/).
19
+ - `claude.png`: Claude's official website favicon, downloaded from
20
+ https://assets.claude.com/95a868946ac8a31e5ff832e2899f294aa368b836.png?w=128&h=128
21
+ (linked by https://claude.com/).
22
+ - `codex.png`: the official transparent Codex product mark bundled in the installed
23
+ OpenAI desktop app, `ChatGPT.app/Contents/Resources/app.asar` →
24
+ `webview/assets/codex-app-ga-logo-3e5209898ca3.png`.
25
+ Brand reference: https://openai.com/brand/.
26
+ - `copilot.svg`: the GitHub Copilot mark, retrieved 2026-10-29 from
27
+ Simple Icons (https://cdn.jsdelivr.net/npm/simple-icons@13.21.0/icons/githubcopilot.svg).
28
+ Brand reference: https://github.com/logos.
29
+ - `gemini.png`: Google's official Gemini product icon, downloaded from
30
+ https://www.gstatic.com/lamda/images/gemini_sparkle_4g_512_lt_f94943af3be039176192d.png
31
+ (linked by https://gemini.google.com/).
32
+
33
+ Added 2026-10-26 from Magpie's bundled client icons, with the SVG artwork unchanged:
34
+
35
+ - `kimi.svg`: `internal/gui/assets/icons/kimi.svg`.
36
+ - `dsh.svg`: `internal/gui/assets/icons/deepseek-color.svg`, the icon Magpie
37
+ assigns to DeepSeek Harness.
38
+ - `grok.svg`: `internal/gui/assets/icons/xai.svg`, the icon Magpie assigns to
39
+ Grok Build.
40
+
41
+ Source project: https://github.com/yetone/magpie. Its MIT notice is included
42
+ in `MAGPIE-LICENSE`; trademark ownership remains with the respective brands.
43
+ Monochrome Kimi and xAI marks retain their transparent backgrounds. The UI
44
+ displays them in black on light themes and white on dark themes; the SVG
45
+ geometry is not modified.
46
+ - `pi.svg`: the Pi mark, retrieved 2026-11-06 from
47
+ https://github.com/earendil-works/pi/blob/main/apps/p2/public/icons/favicon.svg (MIT repository).
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub Copilot</title><path d="M23.922 16.997C23.061 18.492 18.063 22.02 12 22.02 5.937 22.02.939 18.492.078 16.997A.641.641 0 0 1 0 16.741v-2.869a.883.883 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.098 10.098 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952C7.255 2.937 9.248 1.98 11.978 1.98c2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.841.841 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256Zm-11.75-5.992h-.344a4.359 4.359 0 0 1-.355.508c-.77.947-1.918 1.492-3.508 1.492-1.725 0-2.989-.359-3.782-1.259a2.137 2.137 0 0 1-.085-.104L4 11.746v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.359 4.359 0 0 1-.355-.508Zm2.328 3.25c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm-5 0c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm3.313-6.185c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>DeepSeek</title><path d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z" fill="#4D6BFE"></path></svg>
Binary file
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Grok</title><path d="M6.469 8.776L16.512 23h-4.464L2.005 8.776H6.47zm-.004 7.9l2.233 3.164L6.467 23H2l4.465-6.324zM22 2.582V23h-3.659V7.764L22 2.582zM22 1l-9.952 14.095-2.233-3.163L17.533 1H22z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hermes</title><circle cx="12" cy="12" r="9.2"/><path d="M8.5 7.6v8.8M15.5 7.6v8.8M8.5 12h7"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Kimi</title><path d="M21.846 0a1.923 1.923 0 110 3.846H20.15a.226.226 0 01-.227-.226V1.923C19.923.861 20.784 0 21.846 0z"></path><path d="M11.065 11.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164 0 00-.117.051l-7.82 7.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103 0-.186.103-.186.23V19.77c0 .128.083.23.186.23h2.69c.103 0 .186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158 0 01.205-.023l6.484 4.772a7.677 7.677 0 003.453 1.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028 5.028 0 01-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z"></path></svg>
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 96 96">
2
+ <title>OMP monogram</title>
3
+ <rect x="3" y="3" width="90" height="90" rx="24" fill="#a96926"/>
4
+ <g fill="none" stroke="#fff9ed" stroke-width="6" stroke-linecap="round" stroke-linejoin="round">
5
+ <path d="M18 38h12v22H18z M41 60V38l8 12 8-12v22 M69 60V38h10v11H69"/>
6
+ </g>
7
+ </svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenCode</title><path d="M8.6 6.2 2.9 12l5.7 5.8M15.4 6.2 21.1 12l-5.7 5.8M13.6 4.8 10.4 19.2"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4 4" shape-rendering="crispEdges"><rect x="0" y="0" width="3" height="1" fill="rgb(228 138 122)"/><rect x="2" y="1" width="1" height="1" fill="rgb(228 138 122)"/><rect x="0" y="1" width="1" height="3" fill="rgb(79 142 179)"/><rect x="1" y="2" width="1" height="1" fill="rgb(79 142 179)"/><rect x="3" y="2" width="1" height="2" fill="rgb(234 182 93)"/></svg>
@@ -0,0 +1,23 @@
1
+
2
+
3
+ Furniture Kit (2.0)
4
+
5
+ Created/distributed by Kenney (www.kenney.nl)
6
+ Creation date: 20-10-2018 16:21
7
+
8
+ ------------------------------
9
+
10
+ License: (Creative Commons Zero, CC0)
11
+ http://creativecommons.org/publicdomain/zero/1.0/
12
+
13
+ This content is free to use in personal, educational and commercial projects.
14
+ Support us by crediting Kenney or www.kenney.nl (this is not mandatory)
15
+
16
+ ------------------------------
17
+
18
+ Donate: http://support.kenney.nl
19
+ Request: http://request.kenney.nl
20
+ Patreon: http://patreon.com/kenney/
21
+
22
+ Follow on Twitter for updates:
23
+ http://twitter.com/KenneyNL
@@ -0,0 +1,28 @@
1
+
2
+
3
+ Mini Characters (1.0)
4
+
5
+ Created/distributed by Kenney (www.kenney.nl)
6
+ Creation date: 17-07-2024 11:31
7
+
8
+ ------------------------------
9
+
10
+ License: (Creative Commons Zero, CC0)
11
+ http://creativecommons.org/publicdomain/zero/1.0/
12
+
13
+ You can use this content for personal, educational, and commercial purposes.
14
+
15
+ Support by crediting 'Kenney' or 'www.kenney.nl' (this is not a requirement)
16
+
17
+ ------------------------------
18
+
19
+ • Website : www.kenney.nl
20
+ • Donate : www.kenney.nl/donate
21
+
22
+ • Patreon : patreon.com/kenney
23
+
24
+ Follow on social media for updates:
25
+
26
+ • Twitter: twitter.com/KenneyNL
27
+ • Instagram: instagram.com/kenney_nl
28
+ • Mastodon: mastodon.gamedev.place/@kenney
Binary file
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="256" height="256">
2
+ <title>whatsmyagentdoing</title>
3
+ <rect width="32" height="32" rx="9" fill="#ff6a4d"/>
4
+ <rect x="5.5" y="7.5" width="21" height="15" rx="4" fill="#fff"/>
5
+ <path d="M13 22h6l1 3h-8z" fill="#fff"/>
6
+ <rect x="10" y="24.6" width="12" height="2.2" rx="1.1" fill="#fff"/>
7
+ <ellipse cx="12.6" cy="15" rx="2.3" ry="3" fill="#1a1a1a"/>
8
+ <ellipse cx="19.4" cy="15" rx="2.3" ry="3" fill="#1a1a1a"/>
9
+ <circle cx="13.3" cy="13.9" r=".8" fill="#fff"/>
10
+ <circle cx="20.1" cy="13.9" r=".8" fill="#fff"/>
11
+ <circle cx="25.2" cy="7.6" r="3.6" fill="#22a874" stroke="#ff6a4d" stroke-width="1.6"/>
12
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/client.js ADDED
@@ -0,0 +1,90 @@
1
+ window.__ModuleLoader__.load({
2
+ id: 'dsh-mutipleagent',
3
+ factory: require => {
4
+ const { createElement: h, useEffect, useState } = require('react');
5
+ // 面板页面由本插件自己的静态服务提供(不是用户内容),需要同源才能读写本地偏好与同源 API。
6
+ // 其余权限(弹窗、顶层跳转、表单、下载、插件、指针锁定、模态框)保持沙箱默认拒绝。
7
+ const FRAME_SANDBOX = 'allow-scripts allow-same-origin';
8
+ function OfficeIcon({ size = 18 }) {
9
+ return h(
10
+ 'svg',
11
+ { width: size, height: size, viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: 1.6, 'aria-hidden': true },
12
+ h('path', { d: 'M3 10V5h6v5H3Zm12 0V5h6v5h-6ZM9 21v-5h6v5H9ZM6 10v3h12v-3m-6 3v3' }),
13
+ );
14
+ }
15
+ function OfficePage() {
16
+ const [version, setVersion] = useState(0);
17
+ const [error, setError] = useState('');
18
+ const [ready, setReady] = useState(false);
19
+ const url = '/dsh-mutipleagent/?mode=live&source=harness';
20
+ useEffect(() => {
21
+ let active = true;
22
+ const controller = new AbortController();
23
+ setError('');
24
+ setReady(false);
25
+ fetch('/dsh-mutipleagent/api/health', { signal: controller.signal })
26
+ .then(response => {
27
+ if (!response.ok) throw Error('办公室暂不可用(HTTP ' + response.status + '),请确认插件已启用后重试。');
28
+ return response.json();
29
+ })
30
+ .then(() => {
31
+ if (active) setReady(true);
32
+ })
33
+ .catch(error => {
34
+ if (active && error.name !== 'AbortError') setError(error.message);
35
+ });
36
+ return () => {
37
+ active = false;
38
+ controller.abort();
39
+ };
40
+ }, [version]);
41
+ if (error)
42
+ return h(
43
+ 'section',
44
+ { className: 'dsh-office-status', role: 'alert' },
45
+ h('p', null, error),
46
+ h('button', { type: 'button', onClick: () => setVersion(value => value + 1) }, '重新连接'),
47
+ );
48
+ if (!ready) return h('p', { className: 'dsh-office-status', role: 'status' }, '正在连接多 Agent 办公室…');
49
+ return h('iframe', {
50
+ className: 'dsh-office-frame',
51
+ src: url,
52
+ title: 'DeepSeek Harness 多 Agent 协作办公室',
53
+ sandbox: FRAME_SANDBOX,
54
+ referrerPolicy: 'no-referrer',
55
+ allow: 'clipboard-write',
56
+ });
57
+ }
58
+ return {
59
+ inject: ['slots'],
60
+ apply(ctx) {
61
+ ctx.effect(() => {
62
+ const style = document.createElement('style');
63
+ style.textContent =
64
+ '.dsh-office-frame{display:block;width:100%;height:100%;min-height:0;border:0;background:#edf3fc}.dsh-office-status{padding:24px;color:var(--dsw-alias-label-primary);font:inherit}.dsh-office-status button{font:inherit;color:inherit;background:var(--dsw-alias-button-elevated-fill);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:8px 16px;cursor:pointer}.dsh-office-status button:focus-visible{outline:2px solid var(--dsw-focus-ring-color);outline-offset:2px}';
65
+ document.head.appendChild(style);
66
+ return () => style.remove();
67
+ }, 'dsh-mutipleagent: panel styles');
68
+ ctx.effect(
69
+ () => ctx.slots.inject('main', () => ctx.slots.register({ name: 'main', key: 'dsh-mutipleagent' }, OfficePage)),
70
+ 'dsh-mutipleagent: main panel',
71
+ );
72
+ ctx.effect(
73
+ () =>
74
+ ctx.slots.inject('sidebar.panellist', () =>
75
+ ctx.slots.register(
76
+ {
77
+ name: 'sidebar.panellist',
78
+ id: 'dsh-mutipleagent',
79
+ order: 30,
80
+ label: '多 Agent 办公室',
81
+ },
82
+ OfficeIcon,
83
+ ),
84
+ ),
85
+ 'dsh-mutipleagent: sidebar entry',
86
+ );
87
+ },
88
+ };
89
+ },
90
+ });
@@ -0,0 +1,3 @@
1
+ - insert:
2
+ - id: dsh-mutipleagent
3
+ name: dsh-mutipleagent
package/harness.cjs ADDED
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+ const { createOfficeServer } = require('./src/server');
3
+ const { HarnessWatcher } = require('./src/harness-watcher');
4
+
5
+ exports.name = 'dsh-mutipleagent';
6
+ exports.inject = ['webServer', 'connection', 'sessionQuery'];
7
+
8
+ exports.apply = function apply(ctx) {
9
+ ctx.effect(() => {
10
+ const watcher = new HarnessWatcher({ query: ctx.sessionQuery });
11
+ const server = createOfficeServer({
12
+ watcher,
13
+ basePath: '/dsh-mutipleagent',
14
+ defaultDocument: 'demo.html',
15
+ authorize(req) {
16
+ const admission = ctx.connection.admit(req);
17
+ if ('rejection' in admission) return admission.rejection;
18
+ // 此页面展示本机完整团队,只向宿主的 owner 开放。
19
+ return admission.peer.principal.kind === 'owner' ? undefined : 403;
20
+ },
21
+ });
22
+ let unregister;
23
+ try {
24
+ unregister = ctx.webServer.register({
25
+ kind: 'prefix',
26
+ path: '/dsh-mutipleagent',
27
+ handler(req, res) {
28
+ // 保留目录尾斜线,保证相对资源在 Web 和 Desktop 代理中一致。
29
+ const url = new URL(req.url, 'http://localhost');
30
+ if (url.pathname === '/dsh-mutipleagent') {
31
+ res.writeHead(302, { location: '/dsh-mutipleagent/' + url.search });
32
+ res.end();
33
+ return;
34
+ }
35
+ server.emit('request', req, res);
36
+ },
37
+ });
38
+ watcher.start();
39
+ } catch (error) {
40
+ unregister?.();
41
+ server.closeOffice();
42
+ throw error;
43
+ }
44
+ return () => {
45
+ unregister();
46
+ server.closeOffice();
47
+ };
48
+ }, 'dsh-mutipleagent: office route and session observer');
49
+ };