dsh-cliworker-now 0.0.0-stage → 0.7.7
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.en.md +364 -0
- package/README.md +368 -2
- package/cordis.patch.yml +3 -0
- package/lib/account-models.mjs +262 -0
- package/lib/client.js +22139 -0
- package/lib/client.js.map +1 -0
- package/lib/grok-catalog.mjs +145 -0
- package/lib/hermes-native-entry.py +96 -0
- package/lib/hermes-nous-refresh.py +331 -0
- package/lib/index.js +14544 -0
- package/lib/index.js.map +1 -0
- package/lib/native-launch.mjs +234 -0
- package/lib/native-spawn.mjs +32 -0
- package/lib/own-account-lease.mjs +105 -0
- package/lib/pi-installation.mjs +87 -0
- package/lib/pi-login.mjs +80 -0
- package/lib/pi-native-catalog.mjs +417 -0
- package/lib/pi-omp-bridge.mjs +602 -0
- package/lib/pi-omp-environment.mjs +15 -0
- package/lib/pi-omp-refresh.mjs +324 -0
- package/lib/private-launch.mjs +23 -0
- package/lib/terminal-bridge.mjs +18 -0
- package/lib/typert.host.d.ts +3 -0
- package/lib/typert.host.js +1430 -0
- package/lib/typert.remote-client.d.ts +72 -0
- package/lib/typert.remote-client.d.ts.map +1 -0
- package/lib/typert.remote-client.js +1256 -0
- package/lib/types/client/account-query-queue.d.ts +16 -0
- package/lib/types/client/account-query-queue.js +61 -0
- package/lib/types/client/account-query-queue.js.map +1 -0
- package/lib/types/client/account-terminal-css.d.ts +1 -0
- package/lib/types/client/account-terminal-css.js +3 -0
- package/lib/types/client/account-terminal-css.js.map +1 -0
- package/lib/types/client/account-terminal.d.ts +17 -0
- package/lib/types/client/account-terminal.js +525 -0
- package/lib/types/client/account-terminal.js.map +1 -0
- package/lib/types/client/assets/antigravity.png +0 -0
- package/lib/types/client/assets/claude-code.png +0 -0
- package/lib/types/client/assets/cliworker-now-logo.png +0 -0
- package/lib/types/client/assets/codex.png +0 -0
- package/lib/types/client/assets/grok.png +0 -0
- package/lib/types/client/assets/hermes.png +0 -0
- package/lib/types/client/assets/kimi-dark.png +0 -0
- package/lib/types/client/assets/kimi-light.png +0 -0
- package/lib/types/client/assets/mimo-code.png +0 -0
- package/lib/types/client/assets/omp.png +0 -0
- package/lib/types/client/assets/opencode.png +0 -0
- package/lib/types/client/assets/pi.png +0 -0
- package/lib/types/client/assets/zcode.png +0 -0
- package/lib/types/client/composer-keymap.d.ts +18 -0
- package/lib/types/client/composer-keymap.js +49 -0
- package/lib/types/client/composer-keymap.js.map +1 -0
- package/lib/types/client/conversation-timeline.d.ts +6 -0
- package/lib/types/client/conversation-timeline.js +65 -0
- package/lib/types/client/conversation-timeline.js.map +1 -0
- package/lib/types/client/copy-text.d.ts +5 -0
- package/lib/types/client/copy-text.js +45 -0
- package/lib/types/client/copy-text.js.map +1 -0
- package/lib/types/client/icons.d.ts +21 -0
- package/lib/types/client/icons.js +68 -0
- package/lib/types/client/icons.js.map +1 -0
- package/lib/types/client/index.d.ts +3 -0
- package/lib/types/client/index.js +124 -0
- package/lib/types/client/index.js.map +1 -0
- package/lib/types/client/management-styles.d.ts +1 -0
- package/lib/types/client/management-styles.js +17 -0
- package/lib/types/client/management-styles.js.map +1 -0
- package/lib/types/client/name-copy.d.ts +5 -0
- package/lib/types/client/name-copy.js +107 -0
- package/lib/types/client/name-copy.js.map +1 -0
- package/lib/types/client/native-job-overlay.d.ts +11 -0
- package/lib/types/client/native-job-overlay.js +129 -0
- package/lib/types/client/native-job-overlay.js.map +1 -0
- package/lib/types/client/operation-error.d.ts +2 -0
- package/lib/types/client/operation-error.js +12 -0
- package/lib/types/client/operation-error.js.map +1 -0
- package/lib/types/client/panel.d.ts +8 -0
- package/lib/types/client/panel.js +310 -0
- package/lib/types/client/panel.js.map +1 -0
- package/lib/types/client/rename-copy-styles.d.ts +1 -0
- package/lib/types/client/rename-copy-styles.js +21 -0
- package/lib/types/client/rename-copy-styles.js.map +1 -0
- package/lib/types/client/rename-worker.d.ts +9 -0
- package/lib/types/client/rename-worker.js +53 -0
- package/lib/types/client/rename-worker.js.map +1 -0
- package/lib/types/client/role-presets.d.ts +6 -0
- package/lib/types/client/role-presets.js +111 -0
- package/lib/types/client/role-presets.js.map +1 -0
- package/lib/types/client/settings-dialog.d.ts +13 -0
- package/lib/types/client/settings-dialog.js +442 -0
- package/lib/types/client/settings-dialog.js.map +1 -0
- package/lib/types/client/stat-popover.d.ts +10 -0
- package/lib/types/client/stat-popover.js +32 -0
- package/lib/types/client/stat-popover.js.map +1 -0
- package/lib/types/client/styles.d.ts +9 -0
- package/lib/types/client/styles.js +221 -0
- package/lib/types/client/styles.js.map +1 -0
- package/lib/types/client/telemetry.d.ts +11 -0
- package/lib/types/client/telemetry.js +24 -0
- package/lib/types/client/telemetry.js.map +1 -0
- package/lib/types/client/worker-card.d.ts +10 -0
- package/lib/types/client/worker-card.js +75 -0
- package/lib/types/client/worker-card.js.map +1 -0
- package/lib/types/client/worker-model-menu.d.ts +9 -0
- package/lib/types/client/worker-model-menu.js +136 -0
- package/lib/types/client/worker-model-menu.js.map +1 -0
- package/lib/types/client/workers.d.ts +21 -0
- package/lib/types/client/workers.js +59 -0
- package/lib/types/client/workers.js.map +1 -0
- package/lib/types/client/zcode-login-link-provider.d.ts +9 -0
- package/lib/types/client/zcode-login-link-provider.js +105 -0
- package/lib/types/client/zcode-login-link-provider.js.map +1 -0
- package/lib/types/client/zcode-login-link.d.ts +16 -0
- package/lib/types/client/zcode-login-link.js +194 -0
- package/lib/types/client/zcode-login-link.js.map +1 -0
- package/lib/types/host/account-identity.d.ts +16 -0
- package/lib/types/host/account-identity.js +126 -0
- package/lib/types/host/account-identity.js.map +1 -0
- package/lib/types/host/account-login.d.ts +10 -0
- package/lib/types/host/account-login.js +126 -0
- package/lib/types/host/account-login.js.map +1 -0
- package/lib/types/host/account-models.d.mts +21 -0
- package/lib/types/host/account-models.mjs +262 -0
- package/lib/types/host/accounts.d.ts +42 -0
- package/lib/types/host/accounts.js +945 -0
- package/lib/types/host/accounts.js.map +1 -0
- package/lib/types/host/adapters.d.ts +24 -0
- package/lib/types/host/adapters.js +380 -0
- package/lib/types/host/adapters.js.map +1 -0
- package/lib/types/host/agy-context.d.ts +8 -0
- package/lib/types/host/agy-context.js +122 -0
- package/lib/types/host/agy-context.js.map +1 -0
- package/lib/types/host/agy-models.d.ts +5 -0
- package/lib/types/host/agy-models.js +37 -0
- package/lib/types/host/agy-models.js.map +1 -0
- package/lib/types/host/agy-windows-account.d.ts +14 -0
- package/lib/types/host/agy-windows-account.js +104 -0
- package/lib/types/host/agy-windows-account.js.map +1 -0
- package/lib/types/host/authorized-catalog.d.ts +14 -0
- package/lib/types/host/authorized-catalog.js +35 -0
- package/lib/types/host/authorized-catalog.js.map +1 -0
- package/lib/types/host/bridge-protocol.d.ts +15 -0
- package/lib/types/host/bridge-protocol.js +80 -0
- package/lib/types/host/bridge-protocol.js.map +1 -0
- package/lib/types/host/claude-native-oauth.d.ts +17 -0
- package/lib/types/host/claude-native-oauth.js +272 -0
- package/lib/types/host/claude-native-oauth.js.map +1 -0
- package/lib/types/host/claude-own-route.d.ts +33 -0
- package/lib/types/host/claude-own-route.js +250 -0
- package/lib/types/host/claude-own-route.js.map +1 -0
- package/lib/types/host/cli-account-binding.d.ts +33 -0
- package/lib/types/host/cli-account-binding.js +540 -0
- package/lib/types/host/cli-account-binding.js.map +1 -0
- package/lib/types/host/cli-protocol.d.ts +27 -0
- package/lib/types/host/cli-protocol.js +212 -0
- package/lib/types/host/cli-protocol.js.map +1 -0
- package/lib/types/host/codex-account.d.ts +8 -0
- package/lib/types/host/codex-account.js +143 -0
- package/lib/types/host/codex-account.js.map +1 -0
- package/lib/types/host/codex-models.d.ts +6 -0
- package/lib/types/host/codex-models.js +169 -0
- package/lib/types/host/codex-models.js.map +1 -0
- package/lib/types/host/extended-adapters.d.ts +44 -0
- package/lib/types/host/extended-adapters.js +207 -0
- package/lib/types/host/extended-adapters.js.map +1 -0
- package/lib/types/host/first-party-account-context.d.ts +26 -0
- package/lib/types/host/first-party-account-context.js +55 -0
- package/lib/types/host/first-party-account-context.js.map +1 -0
- package/lib/types/host/first-party-models.d.ts +29 -0
- package/lib/types/host/first-party-models.js +459 -0
- package/lib/types/host/first-party-models.js.map +1 -0
- package/lib/types/host/grok-adapter.d.ts +44 -0
- package/lib/types/host/grok-adapter.js +293 -0
- package/lib/types/host/grok-adapter.js.map +1 -0
- package/lib/types/host/grok-models.d.ts +47 -0
- package/lib/types/host/grok-models.js +320 -0
- package/lib/types/host/grok-models.js.map +1 -0
- package/lib/types/host/harness-opencode-accounts.d.ts +17 -0
- package/lib/types/host/harness-opencode-accounts.js +80 -0
- package/lib/types/host/harness-opencode-accounts.js.map +1 -0
- package/lib/types/host/hermes-account-context.d.ts +8 -0
- package/lib/types/host/hermes-account-context.js +99 -0
- package/lib/types/host/hermes-account-context.js.map +1 -0
- package/lib/types/host/hermes-accounts.d.ts +19 -0
- package/lib/types/host/hermes-accounts.js +356 -0
- package/lib/types/host/hermes-accounts.js.map +1 -0
- package/lib/types/host/hermes-adapter.d.ts +93 -0
- package/lib/types/host/hermes-adapter.js +455 -0
- package/lib/types/host/hermes-adapter.js.map +1 -0
- package/lib/types/host/hermes-env.d.ts +4 -0
- package/lib/types/host/hermes-env.js +22 -0
- package/lib/types/host/hermes-env.js.map +1 -0
- package/lib/types/host/hermes-installation.d.ts +10 -0
- package/lib/types/host/hermes-installation.js +181 -0
- package/lib/types/host/hermes-installation.js.map +1 -0
- package/lib/types/host/hermes-models.d.ts +26 -0
- package/lib/types/host/hermes-models.js +328 -0
- package/lib/types/host/hermes-models.js.map +1 -0
- package/lib/types/host/hermes-native-entry.py +96 -0
- package/lib/types/host/hermes-nous-refresh.py +331 -0
- package/lib/types/host/hermes-nous.d.ts +53 -0
- package/lib/types/host/hermes-nous.js +343 -0
- package/lib/types/host/hermes-nous.js.map +1 -0
- package/lib/types/host/hermes-renewal.d.ts +27 -0
- package/lib/types/host/hermes-renewal.js +292 -0
- package/lib/types/host/hermes-renewal.js.map +1 -0
- package/lib/types/host/hermes-suppression.d.ts +7 -0
- package/lib/types/host/hermes-suppression.js +69 -0
- package/lib/types/host/hermes-suppression.js.map +1 -0
- package/lib/types/host/hermes-windows-installation.d.ts +5 -0
- package/lib/types/host/hermes-windows-installation.js +91 -0
- package/lib/types/host/hermes-windows-installation.js.map +1 -0
- package/lib/types/host/index.d.ts +140 -0
- package/lib/types/host/index.js +947 -0
- package/lib/types/host/index.js.map +1 -0
- package/lib/types/host/kimi-accounts.d.ts +17 -0
- package/lib/types/host/kimi-accounts.js +220 -0
- package/lib/types/host/kimi-accounts.js.map +1 -0
- package/lib/types/host/kimi-oauth-models.d.ts +14 -0
- package/lib/types/host/kimi-oauth-models.js +246 -0
- package/lib/types/host/kimi-oauth-models.js.map +1 -0
- package/lib/types/host/managed-agent.d.ts +4 -0
- package/lib/types/host/managed-agent.js +127 -0
- package/lib/types/host/managed-agent.js.map +1 -0
- package/lib/types/host/mimo-configuration.d.ts +22 -0
- package/lib/types/host/mimo-configuration.js +258 -0
- package/lib/types/host/mimo-configuration.js.map +1 -0
- package/lib/types/host/mimo-metadata-cache.d.ts +22 -0
- package/lib/types/host/mimo-metadata-cache.js +121 -0
- package/lib/types/host/mimo-metadata-cache.js.map +1 -0
- package/lib/types/host/native-capability-cache.d.ts +11 -0
- package/lib/types/host/native-capability-cache.js +94 -0
- package/lib/types/host/native-capability-cache.js.map +1 -0
- package/lib/types/host/native-launch.d.mts +2 -0
- package/lib/types/host/native-launch.mjs +234 -0
- package/lib/types/host/native-process.d.ts +5 -0
- package/lib/types/host/native-process.js +41 -0
- package/lib/types/host/native-process.js.map +1 -0
- package/lib/types/host/native-spawn.mjs +32 -0
- package/lib/types/host/opencode-adapter.d.ts +94 -0
- package/lib/types/host/opencode-adapter.js +507 -0
- package/lib/types/host/opencode-adapter.js.map +1 -0
- package/lib/types/host/opencode-native.d.ts +27 -0
- package/lib/types/host/opencode-native.js +403 -0
- package/lib/types/host/opencode-native.js.map +1 -0
- package/lib/types/host/own-account-lease.d.mts +5 -0
- package/lib/types/host/own-account-lease.mjs +105 -0
- package/lib/types/host/pi-installation.d.mts +7 -0
- package/lib/types/host/pi-installation.mjs +87 -0
- package/lib/types/host/pi-omp-accounts.d.ts +28 -0
- package/lib/types/host/pi-omp-accounts.js +175 -0
- package/lib/types/host/pi-omp-accounts.js.map +1 -0
- package/lib/types/host/pi-omp-adapter.d.ts +32 -0
- package/lib/types/host/pi-omp-adapter.js +190 -0
- package/lib/types/host/pi-omp-adapter.js.map +1 -0
- package/lib/types/host/pi-omp-environment.d.mts +1 -0
- package/lib/types/host/pi-omp-environment.mjs +15 -0
- package/lib/types/host/pi-omp-identity.d.ts +2 -0
- package/lib/types/host/pi-omp-identity.js +142 -0
- package/lib/types/host/pi-omp-identity.js.map +1 -0
- package/lib/types/host/pi-omp-logout.d.ts +3 -0
- package/lib/types/host/pi-omp-logout.js +152 -0
- package/lib/types/host/pi-omp-logout.js.map +1 -0
- package/lib/types/host/pi-omp-native.d.ts +71 -0
- package/lib/types/host/pi-omp-native.js +753 -0
- package/lib/types/host/pi-omp-native.js.map +1 -0
- package/lib/types/host/pi-omp-refresh.d.mts +7 -0
- package/lib/types/host/pi-omp-refresh.mjs +324 -0
- package/lib/types/host/private-launch.mjs +23 -0
- package/lib/types/host/process.d.ts +43 -0
- package/lib/types/host/process.js +134 -0
- package/lib/types/host/process.js.map +1 -0
- package/lib/types/host/protocol.d.ts +23 -0
- package/lib/types/host/protocol.js +112 -0
- package/lib/types/host/protocol.js.map +1 -0
- package/lib/types/host/roles.d.ts +34 -0
- package/lib/types/host/roles.js +80 -0
- package/lib/types/host/roles.js.map +1 -0
- package/lib/types/host/routing.d.ts +31 -0
- package/lib/types/host/routing.js +248 -0
- package/lib/types/host/routing.js.map +1 -0
- package/lib/types/host/runtime.d.ts +60 -0
- package/lib/types/host/runtime.js +598 -0
- package/lib/types/host/runtime.js.map +1 -0
- package/lib/types/host/storage.d.ts +48 -0
- package/lib/types/host/storage.js +449 -0
- package/lib/types/host/storage.js.map +1 -0
- package/lib/types/host/telemetry.d.ts +17 -0
- package/lib/types/host/telemetry.js +158 -0
- package/lib/types/host/telemetry.js.map +1 -0
- package/lib/types/host/windows-account-bootstrap.ps1 +44 -0
- package/lib/types/host/windows-account-launch.mjs +47 -0
- package/lib/types/host/windows-account-owner.ps1 +137 -0
- package/lib/types/host/windows-account-stdio.mjs +19 -0
- package/lib/types/host/windows-account-terminal.d.ts +17 -0
- package/lib/types/host/windows-account-terminal.js +208 -0
- package/lib/types/host/windows-account-terminal.js.map +1 -0
- package/lib/types/host/windows-agy-account.ps1 +81 -0
- package/lib/types/host/windows-cli-installation.d.ts +31 -0
- package/lib/types/host/windows-cli-installation.js +157 -0
- package/lib/types/host/windows-cli-installation.js.map +1 -0
- package/lib/types/host/windows-hidden-launch.mjs +49 -0
- package/lib/types/host/windows-hidden-process.d.ts +12 -0
- package/lib/types/host/windows-hidden-process.js +116 -0
- package/lib/types/host/windows-hidden-process.js.map +1 -0
- package/lib/types/host/zcode-account-models.d.ts +16 -0
- package/lib/types/host/zcode-account-models.js +114 -0
- package/lib/types/host/zcode-account-models.js.map +1 -0
- package/lib/types/host/zcode-adapter.d.ts +93 -0
- package/lib/types/host/zcode-adapter.js +808 -0
- package/lib/types/host/zcode-adapter.js.map +1 -0
- package/lib/types/host/zcode-grok-accounts.d.ts +30 -0
- package/lib/types/host/zcode-grok-accounts.js +408 -0
- package/lib/types/host/zcode-grok-accounts.js.map +1 -0
- package/lib/types/shared/accounts.d.ts +47 -0
- package/lib/types/shared/accounts.js +2 -0
- package/lib/types/shared/accounts.js.map +1 -0
- package/lib/types/shared/builtin-presets.d.ts +2 -0
- package/lib/types/shared/builtin-presets.js +231 -0
- package/lib/types/shared/builtin-presets.js.map +1 -0
- package/lib/types/shared/cli-settings.d.ts +5 -0
- package/lib/types/shared/cli-settings.js +2 -0
- package/lib/types/shared/cli-settings.js.map +1 -0
- package/lib/types/shared/model-presentation.d.ts +10 -0
- package/lib/types/shared/model-presentation.js +95 -0
- package/lib/types/shared/model-presentation.js.map +1 -0
- package/lib/types/shared/models.d.ts +7 -0
- package/lib/types/shared/models.js +35 -0
- package/lib/types/shared/models.js.map +1 -0
- package/lib/types/shared/telemetry.d.ts +18 -0
- package/lib/types/shared/telemetry.js +16 -0
- package/lib/types/shared/telemetry.js.map +1 -0
- package/lib/types/shared/types.d.ts +127 -0
- package/lib/types/shared/types.js +147 -0
- package/lib/types/shared/types.js.map +1 -0
- package/lib/windows-account-bootstrap.ps1 +44 -0
- package/lib/windows-account-launch.mjs +47 -0
- package/lib/windows-account-owner.ps1 +137 -0
- package/lib/windows-account-stdio.mjs +19 -0
- package/lib/windows-agy-account.ps1 +81 -0
- package/lib/windows-hidden-launch.mjs +49 -0
- package/lib/zcode-resume.mjs +423 -0
- package/package.json +109 -4
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
// ZCode ignores configured defaults on --resume. Apply the selected native model
|
|
2
|
+
// through metadata RPC, close the server completely, then run the original argv.
|
|
3
|
+
// The Host owns the surrounding Seatbelt and process range; never detach or shell.
|
|
4
|
+
import { spawnNativeProcess } from './native-spawn.mjs'
|
|
5
|
+
import { constants } from 'node:fs'
|
|
6
|
+
import { open, lstat, realpath, unlink } from 'node:fs/promises'
|
|
7
|
+
import { dirname, isAbsolute, resolve } from 'node:path'
|
|
8
|
+
import { StringDecoder } from 'node:string_decoder'
|
|
9
|
+
|
|
10
|
+
process.umask(0o077)
|
|
11
|
+
const controller = new AbortController()
|
|
12
|
+
let active,
|
|
13
|
+
activeDone,
|
|
14
|
+
termination,
|
|
15
|
+
stopped = false,
|
|
16
|
+
resultSent = false
|
|
17
|
+
const failureText = 'ZCode 会话选型或协议验证失败,任务未成功执行,请检查原生配置'
|
|
18
|
+
const stoppedText = 'ZCode 任务已停止'
|
|
19
|
+
const output = (value) => process.stdout.write(JSON.stringify(value) + '\n')
|
|
20
|
+
const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
21
|
+
const string = (value) => typeof value === 'string' && value.length > 0 && !/[\x00-\x1f]/u.test(value)
|
|
22
|
+
const checkActive = () => {
|
|
23
|
+
controller.signal.throwIfAborted()
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function start(argv, project, pipes) {
|
|
27
|
+
checkActive()
|
|
28
|
+
const child = spawnNativeProcess(argv[0], argv.slice(1), {
|
|
29
|
+
cwd: project,
|
|
30
|
+
env: process.env,
|
|
31
|
+
detached: false,
|
|
32
|
+
stdio: pipes,
|
|
33
|
+
})
|
|
34
|
+
active = child
|
|
35
|
+
termination = undefined
|
|
36
|
+
activeDone = new Promise((fulfill) => {
|
|
37
|
+
child.once('error', () => fulfill({ code: null, signal: undefined }))
|
|
38
|
+
child.once('close', (code, signal) => fulfill({ code, signal }))
|
|
39
|
+
})
|
|
40
|
+
child.stdin?.on('error', () => {})
|
|
41
|
+
return { child, done: activeDone }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function terminate() {
|
|
45
|
+
if (termination) return termination
|
|
46
|
+
const child = active,
|
|
47
|
+
done = activeDone
|
|
48
|
+
if (!child || !done) return
|
|
49
|
+
termination = (async () => {
|
|
50
|
+
child.stdin?.end()
|
|
51
|
+
child.kill('SIGTERM')
|
|
52
|
+
const force = setTimeout(() => child.kill('SIGKILL'), 1000)
|
|
53
|
+
try {
|
|
54
|
+
await done
|
|
55
|
+
} finally {
|
|
56
|
+
clearTimeout(force)
|
|
57
|
+
}
|
|
58
|
+
if (active === child) {
|
|
59
|
+
active = undefined
|
|
60
|
+
activeDone = undefined
|
|
61
|
+
}
|
|
62
|
+
})()
|
|
63
|
+
return termination
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
for (const signal of ['SIGTERM', 'SIGINT'])
|
|
67
|
+
process.on(signal, () => {
|
|
68
|
+
stopped = true
|
|
69
|
+
controller.abort(new Error(stoppedText))
|
|
70
|
+
void terminate()
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
async function readRequest(path) {
|
|
74
|
+
if (!isAbsolute(path ?? '') || !string(process.env.ZCODE_PERSONAL_PROVIDER_CONFIG_FILE))
|
|
75
|
+
throw new Error('Invalid private request')
|
|
76
|
+
const parent = await realpath(dirname(path))
|
|
77
|
+
const expected = await realpath(dirname(process.env.ZCODE_PERSONAL_PROVIDER_CONFIG_FILE))
|
|
78
|
+
if (parent !== expected || parent !== resolve(dirname(path)))
|
|
79
|
+
throw new Error('Request escaped private state')
|
|
80
|
+
const directory = await lstat(parent)
|
|
81
|
+
if (!directory.isDirectory() || directory.isSymbolicLink() || (process.platform !== 'win32' && (directory.mode & 0o077)))
|
|
82
|
+
throw new Error('Unsafe private request directory')
|
|
83
|
+
const file = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK)
|
|
84
|
+
let value
|
|
85
|
+
try {
|
|
86
|
+
const before = await file.stat()
|
|
87
|
+
if (!before.isFile() || before.nlink !== 1 || before.size > 1024 * 1024 || (process.platform !== 'win32' && (before.mode & 0o077)))
|
|
88
|
+
throw new Error('Unsafe private request')
|
|
89
|
+
const text = await file.readFile('utf8')
|
|
90
|
+
const after = await file.stat()
|
|
91
|
+
if (
|
|
92
|
+
before.size !== Buffer.byteLength(text) ||
|
|
93
|
+
before.size !== after.size ||
|
|
94
|
+
before.mtimeMs !== after.mtimeMs
|
|
95
|
+
)
|
|
96
|
+
throw new Error('Request changed during read')
|
|
97
|
+
value = JSON.parse(text)
|
|
98
|
+
} finally {
|
|
99
|
+
await file.close()
|
|
100
|
+
}
|
|
101
|
+
await unlink(path)
|
|
102
|
+
if (
|
|
103
|
+
!object(value) ||
|
|
104
|
+
!isAbsolute(value.executable ?? '') ||
|
|
105
|
+
!isAbsolute(value.project ?? '') ||
|
|
106
|
+
!string(value.conversationId) ||
|
|
107
|
+
!object(value.selection) ||
|
|
108
|
+
!string(value.selection.providerId) ||
|
|
109
|
+
!/^[A-Za-z0-9_.:-]+$/u.test(value.selection.providerId) ||
|
|
110
|
+
!string(value.selection.modelId) ||
|
|
111
|
+
!Array.isArray(value.argv) ||
|
|
112
|
+
value.argv.some((arg) => typeof arg !== 'string')
|
|
113
|
+
)
|
|
114
|
+
throw new Error('Invalid resume request')
|
|
115
|
+
const prefix = /\.[cm]?js$/u.test(value.executable)
|
|
116
|
+
? [process.execPath, value.executable]
|
|
117
|
+
: [value.executable]
|
|
118
|
+
if (prefix.some((arg, index) => value.argv[index] !== arg)) throw new Error('Native executable changed')
|
|
119
|
+
const flags = new Map()
|
|
120
|
+
const args = value.argv.slice(prefix.length)
|
|
121
|
+
if (args.length % 2) throw new Error('Invalid native argv')
|
|
122
|
+
for (let index = 0; index < args.length; index += 2) {
|
|
123
|
+
if (
|
|
124
|
+
!['--cwd', '--mode', '--output-format', '--disallowedTools', '--resume', '--prompt'].includes(
|
|
125
|
+
args[index],
|
|
126
|
+
) ||
|
|
127
|
+
flags.has(args[index])
|
|
128
|
+
)
|
|
129
|
+
throw new Error('Unexpected native option')
|
|
130
|
+
flags.set(args[index], args[index + 1])
|
|
131
|
+
}
|
|
132
|
+
if (
|
|
133
|
+
flags.size !== 6 ||
|
|
134
|
+
flags.get('--cwd') !== value.project ||
|
|
135
|
+
flags.get('--resume') !== value.conversationId ||
|
|
136
|
+
!['plan', 'edit'].includes(flags.get('--mode')) ||
|
|
137
|
+
flags.get('--output-format') !== 'stream-json' ||
|
|
138
|
+
!string(flags.get('--disallowedTools')) ||
|
|
139
|
+
!flags.get('--prompt')?.trim()
|
|
140
|
+
)
|
|
141
|
+
throw new Error('Native request identity or permission changed')
|
|
142
|
+
if (
|
|
143
|
+
value.selection.options !== undefined &&
|
|
144
|
+
(!object(value.selection.options) || !string(value.selection.options.reasoningLevel))
|
|
145
|
+
)
|
|
146
|
+
throw new Error('Invalid native reasoning evidence')
|
|
147
|
+
return {
|
|
148
|
+
...value,
|
|
149
|
+
selection: {
|
|
150
|
+
providerId: value.selection.providerId,
|
|
151
|
+
modelId: value.selection.modelId,
|
|
152
|
+
...(value.selection.options
|
|
153
|
+
? { options: { reasoningLevel: value.selection.options.reasoningLevel } }
|
|
154
|
+
: {}),
|
|
155
|
+
},
|
|
156
|
+
serverArgv: [
|
|
157
|
+
...prefix,
|
|
158
|
+
'app-server',
|
|
159
|
+
'--cwd',
|
|
160
|
+
value.project,
|
|
161
|
+
'--disallowedTools',
|
|
162
|
+
flags.get('--disallowedTools'),
|
|
163
|
+
],
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function frames(child, consume, fail) {
|
|
168
|
+
const decoder = new StringDecoder('utf8')
|
|
169
|
+
let pending = '',
|
|
170
|
+
bytes = 0,
|
|
171
|
+
failed = false
|
|
172
|
+
const receive = (chunk) => {
|
|
173
|
+
if (failed) return
|
|
174
|
+
try {
|
|
175
|
+
bytes += chunk.length
|
|
176
|
+
if (bytes > 16 * 1024 * 1024) throw new Error('Native output limit')
|
|
177
|
+
pending += decoder.write(chunk)
|
|
178
|
+
let end
|
|
179
|
+
while ((end = pending.indexOf('\n')) >= 0) {
|
|
180
|
+
const line = pending.slice(0, end)
|
|
181
|
+
pending = pending.slice(end + 1)
|
|
182
|
+
if (Buffer.byteLength(line) > 1024 * 1024) throw new Error('Native frame limit')
|
|
183
|
+
if (line.trim()) consume(JSON.parse(line))
|
|
184
|
+
}
|
|
185
|
+
if (Buffer.byteLength(pending) > 1024 * 1024) throw new Error('Native pending frame limit')
|
|
186
|
+
} catch (error) {
|
|
187
|
+
failed = true
|
|
188
|
+
fail(error)
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
child.stdout.on('data', receive)
|
|
192
|
+
// Native errors/settings may contain credential data. Do not forward stderr.
|
|
193
|
+
child.stderr.on('data', (chunk) => {
|
|
194
|
+
bytes += chunk.length
|
|
195
|
+
if (bytes > 16 * 1024 * 1024 && !failed) {
|
|
196
|
+
failed = true
|
|
197
|
+
fail(new Error('Native stderr limit'))
|
|
198
|
+
}
|
|
199
|
+
})
|
|
200
|
+
return () => {
|
|
201
|
+
pending += decoder.end()
|
|
202
|
+
if (!failed && pending.trim()) throw new Error('Truncated native frame')
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
async function selectSession(request) {
|
|
207
|
+
const { child, done } = start(request.serverArgv, request.project, ['pipe', 'pipe', 'pipe'])
|
|
208
|
+
const pending = new Map()
|
|
209
|
+
let sequence = 0,
|
|
210
|
+
failed
|
|
211
|
+
const rejectAll = (error) => {
|
|
212
|
+
failed ??= error
|
|
213
|
+
for (const waiting of pending.values()) waiting.reject(error)
|
|
214
|
+
pending.clear()
|
|
215
|
+
}
|
|
216
|
+
const finishFrames = frames(
|
|
217
|
+
child,
|
|
218
|
+
(frame) => {
|
|
219
|
+
if (!object(frame)) throw new Error('Invalid metadata frame')
|
|
220
|
+
if (typeof frame.method === 'string') {
|
|
221
|
+
if (frame.id !== undefined)
|
|
222
|
+
child.stdin.write(
|
|
223
|
+
JSON.stringify({
|
|
224
|
+
id: frame.id,
|
|
225
|
+
...(frame.method === 'session/requestRuntimePreferences'
|
|
226
|
+
? {
|
|
227
|
+
result: {
|
|
228
|
+
nativeSearchEnhancementsEnabled: false,
|
|
229
|
+
memoryEnabled: false,
|
|
230
|
+
askUserQuestionAutoResolutionEnabled: false,
|
|
231
|
+
},
|
|
232
|
+
}
|
|
233
|
+
: {
|
|
234
|
+
error: {
|
|
235
|
+
code: -32601,
|
|
236
|
+
message: 'Interactive requests are disabled during metadata selection',
|
|
237
|
+
},
|
|
238
|
+
}),
|
|
239
|
+
}) + '\n',
|
|
240
|
+
)
|
|
241
|
+
return
|
|
242
|
+
}
|
|
243
|
+
const waiting = pending.get(frame.id)
|
|
244
|
+
if (!waiting) return
|
|
245
|
+
pending.delete(frame.id)
|
|
246
|
+
if (frame.error || !('result' in frame)) waiting.reject(new Error('Metadata request rejected'))
|
|
247
|
+
else waiting.resolve(frame.result)
|
|
248
|
+
},
|
|
249
|
+
(error) => {
|
|
250
|
+
rejectAll(error)
|
|
251
|
+
void terminate()
|
|
252
|
+
},
|
|
253
|
+
)
|
|
254
|
+
void done.then(() => rejectAll(new Error('Metadata server exited')))
|
|
255
|
+
const rpc = (method, params) =>
|
|
256
|
+
new Promise((fulfill, reject) => {
|
|
257
|
+
checkActive()
|
|
258
|
+
if (failed) {
|
|
259
|
+
reject(failed)
|
|
260
|
+
return
|
|
261
|
+
}
|
|
262
|
+
const id = `cliworker-resume-${++sequence}`
|
|
263
|
+
const abort = () => settle(reject, new Error(stoppedText))
|
|
264
|
+
const timer = setTimeout(() => settle(reject, new Error('Metadata request timeout')), 15000)
|
|
265
|
+
const settle = (callback, value) => {
|
|
266
|
+
clearTimeout(timer)
|
|
267
|
+
controller.signal.removeEventListener('abort', abort)
|
|
268
|
+
pending.delete(id)
|
|
269
|
+
callback(value)
|
|
270
|
+
}
|
|
271
|
+
pending.set(id, {
|
|
272
|
+
resolve: (value) => settle(fulfill, value),
|
|
273
|
+
reject: (error) => settle(reject, error),
|
|
274
|
+
})
|
|
275
|
+
controller.signal.addEventListener('abort', abort, { once: true })
|
|
276
|
+
if (controller.signal.aborted) {
|
|
277
|
+
abort()
|
|
278
|
+
return
|
|
279
|
+
}
|
|
280
|
+
child.stdin.write(JSON.stringify({ id, method, params }) + '\n')
|
|
281
|
+
})
|
|
282
|
+
try {
|
|
283
|
+
const resumed = await rpc('session/resume', {
|
|
284
|
+
sessionId: request.conversationId,
|
|
285
|
+
mcpServers: [],
|
|
286
|
+
toolAllowlist: [],
|
|
287
|
+
offPeakToolEnabled: false,
|
|
288
|
+
dynamicWorkflowEnabled: false,
|
|
289
|
+
})
|
|
290
|
+
if (resumed?.session?.sessionId !== request.conversationId) throw new Error('Resume identity mismatch')
|
|
291
|
+
if (!request.selection.options) {
|
|
292
|
+
const available = resumed.settings?.model?.available
|
|
293
|
+
const selected = Array.isArray(available)
|
|
294
|
+
? available.find(
|
|
295
|
+
(model) =>
|
|
296
|
+
model.ref?.providerId === request.selection.providerId &&
|
|
297
|
+
model.ref?.modelId === request.selection.modelId,
|
|
298
|
+
)
|
|
299
|
+
: undefined
|
|
300
|
+
const nativeDefault = selected?.reasoning?.defaultLevel
|
|
301
|
+
if (
|
|
302
|
+
!string(nativeDefault) ||
|
|
303
|
+
!Array.isArray(selected?.reasoning?.levels) ||
|
|
304
|
+
!selected.reasoning.levels.some((level) => level.value === nativeDefault)
|
|
305
|
+
)
|
|
306
|
+
throw new Error('Missing native reasoning default')
|
|
307
|
+
request.selection.options = { reasoningLevel: nativeDefault }
|
|
308
|
+
}
|
|
309
|
+
await rpc('session/setModel', {
|
|
310
|
+
sessionId: request.conversationId,
|
|
311
|
+
model: request.selection,
|
|
312
|
+
persistAsWorkspaceLastUsed: false,
|
|
313
|
+
})
|
|
314
|
+
const snapshot = await rpc('session/read', { sessionId: request.conversationId, messageLimit: 1 })
|
|
315
|
+
const current = snapshot?.settings?.model?.current
|
|
316
|
+
if (
|
|
317
|
+
snapshot?.session?.sessionId !== request.conversationId ||
|
|
318
|
+
current?.providerId !== request.selection.providerId ||
|
|
319
|
+
current?.modelId !== request.selection.modelId ||
|
|
320
|
+
current?.options?.reasoningLevel !== request.selection.options.reasoningLevel
|
|
321
|
+
)
|
|
322
|
+
throw new Error('Native selected model or effort mismatch')
|
|
323
|
+
const closed = await rpc('session/close', { sessionId: request.conversationId })
|
|
324
|
+
if (closed?.closed !== true) throw new Error('Session did not close')
|
|
325
|
+
child.stdin.end()
|
|
326
|
+
const timeout = setTimeout(() => {
|
|
327
|
+
rejectAll(new Error('Metadata server did not exit'))
|
|
328
|
+
void terminate()
|
|
329
|
+
}, 5000)
|
|
330
|
+
let outcome
|
|
331
|
+
try {
|
|
332
|
+
outcome = await done
|
|
333
|
+
} finally {
|
|
334
|
+
clearTimeout(timeout)
|
|
335
|
+
}
|
|
336
|
+
finishFrames()
|
|
337
|
+
if (outcome.code !== 0 || outcome.signal || stopped)
|
|
338
|
+
throw new Error('Metadata server did not exit cleanly')
|
|
339
|
+
if (active === child) {
|
|
340
|
+
active = undefined
|
|
341
|
+
activeDone = undefined
|
|
342
|
+
termination = undefined
|
|
343
|
+
}
|
|
344
|
+
} finally {
|
|
345
|
+
rejectAll(new Error('Metadata selection ended'))
|
|
346
|
+
await terminate()
|
|
347
|
+
}
|
|
348
|
+
checkActive()
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
async function runHeadless(request) {
|
|
352
|
+
const { child, done } = start(request.argv, request.project, ['ignore', 'pipe', 'pipe'])
|
|
353
|
+
let failed, terminal
|
|
354
|
+
const finishFrames = frames(
|
|
355
|
+
child,
|
|
356
|
+
(frame) => {
|
|
357
|
+
if (!object(frame) || typeof frame.type !== 'string' || terminal)
|
|
358
|
+
throw new Error('Invalid native task frame')
|
|
359
|
+
if (frame.sessionId !== undefined && frame.sessionId !== request.conversationId)
|
|
360
|
+
throw new Error('Native task session changed')
|
|
361
|
+
const payload = object(frame.payload) ? frame.payload : {}
|
|
362
|
+
if (
|
|
363
|
+
frame.type === 'session.updated' &&
|
|
364
|
+
((payload.providerId !== undefined && payload.providerId !== request.selection.providerId) ||
|
|
365
|
+
(payload.modelId !== undefined && payload.modelId !== request.selection.modelId))
|
|
366
|
+
)
|
|
367
|
+
throw new Error('Observed model differs from selected model')
|
|
368
|
+
if (frame.type === 'result') {
|
|
369
|
+
terminal = frame
|
|
370
|
+
return
|
|
371
|
+
}
|
|
372
|
+
output(
|
|
373
|
+
frame.type === 'error' || frame.type === 'turn.failed'
|
|
374
|
+
? { type: frame.type, sessionId: request.conversationId, payload: { message: failureText } }
|
|
375
|
+
: frame,
|
|
376
|
+
)
|
|
377
|
+
},
|
|
378
|
+
(error) => {
|
|
379
|
+
failed ??= error
|
|
380
|
+
void terminate()
|
|
381
|
+
},
|
|
382
|
+
)
|
|
383
|
+
const outcome = await done
|
|
384
|
+
finishFrames()
|
|
385
|
+
if (
|
|
386
|
+
failed ||
|
|
387
|
+
stopped ||
|
|
388
|
+
outcome.code !== 0 ||
|
|
389
|
+
outcome.signal ||
|
|
390
|
+
!terminal ||
|
|
391
|
+
terminal.sessionId !== request.conversationId ||
|
|
392
|
+
typeof terminal.response !== 'string'
|
|
393
|
+
)
|
|
394
|
+
throw new Error('Native task did not finish correctly')
|
|
395
|
+
output(terminal)
|
|
396
|
+
resultSent = true
|
|
397
|
+
if (active === child) {
|
|
398
|
+
active = undefined
|
|
399
|
+
activeDone = undefined
|
|
400
|
+
termination = undefined
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
let request
|
|
405
|
+
try {
|
|
406
|
+
request = await readRequest(process.argv[2])
|
|
407
|
+
checkActive()
|
|
408
|
+
await selectSession(request)
|
|
409
|
+
checkActive()
|
|
410
|
+
await runHeadless(request)
|
|
411
|
+
} catch {
|
|
412
|
+
await terminate()
|
|
413
|
+
if (!resultSent) {
|
|
414
|
+
const sessionId = request?.conversationId
|
|
415
|
+
output({
|
|
416
|
+
type: 'error',
|
|
417
|
+
...(sessionId ? { sessionId } : {}),
|
|
418
|
+
payload: { message: stopped ? stoppedText : failureText },
|
|
419
|
+
})
|
|
420
|
+
if (sessionId) output({ type: 'result', sessionId, response: '' })
|
|
421
|
+
}
|
|
422
|
+
process.exitCode = stopped ? 143 : 1
|
|
423
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,111 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-cliworker-now",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.7.7",
|
|
4
|
+
"description": "Multiple agent CLI conversations in the DeepSeek Harness sidebar",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22.19.0"
|
|
9
|
+
},
|
|
10
|
+
"main": "./lib/index.js",
|
|
11
|
+
"types": "./lib/types/host/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./lib/types/host/index.d.ts",
|
|
15
|
+
"default": "./lib/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./client": {
|
|
18
|
+
"types": "./lib/types/client/index.d.ts",
|
|
19
|
+
"default": "./lib/client.js"
|
|
20
|
+
},
|
|
21
|
+
"./typert": {
|
|
22
|
+
"types": "./lib/typert.host.d.ts",
|
|
23
|
+
"default": "./lib/typert.host.js"
|
|
24
|
+
},
|
|
25
|
+
"./remote": {
|
|
26
|
+
"types": "./lib/typert.remote-client.d.ts",
|
|
27
|
+
"default": "./lib/typert.remote-client.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"dsh": {
|
|
31
|
+
"bundle": {
|
|
32
|
+
"patch": "./cordis.patch.yml"
|
|
33
|
+
},
|
|
34
|
+
"client": {
|
|
35
|
+
"platform": "web",
|
|
36
|
+
"inject": [
|
|
37
|
+
"@deepseek-ai/dsh-api-remotes",
|
|
38
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right",
|
|
39
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
40
|
+
"@deepseek-ai/dsh-client-locale",
|
|
41
|
+
"@deepseek-ai/dsh-client-ui-theme"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@deepseek-ai/schemastery": "3.18.4",
|
|
47
|
+
"@xterm/addon-fit": "0.11.0",
|
|
48
|
+
"@xterm/xterm": "6.0.0",
|
|
49
|
+
"yaml": "2.9.1",
|
|
50
|
+
"zod": "4.4.3"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"@deepseek-ai/cordis": "4.0.4",
|
|
54
|
+
"@deepseek-ai/dsh-agent": "0.2.0-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2",
|
|
56
|
+
"@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-brand": "0.2.0-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
|
|
59
|
+
"@deepseek-ai/dsh-client-store": "0.2.0-rc.2",
|
|
60
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2",
|
|
61
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
|
|
62
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2",
|
|
64
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2",
|
|
65
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.0-rc.2",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
|
|
67
|
+
"@deepseek-ai/dsh-client-ui-theme": "0.2.0-rc.2",
|
|
68
|
+
"@deepseek-ai/dsh-jobs": "0.2.0-rc.2",
|
|
69
|
+
"@deepseek-ai/dsh-llm": "0.2.0-rc.2",
|
|
70
|
+
"@deepseek-ai/dsh-plan-mode": "0.2.0-rc.2",
|
|
71
|
+
"@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
|
|
72
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2",
|
|
73
|
+
"@deepseek-ai/dsh-scope": "0.2.0-rc.2",
|
|
74
|
+
"@deepseek-ai/dsh-session": "0.2.0-rc.2",
|
|
75
|
+
"@deepseek-ai/dsh-subprocess": "0.2.0-rc.2",
|
|
76
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2",
|
|
77
|
+
"@deepseek-ai/dsh-tools": "0.2.0-rc.2",
|
|
78
|
+
"@deepseek-ai/dsh-typert-protocol": "0.2.0-rc.2",
|
|
79
|
+
"@deepseek-ai/dsh-typert-registry": "0.2.0-rc.2",
|
|
80
|
+
"@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
|
|
81
|
+
"@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
|
|
82
|
+
"@deepseek-ai/dsh-util-values": "0.2.0-rc.2",
|
|
83
|
+
"@deepseek-ai/dsh-workspace": "0.2.0-rc.2",
|
|
84
|
+
"react": "^18.2.0",
|
|
85
|
+
"react-dom": "^18.2.0"
|
|
86
|
+
},
|
|
87
|
+
"files": [
|
|
88
|
+
"lib",
|
|
89
|
+
"!lib/*.tsbuildinfo",
|
|
90
|
+
"cordis.patch.yml",
|
|
91
|
+
"README.md",
|
|
92
|
+
"README.en.md",
|
|
93
|
+
"lib/typert.host.js",
|
|
94
|
+
"lib/typert.host.d.ts",
|
|
95
|
+
"lib/typert.remote-client.js",
|
|
96
|
+
"lib/typert.remote-client.d.ts"
|
|
97
|
+
],
|
|
98
|
+
"private": false,
|
|
99
|
+
"repository": {
|
|
100
|
+
"type": "git",
|
|
101
|
+
"url": "git+https://github.com/SuperWheel/cliworker-now.git"
|
|
102
|
+
},
|
|
103
|
+
"bugs": {
|
|
104
|
+
"url": "https://github.com/SuperWheel/cliworker-now/issues"
|
|
105
|
+
},
|
|
106
|
+
"homepage": "https://github.com/SuperWheel/cliworker-now#readme",
|
|
107
|
+
"publishConfig": {
|
|
108
|
+
"access": "public",
|
|
109
|
+
"registry": "https://registry.npmjs.org/"
|
|
110
|
+
}
|
|
111
|
+
}
|