@ivoryheart/herdr-world 0.1.0-rc.5

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 (72) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +25 -0
  3. package/THIRD_PARTY_NOTICES.md +52 -0
  4. package/UPSTREAM.md +33 -0
  5. package/bin/herdr-world +128 -0
  6. package/docs/world-assets.md +51 -0
  7. package/lib/bridges/linux-x64/herdr-world-bridge +0 -0
  8. package/lib/bridges/macos-arm64/herdr-world-bridge +0 -0
  9. package/lib/bridges/macos-x64/herdr-world-bridge +0 -0
  10. package/lib/herdr-world-launcher.sh +518 -0
  11. package/package.json +36 -0
  12. package/share/herdr-world/web/assets/BufferResource-TmONtVkO.js +311 -0
  13. package/share/herdr-world/web/assets/CanvasPool-C4EP4giG.js +1 -0
  14. package/share/herdr-world/web/assets/FederatedEventTarget-CkoT1sfc.js +1 -0
  15. package/share/herdr-world/web/assets/FilterSystem-Cc8XEqAi.js +173 -0
  16. package/share/herdr-world/web/assets/NoteMarkdownPreview-DSlfOjOc.js +29 -0
  17. package/share/herdr-world/web/assets/SpacesSurface-KQpjWcgW.js +1 -0
  18. package/share/herdr-world/web/assets/WebGLRenderer-COAVtjkI.js +1 -0
  19. package/share/herdr-world/web/assets/WebGPURenderer-DgfOPeWV.js +1 -0
  20. package/share/herdr-world/web/assets/WorldSurface-DvbdAI-_.js +197 -0
  21. package/share/herdr-world/web/assets/__vite-browser-external-2447137e-BvRk9kiK.js +0 -0
  22. package/share/herdr-world/web/assets/browserAll-B8-kqmYE.js +1 -0
  23. package/share/herdr-world/web/assets/chunk-QTnfLwEv.js +1 -0
  24. package/share/herdr-world/web/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  25. package/share/herdr-world/web/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  26. package/share/herdr-world/web/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  27. package/share/herdr-world/web/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  28. package/share/herdr-world/web/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  29. package/share/herdr-world/web/assets/getBatchSamplersUniformGroup-D-hqfegN.js +1 -0
  30. package/share/herdr-world/web/assets/ghostty-web-8_X1K5z2.js +13 -0
  31. package/share/herdr-world/web/assets/index-B1fwFDFH.css +1 -0
  32. package/share/herdr-world/web/assets/index-BAVYPHsj.js +17 -0
  33. package/share/herdr-world/web/assets/init-DeL9YIMj.js +1 -0
  34. package/share/herdr-world/web/assets/localUniformBit-BnogyqF-.js +264 -0
  35. package/share/herdr-world/web/assets/web-CkXGA1Hr.js +1 -0
  36. package/share/herdr-world/web/assets/web-DXrm_vsa.js +1 -0
  37. package/share/herdr-world/web/assets/webworkerAll-BFZtmp1G.js +1 -0
  38. package/share/herdr-world/web/herdr-logo-180.png +0 -0
  39. package/share/herdr-world/web/herdr-logo-192.png +0 -0
  40. package/share/herdr-world/web/herdr-logo-512.png +0 -0
  41. package/share/herdr-world/web/herdr-logo-maskable-192.png +0 -0
  42. package/share/herdr-world/web/herdr-logo-maskable-512.png +0 -0
  43. package/share/herdr-world/web/herdr-logo.svg +6 -0
  44. package/share/herdr-world/web/index.html +24 -0
  45. package/share/herdr-world/web/legal/Apache-2.0.txt +190 -0
  46. package/share/herdr-world/web/legal/LICENSE.txt +22 -0
  47. package/share/herdr-world/web/legal/PixiJS-MIT.txt +21 -0
  48. package/share/herdr-world/web/legal/THIRD_PARTY_NOTICES.md +52 -0
  49. package/share/herdr-world/web/legal/UPSTREAM.md +33 -0
  50. package/share/herdr-world/web/legal/manifest.json +33 -0
  51. package/share/herdr-world/web/legal/npm-licenses.txt +1381 -0
  52. package/share/herdr-world/web/legal/world-assets.md +51 -0
  53. package/share/herdr-world/web/manifest.json +42 -0
  54. package/share/herdr-world/web/world/LICENSE-PixiJS.txt +21 -0
  55. package/share/herdr-world/web/world/characters/1-D-1.png +0 -0
  56. package/share/herdr-world/web/world/characters/10-D-1.png +0 -0
  57. package/share/herdr-world/web/world/characters/11-D-1.png +0 -0
  58. package/share/herdr-world/web/world/characters/12-D-1.png +0 -0
  59. package/share/herdr-world/web/world/characters/2-D-1.png +0 -0
  60. package/share/herdr-world/web/world/characters/3-D-1.png +0 -0
  61. package/share/herdr-world/web/world/characters/4-D-1.png +0 -0
  62. package/share/herdr-world/web/world/characters/5-D-1.png +0 -0
  63. package/share/herdr-world/web/world/characters/6-D-1.png +0 -0
  64. package/share/herdr-world/web/world/characters/7-D-1.png +0 -0
  65. package/share/herdr-world/web/world/characters/8-D-1.png +0 -0
  66. package/share/herdr-world/web/world/characters/9-D-1.png +0 -0
  67. package/third_party/dependencies/README.md +22 -0
  68. package/third_party/dependencies/cargo-licenses.html +7696 -0
  69. package/third_party/dependencies/npm-licenses.txt +1381 -0
  70. package/third_party/licenses/Apache-2.0.txt +190 -0
  71. package/third_party/licenses/PixiJS-MIT.txt +21 -0
  72. package/vendor/herdr-compat/VENDOR-MANIFEST.toml +186 -0
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kevin
4
+ Copyright (c) 2026 IvoryHeart contributors
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # Herdr World
2
+
3
+ Herdr World is a browser and mobile client for monitoring and controlling Herdr agents.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install --global @ivoryheart/herdr-world
9
+ herdr-world
10
+ ```
11
+
12
+ The package contains the tested Linux x64, macOS ARM64, and macOS x64 bridge binaries and the
13
+ bundled web application. It requires Node.js 22.14.0 or newer and Linux glibc 2.34 or newer.
14
+ Windows, Linux ARM64, musl Linux, and unknown libc environments are not supported.
15
+
16
+ Package installation only installs files. It does not download or build native code, install Herdr,
17
+ create a workspace, or start a process.
18
+
19
+ Herdr World still requires a running Herdr 0.8.2 or newer session using terminal protocol 20. Start
20
+ Herdr from the directory containing the work it should manage, then run `herdr-world`. Use
21
+ `herdr-world --help` for bridge options. The bridge binds to loopback by default; Host, Origin, and
22
+ Content Security Policy checks are request protections, not user authentication.
23
+
24
+ The package includes the complete application legal notices and dependency inventories. The exact
25
+ source release and package checksums are recorded in the corresponding GitHub release workflow.
@@ -0,0 +1,52 @@
1
+ # Third-party notices
2
+
3
+ Herdr World contains code and assets from the projects below. The repository
4
+ history, lockfiles, and referenced manifests provide the exact version record.
5
+
6
+ ## Herdr Web
7
+
8
+ Herdr World is derived from
9
+ [`kcosr/herdr-web`](https://github.com/kcosr/herdr-web), licensed under the MIT
10
+ License, Copyright (c) 2026 Kevin. The retained MIT terms are in the repository
11
+ [`LICENSE`](LICENSE). The current synchronized revision is recorded in
12
+ [`UPSTREAM.md`](UPSTREAM.md).
13
+
14
+ ## Herdr compatibility source
15
+
16
+ `vendor/herdr-compat` contains copied or adapted source from
17
+ [`herdrdev/herdr`](https://github.com/herdrdev/herdr) v0.8.2 at commit
18
+ `9eb521456ac0d19d3ab3d9d7cea3cca10baa8a4c`, licensed under Apache-2.0.
19
+ The exact source paths, hashes, and local dispositions are recorded in
20
+ [`vendor/herdr-compat/VENDOR-MANIFEST.toml`](vendor/herdr-compat/VENDOR-MANIFEST.toml).
21
+ The license text is retained in
22
+ [`third_party/licenses/Apache-2.0.txt`](third_party/licenses/Apache-2.0.txt).
23
+
24
+ ## Claw-Empire character assets and Office adaptations
25
+
26
+ The character sprites in `web/public/world/characters` are copied from
27
+ [`GreenSheep01201/claw-empire`](https://github.com/GreenSheep01201/claw-empire)
28
+ at commit `66a24ea7df2435ef897c48c147deb7ec572c01c2`, licensed under
29
+ Apache-2.0, Copyright 2026 GreenSheep01201 (seowongil@gmail.com).
30
+
31
+ The Office geometry and drawing TypeScript files are modified adaptations of
32
+ the historical sources identified by hash in [`docs/world-assets.md`](docs/world-assets.md).
33
+ Herdr World's TypeScript port and subsequent modifications are documented
34
+ there as modified material. The Apache-2.0 text is retained in
35
+ [`third_party/licenses/Apache-2.0.txt`](third_party/licenses/Apache-2.0.txt).
36
+
37
+ ## PixiJS
38
+
39
+ World rendering uses PixiJS 8.3.4, licensed under the MIT License, Copyright
40
+ (c) 2013-2023 Mathew Groves and Chad Engler. Its license is retained in
41
+ [`third_party/licenses/PixiJS-MIT.txt`](third_party/licenses/PixiJS-MIT.txt)
42
+ and alongside the shipped World assets.
43
+
44
+ ## Other dependencies
45
+
46
+ JavaScript and Rust dependency versions are pinned by `package-lock.json`,
47
+ `web/package-lock.json`, `bridge/Cargo.lock`, and
48
+ `vendor/herdr-compat/Cargo.lock`. The complete production npm and planned
49
+ desktop Cargo closures, their selected licences, copyright notices, and full
50
+ licence texts are checked in under
51
+ [`third_party/dependencies`](third_party/dependencies). Release assembly fails
52
+ when those generated inventories drift from the resolved dependency graphs.
package/UPSTREAM.md ADDED
@@ -0,0 +1,33 @@
1
+ # Upstreams
2
+
3
+ Herdr World is derived from
4
+ [`kcosr/herdr-web`](https://github.com/kcosr/herdr-web) and runs against
5
+ [`herdrdev/herdr`](https://github.com/herdrdev/herdr).
6
+
7
+ The Git remotes are:
8
+
9
+ ```text
10
+ origin git@github.com:IvoryHeart/herdr-world.git
11
+ upstream git@github.com:kcosr/herdr-web.git
12
+ ```
13
+
14
+ Current synchronization points:
15
+
16
+ - Herdr Web: `e67537b6bdd99fe489584252ba2f84ea070a3193`
17
+ (`v0.5.0` plus its next-development marker)
18
+ - Herdr compatibility: Herdr `v0.8.2`, commit
19
+ `9eb521456ac0d19d3ab3d9d7cea3cca10baa8a4c`, terminal protocol `20`
20
+
21
+ Git history is the synchronization record. The Herdr Web commit above is a
22
+ merge ancestor of this repository; there is no separate hand-maintained
23
+ adoption ledger.
24
+
25
+ To update:
26
+
27
+ ```bash
28
+ git fetch upstream
29
+ git merge upstream/main
30
+ ```
31
+
32
+ Keep World implementation in its World-owned directories and resolve only the
33
+ small integration seams when an upstream change touches them.
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from "node:child_process";
3
+ import { realpathSync } from "node:fs";
4
+ import { fileURLToPath } from "node:url";
5
+ import { dirname, join, resolve } from "node:path";
6
+
7
+ export const SUPPORTED_PLATFORMS = {
8
+ "linux-x64": "linux-x64",
9
+ "darwin-arm64": "macos-arm64",
10
+ "darwin-x64": "macos-x64",
11
+ };
12
+
13
+ export function parseGlibcVersion(value) {
14
+ const match = typeof value === "string" ? value.match(/^(\d+)\.(\d+)$/) : null;
15
+ return match ? { major: Number(match[1]), minor: Number(match[2]) } : null;
16
+ }
17
+
18
+ function compareVersions(left, right) {
19
+ if (left.major !== right.major) return left.major - right.major;
20
+ return left.minor - right.minor;
21
+ }
22
+
23
+ export function selectBridge({
24
+ platform = process.platform,
25
+ arch = process.arch,
26
+ report = process.report,
27
+ } = {}) {
28
+ const key = `${platform}-${arch}`;
29
+ const target = SUPPORTED_PLATFORMS[key];
30
+ if (!target) {
31
+ throw new Error(`Herdr World does not support this platform or architecture: ${key}`);
32
+ }
33
+
34
+ if (platform !== "linux") return target;
35
+
36
+ const glibcValue = report?.getReport?.().header?.glibcVersionRuntime;
37
+ if (typeof glibcValue !== "string") {
38
+ throw new Error("Herdr World requires a detectable glibc runtime on Linux; musl or unknown libc is unsupported");
39
+ }
40
+ const glibc = parseGlibcVersion(glibcValue);
41
+ if (!glibc) {
42
+ throw new Error(`Herdr World could not parse the Linux glibc version: ${glibcValue}`);
43
+ }
44
+ if (compareVersions(glibc, { major: 2, minor: 34 }) < 0) {
45
+ throw new Error(`Herdr World requires glibc 2.34 or newer; found ${glibcValue}`);
46
+ }
47
+ return target;
48
+ }
49
+
50
+ export function packageHelp() {
51
+ return `Usage: herdr-world [OPTIONS]
52
+
53
+ Starts the Herdr World browser bridge for the selected Herdr session.
54
+
55
+ Options are forwarded to the bridge:
56
+ --host HOST Bind address (loopback by default)
57
+ --port PORT HTTP port (8787 by default)
58
+ --session NAME Select a named Herdr session
59
+ --no-herdr-setup Disable interactive Herdr setup
60
+ -h, --help Show this help without starting Herdr or a bridge
61
+
62
+ The bridge requires Herdr 0.8.2 or newer with terminal protocol 20.
63
+ `;
64
+ }
65
+
66
+ export function isHelpRequest(args) {
67
+ return args.includes("-h") || args.includes("--help");
68
+ }
69
+
70
+ export function runPackageLauncher(args = process.argv.slice(2), {
71
+ platform = process.platform,
72
+ arch = process.arch,
73
+ report = process.report,
74
+ packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."),
75
+ } = {}) {
76
+ if (isHelpRequest(args)) {
77
+ process.stdout.write(packageHelp());
78
+ return null;
79
+ }
80
+
81
+ const target = selectBridge({ platform, arch, report });
82
+ const bridge = join(packageRoot, "lib", "bridges", target, "herdr-world-bridge");
83
+ const launcher = join(packageRoot, "lib", "herdr-world-launcher.sh");
84
+ const staticDir = join(packageRoot, "share", "herdr-world", "web");
85
+ const child = spawn("/bin/bash", [launcher, ...args], {
86
+ env: {
87
+ ...process.env,
88
+ HERDR_WORLD_BRIDGE_BIN: bridge,
89
+ HERDR_WORLD_STATIC_DIR: staticDir,
90
+ },
91
+ stdio: "inherit",
92
+ });
93
+
94
+ const signalHandlers = new Map();
95
+ for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) {
96
+ const handler = () => child.kill(signal);
97
+ signalHandlers.set(signal, handler);
98
+ process.on(signal, handler);
99
+ }
100
+ child.once("error", (error) => {
101
+ console.error(`could not start Herdr World: ${error.message}`);
102
+ process.exitCode = 1;
103
+ });
104
+ child.once("exit", (code, signal) => {
105
+ if (signal) {
106
+ for (const [forwardedSignal, handler] of signalHandlers) {
107
+ process.removeListener(forwardedSignal, handler);
108
+ }
109
+ process.kill(process.pid, signal);
110
+ } else {
111
+ process.exitCode = code ?? 1;
112
+ }
113
+ });
114
+ return child;
115
+ }
116
+
117
+ if (
118
+ process.argv[1] &&
119
+ realpathSync(resolve(process.argv[1])) === realpathSync(fileURLToPath(import.meta.url))
120
+ ) {
121
+ try {
122
+ const result = runPackageLauncher();
123
+ if (!result) process.exit(0);
124
+ } catch (error) {
125
+ console.error(error.message);
126
+ process.exit(1);
127
+ }
128
+ }
@@ -0,0 +1,51 @@
1
+ # Pixel Office asset provenance
2
+
3
+ The Herdr World Pixel Office port uses character assets traceable to the
4
+ Claw-Empire repository at revision
5
+ `66a24ea7df2435ef897c48c147deb7ec572c01c2`, under `public/sprites/`. The
6
+ tracked PNGs are byte-identical to those source files. That source carries the
7
+ Apache License 2.0 and the copyright notice `Copyright 2026 GreenSheep01201
8
+ (seowongil@gmail.com)`. Herdr World has no build or runtime dependency on the
9
+ reference workspace. The copied character sprites now live under
10
+ `web/public/world/characters/`.
11
+
12
+ The reference workspace is historical provenance only; contributors do not
13
+ need to clone or start another repository to build, test, or run Herdr World.
14
+ The release notice bundle MUST include the Apache-2.0 license and this
15
+ attribution. The adapted TypeScript geometry/drawing files are modified files
16
+ and MUST carry a prominent modification notice as required by Apache-2.0
17
+ Section 4(b); the provenance manifest will identify the exact source hashes,
18
+ copied-file hashes, and notices.
19
+
20
+ The historical reference Office directory was untracked in the source
21
+ checkout at port time, so that local directory has no source commit to cite.
22
+ The immutable Extension 001 approval commit authorizing this port is
23
+ `7be916e3c4713582c72665cd787ef0300658ea26`. The Claw-Empire revision and
24
+ these SHA-256 values identify the exact copied assets:
25
+
26
+ | Asset | SHA-256 |
27
+ | --- | --- |
28
+ | `1-D-1.png` | `97e11be5369a5865f9e0a7b1657af23fd5d7f4b244fb94010ebb7e9e66a3e004` |
29
+ | `2-D-1.png` | `f3053d7f6bc2959ad375b1cfd23eb9fb1e34e7329ba837fd7518268459d0a83d` |
30
+ | `3-D-1.png` | `eb8cb07677ec3ff81a43e019990b288ca3b858309fe51b2d5b52ccf3f8b855f5` |
31
+ | `4-D-1.png` | `23dab1383ef8f98af148885e5f01c25063ce0e7b6d0ae6a255c5bdb83dae01f2` |
32
+ | `5-D-1.png` | `32d8159b707fc64447fc6ab27a6a00ba2ddf318627fada114d43d5aef9c93fa9` |
33
+ | `6-D-1.png` | `7ae5935cf9f454f0ea8ee099111fde50da5055a50a7b05c53a98e5eb914b3739` |
34
+ | `7-D-1.png` | `4fb4bcf9046c66f7e4630edf636deb6d076a062e195c9dfb44caf713e9e46dcf` |
35
+ | `8-D-1.png` | `63d8d576aff2f9973d38d24c0d0ca87498af8880c1326aceaa0c644c5df03d66` |
36
+ | `9-D-1.png` | `1fc674238ce13ae382c07189d4422780e47bdd1417bf468bb492786cf211f4bf` |
37
+ | `10-D-1.png` | `c4d22e7ccec30505873469a2e1cef76cf8435be84d71d3f201d84147de8f5738` |
38
+ | `11-D-1.png` | `6e2c79f2fdb5afe8fd8c1537ba550a8ada9d301e4b493e4a528dbb37d3d4a549` |
39
+ | `12-D-1.png` | `334595aa69f05095faa88227413dcddd6d1a2f177fbaeb625bd78f8dc7bcef34` |
40
+
41
+ The geometry and drawing behavior are TypeScript adaptations of `office-geometry.js`,
42
+ `office-drawing.js`, and the rendering portions of `office-scene.js`; their source hashes at port
43
+ time were respectively:
44
+
45
+ - `6ab54a94369e8695c3bac2cf94ac76bab62613563382e4a712944ff0ff70e028`
46
+ - `56edfdd364ace64663e4a98c931d15d2ef5bfcb725acee8d8791e88f974fd210`
47
+ - `f4975a6e840506a003f39153dfa6e32830d311624402980a1884ecb5351a1e3f`
48
+
49
+ PixiJS `8.3.4` is pinned as an npm dependency. Its MIT license is retained at
50
+ `web/public/world/LICENSE-PixiJS.txt`. The Claw-Empire Apache-2.0 license is a
51
+ release requirement and is not inferred from PixiJS or any neighboring asset.