@crowdedkingdoms/crowdy-dsh 0.2.0-dev.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/LICENSE +21 -0
- package/README.md +175 -0
- package/dist/dsh-web/BUILD.json +118 -0
- package/dist/dsh-web/LICENSE.deepseek-harness +21 -0
- package/dist/dsh-web/THIRD_PARTY_NOTICES.md +226 -0
- package/dist/dsh-web/assets/client-Dbm2RGSD.js +159 -0
- package/dist/dsh-web/assets/fonts/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/dsh-web/assets/fonts/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/dsh-web/assets/index-BKQ_L1z6.js +117 -0
- package/dist/dsh-web/assets/index-DPX2bQLO.css +1 -0
- package/dist/dsh-web/assets/langs/c-BIGW1oBm.js +2 -0
- package/dist/dsh-web/assets/langs/cpp-DIPi6g--.js +2 -0
- package/dist/dsh-web/assets/langs/csharp-DSvCPggb.js +2 -0
- package/dist/dsh-web/assets/langs/css-CLj8gQPS.js +2 -0
- package/dist/dsh-web/assets/langs/go-C27-OAKa.js +2 -0
- package/dist/dsh-web/assets/langs/html-CfGypltT.js +2 -0
- package/dist/dsh-web/assets/langs/ini-BEwlwnbL.js +2 -0
- package/dist/dsh-web/assets/langs/java-CylS5w8V.js +2 -0
- package/dist/dsh-web/assets/langs/kotlin-BdnUsdx6.js +2 -0
- package/dist/dsh-web/assets/langs/less-B1dDrJ26.js +2 -0
- package/dist/dsh-web/assets/langs/lua-BaeVxFsk.js +2 -0
- package/dist/dsh-web/assets/langs/markdown-Cvjx9yec.js +2 -0
- package/dist/dsh-web/assets/langs/mdx-Cmh6b_Ma.js +2 -0
- package/dist/dsh-web/assets/langs/php-DJl5gRdb.js +2 -0
- package/dist/dsh-web/assets/langs/python-B6aJPvgy.js +2 -0
- package/dist/dsh-web/assets/langs/ruby-5eNB0pDK.js +2 -0
- package/dist/dsh-web/assets/langs/rust-B1yitclQ.js +2 -0
- package/dist/dsh-web/assets/langs/scss-D5BDwBP9.js +2 -0
- package/dist/dsh-web/assets/langs/sql-CRqJ_cUM.js +2 -0
- package/dist/dsh-web/assets/langs/swift-D82vCrfD.js +2 -0
- package/dist/dsh-web/assets/langs/toml-vGWfd6FD.js +2 -0
- package/dist/dsh-web/assets/langs/xml-sdJ4AIDG.js +2 -0
- package/dist/dsh-web/assets/langs/yaml-Buea-lGh.js +2 -0
- package/dist/dsh-web/assets/vendor-BNsW4eBh.css +1 -0
- package/dist/dsh-web/assets/vendor-CCJJTK99.js +411 -0
- package/dist/dsh-web/crowdy.html +17 -0
- package/dist/dsh-web/favicon.svg +8 -0
- package/dist/dsh-web/index.html +17 -0
- package/dist/dsh-web/manifest.webmanifest +16 -0
- package/dist/dsh-web/preview/bootstrap-CYECZNXt.js +2 -0
- package/dist/dsh-web/preview/crowdy-boot-D0e56jZN.js +2 -0
- package/dist/dsh-web/preview/vfs-image.tar.gz +0 -0
- package/dist/dsh-web/preview/worker-C8-_ANaz.js +109 -0
- package/package.json +101 -0
- package/presets/crowdy/agent.cordis.yml +140 -0
- package/presets/crowdy/preset.yml +3 -0
- package/profile/crowdy-node.patch.yml +34 -0
- package/profile/crowdy-web.patch.yml +97 -0
- package/upstream.json +7 -0
package/package.json
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@crowdedkingdoms/crowdy-dsh",
|
|
3
|
+
"version": "0.2.0-dev.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/CrowdedKingdoms/crowdy-dsh.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/CrowdedKingdoms/crowdy-dsh#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/CrowdedKingdoms/crowdy-dsh/issues"
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"type": "module",
|
|
18
|
+
"description": "DeepSeek Harness plugins whose filesystem is a Crowdy Studio project (GitHub-bound when possible), plus the packed in-browser harness image Crowdy Studio embeds.",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./lib/types/index.d.ts",
|
|
22
|
+
"default": "./lib/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./fs": {
|
|
25
|
+
"types": "./lib/types/fs/crowdy-file-system.d.ts",
|
|
26
|
+
"default": "./lib/fs/crowdy-file-system.js"
|
|
27
|
+
},
|
|
28
|
+
"./search": {
|
|
29
|
+
"types": "./lib/types/search/search-tools.d.ts",
|
|
30
|
+
"default": "./lib/search/search-tools.js"
|
|
31
|
+
},
|
|
32
|
+
"./sdk-index": {
|
|
33
|
+
"types": "./lib/types/sdk-index/index.d.ts",
|
|
34
|
+
"default": "./lib/sdk-index/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./tools": {
|
|
37
|
+
"types": "./lib/types/tools/index.d.ts",
|
|
38
|
+
"default": "./lib/tools/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./attachments": {
|
|
41
|
+
"types": "./lib/types/attachments/crowdy-attachment-store.d.ts",
|
|
42
|
+
"default": "./lib/attachments/crowdy-attachment-store.js"
|
|
43
|
+
},
|
|
44
|
+
"./persist": {
|
|
45
|
+
"types": "./lib/types/persist/index.d.ts",
|
|
46
|
+
"default": "./lib/persist/index.js"
|
|
47
|
+
},
|
|
48
|
+
"./bridge": {
|
|
49
|
+
"types": "./lib/types/bridge/index.d.ts",
|
|
50
|
+
"default": "./lib/bridge/index.js"
|
|
51
|
+
},
|
|
52
|
+
"./bridge-protocol": {
|
|
53
|
+
"types": "./lib/types/bridge/protocol.d.ts",
|
|
54
|
+
"default": "./lib/bridge/protocol.js"
|
|
55
|
+
},
|
|
56
|
+
"./package.json": "./package.json"
|
|
57
|
+
},
|
|
58
|
+
"main": "./lib/index.js",
|
|
59
|
+
"files": [
|
|
60
|
+
"lib",
|
|
61
|
+
"presets",
|
|
62
|
+
"profile",
|
|
63
|
+
"dist/dsh-web",
|
|
64
|
+
"upstream.json",
|
|
65
|
+
"THIRD_PARTY_NOTICES.md",
|
|
66
|
+
"LICENSE"
|
|
67
|
+
],
|
|
68
|
+
"scripts": {
|
|
69
|
+
"build": "tsc -p tsconfig.json && node scripts/bundle-sdk.mjs",
|
|
70
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
71
|
+
"test": "node --test \"lib/**/*.test.js\"",
|
|
72
|
+
"cockpit": "dsh --profile web --patch ./profile/crowdy-node.patch.yml",
|
|
73
|
+
"image": "bash ./scripts/build-image.sh",
|
|
74
|
+
"check:content-policy": "node scripts/check-content-policy.mjs",
|
|
75
|
+
"check:release-tier-gate": "bash scripts/ci/resolve-release-tier.test.sh"
|
|
76
|
+
},
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"@deepseek-ai/cordis": "workspace:*",
|
|
79
|
+
"@deepseek-ai/dsh-attachment": "workspace:*",
|
|
80
|
+
"@deepseek-ai/dsh-fs": "workspace:*",
|
|
81
|
+
"@deepseek-ai/dsh-llm": "workspace:*",
|
|
82
|
+
"@deepseek-ai/dsh-tools": "workspace:*",
|
|
83
|
+
"@deepseek-ai/dsh-user-approval": "workspace:*",
|
|
84
|
+
"@deepseek-ai/schemastery": "workspace:*"
|
|
85
|
+
},
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@crowdedkingdoms/crowdyjs": "16.0.0-dev.1",
|
|
88
|
+
"@deepseek-ai/dsh-agent": "workspace:*",
|
|
89
|
+
"@deepseek-ai/dsh-api-session-controller": "workspace:*",
|
|
90
|
+
"@deepseek-ai/dsh-system-prompt": "workspace:*",
|
|
91
|
+
"@types/node": "^22.0.0",
|
|
92
|
+
"esbuild": "^0.25.0",
|
|
93
|
+
"typescript": "^5.6.0"
|
|
94
|
+
},
|
|
95
|
+
"engines": {
|
|
96
|
+
"node": ">=22.19"
|
|
97
|
+
},
|
|
98
|
+
"crowdyDsh": {
|
|
99
|
+
"sdkSourceBranch": "feat/dsh-pane"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# The `crowdy` agent preset: a coding agent whose filesystem is a Crowdy Studio
|
|
2
|
+
# project rather than this machine's disk, and whose only way to run code is
|
|
3
|
+
# the Studio draft/deploy loop.
|
|
4
|
+
#
|
|
5
|
+
# Derived from the shipped `standard` preset. What matters here is mostly what
|
|
6
|
+
# is ABSENT: the host composition mounts `@crowdedkingdoms/crowdy-dsh/fs` as
|
|
7
|
+
# `ctx.fs`, and any tool that reaches the real disk by another route would show
|
|
8
|
+
# the agent a world its edits cannot touch.
|
|
9
|
+
#
|
|
10
|
+
# tool-bash / tool-pwsh — there is no shell; a Crowdy project is compiled by
|
|
11
|
+
# the platform, never on the machine running this.
|
|
12
|
+
# tool-fs-search — glob/grep spawn ripgrep through `ctx.subprocess`,
|
|
13
|
+
# deliberately NOT through `ctx.fs`. The Crowdy
|
|
14
|
+
# search plugin registers the same names in memory.
|
|
15
|
+
# tool-jobs, skill-* — background jobs and skill discovery walk local roots.
|
|
16
|
+
# tool-web — the platform's model endpoint forbids provider web
|
|
17
|
+
# plugins; the harness gets no browser either.
|
|
18
|
+
# delegation — subagents are a later cut (each one costs the
|
|
19
|
+
# player's wallet).
|
|
20
|
+
|
|
21
|
+
# ── identity ────────────────────────────────────────────────────────────────
|
|
22
|
+
|
|
23
|
+
- id: persona
|
|
24
|
+
name: '@deepseek-ai/dsh-persona'
|
|
25
|
+
config:
|
|
26
|
+
suffix: The project is mounted at {{cwd}}; `server/` and `client/` are its two targets.
|
|
27
|
+
prefix: >-
|
|
28
|
+
You are the Crowdy Studio agent, powered by the {{model}} model. You help a
|
|
29
|
+
player write, test and deploy a mod for a Crowded Kingdoms game by editing
|
|
30
|
+
their Crowdy Studio project.
|
|
31
|
+
|
|
32
|
+
The filesystem your tools see is that project only, mounted at `{{cwd}}`:
|
|
33
|
+
`server/` is the SERVER target (Rust compiled to WebAssembly, run on the
|
|
34
|
+
player's grid by the platform) and `client/` is the CLIENT target (Rust to
|
|
35
|
+
WebAssembly, run in the player's browser). Each target holds `Cargo.toml`
|
|
36
|
+
and `.rs` files under `src/`; nothing else can be stored, so create no other
|
|
37
|
+
paths. `captures/` holds screenshots of the game and `context/` holds game
|
|
38
|
+
observations, client logs and the latest build diagnostics; both are
|
|
39
|
+
read-only and refreshed by Crowdy Studio.
|
|
40
|
+
|
|
41
|
+
When the project is bound to a GitHub repository, GitHub is the source of
|
|
42
|
+
truth: every write commits to the bound branch and Studio mirrors it. Say
|
|
43
|
+
so when it matters (for example, the player can review commits on GitHub).
|
|
44
|
+
|
|
45
|
+
You have no shell. To compile and run what you wrote, call `draft_test`;
|
|
46
|
+
read the diagnostics it returns, fix them, and run it again. Use
|
|
47
|
+
`screenshot` (or the capture `draft_test` takes) to see the game, and
|
|
48
|
+
`game_observe` for exact coordinates. `deploy_live` publishes to other
|
|
49
|
+
players and always asks the player to approve; never call it unless the
|
|
50
|
+
player asked for a live deploy and the draft passed.
|
|
51
|
+
|
|
52
|
+
Use `sdk_lookup` before calling any `crowdy::` host function you are not
|
|
53
|
+
certain exists; never invent one. Read a file before you change it. Keep
|
|
54
|
+
edits small and explain what you changed in one or two sentences.
|
|
55
|
+
|
|
56
|
+
- id: agent-instructions
|
|
57
|
+
name: '@deepseek-ai/dsh-agent-instructions'
|
|
58
|
+
config:
|
|
59
|
+
maxBytes: 65536
|
|
60
|
+
|
|
61
|
+
# ── filesystem and project tools ────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
# Registers read/write/edit/read_image into the host `tools` registry against
|
|
64
|
+
# whatever backend the host mounted on `ctx.fs` — here, the Crowdy project.
|
|
65
|
+
- id: tool-fs
|
|
66
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
67
|
+
|
|
68
|
+
# In-memory glob/grep over the same project snapshot the fs backend serves.
|
|
69
|
+
- id: tool-fs-search-crowdy
|
|
70
|
+
name: '@crowdedkingdoms/crowdy-dsh/search'
|
|
71
|
+
config:
|
|
72
|
+
globMaxResults: 100
|
|
73
|
+
grepMaxMatches: 250
|
|
74
|
+
grepMaxLineBytes: 2000
|
|
75
|
+
|
|
76
|
+
# Closed-world crowdy-compute-sdk index + `sdk_lookup`.
|
|
77
|
+
- id: sdk-index-crowdy
|
|
78
|
+
name: '@crowdedkingdoms/crowdy-dsh/sdk-index'
|
|
79
|
+
|
|
80
|
+
# draft_test / deploy_live / screenshot / runtime_status / client_logs /
|
|
81
|
+
# game_observe / project_* — everything the Studio page executes for the model.
|
|
82
|
+
- id: crowdy-tools
|
|
83
|
+
name: '@crowdedkingdoms/crowdy-dsh/tools'
|
|
84
|
+
config:
|
|
85
|
+
buildTimeoutMs: 180000
|
|
86
|
+
screenshotTimeoutMs: 15000
|
|
87
|
+
autoScreenshot: true
|
|
88
|
+
|
|
89
|
+
# ── plan mode ───────────────────────────────────────────────────────────────
|
|
90
|
+
|
|
91
|
+
- id: planning
|
|
92
|
+
name: cordis:group
|
|
93
|
+
group: true
|
|
94
|
+
isolate:
|
|
95
|
+
planMode: true
|
|
96
|
+
config:
|
|
97
|
+
- id: plan-mode
|
|
98
|
+
name: '@deepseek-ai/dsh-plan-mode'
|
|
99
|
+
config:
|
|
100
|
+
section: |
|
|
101
|
+
You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the player switches the session mode. Imperative language to implement changes means plan the implementation, not execute it.
|
|
102
|
+
|
|
103
|
+
Explore first: read the project files and `context/` to ground the plan in the actual source and the latest diagnostics. Do not write or edit files, and do not run draft_test or deploy_live while planning.
|
|
104
|
+
|
|
105
|
+
When ready, call exit_plan_mode with the complete plan markdown, starting with a # title, as the only and final tool call in that response.
|
|
106
|
+
|
|
107
|
+
# ── compaction ──────────────────────────────────────────────────────────────
|
|
108
|
+
|
|
109
|
+
- id: compaction
|
|
110
|
+
name: cordis:group
|
|
111
|
+
group: true
|
|
112
|
+
isolate:
|
|
113
|
+
compaction: true
|
|
114
|
+
toolResultPruner: true
|
|
115
|
+
config:
|
|
116
|
+
- id: compaction-basic
|
|
117
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
118
|
+
|
|
119
|
+
- id: command-compact
|
|
120
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
121
|
+
|
|
122
|
+
- id: tool-result-pruner
|
|
123
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
124
|
+
config:
|
|
125
|
+
thresholdChars: 8192
|
|
126
|
+
headChars: 4096
|
|
127
|
+
tailChars: 1024
|
|
128
|
+
|
|
129
|
+
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
130
|
+
|
|
131
|
+
- id: tool-ask-user
|
|
132
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
133
|
+
|
|
134
|
+
- id: tool-todo
|
|
135
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
136
|
+
config:
|
|
137
|
+
allowParallelInProgress: true
|
|
138
|
+
|
|
139
|
+
- id: present
|
|
140
|
+
name: '@deepseek-ai/dsh-tool-present'
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Developer cockpit overlay: run the same plugins under a Node 22 `dsh web`
|
|
2
|
+
# from a checkout of deepseek-harness that has this package in its workspace:
|
|
3
|
+
#
|
|
4
|
+
# dsh --profile web --patch profile/crowdy-node.patch.yml
|
|
5
|
+
#
|
|
6
|
+
# Connection settings come from CROWDY_* environment variables (see
|
|
7
|
+
# .env.example) or `$DSH_HOME/crowdy.json`. The mount must be a real (empty)
|
|
8
|
+
# directory so the workspace picker accepts it: `CROWDY_MOUNT`, default
|
|
9
|
+
# `$HOME/crowdy-mount`.
|
|
10
|
+
#
|
|
11
|
+
# Page-executed tools (draft_test, screenshot, ...) are registered but answer
|
|
12
|
+
# "not connected": there is no Studio page in the cockpit.
|
|
13
|
+
|
|
14
|
+
- id: fs-sandbox
|
|
15
|
+
disabled: true
|
|
16
|
+
|
|
17
|
+
- id: file-reference-local
|
|
18
|
+
disabled: true
|
|
19
|
+
|
|
20
|
+
- id: agent-presets
|
|
21
|
+
config:
|
|
22
|
+
default: crowdy
|
|
23
|
+
roots:
|
|
24
|
+
- path: !!js require('node:path').resolve(__dirname, '../presets')
|
|
25
|
+
trust: user
|
|
26
|
+
|
|
27
|
+
- insert:
|
|
28
|
+
- id: crowdy-fs
|
|
29
|
+
name: '@crowdedkingdoms/crowdy-dsh/fs'
|
|
30
|
+
config:
|
|
31
|
+
root: !!js process.env.CROWDY_MOUNT ?? require('node:os').homedir() + '/crowdy-mount'
|
|
32
|
+
|
|
33
|
+
- id: crowdy-bridge
|
|
34
|
+
name: '@crowdedkingdoms/crowdy-dsh/bridge'
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Crowdy Studio overlay for the browser-worker image, applied over the shipped
|
|
2
|
+
# `web` profile at pack time:
|
|
3
|
+
#
|
|
4
|
+
# dsh --profile web --patch profile/crowdy-web.patch.yml --dump-config
|
|
5
|
+
#
|
|
6
|
+
# The composed tree is what `scripts/pack-image.ts` hands to the packer.
|
|
7
|
+
#
|
|
8
|
+
# Three changes to the stock web composition:
|
|
9
|
+
# 1. the disk-backed filesystem is replaced by the Crowdy Studio backend, so
|
|
10
|
+
# the unmodified read/write/edit/read_image tools operate on the project;
|
|
11
|
+
# 2. the sharp-backed attachment store is replaced by an in-memory one that
|
|
12
|
+
# works without native modules, so screenshots reach the model;
|
|
13
|
+
# 3. the page bridge joins, and the `crowdy` preset becomes the default.
|
|
14
|
+
#
|
|
15
|
+
# Connection settings arrive at boot as `$DSH_HOME/crowdy.json` (an overlay the
|
|
16
|
+
# Studio page writes), never from this file.
|
|
17
|
+
|
|
18
|
+
- id: fs-sandbox
|
|
19
|
+
disabled: true
|
|
20
|
+
|
|
21
|
+
- id: attachment-local
|
|
22
|
+
disabled: true
|
|
23
|
+
|
|
24
|
+
# The `@file` reference source walks the host disk; our files are not there.
|
|
25
|
+
- id: file-reference-local
|
|
26
|
+
disabled: true
|
|
27
|
+
|
|
28
|
+
# Native directory picking has no meaning in a worker; the project is the
|
|
29
|
+
# only workspace and the page registers it.
|
|
30
|
+
- id: directory-picker
|
|
31
|
+
disabled: true
|
|
32
|
+
|
|
33
|
+
# "Open in app" probes the host machine for editors; there is none.
|
|
34
|
+
- id: open-in-app
|
|
35
|
+
disabled: true
|
|
36
|
+
- id: ui-open-in-app
|
|
37
|
+
disabled: true
|
|
38
|
+
|
|
39
|
+
# Host web tools stay disabled (the base already does so); nothing here should
|
|
40
|
+
# fetch arbitrary URLs from the player's browser.
|
|
41
|
+
- id: web
|
|
42
|
+
disabled: true
|
|
43
|
+
|
|
44
|
+
# No telemetry leaves the player's browser. The base composition ships the
|
|
45
|
+
# OTLP exporter pointed at DeepSeek's collector in FEEDBACK_ONLY mode; the
|
|
46
|
+
# host CSP would block the request, but a disabled plugin does not try, and
|
|
47
|
+
# finish-artifact.mjs refuses an image that so much as names the endpoint.
|
|
48
|
+
- id: session-telemetry-otel
|
|
49
|
+
disabled: true
|
|
50
|
+
config:
|
|
51
|
+
mode: DISABLED
|
|
52
|
+
exporter:
|
|
53
|
+
url: ''
|
|
54
|
+
|
|
55
|
+
- id: web-search-deepseek
|
|
56
|
+
disabled: true
|
|
57
|
+
- id: web-fetch-http
|
|
58
|
+
disabled: true
|
|
59
|
+
|
|
60
|
+
# Sandbox policy: the whole mount is the workspace, and the Crowdy backend does
|
|
61
|
+
# not confine, so `workspace-write` reads as "the project".
|
|
62
|
+
- id: sandbox-policy
|
|
63
|
+
config:
|
|
64
|
+
mode: workspace-write
|
|
65
|
+
workspaceRoot: /dsh/workspace
|
|
66
|
+
|
|
67
|
+
- id: agent-presets
|
|
68
|
+
config:
|
|
69
|
+
default: crowdy
|
|
70
|
+
|
|
71
|
+
- insert:
|
|
72
|
+
- id: crowdy-fs
|
|
73
|
+
name: '@crowdedkingdoms/crowdy-dsh/fs'
|
|
74
|
+
config:
|
|
75
|
+
# The image root is /dsh; the stock workspace directory becomes the
|
|
76
|
+
# project mount so a session's cwd IS the project.
|
|
77
|
+
root: /dsh/workspace
|
|
78
|
+
githubFirst: true
|
|
79
|
+
|
|
80
|
+
- id: attachment-crowdy
|
|
81
|
+
name: '@crowdedkingdoms/crowdy-dsh/attachments'
|
|
82
|
+
config:
|
|
83
|
+
maxImageBytes: 4194304
|
|
84
|
+
maxImageDimension: 8192
|
|
85
|
+
|
|
86
|
+
- id: crowdy-bridge
|
|
87
|
+
name: '@crowdedkingdoms/crowdy-dsh/bridge'
|
|
88
|
+
config:
|
|
89
|
+
timeoutMs: 15000
|
|
90
|
+
|
|
91
|
+
# Mirror sessions, projection caches and settings into the origin-private
|
|
92
|
+
# file system; the page restores them as an overlay on the next boot.
|
|
93
|
+
- id: crowdy-persist
|
|
94
|
+
name: '@crowdedkingdoms/crowdy-dsh/persist'
|
|
95
|
+
config:
|
|
96
|
+
intervalMs: 3000
|
|
97
|
+
maxBytes: 50331648
|
package/upstream.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "The DeepSeek Harness this package builds against. Not a submodule (this wrapper carries none, see AGENTS.md): scripts/checkout-upstream.sh clones this tag into UPSTREAM_DIR, and scripts/build-image.sh refuses a checkout at any other commit. Bump deliberately; the plugin APIs are experimental.",
|
|
3
|
+
"repository": "https://github.com/deepseek-ai/deepseek-harness.git",
|
|
4
|
+
"tag": "dsh-v0.1.5-rc.2",
|
|
5
|
+
"commit": "fb2c4b9e698e30edb738bca4cf0618587db7d203",
|
|
6
|
+
"license": "MIT"
|
|
7
|
+
}
|