prts-terrarchive 0.2.0
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/GAME_ASSETS.md +26 -0
- package/LICENSE +21 -0
- package/README.en.md +274 -0
- package/README.md +423 -0
- package/THIRD_PARTY_NOTICES.md +61 -0
- package/bin/bake-rhine-details.mjs +34 -0
- package/bin/install.js +273 -0
- package/bin/pack-map-assets.mjs +110 -0
- package/bin/preview-rhine.mjs +71 -0
- package/bin/rhine-detail-baker.ts +84 -0
- package/contracts/cloud_tools_v1.schema.json +243 -0
- package/contracts/corpus_i18n_v1.schema.json +179 -0
- package/contracts/corpus_tools_v1.schema.json +1801 -0
- package/cordis.patch.yml +32 -0
- package/docs/endfield-official-i18n.md +103 -0
- package/lib/client.js +3912 -0
- package/lib/endfield-map/map.js.br +0 -0
- package/lib/endfield-map/map.js.gz +0 -0
- package/lib/endfield-map/resources/map-00b0d0744a1b4404.json.br +0 -0
- package/lib/endfield-map/resources/map-00b0d0744a1b4404.json.gz +0 -0
- package/lib/endfield-map/resources/map-01616f534aaaeca1.png +0 -0
- package/lib/endfield-map/resources/map-1562e0dff4be3d23.png +0 -0
- package/lib/endfield-map/resources/map-160fe040f080f6a3.png +0 -0
- package/lib/endfield-map/resources/map-17b9d8be25dc2b39.json.br +0 -0
- package/lib/endfield-map/resources/map-17b9d8be25dc2b39.json.gz +0 -0
- package/lib/endfield-map/resources/map-1c4245c4e8b80c43.json.br +0 -0
- package/lib/endfield-map/resources/map-1c4245c4e8b80c43.json.gz +0 -0
- package/lib/endfield-map/resources/map-1d30baaaef3e29cc.png +0 -0
- package/lib/endfield-map/resources/map-21a61386af79cd12.json.br +0 -0
- package/lib/endfield-map/resources/map-21a61386af79cd12.json.gz +0 -0
- package/lib/endfield-map/resources/map-24b920b8dab49b44.json.br +0 -0
- package/lib/endfield-map/resources/map-24b920b8dab49b44.json.gz +0 -0
- package/lib/endfield-map/resources/map-26caf8d71247abb7.png +0 -0
- package/lib/endfield-map/resources/map-2729942c89545e73.json.br +0 -0
- package/lib/endfield-map/resources/map-2729942c89545e73.json.gz +0 -0
- package/lib/endfield-map/resources/map-29063a9802f67014.json.br +0 -0
- package/lib/endfield-map/resources/map-29063a9802f67014.json.gz +0 -0
- package/lib/endfield-map/resources/map-2f35d09a3ab60a63.json.br +0 -0
- package/lib/endfield-map/resources/map-2f35d09a3ab60a63.json.gz +0 -0
- package/lib/endfield-map/resources/map-2f98a873da81425e.json.br +0 -0
- package/lib/endfield-map/resources/map-2f98a873da81425e.json.gz +0 -0
- package/lib/endfield-map/resources/map-3ab978ae44190f80.json.br +0 -0
- package/lib/endfield-map/resources/map-3ab978ae44190f80.json.gz +0 -0
- package/lib/endfield-map/resources/map-3b62c80d14208902.json.br +0 -0
- package/lib/endfield-map/resources/map-3b62c80d14208902.json.gz +0 -0
- package/lib/endfield-map/resources/map-3d486e887ae121ac.png +0 -0
- package/lib/endfield-map/resources/map-418dc4865608fce5.png +0 -0
- package/lib/endfield-map/resources/map-4366b84607335f76.json.br +0 -0
- package/lib/endfield-map/resources/map-4366b84607335f76.json.gz +0 -0
- package/lib/endfield-map/resources/map-4371259d3ab7aac7.png +0 -0
- package/lib/endfield-map/resources/map-48dcc0fd55e13f7f.png +0 -0
- package/lib/endfield-map/resources/map-4aabda0e41197570.json.br +0 -0
- package/lib/endfield-map/resources/map-4aabda0e41197570.json.gz +0 -0
- package/lib/endfield-map/resources/map-505f5687b287043c.json.br +0 -0
- package/lib/endfield-map/resources/map-505f5687b287043c.json.gz +0 -0
- package/lib/endfield-map/resources/map-5177e9d1d46f47e2.png +0 -0
- package/lib/endfield-map/resources/map-51baeb59b7f8c28d.png +0 -0
- package/lib/endfield-map/resources/map-549561b46e621874.png +0 -0
- package/lib/endfield-map/resources/map-56c6a0bef799c8dc.json.br +0 -0
- package/lib/endfield-map/resources/map-56c6a0bef799c8dc.json.gz +0 -0
- package/lib/endfield-map/resources/map-5a6963909423b674.png +0 -0
- package/lib/endfield-map/resources/map-5a9c533c0552d7b7.png +0 -0
- package/lib/endfield-map/resources/map-5d20ae9ffa9a02b0.png +0 -0
- package/lib/endfield-map/resources/map-626c8847393f60bf.png +0 -0
- package/lib/endfield-map/resources/map-63d43cbec3bed3b8.png +0 -0
- package/lib/endfield-map/resources/map-661b6ec56e722574.png +0 -0
- package/lib/endfield-map/resources/map-6ddd384eca190828.png +0 -0
- package/lib/endfield-map/resources/map-6fc1aa9144f8156c.json.br +0 -0
- package/lib/endfield-map/resources/map-6fc1aa9144f8156c.json.gz +0 -0
- package/lib/endfield-map/resources/map-738ebaa002c33cfc.png +0 -0
- package/lib/endfield-map/resources/map-758c13be6085ec07.json.br +0 -0
- package/lib/endfield-map/resources/map-758c13be6085ec07.json.gz +0 -0
- package/lib/endfield-map/resources/map-78929f26d6844509.png +0 -0
- package/lib/endfield-map/resources/map-7f09c142950a0f74.png +0 -0
- package/lib/endfield-map/resources/map-8385e11f39e1a51c.json.br +0 -0
- package/lib/endfield-map/resources/map-8385e11f39e1a51c.json.gz +0 -0
- package/lib/endfield-map/resources/map-881343926a568f27.json.br +0 -0
- package/lib/endfield-map/resources/map-881343926a568f27.json.gz +0 -0
- package/lib/endfield-map/resources/map-8d1ade3f01d952b0.png +0 -0
- package/lib/endfield-map/resources/map-8fef3495bb7ed60f.png +0 -0
- package/lib/endfield-map/resources/map-907a7ecf8a0ce352.png +0 -0
- package/lib/endfield-map/resources/map-9113d5951c4db903.json.br +0 -0
- package/lib/endfield-map/resources/map-9113d5951c4db903.json.gz +0 -0
- package/lib/endfield-map/resources/map-94ad6634436224e3.json.br +0 -0
- package/lib/endfield-map/resources/map-94ad6634436224e3.json.gz +0 -0
- package/lib/endfield-map/resources/map-99722e61da5f3e53.png +0 -0
- package/lib/endfield-map/resources/map-9be9596cc059abe3.png +0 -0
- package/lib/endfield-map/resources/map-a4db9a4763e47fbf.png +0 -0
- package/lib/endfield-map/resources/map-a4e8ef07159997e7.json.br +0 -0
- package/lib/endfield-map/resources/map-a4e8ef07159997e7.json.gz +0 -0
- package/lib/endfield-map/resources/map-ab35d06875ee418f.png +0 -0
- package/lib/endfield-map/resources/map-ac51bb3e7623cd8b.png +0 -0
- package/lib/endfield-map/resources/map-ac830a66296bc83a.png +0 -0
- package/lib/endfield-map/resources/map-b3fd04209718e55e.json.br +0 -0
- package/lib/endfield-map/resources/map-b3fd04209718e55e.json.gz +0 -0
- package/lib/endfield-map/resources/map-b8164f1af7c5d895.png +0 -0
- package/lib/endfield-map/resources/map-b8cde93b965384d8.json.br +0 -0
- package/lib/endfield-map/resources/map-b8cde93b965384d8.json.gz +0 -0
- package/lib/endfield-map/resources/map-b8e48511502e0e8d.json.br +0 -0
- package/lib/endfield-map/resources/map-b8e48511502e0e8d.json.gz +0 -0
- package/lib/endfield-map/resources/map-bfc58277d5ba649d.png +0 -0
- package/lib/endfield-map/resources/map-c013f82048c6891a.png +0 -0
- package/lib/endfield-map/resources/map-c49c947841ae4ab5.json.br +0 -0
- package/lib/endfield-map/resources/map-c49c947841ae4ab5.json.gz +0 -0
- package/lib/endfield-map/resources/map-c4d1b1c6d6706c81.json.br +0 -0
- package/lib/endfield-map/resources/map-c4d1b1c6d6706c81.json.gz +0 -0
- package/lib/endfield-map/resources/map-c607f8b4c8ad8967.png +0 -0
- package/lib/endfield-map/resources/map-c6f20276b8781326.json.br +0 -0
- package/lib/endfield-map/resources/map-c6f20276b8781326.json.gz +0 -0
- package/lib/endfield-map/resources/map-d51adf5952af1e8e.png +0 -0
- package/lib/endfield-map/resources/map-d695eface22f8b74.json.br +0 -0
- package/lib/endfield-map/resources/map-d695eface22f8b74.json.gz +0 -0
- package/lib/endfield-map/resources/map-db11d394456a7465.png +0 -0
- package/lib/endfield-map/resources/map-dcc4d218581e3dc6.png +0 -0
- package/lib/endfield-map/resources/map-ddd43dbb8ab8a4e3.json.br +0 -0
- package/lib/endfield-map/resources/map-ddd43dbb8ab8a4e3.json.gz +0 -0
- package/lib/endfield-map/resources/map-defe5db7dabf748a.png +0 -0
- package/lib/endfield-map/resources/map-e1aeb833e22520aa.json.br +0 -0
- package/lib/endfield-map/resources/map-e1aeb833e22520aa.json.gz +0 -0
- package/lib/endfield-map/resources/map-e25ee9af6e493500.png +0 -0
- package/lib/endfield-map/resources/map-e3824082cd6f747d.json.br +0 -0
- package/lib/endfield-map/resources/map-e3824082cd6f747d.json.gz +0 -0
- package/lib/endfield-map/resources/map-e694a91e630b1bd6.png +0 -0
- package/lib/endfield-map/resources/map-eaa93af79d12a87d.png +0 -0
- package/lib/endfield-map/resources/map-ec9575ee65d7766f.json.br +0 -0
- package/lib/endfield-map/resources/map-ec9575ee65d7766f.json.gz +0 -0
- package/lib/endfield-map/resources/map-ede421a329dc78a4.png +0 -0
- package/lib/endfield-map/resources/map-eff3bce8f6888fc5.json.br +0 -0
- package/lib/endfield-map/resources/map-eff3bce8f6888fc5.json.gz +0 -0
- package/lib/endfield-map/resources/map-fb5f4a59a181452c.png +0 -0
- package/lib/endfield-map/resources/map-fdeaa17eeba90d8e.json.br +0 -0
- package/lib/endfield-map/resources/map-fdeaa17eeba90d8e.json.gz +0 -0
- package/lib/rhine/assets/archive-assembly.glb +0 -0
- package/lib/rhine/assets/archive-cassette.glb +0 -0
- package/lib/rhine/fonts/MiSans-Bold.woff2 +0 -0
- package/lib/rhine/fonts/MiSans-Demibold.woff2 +0 -0
- package/lib/rhine/fonts/MiSans-Light.woff2 +0 -0
- package/lib/rhine/fonts/MiSans-Regular.woff2 +0 -0
- package/lib/rhine/fonts/MiSans-license.pdf +0 -0
- package/lib/rhine/fonts/NOTICE.txt +6 -0
- package/lib/rhine/licenses/RhineLabUI-MIT.txt +21 -0
- package/lib/rhine/licenses/entities-BSD-2-Clause.txt +11 -0
- package/lib/rhine/licenses/linkify-it-MIT.txt +22 -0
- package/lib/rhine/licenses/markdown-it-MIT.txt +22 -0
- package/lib/rhine/licenses/mdurl-MIT.txt +45 -0
- package/lib/rhine/licenses/punycode.js-MIT.txt +20 -0
- package/lib/rhine/licenses/rolling-number-MIT.txt +21 -0
- package/lib/rhine/licenses/three-MIT.txt +21 -0
- package/lib/rhine/licenses/uc.micro-MIT.txt +20 -0
- package/lib/rhine/rhine.css +1 -0
- package/lib/rhine/rhine.js +5106 -0
- package/lib/skins/common.css +31 -0
- package/lib/skins/endfield-aic.css +141 -0
- package/lib/skins/prts-agent.css +136 -0
- package/lib/skins/rhine-lab.css +70 -0
- package/package.json +112 -0
- package/presets/definition.js +26 -0
- package/presets/prts/agent.cordis.yml +25 -0
- package/presets/prts/preset.yml +3 -0
- package/presets/register.js +86 -0
- package/resources/entity-routing.json +21 -0
- package/skills/prts-investigation/SKILL.md +121 -0
- package/skills/prts-retrieval/SKILL.md +35 -0
- package/skills/prts-retrieval/references/cloud-tools.md +13 -0
- package/skills/prts-retrieval/references/diagnostics.md +15 -0
- package/skills/prts-retrieval/references/local-tools.md +24 -0
- package/skills/prts-retrieval/references/module-arknights.md +23 -0
- package/skills/prts-retrieval/references/module-dual.md +15 -0
- package/skills/prts-retrieval/references/module-endfield.md +21 -0
- package/skills/prts-retrieval/references/retrieval-process.md +44 -0
- package/skills/prts-retrieval/references/retrieval-recipes-dual.md +34 -0
- package/skills/prts-retrieval/references/retrieval-recipes-endfield.md +37 -0
- package/skills/prts-retrieval/references/retrieval-recipes.md +39 -0
- package/skills/prts-retrieval/references/tools-runtime.md +48 -0
- package/skills/prts-retrieval/references/wiki-schema.md +38 -0
- package/src/archive-presentation.js +287 -0
- package/src/cloud-projection.js +124 -0
- package/src/cloud.js +498 -0
- package/src/entity-recognizer.js +311 -0
- package/src/entity-routing.js +82 -0
- package/src/evidence-state.js +332 -0
- package/src/i18n.js +365 -0
- package/src/index.js +1261 -0
- package/src/installer.js +1362 -0
- package/src/investigation-review.js +87 -0
- package/src/investigation-store.js +579 -0
- package/src/investigation-tools.js +113 -0
- package/src/localization-format.js +23 -0
- package/src/manual-search.js +103 -0
- package/src/read.js +1097 -0
- package/src/release-compatibility.js +73 -0
- package/src/release-watch.js +40 -0
- package/src/search-projection.js +139 -0
- package/src/search.js +1522 -0
- package/src/skill.js +98 -0
- package/src/source-map.js +348 -0
- package/src/state.js +314 -0
- package/src/store.js +1569 -0
- package/src/timeline.js +386 -0
- package/src/ui.js +1353 -0
- package/src/wiki.js +111 -0
- package/tsconfig.rhine.json +15 -0
- package/ui/rhine/archive-navigation-limit.ts +31 -0
- package/ui/rhine/archive-rack.ts +83 -0
- package/ui/rhine/assets/evidence-observatory.webp +0 -0
- package/ui/rhine/board-plane-transform.ts +24 -0
- package/ui/rhine/catalogue.ts +72 -0
- package/ui/rhine/deferred-preparation.ts +146 -0
- package/ui/rhine/evidence-board-controls.css +22 -0
- package/ui/rhine/evidence-board-history.ts +73 -0
- package/ui/rhine/evidence-board-model.ts +189 -0
- package/ui/rhine/evidence-board-panel.ts +762 -0
- package/ui/rhine/evidence-board-scene.ts +548 -0
- package/ui/rhine/evidence-board.css +191 -0
- package/ui/rhine/evidence-card-art.ts +470 -0
- package/ui/rhine/evidence-card-style.ts +17 -0
- package/ui/rhine/evidence-inbox-scene.ts +43 -0
- package/ui/rhine/evidence-inbox.css +29 -0
- package/ui/rhine/evidence-inbox.ts +104 -0
- package/ui/rhine/index.ts +12 -0
- package/ui/rhine/interaction.css +20 -0
- package/ui/rhine/investigation-board-plane.ts +5 -0
- package/ui/rhine/investigation-board.css +34 -0
- package/ui/rhine/investigation-board.ts +348 -0
- package/ui/rhine/investigation-edits.ts +46 -0
- package/ui/rhine/investigation-layout.ts +29 -0
- package/ui/rhine/label-prefetch.ts +34 -0
- package/ui/rhine/looping-title.ts +40 -0
- package/ui/rhine/manual-search.css +41 -0
- package/ui/rhine/manual-search.ts +89 -0
- package/ui/rhine/original/appearance.ts +180 -0
- package/ui/rhine/original/archive-label.ts +84 -0
- package/ui/rhine/original/archive-lighting.ts +39 -0
- package/ui/rhine/original/archive-loop.ts +82 -0
- package/ui/rhine/original/archive-refill.ts +64 -0
- package/ui/rhine/original/array-detail-data.ts +2 -0
- package/ui/rhine/original/array-detail.ts +41 -0
- package/ui/rhine/original/array-interior.ts +411 -0
- package/ui/rhine/original/array-occlusion.ts +166 -0
- package/ui/rhine/original/array-shell.ts +38 -0
- package/ui/rhine/original/array-visibility.ts +309 -0
- package/ui/rhine/original/asset-url.ts +4 -0
- package/ui/rhine/original/brand.ts +12 -0
- package/ui/rhine/original/cassette-lod.ts +81 -0
- package/ui/rhine/original/data.ts +21 -0
- package/ui/rhine/original/decryption.ts +185 -0
- package/ui/rhine/original/detail-signature.ts +18 -0
- package/ui/rhine/original/glass-reveal.ts +45 -0
- package/ui/rhine/original/internal-optics.ts +70 -0
- package/ui/rhine/original/label-renderer.ts +119 -0
- package/ui/rhine/original/label-textures.ts +117 -0
- package/ui/rhine/original/model-viewer.ts +658 -0
- package/ui/rhine/original/motion.ts +116 -0
- package/ui/rhine/original/opaque-backfaces.ts +64 -0
- package/ui/rhine/original/program-preparation.ts +111 -0
- package/ui/rhine/original/quality-renderer.ts +97 -0
- package/ui/rhine/original/quality-settings.ts +111 -0
- package/ui/rhine/original/render-quality.ts +163 -0
- package/ui/rhine/original/scene.ts +2051 -0
- package/ui/rhine/original/shelf-interior.ts +142 -0
- package/ui/rhine/original/ui-transitions.ts +111 -0
- package/ui/rhine/original/viewer-camera.ts +92 -0
- package/ui/rhine/original/viewport-layout.ts +41 -0
- package/ui/rhine/original-ui.css +2334 -0
- package/ui/rhine/readability.css +46 -0
- package/ui/rhine/reading-object.ts +96 -0
- package/ui/rhine/reading-origin.ts +28 -0
- package/ui/rhine/reading-room.css +55 -0
- package/ui/rhine/report-markdown.ts +98 -0
- package/ui/rhine/scene-edge-navigation.ts +84 -0
- package/ui/rhine/scene.ts +1726 -0
- package/ui/rhine/shelf-layout.ts +38 -0
- package/ui/rhine/snapshot-update-gate.ts +22 -0
- package/ui/rhine/source-reading.ts +15 -0
- package/ui/rhine/source-selection.css +164 -0
- package/ui/rhine/temporary-performance-observers.ts +163 -0
- package/ui/rhine/temporary-performance-panel.ts +124 -0
- package/ui/rhine/temporary-performance.css +19 -0
- package/ui/rhine/temporary-performance.ts +552 -0
- package/ui/rhine/temporary-render-diagnostics.ts +105 -0
- package/ui/rhine/tool-activity.ts +69 -0
- package/ui/rhine/types.ts +219 -0
- package/ui/rhine/visible-scene-hit.ts +13 -0
- package/ui/rhine/workbench.css +818 -0
- package/ui/rhine/workbench.ts +2245 -0
- package/ui/rhine/workspace-travel.ts +32 -0
- package/vite.rhine.config.ts +19 -0
package/GAME_ASSETS.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Game Asset Inventory
|
|
2
|
+
|
|
3
|
+
This file identifies game-derived resources packaged for the Arknights: Endfield map and skin experience. These resources are not covered by the MIT License in [`LICENSE`](LICENSE).
|
|
4
|
+
|
|
5
|
+
## Excluded paths
|
|
6
|
+
|
|
7
|
+
- `lib/endfield-map/resources/*.png`
|
|
8
|
+
- `lib/endfield-map/resources/*.json.br`
|
|
9
|
+
- `lib/endfield-map/resources/*.json.gz`
|
|
10
|
+
- `lib/rhine/assets/archive-cassette.glb` — from LBEILC/RhineLabUI;
|
|
11
|
+
the upstream model is not covered by its code's MIT license. See
|
|
12
|
+
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md#rhine-lab-archive-browser).
|
|
13
|
+
- `lib/rhine/assets/archive-assembly.glb` — the same upstream's assembly model,
|
|
14
|
+
under the same exclusions.
|
|
15
|
+
|
|
16
|
+
The Brotli (`.br`) and gzip (`.gz`) files are alternate compressed representations of map data and may include serialized geometry, materials, textures, or related presentation data used by the skin.
|
|
17
|
+
|
|
18
|
+
The following project-authored implementation files are not part of this exclusion and remain covered by the MIT License:
|
|
19
|
+
|
|
20
|
+
- `lib/endfield-map/map.js.br`
|
|
21
|
+
- `lib/endfield-map/map.js.gz`
|
|
22
|
+
- the source code that loads, renders, and integrates the map and skin
|
|
23
|
+
|
|
24
|
+
Arknights: Endfield and all related names, trademarks, artwork, models, textures, game data, and other game materials belong to their respective rights holders. Their presence in this package does not grant permission to extract, reuse, modify, sublicense, or redistribute them independently.
|
|
25
|
+
|
|
26
|
+
This is an unofficial community project and is not affiliated with or endorsed by the game's developers or publishers.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 PRTS.chat contributors
|
|
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.
|
package/README.en.md
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
# prts-terrarchive (English)
|
|
2
|
+
|
|
3
|
+
The optional **Rhine Lab Archive** skin combines a continuous 3D retrieval array,
|
|
4
|
+
persistent investigation boards, a per-board evidence inbox, and a two-level archive rack
|
|
5
|
+
with 24 sources per page. The Agent adds clues and relationships and publishes versioned
|
|
6
|
+
reports; it decides whether a follow-up continues an investigation or starts a new one.
|
|
7
|
+
Candidates stay in the array, while actually read or manually saved sources enter the rack.
|
|
8
|
+
Users can stage important material in a chosen board's inbox, edit matching paper cards,
|
|
9
|
+
and connect clues with red strings.
|
|
10
|
+
|
|
11
|
+
`investigation_get` recalls clue text, versioned reports, the archive rack, evidence inboxes,
|
|
12
|
+
and saved source bodies. Manual bookmarks now persist in session storage; existing browser
|
|
13
|
+
bookmarks are imported automatically. User additions and edits appear in the Agent's next
|
|
14
|
+
model context, or its next conversation when idle, without starting a new turn. Reminders
|
|
15
|
+
remain pending until the corresponding content is successfully returned to the Agent;
|
|
16
|
+
browser reads and unrelated pages do not acknowledge them.
|
|
17
|
+
|
|
18
|
+
Enable it in Settings → Plugins → PRTS Corpus → Skin, then open the archive from
|
|
19
|
+
a session header. Local and cloud search, Markdown reading, excerpts and tool activity
|
|
20
|
+
share the workspace. Returning from a source restores the previous view and position.
|
|
21
|
+
Manual browsing pauses automatic Agent following until explicitly resumed. Visible room
|
|
22
|
+
models also navigate between stations. A text reader remains available without WebGL.
|
|
23
|
+
|
|
24
|
+
For local development, use Node.js 22.19 or newer, then run `npm ci`,
|
|
25
|
+
`npm run build:rhine`, and `npm run preview:rhine`. See the
|
|
26
|
+
[workspace guide](docs/rhine-lab.md) and [interaction rules](docs/rhine-interaction-flow.md).
|
|
27
|
+
|
|
28
|
+
PRTS.chat corpus plugin for DeepSeek Harness (DSH). Provides local corpus
|
|
29
|
+
search, source reading and an activity-timeline tool, plus optional
|
|
30
|
+
PRTS.cloud hybrid retrieval. The plugin first obtains the approved current
|
|
31
|
+
release and per-file digests from the fixed `https://prts.chat` trust origin,
|
|
32
|
+
then downloads the local corpus from ModelScope or a configurable byte-only fallback;
|
|
33
|
+
the optional cloud service discovers candidates that can be mapped back to
|
|
34
|
+
local source text for verification. Anonymous cloud retrieval currently has an
|
|
35
|
+
allowance of 1,000 calls per user per day for DSH clients; this policy may
|
|
36
|
+
change as service capacity evolves.
|
|
37
|
+
|
|
38
|
+
- Registers DSH `ToolDefinition`s through the host plugin interface.
|
|
39
|
+
- Host-resident instance (settings UI + data manager) + per-session "PRTS
|
|
40
|
+
mode" preset that mounts the tools only for sessions that select it.
|
|
41
|
+
- The fixed `https://prts.chat` origin is the trust source for latest-release
|
|
42
|
+
resolution and manifests; ModelScope and the configurable fallback only serve
|
|
43
|
+
bytes for that fixed release and cannot select or attest a version.
|
|
44
|
+
- Three optional skins (PRTS Agent, Endfield AIC terminal, Rhine Lab Archive) on top of the
|
|
45
|
+
native Harness UI.
|
|
46
|
+
|
|
47
|
+
## Data sources
|
|
48
|
+
|
|
49
|
+
- **Self-built Wiki data**: sourced from [littlepangding/arknights_lore_wiki](https://github.com/littlepangding/arknights_lore_wiki).
|
|
50
|
+
- **Terra timeline data**: sourced from [PRTS Wiki's Terra timeline (泰拉年表)](https://prts.wiki/w/%E6%B3%B0%E6%8B%89%E5%B9%B4%E8%A1%A8) for the plugin's timeline search.
|
|
51
|
+
|
|
52
|
+
## Install
|
|
53
|
+
|
|
54
|
+
Web requires Node.js >= 22.19 and DSH >= 0.1.2-alpha.2. The current compatibility
|
|
55
|
+
target is DSH 0.1.7-rc.2. An official Electron Desktop installation supplies
|
|
56
|
+
its own runtime. Corpus disk usage is shown in Settings before download.
|
|
57
|
+
|
|
58
|
+
### Local Web installation
|
|
59
|
+
|
|
60
|
+
Install from a local checkout, or use PRTS Portable with the plugin already included:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install --global @deepseek-ai/dsh@0.1.7-rc.2
|
|
64
|
+
git clone https://github.com/HTian-qwq/prts-terrarchive.git
|
|
65
|
+
cd prts-terrarchive
|
|
66
|
+
node bin/install.js web
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The local installer adds the package to the selected profile. DSH 0.1.7 and
|
|
70
|
+
later register PRTS mode directly; older DSH versions still create or migrate
|
|
71
|
+
the compatibility preset in `$DSH_HOME/.agent-presets/prts`. With no
|
|
72
|
+
second argument it uses its own checkout. Another local directory or archive
|
|
73
|
+
can be supplied explicitly:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
node bin/install.js web /path/to/prts-terrarchive
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Web: install from npm
|
|
80
|
+
|
|
81
|
+
Install the bundle directly from npm; no additional installer command
|
|
82
|
+
or npm lifecycle hook is needed:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
dsh plugin --profile web add prts-terrarchive@0.2.0
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Restart `dsh web`. On DSH 0.1.7 and later the plugin registers PRTS mode
|
|
89
|
+
directly and removes it when disabled or uninstalled. The default mode and
|
|
90
|
+
ordinary running sessions stay intact. The new registry does not read old
|
|
91
|
+
`$DSH_HOME/.agent-presets/prts` files. Migrate any customized old preset
|
|
92
|
+
through the new mode configuration; the old files remain untouched. Older DSH
|
|
93
|
+
releases continue using the file template, preserving user edits. npm does not
|
|
94
|
+
run `postinstall`.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
dsh plugin --profile web remove prts-terrarchive
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Official Electron Desktop
|
|
101
|
+
|
|
102
|
+
For Electron Desktop builds compatible with the DSH 0.1.7 plugin interface, enter
|
|
103
|
+
`prts-terrarchive@0.2.0` in the **desktop application's plugin manager**.
|
|
104
|
+
The manager accepts npm registry package names and versions, not GitHub URLs,
|
|
105
|
+
local directories, or tarballs. Electron exclusively manages the `desktop`
|
|
106
|
+
profile: do not run `node bin/install.js desktop` or
|
|
107
|
+
`dsh plugin --profile desktop`.
|
|
108
|
+
|
|
109
|
+
Web and official Desktop share the default `$DSH_HOME` product data while
|
|
110
|
+
installing their plugins separately. The plugin package includes its UI,
|
|
111
|
+
map models, textures, skills, and presets. It does **not** bundle corpus data,
|
|
112
|
+
Node/DSH runtimes, or user data. Open Settings → Plugins → PRTS 语料 and download
|
|
113
|
+
the corpus explicitly before using local retrieval. Switching skins does not
|
|
114
|
+
start a separate model or texture download.
|
|
115
|
+
|
|
116
|
+
PRTS Portable distributions include the plugin, presets, and the complete corpus,
|
|
117
|
+
so no separate corpus download is needed after extraction. Build the official
|
|
118
|
+
Electron portable target with `build-electron.ps1`; the original WebView2 build
|
|
119
|
+
entry remains available. See the [Portable repository](https://github.com/HTian-qwq/prts-terrarchive-portable).
|
|
120
|
+
|
|
121
|
+
Portable builders that already placed the plugin can continue running
|
|
122
|
+
`node bin/install.js web --preset-only` to create or migrate the compatibility
|
|
123
|
+
preset without invoking the DSH CLI.
|
|
124
|
+
|
|
125
|
+
### Windows
|
|
126
|
+
|
|
127
|
+
Local Web installation requires `dsh.cmd`. The installer invokes it through
|
|
128
|
+
cmd.exe, so plugin paths containing a line break or `%` `!` `&` `|` `<` `>` `^`
|
|
129
|
+
`"` are rejected. Use a directory without these characters. The `DSH`
|
|
130
|
+
environment variable can locate an absolute `dsh.cmd` path. Official DSH stores
|
|
131
|
+
the corpus under `%USERPROFILE%\.dsh\prts-corpus\releases` by default;
|
|
132
|
+
Portable stores sessions and settings in its own `userdata` directory, and the
|
|
133
|
+
bundled corpus and subsequent corpus updates in `corpus/releases`.
|
|
134
|
+
|
|
135
|
+
### Retrieval settings
|
|
136
|
+
|
|
137
|
+
Select PRTS mode in new sessions to load the corpus tools, DSH's native
|
|
138
|
+
`web_search` and `web_fetch`, and the retrieval Skill. The preset enables both
|
|
139
|
+
`arknights` and `endfield`; Settings stores the effective modules as
|
|
140
|
+
`enabledGames` in `$DSH_HOME/prts-corpus.json`. Start a new session after changing
|
|
141
|
+
them. The preset enables anonymous cloud retrieval by default. A raw plugin
|
|
142
|
+
instance without the cloud configuration keeps it disabled.
|
|
143
|
+
|
|
144
|
+
Static tokens are bound to the saved service origin. Changing the URL cannot
|
|
145
|
+
forward a token to another origin. Re-enter legacy tokens that lack an origin
|
|
146
|
+
binding in Settings; they remain unsent until saved again.
|
|
147
|
+
|
|
148
|
+
After the retrieval Skill loads, matched entities and relationships enter DSH's
|
|
149
|
+
dynamic context for the current question. Each new snapshot supersedes the
|
|
150
|
+
previous one. Tool titles identify local/cloud retrieval and the game scope.
|
|
151
|
+
|
|
152
|
+
## Skins and assets
|
|
153
|
+
|
|
154
|
+
- **Harness default** keeps the native DSH interface.
|
|
155
|
+
- **PRTS Agent** provides the PRTS.chat terminal-style interface.
|
|
156
|
+
- **Endfield AIC** provides an optional Arknights: Endfield-inspired terminal
|
|
157
|
+
and 3D map. Its runtime code, models, and textures are pre-compressed and
|
|
158
|
+
installed with the plugin; switching skins does not start another download.
|
|
159
|
+
|
|
160
|
+
The two optional skins have separate stylesheets. The client keeps only the
|
|
161
|
+
active skin stylesheet mounted, plus a small shared stylesheet for plugin
|
|
162
|
+
controls, so neither optional skin depends on the other's CSS.
|
|
163
|
+
|
|
164
|
+
The Endfield AIC plugin code, UI integration, and map-rendering implementation
|
|
165
|
+
are licensed under the MIT License. Game-derived models and textures used by
|
|
166
|
+
that skin are not covered by the MIT License and are packaged only as parts of
|
|
167
|
+
the optional skin. See [GAME_ASSETS.md](GAME_ASSETS.md) for the exact paths.
|
|
168
|
+
These assets are independent of corpus version management: corpus datasets are
|
|
169
|
+
downloaded from a verified ModelScope mirror or PRTS.chat on request, while skin assets require no separate
|
|
170
|
+
download.
|
|
171
|
+
|
|
172
|
+
## Tools
|
|
173
|
+
|
|
174
|
+
- `corpus_search` — grep-style search over the local corpus: literal or a
|
|
175
|
+
linear regex subset (anchors, dot, character classes, escapes and fixed
|
|
176
|
+
`{n}` repetitions; no grouping, alternation or variable quantifiers) on NFKC-normalized text, with resource-type /
|
|
177
|
+
character / story / activity / entity / speaker / Wiki-field filters;
|
|
178
|
+
keep the original conditions and pass `page.next_after` back unchanged as
|
|
179
|
+
`after` to continue, because the readable anchor includes the full
|
|
180
|
+
`data_version` and becomes invalid after a corpus release switch
|
|
181
|
+
- `corpus_read` — read Arknights stages by `stage_code` (adding `story_part`
|
|
182
|
+
only when needed), operator records by character/name/segment, and character
|
|
183
|
+
materials by category; it can stream a whole Arknights activity or Endfield
|
|
184
|
+
mission collection with readable, version-bound continuation positions;
|
|
185
|
+
it can also read a tagged Wiki field or page through a whole document; story
|
|
186
|
+
documents return requested text only (self-built summaries and the
|
|
187
|
+
activity timeline must be fetched explicitly, e.g. via `timeline_search`).
|
|
188
|
+
In a dual-module session, add `game: "arknights"` or `game: "endfield"` only
|
|
189
|
+
when a character locator needs same-name disambiguation.
|
|
190
|
+
Use exactly one primary locator per call. If search returns `document_uid`, it
|
|
191
|
+
replaces `title`; use `{document_uid, line}` or
|
|
192
|
+
`{document_uid, mode:"document"}`, never both locators. `max_lines` and
|
|
193
|
+
`max_chars` only cap output and do not select a read mode
|
|
194
|
+
- `timeline_search` — query the Terra calendar timeline; source markers can
|
|
195
|
+
be resolved back to full provenance
|
|
196
|
+
- `cloud_search` / `cloud_inspect` — optional PRTS.cloud hybrid retrieval
|
|
197
|
+
(enabled via settings; results are mapped back to local documents)
|
|
198
|
+
- `web_search` — native DSH web discovery for external history, etymology,
|
|
199
|
+
folklore, and other non-PRTS sources
|
|
200
|
+
- `web_fetch` — read a known public URL for close reading and cross-checking
|
|
201
|
+
|
|
202
|
+
Repeated and partially reused reads retain the normal page limits and
|
|
203
|
+
continuation. Partial reads include `coverage` identifying previously visible
|
|
204
|
+
lines and newly returned lines; `page.has_more` still determines whether the
|
|
205
|
+
document has more content. Cloud answers remain available when local corpus
|
|
206
|
+
mapping fails, with a warning to install or repair the corpus before verifying
|
|
207
|
+
the original text.
|
|
208
|
+
|
|
209
|
+
If the corpus changes during a read or search, the request returns a retryable
|
|
210
|
+
`PACKAGE_VERSION_MISMATCH`; resolve the locator against the current version
|
|
211
|
+
before retrying. Old operations cannot populate the new version's document or
|
|
212
|
+
search caches. Reused reads and reads spanning multiple documents enforce the
|
|
213
|
+
same version check.
|
|
214
|
+
|
|
215
|
+
Wiki documents are typed as canonical character pages, story/operator-record
|
|
216
|
+
pages, or character-by-activity auxiliary pages. `corpus_search.wiki_sections`
|
|
217
|
+
combines those types with character/activity filters, while
|
|
218
|
+
`corpus_read({title, section})` reads the exact tagged field. See
|
|
219
|
+
`skills/prts-retrieval/references/wiki-schema.md` and `retrieval-recipes.md`
|
|
220
|
+
for field semantics and query recipes.
|
|
221
|
+
|
|
222
|
+
## Compatibility
|
|
223
|
+
|
|
224
|
+
DSH 0.1.2-alpha.1 and 0.1.2-alpha.2 have completed historical real-host tests
|
|
225
|
+
with the web profile. Alpha.1 was built from the official tag and passed
|
|
226
|
+
installation, preset resolution, host startup, settings-route, and
|
|
227
|
+
client-bundle checks. The current plugin compatibility target is DSH
|
|
228
|
+
0.1.7-rc.2. The shared Connection Fetch transport supports Web and the official
|
|
229
|
+
Electron source implementation; Web also retains HTTP routes. Declarative
|
|
230
|
+
registration and legacy file seeding pass this project's unit tests. A full
|
|
231
|
+
0.1.7-rc.2 Host launch and Windows Electron end-to-end test remain to be run.
|
|
232
|
+
The default Electron portable builder pins the official 0.1.7-rc.2 tag; the legacy
|
|
233
|
+
Electron entry pins 0.1.5-alpha.1 and the original WebView2 builder pins
|
|
234
|
+
0.1.3-alpha.1. Release builds still require a real Windows Host smoke test.
|
|
235
|
+
|
|
236
|
+
Older custom deployments with `includeUserRoot: false` and no other preset root with
|
|
237
|
+
`trust: user` receive no generated preset or root changes; their operator must
|
|
238
|
+
first enable user preset authoring. The plugin relies on internal host surfaces
|
|
239
|
+
(`ctx.tools`, `agent/pre-step`, Connection Fetch, agent presets, client
|
|
240
|
+
slots/theme); after a DSH major upgrade, re-run the smoke checklist below.
|
|
241
|
+
|
|
242
|
+
## Development
|
|
243
|
+
|
|
244
|
+
`presets/` contains the PRTS composition, declarative definition, and legacy user-preset initializer.
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
npm run check # syntax check
|
|
248
|
+
npm test # node --test suite
|
|
249
|
+
git diff --check
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
`bin/pack-map-assets.mjs` pre-compresses the Endfield map assets
|
|
253
|
+
(brotli q9 + gzip 9, the same scheme as endfield.prts.chat); the bundled
|
|
254
|
+
plugin only carries compressed variants. `npm run pack:map:restore`
|
|
255
|
+
restores plaintext for development.
|
|
256
|
+
|
|
257
|
+
## License
|
|
258
|
+
|
|
259
|
+
This project uses the following licensing boundaries:
|
|
260
|
+
|
|
261
|
+
- **Original code and documentation:** licensed under the [MIT License](LICENSE).
|
|
262
|
+
- **Game-related content:** names, trademarks, images, models, textures, game data, and other materials relating to Arknights or Arknights: Endfield are not covered by the MIT License and belong to their respective rights holders. See [GAME_ASSETS.md](GAME_ASSETS.md) for the exact packaged paths.
|
|
263
|
+
- **Corpus datasets:** full datasets are not distributed in this Git repository
|
|
264
|
+
or bundled plugin code. Downloaded PRTS.chat datasets remain subject to the
|
|
265
|
+
licenses, source declarations, and terms on the
|
|
266
|
+
[Arknights dataset](https://modelscope.cn/datasets/HTiantian/prts-agent-corpus-arknights)
|
|
267
|
+
and [Endfield dataset](https://modelscope.cn/datasets/HTiantian/prts-agent-corpus-endfield)
|
|
268
|
+
pages.
|
|
269
|
+
|
|
270
|
+
This is an unofficial community project and is not affiliated with or endorsed by the games' developers or publishers. See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) for the complete notice.
|
|
271
|
+
|
|
272
|
+
### Official Endfield localization lookup
|
|
273
|
+
|
|
274
|
+
`corpus_i18n({query: "管理员,你来了。", languages: ["EN", "JP", "KR"]})` returns official localized text with source references. Existing search results can be passed as `title` or `document_uid`, optionally with `line`. Raw text IDs remain hidden unless `include_ids: true` is requested. Missing translations are explicit; profile records are aligned as a whole, not by Chinese paragraph number. Requires plugin 0.2.0 and a corpus release containing localization attachments. See [format and build instructions](docs/endfield-official-i18n.md).
|