From 30c65c3f38712ffa7a33dbb7fdfe35f4d803ad0e Mon Sep 17 00:00:00 2001 From: knqiufan Date: Fri, 4 Sep 2026 12:59:52 +0800 Subject: [PATCH 1/5] fix(dsh): handle Scope failures at tool and command boundaries --- docs/en/docs/how-to/configure-dsh.md | 29 ++ docs/zh/docs/how-to/configure-dsh.md | 27 ++ .../dsh/plugins/powercontext/lib/index.js | 360 ++++++++++++------ .../dsh/plugins/powercontext/src/commands.ts | 75 ++-- .../plugins/powercontext/src/diagnostics.ts | 35 +- .../dsh/plugins/powercontext/src/errors.ts | 6 +- .../dsh/plugins/powercontext/src/index.ts | 2 +- .../dsh/plugins/powercontext/src/invoke.ts | 38 +- .../dsh/plugins/powercontext/src/scope.ts | 3 +- .../dsh/plugins/powercontext/src/tools.ts | 13 +- .../powercontext/tests/commands.spec.ts | 4 +- .../tests/direct-failures.spec.ts | 288 ++++++++++++++ .../tests/e2e/unscoped-session.spec.ts | 27 +- .../plugins/powercontext/tests/scope.spec.ts | 4 +- 14 files changed, 740 insertions(+), 171 deletions(-) create mode 100644 integrations/dsh/plugins/powercontext/tests/direct-failures.spec.ts diff --git a/docs/en/docs/how-to/configure-dsh.md b/docs/en/docs/how-to/configure-dsh.md index da5486c95..d6b6ab70d 100644 --- a/docs/en/docs/how-to/configure-dsh.md +++ b/docs/en/docs/how-to/configure-dsh.md @@ -36,6 +36,35 @@ workspace therefore uses the Server default instead of the Harness process direc The plugin calls `POST /v1/context/prepare` once before the model analyzes the prompt. Explicit `remember_memory` calls do not require a model. +## Diagnose direct tool and command failures + +Named tools and Scope-dependent `/pc` commands return a controlled failure if Scope resolution fails. They stop before +the requested operation, without creating a binding or retrying with another Scope. Cancellation and the existing +per-request timeout also apply to Scope resolution. + +Inside DeepSeek Harness: + +- `/pc doctor` checks liveness and readiness independently of Scope resolution and reports both results. +- `/pc capabilities` queries the Server capabilities without resolving a Scope. +- Unknown subcommands and missing arguments return local usage help without contacting the Server. +- Bare `/pc` shows the resolved Scope and Server origin. If resolution fails, it returns an error while still showing + `scope=unresolved`, a controlled error, and the `/pc doctor` recovery hint. Configured Scope IDs are not reported as + resolved. The displayed origin omits credentials, paths, query strings, and fragments. +- `search`, `remember`, `flush`, `review`, `skills scan`, and `stats` require a resolved Scope. `stats` queries that Scope. + +| Result code | Meaning | +| --- | --- | +| `not_found` | A business 404. The optional `error_code` preserves a recognized public reason, such as `scope_not_found` or `memory_not_found`. | +| `version_mismatch` | A required endpoint returned 404 without a business code. Check the Server endpoint and plugin/Server compatibility; this does not establish a particular deployment cause. | +| `authentication_failed` | The Server returned 401. Check the configured Authorization header. | +| `unavailable` | Connection failure, timeout, cancellation, or HTTP 503. Native diagnostics use `server_unavailable`. | +| `unscoped` | The resolver completed without a Scope. | +| `invalid_response` | The client detected an invalid Server response. | + +Existing conflict and validation codes, such as `revision_conflict` and `invalid_request`, retain their meaning. Failure +results preserve available HTTP status and request ID, but use fixed messages instead of Server-provided text. Unknown +error codes are omitted from `error_code` and diagnostics; their presence alone does not imply a version mismatch. + ## Control prompt capture Prompt capture is enabled by default. Disable it before starting DeepSeek Harness when the current work must not be recorded: diff --git a/docs/zh/docs/how-to/configure-dsh.md b/docs/zh/docs/how-to/configure-dsh.md index 3bdc498dc..80228809d 100644 --- a/docs/zh/docs/how-to/configure-dsh.md +++ b/docs/zh/docs/how-to/configure-dsh.md @@ -36,6 +36,33 @@ Server 管理的 Scope。workspace 路径只会哈希为外部 binding key。缺 插件在模型分析提示词前只调用一次 `POST /v1/context/prepare`。显式 `remember_memory` 不需要模型。 +## 排查工具和命令的直接调用失败 + +Scope 解析失败时,具名工具和依赖 Scope 的 `/pc` 命令会返回受控失败,并在执行请求的操作前停止。 +插件不会因此创建 binding 或换用其他 Scope 重试。取消信号和现有的单请求超时也适用于 Scope 解析。 + +在 DeepSeek Harness 内: + +- `/pc doctor` 不依赖 Scope 解析,继续检查 liveness 和 readiness,并保留两个检查结果。 +- `/pc capabilities` 直接查询 Server 能力,无需解析 Scope。 +- 未知子命令或缺少参数时,在本地返回用法说明,不访问 Server。 +- 裸 `/pc` 显示已解析的 Scope 和 Server origin。解析失败时返回错误,但仍显示 `scope=unresolved`、受控错误信息 + 和 `/pc doctor` 恢复提示。配置中的 Scope ID 不会被当作已解析成功;显示的 origin 不包含凭据、路径、查询参数和 fragment。 +- `search`、`remember`、`flush`、`review`、`skills scan` 和 `stats` 必须成功解析 Scope;`stats` 仅查询当前 Scope。 + +| 结果 code | 含义 | +| --- | --- | +| `not_found` | 业务 404。可选的 `error_code` 保留已识别的公开原因,例如 `scope_not_found` 或 `memory_not_found`。 | +| `version_mismatch` | 必需端点返回了没有业务码的 404。应检查 Server 端点和插件、Server 的兼容性;该结果不能证明具体的部署原因。 | +| `authentication_failed` | Server 返回 401,应检查 Authorization 配置。 | +| `unavailable` | 连接失败、超时、取消或 HTTP 503。原生诊断使用 `server_unavailable`。 | +| `unscoped` | resolver 执行完成,但没有返回 Scope。 | +| `invalid_response` | 客户端识别到无效的 Server 响应。 | + +已有冲突和校验错误码(如 `revision_conflict`、`invalid_request`)保持原有含义。失败结果保留可用的 HTTP status 和 +request ID,提示文字使用固定内容,不透传 Server message。未知错误码不会出现在 `error_code` 或诊断中, +也不会仅因无法识别就被判为版本不匹配。 + ## 控制提示词采集 默认开启提示词采集。如果当前工作不应被记录,请在启动 DeepSeek Harness 前关闭: diff --git a/integrations/dsh/plugins/powercontext/lib/index.js b/integrations/dsh/plugins/powercontext/lib/index.js index 6699c7bb1..e202d2ae9 100644 --- a/integrations/dsh/plugins/powercontext/lib/index.js +++ b/integrations/dsh/plugins/powercontext/lib/index.js @@ -70,7 +70,7 @@ var ServerResponseError = class extends ClientError { code; serverMessage; constructor(options) { - const suffix = options.code ? ` (${options.code})` : ""; + const suffix = typeof options.code === "string" ? ` (${options.code})` : ""; super(`PowerContext Server returned HTTP ${options.statusCode}${suffix}`, options.requestId); this.statusCode = options.statusCode; this.path = options.path ?? ""; @@ -1176,6 +1176,136 @@ function requireService(ctx, name$1) { return service; } +//#endregion +//#region src/diagnostics.ts +const COMPATIBILITY_OR_AVAILABILITY_PATHS = new Set([ + "/health/live", + "/health/ready", + "/v1/capabilities", + "/v1/context/prepare", + "/v1/scope-bindings/resolve" +]); +const PUBLIC_ERROR_CODES = new Set([ + "not_found", + "scope_not_found", + "memory_not_found", + "artifact_not_found", + "candidate_not_found", + "handoff_evidence_not_found", + "source_definition_not_found", + "external_skill_not_found", + "conflict", + "revision_conflict", + "memory_entry_inactive", + "source_conflict", + "candidate_conflict", + "artifact_conflict", + "candidate_terminal", + "scope_version_conflict", + "scope_idempotency_conflict", + "artifact_publication_conflict", + "connector_checkpoint_conflict", + "generation_conflict", + "external_skill_snapshot_unavailable", + "handoff_report_inconsistent", + "invalid_request", + "invalid_scope_relationship", + "invalid_source_ingestion", + "invalid_lifecycle", + "artifact_publication_unsupported", + "capability_not_supported", + "unauthorized", + "forbidden", + "authentication_failed", + "runtime_not_ready", + "generation_unavailable", + "inference_timeout", + "inference_unavailable", + "handoff_generation_unavailable", + "external_skill_registry_unavailable", + "handoff_report_unavailable", + "handoff_report_too_large", + "invalid_handoff_generation", + "remote_skill_distribution_error", + "invalid_target_credential", + "invalid_enrollment", + "invalid_target_state", + "publication_generation_conflict", + "invalid_skill_lifecycle", + "internal_error" +]); +function publicErrorCode(code) { + return typeof code === "string" && PUBLIC_ERROR_CODES.has(code) ? code : void 0; +} +function isVersionMismatch(error) { + return error.statusCode === 404 && error.code === void 0 && COMPATIBILITY_OR_AVAILABILITY_PATHS.has(error.path); +} +const AUTOMATIC_OPERATION_PATHS = new Map([ + ["context_prepare", "/v1/context/prepare"], + ["capture_content_source", "/v1/sources/content"], + ["flush_memory", "/v1/memory/flush"] +]); +function responseDiagnostic(event, outcome, error) { + const code = publicErrorCode(error.code); + return { + event, + outcome, + http_status: error.statusCode, + ...code ? { error_code: code } : {} + }; +} +function isDomainStatus(status) { + return status === 404 || status === 409 || status === 422; +} +function failureEvent(event, error) { + if (error instanceof ServerResponseError) { + if (error.statusCode === 401) return responseDiagnostic(event, "authentication_failed", error); + if (isVersionMismatch(error)) return responseDiagnostic(event, "version_mismatch", error); + if (error.statusCode === 503) return { + ...responseDiagnostic(event, "server_unavailable", error), + recovery: "powercontext doctor" + }; + if (isDomainStatus(error.statusCode) && AUTOMATIC_OPERATION_PATHS.get(event) !== error.path) return void 0; + return responseDiagnostic(event, "invalid_response", error); + } + if (error instanceof TransportError) return { + event, + outcome: "server_unavailable", + recovery: "powercontext doctor" + }; + if (error instanceof InvalidResponseError) return { + event, + outcome: "invalid_response" + }; + return { + event, + outcome: "invalid_response" + }; +} +function createDiagnosticEmitter(write, now = Date.now, cooldownMs = 6e4) { + const lastEmitted = /* @__PURE__ */ new Map(); + return (event) => { + const outcome = typeof event.outcome === "string" ? event.outcome : void 0; + const normalized = { + ...event, + ...outcome === "server_unavailable" && event.recovery === void 0 ? { recovery: "powercontext doctor" } : {} + }; + if (outcome && ![ + "ready", + "ok", + "empty", + "skipped" + ].includes(outcome)) { + const key = outcome; + const timestamp = now(); + const previous = lastEmitted.get(key); + if (previous !== void 0 && timestamp - previous < cooldownMs) return; + lastEmitted.set(key, timestamp); + } + write(JSON.stringify(normalized)); + }; +} + //#endregion //#region src/secrets.ts const SECRET_MARKERS = [ @@ -1204,6 +1334,7 @@ function toolResultSchema() { required: true }, code: { type: "string" }, + error_code: { type: "string" }, message: { type: "string" }, status: { type: "number" }, request_id: { type: "string" }, @@ -1221,6 +1352,7 @@ function renderToolResult(_args, value) { }]; } function mapServerError(error) { + const code = publicErrorCode(error.code); if (error.statusCode === 401) return { ok: false, code: "authentication_failed", @@ -1228,24 +1360,34 @@ function mapServerError(error) { status: 401, request_id: error.requestId }; - if (error.statusCode === 404) return { - ok: false, - code: "not_found", - message: error.serverMessage ?? "PowerContext resource was not found.", - status: 404, - request_id: error.requestId - }; + if (error.statusCode === 404) { + if (isVersionMismatch(error)) return { + ok: false, + code: "version_mismatch", + message: "A required PowerContext endpoint is unavailable. Check the Server endpoint and compatible plugin/Server versions.", + status: 404, + request_id: error.requestId + }; + return { + ok: false, + code: "not_found", + ...code ? { error_code: code } : {}, + message: code === "scope_not_found" ? "PowerContext could not resolve the requested Scope. Check its configuration." : "PowerContext resource was not found.", + status: 404, + request_id: error.requestId + }; + } if (error.statusCode === 409) return { ok: false, - code: error.code ?? "conflict", - message: error.serverMessage ?? "citation conflict; refresh and retry once.", + code: code ?? "conflict", + message: "PowerContext operation conflicts with the current state. Inspect the current reference before retrying.", status: 409, request_id: error.requestId }; if (error.statusCode === 422) return { ok: false, - code: error.code ?? "invalid_request", - message: error.serverMessage ?? "PowerContext rejected the request.", + code: code ?? "invalid_request", + message: "PowerContext rejected the request.", status: 422, request_id: error.requestId }; @@ -1258,7 +1400,7 @@ function mapServerError(error) { }; return { ok: false, - code: error.code ?? "server_error", + code: code ?? "server_error", message: "PowerContext is unavailable, continue the task.", status: error.statusCode, request_id: error.requestId @@ -1276,6 +1418,12 @@ function toToolResult(error) { message: error.message }; if (error instanceof ServerResponseError) return mapServerError(error); + if (error instanceof InvalidResponseError) return { + ok: false, + code: "invalid_response", + message: "PowerContext returned an invalid response.", + request_id: error.requestId + }; if (error instanceof TransportError) return { ok: false, code: "unavailable", @@ -1321,18 +1469,29 @@ function encodeSuccess(result) { data: result.value }; } -async function invokeOperation(client, operationId, payload, scopeId, signal) { +async function invokeOperation(client, operationId, payload, scopeId, signal, onFailure) { if (!(operationId in OPERATIONS)) return toToolResult(new UnknownOperationError(operationId)); const id = operationId; const body = injectScope(id, payload, scopeId); if (WRITE_OPS.has(id) && typeof body?.text === "string" && containsSecret(body.text)) return toToolResult(new SecretRejectedError()); if (WRITE_OPS.has(id) && typeof body?.content === "string" && containsSecret(body.content)) return toToolResult(new SecretRejectedError()); try { + if (signal?.aborted) throw new TransportError("", signal.reason); return encodeSuccess(await client.request(id, body, signal)); } catch (error) { + try { + await onFailure?.(error); + } catch {} return toToolResult(error); } } +async function reportDirectFailure(runtime, event, error) { + try { + const diagnostic = failureEvent(event, error); + if (diagnostic) await runtime.log(diagnostic); + } catch {} + return toToolResult(error); +} //#endregion //#region src/scope.ts @@ -1348,12 +1507,12 @@ function workspaceBindingKey(cwd) { external_id: createHash("sha256").update(resolve(cwd)).digest("hex") }; } -async function resolveScopeId(client, cwd, configuredScopeId) { +async function resolveScopeId(client, cwd, configuredScopeId, signal) { const workspace = sessionCwd(cwd); const value = (await client.request("resolve_scope_binding", { explicit_scope_id: configuredScopeId, binding_keys: workspace ? [workspaceBindingKey(workspace)] : [] - })).value; + }, signal)).value; const scopeId = value && typeof value === "object" ? value.scope_id : void 0; return typeof scopeId === "string" && scopeId.trim() ? scopeId : void 0; } @@ -1369,12 +1528,22 @@ function asResult(result) { text: formatResult(result) }; } -async function call(runtime, scopeId, operationId, payload, signal) { - return asResult(await invokeOperation(runtime.client, operationId, payload, scopeId, signal)); +async function call(runtime, cwd, operationId, payload, signal) { + try { + const scopeId = await runtime.resolveScope(cwd, signal); + if (!scopeId) return asResult({ + ok: false, + code: "unscoped", + message: UNSCOPED_MESSAGE + }); + return asResult(await invokeOperation(runtime.client, operationId, payload, scopeId, signal, (error) => reportDirectFailure(runtime, "command", error))); + } catch (error) { + return asResult(await reportDirectFailure(runtime, "command", error)); + } } -async function handleReview(tokens, runtime, scopeId, signal) { +async function handleReview(tokens, runtime, cwd, signal) { const action = tokens[1]; - if (!action) return call(runtime, scopeId, "list_artifact_candidates", { status: "pending" }, signal); + if (!action) return call(runtime, cwd, "list_artifact_candidates", { status: "pending" }, signal); if (action === "approve") { const candidateId = tokens[2]; const version = Number(tokens[3]); @@ -1382,7 +1551,7 @@ async function handleReview(tokens, runtime, scopeId, signal) { kind: "error", text: "Usage: /pc review approve " }; - return call(runtime, scopeId, "approve_artifact_candidate", { + return call(runtime, cwd, "approve_artifact_candidate", { candidate_id: candidateId, expected_version: version }, signal); @@ -1395,7 +1564,7 @@ async function handleReview(tokens, runtime, scopeId, signal) { kind: "error", text: "Usage: /pc review reject " }; - return call(runtime, scopeId, "reject_artifact_candidate", { + return call(runtime, cwd, "reject_artifact_candidate", { candidate_id: candidateId, expected_version: version, reason @@ -1407,8 +1576,9 @@ async function handleReview(tokens, runtime, scopeId, signal) { }; } async function handleDoctor(runtime, signal) { - const live = await invokeOperation(runtime.client, "get_liveness", {}, runtime.config.scopeId ?? "", signal); - const ready = await invokeOperation(runtime.client, "get_readiness", {}, runtime.config.scopeId ?? "", signal); + const onFailure = (error) => reportDirectFailure(runtime, "command", error); + const live = await invokeOperation(runtime.client, "get_liveness", {}, "", signal, onFailure); + const ready = await invokeOperation(runtime.client, "get_readiness", {}, "", signal, onFailure); return { kind: live.ok && ready.ok ? "success" : "error", text: formatResult({ @@ -1420,13 +1590,29 @@ async function handleDoctor(runtime, signal) { }) }; } -async function handlePcCommand(rawInput, runtime, scopeId, signal) { +function statusResult(runtime, scopeId, failure) { + let endpoint = "(invalid URL)"; + try { + endpoint = new URL(runtime.config.baseUrl).origin; + } catch {} + return { + kind: failure ? "error" : "success", + text: `scope=${scopeId ?? "unresolved"}\nbaseUrl=${endpoint}\nUse /pc doctor to check Server readiness.` + (failure ? `\n${formatResult(failure)}` : "") + }; +} +async function handlePcCommand(rawInput, runtime, cwd, signal) { const tokens = rawInput.trim().split(/\s+/).filter(Boolean); const command = tokens[0]; - if (!command) return { - kind: "success", - text: `scope=${scopeId}\nbaseUrl=${runtime.config.baseUrl}\nUse /pc doctor to check Server readiness.` - }; + if (!command) try { + const scopeId = await runtime.resolveScope(cwd, signal); + return statusResult(runtime, scopeId, scopeId ? void 0 : { + ok: false, + code: "unscoped", + message: UNSCOPED_MESSAGE + }); + } catch (error) { + return statusResult(runtime, void 0, await reportDirectFailure(runtime, "command", error)); + } if (command === "doctor") return handleDoctor(runtime, signal); if (command === "search") { const query = tokens.slice(1).join(" "); @@ -1434,7 +1620,7 @@ async function handlePcCommand(rawInput, runtime, scopeId, signal) { kind: "error", text: "Usage: /pc search " }; - return call(runtime, scopeId, "search_memory", { + return call(runtime, cwd, "search_memory", { query, limit: 8, mode: "auto" @@ -1446,22 +1632,22 @@ async function handlePcCommand(rawInput, runtime, scopeId, signal) { kind: "error", text: "Usage: /pc remember " }; - return call(runtime, scopeId, "remember_memory", { + return call(runtime, cwd, "remember_memory", { kind: "agent-note", text }, signal); } - if (command === "flush") return call(runtime, scopeId, "flush_memory", {}, signal); - if (command === "review") return handleReview(tokens, runtime, scopeId, signal); + if (command === "flush") return call(runtime, cwd, "flush_memory", {}, signal); + if (command === "review") return handleReview(tokens, runtime, cwd, signal); if (command === "skills") { - if (tokens[1] === "scan") return call(runtime, scopeId, "scan_external_skills", {}, signal); + if (tokens[1] === "scan") return call(runtime, cwd, "scan_external_skills", {}, signal); return { kind: "error", text: "Usage: /pc skills scan" }; } - if (command === "stats") return call(runtime, scopeId, "get_stats", {}, signal); - if (command === "capabilities") return call(runtime, scopeId, "get_capabilities", {}, signal); + if (command === "stats") return call(runtime, cwd, "get_stats", {}, signal); + if (command === "capabilities") return asResult(await invokeOperation(runtime.client, "get_capabilities", {}, "", signal, (error) => reportDirectFailure(runtime, "command", error))); return { kind: "error", text: "Unknown /pc subcommand. Try doctor, search, remember, flush, review, stats, capabilities, skills scan." @@ -1471,14 +1657,7 @@ function registerCommands(ctx, runtime) { requireService(ctx, "commands").register({ name: "pc", description: "PowerContext status, search, review, and diagnostics", - handler: async (invocation) => { - const scopeId = await runtime.resolveScope(invocation.agent.session.header.cwd); - if (!scopeId) return { - kind: "error", - text: UNSCOPED_MESSAGE - }; - return handlePcCommand(invocation.rawInput, runtime, scopeId, invocation.signal); - } + handler: async (invocation) => handlePcCommand(invocation.rawInput, runtime, invocation.agent.session.header.cwd, invocation.signal) }); } @@ -1538,79 +1717,6 @@ function resolveConfig(config = {}, env = process.env) { }; } -//#endregion -//#region src/diagnostics.ts -const COMPATIBILITY_OR_AVAILABILITY_PATHS = new Set([ - "/health/live", - "/health/ready", - "/v1/capabilities", - "/v1/context/prepare" -]); -const AUTOMATIC_OPERATION_PATHS = new Map([ - ["context_prepare", "/v1/context/prepare"], - ["capture_content_source", "/v1/sources/content"], - ["flush_memory", "/v1/memory/flush"] -]); -function responseDiagnostic(event, outcome, error) { - return { - event, - outcome, - http_status: error.statusCode, - ...error.code ? { error_code: error.code } : {} - }; -} -function isDomainStatus(status) { - return status === 404 || status === 409 || status === 422; -} -function failureEvent(event, error) { - if (error instanceof ServerResponseError) { - if (error.statusCode === 401) return responseDiagnostic(event, "authentication_failed", error); - if (error.statusCode === 404 && COMPATIBILITY_OR_AVAILABILITY_PATHS.has(error.path) && error.code === void 0) return responseDiagnostic(event, "version_mismatch", error); - if (error.statusCode === 503) return { - ...responseDiagnostic(event, "server_unavailable", error), - recovery: "powercontext doctor" - }; - if (isDomainStatus(error.statusCode) && AUTOMATIC_OPERATION_PATHS.get(event) !== error.path) return void 0; - return responseDiagnostic(event, "invalid_response", error); - } - if (error instanceof TransportError) return { - event, - outcome: "server_unavailable", - recovery: "powercontext doctor" - }; - if (error instanceof InvalidResponseError) return { - event, - outcome: "invalid_response" - }; - return { - event, - outcome: "invalid_response" - }; -} -function createDiagnosticEmitter(write, now = Date.now, cooldownMs = 6e4) { - const lastEmitted = /* @__PURE__ */ new Map(); - return (event) => { - const outcome = typeof event.outcome === "string" ? event.outcome : void 0; - const normalized = { - ...event, - ...outcome === "server_unavailable" && event.recovery === void 0 ? { recovery: "powercontext doctor" } : {} - }; - if (outcome && ![ - "ready", - "ok", - "empty", - "skipped" - ].includes(outcome)) { - const key = outcome; - const timestamp = now(); - const previous = lastEmitted.get(key); - if (previous !== void 0 && timestamp - previous < cooldownMs) return; - lastEmitted.set(key, timestamp); - } - write(JSON.stringify(normalized)); - }; -} - //#endregion //#region src/peers.ts function profileNodeModulesDir(env = process.env) { @@ -1955,13 +2061,17 @@ function citationParam(description) { }; } async function run(runtime, exec, operationId, payload) { - const scopeId = await runtime.resolveScope(sessionCwd(exec.agent?.session.header.cwd)); - if (!scopeId) return { - ok: false, - code: "unscoped", - message: UNSCOPED_MESSAGE - }; - return invokeOperation(runtime.client, operationId, payload, scopeId, exec.signal); + try { + const scopeId = await runtime.resolveScope(sessionCwd(exec.agent?.session.header.cwd), exec.signal); + if (!scopeId) return { + ok: false, + code: "unscoped", + message: UNSCOPED_MESSAGE + }; + return await invokeOperation(runtime.client, operationId, payload, scopeId, exec.signal, (error) => reportDirectFailure(runtime, "tool_call", error)); + } catch (error) { + return reportDirectFailure(runtime, "tool_call", error); + } } function present(title, kind) { return (args) => ({ @@ -2431,7 +2541,7 @@ function createRuntime(ctx, config) { return { client, config: resolved, - resolveScope: (cwd) => resolveScopeId(client, cwd, resolved.scopeId), + resolveScope: (cwd, signal) => resolveScopeId(client, cwd, resolved.scopeId, signal), log: (event) => { const line = JSON.stringify({ component: "powercontext.dsh", diff --git a/integrations/dsh/plugins/powercontext/src/commands.ts b/integrations/dsh/plugins/powercontext/src/commands.ts index 597fdefd0..c2765b59f 100644 --- a/integrations/dsh/plugins/powercontext/src/commands.ts +++ b/integrations/dsh/plugins/powercontext/src/commands.ts @@ -16,7 +16,7 @@ import type { JsonObject } from './client.ts' import { requireService } from './dsh-service.ts' -import { invokeOperation, type PluginRuntime, type ToolResult } from './invoke.ts' +import { invokeOperation, reportDirectFailure, type PluginRuntime, type ToolResult } from './invoke.ts' import { UNSCOPED_MESSAGE } from './scope.ts' export interface CommandResult { @@ -34,29 +34,36 @@ function asResult(result: ToolResult): CommandResult { async function call( runtime: PluginRuntime, - scopeId: string, + cwd: string | undefined, operationId: string, payload: JsonObject, signal?: AbortSignal, ): Promise { - return asResult(await invokeOperation(runtime.client, operationId, payload, scopeId, signal)) + try { + const scopeId = await runtime.resolveScope(cwd, signal) + if (!scopeId) return asResult({ ok: false, code: 'unscoped', message: UNSCOPED_MESSAGE }) + return asResult(await invokeOperation(runtime.client, operationId, payload, scopeId, signal, + error => reportDirectFailure(runtime, 'command', error))) + } catch (error) { + return asResult(await reportDirectFailure(runtime, 'command', error)) + } } async function handleReview( tokens: string[], runtime: PluginRuntime, - scopeId: string, + cwd: string | undefined, signal?: AbortSignal, ): Promise { const action = tokens[1] - if (!action) return call(runtime, scopeId, 'list_artifact_candidates', { status: 'pending' }, signal) + if (!action) return call(runtime, cwd, 'list_artifact_candidates', { status: 'pending' }, signal) if (action === 'approve') { const candidateId = tokens[2] const version = Number(tokens[3]) if (!candidateId || !Number.isInteger(version)) { return { kind: 'error', text: 'Usage: /pc review approve ' } } - return call(runtime, scopeId, 'approve_artifact_candidate', { candidate_id: candidateId, expected_version: version }, signal) + return call(runtime, cwd, 'approve_artifact_candidate', { candidate_id: candidateId, expected_version: version }, signal) } if (action === 'reject') { const candidateId = tokens[2] @@ -65,7 +72,7 @@ async function handleReview( if (!candidateId || !Number.isInteger(version) || !reason) { return { kind: 'error', text: 'Usage: /pc review reject ' } } - return call(runtime, scopeId, 'reject_artifact_candidate', { + return call(runtime, cwd, 'reject_artifact_candidate', { candidate_id: candidateId, expected_version: version, reason, }, signal) } @@ -73,44 +80,64 @@ async function handleReview( } async function handleDoctor(runtime: PluginRuntime, signal?: AbortSignal): Promise { - const live = await invokeOperation(runtime.client, 'get_liveness', {}, runtime.config.scopeId ?? '', signal) - const ready = await invokeOperation(runtime.client, 'get_readiness', {}, runtime.config.scopeId ?? '', signal) + const onFailure = (error: unknown) => reportDirectFailure(runtime, 'command', error) + const live = await invokeOperation(runtime.client, 'get_liveness', {}, '', signal, onFailure) + const ready = await invokeOperation(runtime.client, 'get_readiness', {}, '', signal, onFailure) return { kind: live.ok && ready.ok ? 'success' : 'error', text: formatResult({ ok: live.ok && ready.ok, data: { live, ready } }) } } +function statusResult(runtime: PluginRuntime, scopeId?: string, failure?: ToolResult): CommandResult { + let endpoint = '(invalid URL)' + try { + // Display the origin only: credentials, paths, query strings and fragments can contain secrets. + endpoint = new URL(runtime.config.baseUrl).origin + } catch { /* Do not echo an invalid configuration value. */ } + return { + kind: failure ? 'error' : 'success', + text: `scope=${scopeId ?? 'unresolved'}\nbaseUrl=${endpoint}\nUse /pc doctor to check Server readiness.` + + (failure ? `\n${formatResult(failure)}` : ''), + } +} + export async function handlePcCommand( rawInput: string, runtime: PluginRuntime, - scopeId: string, + cwd?: string, signal?: AbortSignal, ): Promise { const tokens = rawInput.trim().split(/\s+/).filter(Boolean) const command = tokens[0] if (!command) { - return { - kind: 'success', - text: `scope=${scopeId}\nbaseUrl=${runtime.config.baseUrl}\nUse /pc doctor to check Server readiness.`, + try { + const scopeId = await runtime.resolveScope(cwd, signal) + return statusResult(runtime, scopeId, + scopeId ? undefined : { ok: false, code: 'unscoped', message: UNSCOPED_MESSAGE }) + } catch (error) { + return statusResult(runtime, undefined, await reportDirectFailure(runtime, 'command', error)) } } if (command === 'doctor') return handleDoctor(runtime, signal) if (command === 'search') { const query = tokens.slice(1).join(' ') if (!query) return { kind: 'error', text: 'Usage: /pc search ' } - return call(runtime, scopeId, 'search_memory', { query, limit: 8, mode: 'auto' }, signal) + return call(runtime, cwd, 'search_memory', { query, limit: 8, mode: 'auto' }, signal) } if (command === 'remember') { const text = tokens.slice(1).join(' ') if (!text) return { kind: 'error', text: 'Usage: /pc remember ' } - return call(runtime, scopeId, 'remember_memory', { kind: 'agent-note', text }, signal) + return call(runtime, cwd, 'remember_memory', { kind: 'agent-note', text }, signal) } - if (command === 'flush') return call(runtime, scopeId, 'flush_memory', {}, signal) - if (command === 'review') return handleReview(tokens, runtime, scopeId, signal) + if (command === 'flush') return call(runtime, cwd, 'flush_memory', {}, signal) + if (command === 'review') return handleReview(tokens, runtime, cwd, signal) if (command === 'skills') { - if (tokens[1] === 'scan') return call(runtime, scopeId, 'scan_external_skills', {}, signal) + if (tokens[1] === 'scan') return call(runtime, cwd, 'scan_external_skills', {}, signal) return { kind: 'error', text: 'Usage: /pc skills scan' } } - if (command === 'stats') return call(runtime, scopeId, 'get_stats', {}, signal) - if (command === 'capabilities') return call(runtime, scopeId, 'get_capabilities', {}, signal) + if (command === 'stats') return call(runtime, cwd, 'get_stats', {}, signal) + if (command === 'capabilities') { + return asResult(await invokeOperation(runtime.client, 'get_capabilities', {}, '', signal, + error => reportDirectFailure(runtime, 'command', error))) + } return { kind: 'error', text: 'Unknown /pc subcommand. Try doctor, search, remember, flush, review, stats, capabilities, skills scan.' } } @@ -128,10 +155,8 @@ export function registerCommands( commands.register({ name: 'pc', description: 'PowerContext status, search, review, and diagnostics', - handler: async (invocation) => { - const scopeId = await runtime.resolveScope(invocation.agent.session.header.cwd) - if (!scopeId) return { kind: 'error', text: UNSCOPED_MESSAGE } - return handlePcCommand(invocation.rawInput, runtime, scopeId, invocation.signal) - }, + handler: async (invocation) => handlePcCommand( + invocation.rawInput, runtime, invocation.agent.session.header.cwd, invocation.signal, + ), }) } diff --git a/integrations/dsh/plugins/powercontext/src/diagnostics.ts b/integrations/dsh/plugins/powercontext/src/diagnostics.ts index 6c9e233fa..bc554684c 100644 --- a/integrations/dsh/plugins/powercontext/src/diagnostics.ts +++ b/integrations/dsh/plugins/powercontext/src/diagnostics.ts @@ -30,8 +30,38 @@ const COMPATIBILITY_OR_AVAILABILITY_PATHS = new Set([ '/health/ready', '/v1/capabilities', '/v1/context/prepare', + '/v1/scope-bindings/resolve', ]) +// Only public protocol codes may cross the diagnostic/model boundary. +const PUBLIC_ERROR_CODES = new Set([ + 'not_found', 'scope_not_found', 'memory_not_found', 'artifact_not_found', + 'candidate_not_found', 'handoff_evidence_not_found', 'source_definition_not_found', + 'external_skill_not_found', 'conflict', 'revision_conflict', 'memory_entry_inactive', + 'source_conflict', 'candidate_conflict', 'artifact_conflict', 'candidate_terminal', + 'scope_version_conflict', 'scope_idempotency_conflict', 'artifact_publication_conflict', + 'connector_checkpoint_conflict', 'generation_conflict', 'external_skill_snapshot_unavailable', + 'handoff_report_inconsistent', 'invalid_request', 'invalid_scope_relationship', + 'invalid_source_ingestion', 'invalid_lifecycle', 'artifact_publication_unsupported', + 'capability_not_supported', 'unauthorized', 'forbidden', 'authentication_failed', + 'runtime_not_ready', 'generation_unavailable', 'inference_timeout', 'inference_unavailable', + 'handoff_generation_unavailable', 'external_skill_registry_unavailable', + 'handoff_report_unavailable', 'handoff_report_too_large', 'invalid_handoff_generation', + 'remote_skill_distribution_error', 'invalid_target_credential', 'invalid_enrollment', + 'invalid_target_state', 'publication_generation_conflict', 'invalid_skill_lifecycle', + 'internal_error', +]) + +export function publicErrorCode(code: unknown): string | undefined { + return typeof code === 'string' && PUBLIC_ERROR_CODES.has(code) ? code : undefined +} + +export function isVersionMismatch(error: ServerResponseError): boolean { + return error.statusCode === 404 + && error.code === undefined + && COMPATIBILITY_OR_AVAILABILITY_PATHS.has(error.path) +} + const AUTOMATIC_OPERATION_PATHS = new Map([ ['context_prepare', '/v1/context/prepare'], ['capture_content_source', '/v1/sources/content'], @@ -39,11 +69,12 @@ const AUTOMATIC_OPERATION_PATHS = new Map([ ]) function responseDiagnostic(event: string, outcome: string, error: ServerResponseError): DiagnosticEvent { + const code = publicErrorCode(error.code) return { event, outcome, http_status: error.statusCode, - ...(error.code ? { error_code: error.code } : {}), + ...(code ? { error_code: code } : {}), } } @@ -54,7 +85,7 @@ function isDomainStatus(status: number): boolean { export function failureEvent(event: string, error: unknown): DiagnosticEvent | undefined { if (error instanceof ServerResponseError) { if (error.statusCode === 401) return responseDiagnostic(event, 'authentication_failed', error) - if (error.statusCode === 404 && COMPATIBILITY_OR_AVAILABILITY_PATHS.has(error.path) && error.code === undefined) { + if (isVersionMismatch(error)) { return responseDiagnostic(event, 'version_mismatch', error) } if (error.statusCode === 503) { diff --git a/integrations/dsh/plugins/powercontext/src/errors.ts b/integrations/dsh/plugins/powercontext/src/errors.ts index 9d8854b10..e1bfc0c1a 100644 --- a/integrations/dsh/plugins/powercontext/src/errors.ts +++ b/integrations/dsh/plugins/powercontext/src/errors.ts @@ -71,17 +71,17 @@ export class SecretRejectedError extends ClientError { export class ServerResponseError extends ClientError { readonly statusCode: number readonly path: string - readonly code: string | undefined + readonly code: unknown readonly serverMessage: string | undefined constructor(options: { statusCode: number path?: string requestId?: string - code?: string + code?: unknown message?: string }) { - const suffix = options.code ? ` (${options.code})` : '' + const suffix = typeof options.code === 'string' ? ` (${options.code})` : '' super(`PowerContext Server returned HTTP ${options.statusCode}${suffix}`, options.requestId) this.statusCode = options.statusCode this.path = options.path ?? '' diff --git a/integrations/dsh/plugins/powercontext/src/index.ts b/integrations/dsh/plugins/powercontext/src/index.ts index 23122cc0d..f77765941 100644 --- a/integrations/dsh/plugins/powercontext/src/index.ts +++ b/integrations/dsh/plugins/powercontext/src/index.ts @@ -67,7 +67,7 @@ function createRuntime(ctx: Context, config: PluginConfig): PluginRuntime { return { client, config: resolved, - resolveScope: (cwd) => resolveScopeId(client, cwd, resolved.scopeId), + resolveScope: (cwd, signal) => resolveScopeId(client, cwd, resolved.scopeId, signal), log: (event) => { const line = JSON.stringify({ component: 'powercontext.dsh', ...event }) const quiet = event.outcome === 'ready' || event.outcome === 'ok' || event.outcome === 'empty' diff --git a/integrations/dsh/plugins/powercontext/src/invoke.ts b/integrations/dsh/plugins/powercontext/src/invoke.ts index 1af7b0806..f65064946 100644 --- a/integrations/dsh/plugins/powercontext/src/invoke.ts +++ b/integrations/dsh/plugins/powercontext/src/invoke.ts @@ -16,7 +16,9 @@ import type { PowerContextClient, JsonObject } from './client.ts' import type { ResolvedConfig } from './config.ts' +import { failureEvent, isVersionMismatch, publicErrorCode } from './diagnostics.ts' import { + InvalidResponseError, SecretRejectedError, ServerResponseError, TransportError, @@ -28,6 +30,7 @@ import { containsSecret } from './secrets.ts' export interface ToolResult { ok: boolean code?: string + error_code?: string message?: string status?: number request_id?: string @@ -47,6 +50,7 @@ export function toolResultSchema(): Record { properties: { ok: { type: 'boolean', required: true }, code: { type: 'string' }, + error_code: { type: 'string' }, message: { type: 'string' }, status: { type: 'number' }, request_id: { type: 'string' }, @@ -60,24 +64,28 @@ export function renderToolResult(_args: unknown, value: ToolResult): Array<{ typ } function mapServerError(error: ServerResponseError): ToolResult { + const code = publicErrorCode(error.code) if (error.statusCode === 401) { return { ok: false, code: 'authentication_failed', message: 'PowerContext authentication failed. Check Authorization.', status: 401, request_id: error.requestId } } if (error.statusCode === 404) { - return { ok: false, code: 'not_found', message: error.serverMessage ?? 'PowerContext resource was not found.', status: 404, request_id: error.requestId } + if (isVersionMismatch(error)) { + return { ok: false, code: 'version_mismatch', message: 'A required PowerContext endpoint is unavailable. Check the Server endpoint and compatible plugin/Server versions.', status: 404, request_id: error.requestId } + } + return { ok: false, code: 'not_found', ...(code ? { error_code: code } : {}), message: code === 'scope_not_found' ? 'PowerContext could not resolve the requested Scope. Check its configuration.' : 'PowerContext resource was not found.', status: 404, request_id: error.requestId } } if (error.statusCode === 409) { - return { ok: false, code: error.code ?? 'conflict', message: error.serverMessage ?? 'citation conflict; refresh and retry once.', status: 409, request_id: error.requestId } + return { ok: false, code: code ?? 'conflict', message: 'PowerContext operation conflicts with the current state. Inspect the current reference before retrying.', status: 409, request_id: error.requestId } } if (error.statusCode === 422) { - return { ok: false, code: error.code ?? 'invalid_request', message: error.serverMessage ?? 'PowerContext rejected the request.', status: 422, request_id: error.requestId } + return { ok: false, code: code ?? 'invalid_request', message: 'PowerContext rejected the request.', status: 422, request_id: error.requestId } } if (error.statusCode === 503) { return { ok: false, code: 'unavailable', message: 'PowerContext is unavailable, continue the task.', status: 503, request_id: error.requestId } } return { ok: false, - code: error.code ?? 'server_error', + code: code ?? 'server_error', message: 'PowerContext is unavailable, continue the task.', status: error.statusCode, request_id: error.requestId, @@ -92,6 +100,9 @@ export function toToolResult(error: unknown): ToolResult { return { ok: false, code: 'unknown_operation', message: error.message } } if (error instanceof ServerResponseError) return mapServerError(error) + if (error instanceof InvalidResponseError) { + return { ok: false, code: 'invalid_response', message: 'PowerContext returned an invalid response.', request_id: error.requestId } + } if (error instanceof TransportError) { return { ok: false, code: 'unavailable', message: 'PowerContext is unavailable, continue the task.' } } @@ -126,6 +137,7 @@ export async function invokeOperation( payload: JsonObject | undefined, scopeId: string, signal?: AbortSignal, + onFailure?: (error: unknown) => unknown, ): Promise { if (!(operationId in OPERATIONS)) return toToolResult(new UnknownOperationError(operationId)) const id = operationId as OperationId @@ -137,15 +149,31 @@ export async function invokeOperation( return toToolResult(new SecretRejectedError()) } try { + if (signal?.aborted) throw new TransportError('', signal.reason) return encodeSuccess(await client.request(id, body, signal)) } catch (error) { + try { + await onFailure?.(error) + } catch { + // Reporting must not turn an operation failure into a host exception. + } return toToolResult(error) } } +export async function reportDirectFailure(runtime: PluginRuntime, event: string, error: unknown): Promise { + try { + const diagnostic = failureEvent(event, error) + if (diagnostic) await runtime.log(diagnostic) + } catch { + // Diagnostics are best effort, including failures before operation dispatch. + } + return toToolResult(error) +} + export interface PluginRuntime { client: PowerContextClient config: ResolvedConfig - resolveScope: (cwd?: string) => Promise + resolveScope: (cwd?: string, signal?: AbortSignal) => Promise log: (event: Record) => void } diff --git a/integrations/dsh/plugins/powercontext/src/scope.ts b/integrations/dsh/plugins/powercontext/src/scope.ts index 4ec455b61..90baffb91 100644 --- a/integrations/dsh/plugins/powercontext/src/scope.ts +++ b/integrations/dsh/plugins/powercontext/src/scope.ts @@ -37,12 +37,13 @@ export async function resolveScopeId( client: PowerContextClient, cwd: string | undefined, configuredScopeId?: string, + signal?: AbortSignal, ): Promise { const workspace = sessionCwd(cwd) const response = await client.request('resolve_scope_binding', { explicit_scope_id: configuredScopeId, binding_keys: workspace ? [workspaceBindingKey(workspace)] : [], - }) + }, signal) const value = response.value const scopeId = value && typeof value === 'object' ? (value as { scope_id?: unknown }).scope_id : undefined return typeof scopeId === 'string' && scopeId.trim() ? scopeId : undefined diff --git a/integrations/dsh/plugins/powercontext/src/tools.ts b/integrations/dsh/plugins/powercontext/src/tools.ts index ba7ed5813..83f445a67 100644 --- a/integrations/dsh/plugins/powercontext/src/tools.ts +++ b/integrations/dsh/plugins/powercontext/src/tools.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { invokeOperation, renderToolResult, toolResultSchema, type PluginRuntime, type ToolResult } from './invoke.ts' +import { invokeOperation, renderToolResult, reportDirectFailure, toolResultSchema, type PluginRuntime, type ToolResult } from './invoke.ts' import type { JsonObject } from './client.ts' import { sessionCwd, UNSCOPED_MESSAGE } from './scope.ts' @@ -55,9 +55,14 @@ async function run( operationId: string, payload: JsonObject, ): Promise { - const scopeId = await runtime.resolveScope(sessionCwd(exec.agent?.session.header.cwd)) - if (!scopeId) return { ok: false, code: 'unscoped', message: UNSCOPED_MESSAGE } - return invokeOperation(runtime.client, operationId, payload, scopeId, exec.signal) + try { + const scopeId = await runtime.resolveScope(sessionCwd(exec.agent?.session.header.cwd), exec.signal) + if (!scopeId) return { ok: false, code: 'unscoped', message: UNSCOPED_MESSAGE } + return await invokeOperation(runtime.client, operationId, payload, scopeId, exec.signal, + error => reportDirectFailure(runtime, 'tool_call', error)) + } catch (error) { + return reportDirectFailure(runtime, 'tool_call', error) + } } type ToolCallKind = 'read' | 'edit' | 'delete' | 'search' diff --git a/integrations/dsh/plugins/powercontext/tests/commands.spec.ts b/integrations/dsh/plugins/powercontext/tests/commands.spec.ts index 557a3b65f..1376cd4be 100644 --- a/integrations/dsh/plugins/powercontext/tests/commands.spec.ts +++ b/integrations/dsh/plugins/powercontext/tests/commands.spec.ts @@ -33,13 +33,13 @@ function runtime(fetchImpl: typeof fetch): PluginRuntime { describe('handlePcCommand', () => { it('prints scope on bare /pc', async () => { - const result = await handlePcCommand('', runtime(async () => new Response('{}')), 'project:demo') + const result = await handlePcCommand('', runtime(async () => new Response('{}')), '/workspace') expect(result.kind).toBe('success') expect(result.text).toContain('scope=project:demo') }) it('requires version arguments for review approve', async () => { - const result = await handlePcCommand('review approve only-id', runtime(async () => new Response('{}')), 'project:demo') + const result = await handlePcCommand('review approve only-id', runtime(async () => new Response('{}')), '/workspace') expect(result.kind).toBe('error') expect(result.text).toContain('Usage: /pc review approve') }) diff --git a/integrations/dsh/plugins/powercontext/tests/direct-failures.spec.ts b/integrations/dsh/plugins/powercontext/tests/direct-failures.spec.ts new file mode 100644 index 000000000..b3d86cd94 --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/direct-failures.spec.ts @@ -0,0 +1,288 @@ +/* + * Copyright (c) 2026 OceanBase. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { describe, expect, it } from 'vitest' +import { PowerContextClient, type FetchFn } from '../src/client.ts' +import { registerCommands, type CommandResult } from '../src/commands.ts' +import { resolveConfig } from '../src/config.ts' +import { createDiagnosticEmitter } from '../src/diagnostics.ts' +import type { PluginRuntime, ToolResult } from '../src/invoke.ts' +import { resolveScopeId } from '../src/scope.ts' +import { registerTools } from '../src/tools.ts' + +const RESOLVE_PATH = '/v1/scope-bindings/resolve' +const PRIVATE = 'private-response-marker' + +function fixture(fetchImpl: FetchFn, baseUrl = 'http://127.0.0.1:8000', requestTimeoutMs = 1000) { + const calls: Array<{ path: string; body: Record }> = [] + const events: Record[] = [] + const config = resolveConfig({ baseUrl, requestTimeoutMs }, {}) + const client = new PowerContextClient({ + baseUrl: config.baseUrl, + requestTimeoutMs: config.requestTimeoutMs, + fetch: async (url, init) => { + calls.push({ path: new URL(url).pathname, body: JSON.parse(String(init.body ?? '{}')) }) + return fetchImpl(url, init) + }, + }) + const runtime: PluginRuntime = { + client, + config, + resolveScope: (cwd, signal) => resolveScopeId(client, cwd, config.scopeId, signal), + log: createDiagnosticEmitter(line => events.push(JSON.parse(line))), + } + const tools: Array<{ + name: string + execute: (args: Record, exec: unknown) => Promise + }> = [] + registerTools({ tools: { register: tool => tools.push(tool as never) }, on: () => undefined }, runtime, value => value) + let command!: (invocation: { + rawInput: string + signal: AbortSignal + agent: { session: { header: { cwd: string } } } + }) => Promise + registerCommands({ + get: () => ({ register: (definition: { handler: typeof command }) => { command = definition.handler } }), + }, runtime) + const invocation = (signal = new AbortController().signal) => ({ + signal, agent: { session: { header: { cwd: '/workspace' } } }, + }) + return { + calls, events, runtime, + tool: (name: string, args: Record = {}, signal?: AbortSignal) => + tools.find(tool => tool.name === name)!.execute(args, invocation(signal)), + command: (rawInput: string, signal?: AbortSignal) => command({ ...invocation(signal), rawInput }), + } +} + +function domainResponse(status: number, code: unknown): Response { + return Response.json({ error: { code, message: PRIVATE } }, { + status, headers: { 'X-PowerContext-Request-ID': 'request-1' }, + }) +} + +describe.each(['tool', 'command'] as const)('registered %s failure boundary', entry => { + async function remember(h: ReturnType, signal?: AbortSignal): Promise { + if (entry === 'tool') return h.tool('pc_remember', { kind: 'decision', text: 'Keep the API stable.' }, signal) + const result = await h.command('remember Keep the API stable.', signal) + expect(result.kind).toBe('error') + return JSON.parse(result.text) + } + + it.each([ + ['missing route', () => Response.json({ detail: 'Not Found' }, { status: 404 }), 'version_mismatch', 'version_mismatch'], + ['missing Scope', () => domainResponse(404, 'scope_not_found'), 'not_found', undefined], + ['authentication', () => domainResponse(401, 'unauthorized'), 'authentication_failed', 'authentication_failed'], + ['unavailable', () => domainResponse(503, 'runtime_not_ready'), 'unavailable', 'server_unavailable'], + ['invalid response', () => new Response('{broken', { status: 200 }), 'invalid_response', 'invalid_response'], + ] as const)('contains a %s failure before a write', async (_name, response, code, outcome) => { + const h = fixture(async () => response()) + const result = await remember(h) + expect(result).toMatchObject({ ok: false, code }) + if (code === 'not_found') expect(result).toMatchObject({ error_code: 'scope_not_found', request_id: 'request-1' }) + expect(h.calls.map(call => call.path)).toEqual([RESOLVE_PATH]) + expect(h.events.map(event => event.outcome)).toEqual(outcome ? [outcome] : []) + expect(JSON.stringify([result, h.events])).not.toContain(PRIVATE) + expect(JSON.stringify(h.events)).not.toContain('http://') + }) + + it('keeps no resolved Scope distinct from a failed Server', async () => { + const h = fixture(async () => Response.json({})) + h.runtime.resolveScope = async () => undefined + await expect(remember(h)).resolves.toMatchObject({ + ok: false, code: 'unscoped', + }) + expect(h.calls).toEqual([]) + expect(h.events).toEqual([]) + }) + + it('preserves a resource 404 and its domain code after resolving Scope', async () => { + const h = fixture(async url => new URL(url).pathname === RESOLVE_PATH + ? Response.json({ scope_id: 'scope-workspace' }) + : domainResponse(404, 'memory_not_found')) + const result = entry === 'tool' + ? await h.tool('pc_memory_get', { citation: {} }) + : JSON.parse((await h.command('search API')).text) + expect(result).toMatchObject({ + ok: false, code: 'not_found', error_code: 'memory_not_found', status: 404, request_id: 'request-1', + }) + expect(h.events).toEqual([]) + }) + + it.each([ + [409, 'revision_conflict'], + [422, 'invalid_request'], + ])('preserves existing HTTP %s business codes without Server text', async (status, code) => { + const h = fixture(async url => new URL(url).pathname === RESOLVE_PATH + ? Response.json({ scope_id: 'scope-workspace' }) + : domainResponse(status as number, code)) + const result = await remember(h) + expect(result).toMatchObject({ ok: false, code, status }) + expect(JSON.stringify([result, h.events])).not.toContain(PRIVATE) + expect(h.events).toEqual([]) + }) + + it.each([PRIVATE, 123, null, { toString: PRIVATE }])('does not expose an unrecognized 404 code %j or infer a route mismatch', async code => { + const h = fixture(async () => domainResponse(404, code)) + const result = await remember(h) + expect(result).toMatchObject({ ok: false, code: 'not_found' }) + expect(result).not.toHaveProperty('error_code') + expect(JSON.stringify([result, h.events])).not.toContain(PRIVATE) + }) + + it.each(['scope', 'operation'])('contains diagnostic writer errors during %s failure', async stage => { + const h = fixture(async url => { + if (stage === 'operation' && new URL(url).pathname === RESOLVE_PATH) { + return Response.json({ scope_id: 'scope-workspace' }) + } + throw new TypeError(PRIVATE) + }) + h.runtime.log = () => { throw new Error(PRIVATE) } + await expect(remember(h)).resolves.toMatchObject({ + ok: false, code: 'unavailable', + }) + }) + + it('contains a rejected diagnostic callback and omits unrecognized diagnostic codes', async () => { + const h = fixture(async () => domainResponse(401, PRIVATE)) + const result = await remember(h) + expect(result.code).toBe('authentication_failed') + expect(h.events).toEqual([expect.objectContaining({ outcome: 'authentication_failed' })]) + expect(JSON.stringify([result, h.events])).not.toContain(PRIVATE) + h.runtime.log = async () => { throw new Error(PRIVATE) } + await expect(remember(h)).resolves.toMatchObject({ ok: false, code: 'authentication_failed' }) + }) + + it('bounds repeated direct-operation diagnostics', async () => { + const h = fixture(async url => new URL(url).pathname === RESOLVE_PATH + ? Response.json({ scope_id: 'scope-workspace' }) + : domainResponse(503, 'runtime_not_ready')) + await remember(h) + await remember(h) + expect(h.events).toEqual([expect.objectContaining({ + event: entry === 'tool' ? 'tool_call' : 'command', outcome: 'server_unavailable', recovery: 'powercontext doctor', + })]) + }) + + it('cancels Scope resolution before performing a later write', async () => { + let started!: () => void + const entered = new Promise(resolve => { started = resolve }) + const h = fixture(async (_url, init) => new Promise((_resolve, reject) => { + init.signal!.addEventListener('abort', () => reject(init.signal!.reason), { once: true }) + started() + })) + const controller = new AbortController() + const result = remember(h, controller.signal) + await entered + controller.abort() + const bounded = await Promise.race([ + result, + new Promise(resolve => setTimeout(() => resolve('did not cancel'), 200)), + ]) + expect(bounded).toMatchObject({ ok: false, code: 'unavailable' }) + expect(h.calls.map(call => call.path)).toEqual([RESOLVE_PATH]) + expect(h.events.map(event => event.outcome)).toEqual(['server_unavailable']) + }) + + it('bounds a stalled Scope request with the existing per-request timeout', async () => { + const h = fixture(async (_url, init) => new Promise((_resolve, reject) => { + init.signal!.addEventListener('abort', () => reject(init.signal!.reason), { once: true }) + }), undefined, 20) + await expect(remember(h)).resolves.toMatchObject({ ok: false, code: 'unavailable' }) + expect(h.calls.map(call => call.path)).toEqual([RESOLVE_PATH]) + expect(h.events.map(event => event.outcome)).toEqual(['server_unavailable']) + }) + + it('does not dispatch a write when cancellation arrives as Scope resolution completes', async () => { + const controller = new AbortController() + const h = fixture(async () => Response.json({})) + h.runtime.resolveScope = async () => { + controller.abort() + return 'scope-workspace' + } + await expect(remember(h, controller.signal)).resolves.toMatchObject({ ok: false, code: 'unavailable' }) + expect(h.calls).toEqual([]) + expect(h.events.map(event => event.outcome)).toEqual(['server_unavailable']) + }) +}) + +describe('registered /pc command routing', () => { + it('checks health and capabilities without a working Scope endpoint', async () => { + const h = fixture(async url => new URL(url).pathname === RESOLVE_PATH + ? Response.json({ detail: 'Not Found' }, { status: 404 }) + : Response.json({ status: 'ready' })) + expect((await h.command('doctor')).kind).toBe('success') + expect((await h.command('capabilities')).kind).toBe('success') + expect(h.calls.map(call => call.path)).toEqual(['/health/live', '/health/ready', '/v1/capabilities']) + }) + + it('keeps both Doctor results when one health endpoint fails', async () => { + const h = fixture(async url => new URL(url).pathname === '/health/ready' + ? domainResponse(503, 'runtime_not_ready') + : Response.json({ status: 'alive' })) + const result = await h.command('doctor') + expect(result.kind).toBe('error') + expect(JSON.parse(result.text).data).toMatchObject({ + live: { ok: true }, ready: { ok: false, code: 'unavailable' }, + }) + }) + + it.each(['unknown', 'search', 'remember', 'review approve only-id', 'review reject id 1', 'skills'])( + 'validates "%s" without resolving Scope', async rawInput => { + const h = fixture(async () => { throw new TypeError('Server unavailable') }) + const result = await h.command(rawInput) + expect(result.kind).toBe('error') + expect(result.text).toMatch(/Usage:|Unknown/) + expect(h.calls).toEqual([]) + }, + ) + + it('keeps bare status available and redacts endpoint secrets when Scope fails', async () => { + const h = fixture( + async () => domainResponse(404, 'scope_not_found'), + 'http://user:private-response-marker@example.test/prefix?token=private-response-marker#private-response-marker', + ) + h.runtime.config.scopeId = 'configured-but-unresolved' + const result = await h.command('') + expect(result.kind).toBe('error') + expect(result.text).toContain('scope=unresolved') + expect(result.text).toContain('scope_not_found') + expect(result.text).toContain('/pc doctor') + expect(result.text).not.toContain(PRIVATE) + expect(result.text).not.toContain('configured-but-unresolved') + expect(h.calls.map(call => call.path)).toEqual(['/prefix']) + }) + + it('contains a scoped command failure without writing or selecting another Scope', async () => { + const h = fixture(async () => domainResponse(404, 'scope_not_found')) + const result = await h.command('remember Keep the API stable.') + expect(result.kind).toBe('error') + expect(JSON.parse(result.text)).toMatchObject({ + ok: false, code: 'not_found', error_code: 'scope_not_found', + }) + expect(h.calls.map(call => call.path)).toEqual([RESOLVE_PATH]) + }) + + it('keeps stats restricted to the resolved Scope', async () => { + const h = fixture(async url => new URL(url).pathname === RESOLVE_PATH + ? Response.json({ scope_id: 'scope-workspace' }) + : Response.json({})) + expect((await h.command('stats')).kind).toBe('success') + expect(h.calls.find(call => call.path === '/v1/stats')?.body).toMatchObject({ + selection: { mode: 'exact', scope_ids: ['scope-workspace'] }, + }) + }) +}) diff --git a/integrations/dsh/plugins/powercontext/tests/e2e/unscoped-session.spec.ts b/integrations/dsh/plugins/powercontext/tests/e2e/unscoped-session.spec.ts index 86fb30a41..15167d1e5 100644 --- a/integrations/dsh/plugins/powercontext/tests/e2e/unscoped-session.spec.ts +++ b/integrations/dsh/plugins/powercontext/tests/e2e/unscoped-session.spec.ts @@ -90,7 +90,7 @@ function createPluginRuntime( runtime: { client, config, - resolveScope: (cwd) => resolveScopeId(client, cwd, config.scopeId), + resolveScope: (cwd, signal) => resolveScopeId(client, cwd, config.scopeId, signal), log: (event) => { events.push(event) }, @@ -219,4 +219,29 @@ describe('plugin runtime with header.cwd === undefined', () => { expect((capture?.body?.metadata as { cwd?: string } | undefined)?.cwd).toBeUndefined() expect(calls.every((call) => !String(call.body?.scope_id ?? '').startsWith('local:'))).toBe(true) }) + + it('keeps diagnostics usable when an explicit Scope does not exist', async () => { + const { fetchImpl, calls } = trackingFetch() + const { runtime } = createPluginRuntime(server.baseUrl, 'scp_00000000000000000000000000', fetchImpl) + const command = pcHandler(runtime) + const invocation = () => ({ signal: AbortSignal.timeout(5000), agent: sessionWithoutCwd() }) + + const remembered = await toolNamed(runtime, 'pc_remember').execute({ kind: 'agent-note', text: TEXT }, invocation()) + expect(remembered).toMatchObject({ ok: false, code: 'not_found', error_code: 'scope_not_found', status: 404 }) + const searched = await command({ ...invocation(), rawInput: 'search optional cwd' }) + expect(searched.kind).toBe('error') + expect(JSON.parse(searched.text)).toMatchObject({ code: 'not_found', error_code: 'scope_not_found' }) + + const status = await command({ ...invocation(), rawInput: '' }) + expect(status.kind).toBe('error') + expect(status.text).toContain('scope=unresolved') + const doctor = await command({ ...invocation(), rawInput: 'doctor' }) + expect(doctor.kind).toBe('success') + expect(JSON.parse(doctor.text).data).toMatchObject({ live: { ok: true }, ready: { ok: true } }) + expect((await command({ ...invocation(), rawInput: 'capabilities' })).kind).toBe('success') + expect(calls.map(call => call.path)).toEqual([ + '/v1/scope-bindings/resolve', '/v1/scope-bindings/resolve', '/v1/scope-bindings/resolve', + '/health/live', '/health/ready', '/v1/capabilities', + ]) + }) }) diff --git a/integrations/dsh/plugins/powercontext/tests/scope.spec.ts b/integrations/dsh/plugins/powercontext/tests/scope.spec.ts index c1ca1501d..ae41e633d 100644 --- a/integrations/dsh/plugins/powercontext/tests/scope.spec.ts +++ b/integrations/dsh/plugins/powercontext/tests/scope.spec.ts @@ -36,9 +36,9 @@ describe('Scope binding', () => { it('uses the Server default when cwd is absent', async () => { const request = vi.fn().mockResolvedValue({ value: { scope_id: 'default-scope' } }) await expect(resolveScopeId({ request } as never, undefined)).resolves.toBe('default-scope') - expect(request).toHaveBeenCalledWith('resolve_scope_binding', { + expect(request.mock.calls[0].slice(0, 2)).toEqual(['resolve_scope_binding', { explicit_scope_id: undefined, binding_keys: [], - }) + }]) }) }) From fb82b69eacafd1a3b6a24974851fc6a9a9be3435 Mon Sep 17 00:00:00 2001 From: knqiufan Date: Fri, 4 Sep 2026 18:52:36 +0800 Subject: [PATCH 2/5] fix(dsh): complete automatic diagnostics and recall presentation --- .github/workflows/master.yml | 3 + Makefile | 5 + docs/en/docs/how-to/configure-dsh.md | 39 + docs/zh/docs/how-to/configure-dsh.md | 34 + .../dsh/plugins/powercontext/README.md | 11 + .../dsh/plugins/powercontext/lib/index.js | 122 +- .../dsh/plugins/powercontext/package.json | 1 + .../powercontext/scripts/e2e-server.mjs | 48 +- .../dsh/plugins/powercontext/src/capture.ts | 16 +- .../dsh/plugins/powercontext/src/commands.ts | 2 + .../plugins/powercontext/src/diagnostics.ts | 21 +- .../plugins/powercontext/src/dsh-shims.d.ts | 7 +- .../dsh/plugins/powercontext/src/index.ts | 14 +- .../dsh/plugins/powercontext/src/invoke.ts | 27 +- .../dsh/plugins/powercontext/src/recall.ts | 51 +- .../powercontext/tests/automatic-path.spec.ts | 272 + .../tests/plugin-surfaces.spec.ts | 1 + .../powercontext/tests/runtime/README.md | 76 + .../powercontext/tests/runtime/fixture.mjs | 224 + .../powercontext/tests/runtime/package.json | 12 + .../powercontext/tests/runtime/pnpm-lock.yaml | 7347 +++++++++++++++++ .../tests/runtime/pnpm-workspace.yaml | 24 + .../tests/runtime/real-model.test.mjs | 45 + .../tests/runtime/runtime.test.mjs | 135 + 24 files changed, 8429 insertions(+), 108 deletions(-) create mode 100644 integrations/dsh/plugins/powercontext/tests/automatic-path.spec.ts create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/README.md create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/fixture.mjs create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/package.json create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/pnpm-lock.yaml create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/pnpm-workspace.yaml create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/real-model.test.mjs create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/runtime.test.mjs diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 198b9bfd1..f2ca63541 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -67,6 +67,9 @@ jobs: - name: Test DSH package run: make js-test + - name: Test built plugin in the real DSH runtime + run: make dsh-runtime-test + pi-package: runs-on: ubuntu-latest steps: diff --git a/Makefile b/Makefile index f1103c1a3..9eaba34d2 100644 --- a/Makefile +++ b/Makefile @@ -122,6 +122,11 @@ js-test: ## Install, build, and test the DeepSeek Harness plugin. @pnpm --dir integrations/dsh/plugins/powercontext test @pnpm --dir integrations/dsh/plugins/powercontext test:e2e +.PHONY: dsh-runtime-test +dsh-runtime-test: ## Test the built plugin in the pinned real DSH runtime with a local model fixture. + @pnpm --dir integrations/dsh/plugins/powercontext/tests/runtime install --frozen-lockfile + @pnpm --dir integrations/dsh/plugins/powercontext test:e2e:runtime + .PHONY: openclaw-plugin-build openclaw-plugin-build: ## Build the external OpenClaw memory plugin. @pnpm --dir integrations/openclaw/plugins/memory-powercontext build diff --git a/docs/en/docs/how-to/configure-dsh.md b/docs/en/docs/how-to/configure-dsh.md index d6b6ab70d..ce2ebd299 100644 --- a/docs/en/docs/how-to/configure-dsh.md +++ b/docs/en/docs/how-to/configure-dsh.md @@ -65,6 +65,45 @@ Existing conflict and validation codes, such as `revision_conflict` and `invalid results preserve available HTTP status and request ID, but use fixed messages instead of Server-provided text. Unknown error codes are omitted from `error_code` and diagnostics; their presence alone does not imply a version mismatch. +## Diagnose automatic recall and capture + +Ordinary messages also trigger Scope resolution, context preparation, prompt capture, and optional flush. A failure +in these automatic stages leaves the Harness conversation running. Scope resolution failures stop all subsequent +PowerContext operations for that step; they never select a different Scope or create a binding. + +The `powercontext.dsh` logger identifies the stage as `scope_resolve`, `context_prepare`, +`capture_content_source`, `flush_memory`, or `context_inject`. It reports fixed diagnostic outcomes and recognized +public error codes, without Server messages, prompt content, credentials, or request paths. Repeated identical +warnings are suppressed for 60 seconds. Logger failures cannot discard prepared context or interrupt the conversation. + +Log visibility depends on the DSH profile's native exporters. The tested DSH 0.1.2-rc.1 Web profile does not export +these warnings to the terminal by default. A profile using Cordis's console exporter +(`@deepseek-ai/cordis-plugin-logger-console`) needs `config.levels.default: 2` to include warnings, or `3` for debug +events as well. Read the terminal running `dsh web` for `powercontext.dsh` records. This uses the host logger and adds +no model message or separate log panel. + +A missing required route produces `version_mismatch` only when its 404 has no business code. A Scope business 404 +instead records `invalid_response` with `error_code: scope_not_found`. A resolver that completes without a Scope +records `skipped` with `reason: scope_unresolved`. A valid empty recall is normal and logged at debug level. +Use `/pc doctor` and `/pc capabilities` to check the Server even when Scope resolution fails. + +Preparation and capture are independent: a prepare failure can still allow capture, and a capture or flush failure +does not discard already prepared context. An accepted Source does not mean Memory has been generated; that requires +successful Server processing. Cancellation stops subsequent operations, while an individual request timeout retains +the existing per-request behavior. + +## Inspect recalled context + +A non-empty PreparedContext is appended once as a plugin message with `source.form=snapshot` and a `PowerContext` +section. In DSH 0.1.2-rc.1 Web, expand a completed turn's process details, then its **Context injection — powercontext-dsh** +row. Other host versions may expose this in a context browser. The section +contains the same text sent to the model and saved in the session log, including the untrusted-history label and +request-specific replacement wording. Reopening session history retains this metadata. + +Empty responses and automatic failures do not create a snapshot or a model-visible error notice. Presentation uses +the host's existing snapshot support; it does not add a separate PowerContext panel or claim receipt/source details +that the Server has not returned. + ## Control prompt capture Prompt capture is enabled by default. Disable it before starting DeepSeek Harness when the current work must not be recorded: diff --git a/docs/zh/docs/how-to/configure-dsh.md b/docs/zh/docs/how-to/configure-dsh.md index 80228809d..ce53f3e93 100644 --- a/docs/zh/docs/how-to/configure-dsh.md +++ b/docs/zh/docs/how-to/configure-dsh.md @@ -63,6 +63,40 @@ Scope 解析失败时,具名工具和依赖 Scope 的 `/pc` 命令会返回受 request ID,提示文字使用固定内容,不透传 Server message。未知错误码不会出现在 `error_code` 或诊断中, 也不会仅因无法识别就被判为版本不匹配。 +## 排查自动召回和采集 + +普通消息也会触发 Scope 解析、上下文准备、提示词采集和可选 flush。这些自动阶段失败时,Harness 对话继续。 +Scope 解析失败会停止本轮后续的 PowerContext 操作,不会换用其他 Scope 或创建 binding。 + +`powercontext.dsh` 日志通过 `scope_resolve`、`context_prepare`、`capture_content_source`、`flush_memory` +或 `context_inject` 标识失败阶段。诊断使用固定结果和已识别的公开错误码,不包含 Server message、 +提示词内容、凭据或请求路径。同类重复警告在 60 秒内降噪。logger 自身失败也不会丢弃已准备的上下文或打断对话。 + +能否看到日志取决于 DSH profile 的原生 exporter 配置。本次测试的 DSH 0.1.2-rc.1 Web profile 默认不向终端 +导出这些警告。如果 profile 使用 Cordis 的 console exporter(`@deepseek-ai/cordis-plugin-logger-console`), +需要将其 `config.levels.default` 设为 `2` 以包含警告;设为 `3` 可同时查看 debug 事件。 +在启动 `dsh web` 的终端中查看 `powercontext.dsh` 记录。这里使用宿主 logger,不增加模型消息或独立日志面板。 + +必需路由的 404 只有在没有业务错误码时才记录为 `version_mismatch`。Scope 的业务 404 则记录 +`invalid_response` 和 `error_code: scope_not_found`。resolver 正常结束但未返回 Scope 时记录 +`skipped` 和 `reason: scope_unresolved`。有效的空召回属于正常结果,只写 debug 日志。 +Scope 解析失败时,仍可使用 `/pc doctor` 和 `/pc capabilities` 检查 Server。 + +上下文准备和采集相互独立:prepare 失败后仍可采集输入;capture 或 flush 失败不会丢弃已经准备好的上下文。 +Source 被接收不代表已经生成 Memory,后者需要 Server 成功处理。取消会停止后续操作;单个请求超时仍沿用 +现有的单请求行为。 + +## 查看召回的上下文 + +非空 PreparedContext 只追加一次,消息带有 `source.form=snapshot` 和名为 `PowerContext` 的 section。 +在 DSH 0.1.2-rc.1 Web 中,展开已完成轮次的“已思考”过程内容,再展开“上下文注入 — powercontext-dsh”。 +其他宿主版本也可能将它展示在上下文浏览器中。section 与发给模型、 +保存到会话日志的文字一致,包含不可信历史证据的提示,以及当前请求替换此前快照的说明。 +重新打开会话历史时,这些元数据仍然保留。 + +空结果和自动失败不会生成 snapshot,也不会向模型注入错误通知。展示使用宿主已有的 snapshot 能力, +不新增 PowerContext 面板,也不声称存在 Server 尚未返回的 receipt 或来源信息。 + ## 控制提示词采集 默认开启提示词采集。如果当前工作不应被记录,请在启动 DeepSeek Harness 前关闭: diff --git a/integrations/dsh/plugins/powercontext/README.md b/integrations/dsh/plugins/powercontext/README.md index e508f60d1..46c981b04 100644 --- a/integrations/dsh/plugins/powercontext/README.md +++ b/integrations/dsh/plugins/powercontext/README.md @@ -30,3 +30,14 @@ The plugin resolves an explicit Scope, a durable workspace binding, or the Serve the `POWERCONTEXT_DSH_` prefix for `BASE_URL`, `AUTHORIZATION`, `SCOPE_ID`, `CAPTURE_PROMPTS`, and `FLUSH_ON_CAPTURE`. `timeoutMs`, `requestTimeoutMs`, `maxBytes`, and `flushMaxCalls` are plugin patch settings. Context returned by recall is labelled as untrusted history. An unavailable Server never blocks normal Harness work. + +Automatic failures are reported through the native `powercontext.dsh` logger with a stage, a safe outcome, and an +optional public error code. They do not become model messages. Scope failure stops that step's PowerContext work; +prepare and capture otherwise fail independently. Cancellation prevents subsequent operations, and logger failures +cannot discard a successful recall. Accepted Source evidence still needs Server processing before it becomes Memory. + +Non-empty recall uses a persisted plugin `snapshot` with a `PowerContext` section for the host context browser. +Its displayed text is the same untrusted, request-specific context sent to the model. Empty recall creates no snapshot. + +See [runtime acceptance tests](tests/runtime/README.md) for the pinned real DSH host, deterministic CI scenarios, +and the separate real-model and Web acceptance procedure. diff --git a/integrations/dsh/plugins/powercontext/lib/index.js b/integrations/dsh/plugins/powercontext/lib/index.js index e202d2ae9..553993d92 100644 --- a/integrations/dsh/plugins/powercontext/lib/index.js +++ b/integrations/dsh/plugins/powercontext/lib/index.js @@ -1241,6 +1241,7 @@ function isVersionMismatch(error) { return error.statusCode === 404 && error.code === void 0 && COMPATIBILITY_OR_AVAILABILITY_PATHS.has(error.path); } const AUTOMATIC_OPERATION_PATHS = new Map([ + ["scope_resolve", "/v1/scope-bindings/resolve"], ["context_prepare", "/v1/context/prepare"], ["capture_content_source", "/v1/sources/content"], ["flush_memory", "/v1/memory/flush"] @@ -1282,6 +1283,15 @@ function failureEvent(event, error) { outcome: "invalid_response" }; } +function logSafely(log, event) { + try { + Promise.resolve(log(event)).catch(() => void 0); + } catch {} +} +function reportFailure(log, event, error) { + const diagnostic = failureEvent(event, error); + if (diagnostic) logSafely(log, diagnostic); +} function createDiagnosticEmitter(write, now = Date.now, cooldownMs = 6e4) { const lastEmitted = /* @__PURE__ */ new Map(); return (event) => { @@ -1302,7 +1312,7 @@ function createDiagnosticEmitter(write, now = Date.now, cooldownMs = 6e4) { if (previous !== void 0 && timestamp - previous < cooldownMs) return; lastEmitted.set(key, timestamp); } - write(JSON.stringify(normalized)); + return write(JSON.stringify(normalized)); }; } @@ -1351,6 +1361,9 @@ function renderToolResult(_args, value) { text: JSON.stringify(value) }]; } +function requestIdField(requestId) { + return requestId === void 0 ? {} : { request_id: requestId }; +} function mapServerError(error) { const code = publicErrorCode(error.code); if (error.statusCode === 401) return { @@ -1358,7 +1371,7 @@ function mapServerError(error) { code: "authentication_failed", message: "PowerContext authentication failed. Check Authorization.", status: 401, - request_id: error.requestId + ...requestIdField(error.requestId) }; if (error.statusCode === 404) { if (isVersionMismatch(error)) return { @@ -1366,7 +1379,7 @@ function mapServerError(error) { code: "version_mismatch", message: "A required PowerContext endpoint is unavailable. Check the Server endpoint and compatible plugin/Server versions.", status: 404, - request_id: error.requestId + ...requestIdField(error.requestId) }; return { ok: false, @@ -1374,7 +1387,7 @@ function mapServerError(error) { ...code ? { error_code: code } : {}, message: code === "scope_not_found" ? "PowerContext could not resolve the requested Scope. Check its configuration." : "PowerContext resource was not found.", status: 404, - request_id: error.requestId + ...requestIdField(error.requestId) }; } if (error.statusCode === 409) return { @@ -1382,28 +1395,28 @@ function mapServerError(error) { code: code ?? "conflict", message: "PowerContext operation conflicts with the current state. Inspect the current reference before retrying.", status: 409, - request_id: error.requestId + ...requestIdField(error.requestId) }; if (error.statusCode === 422) return { ok: false, code: code ?? "invalid_request", message: "PowerContext rejected the request.", status: 422, - request_id: error.requestId + ...requestIdField(error.requestId) }; if (error.statusCode === 503) return { ok: false, code: "unavailable", message: "PowerContext is unavailable, continue the task.", status: 503, - request_id: error.requestId + ...requestIdField(error.requestId) }; return { ok: false, code: code ?? "server_error", message: "PowerContext is unavailable, continue the task.", status: error.statusCode, - request_id: error.requestId + ...requestIdField(error.requestId) }; } function toToolResult(error) { @@ -1422,7 +1435,7 @@ function toToolResult(error) { ok: false, code: "invalid_response", message: "PowerContext returned an invalid response.", - request_id: error.requestId + ...requestIdField(error.requestId) }; if (error instanceof TransportError) return { ok: false, @@ -1453,19 +1466,19 @@ function encodeSuccess(result) { if (result.kind === "bytes") return { ok: true, status: result.status, - request_id: result.requestId, + ...requestIdField(result.requestId), data: { bytes_base64: Buffer.from(result.value).toString("base64") } }; if (result.kind === "text") return { ok: true, status: result.status, - request_id: result.requestId, + ...requestIdField(result.requestId), data: { markdown: result.value } }; return { ok: true, status: result.status, - request_id: result.requestId, + ...requestIdField(result.requestId), data: result.value }; } @@ -1657,6 +1670,7 @@ function registerCommands(ctx, runtime) { requireService(ctx, "commands").register({ name: "pc", description: "PowerContext status, search, review, and diagnostics", + input: { hint: "doctor | capabilities | search | remember | flush | review | stats | skills scan" }, handler: async (invocation) => handlePcCommand(invocation.rawInput, runtime, invocation.agent.session.header.cwd, invocation.signal) }); } @@ -1749,6 +1763,7 @@ function buildSourceId(scopeId, sessionId, turnId, prompt) { } async function flushThrough(client, config, scopeId, position, signal) { for (let i = 0; i < config.flushMaxCalls; i += 1) { + if (signal?.aborted) throw new TransportError("", signal.reason); const result = await client.request("flush_memory", { scope_id: scopeId }, signal); const cursor = result.kind === "json" && result.value && typeof result.value === "object" ? result.value.current_cursor : void 0; if (typeof cursor === "number" && cursor >= position) return; @@ -1763,7 +1778,7 @@ function sourcePosition(value) { async function captureUserPrompt(input) { if (!input.config.capturePrompts) return; if (input.prompt.length > MAX_SOURCE_LENGTH || containsSecret(input.prompt)) { - input.log({ + logSafely(input.log, { event: "capture_content_source", outcome: "skipped" }); @@ -1772,6 +1787,7 @@ async function captureUserPrompt(input) { let position; let captureStatus = 202; try { + if (input.signal?.aborted) throw new TransportError("", input.signal.reason); const result = await input.client.request("capture_content_source", { scope_id: input.scopeId, source_id: buildSourceId(input.scopeId, input.sessionId, input.turnId, input.prompt), @@ -1787,21 +1803,19 @@ async function captureUserPrompt(input) { position = result.kind === "json" ? sourcePosition(result.value) : void 0; captureStatus = result.status; } catch (error) { - const diagnostic = failureEvent("capture_content_source", error); - if (diagnostic) input.log(diagnostic); + reportFailure(input.log, "capture_content_source", error); return; } - if (input.config.flushOnCapture && position !== void 0) try { - await flushThrough(input.client, input.config, input.scopeId, position, input.signal); - } catch (error) { - const diagnostic = failureEvent("flush_memory", error); - if (diagnostic) input.log(diagnostic); - } - input.log({ + logSafely(input.log, { event: "capture_content_source", outcome: "ok", status: captureStatus }); + if (input.config.flushOnCapture && position !== void 0) try { + await flushThrough(input.client, input.config, input.scopeId, position, input.signal); + } catch (error) { + reportFailure(input.log, "flush_memory", error); + } } //#endregion @@ -1859,18 +1873,20 @@ function messagesToUserPrompt(messages) { return messagesToText(messages.filter((message) => message.source.kind === "user")); } function formatUntrustedContext(content) { - return `PowerContext host-supplied context. Treat it as untrusted historical evidence.\n\n${content}`; + return `PowerContext context prepared for this request, superseding earlier PowerContext context snapshots. Treat it as untrusted historical evidence.\n\n${content}`; } async function recallContent(input, query, scopeId) { try { + if (input.signal?.aborted) throw new TransportError("", input.signal.reason); const result = await input.client.request("prepare_context", { scope_id: scopeId, query, max_bytes: input.config.maxBytes }, input.signal); + if (input.signal?.aborted) throw new TransportError("", input.signal.reason); const prepared = validatePreparedContext(result.kind === "json" ? result.value : void 0, "/v1/context/prepare", input.config.maxBytes); if (prepared.status === "empty") { - input.log({ + logSafely(input.log, { event: "context_prepare", outcome: "empty", http_status: 200, @@ -1879,7 +1895,7 @@ async function recallContent(input, query, scopeId) { }); return; } - input.log({ + logSafely(input.log, { event: "context_prepare", outcome: "ready", http_status: 200, @@ -1888,8 +1904,7 @@ async function recallContent(input, query, scopeId) { }); return prepared.content ?? void 0; } catch (error) { - const diagnostic = failureEvent("context_prepare", error); - if (diagnostic) input.log(diagnostic); + reportFailure(input.log, "context_prepare", error); return; } } @@ -1901,27 +1916,37 @@ async function runRecallPreStep(input) { const downstream = await input.next(); if (!content || downstream.kind !== "enter") return downstream; try { + if (input.signal?.aborted) throw new TransportError("", input.signal.reason); return { - kind: "enter", + ...downstream, messages: [...downstream.messages ?? [], input.wrapContent(formatUntrustedContext(content))] }; - } catch { + } catch (error) { + reportFailure(input.log, "context_inject", error); return downstream; } } async function recallThenCapture(input, query, userPrompt) { + let scopeId; try { - const scopeId = await input.resolveScope(input.cwd); - if (!scopeId) { - input.log({ - event: "context_prepare", - outcome: "skipped", - reason: "missing_session_cwd" - }); - return; - } - const content = await recallContent(input, query, scopeId); - if (userPrompt) await captureUserPrompt({ + if (input.signal?.aborted) throw new TransportError("", input.signal.reason); + scopeId = await input.resolveScope(input.cwd, input.signal); + if (input.signal?.aborted) throw new TransportError("", input.signal.reason); + } catch (error) { + reportFailure(input.log, "scope_resolve", error); + return; + } + if (!scopeId) { + logSafely(input.log, { + event: "scope_resolve", + outcome: "skipped", + reason: "scope_unresolved" + }); + return; + } + const content = await recallContent(input, query, scopeId); + if (userPrompt && !input.signal?.aborted) try { + await captureUserPrompt({ client: input.client, config: input.config, scopeId, @@ -1932,10 +1957,10 @@ async function recallThenCapture(input, query, userPrompt) { signal: input.signal, log: input.log }); - return content; - } catch { - return; + } catch (error) { + reportFailure(input.log, "capture_content_source", error); } + return input.signal?.aborted ? void 0 : content; } //#endregion @@ -2547,8 +2572,8 @@ function createRuntime(ctx, config) { component: "powercontext.dsh", ...event }); - if (event.outcome === "ready" || event.outcome === "ok" || event.outcome === "empty") ctx.logger.debug?.(line); - else emitDiagnostic({ + if (event.outcome === "ready" || event.outcome === "ok" || event.outcome === "empty") return ctx.logger.debug?.(line); + return emitDiagnostic({ component: "powercontext.dsh", ...event }); @@ -2576,7 +2601,12 @@ function registerRecall(ctx, runtime, createUserMessage) { }], source: { kind: "plugin", - plugin: PLUGIN_NAME + plugin: PLUGIN_NAME, + form: "snapshot", + sections: [{ + name: "PowerContext", + text + }] } }), log: runtime.log diff --git a/integrations/dsh/plugins/powercontext/package.json b/integrations/dsh/plugins/powercontext/package.json index 47de3ff45..835738d93 100644 --- a/integrations/dsh/plugins/powercontext/package.json +++ b/integrations/dsh/plugins/powercontext/package.json @@ -35,6 +35,7 @@ "prepare": "node scripts/prepare.mjs", "test": "vitest run --exclude=tests/e2e/**", "test:e2e": "vitest run tests/e2e", + "test:e2e:runtime": "pnpm --dir tests/runtime test", "test:all": "vitest run", "pack:release": "pnpm build && node scripts/pack-release.mjs" }, diff --git a/integrations/dsh/plugins/powercontext/scripts/e2e-server.mjs b/integrations/dsh/plugins/powercontext/scripts/e2e-server.mjs index 1fe1906fe..b35724935 100644 --- a/integrations/dsh/plugins/powercontext/scripts/e2e-server.mjs +++ b/integrations/dsh/plugins/powercontext/scripts/e2e-server.mjs @@ -15,7 +15,8 @@ */ import { createServer } from 'node:net' -import { spawn } from 'node:child_process' +import { execFile, spawn } from 'node:child_process' +import { promisify } from 'node:util' import { existsSync, mkdtempSync } from 'node:fs' import { tmpdir } from 'node:os' import { dirname, join, resolve } from 'node:path' @@ -60,10 +61,11 @@ export function unusedPort() { }) } -export async function waitForUrl(url, timeoutMs = 30000) { +export async function waitForUrl(url, timeoutMs = 30000, checkProcess = () => {}) { const deadline = Date.now() + timeoutMs let lastError while (Date.now() < deadline) { + checkProcess() try { const response = await fetch(url, { signal: AbortSignal.timeout(1000) }) if (response.ok || response.status === 503) return @@ -76,16 +78,35 @@ export async function waitForUrl(url, timeoutMs = 30000) { throw new Error(`Server at ${url} did not become ready: ${lastError}`) } +async function stopServer(child) { + if (child.exitCode !== null || child.signalCode !== null) return + const exited = new Promise((resolve) => child.once('exit', resolve)) + if (process.platform === 'win32') { + // uv's Python descendants otherwise survive killing only the launcher. + await promisify(execFile)('taskkill.exe', ['/PID', String(child.pid), '/T', '/F'], { windowsHide: true }) + } else { + child.kill('SIGTERM') + } + let timer + try { + await Promise.race([exited, new Promise((_, reject) => { + timer = setTimeout(() => reject(new Error('e2e Server did not exit')), 5000) + })]) + } finally { + clearTimeout(timer) + } +} + function spawnServer(root, env) { const uv = process.platform === 'win32' ? 'uv.exe' : 'uv' - return spawn(uv, ['run', 'powercontext', 'server', 'run'], { + return spawn(uv, ['run', '--no-sync', 'powercontext', 'server', 'run'], { cwd: root, env, stdio: ['ignore', 'pipe', 'pipe'], }) } -export async function startPowerContextServer() { +export async function startPowerContextServer(options = {}) { const root = defaultPowerContextRoot() if (!root) { throw new Error('Set POWERCONTEXT_ROOT to a PowerContext checkout that contains pyproject.toml') @@ -94,6 +115,7 @@ export async function startPowerContextServer() { const home = mkdtempSync(join(tmpdir(), 'pc-dsh-e2e-')) const env = { ...process.env, + ...options.env, POWERCONTEXT_HOME: home, POWERCONTEXT_SERVER_HTTP_HOST: '127.0.0.1', POWERCONTEXT_SERVER_HTTP_PORT: String(port), @@ -104,25 +126,17 @@ export async function startPowerContextServer() { child.stderr?.on('data', (chunk) => logs.push(String(chunk))) const baseUrl = `http://127.0.0.1:${port}` try { - await waitForUrl(`${baseUrl}/health/live`) + await waitForUrl(`${baseUrl}/health/live`, 30000, () => { + if (child.exitCode !== null) throw new Error(`Server exited with code ${child.exitCode}`) + }) } catch (error) { - child.kill() + await stopServer(child) throw new Error(`${error.message}\n${logs.join('')}`) } return { baseUrl, home, root, - async stop() { - if (!child.killed) child.kill() - await new Promise((resolve) => { - if (child.exitCode !== null) { - resolve() - return - } - child.once('exit', resolve) - setTimeout(resolve, 3000) - }) - }, + stop: () => stopServer(child), } } diff --git a/integrations/dsh/plugins/powercontext/src/capture.ts b/integrations/dsh/plugins/powercontext/src/capture.ts index beaf80f14..1d7cfe06a 100644 --- a/integrations/dsh/plugins/powercontext/src/capture.ts +++ b/integrations/dsh/plugins/powercontext/src/capture.ts @@ -17,8 +17,8 @@ import { createHash } from 'node:crypto' import type { PowerContextClient } from './client.ts' import type { ResolvedConfig } from './config.ts' -import { failureEvent } from './diagnostics.ts' -import { MAX_SOURCE_LENGTH } from './errors.ts' +import { logSafely, reportFailure } from './diagnostics.ts' +import { MAX_SOURCE_LENGTH, TransportError } from './errors.ts' import { containsSecret } from './secrets.ts' export interface CaptureInput { @@ -46,6 +46,7 @@ async function flushThrough( signal?: AbortSignal, ): Promise { for (let i = 0; i < config.flushMaxCalls; i += 1) { + if (signal?.aborted) throw new TransportError('', signal.reason) const result = await client.request('flush_memory', { scope_id: scopeId }, signal) const cursor = result.kind === 'json' && result.value && typeof result.value === 'object' ? (result.value as { current_cursor?: unknown }).current_cursor @@ -64,12 +65,13 @@ function sourcePosition(value: unknown): number | undefined { export async function captureUserPrompt(input: CaptureInput): Promise { if (!input.config.capturePrompts) return if (input.prompt.length > MAX_SOURCE_LENGTH || containsSecret(input.prompt)) { - input.log({ event: 'capture_content_source', outcome: 'skipped' }) + logSafely(input.log, { event: 'capture_content_source', outcome: 'skipped' }) return } let position: number | undefined let captureStatus = 202 try { + if (input.signal?.aborted) throw new TransportError('', input.signal.reason) const result = await input.client.request('capture_content_source', { scope_id: input.scopeId, source_id: buildSourceId(input.scopeId, input.sessionId, input.turnId, input.prompt), @@ -85,18 +87,16 @@ export async function captureUserPrompt(input: CaptureInput): Promise { position = result.kind === 'json' ? sourcePosition(result.value) : undefined captureStatus = result.status } catch (error) { - const diagnostic = failureEvent('capture_content_source', error) - if (diagnostic) input.log(diagnostic) + reportFailure(input.log, 'capture_content_source', error) return } + logSafely(input.log, { event: 'capture_content_source', outcome: 'ok', status: captureStatus }) if (input.config.flushOnCapture && position !== undefined) { try { await flushThrough(input.client, input.config, input.scopeId, position, input.signal) } catch (error) { - const diagnostic = failureEvent('flush_memory', error) - if (diagnostic) input.log(diagnostic) + reportFailure(input.log, 'flush_memory', error) } } - input.log({ event: 'capture_content_source', outcome: 'ok', status: captureStatus }) } diff --git a/integrations/dsh/plugins/powercontext/src/commands.ts b/integrations/dsh/plugins/powercontext/src/commands.ts index c2765b59f..563bbcac4 100644 --- a/integrations/dsh/plugins/powercontext/src/commands.ts +++ b/integrations/dsh/plugins/powercontext/src/commands.ts @@ -149,12 +149,14 @@ export function registerCommands( register: (definition: { name: string description: string + input: { hint: string } handler: (invocation: { rawInput: string; signal: AbortSignal; agent: { session: { header: { cwd?: string } } } }) => Promise }) => unknown }>(ctx, 'commands') commands.register({ name: 'pc', description: 'PowerContext status, search, review, and diagnostics', + input: { hint: 'doctor | capabilities | search | remember | flush | review | stats | skills scan' }, handler: async (invocation) => handlePcCommand( invocation.rawInput, runtime, invocation.agent.session.header.cwd, invocation.signal, ), diff --git a/integrations/dsh/plugins/powercontext/src/diagnostics.ts b/integrations/dsh/plugins/powercontext/src/diagnostics.ts index bc554684c..9ab486507 100644 --- a/integrations/dsh/plugins/powercontext/src/diagnostics.ts +++ b/integrations/dsh/plugins/powercontext/src/diagnostics.ts @@ -63,6 +63,7 @@ export function isVersionMismatch(error: ServerResponseError): boolean { } const AUTOMATIC_OPERATION_PATHS = new Map([ + ['scope_resolve', '/v1/scope-bindings/resolve'], ['context_prepare', '/v1/context/prepare'], ['capture_content_source', '/v1/sources/content'], ['flush_memory', '/v1/memory/flush'], @@ -104,6 +105,24 @@ export function failureEvent(event: string, error: unknown): DiagnosticEvent | u return { event, outcome: 'invalid_response' } } +export function logSafely(log: (event: Record) => unknown, event: Record): void { + try { + // A diagnostic writer must neither break nor hold up the automatic path. + void Promise.resolve(log(event)).catch(() => undefined) + } catch { + // Native logger failures are best effort, including success/debug logging. + } +} + +export function reportFailure( + log: (event: Record) => unknown, + event: string, + error: unknown, +): void { + const diagnostic = failureEvent(event, error) + if (diagnostic) logSafely(log, diagnostic) +} + export function createDiagnosticEmitter( write: (line: string) => void, now: () => number = Date.now, @@ -125,6 +144,6 @@ export function createDiagnosticEmitter( if (previous !== undefined && timestamp - previous < cooldownMs) return lastEmitted.set(key, timestamp) } - write(JSON.stringify(normalized)) + return write(JSON.stringify(normalized)) } } diff --git a/integrations/dsh/plugins/powercontext/src/dsh-shims.d.ts b/integrations/dsh/plugins/powercontext/src/dsh-shims.d.ts index 0ac04eb7b..7d5398ac9 100644 --- a/integrations/dsh/plugins/powercontext/src/dsh-shims.d.ts +++ b/integrations/dsh/plugins/powercontext/src/dsh-shims.d.ts @@ -36,7 +36,7 @@ declare module '@deepseek-ai/dsh-tools' { declare module '@deepseek-ai/dsh-agent' { export type PreStepDecision = | { kind: 'reject' } - | { kind: 'enter'; messages: unknown[] } + | { kind: 'enter'; messages: unknown[]; startsRequestSeries?: true } export type Agent = { session: { header: { id: string; cwd?: string } } } @@ -45,7 +45,10 @@ declare module '@deepseek-ai/dsh-agent' { declare module '@deepseek-ai/dsh-llm' { export function createUserMessage(input: { content: Array<{ type: 'text'; text: string }> - source: { kind: 'plugin'; plugin: string } + source: { + kind: 'plugin'; plugin: string; form: 'snapshot' + sections: Array<{ name: string; text: string }> + } }): unknown } diff --git a/integrations/dsh/plugins/powercontext/src/index.ts b/integrations/dsh/plugins/powercontext/src/index.ts index f77765941..6bf68080f 100644 --- a/integrations/dsh/plugins/powercontext/src/index.ts +++ b/integrations/dsh/plugins/powercontext/src/index.ts @@ -51,7 +51,10 @@ export const Config = { type CreateUserMessage = (input: { content: Array<{ type: 'text'; text: string }> - source: { kind: 'plugin'; plugin: string } + source: { + kind: 'plugin'; plugin: string; form: 'snapshot' + sections: Array<{ name: string; text: string }> + } }) => unknown type DefineTool = (definition: Record) => unknown @@ -71,8 +74,8 @@ function createRuntime(ctx: Context, config: PluginConfig): PluginRuntime { log: (event) => { const line = JSON.stringify({ component: 'powercontext.dsh', ...event }) const quiet = event.outcome === 'ready' || event.outcome === 'ok' || event.outcome === 'empty' - if (quiet) ctx.logger.debug?.(line) - else emitDiagnostic({ component: 'powercontext.dsh', ...event }) + if (quiet) return ctx.logger.debug?.(line) + return emitDiagnostic({ component: 'powercontext.dsh', ...event }) }, } } @@ -98,7 +101,10 @@ function registerRecall(ctx: Context, runtime: PluginRuntime, createUserMessage: resolveScope: runtime.resolveScope, wrapContent: (text) => createUserMessage({ content: [{ type: 'text', text }], - source: { kind: 'plugin', plugin: PLUGIN_NAME }, + source: { + kind: 'plugin', plugin: PLUGIN_NAME, form: 'snapshot', + sections: [{ name: 'PowerContext', text }], + }, }), log: runtime.log, }) diff --git a/integrations/dsh/plugins/powercontext/src/invoke.ts b/integrations/dsh/plugins/powercontext/src/invoke.ts index f65064946..55a59e235 100644 --- a/integrations/dsh/plugins/powercontext/src/invoke.ts +++ b/integrations/dsh/plugins/powercontext/src/invoke.ts @@ -63,32 +63,37 @@ export function renderToolResult(_args: unknown, value: ToolResult): Array<{ typ return [{ type: 'text', text: JSON.stringify(value) }] } +function requestIdField(requestId: string | undefined): { request_id?: string } { + // DSH validates tool outputs as lossless JSON, including optional fields. + return requestId === undefined ? {} : { request_id: requestId } +} + function mapServerError(error: ServerResponseError): ToolResult { const code = publicErrorCode(error.code) if (error.statusCode === 401) { - return { ok: false, code: 'authentication_failed', message: 'PowerContext authentication failed. Check Authorization.', status: 401, request_id: error.requestId } + return { ok: false, code: 'authentication_failed', message: 'PowerContext authentication failed. Check Authorization.', status: 401, ...requestIdField(error.requestId) } } if (error.statusCode === 404) { if (isVersionMismatch(error)) { - return { ok: false, code: 'version_mismatch', message: 'A required PowerContext endpoint is unavailable. Check the Server endpoint and compatible plugin/Server versions.', status: 404, request_id: error.requestId } + return { ok: false, code: 'version_mismatch', message: 'A required PowerContext endpoint is unavailable. Check the Server endpoint and compatible plugin/Server versions.', status: 404, ...requestIdField(error.requestId) } } - return { ok: false, code: 'not_found', ...(code ? { error_code: code } : {}), message: code === 'scope_not_found' ? 'PowerContext could not resolve the requested Scope. Check its configuration.' : 'PowerContext resource was not found.', status: 404, request_id: error.requestId } + return { ok: false, code: 'not_found', ...(code ? { error_code: code } : {}), message: code === 'scope_not_found' ? 'PowerContext could not resolve the requested Scope. Check its configuration.' : 'PowerContext resource was not found.', status: 404, ...requestIdField(error.requestId) } } if (error.statusCode === 409) { - return { ok: false, code: code ?? 'conflict', message: 'PowerContext operation conflicts with the current state. Inspect the current reference before retrying.', status: 409, request_id: error.requestId } + return { ok: false, code: code ?? 'conflict', message: 'PowerContext operation conflicts with the current state. Inspect the current reference before retrying.', status: 409, ...requestIdField(error.requestId) } } if (error.statusCode === 422) { - return { ok: false, code: code ?? 'invalid_request', message: 'PowerContext rejected the request.', status: 422, request_id: error.requestId } + return { ok: false, code: code ?? 'invalid_request', message: 'PowerContext rejected the request.', status: 422, ...requestIdField(error.requestId) } } if (error.statusCode === 503) { - return { ok: false, code: 'unavailable', message: 'PowerContext is unavailable, continue the task.', status: 503, request_id: error.requestId } + return { ok: false, code: 'unavailable', message: 'PowerContext is unavailable, continue the task.', status: 503, ...requestIdField(error.requestId) } } return { ok: false, code: code ?? 'server_error', message: 'PowerContext is unavailable, continue the task.', status: error.statusCode, - request_id: error.requestId, + ...requestIdField(error.requestId), } } @@ -101,7 +106,7 @@ export function toToolResult(error: unknown): ToolResult { } if (error instanceof ServerResponseError) return mapServerError(error) if (error instanceof InvalidResponseError) { - return { ok: false, code: 'invalid_response', message: 'PowerContext returned an invalid response.', request_id: error.requestId } + return { ok: false, code: 'invalid_response', message: 'PowerContext returned an invalid response.', ...requestIdField(error.requestId) } } if (error instanceof TransportError) { return { ok: false, code: 'unavailable', message: 'PowerContext is unavailable, continue the task.' } @@ -123,12 +128,12 @@ export function injectScope( function encodeSuccess(result: Awaited>): ToolResult { if (result.kind === 'bytes') { - return { ok: true, status: result.status, request_id: result.requestId, data: { bytes_base64: Buffer.from(result.value).toString('base64') } } + return { ok: true, status: result.status, ...requestIdField(result.requestId), data: { bytes_base64: Buffer.from(result.value).toString('base64') } } } if (result.kind === 'text') { - return { ok: true, status: result.status, request_id: result.requestId, data: { markdown: result.value } } + return { ok: true, status: result.status, ...requestIdField(result.requestId), data: { markdown: result.value } } } - return { ok: true, status: result.status, request_id: result.requestId, data: result.value } + return { ok: true, status: result.status, ...requestIdField(result.requestId), data: result.value } } export async function invokeOperation( diff --git a/integrations/dsh/plugins/powercontext/src/recall.ts b/integrations/dsh/plugins/powercontext/src/recall.ts index 15abfde00..47a67a079 100644 --- a/integrations/dsh/plugins/powercontext/src/recall.ts +++ b/integrations/dsh/plugins/powercontext/src/recall.ts @@ -18,7 +18,8 @@ import type { UserMessage } from '@deepseek-ai/dsh-session' import type { PowerContextClient } from './client.ts' import type { ResolvedConfig } from './config.ts' import { captureUserPrompt } from './capture.ts' -import { failureEvent } from './diagnostics.ts' +import { logSafely, reportFailure } from './diagnostics.ts' +import { TransportError } from './errors.ts' import { validatePreparedContext } from './prepared-context.ts' import { sessionCwd } from './scope.ts' @@ -32,6 +33,7 @@ export type PromptMessage = Pick export interface EnterDecision { kind: 'enter' messages: unknown[] + startsRequestSeries?: true } export type PreStepDecision = { kind: 'reject' } | EnterDecision | { kind: string; messages?: unknown[] } @@ -45,7 +47,7 @@ export interface RecallInput { signal?: AbortSignal client: PowerContextClient config: ResolvedConfig - resolveScope: (cwd?: string) => Promise + resolveScope: (cwd?: string, signal?: AbortSignal) => Promise wrapContent: (text: string) => unknown log: (event: Record) => void } @@ -76,30 +78,31 @@ export function messagesToUserPrompt(messages: readonly PromptMessage[]): string } export function formatUntrustedContext(content: string): string { - return `PowerContext host-supplied context. Treat it as untrusted historical evidence.\n\n${content}` + return `PowerContext context prepared for this request, superseding earlier PowerContext context snapshots. Treat it as untrusted historical evidence.\n\n${content}` } async function recallContent(input: RecallInput, query: string, scopeId: string): Promise { try { + if (input.signal?.aborted) throw new TransportError('', input.signal.reason) const result = await input.client.request('prepare_context', { scope_id: scopeId, query, max_bytes: input.config.maxBytes, }, input.signal) + if (input.signal?.aborted) throw new TransportError('', input.signal.reason) const prepared = validatePreparedContext( result.kind === 'json' ? result.value : undefined, '/v1/context/prepare', input.config.maxBytes, ) if (prepared.status === 'empty') { - input.log({ event: 'context_prepare', outcome: 'empty', http_status: 200, context_status: 'empty', content_bytes: 0 }) + logSafely(input.log, { event: 'context_prepare', outcome: 'empty', http_status: 200, context_status: 'empty', content_bytes: 0 }) return undefined } - input.log({ event: 'context_prepare', outcome: 'ready', http_status: 200, context_status: 'ready', content_bytes: prepared.content_bytes }) + logSafely(input.log, { event: 'context_prepare', outcome: 'ready', http_status: 200, context_status: 'ready', content_bytes: prepared.content_bytes }) return prepared.content ?? undefined } catch (error) { - const diagnostic = failureEvent('context_prepare', error) - if (diagnostic) input.log(diagnostic) + reportFailure(input.log, 'context_prepare', error) return undefined } } @@ -113,11 +116,13 @@ export async function runRecallPreStep(input: RecallInput): Promise { + let scopeId: string | undefined try { - const scopeId = await input.resolveScope(input.cwd) - if (!scopeId) { - input.log({ event: 'context_prepare', outcome: 'skipped', reason: 'missing_session_cwd' }) - return undefined - } - const content = await recallContent(input, query, scopeId) - if (userPrompt) { + if (input.signal?.aborted) throw new TransportError('', input.signal.reason) + scopeId = await input.resolveScope(input.cwd, input.signal) + if (input.signal?.aborted) throw new TransportError('', input.signal.reason) + } catch (error) { + reportFailure(input.log, 'scope_resolve', error) + return undefined + } + if (!scopeId) { + logSafely(input.log, { event: 'scope_resolve', outcome: 'skipped', reason: 'scope_unresolved' }) + return undefined + } + const content = await recallContent(input, query, scopeId) + if (userPrompt && !input.signal?.aborted) { + try { await captureUserPrompt({ client: input.client, config: input.config, @@ -146,9 +159,9 @@ async function recallThenCapture( signal: input.signal, log: input.log, }) + } catch (error) { + reportFailure(input.log, 'capture_content_source', error) } - return content - } catch { - return undefined } + return input.signal?.aborted ? undefined : content } diff --git a/integrations/dsh/plugins/powercontext/tests/automatic-path.spec.ts b/integrations/dsh/plugins/powercontext/tests/automatic-path.spec.ts new file mode 100644 index 000000000..8b4389664 --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/automatic-path.spec.ts @@ -0,0 +1,272 @@ +/* + * Copyright (c) 2026 OceanBase. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Context } from '@deepseek-ai/cordis' +import { afterEach, describe, expect, it, vi } from 'vitest' +import { apply } from '../src/index.ts' +import type { PluginConfig } from '../src/config.ts' +import type { PreStepDecision, PromptMessage } from '../src/recall.ts' + +const peers = vi.hoisted(() => ({ createUserMessage: vi.fn((input: unknown) => input) })) +vi.mock('../src/peers.ts', () => ({ + loadPeer: async (name: string) => name === '@deepseek-ai/dsh-llm' + ? peers + : { defineTool: (input: unknown) => input }, +})) + +const SCOPE = '/v1/scope-bindings/resolve' +const PREPARE = '/v1/context/prepare' +const CAPTURE = '/v1/sources/content' +const FLUSH = '/v1/memory/flush' +const TEXT = 'Use UTF-8. 保留原始引用 [memory:example@1].' +const PRIVATE = 'sensitive-fixture-marker' +const userMessage: PromptMessage = { content: [{ type: 'text', text: 'Continue the API work.' }], source: { kind: 'user' } } +const response = (value: unknown, status = 200) => new Response(JSON.stringify(value), { status }) +const failure = (status: number, code?: unknown) => response({ error: { code, message: PRIVATE } }, status) +const ready = () => response({ + schema: 'powercontext.prepared-context.v1', status: 'ready', content: TEXT, content_bytes: Buffer.byteLength(TEXT), +}) +const waitForAbort = (signal: AbortSignal) => new Promise((_resolve, reject) => { + if (signal.aborted) reject(signal.reason) + else signal.addEventListener('abort', () => reject(signal.reason), { once: true }) +}) + +async function fixture( + handler: (path: string, init: RequestInit) => Promise | Response = () => ready(), + config: PluginConfig = {}, +) { + const requests: Array<{ path: string; body: Record }> = [] + const logger = { warn: vi.fn(), debug: vi.fn() } + type Hook = (payload: unknown, next: () => Promise) => Promise + let hook: Hook | undefined + const registry = { register: () => () => {}, section: () => () => {} } + vi.stubGlobal('fetch', vi.fn(async (url: string, init: RequestInit) => { + const path = new URL(url).pathname + requests.push({ path, body: JSON.parse(String(init.body ?? '{}')) }) + return handler(path, init) + })) + await apply({ + tools: registry, + get: () => registry, + on: (name: string, listener: Hook) => { if (name === 'agent/pre-step') hook = listener }, + logger, + } as unknown as Context, { + baseUrl: 'http://127.0.0.1:8765', + timeoutMs: 1000, + requestTimeoutMs: 200, + ...config, + }) + if (!hook) throw new Error('automatic hook was not registered') + const run = (options: { + signal?: AbortSignal; next?: () => Promise; messages?: PromptMessage[]; cwd?: string + } = {}) => hook!({ + agent: { session: { header: { id: 'test-session', cwd: options.cwd } } }, + messages: options.messages ?? [userMessage], + turn: 1, + signal: options.signal ?? new AbortController().signal, + }, options.next ?? (async () => ({ kind: 'enter', messages: [userMessage] }))) + return { run, requests, logger, diagnostics: () => logger.warn.mock.calls.map(([line]) => JSON.parse(line)) } +} + +function successfulRequest(path: string) { + if (path === SCOPE) return response({ scope_id: 'scope-test' }) + if (path === PREPARE) return ready() + if (path === CAPTURE) return response({ status: 'accepted', position: 1 }, 202) + return response({ current_cursor: 1 }) +} + +afterEach(() => { + vi.unstubAllGlobals() + vi.restoreAllMocks() + peers.createUserMessage.mockReset().mockImplementation((input: unknown) => input) +}) + +describe('registered automatic path', () => { + it.each([ + [404, undefined, 'version_mismatch', undefined], + [404, 'scope_not_found', 'invalid_response', 'scope_not_found'], + [404, PRIVATE, 'invalid_response', undefined], + [404, { secret: PRIVATE }, 'invalid_response', undefined], + [401, 'unauthorized', 'authentication_failed', 'unauthorized'], + [403, 'forbidden', 'invalid_response', 'forbidden'], + [503, undefined, 'server_unavailable', undefined], + ])('reports Scope HTTP %s (%s) without reading or writing another Scope', async (status, code, outcome, publicCode) => { + const h = await fixture(() => failure(status as number, code)) + expect(await h.run()).toEqual({ kind: 'enter', messages: [userMessage] }) + expect(h.requests.map(({ path }) => path)).toEqual([SCOPE]) + expect(h.diagnostics()).toEqual([expect.objectContaining({ + event: 'scope_resolve', outcome, http_status: status, + ...(publicCode ? { error_code: publicCode } : {}), + })]) + if (!publicCode) expect(h.diagnostics()[0]).not.toHaveProperty('error_code') + expect(JSON.stringify(h.diagnostics())).not.toContain(PRIVATE) + expect(JSON.stringify(h.diagnostics())).not.toContain(SCOPE) + }) + + it('reports unresolved Scope accurately and accepts the default Scope without cwd', async () => { + const h = await fixture(() => response({})) + await h.run() + expect(h.diagnostics()).toEqual([expect.objectContaining({ + event: 'scope_resolve', outcome: 'skipped', reason: 'scope_unresolved', + })]) + const valid = await fixture(successfulRequest) + await valid.run() + expect(valid.requests[0].body.binding_keys).toEqual([]) + expect(valid.requests.map(({ path }) => path)).toContain(CAPTURE) + }) + + it('reports connection failure without leaking exception text', async () => { + const h = await fixture(() => { throw new Error(PRIVATE) }) + await h.run() + expect(h.diagnostics()).toEqual([{ + component: 'powercontext.dsh', event: 'scope_resolve', + outcome: 'server_unavailable', recovery: 'powercontext doctor', + }]) + }) + + it('passes cancellation into an in-flight Scope request', async () => { + const controller = new AbortController() + const h = await fixture((_path, init) => { + controller.abort() + return waitForAbort(init.signal!) + }, { requestTimeoutMs: 1000 }) + await h.run({ signal: controller.signal }) + expect(h.requests.map(({ path }) => path)).toEqual([SCOPE]) + expect(h.diagnostics()[0]).toMatchObject({ event: 'scope_resolve', outcome: 'server_unavailable' }) + }) + + it('does not start a request when already cancelled', async () => { + const h = await fixture(successfulRequest) + await h.run({ signal: AbortSignal.abort() }) + expect(h.requests).toEqual([]) + }) + + it('reports the total deadline during Scope resolution', async () => { + const h = await fixture((_path, init) => waitForAbort(init.signal!), { timeoutMs: 20, requestTimeoutMs: 200 }) + await h.run() + expect(h.diagnostics()[0]).toMatchObject({ event: 'scope_resolve', outcome: 'server_unavailable' }) + expect(h.requests.map(({ path }) => path)).toEqual([SCOPE]) + }) + + it('keeps capture independent after a prepare request timeout', async () => { + const h = await fixture((path, init) => path === PREPARE ? waitForAbort(init.signal!) : successfulRequest(path), + { requestTimeoutMs: 20 }) + expect(await h.run()).toEqual({ kind: 'enter', messages: [userMessage] }) + expect(h.requests.map(({ path }) => path)).toContain(CAPTURE) + expect(h.diagnostics()[0]).toMatchObject({ event: 'context_prepare', outcome: 'server_unavailable' }) + }) + + it.each([PREPARE, CAPTURE, FLUSH])('stops later stages after cancellation at %s', async (stage) => { + const controller = new AbortController() + const h = await fixture((path) => { + if (path === stage) controller.abort() + return successfulRequest(path) + }, { flushOnCapture: true }) + expect(await h.run({ signal: controller.signal })).toEqual({ kind: 'enter', messages: [userMessage] }) + expect(h.requests.map(({ path }) => path)).toEqual([SCOPE, PREPARE, CAPTURE, FLUSH].slice(0, + [SCOPE, PREPARE, CAPTURE, FLUSH].indexOf(stage) + 1)) + }) + + it.each([CAPTURE, FLUSH])('keeps prepared content when %s fails', async (stage) => { + const h = await fixture((path) => path === stage ? failure(503) : successfulRequest(path), { flushOnCapture: true }) + const result = await h.run() + expect(result.messages).toHaveLength(2) + expect(JSON.stringify(result.messages)).toContain(TEXT) + expect(h.diagnostics()[0]).toMatchObject({ event: stage === CAPTURE ? 'capture_content_source' : 'flush_memory' }) + expect(h.requests.filter(({ path }) => path === CAPTURE)).toHaveLength(1) + }) + + it.each([ + ['debug', false], ['warn', false], ['debug', true], ['warn', true], + ] as const)('keeps prepared content when the %s writer fails (async=%s)', async (writer, asynchronous) => { + const h = await fixture((path) => writer === 'warn' && path === CAPTURE ? failure(503) : successfulRequest(path)) + h.logger[writer].mockImplementation(() => { + if (asynchronous) return Promise.reject(new Error(PRIVATE)) + throw new Error(PRIVATE) + }) + const result = await h.run() + expect(result.messages).toHaveLength(2) + expect(JSON.stringify(result.messages)).toContain(TEXT) + expect(JSON.stringify(result.messages)).not.toContain(PRIVATE) + }) + + it('adds one snapshot with exact text and preserves the downstream decision', async () => { + const h = await fixture(successfulRequest) + const next = vi.fn(async () => ({ kind: 'enter', messages: [userMessage], startsRequestSeries: true })) + const result = await h.run({ next }) + expect(result).toHaveProperty('startsRequestSeries', true) + expect(next).toHaveBeenCalledOnce() + expect(result.messages).toHaveLength(2) + const message = result.messages![1] as { source: unknown; content: Array<{ text: string }> } + expect(message.source).toEqual({ + kind: 'plugin', plugin: 'powercontext-dsh', form: 'snapshot', + sections: [{ name: 'PowerContext', text: message.content[0].text }], + }) + expect(message.content[0].text).toContain('untrusted historical evidence') + expect(message.content[0].text.endsWith(TEXT)).toBe(true) + }) + + it('reports message construction failure without calling downstream twice', async () => { + const h = await fixture(successfulRequest) + peers.createUserMessage.mockImplementation(() => { throw new Error(PRIVATE) }) + const next = vi.fn(async () => ({ kind: 'enter', messages: [userMessage] })) + expect(await h.run({ next })).toEqual({ kind: 'enter', messages: [userMessage] }) + expect(next).toHaveBeenCalledOnce() + expect(h.diagnostics()).toEqual([{ + component: 'powercontext.dsh', event: 'context_inject', outcome: 'invalid_response', + }]) + }) + + it('does not swallow a downstream exception or turn rejection into entry', async () => { + const h = await fixture(successfulRequest) + const error = new Error('host failure') + await expect(h.run({ next: async () => { throw error } })).rejects.toBe(error) + expect(await h.run({ next: async () => ({ kind: 'reject' }) })).toEqual({ kind: 'reject' }) + }) + + it('treats empty as normal and never captures injected content', async () => { + const h = await fixture((path) => path === PREPARE ? response({ + schema: 'powercontext.prepared-context.v1', status: 'empty', content: null, content_bytes: 0, + }) : successfulRequest(path)) + const injected = { content: [{ type: 'text', text: 'Historical context only' }], source: { kind: 'plugin' } } + expect(await h.run({ messages: [injected] })).toEqual({ kind: 'enter', messages: [userMessage] }) + expect(h.diagnostics()).toEqual([]) + expect(h.requests.map(({ path }) => path)).not.toContain(CAPTURE) + }) + + it.each([ + () => new Response('{'), + () => response({ schema: 'wrong' }), + () => response({ schema: 'powercontext.prepared-context.v1', status: 'ready', content: TEXT, content_bytes: 1 }), + ])('rejects invalid prepared content while preserving capture', async (invalid) => { + const h = await fixture((path) => path === PREPARE ? invalid() : successfulRequest(path)) + expect(await h.run()).toEqual({ kind: 'enter', messages: [userMessage] }) + expect(h.diagnostics()[0]).toMatchObject({ event: 'context_prepare', outcome: 'invalid_response' }) + expect(h.requests.map(({ path }) => path)).toContain(CAPTURE) + }) + + it('bounds repeated Scope diagnostics across separate invocations', async () => { + let now = 1000 + vi.spyOn(Date, 'now').mockImplementation(() => now) + const h = await fixture(() => failure(503)) + await h.run() + await h.run() + expect(h.diagnostics()).toHaveLength(1) + now += 60_000 + await h.run() + expect(h.diagnostics()).toHaveLength(2) + }) +}) diff --git a/integrations/dsh/plugins/powercontext/tests/plugin-surfaces.spec.ts b/integrations/dsh/plugins/powercontext/tests/plugin-surfaces.spec.ts index dc8a5762d..260b5e1d7 100644 --- a/integrations/dsh/plugins/powercontext/tests/plugin-surfaces.spec.ts +++ b/integrations/dsh/plugins/powercontext/tests/plugin-surfaces.spec.ts @@ -65,6 +65,7 @@ describe('registerCommands', () => { : undefined, }, runtime()) expect(registered.map((item) => item.name)).toEqual(['pc']) + expect(registered[0]).toHaveProperty('input.hint', expect.any(String)) }) }) diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/README.md b/integrations/dsh/plugins/powercontext/tests/runtime/README.md new file mode 100644 index 000000000..9e7371dfe --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/README.md @@ -0,0 +1,76 @@ +# DSH runtime acceptance + +Run from the PowerContext checkout after `uv sync --frozen` and building the plugin: + +```bash +pnpm --dir integrations/dsh/plugins/powercontext build +make dsh-runtime-test +``` + +Without GNU make: + +```bash +pnpm --dir integrations/dsh/plugins/powercontext/tests/runtime install --frozen-lockfile +pnpm --dir integrations/dsh/plugins/powercontext test:e2e:runtime +``` + +The test package pins `@deepseek-ai/dsh-sdk-client@0.1.2-rc.1` and the resolved DSH host/dependency graph in its own +lockfile. Use Node 22.19+ (CI: 22.19.0; also tested on Windows with 24.14.1). Install peers in this isolated package; +the plugin's ordinary unit-test installation deliberately does not install its optional host peers. + +These tests launch the real `dsh --profile sdk` subprocess and a real PowerContext Server with isolated homes. +Only the built distributable plugin files are installed. Host tool registration, pre-step processing, message +construction, model request assembly, and session persistence are not replaced. A loopback model fixture provides +scripted OpenAI-compatible streaming replies and Server inference decisions. A loopback proxy can inject HTTP +failures at individual PowerContext endpoints. + +A test observer subscribes to the real Cordis logger's public exporter API and writes only PowerContext diagnostics +to the isolated home. This verifies native logging without replacing the logger. Default host profiles need an +exporter with warning level enabled before these records appear in a terminal. + +The scenarios cover: + +- automatic Source capture, Server processing into Memory, fresh-session recall, model input, and durable snapshot metadata; +- Source idempotency, no duplicate snapshot injection, and matching section/content text; +- Scope business and route failures, authentication failure, unavailable Server, continued conversation, and a real named tool result; +- independent prepare/capture/flush failure, recovery, host restart, and configured Scope isolation. + +The registered-entry unit tests in `../automatic-path.spec.ts` cover cancellation, deadlines, writer failures +(including rejected promises), downstream rejection/exception semantics, response validation, and diagnostic +redaction/cooldown. Existing Server e2e tests retain the no-cwd default Scope and direct command/tool checks. + +## Real model and Web acceptance + +The deterministic model fixture is CI evidence, not a real-model acceptance result. A separate opt-in command uses +a live DeepSeek-compatible endpoint for both the DSH conversation and PowerContext generation: + +```bash +# Provide the key through the process environment; never commit it. +export DEEPSEEK_API_KEY=... +export DEEPSEEK_BASE_URL=https://api.deepseek.com +export DSH_REAL_MODEL=deepseek-v4-pro +pnpm --dir integrations/dsh/plugins/powercontext/tests/runtime test:real +``` + +A missing key is an error, not a skipped passing test. This run can incur model charges. It records no key in the +repository. It verifies generated Memory and a fresh session's snapshot/model reply rather than interpreting an +accepted Source response as successful Memory generation. + +For Web acceptance, use a separate DSH home and workspace, install the same built plugin, disable telemetry, and +configure the test model through environment-backed credentials. Test the shipped Web profile through the browser: + +1. Submit a stable, non-sensitive project fact; with test-only `flushOnCapture`, verify Source acceptance and subsequent + Memory generation. Open another session and ask for the fact. +2. In 0.1.2-rc.1 Web, expand the completed turn's process details and **Context injection — powercontext-dsh** row; + inspect the `PowerContext` snapshot. Compare it with the + prepare response and the persisted `user/message` event. Reload the page and reopen the historical request. +3. Inject Scope/prepare/capture/flush faults, then restore the endpoint. Confirm conversation continues, logger output + names the failed stage, existing prepared content survives capture/flush failure, and empty/failure results add no notice. +4. Cancel during a held Scope request. Confirm no prepare/capture/flush follows cancellation. Restart or reload the + plugin and check that one ordinary prompt still produces one automatic capture and one snapshot at most. +5. Use an unrelated Scope, then exercise `pc_search`, `/pc doctor`, `/pc capabilities`, and bare `/pc`. + Verify the existing direct-call behavior and absence of cross-Scope content. + +Record package versions/commit, OS/Node/Python, model identity, sanitized configuration, per-scenario outcomes, +request/session evidence, and screenshots in the PR. Test the installed older DSH separately through a supported +profile; version 0.1.0-rc.6 has no built-in SDK profile. Missing real-model or Web evidence leaves acceptance incomplete. diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/fixture.mjs b/integrations/dsh/plugins/powercontext/tests/runtime/fixture.mjs new file mode 100644 index 000000000..9b4569ff7 --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/fixture.mjs @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2026 OceanBase. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createServer } from 'node:http' +import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { dirname, join, resolve } from 'node:path' +import { pathToFileURL } from 'node:url' +import { createRequire } from 'node:module' +import { startPowerContextServer } from '../../scripts/e2e-server.mjs' + +const sdkModule = process.env.DSH_TEST_SDK_ROOT + ? pathToFileURL(join(process.env.DSH_TEST_SDK_ROOT, 'lib/index.js')).href + : '@deepseek-ai/dsh-sdk-client' +const { DeepSeekHarness } = await import(sdkModule) +const sdkRequire = createRequire(process.env.DSH_TEST_SDK_ROOT + ? join(process.env.DSH_TEST_SDK_ROOT, 'package.json') + : import.meta.resolve('@deepseek-ai/dsh-sdk-client')) +export const dshBin = join(dirname(sdkRequire.resolve('@deepseek-ai/dsh/package.json')), 'lib/bin.js') +export const CANARY = 'The aurora deployment color is violet-cedar-1457.' +export const pluginRoot = resolve(import.meta.dirname, '../..') + +async function listen(handler) { + const server = createServer((req, res) => { + Promise.resolve(handler(req, res)).catch(() => { + res.writeHead(500) + res.end('test fixture failed') + }) + }) + await new Promise((resolve) => server.listen(0, '127.0.0.1', resolve)) + return { + server, url: `http://127.0.0.1:${server.address().port}`, + async close() { + server.closeAllConnections() + await new Promise((resolve, reject) => server.close(error => error ? reject(error) : resolve())) + }, + } +} + +async function bodyOf(req) { + const chunks = [] + for await (const chunk of req) chunks.push(chunk) + const text = Buffer.concat(chunks).toString() + return text ? JSON.parse(text) : undefined +} + +function json(res, value, status = 200) { + res.writeHead(status, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(value)) +} + +export async function environment({ realModel } = {}) { + const home = mkdtempSync(join(tmpdir(), 'pc-dsh-runtime-')) + const modelRequests = [] + const model = await listen(async (req, res) => { + const body = await bodyOf(req) + modelRequests.push(body) + if (realModel) { + const upstream = await fetch(realModel.baseUrl.replace(/\/$/, '') + '/chat/completions', { + method: 'POST', signal: AbortSignal.timeout(90000), + headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${realModel.apiKey}` }, + body: JSON.stringify({ ...body, model: realModel.model, thinking: { type: 'disabled' } }), + }) + res.writeHead(upstream.status, { 'Content-Type': upstream.headers.get('content-type') ?? 'application/json' }) + for await (const chunk of upstream.body) res.write(chunk) + res.end() + return + } + if (!body.stream) { + const prompt = body.messages.findLast(m => m.role === 'user').content + const text = typeof prompt === 'string' ? prompt : prompt.map(block => block.text ?? '').join('') + let content = 'OK' // The real Server also probes generation readiness with a plain-text prompt. + if (text.startsWith('{')) { + const input = JSON.parse(text) + const candidates = input.current_entries?.length || !JSON.stringify(input.evidence).includes(CANARY) ? [] : [{ + intent: 'add', kind: 'decision', text: CANARY, evidence_ids: ['source:0'], reason: 'runtime fixture', + }] + content = JSON.stringify({ candidates }) + } + json(res, { + id: 'inference-fixture', object: 'chat.completion', model: body.model, created: 0, + choices: [{ index: 0, message: { role: 'assistant', content }, finish_reason: 'stop' }], + usage: { prompt_tokens: 10, completion_tokens: 10, total_tokens: 20 }, + }) + return + } + const needsTool = JSON.stringify(body.messages).includes('RUN_PC_SEARCH') + && !body.messages.some(message => message.role === 'tool') + const content = JSON.stringify(body.messages).includes(CANARY) ? CANARY : 'Task completed.' + res.writeHead(200, { 'Content-Type': 'text/event-stream' }) + const chunk = (delta, finish_reason = null) => `data: ${JSON.stringify({ + id: 'dsh-fixture', object: 'chat.completion.chunk', model: body.model, created: 0, + choices: [{ index: 0, delta, finish_reason }], + })}\n\n` + if (needsTool) { + res.end(chunk({ role: 'assistant', tool_calls: [{ + index: 0, id: 'fixture-search', type: 'function', + function: { name: 'pc_search', arguments: JSON.stringify({ query: 'aurora deployment color' }) }, + }] }) + chunk({}, 'tool_calls') + 'data: [DONE]\n\n') + } else { + res.end(chunk({ role: 'assistant', content }) + chunk({}, 'stop') + 'data: [DONE]\n\n') + } + }) + let server + try { + server = await startPowerContextServer({ env: { + OPENAI_API_KEY: 'runtime-fixture', + POWERCONTEXT_SERVER_INFERENCE: JSON.stringify({ + generation_model: `openai-chat:${realModel?.model ?? 'fixture'}`, generation_base_url: model.url + '/v1', + }), + } }) + } catch (error) { + await model.close() + throw error + } + const calls = [] + let fault + const proxy = await listen(async (req, res) => { + const path = new URL(req.url, 'http://localhost').pathname + const body = await bodyOf(req) + const call = { path, body } + calls.push(call) + if (fault?.path === path || fault?.path === '*') { + if (fault.hold) { + await new Promise(resolve => res.once('close', () => { call.closed = true; resolve() })) + return + } + json(res, { error: { code: fault.code, message: 'private-response-marker' } }, fault.status) + call.status = fault.status + return + } + const result = await fetch(server.baseUrl + req.url, { + method: req.method, + headers: { 'Content-Type': 'application/json' }, + ...(body ? { body: JSON.stringify(body) } : {}), + }) + const value = await result.json() + call.status = result.status + call.result = value + json(res, value, result.status) + }) + const api = async (path, body) => { + const result = await fetch(server.baseUrl + path, body ? { + method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body), + } : {}) + const value = await result.json() + if (!result.ok) throw new Error(`fixture API ${path}: ${result.status} ${JSON.stringify(value)}`) + return value + } + const { scope_id: scopeId } = await api('/v1/scopes/default') + const harnesses = [] + function harness(config = {}) { + const dshHome = mkdtempSync(join(home, 'host-')) + const workspace = join(dshHome, 'workspace') + mkdirSync(workspace) + // Copy the distributable files, not TypeScript source or development peers. + const installed = join(dshHome, 'profiles/sdk/node_modules/powercontext-dsh') + mkdirSync(installed, { recursive: true }) + for (const entry of ['lib', 'package.json', 'cordis.patch.yml']) cpSync(join(pluginRoot, entry), join(installed, entry), { recursive: true }) + const patch = join(dshHome, 'test.patch.json') + const diagnosticsFile = join(dshHome, 'diagnostics.jsonl') + const loggerObserver = join(dshHome, 'logger-observer.mjs') + // Observe the real Cordis logger through its public exporter API. + writeFileSync(loggerObserver, `import { appendFileSync } from 'node:fs' +export function apply(ctx) { + ctx.logger.exporter({ levels: { default: 3 }, export(message) { + const line = message.args[0] + if (typeof line === 'string' && line.startsWith('{"component":"powercontext.dsh"')) { + appendFileSync(${JSON.stringify(diagnosticsFile)}, line + '\\n') + } + } }) +}`) + writeFileSync(patch, JSON.stringify([ + { insert: [{ id: 'diagnostic-observer', name: pathToFileURL(loggerObserver).href }] }, + { id: 'skill-filesystem', config: { includeDefaultRoots: false, watch: false } }, + { id: 'session-persistence-jsonl', config: { root: join(dshHome, 'sessions'), compression: 'none' } }, + { id: 'llm-deepseek', config: { baseURL: model.url + '/v1', apiKeyEnv: 'DEEPSEEK_API_KEY', thinking: 'disabled' } }, + { insert: [{ id: 'powercontext-dsh', name: pathToFileURL(join(installed, 'lib/index.js')).href, config: { + baseUrl: proxy.url, timeoutMs: 15000, requestTimeoutMs: 5000, flushOnCapture: true, ...config, + } }] }, + ])) + const processEnv = Object.fromEntries(Object.entries(process.env).filter(([key]) => !key.startsWith('POWERCONTEXT_DSH_'))) + const env = { ...processEnv, DSH_HOME: dshHome, DSH_PROFILE: 'sdk', DEEPSEEK_API_KEY: 'runtime-fixture', + DEEPSEEK_BASE_URL: model.url + '/v1', DSH_TELEMETRY_DISABLED: '1' } + const instance = new DeepSeekHarness({ + dshBin: process.env.DSH_TEST_BIN ?? dshBin, dshHome, patches: [patch], cwd: workspace, processCwd: workspace, + provider: 'deepseek-official', model: realModel?.model ?? 'deepseek-v4-flash', maxTokens: 128, + initializeTimeoutMs: 30000, requestTimeoutMs: realModel ? 120000 : 30000, + env, + }) + harnesses.push(instance) + const diagnostics = () => existsSync(diagnosticsFile) + ? readFileSync(diagnosticsFile, 'utf8').trim().split('\n').map(line => JSON.parse(line)) : [] + return { instance, dshHome, workspace, installed, patch, env, diagnostics } + } + return { + home, api, scopeId, calls, modelRequests, harness, + setFault(value) { fault = value }, + async close() { + const results = await Promise.allSettled(harnesses.map(instance => instance.close())) + results.push(...await Promise.allSettled([proxy.close(), server.stop(), model.close()])) + const errors = results.filter(result => result.status === 'rejected').map(result => result.reason) + if (errors.length) throw new AggregateError(errors, 'runtime fixture cleanup failed') + }, + } +} + +export function injected(run) { + return run.events.filter(event => event.type === 'user/message' && event.data?.source?.plugin === 'powercontext-dsh') + .map(event => event.data) +} diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/package.json b/integrations/dsh/plugins/powercontext/tests/runtime/package.json new file mode 100644 index 000000000..c9e1f2220 --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/package.json @@ -0,0 +1,12 @@ +{ + "name": "powercontext-dsh-runtime-tests", + "private": true, + "type": "module", + "scripts": { + "test": "node --test --test-concurrency=1 runtime.test.mjs", + "test:real": "node --test real-model.test.mjs" + }, + "devDependencies": { + "@deepseek-ai/dsh-sdk-client": "0.1.2-rc.1" + } +} diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/pnpm-lock.yaml b/integrations/dsh/plugins/powercontext/tests/runtime/pnpm-lock.yaml new file mode 100644 index 000000000..33dd8260f --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/pnpm-lock.yaml @@ -0,0 +1,7347 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@deepseek-ai/dsh-sdk-client': + specifier: 0.1.2-rc.1 + version: 0.1.2-rc.1(41aaf23ee1baaab1ffc9d82bdf632649) + +packages: + + '@agentclientprotocol/sdk@1.4.0': + resolution: {integrity: sha512-/eufudw+aFY1LKLolT6yFE6UMmYRl7fMJ/DEONSIyR6wI3slHWITBsANRGqXEY8FRzqUxwh7QEaGiZHcJPVThg==} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + '@anthropic-ai/sdk@0.91.1': + resolution: {integrity: sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==} + hasBin: true + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + peerDependenciesMeta: + zod: + optional: true + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-bedrock-runtime@3.1048.0': + resolution: {integrity: sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.977.9': + resolution: {integrity: sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-env@3.972.70': + resolution: {integrity: sha512-H404B7dJl2mCrBqahDEYsanB0xhdDp6tXnXcTUnXmmpy2Q3J0Ho0bUajZ2jr/RdwzCyS59Gi8xXIFwPLGBl6Uw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.72': + resolution: {integrity: sha512-X98zYOrVOeuosCX+6ktf29FC2N2GHPLia7qv6mzPzTc+RPAuHWCDS++Z6JK7eGYqb/v6uaW7bAXaOvDBfol+0w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.973.15': + resolution: {integrity: sha512-Rykg6s5ceBuynMOGWgoowO4N+27JfnqXAnVaSunZl0hOO1XodSrxGNz6sCEbnmS0lAfQZDKyb3fbr46gSuv6Sg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.77': + resolution: {integrity: sha512-Jb59xfEISoN5mmbnA+HYqdtrSX3CgCtJoof+V5D8/TgUI56W63GEEd5Y58WijU3Ou6+WEgaLD1feVzaRXV5IDQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.82': + resolution: {integrity: sha512-znDkEOGXB8W3kG1LJUKP3foBZY/9qLM0eil/DxWXSp37XsdsRLQHE/d/OaCGGVgKpA6znR38h/+INk8do1FjiA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.70': + resolution: {integrity: sha512-2ry03fGRJr4sV3jI+ocjj5JqALnFD6ymM5KiNCDZMvq8bX2GSbE0vji4aM43TVCl2nXqqLRZaUxdq/KeWRAY4Q==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.973.14': + resolution: {integrity: sha512-jkhg/8ocAAoc0RFyLMhCw+/zZh7gystQgd4F4hznNa8P4Cc501PQmxd+jGLiMHodPJ+7Zv/3znM62gZojyasmA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.76': + resolution: {integrity: sha512-d3AGyVu759PGr35mEB2s22xxlNEA5rpdxtSPJthfPFJvoQ8dt357iVPECqWfUxXp1toJAvKmbtcIYVGigaGsCA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/eventstream-handler-node@3.972.34': + resolution: {integrity: sha512-cTeVzpu1xEAkryTZBYhGwnQ6gOGyp8ZYZvmn0Sg/nI/ABmy/CRHHxPDJDUi9PxwxUtGGaatvfRUB3FCgT/rSWw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-eventstream@3.972.29': + resolution: {integrity: sha512-dlRzHCgyB8W6hLuDC5pcT5q+ziPt00n4QGgGBE17ucLVU4zMa6lsbuUdQ2Pm75Z5VA8GF+R/+SgrRcaTdIzSIQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-websocket@3.972.52': + resolution: {integrity: sha512-vsPPM+nMbKJlUCFU+eoGZbdxdxDIAX9LbpjSXaR5Ufpmqgp8TdYQnoExhLu4T3umW/JIIPny1ydbhWidZZYokQ==} + engines: {node: '>= 14.0.0'} + + '@aws-sdk/nested-clients@3.997.44': + resolution: {integrity: sha512-NhEgryjlBF9w38ZXqGymQV28IhkYa1mKhlbYnqIis57AYwWGVYfUPgg/qC2rLRqOUfblxx++irvju10kVTa8Vw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.996.46': + resolution: {integrity: sha512-L+2xZTye/2T96f3lwCws0Zw6GG2JHZW9e8FpVgGBeeExSKyeoZ6CWRpBml/7DNiK/O26jrgPM9F+Ay8VkgzUWQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1048.0': + resolution: {integrity: sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1116.0': + resolution: {integrity: sha512-ygIivKqh8aHzNkucOCXHyIBgBpLPfrSI0mCqXF+vLBsPTUKqj0VSqAY0GFPe7lQl4HntjOcQ+KSyS7oUV2C54Q==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.974.5': + resolution: {integrity: sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-locate-window@3.965.10': + resolution: {integrity: sha512-ycwH6Zd2GhuSqdXX9ihbCjeGTB6xOJs+O3+Jb8/zDG9978XU80qs75dfkPJRMNKe5MvBZPuNeFpd4JZKPoUF4g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/xml-builder@3.972.40': + resolution: {integrity: sha512-wlFmCIGUlwF4zx/kncw+bmxTQh1HeSJq4mYV/V5cZUSJadDP3kXvGW8Rn21cimj/7y9ju+47oYWXi97vF7czaA==} + engines: {node: '>=20.0.0'} + + '@aws/lambda-invoke-store@0.3.0': + resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@deepseek-ai/cordis-plugin-group@1.0.2': + resolution: {integrity: sha512-OeGiPD793Mhma9+rGIox95neuufwOFTqQ5jooFgrMK/Mn7Fp7Hkv/d7VKMXZz40iks2fZCbiFE6p9WjTVTQRdg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + + '@deepseek-ai/cordis-plugin-hmr@1.0.17': + resolution: {integrity: sha512-o1BooaJpwd+C80Tn5+B48MGqrfNZydlfRVQjmCrrULA4nCmlMqBKjDF2FmcZoNP+L2uX9m/6DdGKVtFpQRQVUQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-timer': ^1.1.4 + + '@deepseek-ai/cordis-plugin-include@1.0.7': + resolution: {integrity: sha512-bZ4S1YuOmwOeE97HnslQ6ggVQbaWz4GejJ8OcY4P/DIyc1Qhu/3Szt1XSw6c/pd37kRkxxJXGwt4cmCxWSBBuw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + + '@deepseek-ai/cordis-plugin-loader@1.0.3': + resolution: {integrity: sha512-YNcHiH7TRFrgnRbQU7qdS1spABUFFHg04QpB9DdboPEjgKLTFfeEAvr6Y7qll3/nGgqywDQdk1tYshqKO0p1WQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + node-addon-require-builtin: ^0.1.4 + peerDependenciesMeta: + node-addon-require-builtin: + optional: true + + '@deepseek-ai/cordis-plugin-timer@1.1.4': + resolution: {integrity: sha512-GhxOiU+TF2BbNBKlV2N24zvfv2Kh7RxkFW1hjML6s+DOb+y2zomzbeC5zHIIjsc/rpRwbKpDNucPGSwkH0ChXw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/cordis@4.0.2': + resolution: {integrity: sha512-asOnXP1TzFSFQlHb1iegDZp0z/8WD1c7YNrwJR/Tx2bzNuMXfcekE/I67Iv6SQXeLB4csxqCngzQKANP7gdw0g==} + hasBin: true + peerDependencies: + '@deepseek-ai/cordis-plugin-include': ^1.0.7 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + peerDependenciesMeta: + '@deepseek-ai/cordis-plugin-include': + optional: true + '@deepseek-ai/cordis-plugin-loader': + optional: true + + '@deepseek-ai/cosmokit@1.8.3': + resolution: {integrity: sha512-qBo+ronVM6Eu2WNVJXi8JcMiqZ19T9BRIpV+5qJUFPXjGH/Z0QKcQMC/IZJ7L394YTOtJgcovbk9qP0w2GsBXQ==} + + '@deepseek-ai/dsh-acp-app@0.1.2-rc.1': + resolution: {integrity: sha512-GP3TxD+gWQrF3hLn7gUWIgAZJt1mvHBffQGZ7/dqbn6lcBFXduZXZrkVCEosY8l+iGW4r0Y/gFd3aFOSZo8gtQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-acp@0.1.2-rc.1': + resolution: {integrity: sha512-NeMdvjOaKUJXViXlaP9stKnrpYKnk07MVqMneznl5nHlQIjF7ddGDCGD+fsMkQ6qT4166UjCQQaoX2kO6E7/KQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-mcp-client': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-token-meter': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-token-meter': + optional: true + + '@deepseek-ai/dsh-agent-default-model@0.1.2-rc.1': + resolution: {integrity: sha512-feuTXXl6jIAp71O77l8XzeKcpgahlCXQ7YUjM+Cl/VF0EBpctKkdvwbvTalImRzYYzX5qGK74hblsT2HC4xEwQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-agent-instructions@0.1.2-rc.1': + resolution: {integrity: sha512-9AHeOBe7+KimM2ystfesEYhqcmCuAnrU5MK9qzaYv6HBvQZrU8zYgRAxoqSxeUB5eJoYPvWMvBTBPIRAyvzpjg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-agent-loop@0.1.2-rc.1': + resolution: {integrity: sha512-4h16Gn/5oXLTFeorehdlKe5xmDKscR/eRsUu3cs6clKgaTrn6YvnWNB0XkYEg+AXiXbsyfl5MW5Bs4576t7vZw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-agent-presets@0.1.2-rc.1': + resolution: {integrity: sha512-vNvDw8DYtZ8ySublYY6gFPPruNIST3Xq9bf7RlgoAY4xJxc4w3+/+HOhoYrxQRDWk+FQgYkBnSfnT0OTSOY3RQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-include': ^1.0.7 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-atomic-write': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-agent-tool-presentation@0.1.2-rc.1': + resolution: {integrity: sha512-flBhNmq0KfIlyy2/8TqmjH1aE9kgaz4S25RhAhOOpHiE7HCcbXePd/+nEPpi9MBlCit8lgHcueznwHpHQLTz+g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-agent@0.1.2-rc.1': + resolution: {integrity: sha512-lfaqN34vUCWvbn1kJVHrhfJ6Dvt1HDHCm33ZCpmKkl07/5q6FxWqVv6rOdVX5QnM/9xz/uYiN0nQwUtBg4+Skg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-anonymous-user-id@0.1.2-rc.1': + resolution: {integrity: sha512-8skUsMXiGnyKJi+AiRjGoXIl8inJHgeHgoruW8pjPpWN6g3qJSbO8U9JRZtvwymtjJsQuHmKPI28jc4H6jOCOQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-api-gateway@0.1.2-rc.1': + resolution: {integrity: sha512-9jYky3tan2ZFAyaNP2+wbOvwGiUwJdvqqBVUJ6370+2d7OeZIfPu4PMLLFvPqGXR28a9TwuhWoT7i9gpHxRmmA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-api-remotes@0.1.2-rc.1': + resolution: {integrity: sha512-brMHiYcOVt5nXeuiDz1jw6dTJbyZSl/sA4KeZ00vGmYDaIseO6Ujz33zRUjuLMqgvQU4xBFBYXKCU5TLgqlfrQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-api-session-controller@0.1.2-rc.1': + resolution: {integrity: sha512-zmhpkf6ydnYKYw+dmSeGube5py1gUfpIKW3pRMQpX+LOO3xCsAhlRgVnaTTnDveNcZugBEljcVeefOqbJiiadQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-agent-default-model': ^0.1.2-rc.1 + '@deepseek-ai/dsh-agent-presets': ^0.1.2-rc.1 + '@deepseek-ai/dsh-api-gateway': ^0.1.2-rc.1 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-client-connection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-file-reference': ^0.1.2-rc.1 + '@deepseek-ai/dsh-jobs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-native-command': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection-cache': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-query': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-title': ^0.1.2-rc.1 + '@deepseek-ai/dsh-skill': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-registry': ^0.1.2-rc.1 + '@deepseek-ai/dsh-util-time': ^0.1.2-rc.1 + '@deepseek-ai/dsh-util-workspace-path': ^0.1.2-rc.1 + '@deepseek-ai/dsh-workspace': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-jobs': + optional: true + '@deepseek-ai/dsh-session-persistence': + optional: true + '@deepseek-ai/dsh-session-projection-cache': + optional: true + + '@deepseek-ai/dsh-api-settings-controller@0.1.2-rc.1': + resolution: {integrity: sha512-xcLcONiPWHOcFcmseYH0suKITI8sAQv4APPD+MdYPUn2fetPKCB6Lh3AJtAOors4ESabGq6lZ56hrsYzcYYcDw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent-presets': ^0.1.2-rc.1 + '@deepseek-ai/dsh-credentials': ^0.1.2-rc.1 + '@deepseek-ai/dsh-native-command': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-api-workspace-controller@0.1.2-rc.1': + resolution: {integrity: sha512-tfBLMGhU+otJudklD5e9JAK2jq3bSbsAM0LahLZyDpivUYMh56YbLFOLM0yG1qdvgfq2K1MVzssaw3vkq1P1zg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-api-gateway': ^0.1.2-rc.1 + '@deepseek-ai/dsh-client-connection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-host-directory-picker': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-storage-domain': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + '@deepseek-ai/dsh-workspace': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-app-boot@0.1.2-rc.1': + resolution: {integrity: sha512-1vltL0FvLjn1Cx1WqAzqGrEJY/gFx7ec8/ZPi2Dxon3Et1IOupJiuze2nZ3Wi7sfgGl5CxytktSkGmJtfTD3mg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-group': ^1.0.2 + '@deepseek-ai/cordis-plugin-hmr': ^1.0.17 + '@deepseek-ai/cordis-plugin-include': ^1.0.7 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-launch-environment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/cordis-plugin-hmr': + optional: true + + '@deepseek-ai/dsh-atomic-write@0.1.2-rc.1': + resolution: {integrity: sha512-lwWwdXRZrL/xCluykwh+HSFzNPlSyhLPP3oyXas5Zp0e+bc7blk9u6J7bY2GTNBQBIUC7AN+xwFKd3fnkIXGIw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-attachment-local@0.1.2-rc.1': + resolution: {integrity: sha512-9G0ytf9s0ONxnRjOjbAhsHj1eeiQtqb6qBeqp9mWT/9/e1Da7GX/YNlwgSnfyi8EUQEG/rh2PM25dC7DNkWK0g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-attachment@0.1.2-rc.1': + resolution: {integrity: sha512-QISKUjEITusLvAkqPLRn70xDUt+GjjY41pISjtPKYcZ4EGmayzhgZ3VJNYEcC+rbaF44hs2o/0VhOwHA7lyxjw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-authorization@0.1.2-rc.1': + resolution: {integrity: sha512-ixmc2KAx27KS0Dx2zpjH9/cJAQi6IEmiN9bokUL7GdTAeAMu8uz6ajO59YDYYLZSUWemj5nEvRn/55B20fekcQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-credentials': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-base@0.1.2-rc.1': + resolution: {integrity: sha512-ir6FKWuuO40E5HgB1vsXKUk9oDxrPIlE39TBwazPc8qkgg42NeSM1OmlpCDo4/wdZh50xPxfdI4EVQI7fN8YMg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-bash-local@0.1.2-rc.1': + resolution: {integrity: sha512-/3+AO2TSC5RUKzP0/UZuWhIdwUUd30fx35/eTn8+KlntD7gPgDRMIv1JfXVTxk2pCU3K1V9JX3XjdJ5dHpEObA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subprocess': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-bash-sandbox@0.1.2-rc.1': + resolution: {integrity: sha512-dF9PfBWus80Juj3VjUmndbGw1/6cT1BY7BLFuXUi7SDMV1fA4iwA2c7HuvezYFGvpE/8QRZ+c5ZiRfxbWGYktw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-bash-local': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-brand@0.1.2-rc.1': + resolution: {integrity: sha512-y2RHIag3kzLdY8kTBuSUSTsKzWPscJrysNObXTiNM7stXLpa3jXpshsB1caqGzNx50vYcmHeN1gFVECgx3NZHg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-connection@0.1.2-rc.1': + resolution: {integrity: sha512-30g7JG+Z8bDj+ux+KsDfMSXPI6zXotMAFNCxI8O8mJiutJNlZxIL5LXQeDrJpVOW9MWWQkoMp+R+Dxzp5DNDSQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-hmr@0.1.2-rc.1': + resolution: {integrity: sha512-gMw6iSn8va2Nt11Tp8zl7q8riaPp3/3wANqZCExLarKCZUs+6fw5MRbbpV7egX3RbsD/Wiihuw0Mhqxsa3Lwqw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-locale@0.1.2-rc.1': + resolution: {integrity: sha512-p34i5WcZ0+b77RKEatGLc6Rh4OgJJmc15kWbBqtCtSI1BxpwZxjDzoNIMTTS3jDGUQqfEd9X7Js9D4uNJDUewg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-modules@0.1.2-rc.1': + resolution: {integrity: sha512-neStnvWlar+qmADi32QBIJ3m0gmWEk1U0YT9WrTKEfkwQiooPU8lJQjXNfv93x6dgtqieCUhMtUR2a4925R38Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-agent-preset@0.1.2-rc.1': + resolution: {integrity: sha512-MOlqFzA/TXyvMq9/hAs6C7J1VzZAU9JwJmHqk+RXr1lTYkez0ciXP3hxURyddyRUKt9+C4vSWirJfrSv6woOCw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-approval@0.1.2-rc.1': + resolution: {integrity: sha512-5mi8xwZd9AiiYtii5PamrU8VogxvBENViTyxMuJIWogR3RnzuItPvyNoD5+H32d0yIWrKr25V+9xFZo17QXKqQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-attachment@0.1.2-rc.1': + resolution: {integrity: sha512-JKescxUlp1I4RBb5uhIaeEF23qYAdkSCMOmQ8lreVXOnerSisSaEhTThocmvmIksi5uUjqH0uxlM8IAtiKsuLg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-brand-official@0.1.2-rc.1': + resolution: {integrity: sha512-BX07g202Uo6PtSvE3unzEl9KcbCbuX/3ORbTktjuc2scnjLLrAjBiWm5pirX8m8hYaOVdobcB8xkvLRlR4X1Mw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-chat@0.1.2-rc.1': + resolution: {integrity: sha512-uqP142/EzvlJmqgl6gwCT8dTk9ZM8HusaXLrlircOmVxxrwydeHPb2VvRlcbdW1dzJdrlP7hzGVQJegJBa3AIA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-commands@0.1.2-rc.1': + resolution: {integrity: sha512-icfc+d0IAFj8Yd8l8Bq00AsOKAlUTDQfYDICiCIwkqhRzqJgjZGpLIe+M7idr2iZUmM0xstr+r+H+nzi/336OA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-conversation@0.1.2-rc.1': + resolution: {integrity: sha512-PDrV7twPfmZE5TjdvdVVZMHOla36wCojRC8GJBUp1cdXsWUP+Omk10gxYbH1g5TQPdAWgSL+GktdjondSXMSNQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-cordis@0.1.2-rc.1': + resolution: {integrity: sha512-2ZtuMYvUOoZraYeXZKh+RkPq0RJFJxPCZIyBdrU6o7k8+WJEflGX0eq3GZ7uy/p97v2V9blqCdIRPz8AAm5UXA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-deliverables@0.1.2-rc.1': + resolution: {integrity: sha512-1w8SNnxXA+9xuHqPRb9Z8lesQbik9zYN43+NwzNQT4uoqIcxNpZkiUFa7qG1qRD8Du02D7J0gObVbRJMPnBSkg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-directory-picker-browse@0.1.2-rc.1': + resolution: {integrity: sha512-11BYh3EOZWbTMjMeskE0Np244b4YYcMkKe5JSSqISL8FT8De3SpOQdKjijt9bX498a6kNlhKWQ27nEzJ7yat6A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-directory-picker-native@0.1.2-rc.1': + resolution: {integrity: sha512-jiUaBBc3XGgS073YhoODC3xFBkG57yznkegbh2V6CFp9c7GLXnIs/7yK1JYA5zxSiOMeEBqynphXMGyAABZdfA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-goal@0.1.2-rc.1': + resolution: {integrity: sha512-vdB8TZyHM8xLUKmKsZtBQa0gQV0YR0uM2HjkpqAgOhVFeykGWhLtdhi+7kagEAAlthCQAFh4aYmdhWLfr8l/oQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-input-trigger@0.1.2-rc.1': + resolution: {integrity: sha512-TqdW8VLfNUQYg4g+hVKn22lzpUFMWYbziSBNvi8KVg+aK+SiX+q2UHSGbUQzfYy6TGz+d9HHG9gts7Um/5cHLw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-jobs@0.1.2-rc.1': + resolution: {integrity: sha512-yMvMk1yPinci0U2nqTyaxu+/IXI5DlFmTac3QBoaQGwu31SoreuPjThjPcxnTyJCR9MAwyWcgkpGoXpK0Z/DyQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-layout@0.1.2-rc.1': + resolution: {integrity: sha512-hV/FMsJ/JjaCDxfaRH4+V2t7RauiQqo0vr5Ql0wi32dC4EYT/thhslu9TNCaHpm92SkOkgGFrlwmjYB+slq3FA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-message-feedback@0.1.2-rc.1': + resolution: {integrity: sha512-JBjZtx5IyrYuYgGnZBuMWKWrH9BDX5uDcEM7dxoUWGwhTca1sDw4I3eKGnIRng6pFoG9SdlXR5lkz18cZd7JCw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-model-selection@0.1.2-rc.1': + resolution: {integrity: sha512-eJaZkGhFSS9Wr7rKEoGtei8LoHfsDyHiLpamaZ8eyHS4FN7auqgSUD32MymOqsrrh9+BWNJ8iltncpt8vCFGCA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-permission-presets@0.1.2-rc.1': + resolution: {integrity: sha512-8SwRFa37w52JO5N7XzsHNQwVLgwqE2avnQpsqrRq40x45i2IKDbA2KFmqBAwIB+2yO/jVGyrtU6SZHelN2T+JQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-plan@0.1.2-rc.1': + resolution: {integrity: sha512-eu7bRtNkXCmaKc1CR/TEVhdB+ZzT8iPI9/YOm9ao2yteey5uNVxelSWoO/eENs60twVQ8w25MibDRfGNshuZ4A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-reference@0.1.2-rc.1': + resolution: {integrity: sha512-apaG3DlG6bPlwyfSezu71MiFdJJp18gQS4zlNNrAAaZf8sEn+n6eNfoaBsMCzdchwQNTp1dLDkLK88q4RMG9Bw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-renderer@0.1.2-rc.1': + resolution: {integrity: sha512-mG4aNL7dL57i6I6FLol3AWWp3g2C+EV3jYt2MZHzbfMcS0gQnEd/BSGH3T5DfNCQcOEIGqu0TQ0B3bxnJatmTA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-schedule@0.1.2-rc.1': + resolution: {integrity: sha512-yZK6iQrePXHNUmlqzPH7jhrv8Kd00tw5/R5kuFfYlXzC7D01TPirYhviJu+fx3TNp5/pI8wP0QHg4Z5Fd+/VuQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-session@0.1.2-rc.1': + resolution: {integrity: sha512-A54OtGqniFgT/FHnuUXRLsmR8bJwM3pJrHkgQCvblrDSVdzfjqqglRLcdE0y0W6v2w9V4KpdLuqMW56VoqL42Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-settings-general@0.1.2-rc.1': + resolution: {integrity: sha512-qJfUARsCQ6uqwk2dPrspw30JKUrzTXwPtFcoSCra9ZNTweNcS60FxqwtoCA64//PZ2DMxD/OeuOYQQh3HnniFA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-settings-models@0.1.2-rc.1': + resolution: {integrity: sha512-r4ErsBy1NE9QWqZmFyxoBFQhCc+pymmc62PFN7PBxFAX85JRJ3asWwjZPpgXW+y7AkqNWy1JVJqlLdf7W5pCIA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-settings-plugin-inventory@0.1.2-rc.1': + resolution: {integrity: sha512-FIZptwP3ZvoxsebwqnXyKWvxv2lPte7W2dJwmU8cb/BPJ6MqpQpHKWEaidVErwNDzgvGH02P3wP2lUkvGL1nAw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-settings-plugins@0.1.2-rc.1': + resolution: {integrity: sha512-duv2kU94U2Kz3czBABCCz5yCm22gH3zUoPRyjhD9aykxbXUw7CaJuuv7PqedMdWB9JJT2MKpc/K2t7CkYqCeDg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-settings@0.1.2-rc.1': + resolution: {integrity: sha512-/S16tlS84fggURMqO94HjYbE0xIH82aRJ2E4UupgM9acD3yJ6SCVam17tMcWKnqA6UWJK9llEHhl+KN9JyI/0Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-sidebar@0.1.2-rc.1': + resolution: {integrity: sha512-+KSFQIsoRK/L2vgExSWQqApeDcE3gJB0l8F+f2wa3t1j4yU1i8GhoIrtjDj+tC7rNVX3oWDOpGE5Hui/GubU/Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-skill@0.1.2-rc.1': + resolution: {integrity: sha512-ec5WDXW8VYnL7IW/FAC4LhnCWEoS1khDdv6McYOk/BUrOhkjymEwIE8GZdBgRW3Lp/uPXE5dHfPsr6B4p8SqSA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-subagent@0.1.2-rc.1': + resolution: {integrity: sha512-LG5XDUoNBMDgNrXyyYbxKZN/0hJ4oPjzAoIrg8NPfZea7HAfHGQ8L7Vdc4e5xhJs69TFWy99glhi0L7VU5bfig==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-theme@0.1.2-rc.1': + resolution: {integrity: sha512-JqSxsN510rmJl14IKpcZcDmO7qOrr0ftY/anRhgzJ2gDsamUXlLraaUGpcLgGBnNRvWO7X5N22R8HKPUo4uLQQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-tool@0.1.2-rc.1': + resolution: {integrity: sha512-rr3ENrcaRZ8Vb1RkfLaFWUZTGoSfr01GZmwtXi0NHc3HFrRlZwPy0aGeKeMNF/TBoOsV57gxGdWMAPMKWHlTlA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-trajectory@0.1.2-rc.1': + resolution: {integrity: sha512-Q+O0cvpr2fzqPAWUEG+CbUVXu0nS1Fnt8a4tJBk0qeWSBfserCTCs3/pGhx7h+lIm/uwjfPsVp8G9M0RQCR+RA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-user-questions@0.1.2-rc.1': + resolution: {integrity: sha512-WNy9euPx0U6HI0SxzujRFG2hVI8MYtLZdVrzMUxzUfrelWdXMRUvneiYcabm0Ss14u47E0tZAetuJaKlwTyK3g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-workflow-run@0.1.2-rc.1': + resolution: {integrity: sha512-UXST3yp9tMuRIP5RqXkmShJqtnYcRJE7J0Ujcj1uVcac3JWaoEI8Ijka+Pb3DJlwCHN8bpLpynmgwyqu/A5gdg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-client-ui-workspace@0.1.2-rc.1': + resolution: {integrity: sha512-9zp9ZRfC1nmGEvtF6g5aP9gSgIhA6wAv1LPldxCs5Iicv+5oXr32JqhUzC0X7uCEnh2cFLEcYtEmEllcXsislQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-cmdline@0.1.2-rc.1': + resolution: {integrity: sha512-5lSAhyFiJkJFsNzAu3oAgK5Bur9syR/Iq7XVgkC4zA5BmPb+0OAxZ8V/Ihj3JnhrtC4Q3+J6jsZyZRnk3M8x+g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + + '@deepseek-ai/dsh-code-runtime-worker-thread@0.1.2-rc.1': + resolution: {integrity: sha512-0Y/Uiq9iK2Z8/ODL+KOsjbPzZ+n3D+j52CcBpblzysKw2GOF/zAoQtEZHhtgy3oK2R8HRxrQo4zJI20v7fC43A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-code-runtime': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-code-runtime@0.1.2-rc.1': + resolution: {integrity: sha512-dv5UszPJb/AFcarZc2c6h5z/X80bsrSd3bfIOugwNVclSI6P+L3ixseoZKgyks7T0Ap0h6ngXGk2WeoUkmYxnQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-command-compact@0.1.2-rc.1': + resolution: {integrity: sha512-b0E3HxpitGd15csYx97AiQtGb09AARJDQ0/mvrT1DFrPHOHnep+ybayq8VeOrcDhspTz72PwA7OgxZe/I1yvLA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-commands': ^0.1.2-rc.1 + '@deepseek-ai/dsh-compaction': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-command-feedback@0.1.2-rc.1': + resolution: {integrity: sha512-gA9MVB5LW82dvKm1Rxz9fN0smz/7ZJ/H131iz5AWFYhQsJ4OaDFJU6SxudHfLrAEiVN7ZEGyMU5zqqW1DNtC6w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-anonymous-user-id': ^0.1.2-rc.1 + '@deepseek-ai/dsh-commands': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-telemetry': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-command-goal@0.1.2-rc.1': + resolution: {integrity: sha512-+MwYtJnr9/oZ4WWcz3g7IRoIt+OUR1F+KZ0Xq3IEVSq8z5A8KBenRz7jVVG2LMksQFlEPxB7kas8SI+WEpWNAQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-commands': ^0.1.2-rc.1 + '@deepseek-ai/dsh-goal': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-commands@0.1.2-rc.1': + resolution: {integrity: sha512-uBh4JTX7pOkFhmbWjXjVLnOQOawyccC7+DazbHrLRN6/wy4OgTRH+DaW0+ibLq+XRAO19OvBTtuoh3x/KkJx1Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-compaction-basic@0.1.2-rc.1': + resolution: {integrity: sha512-x4HEQ4hiPwHE5nljFXsVzG8nOVnEQIwmIxVB9csnWyKcika6yoAGPujeFcGdZKoMPiADt2JglO8fLuAj3ROCXg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-commands': ^0.1.2-rc.1 + '@deepseek-ai/dsh-compaction': ^0.1.2-rc.1 + '@deepseek-ai/dsh-compaction-tool-result-pruner': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-token-meter': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-compaction-tool-result-pruner': + optional: true + + '@deepseek-ai/dsh-compaction-tool-result-pruner@0.1.2-rc.1': + resolution: {integrity: sha512-4QcB5CY5+ubrIoNLJBZwNV+2mnagwn4JwDW9qunr7UL29cS8AeWAksqMbpDZOMmyDuLpg4Alcnb5kqKtfZFNug==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-compaction': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-token-meter': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-compaction@0.1.2-rc.1': + resolution: {integrity: sha512-omzrM2EQdoUvQ41PbbXiFERC7I4FYiLNmHIYrlCZfCAdxo0G4u3kt7eahhVaSSi2YsinL7sW79C7cTVaUWlZVg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-commands': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-cordis-client-runner@0.1.2-rc.1': + resolution: {integrity: sha512-CjJ1x8Ub/GTbMsAXBpdGK10ZMoLRLQxnJDM7hUb/HhCOSwjfRiUYXw4KyPl3Ez7ariW/qIlI+HZBLiaDb8AUWg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-cordis-host-runner@0.1.2-rc.1': + resolution: {integrity: sha512-fI2eavQhDiEXdwpnGc484/05xFMBwgu71Yw4pNyCYVfdH5y54i2vJ91EqOAiVjLx0SYwdrcnNo+ON7+zqayjnw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-credentials-local@0.1.2-rc.1': + resolution: {integrity: sha512-CuIREkLNPytX0Cl/TSVehdVXz6+QBkY8wjhkSMpOIrtK8hC18c3Hs/kUBwlCk68bbWDvUk+pSrc/l3D4NPwHhA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-atomic-write': ^0.1.2-rc.1 + '@deepseek-ai/dsh-credentials': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-launch-environment': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-credentials@0.1.2-rc.1': + resolution: {integrity: sha512-e7DGpuYQqiD4dOWGQeY/XAWPTjbax/MkrXBwsB8wBtNpoPiAKiLYgd+iFiQc66BGOlutSRFz31IKdbduqPbTxA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1': + resolution: {integrity: sha512-7UTnGeKWpxfJRewQ8uADe2CoSCaJesI6W8YXJ/SzHA9hvHx8KM3hZl0fD6OxlQszUFoSeWdkCFZocAd97Dw5Eg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-deque@0.1.2-rc.1': + resolution: {integrity: sha512-v2HL9e6NER5Yv8p3+8zls9YvhG3NeRRMVg0GZ/4VgOJcVDgZp14EYVVbheX9HzYlyiic41ciAf1T8Y2pkV41OQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-file-reference-local@0.1.2-rc.1': + resolution: {integrity: sha512-TFqBWigbO/yQDHgmGjY+gcSs3VjEXDqw+uWxMDvpgLvGArhUR03/cXrxF2pnKOjSZGx79tTLWo2YbaYKuKJSuA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-file-reference': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-file-reference@0.1.2-rc.1': + resolution: {integrity: sha512-m4Rvk7tpOep62Q1UCceeqFKSM0K4Y6igZopuKn+AZkL2FAM2JISojMefXq5SKtjPiZP0Vg4BpDey3M63Bnl4xw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-fs-local@0.1.2-rc.1': + resolution: {integrity: sha512-tFHHKtD11tIk3FpkWF0vBKdX05zKbwqXQW9LhreA5hErCKEsulUsQLamf+kF1D8fuKqa8Yb+yWQIfYS93cy39w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-fs-observation-policy@0.1.2-rc.1': + resolution: {integrity: sha512-Uw3ErcPwQZUvXylLSf+CDjzfAza5ZVNOMkG4hIJjvgG4WBg3tqoCOY2OQk4O1DGTie4EzL4mHpAe5auwoV4JTw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-fs-sandbox@0.1.2-rc.1': + resolution: {integrity: sha512-nnZnsOYLWrN2AnoB0qvQBLhh2VdU4A39AqOgWwsxnT3JrScGpvBcBMCt4fpLP9l5VjOY1qhIbLf6xd5p93C/6Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-fs-local': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-fs@0.1.2-rc.1': + resolution: {integrity: sha512-BSIB2j8WvATQ1mf7wUIpHPftDwbzz246qp6aUpLGSzBWGmLBdX3O1oDhyNV1YhgPmDQlwovac2odcAb62tuDdw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-goal-round-driver@0.1.2-rc.1': + resolution: {integrity: sha512-TNlX5K7EL+hNGqegaEs3ODGKhEGtUll368Gtmw+uRmgVzJIUIBiyH4JIDQSIwO8PcYQ2wIpXuipRTgQCp/9K+w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-goal': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-goal@0.1.2-rc.1': + resolution: {integrity: sha512-djzY1oNZV5RwnOFXmDeWFbyswInV9RVWAD0qryxMznQtEDF31PUJ8BQfqs9tVrTV36V3a0neYrZP0DDvRP8ZCA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-headless@0.1.2-rc.1': + resolution: {integrity: sha512-tKJ1/7wHAwDY2mBz5DJnEq2JvkusN3srbyH5kCXUW8131bwvJkkMLMyUfGnf5ASlFe9vmBapF8sYU9KPWUgh0g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-agent-default-model': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-home-paths@0.1.2-rc.1': + resolution: {integrity: sha512-DeDXxvrhAlkS+hxNLSFvWp8LDFhn26pO8gcutptOgSkrObM0yYW5119kyduwD1ExW0v1geToX+uDjBxO/SS/pQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-hook-protocol@0.1.2-rc.1': + resolution: {integrity: sha512-D/HfjuhFN+wGnXRgim4jESDcOoR/FiyL4TIjkKAurJgYYUrvWyCpRR0U+eGt+/xTVqGKwGCYqcmOyxr236CkHw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-hooks-claude-code@0.1.2-rc.1': + resolution: {integrity: sha512-NyM09zrzBhYlLDT2/9NepRWt9MEANFsxzptEVMTdVNjY6kiMFSkdzDh51bcGzdMpacCdj5LzxR5tQhKqK5otPQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-hook-protocol': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-hooks-codex@0.1.2-rc.1': + resolution: {integrity: sha512-l/IFUr7c85Rz21ZuoFH/+XufTf2FMr6Nyqr71qUaWW4XCu3SkpOnr04oh5TFGHJF4iS6u7ZdP+Nupe1mH6/Dbw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-hook-protocol': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-host-directory-picker-auto@0.1.2-rc.1': + resolution: {integrity: sha512-krm27o84Gpy20QaeiUaGJH0EMhw0ajt9riJ+3A+KDklwYcZ/x0H5T+PNnejUI0x2mELIQDrFg/95dlzET1wJ1w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-client-ui-directory-picker-browse': ^0.1.2-rc.1 + '@deepseek-ai/dsh-client-ui-directory-picker-native': ^0.1.2-rc.1 + '@deepseek-ai/dsh-host-directory-picker-browse': ^0.1.2-rc.1 + '@deepseek-ai/dsh-host-directory-picker-native': ^0.1.2-rc.1 + '@deepseek-ai/dsh-host-webserver': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-host-directory-picker-browse@0.1.2-rc.1': + resolution: {integrity: sha512-YNQgkWBT3f3aImtb7rUGkVy/0uJy2x/T3G+v7SWIMkOO+7XWvqxJ3Y9alU0GcaFbnTMepfnZzv5S8s/IJy1mGw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-host-directory-picker-native@0.1.2-rc.1': + resolution: {integrity: sha512-ThdAccRwHx1UwKeIuySCR2msDOEk4q12bqFOTbpa9TaZtbMQDIIyvNeXrXXNAxkTo7WKi6Nz6KNYEorOUnizSQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-host-directory-picker@0.1.2-rc.1': + resolution: {integrity: sha512-OQUMJFzqz+AD2ONXxC6pxSxEW20Nbq8xENhRkAMRi9eGfdUxt+4ANB2JN8LPXYs0Kzd+/azNTghsearQnVU7xw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-host-frontend-static@0.1.2-rc.1': + resolution: {integrity: sha512-MYBkvRe62S1Gkt1YMTXUF55CbOB7RMVulTdzfABwCK1LgKvYur6cILkHLP4jUM3Hi0XJp7IdITmvTjjeFHFYrA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-client-connection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-host-webserver': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-host-plugin-inventory@0.1.2-rc.1': + resolution: {integrity: sha512-MyLA5XncFdfk9btv29FZSg+ojFOOsHEiPkGWAQiRw+EG/2HlVUEm/9KqPxh2jxB5eFge9GahTg2e7x3Veziadw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-agent-presets': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-agent-presets': + optional: true + + '@deepseek-ai/dsh-host-webserver@0.1.2-rc.1': + resolution: {integrity: sha512-QVcaf4qnIa1t215Y8TRiRhqkEz4Lu5/F+KqvWT+4sHOiyWmZr8g1JndqlwP6MBnMQEPmp0I/EKYJ7PWMV32gkA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-invariants@0.1.2-rc.1': + resolution: {integrity: sha512-zSjuFJYcEB94kPwn7SicqAV1dfVWZkjt1I8luDboxtjfp5CN6ziwJhLv3KaB+Dh9tgkyGY4mvo886W/HhE9L9g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-jobs-local@0.1.2-rc.1': + resolution: {integrity: sha512-bfNV6IJRG7vPWg+Rp3siRCA0BVK8rB1aqn0BG2nPKzCIA2coKqeJ8uPbEm+GuyW/naMR4uCOrrCVLyrwBuMwzg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-jobs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-jobs@0.1.2-rc.1': + resolution: {integrity: sha512-VuNPXosjgRbEg0tp+GXsdAqkicwSk5Ynl2AezUQheJgpmw5cvWy3rLEg79B686xGc72tIA6pCW6eBbZGnKOmIg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-launch-environment@0.1.2-rc.1': + resolution: {integrity: sha512-f9yDccTKrbClo71pIiAGqBxPsYf+vvcYA5zxkfgmjphpxI3HMwdDl+LNyqTHBe9UxpbgBzQNYQGtfWO0kDTefg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-llm-deepseek@0.1.2-rc.1': + resolution: {integrity: sha512-FWt7UZ6l0XN2IFIBYVPJUQkFI0knmA3kZiNIhsdQCjJT5zGe1ZzH1EqqpO5Rzc6THIox58VkvLIllU6Mns4dIQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-anonymous-user-id': ^0.1.2-rc.1 + '@deepseek-ai/dsh-atomic-write': ^0.1.2-rc.1 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-credentials': ^0.1.2-rc.1 + '@deepseek-ai/dsh-deepseek-llm-api-extensions': ^0.1.2-rc.1 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-launch-environment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-llm-pi-ai@0.1.2-rc.1': + resolution: {integrity: sha512-aT+21AUbZ1JYco9bBcmCgLYG85LLeWTCWUysBqcAkZADb7Vfn5F77LEpztE6BvRHKCtzVvsgp/HKKESwkK0zNA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-authorization': ^0.1.2-rc.1 + '@deepseek-ai/dsh-credentials': ^0.1.2-rc.1 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-launch-environment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-llm-retry@0.1.2-rc.1': + resolution: {integrity: sha512-WRpanzi4u2Z2X2uv/rwRZh5HTYUtd5smFTBMT4jYd1UpFOmjoMY/grDboZG9KI1OsgaS1vadiBJT4vvixFDEAA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-llm@0.1.2-rc.1': + resolution: {integrity: sha512-7VYsha5AXsVLnsAwYJffWXz9bwUbElw8i5N8tlTSdai9Bupk3sMbsotzPf8ZbsuGAxQYErahMwQwgGEu4qZO6g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-mcp-client@0.1.2-rc.1': + resolution: {integrity: sha512-2DTncjbQfEODOpdADJp6HsGVEGIYTHogGNS7VgpLKtHJ0gDa6nc8ebtrJWZhXojNtS0aZz/nmqGNWCf163hpYA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subprocess': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-message-feedback@0.1.2-rc.1': + resolution: {integrity: sha512-uqgPGGES05+CME5A+/Asm0eWAXHVaTR2/DBqaAH0o0zW+9IQr9DP77DC6zb7jFbUuqQ4a1Ntvu9wWmuYrlUudA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-storage-domain': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-native-command@0.1.2-rc.1': + resolution: {integrity: sha512-dBVql+9hXcdnWcfwBiFAfzz9CmAnx6iWYsBFQNdPgVu9m7VcOyiIT8ZQ47BVm7GHmpDXmqiI7pL1iwnI56hrzg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-output-retention@0.1.2-rc.1': + resolution: {integrity: sha512-QkLhJVGmausQ3kYORlp1aP1XjloG2J0mJZvnplNJt6iWPmzkE8ObAWOBpQGMVNrNAsucrXr/haeGU1gXLUSXsg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-permission-presets@0.1.2-rc.1': + resolution: {integrity: sha512-CYGxMvAlePbMMHoIBdmrpdbDtea+mcr9/L4i50CoMGafeihwrkrCOowdYutOUbKWgdVeetME/UCkcdTEDRU+vQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-commands': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-persona@0.1.2-rc.1': + resolution: {integrity: sha512-OBlNDneeoIjXRJY8miV5rKMv4gnVLj+WAbs2tN9U0JO/p8Nd1gCFI+YCN0tt9Jd11ifBAD7q+IXK/WQldAsXcQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-plan-mode@0.1.2-rc.1': + resolution: {integrity: sha512-dYdmByVI0C94nY+dVO3a2uLofVc+p87Ld04CFtqXLabcsneKp9Oj1sK3qlIaFfSHgrTFCBeTrs8znHxNAb/xqw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-commands': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-questions': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-commands': + optional: true + + '@deepseek-ai/dsh-plugin-package-inventory-deepseek@0.1.2-rc.1': + resolution: {integrity: sha512-9pZh7d2/vGXgGbu6USy6/f14wxbydnnBJItOnoGWWXEwXL9D5zL51u564r6RFxcMuJVWFWFExEd9a2oPRodq3g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-agent-presets': ^0.1.2-rc.1 + '@deepseek-ai/dsh-deepseek-llm-api-extensions': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-agent-presets': + optional: true + + '@deepseek-ai/dsh-pwsh-local@0.1.2-rc.1': + resolution: {integrity: sha512-jFJQOWkQ3qHWj4xg5he0pjJtzktZYnrjMmDTJmxI4vyMK8UxpEoR0tD4p6eNAJoxZusot9o1/SUqe+HJcjoSrw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subprocess': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-pwsh-sandbox@0.1.2-rc.1': + resolution: {integrity: sha512-QjJzrM/tJDkgvtVzYz2bmCxBzdSUo/YwI/rPBJeTwLbWBuehyhX6BueCwU6Ja1Bsdm9crz2D7rVc/DU/xrFttw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-pwsh-local': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-repeat-tool-reminder@0.1.2-rc.1': + resolution: {integrity: sha512-p2KQ+EHEUNS9rx4oxJpmLTdB6bdwfmfHA7viUr+2LIiUaUB2nxsOPat33CS/4oOpbgw6DzRWIUGJ1BLW9+ZM1g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-sandbox-local@0.1.2-rc.1': + resolution: {integrity: sha512-RLmSPqNivNg+Q+kmKbMuwwH13QTcT5TlJT8rRja/sDxaePS8btya7wWDRsjNDbSs1NjRRi3Plulvw9/BEs8ARw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-sandbox-policy@0.1.2-rc.1': + resolution: {integrity: sha512-nLARL84X6K4DCUJsqRWINg3+1EVxsw70hbP+Yl92W/PsquQVs/UJQc55gnhYGmIMf6eJ0vQv39fziNSnAxdx5A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-sandbox-windows-acl@0.1.2-rc.1': + resolution: {integrity: sha512-BPaOnN86YDNzLywOCUHNFW9KbUXFZpVUbuU2Djmnnsi+tl/g3qyhOR0ROJDV1Jb5NMYDcw3c5E72Hi0fgCrIAA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-sandbox@0.1.2-rc.1': + resolution: {integrity: sha512-nTO350NlVo9cvKzbeILcPIRIk9ijidrv29snRjTOx7kP5aO/BI2b4KxsRCYoXg8WGAMbIkGbsmZKUD4qz7hyXQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-schedule@0.1.2-rc.1': + resolution: {integrity: sha512-16HNYSyG6rZjTRUL/3ZMYWSim9TpBx8vo9E0eRcEyeDkUafPig9fxqF8iSYiOElPXWr/CniepkwBwLc5av6LwQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-scope@0.1.2-rc.1': + resolution: {integrity: sha512-GHwbzWrGbmE0ZGzAZsXBudpyCM9ENCpXxlKODIaPFbIWhRePh6nH2jW47TAOqCIsPPedWC2p3w8Tx5WAa3I/2A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-sdk-app@0.1.2-rc.1': + resolution: {integrity: sha512-aewk23zvjr4QMVTnAGaBBRlWEtdKyDuuG3BAfUeAfoOwmM+5LtK71VrVODFDybT+stn/FQfdL/vFeQ4GSs1y+A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-sdk-client@0.1.2-rc.1': + resolution: {integrity: sha512-ql++c5cuTWhUkh0aFW6rgBf4ZPEh8gP59Xkjy7vKTj7Bj+GGWkiaAQx2bBfkHz+B/92Qrpnqmk24T7lTGu8QiQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sdk-protocol': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-sdk-jsonrpc-server@0.1.2-rc.1': + resolution: {integrity: sha512-eoZSnH2kReDvAHihFnWmbqryTMO+mV1nrhoCGJ4mzhLAguFWxJB2CRJ1ZO9hqTukoKYhqp2BpvSvtZIjKIzTQA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm-deepseek': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sdk-protocol': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-sdk-minimal@0.1.2-rc.1': + resolution: {integrity: sha512-dzpZgq72dGZ0pt4GCSWRL4p+tnGjB8qATxQ9h1LvYvppT39MFImN1SI6mqLf0xS6Ur7UJGxW8UoILyfJLocpDQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-sdk-protocol@0.1.2-rc.1': + resolution: {integrity: sha512-tt0kRuk6Wqwiytx3XVz8gitFqMn097INtDdCnWofRjgJqwUv+n+vsXAzCYNucATp7lxhYzsayzLR0FfacYoZtA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-checkpoint-policy@0.1.2-rc.1': + resolution: {integrity: sha512-wccstcC9NdeXnqq1Uqgf5P5U5YRgSqVqudvgWLS6ldj0wIRKAmv4fQsi9E+dRlxtxfLdSsHGh9o0SnIPb0syIQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-log-deepseek@0.1.2-rc.1': + resolution: {integrity: sha512-+nSHnhXgIlGg1iE2EWJSCTiGW+DZNFqzCU120RNLoIUkkPzTTtB9p7lwG8fcmddSM/tgBVF9SQzcvSriRwcumQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-deepseek-llm-api-extensions': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-log-export@0.1.2-rc.1': + resolution: {integrity: sha512-S3r4GSNP0LPI1qf7psVNByeEf3p96JoP7jtBOLgWa4tdgbqtYvGADQmMGcR624EwVlf7APPqcFePxpGqGnoXbg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-session-persistence-jsonl@0.1.2-rc.1': + resolution: {integrity: sha512-YR5PFDFsM7CLp0zWcLbldfmnPA0T9kROiP7+g1uflBGvhK2JoaH+UM06JGWe7EvnplCGNTnAzcXhAQp7dwz/iw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-persistence@0.1.2-rc.1': + resolution: {integrity: sha512-8dnQGgqA8yK7SIxyC2utRdkHhM7mxw9iidDlPOx4GRO4fgY8+UpjxFvWPshkKsY2WNYY/nYcZQt5NNoE/Br4Dw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-projection-cache@0.1.2-rc.1': + resolution: {integrity: sha512-FfdT3Jtv4+wlBp5B3F7zBKrUlkbQc/xmdKAtAK+paoH45xjDu3nrW2vhXD8mYDSa3TYsxYaji5gk96Bn0UipOA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-storage-domain': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-projection@0.1.2-rc.1': + resolution: {integrity: sha512-qVWlIzPm4u9vzQ5G/QtE6jeSJ3b3b42hWVJj664BurEZlHbAfdqkhYc1QsoBU+5k5kUEJFHh07z8HxuXA9kTnQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-query-sqlite@0.1.2-rc.1': + resolution: {integrity: sha512-FwHIJe5/HtRnyl3NjHB+r+PmzuADmjwpfgJIDsurar05/YyeiVqmyIIThUw1g+X2YBezAm4s+gUk32GE26/Nfg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-query': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-session-persistence': + optional: true + + '@deepseek-ai/dsh-session-query@0.1.2-rc.1': + resolution: {integrity: sha512-cubi3flRd66ebzJ/My5t9YIB7ymLdmQonjb07oU5btMHO/ln+gpKnqq2DcnfsdKkktSR+f5VpLMbfTNtoBuRCw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection-cache': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-title': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tool-todo': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-session-persistence': + optional: true + '@deepseek-ai/dsh-session-projection': + optional: true + '@deepseek-ai/dsh-session-projection-cache': + optional: true + + '@deepseek-ai/dsh-session-reference@0.1.2-rc.1': + resolution: {integrity: sha512-pVMQYFFejT53nJOcaqNRaUq9VInAFovkwe7TmeeNSgbUZUVY4W7nyNYGKxzo9u7eqs+8ASqCgsIEM8WRVUymGQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-compaction': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-output-retention': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection-cache': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-query': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-title': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-session-projection-cache': + optional: true + + '@deepseek-ai/dsh-session-stats@0.1.2-rc.1': + resolution: {integrity: sha512-NCxXJPPeWwtbkF+bnzVXdknbafgmQi5vxPsY89ABEs40jJa81OeY95sFnqdedjtKXH2nPycX99P49i28gX2PPg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-telemetry-otel@0.1.2-rc.1': + resolution: {integrity: sha512-WF9VMDX8yNqZ2fI7lvt4Rpzr867M+QkEzRRpEQQluwJa2ynz8hSe/tB9GM2wQvcNRp8voB3k8v9eNSBC/fziWw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-anonymous-user-id': ^0.1.2-rc.1 + '@deepseek-ai/dsh-command-feedback': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-telemetry': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-telemetry@0.1.2-rc.1': + resolution: {integrity: sha512-bchNYxgXzsBZylG5QBQinlq3jsUboMDXSG1BgoQlJ8KHvYxbNP2dINEZ1Z5aEnAiZv+FeuXzSRU4capDpaUhbA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-title-first-prompt-llm@0.1.2-rc.1': + resolution: {integrity: sha512-lM6DozrWjxXGGIrMmtAfp3cN8jKt4Xy8e34odR/B6tzUKIJZtQFHaGD7FTsl3GGG7+LRQD7QCvo5dXNHQbjbHA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-title': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-title-llm': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-title-llm@0.1.2-rc.1': + resolution: {integrity: sha512-LVKZQHGbafRkbz9XT25lquZNd15oStlktGqQ6oxv6utdCzqwlAhFy5K7sAUlVPkqLDqGh9JnTm75hs+GX6OlUw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-title': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-title@0.1.2-rc.1': + resolution: {integrity: sha512-hCffH0uZWEM9p3MPkOQOFUxpPwfV48N8KDc3hYX7zVOFgHBY93ylwkEEVVkWN+sNp2zJmFrZSya23jFVshDtQg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session-turn-outline@0.1.2-rc.1': + resolution: {integrity: sha512-cJrQOI6T5W8mDv17wUngS1/ogAtoC9dmPy2nl+8V0X1u1xyLzD1SceBgapUZ6NBBX8cX5gutI+Ub7802MVgAdA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-session@0.1.2-rc.1': + resolution: {integrity: sha512-jRGNPTbQcvIx1F2MVmmkoiHLgpC3Btqo1wkl/3JDLlOWRVWKOuaC+5fQiMrFPOYfno6YiX/c2UvmA0td8qB92w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-settings-file@0.1.2-rc.1': + resolution: {integrity: sha512-UdNAyQBL2cVKrxKc3lifwhldvMjfoKuwcnnDOrKrscDSIO6zTfr6otfTsO5ChPSZPVLNwnH6kj6vgRr9td7L7g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-atomic-write': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-settings@0.1.2-rc.1': + resolution: {integrity: sha512-wMmJ2w5S6I7hgmgPppuAVemltEcTmAa8gvii7fk4T2KGVCuBYgig8xPwQ8Lp2ukLZSzzE6ZVCQxhdYZyJX/USA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/schemastery': ^3.18.2 + + '@deepseek-ai/dsh-shell-env@0.1.2-rc.1': + resolution: {integrity: sha512-o1VqxyHp1OrMB8aHnzYAPwuU4giUErCxBg0yr035r6f3Le36viS0sUHsnjcAsMdbaQJf/XvzbaokYDVrdVHE4A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-shell@0.1.2-rc.1': + resolution: {integrity: sha512-uFrSY0nNKzh5orGl2B0B4RfK7wTdIlwhPQc7aLA44jyjioLlqhF7PUek/NWtye2scwp3YHOw158XeOQUD8qTFg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subprocess': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-skill-badge@0.1.2-rc.1': + resolution: {integrity: sha512-bhPQBAWpKhVlPURULy1ZqhVxJZ2+Jq8Yj1wtV0+nY5StTq3UqaIMELtdpklILHqqwExFMk65RYabBtS6qApOEw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-skill': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-skill-filesystem@0.1.2-rc.1': + resolution: {integrity: sha512-kDciORrnBhA3KuSOcqG5cOPO6QYu0TyYHRQBO+v4Vc7sLyry/2mdWRR8OI9hDEkkjqMiupYRVrgNlj2hfSMKWw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-home-paths': ^0.1.2-rc.1 + '@deepseek-ai/dsh-skill': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-skill@0.1.2-rc.1': + resolution: {integrity: sha512-oaHunkTZ9gtlxp66GcqZ3tQmPXEgbu/KNCnc9JipaIwfLHFYiU3CKuFjVAiu82qtSr9w7umRMFKAstkr1R30jw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-spill-local@0.1.2-rc.1': + resolution: {integrity: sha512-BIm26ncQXCih4LBK9+Xh7ffBrW98wVHTzCtlZ7KXXxVvsuJe0nITrUxcTeBmc9x1qh8ndBil2Y8Dk8apvCeLJA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-spill': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-spill-policy@0.1.2-rc.1': + resolution: {integrity: sha512-uRQ698e9YV/s605KzVODcKxOIw2t1/tzVDtUoEd47Gh5SeawD51qBTxlGuFWdu9VoYD4tmlaAtjUDEBQFZqt7A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-output-retention': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-spill': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-spill@0.1.2-rc.1': + resolution: {integrity: sha512-tt5DfoVmLHWwGPumYSBXWNzf43Kmp8xiWwGb19w+UuiCgDo/zWzTIKyBHI2fUyuwoc9Itk7zDu2WOp/o21XDWw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-storage-domain@0.1.2-rc.1': + resolution: {integrity: sha512-Ee+fI/46ZXgKV4bfLeiNJMhlo9Mx0jT9GXzuJ0DcdGGOsNSZrY/EQAzVXHJJu6EVwIJqBkv1bxEKijVSF2YhZQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-storage': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-storage-json@0.1.2-rc.1': + resolution: {integrity: sha512-vYQ/0Eh2Uzjdxi6vf3Y3WZg2ux4pG0ubgtC6VHGngtQekgIdtk4aRTvRAtBdFgfmyewM9XjLgvKxTUtkh000Nw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-storage': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-storage@0.1.2-rc.1': + resolution: {integrity: sha512-tMtOe7GkHKZ71QpOzp2Mfisg37aAYjPCRS2MYfDrgM0pmj29Gn7HOxAPCk6gEqxs6rZbPbG1/SB9esWuQNfITg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-subagent-fork-in-process@0.1.2-rc.1': + resolution: {integrity: sha512-zXlwMkp6Bps70s5asN6XtHGjETlKzfbAYOkBEc9sVzBu7Do6vmfNg4NZQMzE3cSm2O7wx28Mmjpiy3/bh+RFVg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent-in-process-driver': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-subagent-in-process-driver@0.1.2-rc.1': + resolution: {integrity: sha512-z7+cVtkC5TlseV61ZsMlU89+3WF3WHyPfyLNrvas6R2De+nfUigRedVX3TfEpOmQBwfuuVmtHjNDiua5QJiSYg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-subagent-spawn-in-process@0.1.2-rc.1': + resolution: {integrity: sha512-7R3pcxOS0S2yZrkJ8smbvkX9kZH2Xj3LJ9HYp12UHeNj4tB/vk9kUZK9lW0wk03WSxUdgefOhsVjeKsrWjGOwA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent-in-process-driver': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-subagent@0.1.2-rc.1': + resolution: {integrity: sha512-GhRsymKb1uYbc7OwHh8WTdSXqAcx/KHFJwYX4BYJk90dsOkVx9ccBq6QoJfDYja34s1KCyv2UO/8MUtrzBsITw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-agent-presets': ^0.1.2-rc.1 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-jobs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection-cache': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-query': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + '@deepseek-ai/dsh-util-time': ^0.1.2-rc.1 + peerDependenciesMeta: + '@deepseek-ai/dsh-agent-presets': + optional: true + '@deepseek-ai/dsh-jobs': + optional: true + '@deepseek-ai/dsh-sandbox': + optional: true + '@deepseek-ai/dsh-sandbox-policy': + optional: true + '@deepseek-ai/dsh-session-persistence': + optional: true + '@deepseek-ai/dsh-session-projection': + optional: true + '@deepseek-ai/dsh-session-projection-cache': + optional: true + '@deepseek-ai/dsh-session-query': + optional: true + '@deepseek-ai/dsh-user-approval': + optional: true + + '@deepseek-ai/dsh-subprocess-local@0.1.2-rc.1': + resolution: {integrity: sha512-Spc/IXWvjEteGysifGr6JvCokcH8T88z0mdxIGcu9SFdgDyY8HKR+h5yq73+rbo4RYzT7+TBE43TIZy5LfmzgQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-subprocess': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-subprocess@0.1.2-rc.1': + resolution: {integrity: sha512-roTna1QHNpR5NsOLBWRai+GxW1hQAUyIyXOg5tsAIPXt7dug/kZJXeryiR9e92Fc/yoXzHMgrBQCThuXuo97LA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-system-prompt@0.1.2-rc.1': + resolution: {integrity: sha512-7W93PZKIk4CHvjZGgLIxrrEKpk+6t8nQXje1vKR5vG73dfXH0t1MJ5WWH/fngadYc7c6KzM84ihQ66tJqJqyNQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-terminal-bash@0.1.2-rc.1': + resolution: {integrity: sha512-tDEjaycT+2ZRmy8yVZb/1p/ZvulfPtfiRVfYqOENNSitlWIUgZWq5JH32JuGsXZpYJTUhwrDLHXSR1Lwls29ew==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subprocess': ^0.1.2-rc.1 + '@deepseek-ai/dsh-terminal': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-terminal@0.1.2-rc.1': + resolution: {integrity: sha512-O9MJdEpZBvoYzjWXycmgh/nMmXTgXoArZOXwld9q34cSgkXSUOVOPSiPuN5HjPZYZcT4aeT7Q4Wdr4LxezbshA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-time-context@0.1.2-rc.1': + resolution: {integrity: sha512-e5sjsgEJNT6cF8dFCernoXazypALlJOrwb1bOfJvPwrdcYbztNifGR8jDoFj88i6hor7twpf4LSU2dqzGc0QJg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-timeout@0.1.2-rc.1': + resolution: {integrity: sha512-llz11yxWeJB8suKCa6hRLjNBWVaPn3Fbd0XoBS0bkZLhPFzO1mDorx/XMca2GhI7XF9A86CURQcDt+aGjjvqJA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-tmux-context@0.1.2-rc.1': + resolution: {integrity: sha512-WOSrPXbAqegbEKJfATRB0F214aQzE9zMlJ4k65Urf+xjcY1t4OcDtjuk6QV6CNGeG2U6V6dvEol4lQF9Aj47qg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-token-meter@0.1.2-rc.1': + resolution: {integrity: sha512-6mlC89JNGudPvR9LekEo2mnEo/DXf60ZjekIKXxZqpf66AOQ2/pa2HJuFikEd9WWRvu2D96Qvx3rILxi1vXVww==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-compaction': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm-retry': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-ask-user@0.1.2-rc.1': + resolution: {integrity: sha512-4x7Y6DxaUClUllZ2jOusuukz8LPBotUinfRhf615sDm5JMk8JVD8tHjpFZ6eUX505wIyWgjDWLePb5s99j69/w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-questions': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-bash-persistent@0.1.2-rc.1': + resolution: {integrity: sha512-AcWq9UHKmLyNTh67Aa5UapmuLYdDVUJy4aJ9NvrI1DJLHCZQCs9NCUDx3UecyCwfa7qHtOEz205LY5HRACMqQA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-terminal': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-bash@0.1.2-rc.1': + resolution: {integrity: sha512-xKc4oXVDBwM/PaicpjGdWEaJ1N14B7KPmOzdpQ7ynE4gKUnvGU/eTg18EHamdyDOidh5ox0fNUnxk0rQjVo2+Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-jobs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell-env': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-call-timeout-policy@0.1.2-rc.1': + resolution: {integrity: sha512-mKKoboZVhMjJ/SIgtd/xR54KRrG4s5+YYBtkqvxKdQn3tjFxJZ4HkJ41DauwfZqTOXz2r0rWJ4neNqc5ZNaOdw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-cordis@0.1.2-rc.1': + resolution: {integrity: sha512-EJKVeKgAR+J3Bz/HeXU+Xeh0KTEp04JYuOf3tdiiOsEr0Aed8OL5Wr4YUJb8uvU8xLZPBWYjGlUJG7bx0rg/dA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-cordis-host-runner': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-fs-search@0.1.2-rc.1': + resolution: {integrity: sha512-F6j7OhMCowlOwIYmB4hA6sqenw2V7Eez90BjLww87iM9YarR6D/CQcHJN4OIViepuyE4sLtk5gkXM8oT/PeTNg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-output-retention': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-spill': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subprocess': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-fs@0.1.2-rc.1': + resolution: {integrity: sha512-9a1lcPGD4Z3p7OLTMkkCdwN0w7Gl96Jlypq6qopUA0WMkKai83VfeLZvramPnTJo6ezpuPXcLFWGm/2UDSlbcA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-attachment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-goal@0.1.2-rc.1': + resolution: {integrity: sha512-ooHKN6Eqy3owNS/oCDO7mR+UalEE4AxJMXou29waahIdSQsFAlk4pPApvhrwg1lpchF5CKwBPOtsVmjq2HfBKQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-goal': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-jobs@0.1.2-rc.1': + resolution: {integrity: sha512-ya7E6zToAdJ+GvNeZFPx8jNx0CfI52tlp0NCGzXHeB0S74haGWCV0iFe1nyoDJg7SDiN1xc1d2nV9klOqWtd5g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-jobs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-output-retention': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-pwsh-persistent@0.1.2-rc.1': + resolution: {integrity: sha512-Y8hRn41iRaRY88qH2zvR9sk3VSPnfqkLybqoOSepezfM6LXtrY24hNS0GTmRd88hlSre0DtB92c0WAJ+QLixmw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-terminal': ^0.1.2-rc.1 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-pwsh@0.1.2-rc.1': + resolution: {integrity: sha512-LaImOCdizIGkQnxzzkoaqzRWGZLsuDuqqF2adgJ3zeG0nDwan4Sz+1wYz4YSp0Gg6mJ79CYacsbYmGhYYyKY/g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-jobs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell': ^0.1.2-rc.1 + '@deepseek-ai/dsh-shell-env': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-ralph@0.1.2-rc.1': + resolution: {integrity: sha512-HRgdfKxuEaFZNyDahTsDrA22EU3UfG70j5kDMtE3aImM8DSvfFIZ0yvjfFG39WBI+uxDy1b7j5HcAImaa87Htg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-workflow': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-skill@0.1.2-rc.1': + resolution: {integrity: sha512-H4dORZoB2wuTcHjE1uMvos7D850mE9X1ETjXdzr6+1JTTw8uOeDsHhmNfpOMjhA4/ztFEW7QAQlymI25Er6yAg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-skill': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-str-replace-editor@0.1.2-rc.1': + resolution: {integrity: sha512-vD4GEYQ9iOkGaPCLbY4rziAxxAnNwrPS8rgrMkf1R0kfrSSPkAqVaepvuskgxV6M6lyduIKFu5yEHQZwVZbMFg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-fs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox': ^0.1.2-rc.1 + '@deepseek-ai/dsh-sandbox-policy': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-subagent-control@0.1.2-rc.1': + resolution: {integrity: sha512-ogSTUIs3z20weu4dHIHUHL5kzJ+wnjQETGfsrU3qb2ChAbx6LpJvNN788YMI2RP6udVbEJV/0HjkMhIuZsazZA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-subagent@0.1.2-rc.1': + resolution: {integrity: sha512-7rQfZsMWYv5oPMvVvQTv+rEDd6CFz4YimJHlSH56fsEwxW/A6Eg3jDBHLpiZpuk03gP6WIzcyExaC9adPq1ohg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-jobs': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-todo@0.1.2-rc.1': + resolution: {integrity: sha512-NFDdJNwryfwrNDsy9XeYYB9NaI/GAfgNMKvMlMxgXXuvmVoeLD71o5r2/S5Cl0unXLRfV+dP91hkj4Z+aVYTzA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-projection': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-web@0.1.2-rc.1': + resolution: {integrity: sha512-hpBy6VhE12fDeZ1a6bSOOg3msvJCMS4nwD1R2Nm7sjkBCiXR/BYAHmpkHXhNEMvTY2KhnH6qRhx7SFGSstfwwA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-web': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tool-workflow@0.1.2-rc.1': + resolution: {integrity: sha512-tqZJcQO7wOgLgT0XLyRjSkMpri0//6WmOVjcoY7+BeybtqJg9OTL31dXBIYpR7QkhQXmeEhHAZl0Lz/7kR+Qdg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-workflow': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-tools@0.1.2-rc.1': + resolution: {integrity: sha512-W9kUio00s7WbM8kEwniyd4hfb3CeUxVczsjXbOcKtakfiTywNLeyRWkpx2fvwRAH2rBfg3qCgczVfS0DOw1csg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-code-runtime': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + '@deepseek-ai/dsh-user-approval': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-typert-loader@0.1.2-rc.1': + resolution: {integrity: sha512-Zbwvblrb+6exFu5Atb0ShONAUsdoA6kcAZGi436JAB2SWfYbh62KdcahHDrQh/2GQaJgc+WjvKT9qoHTx0U5NA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-typert-registry': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1': + resolution: {integrity: sha512-vBWD0NpriPd96ltbWaAw+iKeWFIEjiAcCWYtmqEcV1Ms+FaV02usjjm7LCmhSQhMZpBSBc7EZUX0spGlpjI1bA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-typert-registry@0.1.2-rc.1': + resolution: {integrity: sha512-Y6eWVTp3GBDt9DYjYqsLIHG3SJelBZvhDpBipz0Cam1Al85MQyecqdMrmOmvCZZ7nDwelC6xkZfg7vikrtpB/w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-user-approval@0.1.2-rc.1': + resolution: {integrity: sha512-oYkLE4a/TwqVNi299pUf/QP1Yku6KScdUCTUyYbjaRBcN+/pXPpHikl2aoE2thH9D0uT/Kj6T2kz+wDDcFd9Xg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-user-questions@0.1.2-rc.1': + resolution: {integrity: sha512-ZXSliLrhEx92TUsjXeNzr3fKLIexnGV+KPcgs+HRUESlsCGs9wuZH6ep4rfrRLc4dYBbw4bbgNKQct7RftJ4eA==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-scope': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-util-crypto@0.1.2-rc.1': + resolution: {integrity: sha512-gE8FznQ1hkknw9QMrHNSlm3UEyRYuj3MLVvlJ6NyH1kmOsdjnbrVbSs+Pn72k2oIV4Fiyu3Umg0sLznUEcsiXw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-util-time@0.1.2-rc.1': + resolution: {integrity: sha512-OoudDLoYothbZKDbjO6kFu3NLgAnglIS8NFkg5fjnBtz8LGwplN8w7kRURLIrZtH38HknYhpDsdJh8LZai3U6A==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-util-values@0.1.2-rc.1': + resolution: {integrity: sha512-FQdgoK+KYVR0pBQb9fTsajvGb3gzUxEzJQEYnFOt+Qdwc4nkxJOPwJJdIvXuqvZaQ33DaOoqpnpcr2p5HpLu4g==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-util-workspace-path@0.1.2-rc.1': + resolution: {integrity: sha512-cT9mxw5dS7YTbUoMDLmX4HeMKnqovCMnSsAVDU1fr3zKv7YAdT76rW6fjOkV/NGJBQRxUsbYdXKjqeYFosAmUw==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-web-app@0.1.2-rc.1': + resolution: {integrity: sha512-QGh+XWRgrsVktKD3YHw+cY/knwBESq+2TtyOGNc+V7GU3LG9qL6EPB0M8pIDjxF1jLls+M71LIVbevuFx3oZ6Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/cordis-plugin-loader': ^1.0.3 + '@deepseek-ai/dsh-shell-env': ^0.1.2-rc.1 + '@deepseek-ai/dsh-system-prompt': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-web-fetch-http@0.1.2-rc.1': + resolution: {integrity: sha512-yA2oxrCnRxSVYVOFr94ChB/m6TtOgPc7GZT78Ps2EtBPbAP5MnVSHM6JoVeqlHkFwtQ+qw/Hri9KBnOQtpgg1Q==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-timeout': ^0.1.2-rc.1 + '@deepseek-ai/dsh-web': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-web-frontend@0.1.2-rc.1': + resolution: {integrity: sha512-4f82gSDByk+h9nGfsmoDdRcoEXtsE4W7w5n9aJRRHIzNwHFe8Z1rtl3PafdVBZcSrZ/0bouxDMknA+F3FZAG4Q==} + + '@deepseek-ai/dsh-web-search-deepseek@0.1.2-rc.1': + resolution: {integrity: sha512-EjnDmaiQdNmD3dAZKWssMgLWm0b+AidB7j5B0YoOMIzrLhajI1Uggnf2Er8L+869P99GJjB1nUm1otzoQ8yL9w==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-credentials': ^0.1.2-rc.1 + '@deepseek-ai/dsh-launch-environment': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-settings': ^0.1.2-rc.1 + '@deepseek-ai/dsh-web': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-web@0.1.2-rc.1': + resolution: {integrity: sha512-+umPNfJ+1Gshq38jR3tjgf4j0QaJZT5PretdHi1J+RU61Ou9Sc5w9n8haxa69os7g6FjBNxvGv8fnMeFDgcLKg==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-webhook-github@0.1.2-rc.1': + resolution: {integrity: sha512-RGwuVtaHDTtXaKtHDZ59uErpzIjrO0K6U7arKCi0HDNuDvBHiU70bpn431Cax+6ynLfH5VZqtSDb0qmHnRTdOQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-credentials': ^0.1.2-rc.1 + '@deepseek-ai/dsh-host-webserver': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-webhook': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-webhook@0.1.2-rc.1': + resolution: {integrity: sha512-zpOB9obPJgsLEF8uVzG61v7MPgyhMJbiI4EzV6iK0rkFulV0Tm6G+iQhRYB8tUHEaLCgOzUBCo32lrx+YnhypQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-agent-default-model': ^0.1.2-rc.1 + '@deepseek-ai/dsh-agent-presets': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-permission-presets': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-title': ^0.1.2-rc.1 + '@deepseek-ai/dsh-workspace': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-win32-process@0.1.2-rc.1': + resolution: {integrity: sha512-egG88t1NDajO8YfjYQpHxBx0xR8CB/K+GTU9c0W1Tn8YX6GiFXqOZLiaCNj2mVIv7WnMShzZIX6bVkFrg5oTag==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + + '@deepseek-ai/dsh-workflow-worker-thread@0.1.2-rc.1': + resolution: {integrity: sha512-33fzDRvZSa46l7MPD44ti8lNeGGMI8dTHsoAF/h+puzfEjOBJ4g75sh6oxs7sgszcTUSr5UQAZ2XGU1LC/9DoQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-subagent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-tools': ^0.1.2-rc.1 + '@deepseek-ai/dsh-workflow': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-workflow@0.1.2-rc.1': + resolution: {integrity: sha512-JjadkNhYAeU8bD8immmpJyX9zbqke5Y9rWCf9m+vzvE+GUqPwSILTTVzESUxl7rEJtI99UAL6dYy0qbkYIq6HQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-agent': ^0.1.2-rc.1 + '@deepseek-ai/dsh-brand': ^0.1.2-rc.1 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-llm': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + + '@deepseek-ai/dsh-workspace@0.1.2-rc.1': + resolution: {integrity: sha512-8q1e4a9K8ON4VabR6VfachNnuOHKvfBlQlv07mFT6CwoaCZXB1WwZxjJFOnIcF7R05uRAPJSVAgUMedgWMxVEQ==} + peerDependencies: + '@deepseek-ai/cordis': ^4.0.2 + '@deepseek-ai/dsh-invariants': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session': ^0.1.2-rc.1 + '@deepseek-ai/dsh-session-persistence': ^0.1.2-rc.1 + '@deepseek-ai/dsh-storage': ^0.1.2-rc.1 + '@deepseek-ai/dsh-storage-domain': ^0.1.2-rc.1 + '@deepseek-ai/dsh-typert-protocol': ^0.1.2-rc.1 + + '@deepseek-ai/dsh@0.1.2-rc.1': + resolution: {integrity: sha512-RPq48TzxvwpdT9/7W1tbhZDBMmeK+bxDrX9cqQC27Wx/LqtgJF8PSa3b3xriU8oxtvhwYmk21w2cej3uMQrnVA==} + hasBin: true + + '@deepseek-ai/node-addon-landlock-run-linux-arm64@0.1.1': + resolution: {integrity: sha512-lYY2RbcPW4rGRM5hVJbrXlvLqyBxeJBjBqvt+QTHTU+GtfUVVjTODKa4e3CRwMQoCEpOjoARdQBHbN7HvE72WQ==} + engines: {node: '>=20'} + cpu: [arm64] + os: [linux] + + '@deepseek-ai/node-addon-landlock-run-linux-x64@0.1.1': + resolution: {integrity: sha512-OHAzPW2Coe/iYobAJAAA8CeVrBoKV4BnNHsgwvXwOfishxkUVSWSvdyxrZPiwYRXutpIGVrSo9zV3WOQy2euBA==} + engines: {node: '>=20'} + cpu: [x64] + os: [linux] + + '@deepseek-ai/node-addon-landlock-run@0.1.1': + resolution: {integrity: sha512-aHGhlQJEutfobKM/4K59SERbT7RmQdD2oMKzD8Bne/Ps7TeT8AweCN+dpdfuxQhMNbFcJMymrgPnID0WYQ30Tw==} + engines: {node: '>=20'} + + '@deepseek-ai/schemastery@3.18.2': + resolution: {integrity: sha512-njDtZsznjYxok7KLLlHOPyuv2efdWVbSflAHgztSfbMsg+CVraEoRe2DjOCgClYv3ZCSm7WXoaUkbB/+RY7tWQ==} + + '@earendil-works/pi-ai@0.84.4': + resolution: {integrity: sha512-AClAZxf5+c4RRu44NJPS6wyQy+Nmq+Mzyyrdvm4ZVMNuixelO02RZX4G4Aq1F145Yzp43wnM5S+hLlSI7ypfVw==} + engines: {node: '>=22.19.0'} + hasBin: true + + '@earendil-works/pi-telemetry@0.84.4': + resolution: {integrity: sha512-8e2CuxM+ht+hedQXTZmi5JVl6/xDK9RpSDL2+MbITevKYQhMZ/z6lJOTFgox3HQyGxO8mOZEtYGVeQNaD4OzqA==} + engines: {node: '>=22.19.0'} + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + + '@google/genai@1.52.0': + resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@modelcontextprotocol/sdk': ^1.25.2 + peerDependenciesMeta: + '@modelcontextprotocol/sdk': + optional: true + + '@hono/node-server@2.1.1': + resolution: {integrity: sha512-ELuehkj5VCBdgEw9zs+ivkKwyzzUCSQuE96YmiPvn1ECBoZCczbFXJLeEGMTYjphP6gydh4pHMqEYPVMYUVgQg==} + engines: {node: '>=20'} + peerDependencies: + hono: ^4 + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.35.4': + resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.35.4': + resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.4': + resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.3': + resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.3.3': + resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.3.3': + resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.3.3': + resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.3.3': + resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.3.3': + resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.3.3': + resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.3.3': + resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.35.4': + resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.35.4': + resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.35.4': + resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.35.4': + resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.35.4': + resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.35.4': + resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.35.4': + resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.35.4': + resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.35.4': + resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.4': + resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.35.4': + resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.35.4': + resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.35.4': + resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + + '@joplin/turndown-plugin-gfm@1.0.67': + resolution: {integrity: sha512-FZfW5EZfidhzd1IaY1uxHnIZPTVOxAdleMZ4/1U6Nt5b7+Qj5JThDnaIomuJtetnUBzuRNbe9FWMuqD4B3dlWA==} + + '@koromix/koffi-darwin-arm64@3.2.0': + resolution: {integrity: sha512-UfIfdmrUYBBC56jq+6rlyUCKGPiA2XnXTTzp5S1jXeDkXFdc2Sg8C1Zj/fi7XM0e6CgA416i3GsuE5oKfe0FZw==} + cpu: [arm64] + os: [darwin] + + '@koromix/koffi-darwin-x64@3.2.0': + resolution: {integrity: sha512-kTT+DOP9ymb8LCoJQrs5tvm6NWGbrqcGNdhlnZL+BndHOCoaYl7xzCzFmlKpAsS3Y1Uvyr2znrut/b+7wOuiOg==} + cpu: [x64] + os: [darwin] + + '@koromix/koffi-freebsd-arm64@3.2.0': + resolution: {integrity: sha512-NxM8Lv8IHfuWxxtTzjz81haUFdraFVEe0aB6YN7c66tsyXMvbUiB5sbBDfjPa1NeMEBDhfFj3gGmawxY3i+93w==} + cpu: [arm64] + os: [freebsd] + + '@koromix/koffi-freebsd-ia32@3.2.0': + resolution: {integrity: sha512-iOvIomlKzHgx29TgSJiACX5u48mWx+eEjkKcNZbD7mY/9K0YJ0/PtbqCO91RavdzTJakvDk8yImTEIml+xfBUg==} + cpu: [ia32] + os: [freebsd] + + '@koromix/koffi-freebsd-x64@3.2.0': + resolution: {integrity: sha512-6yPK5X7/pRvhU/mSynNNCC3PCHKmbBmwJsCmg4C9Gi14oCzkahGxxFUhs/4KjblyPh/EnT5dGnc46Zo7rW1aeg==} + cpu: [x64] + os: [freebsd] + + '@koromix/koffi-linux-arm64@3.2.0': + resolution: {integrity: sha512-1zgAIK9KG7PY/eWOHnYrmGQh8VHBF9AzFee8PH7YWCJK1iE/cmKt2sctOlDeNBkKzvUpmaMz3LSgg66f15Xklg==} + cpu: [arm64] + os: [linux] + + '@koromix/koffi-linux-arm@3.2.0': + resolution: {integrity: sha512-6wNoA20K9UWVFesLUBpvh8NOT92HAYGtjWae65B2Xb7QSvU5reg7jd01xjRqaacNGwj5xeJ60UWFAGUOsVo9MQ==} + cpu: [arm] + os: [linux] + + '@koromix/koffi-linux-ia32@3.2.0': + resolution: {integrity: sha512-dnK7II/P6408YDxylLmxgrbzGhL3w3P+AjN5HEimm//elO5e5LJl3VXi+u3Lrvfov5cHlnVwN8X4qIqchi0qTA==} + cpu: [ia32] + os: [linux] + + '@koromix/koffi-linux-loong64@3.2.0': + resolution: {integrity: sha512-5gRWmjyldyl/0NaL3jxVRdN6u79i4krIpyHCICq+leoiez91ycZe+Vsq6Y4AbzcZ+mK4iNf4q4QCwvBAX5+ejg==} + cpu: [loong64] + os: [linux] + + '@koromix/koffi-linux-riscv64@3.2.0': + resolution: {integrity: sha512-nSnQ8o0NLn8ttOrdLad17xZu4iYeX/Ps7wAnvi9kxGve4pxOAwY6N7MLwSUHP2fZXi74ognY0uN2lRObOp1j2Q==} + cpu: [riscv64] + os: [linux] + + '@koromix/koffi-linux-x64@3.2.0': + resolution: {integrity: sha512-EWd0IQDzUUlxkNt7Sx9qPpGVvPTfqqqI7LCdocpjkxrARyguYGOPGJv3goSvoz3e95AyOZeojTlPKyqioAB5Ow==} + cpu: [x64] + os: [linux] + + '@koromix/koffi-openbsd-ia32@3.2.0': + resolution: {integrity: sha512-oUQzB56M1hMgkqelSpkJZKaQFrsAi19qwHI0xBwTLXHpX2HTZee92sF6fsxQIg7VD2f4fPjFDTjcC9vbRfB4UQ==} + cpu: [ia32] + os: [openbsd] + + '@koromix/koffi-openbsd-x64@3.2.0': + resolution: {integrity: sha512-YJG4kCycHD5IGyCF6oJpHaSJ+j5rB1Y8DRHPW1M6gdYHvVd0kiDwLvKzSgAJ3l15KI5+wXalVZtugvV+1DaIPw==} + cpu: [x64] + os: [openbsd] + + '@koromix/koffi-win32-arm64@3.2.0': + resolution: {integrity: sha512-PnbLrDVyxdQdJJItUSgBPMH0BAvTqCDjNT0XmIZv2qdKV1TVqfMTYMhjfJKWrRfkXDPExJyhjTBdAidQGwuUPQ==} + cpu: [arm64] + os: [win32] + + '@koromix/koffi-win32-ia32@3.2.0': + resolution: {integrity: sha512-d14KDZxJsK/nGK4Rb6jc4J76JLQztesVbRkbpKXEpvy4MxCrgFXwe5DTMP3nD4CRTmOGe9FzRfphAQBm9Dbkig==} + cpu: [ia32] + os: [win32] + + '@koromix/koffi-win32-x64@3.2.0': + resolution: {integrity: sha512-09p81HVKDsLXkyMRrLQzsFtCjdcFgbRW765roAu5iChHj4gfWVrGDdvtBldc1BulIEgH1/gRwa2E4vEtW3/hlw==} + cpu: [x64] + os: [win32] + + '@lexical/clipboard@0.49.0': + resolution: {integrity: sha512-AVKj21xH1qU7JAFA/v0hCoafa+Yti1I7cHG+JQIgc/EqCtP8ePeJyIfTPNN/tXskoCdq++HewQoiSXRwwlocVg==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/dragon@0.49.0': + resolution: {integrity: sha512-62/4DP5qyX/l4Yf5qRyyQrs9BV725eRU3OmLUW6g7T5xrcHXxAo7tia/NvqjqvXdpvQzyHjWgsy7dMitGITUsw==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/extension@0.49.0': + resolution: {integrity: sha512-Wv0VsuqxorbxHCK4ms1PwAu6cXIGNLtflq66auF+zwxOtBprkSFV8VzzzdKLOYD2admP0VK6EqVCeGXFK1GggA==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/history@0.49.0': + resolution: {integrity: sha512-uQdtEd34gIJklXNSdHS2Wko1zxx1xUMVXbiodcLO6a3GeFTE5bKnx6af1zGX78KpYhUQYnHWorKuUvtdZlJPaA==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/html@0.49.0': + resolution: {integrity: sha512-NQqAydKzRjQl7Jx+bTTyC2iuz5uhuDaQX0SSPrdfgaFDCPjqQEejcBkCt1QXnu1CkbVHutZKVGVzljx40Y6y+Q==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/internal@0.49.0': + resolution: {integrity: sha512-s+XjPC7Qb39A/Xx9ahcz1s69CPix4ultaqyW+MDG0AXYW2quDr7m0USqReKIAiuoLIWtGN5HW8BwV2Y6t4qr6Q==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/list@0.49.0': + resolution: {integrity: sha512-zs6wYkxakDRcJO0KmwrPPHgeLLIxzjD+P2CRu+scJCHRuA5e2iSw2iFjH5n/LlWBrlnPMSjeQse4QqsRy9nnqA==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/plain-text@0.49.0': + resolution: {integrity: sha512-l7IuUj9n9CtFfz4Fz6zU6mmO+VkcnvyyebABx+lHevvTa7B6YI5PPVgABFfzdyPanyW/FGs7qpKBf59inAqbkg==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/selection@0.49.0': + resolution: {integrity: sha512-08Vd1+VoC6YnztWOFWVsqF/Hxw5EP8qeL1c7t3+rVCV8revLzXxdQw+vbPX3tgM4fmjOBDUXk6Ws1+rTtsqjcQ==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/text@0.49.0': + resolution: {integrity: sha512-mowedvbvx0HDaW+ymVdYmWVhueqgauhhqIWaCtbJj33tPk8pOu1BB0pZuJQbOB+1bDnFiZhkJV8W/CvR2M9lEA==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@lexical/utils@0.49.0': + resolution: {integrity: sha512-Jaa6DERBqxiFOFa49VPRV1WOb7mzRbMZ5U+v+RFagjzTmBhfxDmEkbQQ9nYTU3n3DPfdT8Hkyffextmw04etXg==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + '@mixmark-io/domino@2.2.0': + resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==} + + '@modelcontextprotocol/sdk@1.30.0': + resolution: {integrity: sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==} + engines: {node: '>=18'} + peerDependencies: + '@cfworker/json-schema': ^4.1.1 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + '@cfworker/json-schema': + optional: true + + '@octokit/openapi-types@29.0.1': + resolution: {integrity: sha512-9qWOMFNxxLokERcms42rU0PTLqQmVs7g5E41TI4mCOxmpFayD1rfC7XxOL55cG9MBZLFlC31BrR37myMKardwg==} + + '@octokit/openapi-webhooks-types@12.1.0': + resolution: {integrity: sha512-WiuzhOsiOvb7W3Pvmhf8d2C6qaLHXrWiLBP4nJ/4kydu+wpagV5Fkz9RfQwV2afYzv3PB+3xYgp4mAdNGjDprA==} + + '@octokit/request-error@7.1.2': + resolution: {integrity: sha512-XZRuT3xZ84D3gYErI1DZvhJ33dCWVV6uzBtWkaBB4TvA/L6eOeTZodxLFVB44bBEEo3vEx7y00UfX1tBLrtLRg==} + engines: {node: '>= 20'} + + '@octokit/types@18.0.0': + resolution: {integrity: sha512-l6bAF43PNxkJp6g+W4PjoUSSkxHomXw2nOum5CTftJz1NlV3vu93NImgOYtLf6CbBUb5j+fiuzW0PPQ5JTSvZA==} + + '@octokit/webhooks-methods@6.0.0': + resolution: {integrity: sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ==} + engines: {node: '>= 20'} + + '@octokit/webhooks@14.2.0': + resolution: {integrity: sha512-da6KbdNCV5sr1/txD896V+6W0iamFWrvVl8cHkBSPT+YlvmT3DwXa4jxZnQc+gnuTEqSWbBeoSZYTayXH9wXcw==} + engines: {node: '>= 20'} + + '@opentelemetry/api-logs@0.220.0': + resolution: {integrity: sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/api@1.9.1': + resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/core@2.11.0': + resolution: {integrity: sha512-7YP44XH0tV6+Mb54x2YGf84i7yi+31MBZlE8JwvozkxyTvXbSp10X7cI7YE49ChJ3shMJoBmCJF3+1QFBJctGA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@2.9.0': + resolution: {integrity: sha512-m2nckMT80NnmjTYSPjJQObBJ+8dgkoajEOUbznL8AHZ3T3yHRk2P7gI1PhEBc1+lOnrYE9UWrWHqJDsmqjmNbw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/exporter-logs-otlp-http@0.220.0': + resolution: {integrity: sha512-8186thl+pTw64iz/qEEen5oJZoZ/gO73XruChdaGlYdWOdBIQ42r+vHLf6a7vIDqTD4b8ZOoMlyxptanECaI9A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-exporter-base@0.220.0': + resolution: {integrity: sha512-CXYo8UD5Mn9YbgebO2EL4wejtA+gxLmLiu6HCk2KH2BR7XhFN6/6p1UlCb23DYCjeYkndevLHuejCCN1yx4+OQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/otlp-transformer@0.220.0': + resolution: {integrity: sha512-lXGrv7KXZ0gNH9SVNUaa6vv6phVYGvJxfXAlMbzbakiXru75f5MZl8Z7oqiMMQD77riVHJCFlQvbZs/VVN2/4A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/resources@2.11.0': + resolution: {integrity: sha512-Ie7+8q8MDF4FAEQCKVMTx3ReUvxiIAgIiiW3c9JdmP8+HMcDy20puT+AHjexnExgnbvBxjQ9fjkFDWrikJ2jQA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/resources@2.9.0': + resolution: {integrity: sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/sdk-logs@0.220.0': + resolution: {integrity: sha512-WywcTkQtv2iNmt+6y5Kcd4rzvx9bLVsBa2Nwcmg01IUaBTkTow3W4d9KE5vNBpEDtb9tp21WcRBY/lANRrApYA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.10.0' + + '@opentelemetry/sdk-metrics@2.9.0': + resolution: {integrity: sha512-Xx8RGS4H5XEBl01WuCreMIpiah9cCXMbSkeuIePPdD2cUpq/vUzYmj8E/MK1OsbOc93FuAD4jfn2WOacKwLn7Q==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.9.0 <1.10.0' + + '@opentelemetry/sdk-trace@2.9.0': + resolution: {integrity: sha512-sGA19HvtrrSKYsseHphluH6j3p6Xa3fqc7c7y8f/7mYWejc1lyDFcpSdD1kYa50HCLUeEo4zA5bW0pniaPszuw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.43.0': + resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==} + engines: {node: '>=14'} + + '@preact/signals-core@1.14.4': + resolution: {integrity: sha512-HNB6HYeYKhQbJ1aKl+YRjrS4+QWHLKX6qKoUsfS/m0vqzsVaEBiZiaKbG/e+NKk2ch5ALQr/ihWaMHxiCuuWHA==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} + + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} + + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.2': + resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} + + '@smithy/core@3.33.3': + resolution: {integrity: sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.5.2': + resolution: {integrity: sha512-A9uSdn72ozbRUSit0eib0TW7nXuNPlaeM0zcGkJ+nE6tFcSDbnmtwoxbTCFBukVQcszDAyvsd7+rTduPTXpygg==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.7.2': + resolution: {integrity: sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/node-http-handler@4.11.3': + resolution: {integrity: sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.7.3': + resolution: {integrity: sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.7.3': + resolution: {integrity: sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.17.2': + resolution: {integrity: sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@tanstack/react-virtual@3.14.10': + resolution: {integrity: sha512-SRyoUbdFMRHuYXMijV5H4ZarQWpXkj3iANq8OFre+pybeVap8ZJjZ3Nz9bVjx4d8PfobVUQUdKyyyHYk3E+djw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/virtual-core@3.17.8': + resolution: {integrity: sha512-BfEvehNpOT75r5Ksc5xW6NZuXujTfb7nlSEyVu4XHG3gdxNg1KqXruWbDewXOUaUYIo4oRbSfkjIajz4MAT8tA==} + + '@types/node@26.4.1': + resolution: {integrity: sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@vscode/ripgrep-darwin-arm64@1.18.0': + resolution: {integrity: sha512-r3ktHSvbFycQNF6sl7sNDPocpsI7J+mEzh1IaZFkY0spm3k2Z9t8hPAeOK7+p0l6p6/swkQC14XWX01low+94Q==} + cpu: [arm64] + os: [darwin] + + '@vscode/ripgrep-darwin-x64@1.18.0': + resolution: {integrity: sha512-25b4gWbL138dGuQU244ebCKKc0q05ULBMoFSz9oAEUHNeqK/lOJViDS7DRvbDazzAzSEdan391Znks/R5mkaTQ==} + cpu: [x64] + os: [darwin] + + '@vscode/ripgrep-linux-arm64@1.18.0': + resolution: {integrity: sha512-lQ/5zTG++U0E3IhVgS4EPTTn/U4okncaRMM5GOFfOYZywS4nuD31GhkHbNYlDk5CuDC68+hYJ0/eQeyCKJDA+g==} + cpu: [arm64] + os: [linux] + + '@vscode/ripgrep-linux-arm@1.18.0': + resolution: {integrity: sha512-GDAvufNDHu8zqLEmXstalQF0Wh6wQvdsBi/Vg3Yi3CK4a8XoFXqqXVEHEZ9xQz3t0NfoSEc9JbvK9DDS6FxyxQ==} + cpu: [arm] + os: [linux] + + '@vscode/ripgrep-linux-ia32@1.18.0': + resolution: {integrity: sha512-YWLkSUtFd4Jh5EepIhA9RJSfv3uMAVMo+2rBIGHPBnvgLrZciIs2cDKei1/p6Wc/aCzUoHyMAg2R6tw4ZCBKGg==} + cpu: [ia32] + os: [linux] + + '@vscode/ripgrep-linux-ppc64@1.18.0': + resolution: {integrity: sha512-quXVY8fwQ8O/lvU1yrSqSl3jlUzysRSb+AfUfCL/tRtphxsKlFvPAejryZ6vg4Bgvn8XL74xb4qMCDmWgYrT5w==} + cpu: [ppc64] + os: [linux] + + '@vscode/ripgrep-linux-riscv64@1.18.0': + resolution: {integrity: sha512-f5kBQBrWfQt8Q7OhSORuNDei5dkYagBj3y4jImSUXGMy8B/Ke7SltSRcUtjPv166FAFfHCAmWuZp3+cWnX2/Vw==} + cpu: [riscv64] + os: [linux] + + '@vscode/ripgrep-linux-s390x@1.18.0': + resolution: {integrity: sha512-rTOcJFGGcl2c07RUOWUo4U1ndnemKhY6A9hnMB18uk7jSgJc0d/QLBGWMWpumdtoJtpizn/wIv5mXIisJukusQ==} + cpu: [s390x] + os: [linux] + + '@vscode/ripgrep-linux-x64@1.18.0': + resolution: {integrity: sha512-mQ3bVrUpnD2vs7QT0vX90Lt0cnUq467uFtEktIdsJJmW296RoSULRGqWgzG1AKxyBpNDD6l4ZO4qKf6SgyC23Q==} + cpu: [x64] + os: [linux] + + '@vscode/ripgrep-win32-arm64@1.18.0': + resolution: {integrity: sha512-vfTIjq1OHnzUjxZcHVQAMbnggp8dpGf+0QKFOZHwWPqFwXxQC8eCWM+5NUdoJ6yrElCeMzoUTXoK/LdZaniB+Q==} + cpu: [arm64] + os: [win32] + + '@vscode/ripgrep-win32-ia32@1.18.0': + resolution: {integrity: sha512-//rfAE+BOw5AC2EMmepmiE36jUuevtQYNQqqlw1s3m9FlRxjxEut97RkRPHAu9BG4mSojatZx+kXZXNdyI9caQ==} + cpu: [ia32] + os: [win32] + + '@vscode/ripgrep-win32-x64@1.18.0': + resolution: {integrity: sha512-KNPvtElldqILHdnAetujPaowkNbpqJy3ssIGGN6F6Kve9Qi+nNLI2DN01O83JjCEVQbCzl8Ov3QZ9Eov3BR8Dg==} + cpu: [x64] + os: [win32] + + '@vscode/ripgrep@1.18.0': + resolution: {integrity: sha512-ns5lWe44tSfbTMbVUsyB+I1819PVSw4AdpgK0RNkzfWfwy6+3IUNSxwSrfTno1/oWaS/hERNz+XLWVyga2aJBQ==} + + '@xterm/headless@6.0.0': + resolution: {integrity: sha512-5Yj1QINYCyzrZtf8OFIHi47iQtI+0qYFPHmouEfG8dHNxbZ9Tb9YGSuLcsEwj9Z+OL75GJqPyJbyoFer80a2Hw==} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + body-parser@2.3.0: + resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==} + engines: {node: '>=18'} + + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + content-disposition@1.1.0: + resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} + engines: {node: '>=18'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + content-type@2.1.0: + resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==} + engines: {node: '>=18'} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.1: + resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + diff@9.0.0: + resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} + engines: {node: '>=0.3.1'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventsource-parser@3.1.1: + resolution: {integrity: sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + + express-rate-limit@8.7.0: + resolution: {integrity: sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==} + engines: {node: '>= 16'} + peerDependencies: + express: '>= 4.11' + + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} + engines: {node: '>= 18'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-uri@3.1.7: + resolution: {integrity: sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==} + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gaxios@7.3.1: + resolution: {integrity: sha512-kB3rzJV7d9juLZh8/56QTXCwQfxyhdOMdyYk1HdQKFtF8TJTDTZQJtixWIwXdE9Jji91mC41DUNpjleo4L4eAQ==} + engines: {node: '>=18'} + + gcp-metadata@8.1.2: + resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + google-auth-library@10.9.1: + resolution: {integrity: sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==} + engines: {node: '>=18'} + + google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} + engines: {node: '>=14'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + hono@4.13.5: + resolution: {integrity: sha512-O6+/eCYRkzzzy0rPWwKLiGBR1nFuUPZynnwjxN1MBA62NNqbT0wQEzQyK2gSO5yDIDB336sXQleAhOHrzlYyKw==} + engines: {node: '>=16.9.0'} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ip-address@10.7.0: + resolution: {integrity: sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==} + engines: {node: '>= 12'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.5.0: + resolution: {integrity: sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==} + engines: {node: '>= 10'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jose@6.2.10: + resolution: {integrity: sha512-iiW7J9qRFlGxvCOIBDBDxFePQSn7ZMAnrYGhrrOo6siO/MIqwfyilLR27pkfDgUk+raLuzADS8A3S/KLBisc0g==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json-schema-to-ts@3.1.1: + resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} + engines: {node: '>=16'} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema-typed@8.0.2: + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + + koffi@3.2.0: + resolution: {integrity: sha512-U/7o2QkSGt28UE+74mQyLOdMxUIos9N2RrSwHFcXYLyb1hK1HukSYFQ3RxaEypcWbKUL+JbMheBxGuFn8PRk9w==} + + lexical@0.49.0: + resolution: {integrity: sha512-9V1ZIzGpJEd8rIN+nN7veL4fW4fFWbS66Un4JNqSZB4D5t9euzN9+3+jEXy83FjNjNy0MiiUI3+DQaGCLYko0w==} + peerDependencies: + typescript: '>=5.2' + peerDependenciesMeta: + typescript: + optional: true + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-typer@1.1.1: + resolution: {integrity: sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==} + engines: {node: '>= 0.8'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + negotiator@1.1.0: + resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==} + engines: {node: '>=18'} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-addon-native-custom-loader@0.1.5: + resolution: {integrity: sha512-rL0XXRytayIChYf1xaG9/1NzGBRTyFkQTIpn+MDz/hpr0PZw1a9PZIoH9HlYfagNawhXU+jfN650EvoSIvR7Vw==} + engines: {node: '>=20'} + + node-addon-require-builtin-darwin-arm64@0.1.5: + resolution: {integrity: sha512-MZ5RyGhuU7DTbwuNpOQW81/ep8n5Yd5YlZa6dWiEfJEh+01Dl4cCKGmMCWNgb0VtqAImRtAOtmZIPtwngiemKQ==} + engines: {node: '>=20'} + cpu: [arm64] + os: [darwin] + + node-addon-require-builtin-darwin-x64@0.1.5: + resolution: {integrity: sha512-wdCSPn49AdNZ2EXHQqswiXk1cROFe9zSRaAX8PwQLxmjdLt+xZF7vZP6VlqgXm+VAOHv98q8kp9m7mO9jY3OgQ==} + engines: {node: '>=20'} + cpu: [x64] + os: [darwin] + + node-addon-require-builtin-linux-arm64-gnu@0.1.5: + resolution: {integrity: sha512-hCqzKpQiknDDv6rUdZqrxCBXROg/uUruO0geUuZsdM9M/Lds45gSb4bDE958HlPaCvrDyR0wTHl3II8A7yQeew==} + engines: {node: '>=20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + node-addon-require-builtin-linux-x64-gnu@0.1.5: + resolution: {integrity: sha512-lgP+ruwWXbcXDslhp5uIc+dFgzITEGPZ4E50WdHGt/OzcoVhN6y5z72pRRvxy8DE661//QxqmCLe72rS3SVg+w==} + engines: {node: '>=20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + node-addon-require-builtin-win32-arm64-msvc@0.1.5: + resolution: {integrity: sha512-KEO2eWS4lvZg6JmPPz04OdI4Ojrc7YzOs++4r6VnvwsqYN2r6mjGSGpouQkk8J2eLXBzC7X/D9wYTbUuQS8u1Q==} + engines: {node: '>=20'} + cpu: [arm64] + os: [win32] + + node-addon-require-builtin-win32-ia32-msvc@0.1.5: + resolution: {integrity: sha512-iSC988EqZm5XbKWp/giW6K6EBRTrHt/YQbAkKsZLglt7PplmvvrZ7C3tUsyh1wVxUTYAaxFdE2xbqSdpw0rb6g==} + engines: {node: '>=20 <23'} + cpu: [ia32] + os: [win32] + + node-addon-require-builtin-win32-x64-msvc@0.1.5: + resolution: {integrity: sha512-pjuco/ESU3ChIp7WwacWfY2ENu2K5rGAgqjcXedoiFcTrjTf5Ln/miKSuNfE6IiuJ7tfMTJH6VH5hq+C1Y8JMQ==} + engines: {node: '>=20'} + cpu: [x64] + os: [win32] + + node-addon-require-builtin@0.1.5: + resolution: {integrity: sha512-isaquiStlp7qdFpaffy+2ssJPUR/kLPRE5gqfeWbb0Ahph9H7O3BOFwThqkVaTrxfpnjrQauxlOEgvzD+snhUg==} + engines: {node: '>=20'} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-pty@1.2.0-beta.15: + resolution: {integrity: sha512-vORSzHXi4Ofl7HemVWpuudLqCPdaQb4LfpRCUpE5HPxhp4JYscl8zZwxh11p26v2wvW24WMwnMfLjhRLixrfxA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + open@11.0.2: + resolution: {integrity: sha512-RWqF+pBSkqecEvCKOn8QYhaNdRMJDZRIrlS/7rTDdLHaPcfXGCZ/h8zb413NfvdeAV0MR7T1yJcA34/q+CSm1Q==} + engines: {node: '>=20'} + + openai@6.40.0: + resolution: {integrity: sha512-MWtTjd/gQt4jpbji61NTgFWJLoY/PdRJ6wG9/ZDRMYNMlBKrCrSlkLI+KgHP1vR1qT6LKSAyAqIxno6lcK9JiA==} + peerDependencies: + ws: ^8.18.0 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + partial-json@0.1.7: + resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} + engines: {node: '>=16.20.0'} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + powershell-utils@0.2.1: + resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} + engines: {node: '>=20'} + + protobufjs@7.6.6: + resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==} + engines: {node: '>=12.0.0'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + qs@6.16.0: + resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} + engines: {node: '>=0.6'} + + range-parser@1.3.0: + resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} + engines: {node: '>= 0.6'} + + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + readdirp@5.1.1: + resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} + engines: {node: '>= 20.19.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sharp@0.35.4: + resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + ts-algebra@2.0.0: + resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + turndown@7.2.4: + resolution: {integrity: sha512-I8yFsfRzmzK0WV1pNNOA4A7y4RDfFxPRxb3t+e3ui14qSGOxGtiSP6GjeX+Y6CHb7HYaFj7ECUD7VE5kQMZWGQ==} + engines: {node: '>=18', npm: '>=9'} + + type-is@2.1.0: + resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} + engines: {node: '>= 18'} + + typebox@1.3.7: + resolution: {integrity: sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + undici@8.10.1: + resolution: {integrity: sha512-YQ3WlbqjYMmNpdvDH64jAgLjxuAR9+649calDWhbshYaeQGO2bR4nI94ORJmwI3J9YhoKQnpyGOK+0zlWS5N5Q==} + engines: {node: '>=22.19.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.21.3: + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@1.0.0: + resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==} + engines: {node: '>=20'} + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + zod-to-json-schema@3.25.2: + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} + peerDependencies: + zod: ^3.25.28 || ^4 + + zod@4.5.4: + resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} + +snapshots: + + '@agentclientprotocol/sdk@1.4.0(zod@4.5.4)': + dependencies: + zod: 4.5.4 + + '@anthropic-ai/sdk@0.91.1(zod@4.5.4)': + dependencies: + json-schema-to-ts: 3.1.1 + optionalDependencies: + zod: 4.5.4 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.974.5 + '@aws-sdk/util-locate-window': 3.965.10 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.974.5 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.974.5 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-bedrock-runtime@3.1048.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.977.9 + '@aws-sdk/credential-provider-node': 3.972.82 + '@aws-sdk/eventstream-handler-node': 3.972.34 + '@aws-sdk/middleware-eventstream': 3.972.29 + '@aws-sdk/middleware-websocket': 3.972.52 + '@aws-sdk/token-providers': 3.1048.0 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/fetch-http-handler': 5.7.2 + '@smithy/node-http-handler': 4.7.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/core@3.977.9': + dependencies: + '@aws-sdk/types': 3.974.5 + '@aws-sdk/xml-builder': 3.972.40 + '@aws/lambda-invoke-store': 0.3.0 + '@smithy/core': 3.33.3 + '@smithy/signature-v4': 5.7.3 + '@smithy/types': 4.17.2 + bowser: 2.14.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.972.70': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.972.72': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/fetch-http-handler': 5.7.2 + '@smithy/node-http-handler': 4.11.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.973.15': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/credential-provider-env': 3.972.70 + '@aws-sdk/credential-provider-http': 3.972.72 + '@aws-sdk/credential-provider-login': 3.972.77 + '@aws-sdk/credential-provider-process': 3.972.70 + '@aws-sdk/credential-provider-sso': 3.973.14 + '@aws-sdk/credential-provider-web-identity': 3.972.76 + '@aws-sdk/nested-clients': 3.997.44 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/credential-provider-imds': 4.5.2 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-login@3.972.77': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/nested-clients': 3.997.44 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-node@3.972.82': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.70 + '@aws-sdk/credential-provider-http': 3.972.72 + '@aws-sdk/credential-provider-ini': 3.973.15 + '@aws-sdk/credential-provider-process': 3.972.70 + '@aws-sdk/credential-provider-sso': 3.973.14 + '@aws-sdk/credential-provider-web-identity': 3.972.76 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/credential-provider-imds': 4.5.2 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-process@3.972.70': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.973.14': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/nested-clients': 3.997.44 + '@aws-sdk/token-providers': 3.1116.0 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-web-identity@3.972.76': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/nested-clients': 3.997.44 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/eventstream-handler-node@3.972.34': + dependencies: + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-eventstream@3.972.29': + dependencies: + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-websocket@3.972.52': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/fetch-http-handler': 5.7.2 + '@smithy/signature-v4': 5.7.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.997.44': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/signature-v4-multi-region': 3.996.46 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/fetch-http-handler': 5.7.2 + '@smithy/node-http-handler': 4.11.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.996.46': + dependencies: + '@aws-sdk/types': 3.974.5 + '@smithy/signature-v4': 5.7.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1048.0': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/nested-clients': 3.997.44 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1116.0': + dependencies: + '@aws-sdk/core': 3.977.9 + '@aws-sdk/nested-clients': 3.997.44 + '@aws-sdk/types': 3.974.5 + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/types@3.974.5': + dependencies: + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.965.10': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.40': + dependencies: + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.3.0': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/runtime@7.29.7': {} + + '@deepseek-ai/cordis-plugin-group@1.0.2(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + + '@deepseek-ai/cordis-plugin-hmr@1.0.17(@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@babel/code-frame': 7.29.7 + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-timer': 1.1.4(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cosmokit': 1.8.3 + '@deepseek-ai/schemastery': 3.18.2 + chokidar: 4.0.3 + picomatch: 4.0.7 + + '@deepseek-ai/cordis-plugin-include@1.0.7(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/cosmokit': 1.8.3 + js-yaml: 4.3.2 + + '@deepseek-ai/cordis-plugin-loader@1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cosmokit': 1.8.3 + optionalDependencies: + node-addon-require-builtin: 0.1.5 + + '@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cosmokit': 1.8.3 + + '@deepseek-ai/cordis@4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3)': + dependencies: + '@deepseek-ai/cosmokit': 1.8.3 + '@standard-schema/spec': 1.1.0 + optionalDependencies: + '@deepseek-ai/cordis-plugin-include': 1.0.7(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + + '@deepseek-ai/cosmokit@1.8.3': {} + + '@deepseek-ai/dsh-acp-app@0.1.2-rc.1(fa069889d45be142bff46990a5a82694)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-acp': 0.1.2-rc.1(62d4374eaa98c85d26d35ceacd54eba1) + '@deepseek-ai/dsh-cmdline': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + commander: 15.0.0 + transitivePeerDependencies: + - '@deepseek-ai/cordis-plugin-loader' + - '@deepseek-ai/dsh-agent' + - '@deepseek-ai/dsh-attachment' + - '@deepseek-ai/dsh-llm' + - '@deepseek-ai/dsh-mcp-client' + - '@deepseek-ai/dsh-session' + - '@deepseek-ai/dsh-session-persistence' + - '@deepseek-ai/dsh-token-meter' + - '@deepseek-ai/dsh-user-approval' + - zod + + '@deepseek-ai/dsh-acp@0.1.2-rc.1(62d4374eaa98c85d26d35ceacd54eba1)': + dependencies: + '@agentclientprotocol/sdk': 1.4.0(zod@4.5.4) + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-mcp-client': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + optionalDependencies: + '@deepseek-ai/dsh-token-meter': 0.1.2-rc.1(33cefa37a09563da6f42092b18e29755) + transitivePeerDependencies: + - zod + + '@deepseek-ai/dsh-agent-default-model@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-agent-instructions@0.1.2-rc.1(e5b3de3f5523dbeda269ad8d2cfe7bc3)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-agent-loop@0.1.2-rc.1(b439f35cbe316bcb469bc5c5afd8b06f)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-include': 1.0.7(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-atomic-write': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + js-yaml: 4.3.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-agent-tool-presentation@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-anonymous-user-id@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-api-gateway@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-deque': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + ws: 8.21.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@deepseek-ai/dsh-api-remotes@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-deque': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-api-session-controller@0.1.2-rc.1(67adc9ab116df4fea3d0e7588c276912)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-agent-default-model': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2)) + '@deepseek-ai/dsh-agent-presets': 0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6) + '@deepseek-ai/dsh-api-gateway': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-connection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-deque': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-file-reference': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-native-command': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-query': 0.1.2-rc.1(809f373f67fcc04cb47d7737b224b358) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-typert-registry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-time': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-workspace-path': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-workspace': 0.1.2-rc.1(c4f266c8456c2e5dc1e1d3e663271a2c) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + optionalDependencies: + '@deepseek-ai/dsh-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session-projection-cache': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + ? '@deepseek-ai/dsh-api-settings-controller@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6))(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-native-command@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))' + : dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent-presets': 0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-native-command': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-api-workspace-controller@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-api-gateway@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-client-connection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-host-directory-picker@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-workspace@0.1.2-rc.1(c4f266c8456c2e5dc1e1d3e663271a2c))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-api-gateway': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-connection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-deque': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-host-directory-picker': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-storage-domain': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-workspace': 0.1.2-rc.1(c4f266c8456c2e5dc1e1d3e663271a2c) + zod: 4.5.4 + + '@deepseek-ai/dsh-app-boot@0.1.2-rc.1(@deepseek-ai/cordis-plugin-group@1.0.2(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis-plugin-hmr@1.0.17(@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-launch-environment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-group': 1.0.2(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cordis-plugin-include': 1.0.7(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-atomic-write': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-launch-environment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + js-yaml: 4.3.2 + resolve.exports: 2.0.3 + optionalDependencies: + '@deepseek-ai/cordis-plugin-hmr': 1.0.17(@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-atomic-write@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-attachment-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + sharp: 0.35.4 + transitivePeerDependencies: + - '@types/node' + + '@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-authorization@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-base@0.1.2-rc.1(8834d6d1995dcc6daaa1a34a63ab386e)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-hmr': 1.0.17(@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cordis-plugin-timer': 1.1.4(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-agent-default-model': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2)) + '@deepseek-ai/dsh-agent-instructions': 0.1.2-rc.1(e5b3de3f5523dbeda269ad8d2cfe7bc3) + '@deepseek-ai/dsh-agent-loop': 0.1.2-rc.1(b439f35cbe316bcb469bc5c5afd8b06f) + '@deepseek-ai/dsh-api-gateway': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-attachment-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-bash-sandbox': 0.1.2-rc.1(7b29b6eebfdd5a8bd1d6e20c2ccde138) + '@deepseek-ai/dsh-command-compact': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-commands@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a)) + '@deepseek-ai/dsh-command-feedback': 0.1.2-rc.1(76df573941c6680e925f3dd9a0738021) + '@deepseek-ai/dsh-command-goal': 0.1.2-rc.1(01eab1e40ca47a97e378c1072b5f8990) + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-compaction-basic': 0.1.2-rc.1(7088644b6f3ca6eb633283bec3db1170) + '@deepseek-ai/dsh-compaction-tool-result-pruner': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-token-meter@0.1.2-rc.1(33cefa37a09563da6f42092b18e29755)) + '@deepseek-ai/dsh-credentials-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-atomic-write@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-launch-environment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-deepseek-llm-api-extensions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-fs-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))) + '@deepseek-ai/dsh-fs-observation-policy': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))) + '@deepseek-ai/dsh-fs-sandbox': 0.1.2-rc.1(74558e474869c3de85d898a299188e25) + '@deepseek-ai/dsh-goal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-goal-round-driver': 0.1.2-rc.1(bf26b34cf1132cc19026df20148fe9bd) + '@deepseek-ai/dsh-jobs-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-jobs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm-deepseek': 0.1.2-rc.1(857eab20287461c3ab4cac5f5e7293e7) + '@deepseek-ai/dsh-llm-pi-ai': 0.1.2-rc.1(b397c52886cba37e92f62a85c71fdd04) + '@deepseek-ai/dsh-llm-retry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-permission-presets': 0.1.2-rc.1(20fee52e50617b4b3b153f012efdc21f) + '@deepseek-ai/dsh-plan-mode': 0.1.2-rc.1(7d3c1b2e95ec9d29f6bc9a773ae114c6) + '@deepseek-ai/dsh-plugin-package-inventory-deepseek': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6))(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-pwsh-sandbox': 0.1.2-rc.1(f80391c6e4a9ab6fd6ee0f35d0fe42fe) + '@deepseek-ai/dsh-repeat-tool-reminder': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-sandbox-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-checkpoint-policy': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-session-log-deepseek': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-persistence-jsonl': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-projection-cache': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-query-sqlite': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-query@0.1.2-rc.1(809f373f67fcc04cb47d7737b224b358))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-telemetry-otel': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-anonymous-user-id@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-command-feedback@0.1.2-rc.1(76df573941c6680e925f3dd9a0738021))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-telemetry@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-title-first-prompt-llm': 0.1.2-rc.1(16965af14e03c5eda8a9b944c067f731) + '@deepseek-ai/dsh-settings-file': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-atomic-write@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2)) + '@deepseek-ai/dsh-shell-env': 0.1.2-rc.1(94dfb45c84ce80ce0cf573baf3dc5941) + '@deepseek-ai/dsh-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-skill-badge': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-skill-filesystem': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-spill-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-spill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-spill-policy': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-output-retention@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-spill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-storage': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-storage-domain': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-storage-json': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-subagent-fork-in-process': 0.1.2-rc.1(a880d0c443bd643307010f9ff2ccc9d5) + '@deepseek-ai/dsh-subagent-spawn-in-process': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-subagent-in-process-driver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000)) + '@deepseek-ai/dsh-subprocess-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-token-meter': 0.1.2-rc.1(33cefa37a09563da6f42092b18e29755) + '@deepseek-ai/dsh-tool-bash': 0.1.2-rc.1(9a41237a1bb9eef4d7e30d2e8bff4cbe) + '@deepseek-ai/dsh-tool-call-timeout-policy': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-fs': 0.1.2-rc.1(ffc68c58826602f2edde8cc09bf810fe) + '@deepseek-ai/dsh-tool-fs-search': 0.1.2-rc.1(d0f5e00904268eccd4f41dc81b635919) + '@deepseek-ai/dsh-tool-goal': 0.1.2-rc.1(e1cb56cc70102d4ca9e2be69b193b94a) + '@deepseek-ai/dsh-tool-jobs': 0.1.2-rc.1(764853548609ba2023ce366bcc7727e5) + '@deepseek-ai/dsh-tool-pwsh': 0.1.2-rc.1(9a41237a1bb9eef4d7e30d2e8bff4cbe) + '@deepseek-ai/dsh-tool-ralph': 0.1.2-rc.1(ea16149f8c39f7d0090385f864e39ee9) + '@deepseek-ai/dsh-tool-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-str-replace-editor': 0.1.2-rc.1(d5e16572120b7e1031d3d62f1a845bfa) + '@deepseek-ai/dsh-tool-subagent': 0.1.2-rc.1(7379411b07fbb792763a18d3bf7700be) + '@deepseek-ai/dsh-tool-subagent-control': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-todo': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-web': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-web@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tool-workflow': 0.1.2-rc.1(cf22d47b65abfb3757bb87122f4634d1) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-typert-loader': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-typert-registry@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-typert-registry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-user-questions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-web': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-web-fetch-http': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-web@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-web-search-deepseek': 0.1.2-rc.1(968529175769426899bcf4616c9bbe25) + '@deepseek-ai/dsh-workflow-worker-thread': 0.1.2-rc.1(2dead2a56affb63726313ffe901ebf68) + transitivePeerDependencies: + - '@deepseek-ai/cordis-plugin-loader' + - '@deepseek-ai/dsh-agent-presets' + - '@deepseek-ai/dsh-anonymous-user-id' + - '@deepseek-ai/dsh-atomic-write' + - '@deepseek-ai/dsh-attachment' + - '@deepseek-ai/dsh-authorization' + - '@deepseek-ai/dsh-bash-local' + - '@deepseek-ai/dsh-brand' + - '@deepseek-ai/dsh-code-runtime' + - '@deepseek-ai/dsh-compaction' + - '@deepseek-ai/dsh-credentials' + - '@deepseek-ai/dsh-fs' + - '@deepseek-ai/dsh-home-paths' + - '@deepseek-ai/dsh-invariants' + - '@deepseek-ai/dsh-jobs' + - '@deepseek-ai/dsh-launch-environment' + - '@deepseek-ai/dsh-output-retention' + - '@deepseek-ai/dsh-pwsh-local' + - '@deepseek-ai/dsh-sandbox' + - '@deepseek-ai/dsh-scope' + - '@deepseek-ai/dsh-session-persistence' + - '@deepseek-ai/dsh-session-query' + - '@deepseek-ai/dsh-session-telemetry' + - '@deepseek-ai/dsh-session-title-llm' + - '@deepseek-ai/dsh-settings' + - '@deepseek-ai/dsh-shell' + - '@deepseek-ai/dsh-spill' + - '@deepseek-ai/dsh-subagent-in-process-driver' + - '@deepseek-ai/dsh-subprocess' + - '@deepseek-ai/dsh-timeout' + - '@deepseek-ai/dsh-typert-protocol' + - '@deepseek-ai/dsh-util-time' + - '@deepseek-ai/dsh-workflow' + - '@modelcontextprotocol/sdk' + - '@types/node' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@deepseek-ai/dsh-bash-local@0.1.2-rc.1(bc13a0a8cb6e26511125726b5aa577a7)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-bash-sandbox@0.1.2-rc.1(7b29b6eebfdd5a8bd1d6e20c2ccde138)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-bash-local': 0.1.2-rc.1(bc13a0a8cb6e26511125726b5aa577a7) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + + '@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-connection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + transitivePeerDependencies: + - '@deepseek-ai/dsh-invariants' + + '@deepseek-ai/dsh-client-hmr@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-client-locale@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-client-modules@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-agent-preset@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-approval@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-brand-official@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-chat@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-client-ui-commands@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-conversation@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + '@lexical/history': 0.49.0 + '@lexical/plain-text': 0.49.0 + '@lexical/text': 0.49.0 + '@lexical/utils': 0.49.0 + clsx: 2.1.1 + lexical: 0.49.0 + transitivePeerDependencies: + - typescript + + '@deepseek-ai/dsh-client-ui-cordis@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-deliverables@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-directory-picker-browse@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-directory-picker-native@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-goal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-input-trigger@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-jobs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-layout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-message-feedback@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-model-selection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-permission-presets@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-plan@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-reference@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-renderer@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(react@18.3.1)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + use-sync-external-store: 1.2.0(react@18.3.1) + transitivePeerDependencies: + - react + + '@deepseek-ai/dsh-client-ui-schedule@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-settings-general@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-settings-models@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-settings-plugin-inventory@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-settings-plugins@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-sidebar@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-subagent@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-theme@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-tool@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-trajectory@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(react-dom@19.2.8(react@18.3.1))(react@18.3.1)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@tanstack/react-virtual': 3.14.10(react-dom@19.2.8(react@18.3.1))(react@18.3.1) + diff: 9.0.0 + transitivePeerDependencies: + - react + - react-dom + + '@deepseek-ai/dsh-client-ui-user-questions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-client-ui-workflow-run@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-client-ui-workspace@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + clsx: 2.1.1 + + '@deepseek-ai/dsh-cmdline@0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + + '@deepseek-ai/dsh-code-runtime-worker-thread@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-code-runtime@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-code-runtime': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-code-runtime@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-command-compact@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-commands@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-compaction': 0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a) + + '@deepseek-ai/dsh-command-feedback@0.1.2-rc.1(76df573941c6680e925f3dd9a0738021)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-anonymous-user-id': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-telemetry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + + '@deepseek-ai/dsh-command-goal@0.1.2-rc.1(01eab1e40ca47a97e378c1072b5f8990)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-goal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-commands@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-crypto': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + zod: 4.5.4 + + '@deepseek-ai/dsh-compaction-basic@0.1.2-rc.1(7088644b6f3ca6eb633283bec3db1170)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-compaction': 0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-token-meter': 0.1.2-rc.1(33cefa37a09563da6f42092b18e29755) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + optionalDependencies: + '@deepseek-ai/dsh-compaction-tool-result-pruner': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-token-meter@0.1.2-rc.1(33cefa37a09563da6f42092b18e29755)) + + '@deepseek-ai/dsh-compaction-tool-result-pruner@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-token-meter@0.1.2-rc.1(33cefa37a09563da6f42092b18e29755))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-compaction': 0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-token-meter': 0.1.2-rc.1(33cefa37a09563da6f42092b18e29755) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-cordis-client-runner@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-cordis-host-runner@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-credentials-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-atomic-write@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-launch-environment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-atomic-write': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-launch-environment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + chokidar: 4.0.3 + yaml: 2.9.0 + + '@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-deque@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-file-reference-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-file-reference@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48)))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-file-reference': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48)) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-file-reference@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + + '@deepseek-ai/dsh-fs-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/schemastery': 3.18.2 + koffi: 3.2.0 + + '@deepseek-ai/dsh-fs-observation-policy@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + + '@deepseek-ai/dsh-fs-sandbox@0.1.2-rc.1(74558e474869c3de85d898a299188e25)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-fs-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + + '@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + + '@deepseek-ai/dsh-goal-round-driver@0.1.2-rc.1(bf26b34cf1132cc19026df20148fe9bd)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-goal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-goal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-headless@0.1.2-rc.1(86b04a000c3627d7156119e4973ec0a5)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-agent-default-model': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-cmdline': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-code-runtime-worker-thread': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-code-runtime@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + commander: 15.0.0 + transitivePeerDependencies: + - '@deepseek-ai/dsh-code-runtime' + - '@deepseek-ai/dsh-timeout' + + '@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-hook-protocol@0.1.2-rc.1(d487af10a15ed5d93f060383a8069498)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + + '@deepseek-ai/dsh-hooks-claude-code@0.1.2-rc.1(173724f11ce5a5a322a4a1d901445239)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-hook-protocol': 0.1.2-rc.1(d487af10a15ed5d93f060383a8069498) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-hooks-codex@0.1.2-rc.1(f11ff2287c92f61197dec280d2f2d838)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-hook-protocol': 0.1.2-rc.1(d487af10a15ed5d93f060383a8069498) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-host-directory-picker-auto@0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-client-ui-directory-picker-browse@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-client-ui-directory-picker-native@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-host-directory-picker-browse@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-host-directory-picker-native@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-host-webserver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-client-ui-directory-picker-browse': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-directory-picker-native': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-host-directory-picker-browse': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-host-directory-picker-native': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-host-webserver': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-host-directory-picker-browse@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-host-directory-picker': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-host-directory-picker-native@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-host-directory-picker': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-native-command': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + koffi: 3.2.0 + + '@deepseek-ai/dsh-host-directory-picker@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-host-frontend-static@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-client-connection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-host-webserver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-client-connection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-host-webserver': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-host-plugin-inventory@0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + zod: 4.5.4 + optionalDependencies: + '@deepseek-ai/dsh-agent-presets': 0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6) + + '@deepseek-ai/dsh-host-webserver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + compression: 1.8.1 + negotiator: 1.1.0 + transitivePeerDependencies: + - supports-color + + '@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-jobs-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-jobs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-jobs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-launch-environment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-llm-deepseek@0.1.2-rc.1(857eab20287461c3ab4cac5f5e7293e7)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-anonymous-user-id': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-atomic-write': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-deepseek-llm-api-extensions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-launch-environment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + eventsource-parser: 3.1.1 + + '@deepseek-ai/dsh-llm-pi-ai@0.1.2-rc.1(b397c52886cba37e92f62a85c71fdd04)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-authorization': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-launch-environment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + '@earendil-works/pi-ai': 0.84.4(@modelcontextprotocol/sdk@1.30.0(zod@4.5.4))(ws@8.21.3)(zod@4.5.4) + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@deepseek-ai/dsh-llm-retry@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-crypto': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-mcp-client@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + '@modelcontextprotocol/sdk': 1.30.0(zod@4.5.4) + zod: 4.5.4 + transitivePeerDependencies: + - '@cfworker/json-schema' + - supports-color + + '@deepseek-ai/dsh-message-feedback@0.1.2-rc.1(df0d671ca3d8913d8b1458c7b6e3bbf7)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-storage-domain': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-native-command@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-output-retention@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-permission-presets@0.1.2-rc.1(20fee52e50617b4b3b153f012efdc21f)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-persona@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-plan-mode@0.1.2-rc.1(7d3c1b2e95ec9d29f6bc9a773ae114c6)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-user-questions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + zod: 4.5.4 + optionalDependencies: + '@deepseek-ai/dsh-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + + '@deepseek-ai/dsh-plugin-package-inventory-deepseek@0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6))(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-deepseek-llm-api-extensions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/schemastery': 3.18.2 + optionalDependencies: + '@deepseek-ai/dsh-agent-presets': 0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6) + + '@deepseek-ai/dsh-pwsh-local@0.1.2-rc.1(bc13a0a8cb6e26511125726b5aa577a7)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-pwsh-sandbox@0.1.2-rc.1(f80391c6e4a9ab6fd6ee0f35d0fe42fe)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-pwsh-local': 0.1.2-rc.1(bc13a0a8cb6e26511125726b5aa577a7) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + + '@deepseek-ai/dsh-repeat-tool-reminder@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-sandbox-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-windows-acl': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/node-addon-landlock-run': 0.1.1 + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-sandbox-policy@0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-sandbox-windows-acl@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-win32-process': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + koffi: 3.2.0 + + '@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-schedule@0.1.2-rc.1(8b1e60c2e768bc748083c0f9cb94df9b)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + zod: 4.5.4 + + '@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-sdk-app@0.1.2-rc.1(37bb2898895a0667bdefab54bfb24c30)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-cmdline': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sdk-jsonrpc-server': 0.1.2-rc.1(3a8a5900a2a5af37a684c050900d6ed4) + '@deepseek-ai/schemastery': 3.18.2 + commander: 15.0.0 + transitivePeerDependencies: + - '@deepseek-ai/cordis-plugin-loader' + - '@deepseek-ai/dsh-agent' + - '@deepseek-ai/dsh-attachment' + - '@deepseek-ai/dsh-llm' + - '@deepseek-ai/dsh-llm-deepseek' + - '@deepseek-ai/dsh-scope' + - '@deepseek-ai/dsh-sdk-protocol' + - '@deepseek-ai/dsh-session' + - '@deepseek-ai/dsh-subagent' + + '@deepseek-ai/dsh-sdk-client@0.1.2-rc.1(41aaf23ee1baaab1ffc9d82bdf632649)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh': 0.1.2-rc.1(72dcc747faee28b14a2c7d334c2c1f6d) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sdk-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@deepseek-ai/cordis-plugin-group' + - '@deepseek-ai/dsh-agent' + - '@deepseek-ai/dsh-agent-default-model' + - '@deepseek-ai/dsh-agent-presets' + - '@deepseek-ai/dsh-anonymous-user-id' + - '@deepseek-ai/dsh-api-gateway' + - '@deepseek-ai/dsh-atomic-write' + - '@deepseek-ai/dsh-attachment' + - '@deepseek-ai/dsh-authorization' + - '@deepseek-ai/dsh-bash-local' + - '@deepseek-ai/dsh-brand' + - '@deepseek-ai/dsh-code-runtime' + - '@deepseek-ai/dsh-commands' + - '@deepseek-ai/dsh-compaction' + - '@deepseek-ai/dsh-cordis-host-runner' + - '@deepseek-ai/dsh-credentials' + - '@deepseek-ai/dsh-fs' + - '@deepseek-ai/dsh-hook-protocol' + - '@deepseek-ai/dsh-host-directory-picker' + - '@deepseek-ai/dsh-host-webserver' + - '@deepseek-ai/dsh-invariants' + - '@deepseek-ai/dsh-jobs' + - '@deepseek-ai/dsh-llm-deepseek' + - '@deepseek-ai/dsh-llm-retry' + - '@deepseek-ai/dsh-native-command' + - '@deepseek-ai/dsh-output-retention' + - '@deepseek-ai/dsh-permission-presets' + - '@deepseek-ai/dsh-sandbox' + - '@deepseek-ai/dsh-sandbox-policy' + - '@deepseek-ai/dsh-scope' + - '@deepseek-ai/dsh-session-persistence' + - '@deepseek-ai/dsh-session-projection-cache' + - '@deepseek-ai/dsh-session-query' + - '@deepseek-ai/dsh-session-telemetry' + - '@deepseek-ai/dsh-session-title' + - '@deepseek-ai/dsh-session-title-llm' + - '@deepseek-ai/dsh-settings' + - '@deepseek-ai/dsh-shell' + - '@deepseek-ai/dsh-shell-env' + - '@deepseek-ai/dsh-spill' + - '@deepseek-ai/dsh-storage' + - '@deepseek-ai/dsh-storage-domain' + - '@deepseek-ai/dsh-subagent' + - '@deepseek-ai/dsh-subagent-in-process-driver' + - '@deepseek-ai/dsh-subprocess' + - '@deepseek-ai/dsh-system-prompt' + - '@deepseek-ai/dsh-timeout' + - '@deepseek-ai/dsh-tools' + - '@deepseek-ai/dsh-typert-protocol' + - '@deepseek-ai/dsh-typert-registry' + - '@deepseek-ai/dsh-user-approval' + - '@deepseek-ai/dsh-user-questions' + - '@deepseek-ai/dsh-util-time' + - '@deepseek-ai/dsh-util-workspace-path' + - '@deepseek-ai/dsh-web' + - '@deepseek-ai/dsh-workflow' + - '@deepseek-ai/dsh-workspace' + - '@modelcontextprotocol/sdk' + - '@types/node' + - bufferutil + - react + - react-dom + - supports-color + - typescript + - utf-8-validate + - ws + - zod + + '@deepseek-ai/dsh-sdk-jsonrpc-server@0.1.2-rc.1(3a8a5900a2a5af37a684c050900d6ed4)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm-deepseek': 0.1.2-rc.1(857eab20287461c3ab4cac5f5e7293e7) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-sdk-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-sdk-minimal@0.1.2-rc.1(9537f2d1364d7793628b17c004adc625)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-timer': 1.1.4(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-agent-loop': 0.1.2-rc.1(b439f35cbe316bcb469bc5c5afd8b06f) + '@deepseek-ai/dsh-deepseek-llm-api-extensions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-fs-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-jobs-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-jobs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm-deepseek': 0.1.2-rc.1(857eab20287461c3ab4cac5f5e7293e7) + '@deepseek-ai/dsh-llm-retry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-plugin-package-inventory-deepseek': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6))(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-sdk-app': 0.1.2-rc.1(37bb2898895a0667bdefab54bfb24c30) + '@deepseek-ai/dsh-sdk-jsonrpc-server': 0.1.2-rc.1(3a8a5900a2a5af37a684c050900d6ed4) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-log-deepseek': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-persistence-jsonl': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-subprocess-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-terminal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-terminal-bash': 0.1.2-rc.1(86ca794845031111f6f305734c214879) + '@deepseek-ai/dsh-tool-bash-persistent': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-terminal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-pwsh-persistent': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-terminal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-str-replace-editor': 0.1.2-rc.1(d5e16572120b7e1031d3d62f1a845bfa) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + transitivePeerDependencies: + - '@deepseek-ai/cordis-plugin-loader' + - '@deepseek-ai/dsh-agent-presets' + - '@deepseek-ai/dsh-anonymous-user-id' + - '@deepseek-ai/dsh-atomic-write' + - '@deepseek-ai/dsh-attachment' + - '@deepseek-ai/dsh-brand' + - '@deepseek-ai/dsh-code-runtime' + - '@deepseek-ai/dsh-credentials' + - '@deepseek-ai/dsh-fs' + - '@deepseek-ai/dsh-home-paths' + - '@deepseek-ai/dsh-jobs' + - '@deepseek-ai/dsh-launch-environment' + - '@deepseek-ai/dsh-sandbox' + - '@deepseek-ai/dsh-sdk-protocol' + - '@deepseek-ai/dsh-session-persistence' + - '@deepseek-ai/dsh-settings' + - '@deepseek-ai/dsh-shell' + - '@deepseek-ai/dsh-subagent' + - '@deepseek-ai/dsh-subprocess' + - '@deepseek-ai/dsh-timeout' + - '@deepseek-ai/dsh-typert-protocol' + - '@deepseek-ai/dsh-user-approval' + + '@deepseek-ai/dsh-sdk-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + + '@deepseek-ai/dsh-session-checkpoint-policy@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + + '@deepseek-ai/dsh-session-log-deepseek@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-deepseek-llm-api-extensions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-deepseek-llm-api-extensions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-session-log-export@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + fflate: 0.8.3 + + '@deepseek-ai/dsh-session-persistence-jsonl@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + koffi: 3.2.0 + + '@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-session-projection-cache@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-storage-domain': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + zod: 4.5.4 + + '@deepseek-ai/dsh-session-query-sqlite@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-persistence@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-query@0.1.2-rc.1(809f373f67fcc04cb47d7737b224b358))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-query': 0.1.2-rc.1(809f373f67fcc04cb47d7737b224b358) + '@deepseek-ai/schemastery': 3.18.2 + optionalDependencies: + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + + '@deepseek-ai/dsh-session-query@0.1.2-rc.1(809f373f67fcc04cb47d7737b224b358)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tool-todo': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + optionalDependencies: + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-projection-cache': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-session-reference@0.1.2-rc.1(b2c466a7d237803e42a928ae500294dc)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-compaction': 0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-output-retention': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-query': 0.1.2-rc.1(809f373f67fcc04cb47d7737b224b358) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + optionalDependencies: + '@deepseek-ai/dsh-session-projection-cache': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-session-stats@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + zod: 4.5.4 + + '@deepseek-ai/dsh-session-telemetry-otel@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-anonymous-user-id@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-command-feedback@0.1.2-rc.1(76df573941c6680e925f3dd9a0738021))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-telemetry@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-anonymous-user-id': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-command-feedback': 0.1.2-rc.1(76df573941c6680e925f3dd9a0738021) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-telemetry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.220.0 + '@opentelemetry/exporter-logs-otlp-http': 0.220.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.220.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.220.0(@opentelemetry/api@1.9.1) + + '@deepseek-ai/dsh-session-telemetry@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-session-title-first-prompt-llm@0.1.2-rc.1(16965af14e03c5eda8a9b944c067f731)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-title-llm': 0.1.2-rc.1(b1922f134f562553b7f99630834a672d) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-session-title-llm@0.1.2-rc.1(b1922f134f562553b7f99630834a672d)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-session-title@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-session-turn-outline@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + zod: 4.5.4 + + '@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-settings-file@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-atomic-write@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-atomic-write': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + chokidar: 4.0.3 + yaml: 2.9.0 + + '@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-shell-env@0.1.2-rc.1(94dfb45c84ce80ce0cf573baf3dc5941)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-shell@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-skill-badge@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-skill-filesystem@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/schemastery': 3.18.2 + chokidar: 5.0.0 + yaml: 2.9.0 + + '@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-spill-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-spill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-spill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-spill-policy@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-output-retention@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-spill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-output-retention': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-spill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-spill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-storage': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-storage-json@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-storage': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-subagent-fork-in-process@0.1.2-rc.1(a880d0c443bd643307010f9ff2ccc9d5)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-subagent-in-process-driver': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-subagent-in-process-driver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + + ? '@deepseek-ai/dsh-subagent-spawn-in-process@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-subagent-in-process-driver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))' + : dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-subagent-in-process-driver': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-time': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + zod: 4.5.4 + optionalDependencies: + '@deepseek-ai/dsh-agent-presets': 0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6) + '@deepseek-ai/dsh-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-projection-cache': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-query': 0.1.2-rc.1(809f373f67fcc04cb47d7737b224b358) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + + '@deepseek-ai/dsh-subprocess-local@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + koffi: 3.2.0 + node-pty: 1.2.0-beta.15 + + '@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-terminal-bash@0.1.2-rc.1(86ca794845031111f6f305734c214879)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-pwsh-local': 0.1.2-rc.1(bc13a0a8cb6e26511125726b5aa577a7) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-terminal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + '@xterm/headless': 6.0.0 + transitivePeerDependencies: + - '@deepseek-ai/dsh-settings' + - '@deepseek-ai/dsh-shell' + - '@deepseek-ai/dsh-timeout' + + '@deepseek-ai/dsh-terminal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-time-context@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-tmux-context@0.1.2-rc.1(f5c1e82b216fd56424e090b85de7d318)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-token-meter@0.1.2-rc.1(33cefa37a09563da6f42092b18e29755)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-compaction': 0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm-retry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-tool-ask-user@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-user-questions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-user-questions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-tool-bash-persistent@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-terminal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-terminal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-bash@0.1.2-rc.1(9a41237a1bb9eef4d7e30d2e8bff4cbe)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-shell-env': 0.1.2-rc.1(94dfb45c84ce80ce0cf573baf3dc5941) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-call-timeout-policy@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + + '@deepseek-ai/dsh-tool-cordis@0.1.2-rc.1(cd3470ceadd1ac494e2d8110f6fb789c)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-cordis-host-runner': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + + '@deepseek-ai/dsh-tool-fs-search@0.1.2-rc.1(d0f5e00904268eccd4f41dc81b635919)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-output-retention': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-spill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + '@vscode/ripgrep': 1.18.0 + + '@deepseek-ai/dsh-tool-fs@0.1.2-rc.1(ffc68c58826602f2edde8cc09bf810fe)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + diff: 9.0.0 + + '@deepseek-ai/dsh-tool-goal@0.1.2-rc.1(e1cb56cc70102d4ca9e2be69b193b94a)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-goal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-jobs@0.1.2-rc.1(764853548609ba2023ce366bcc7727e5)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-output-retention': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-pwsh-persistent@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-terminal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-terminal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-pwsh@0.1.2-rc.1(9a41237a1bb9eef4d7e30d2e8bff4cbe)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-shell': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-shell-env': 0.1.2-rc.1(94dfb45c84ce80ce0cf573baf3dc5941) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-ralph@0.1.2-rc.1(ea16149f8c39f7d0090385f864e39ee9)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-workflow': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-str-replace-editor@0.1.2-rc.1(d5e16572120b7e1031d3d62f1a845bfa)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-fs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))) + '@deepseek-ai/dsh-sandbox': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-sandbox-policy': 0.1.2-rc.1(18dce1690d004f995bc0c8cfc6c6a37b) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tool-subagent-control@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + + '@deepseek-ai/dsh-tool-subagent@0.1.2-rc.1(7379411b07fbb792763a18d3bf7700be)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-tool-todo@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/schemastery': 3.18.2 + zod: 4.5.4 + + '@deepseek-ai/dsh-tool-web@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-web@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-web': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + '@joplin/turndown-plugin-gfm': 1.0.67 + turndown: 7.2.4 + + '@deepseek-ai/dsh-tool-workflow@0.1.2-rc.1(cf22d47b65abfb3757bb87122f4634d1)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-workflow': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-code-runtime': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-user-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-typert-loader@0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-typert-registry@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-typert-registry': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-typert-registry@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + zod: 4.5.4 + + '@deepseek-ai/dsh-user-approval@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-user-questions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-scope': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + + '@deepseek-ai/dsh-util-crypto@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-util-time@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-util-values@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-util-workspace-path@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + + '@deepseek-ai/dsh-web-app@0.1.2-rc.1(959684fd37a8fde5daa1cd3d6ffdefe9)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/dsh-agent-presets': 0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6) + '@deepseek-ai/dsh-api-remotes': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-api-session-controller': 0.1.2-rc.1(67adc9ab116df4fea3d0e7588c276912) + '@deepseek-ai/dsh-api-settings-controller': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6))(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-native-command@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-api-workspace-controller': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-api-gateway@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-client-connection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-host-directory-picker@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-storage-domain@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-workspace@0.1.2-rc.1(c4f266c8456c2e5dc1e1d3e663271a2c)) + '@deepseek-ai/dsh-app-boot': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-group@1.0.2(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis-plugin-hmr@1.0.17(@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-launch-environment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-client-connection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-client-hmr': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-locale': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-modules': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-agent-preset': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-approval': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-attachment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-brand-official': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-chat': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-commands': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-conversation': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-cordis': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-deliverables': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-directory-picker-browse': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-directory-picker-native': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-goal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-input-trigger': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-jobs': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-layout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-message-feedback': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-model-selection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-permission-presets': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-plan': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-reference': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-renderer': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(react@18.3.1) + '@deepseek-ai/dsh-client-ui-schedule': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-settings-general': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-settings-models': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-settings-plugin-inventory': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-settings-plugins': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-sidebar': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-subagent': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-theme': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-tool': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-trajectory': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(react-dom@19.2.8(react@18.3.1))(react@18.3.1) + '@deepseek-ai/dsh-client-ui-user-questions': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-workflow-run': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-workspace': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-cmdline': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-code-runtime-worker-thread': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-code-runtime@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-cordis-client-runner': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-cordis-host-runner': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-file-reference': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48)) + '@deepseek-ai/dsh-file-reference-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-file-reference@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48)))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-host-directory-picker-auto': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-client-ui-directory-picker-browse@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-client-ui-directory-picker-native@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-host-directory-picker-browse@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-host-directory-picker-native@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-host-webserver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-host-directory-picker-browse': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-host-directory-picker-native': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-host-frontend-static': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-client-connection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-host-webserver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-host-plugin-inventory': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent-presets@0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-host-webserver': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-launch-environment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-message-feedback': 0.1.2-rc.1(df0d671ca3d8913d8b1458c7b6e3bbf7) + '@deepseek-ai/dsh-session-log-export': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session-reference': 0.1.2-rc.1(b2c466a7d237803e42a928ae500294dc) + '@deepseek-ai/dsh-session-stats': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-turn-outline': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-shell-env': 0.1.2-rc.1(94dfb45c84ce80ce0cf573baf3dc5941) + '@deepseek-ai/dsh-subprocess': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-system-prompt': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tool-subagent': 0.1.2-rc.1(7379411b07fbb792763a18d3bf7700be) + '@deepseek-ai/dsh-web-frontend': 0.1.2-rc.1 + '@deepseek-ai/dsh-workspace': 0.1.2-rc.1(c4f266c8456c2e5dc1e1d3e663271a2c) + '@deepseek-ai/schemastery': 3.18.2 + commander: 15.0.0 + open: 11.0.2 + transitivePeerDependencies: + - '@deepseek-ai/cordis-plugin-group' + - '@deepseek-ai/cordis-plugin-hmr' + - '@deepseek-ai/cordis-plugin-include' + - '@deepseek-ai/dsh-agent' + - '@deepseek-ai/dsh-agent-default-model' + - '@deepseek-ai/dsh-api-gateway' + - '@deepseek-ai/dsh-atomic-write' + - '@deepseek-ai/dsh-attachment' + - '@deepseek-ai/dsh-brand' + - '@deepseek-ai/dsh-code-runtime' + - '@deepseek-ai/dsh-compaction' + - '@deepseek-ai/dsh-credentials' + - '@deepseek-ai/dsh-home-paths' + - '@deepseek-ai/dsh-host-directory-picker' + - '@deepseek-ai/dsh-invariants' + - '@deepseek-ai/dsh-jobs' + - '@deepseek-ai/dsh-llm' + - '@deepseek-ai/dsh-native-command' + - '@deepseek-ai/dsh-output-retention' + - '@deepseek-ai/dsh-scope' + - '@deepseek-ai/dsh-session' + - '@deepseek-ai/dsh-session-persistence' + - '@deepseek-ai/dsh-session-projection' + - '@deepseek-ai/dsh-session-projection-cache' + - '@deepseek-ai/dsh-session-query' + - '@deepseek-ai/dsh-session-title' + - '@deepseek-ai/dsh-settings' + - '@deepseek-ai/dsh-skill' + - '@deepseek-ai/dsh-storage' + - '@deepseek-ai/dsh-storage-domain' + - '@deepseek-ai/dsh-subagent' + - '@deepseek-ai/dsh-timeout' + - '@deepseek-ai/dsh-tools' + - '@deepseek-ai/dsh-typert-protocol' + - '@deepseek-ai/dsh-typert-registry' + - '@deepseek-ai/dsh-util-time' + - '@deepseek-ai/dsh-util-workspace-path' + - react + - react-dom + - supports-color + - typescript + + '@deepseek-ai/dsh-web-fetch-http@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-web@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-timeout': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-web': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + ipaddr.js: 2.5.0 + undici: 8.10.1 + + '@deepseek-ai/dsh-web-frontend@0.1.2-rc.1': {} + + '@deepseek-ai/dsh-web-search-deepseek@0.1.2-rc.1(968529175769426899bcf4616c9bbe25)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-launch-environment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-settings': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2) + '@deepseek-ai/dsh-web': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-web@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-webhook-github@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-host-webserver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-webhook@0.1.2-rc.1(7871cd4ab57bb09d584624f0150468bd))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-credentials': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-host-webserver': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-webhook': 0.1.2-rc.1(7871cd4ab57bb09d584624f0150468bd) + '@deepseek-ai/schemastery': 3.18.2 + '@octokit/webhooks': 14.2.0 + + '@deepseek-ai/dsh-webhook@0.1.2-rc.1(7871cd4ab57bb09d584624f0150468bd)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-agent-default-model': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-settings@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/schemastery@3.18.2)) + '@deepseek-ai/dsh-agent-presets': 0.1.2-rc.1(ba04eac613f92d66ff12b0df8dedf0e6) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-permission-presets': 0.1.2-rc.1(20fee52e50617b4b3b153f012efdc21f) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-title': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-workspace': 0.1.2-rc.1(c4f266c8456c2e5dc1e1d3e663271a2c) + + '@deepseek-ai/dsh-win32-process@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + koffi: 3.2.0 + + '@deepseek-ai/dsh-workflow-worker-thread@0.1.2-rc.1(2dead2a56affb63726313ffe901ebf68)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-subagent': 0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000) + '@deepseek-ai/dsh-tools': 0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc) + '@deepseek-ai/dsh-util-values': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-workflow': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/schemastery': 3.18.2 + + '@deepseek-ai/dsh-workflow@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-agent': 0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-llm': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + + '@deepseek-ai/dsh-workspace@0.1.2-rc.1(c4f266c8456c2e5dc1e1d3e663271a2c)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/dsh-brand': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-invariants': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-session': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-session-persistence': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-storage': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-storage-domain': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-storage@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-typert-protocol': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + zod: 4.5.4 + + '@deepseek-ai/dsh@0.1.2-rc.1(72dcc747faee28b14a2c7d334c2c1f6d)': + dependencies: + '@deepseek-ai/cordis': 4.0.2(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3) + '@deepseek-ai/cordis-plugin-hmr': 1.0.17(@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cordis-plugin-include': 1.0.7(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/cordis-plugin-loader': 1.0.3(@deepseek-ai/cordis@4.0.2)(node-addon-require-builtin@0.1.5) + '@deepseek-ai/cordis-plugin-timer': 1.1.4(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-acp-app': 0.1.2-rc.1(fa069889d45be142bff46990a5a82694) + '@deepseek-ai/dsh-agent-instructions': 0.1.2-rc.1(e5b3de3f5523dbeda269ad8d2cfe7bc3) + '@deepseek-ai/dsh-agent-tool-presentation': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-app-boot': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-group@1.0.2(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis-plugin-hmr@1.0.17(@deepseek-ai/cordis-plugin-timer@1.1.4(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/cordis-plugin-include@1.0.7)(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-launch-environment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-base': 0.1.2-rc.1(8834d6d1995dcc6daaa1a34a63ab386e) + '@deepseek-ai/dsh-client-ui-agent-preset': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-client-ui-cordis': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-cmdline': 0.1.2-rc.1(@deepseek-ai/cordis-plugin-loader@1.0.3)(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-command-compact': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-commands@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a)) + '@deepseek-ai/dsh-command-goal': 0.1.2-rc.1(01eab1e40ca47a97e378c1072b5f8990) + '@deepseek-ai/dsh-compaction-basic': 0.1.2-rc.1(7088644b6f3ca6eb633283bec3db1170) + '@deepseek-ai/dsh-compaction-tool-result-pruner': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-compaction@0.1.2-rc.1(ee356fc80d8e34f446cbc38e8ce6b81a))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-token-meter@0.1.2-rc.1(33cefa37a09563da6f42092b18e29755)) + '@deepseek-ai/dsh-cordis-client-runner': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-fs-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))) + '@deepseek-ai/dsh-goal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-typert-protocol@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-goal-round-driver': 0.1.2-rc.1(bf26b34cf1132cc19026df20148fe9bd) + '@deepseek-ai/dsh-headless': 0.1.2-rc.1(86b04a000c3627d7156119e4973ec0a5) + '@deepseek-ai/dsh-home-paths': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-hooks-claude-code': 0.1.2-rc.1(173724f11ce5a5a322a4a1d901445239) + '@deepseek-ai/dsh-hooks-codex': 0.1.2-rc.1(f11ff2287c92f61197dec280d2f2d838) + '@deepseek-ai/dsh-jobs-local': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-jobs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-launch-environment': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2) + '@deepseek-ai/dsh-mcp-client': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-attachment@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-subprocess@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-persona': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-plan-mode': 0.1.2-rc.1(7d3c1b2e95ec9d29f6bc9a773ae114c6) + '@deepseek-ai/dsh-pwsh-local': 0.1.2-rc.1(bc13a0a8cb6e26511125726b5aa577a7) + '@deepseek-ai/dsh-pwsh-sandbox': 0.1.2-rc.1(f80391c6e4a9ab6fd6ee0f35d0fe42fe) + '@deepseek-ai/dsh-schedule': 0.1.2-rc.1(8b1e60c2e768bc748083c0f9cb94df9b) + '@deepseek-ai/dsh-sdk-app': 0.1.2-rc.1(37bb2898895a0667bdefab54bfb24c30) + '@deepseek-ai/dsh-sdk-minimal': 0.1.2-rc.1(9537f2d1364d7793628b17c004adc625) + '@deepseek-ai/dsh-session-projection': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-session-reference': 0.1.2-rc.1(b2c466a7d237803e42a928ae500294dc) + '@deepseek-ai/dsh-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-skill-filesystem': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-fs@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-sandbox@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))))(@deepseek-ai/dsh-home-paths@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-terminal': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)) + '@deepseek-ai/dsh-terminal-bash': 0.1.2-rc.1(86ca794845031111f6f305734c214879) + '@deepseek-ai/dsh-time-context': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tmux-context': 0.1.2-rc.1(f5c1e82b216fd56424e090b85de7d318) + '@deepseek-ai/dsh-token-meter': 0.1.2-rc.1(33cefa37a09563da6f42092b18e29755) + '@deepseek-ai/dsh-tool-ask-user': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-user-questions@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))) + '@deepseek-ai/dsh-tool-bash': 0.1.2-rc.1(9a41237a1bb9eef4d7e30d2e8bff4cbe) + '@deepseek-ai/dsh-tool-bash-persistent': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-terminal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-cordis': 0.1.2-rc.1(cd3470ceadd1ac494e2d8110f6fb789c) + '@deepseek-ai/dsh-tool-fs': 0.1.2-rc.1(ffc68c58826602f2edde8cc09bf810fe) + '@deepseek-ai/dsh-tool-fs-search': 0.1.2-rc.1(d0f5e00904268eccd4f41dc81b635919) + '@deepseek-ai/dsh-tool-goal': 0.1.2-rc.1(e1cb56cc70102d4ca9e2be69b193b94a) + '@deepseek-ai/dsh-tool-jobs': 0.1.2-rc.1(764853548609ba2023ce366bcc7727e5) + '@deepseek-ai/dsh-tool-pwsh': 0.1.2-rc.1(9a41237a1bb9eef4d7e30d2e8bff4cbe) + '@deepseek-ai/dsh-tool-pwsh-persistent': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-terminal@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-brand@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-timeout@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-ralph': 0.1.2-rc.1(ea16149f8c39f7d0090385f864e39ee9) + '@deepseek-ai/dsh-tool-skill': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-skill@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-str-replace-editor': 0.1.2-rc.1(d5e16572120b7e1031d3d62f1a845bfa) + '@deepseek-ai/dsh-tool-subagent': 0.1.2-rc.1(7379411b07fbb792763a18d3bf7700be) + '@deepseek-ai/dsh-tool-subagent-control': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-subagent@0.1.2-rc.1(6a03be92a0806572e3495948f7ef9000))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-todo': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-agent@0.1.2-rc.1(6f833cf90b9dd3f0d529840b1aebfb48))(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session-projection@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc)) + '@deepseek-ai/dsh-tool-web': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-system-prompt@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-tools@0.1.2-rc.1(de5e1ff2d608fbe22667925341ad1dfc))(@deepseek-ai/dsh-web@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-llm@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))) + '@deepseek-ai/dsh-tool-workflow': 0.1.2-rc.1(cf22d47b65abfb3757bb87122f4634d1) + '@deepseek-ai/dsh-web-app': 0.1.2-rc.1(959684fd37a8fde5daa1cd3d6ffdefe9) + '@deepseek-ai/dsh-webhook': 0.1.2-rc.1(7871cd4ab57bb09d584624f0150468bd) + '@deepseek-ai/dsh-webhook-github': 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-credentials@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)))(@deepseek-ai/dsh-host-webserver@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))(@deepseek-ai/dsh-session@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.2-rc.1(@deepseek-ai/cordis@4.0.2))))(@deepseek-ai/dsh-webhook@0.1.2-rc.1(7871cd4ab57bb09d584624f0150468bd)) + '@deepseek-ai/dsh-workflow-worker-thread': 0.1.2-rc.1(2dead2a56affb63726313ffe901ebf68) + '@deepseek-ai/schemastery': 3.18.2 + commander: 15.0.0 + js-yaml: 4.3.2 + node-addon-require-builtin: 0.1.5 + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@deepseek-ai/cordis-plugin-group' + - '@deepseek-ai/dsh-agent' + - '@deepseek-ai/dsh-agent-default-model' + - '@deepseek-ai/dsh-agent-presets' + - '@deepseek-ai/dsh-anonymous-user-id' + - '@deepseek-ai/dsh-api-gateway' + - '@deepseek-ai/dsh-atomic-write' + - '@deepseek-ai/dsh-attachment' + - '@deepseek-ai/dsh-authorization' + - '@deepseek-ai/dsh-bash-local' + - '@deepseek-ai/dsh-brand' + - '@deepseek-ai/dsh-code-runtime' + - '@deepseek-ai/dsh-commands' + - '@deepseek-ai/dsh-compaction' + - '@deepseek-ai/dsh-cordis-host-runner' + - '@deepseek-ai/dsh-credentials' + - '@deepseek-ai/dsh-fs' + - '@deepseek-ai/dsh-hook-protocol' + - '@deepseek-ai/dsh-host-directory-picker' + - '@deepseek-ai/dsh-host-webserver' + - '@deepseek-ai/dsh-invariants' + - '@deepseek-ai/dsh-jobs' + - '@deepseek-ai/dsh-llm' + - '@deepseek-ai/dsh-llm-deepseek' + - '@deepseek-ai/dsh-llm-retry' + - '@deepseek-ai/dsh-native-command' + - '@deepseek-ai/dsh-output-retention' + - '@deepseek-ai/dsh-permission-presets' + - '@deepseek-ai/dsh-sandbox' + - '@deepseek-ai/dsh-sandbox-policy' + - '@deepseek-ai/dsh-scope' + - '@deepseek-ai/dsh-sdk-protocol' + - '@deepseek-ai/dsh-session' + - '@deepseek-ai/dsh-session-persistence' + - '@deepseek-ai/dsh-session-projection-cache' + - '@deepseek-ai/dsh-session-query' + - '@deepseek-ai/dsh-session-telemetry' + - '@deepseek-ai/dsh-session-title' + - '@deepseek-ai/dsh-session-title-llm' + - '@deepseek-ai/dsh-settings' + - '@deepseek-ai/dsh-shell' + - '@deepseek-ai/dsh-shell-env' + - '@deepseek-ai/dsh-spill' + - '@deepseek-ai/dsh-storage' + - '@deepseek-ai/dsh-storage-domain' + - '@deepseek-ai/dsh-subagent' + - '@deepseek-ai/dsh-subagent-in-process-driver' + - '@deepseek-ai/dsh-subprocess' + - '@deepseek-ai/dsh-system-prompt' + - '@deepseek-ai/dsh-timeout' + - '@deepseek-ai/dsh-tools' + - '@deepseek-ai/dsh-typert-protocol' + - '@deepseek-ai/dsh-typert-registry' + - '@deepseek-ai/dsh-user-approval' + - '@deepseek-ai/dsh-user-questions' + - '@deepseek-ai/dsh-util-time' + - '@deepseek-ai/dsh-util-workspace-path' + - '@deepseek-ai/dsh-web' + - '@deepseek-ai/dsh-workflow' + - '@deepseek-ai/dsh-workspace' + - '@modelcontextprotocol/sdk' + - '@types/node' + - bufferutil + - react + - react-dom + - supports-color + - typescript + - utf-8-validate + - ws + - zod + + '@deepseek-ai/node-addon-landlock-run-linux-arm64@0.1.1': + optional: true + + '@deepseek-ai/node-addon-landlock-run-linux-x64@0.1.1': + optional: true + + '@deepseek-ai/node-addon-landlock-run@0.1.1': + optionalDependencies: + '@deepseek-ai/node-addon-landlock-run-linux-arm64': 0.1.1 + '@deepseek-ai/node-addon-landlock-run-linux-x64': 0.1.1 + + '@deepseek-ai/schemastery@3.18.2': + dependencies: + '@deepseek-ai/cosmokit': 1.8.3 + '@standard-schema/spec': 1.1.0 + + '@earendil-works/pi-ai@0.84.4(@modelcontextprotocol/sdk@1.30.0(zod@4.5.4))(ws@8.21.3)(zod@4.5.4)': + dependencies: + '@anthropic-ai/sdk': 0.91.1(zod@4.5.4) + '@aws-sdk/client-bedrock-runtime': 3.1048.0 + '@earendil-works/pi-telemetry': 0.84.4 + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.30.0(zod@4.5.4)) + '@smithy/node-http-handler': 4.7.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + openai: 6.40.0(ws@8.21.3)(zod@4.5.4) + partial-json: 0.1.7 + typebox: 1.3.7 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@earendil-works/pi-telemetry@0.84.4': {} + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@google/genai@1.52.0(@modelcontextprotocol/sdk@1.30.0(zod@4.5.4))': + dependencies: + google-auth-library: 10.9.1 + p-retry: 4.6.2 + protobufjs: 7.6.6 + ws: 8.21.3 + optionalDependencies: + '@modelcontextprotocol/sdk': 1.30.0(zod@4.5.4) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@hono/node-server@2.1.1(hono@4.13.5)': + dependencies: + hono: 4.13.5 + + '@img/colour@1.1.0': {} + + '@img/sharp-darwin-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.3 + optional: true + + '@img/sharp-darwin-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.3 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.3.3': + optional: true + + '@img/sharp-libvips-darwin-x64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-arm64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-arm@1.3.3': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.3.3': + optional: true + + '@img/sharp-libvips-linux-s390x@1.3.3': + optional: true + + '@img/sharp-libvips-linux-x64@1.3.3': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + optional: true + + '@img/sharp-linux-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.3 + optional: true + + '@img/sharp-linux-arm@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.3 + optional: true + + '@img/sharp-linux-ppc64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.3 + optional: true + + '@img/sharp-linux-riscv64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.3 + optional: true + + '@img/sharp-linux-s390x@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.3 + optional: true + + '@img/sharp-linux-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.3 + optional: true + + '@img/sharp-linuxmusl-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + optional: true + + '@img/sharp-linuxmusl-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + optional: true + + '@img/sharp-wasm32@0.35.4': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 + optional: true + + '@img/sharp-win32-arm64@0.35.4': + optional: true + + '@img/sharp-win32-ia32@0.35.4': + optional: true + + '@img/sharp-win32-x64@0.35.4': + optional: true + + '@joplin/turndown-plugin-gfm@1.0.67': {} + + '@koromix/koffi-darwin-arm64@3.2.0': + optional: true + + '@koromix/koffi-darwin-x64@3.2.0': + optional: true + + '@koromix/koffi-freebsd-arm64@3.2.0': + optional: true + + '@koromix/koffi-freebsd-ia32@3.2.0': + optional: true + + '@koromix/koffi-freebsd-x64@3.2.0': + optional: true + + '@koromix/koffi-linux-arm64@3.2.0': + optional: true + + '@koromix/koffi-linux-arm@3.2.0': + optional: true + + '@koromix/koffi-linux-ia32@3.2.0': + optional: true + + '@koromix/koffi-linux-loong64@3.2.0': + optional: true + + '@koromix/koffi-linux-riscv64@3.2.0': + optional: true + + '@koromix/koffi-linux-x64@3.2.0': + optional: true + + '@koromix/koffi-openbsd-ia32@3.2.0': + optional: true + + '@koromix/koffi-openbsd-x64@3.2.0': + optional: true + + '@koromix/koffi-win32-arm64@3.2.0': + optional: true + + '@koromix/koffi-win32-ia32@3.2.0': + optional: true + + '@koromix/koffi-win32-x64@3.2.0': + optional: true + + '@lexical/clipboard@0.49.0': + dependencies: + '@lexical/extension': 0.49.0 + '@lexical/html': 0.49.0 + '@lexical/internal': 0.49.0 + '@lexical/list': 0.49.0 + '@lexical/selection': 0.49.0 + '@lexical/utils': 0.49.0 + '@types/trusted-types': 2.0.7 + lexical: 0.49.0 + + '@lexical/dragon@0.49.0': + dependencies: + '@lexical/extension': 0.49.0 + lexical: 0.49.0 + + '@lexical/extension@0.49.0': + dependencies: + '@lexical/internal': 0.49.0 + '@lexical/utils': 0.49.0 + '@preact/signals-core': 1.14.4 + lexical: 0.49.0 + + '@lexical/history@0.49.0': + dependencies: + '@lexical/extension': 0.49.0 + '@lexical/utils': 0.49.0 + lexical: 0.49.0 + + '@lexical/html@0.49.0': + dependencies: + '@lexical/extension': 0.49.0 + '@lexical/internal': 0.49.0 + '@lexical/selection': 0.49.0 + '@lexical/utils': 0.49.0 + lexical: 0.49.0 + + '@lexical/internal@0.49.0': {} + + '@lexical/list@0.49.0': + dependencies: + '@lexical/extension': 0.49.0 + '@lexical/html': 0.49.0 + '@lexical/internal': 0.49.0 + '@lexical/utils': 0.49.0 + lexical: 0.49.0 + + '@lexical/plain-text@0.49.0': + dependencies: + '@lexical/clipboard': 0.49.0 + '@lexical/dragon': 0.49.0 + '@lexical/extension': 0.49.0 + '@lexical/selection': 0.49.0 + '@lexical/utils': 0.49.0 + lexical: 0.49.0 + + '@lexical/selection@0.49.0': + dependencies: + '@lexical/internal': 0.49.0 + lexical: 0.49.0 + + '@lexical/text@0.49.0': + dependencies: + '@lexical/internal': 0.49.0 + lexical: 0.49.0 + + '@lexical/utils@0.49.0': + dependencies: + '@lexical/internal': 0.49.0 + '@lexical/selection': 0.49.0 + lexical: 0.49.0 + + '@mixmark-io/domino@2.2.0': {} + + '@modelcontextprotocol/sdk@1.30.0(zod@4.5.4)': + dependencies: + '@hono/node-server': 2.1.1(hono@4.13.5) + ajv: 8.20.0 + ajv-formats: 3.0.1(ajv@8.20.0) + content-type: 1.0.5 + cors: 2.8.6 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.1.1 + express: 5.2.1 + express-rate-limit: 8.7.0(express@5.2.1) + hono: 4.13.5 + jose: 6.2.10 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 4.5.4 + zod-to-json-schema: 3.25.2(zod@4.5.4) + transitivePeerDependencies: + - supports-color + + '@octokit/openapi-types@29.0.1': {} + + '@octokit/openapi-webhooks-types@12.1.0': {} + + '@octokit/request-error@7.1.2': + dependencies: + '@octokit/types': 18.0.0 + + '@octokit/types@18.0.0': + dependencies: + '@octokit/openapi-types': 29.0.1 + + '@octokit/webhooks-methods@6.0.0': {} + + '@octokit/webhooks@14.2.0': + dependencies: + '@octokit/openapi-webhooks-types': 12.1.0 + '@octokit/request-error': 7.1.2 + '@octokit/webhooks-methods': 6.0.0 + + '@opentelemetry/api-logs@0.220.0': + dependencies: + '@opentelemetry/api': 1.9.1 + + '@opentelemetry/api@1.9.1': {} + + '@opentelemetry/core@2.11.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/exporter-logs-otlp-http@0.220.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.220.0 + '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.220.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.220.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.220.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/otlp-exporter-base@0.220.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.220.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/otlp-transformer@0.220.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.220.0 + '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.220.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.9.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/resources@2.9.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/sdk-logs@0.220.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.220.0 + '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/sdk-metrics@2.9.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/sdk-trace@2.9.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.9.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/semantic-conventions@1.43.0': {} + + '@preact/signals-core@1.14.4': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.5': {} + + '@protobufjs/eventemitter@1.1.1': {} + + '@protobufjs/fetch@1.1.1': + dependencies: + '@protobufjs/aspromise': 1.1.2 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.2': {} + + '@smithy/core@3.33.3': + dependencies: + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.5.2': + dependencies: + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.7.2': + dependencies: + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/node-http-handler@4.11.3': + dependencies: + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.7.3': + dependencies: + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@smithy/signature-v4@5.7.3': + dependencies: + '@smithy/core': 3.33.3 + '@smithy/types': 4.17.2 + tslib: 2.8.1 + + '@smithy/types@4.17.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@standard-schema/spec@1.1.0': {} + + '@tanstack/react-virtual@3.14.10(react-dom@19.2.8(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/virtual-core': 3.17.8 + react: 18.3.1 + react-dom: 19.2.8(react@18.3.1) + + '@tanstack/virtual-core@3.17.8': {} + + '@types/node@26.4.1': + dependencies: + undici-types: 8.3.0 + + '@types/retry@0.12.0': {} + + '@types/trusted-types@2.0.7': {} + + '@vscode/ripgrep-darwin-arm64@1.18.0': + optional: true + + '@vscode/ripgrep-darwin-x64@1.18.0': + optional: true + + '@vscode/ripgrep-linux-arm64@1.18.0': + optional: true + + '@vscode/ripgrep-linux-arm@1.18.0': + optional: true + + '@vscode/ripgrep-linux-ia32@1.18.0': + optional: true + + '@vscode/ripgrep-linux-ppc64@1.18.0': + optional: true + + '@vscode/ripgrep-linux-riscv64@1.18.0': + optional: true + + '@vscode/ripgrep-linux-s390x@1.18.0': + optional: true + + '@vscode/ripgrep-linux-x64@1.18.0': + optional: true + + '@vscode/ripgrep-win32-arm64@1.18.0': + optional: true + + '@vscode/ripgrep-win32-ia32@1.18.0': + optional: true + + '@vscode/ripgrep-win32-x64@1.18.0': + optional: true + + '@vscode/ripgrep@1.18.0': + optionalDependencies: + '@vscode/ripgrep-darwin-arm64': 1.18.0 + '@vscode/ripgrep-darwin-x64': 1.18.0 + '@vscode/ripgrep-linux-arm': 1.18.0 + '@vscode/ripgrep-linux-arm64': 1.18.0 + '@vscode/ripgrep-linux-ia32': 1.18.0 + '@vscode/ripgrep-linux-ppc64': 1.18.0 + '@vscode/ripgrep-linux-riscv64': 1.18.0 + '@vscode/ripgrep-linux-s390x': 1.18.0 + '@vscode/ripgrep-linux-x64': 1.18.0 + '@vscode/ripgrep-win32-arm64': 1.18.0 + '@vscode/ripgrep-win32-ia32': 1.18.0 + '@vscode/ripgrep-win32-x64': 1.18.0 + + '@xterm/headless@6.0.0': {} + + accepts@2.0.0: + dependencies: + mime-types: 3.0.2 + negotiator: 1.1.0 + + agent-base@7.1.4: {} + + ajv-formats@3.0.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.7 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + argparse@2.0.1: {} + + base64-js@1.5.1: {} + + bignumber.js@9.3.1: {} + + body-parser@2.3.0: + dependencies: + bytes: 3.1.2 + content-type: 2.1.0 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.3 + on-finished: 2.4.1 + qs: 6.16.0 + raw-body: 3.0.2 + type-is: 2.1.0 + transitivePeerDependencies: + - supports-color + + bowser@2.14.1: {} + + buffer-equal-constant-time@1.0.1: {} + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chokidar@5.0.0: + dependencies: + readdirp: 5.1.1 + + clsx@2.1.1: {} + + commander@15.0.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + content-disposition@1.1.0: {} + + content-type@1.0.5: {} + + content-type@2.1.0: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + cors@2.8.6: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + data-uri-to-buffer@4.0.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + default-browser-id@5.0.1: {} + + default-browser@5.5.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-lazy-prop@3.0.0: {} + + depd@2.0.0: {} + + detect-libc@2.1.2: {} + + diff@9.0.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + encodeurl@2.0.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + escape-html@1.0.3: {} + + etag@1.8.1: {} + + eventsource-parser@3.1.1: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.1.1 + + express-rate-limit@8.7.0(express@5.2.1): + dependencies: + debug: 4.4.3 + express: 5.2.1 + ip-address: 10.7.0 + transitivePeerDependencies: + - supports-color + + express@5.2.1: + dependencies: + accepts: 2.0.0 + body-parser: 2.3.0 + content-disposition: 1.1.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.3 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.1 + fresh: 2.0.0 + http-errors: 2.0.1 + merge-descriptors: 2.0.0 + mime-types: 3.0.2 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.16.0 + range-parser: 1.3.0 + router: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 + statuses: 2.0.2 + type-is: 2.1.0 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-uri@3.1.7: {} + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + fflate@0.8.3: {} + + finalhandler@2.1.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + forwarded@0.2.0: {} + + fresh@2.0.0: {} + + function-bind@1.1.2: {} + + gaxios@7.3.1: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + node-fetch: 3.3.2 + transitivePeerDependencies: + - supports-color + + gcp-metadata@8.1.2: + dependencies: + gaxios: 7.3.1 + google-logging-utils: 1.1.3 + json-bigint: 1.0.0 + transitivePeerDependencies: + - supports-color + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + google-auth-library@10.9.1: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 7.3.1 + gcp-metadata: 8.1.2 + google-logging-utils: 1.1.3 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + + google-logging-utils@1.1.3: {} + + gopd@1.2.0: {} + + has-symbols@1.1.0: {} + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + hono@4.13.5: {} + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + + inherits@2.0.4: {} + + ip-address@10.7.0: {} + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.5.0: {} + + is-docker@3.0.0: {} + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-promise@4.0.0: {} + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + jose@6.2.10: {} + + js-tokens@4.0.0: {} + + js-yaml@4.3.2: + dependencies: + argparse: 2.0.1 + + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.3.1 + + json-schema-to-ts@3.1.1: + dependencies: + '@babel/runtime': 7.29.7 + ts-algebra: 2.0.0 + + json-schema-traverse@1.0.0: {} + + json-schema-typed@8.0.2: {} + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + koffi@3.2.0: + optionalDependencies: + '@koromix/koffi-darwin-arm64': 3.2.0 + '@koromix/koffi-darwin-x64': 3.2.0 + '@koromix/koffi-freebsd-arm64': 3.2.0 + '@koromix/koffi-freebsd-ia32': 3.2.0 + '@koromix/koffi-freebsd-x64': 3.2.0 + '@koromix/koffi-linux-arm': 3.2.0 + '@koromix/koffi-linux-arm64': 3.2.0 + '@koromix/koffi-linux-ia32': 3.2.0 + '@koromix/koffi-linux-loong64': 3.2.0 + '@koromix/koffi-linux-riscv64': 3.2.0 + '@koromix/koffi-linux-x64': 3.2.0 + '@koromix/koffi-openbsd-ia32': 3.2.0 + '@koromix/koffi-openbsd-x64': 3.2.0 + '@koromix/koffi-win32-arm64': 3.2.0 + '@koromix/koffi-win32-ia32': 3.2.0 + '@koromix/koffi-win32-x64': 3.2.0 + + lexical@0.49.0: + dependencies: + '@lexical/internal': 0.49.0 + + long@5.3.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + math-intrinsics@1.1.0: {} + + media-typer@1.1.1: {} + + merge-descriptors@2.0.0: {} + + mime-db@1.54.0: {} + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + + ms@2.0.0: {} + + ms@2.1.3: {} + + negotiator@0.6.4: {} + + negotiator@1.1.0: + dependencies: + content-type: 2.1.0 + + node-addon-api@7.1.1: {} + + node-addon-native-custom-loader@0.1.5: {} + + node-addon-require-builtin-darwin-arm64@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optional: true + + node-addon-require-builtin-darwin-x64@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optional: true + + node-addon-require-builtin-linux-arm64-gnu@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optional: true + + node-addon-require-builtin-linux-x64-gnu@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optional: true + + node-addon-require-builtin-win32-arm64-msvc@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optional: true + + node-addon-require-builtin-win32-ia32-msvc@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optional: true + + node-addon-require-builtin-win32-x64-msvc@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optional: true + + node-addon-require-builtin@0.1.5: + dependencies: + node-addon-native-custom-loader: 0.1.5 + optionalDependencies: + node-addon-require-builtin-darwin-arm64: 0.1.5 + node-addon-require-builtin-darwin-x64: 0.1.5 + node-addon-require-builtin-linux-arm64-gnu: 0.1.5 + node-addon-require-builtin-linux-x64-gnu: 0.1.5 + node-addon-require-builtin-win32-arm64-msvc: 0.1.5 + node-addon-require-builtin-win32-ia32-msvc: 0.1.5 + node-addon-require-builtin-win32-x64-msvc: 0.1.5 + + node-domexception@1.0.0: {} + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-pty@1.2.0-beta.15: + dependencies: + node-addon-api: 7.1.1 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + open@11.0.2: + dependencies: + default-browser: 5.5.1 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.2.1 + wsl-utils: 1.0.0 + + openai@6.40.0(ws@8.21.3)(zod@4.5.4): + optionalDependencies: + ws: 8.21.3 + zod: 4.5.4 + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + parseurl@1.3.3: {} + + partial-json@0.1.7: {} + + path-key@3.1.1: {} + + path-to-regexp@8.4.2: {} + + picocolors@1.1.1: {} + + picomatch@4.0.7: {} + + pkce-challenge@5.0.1: {} + + powershell-utils@0.1.0: {} + + powershell-utils@0.2.1: {} + + protobufjs@7.6.6: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 + '@protobufjs/float': 1.0.2 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.2 + '@types/node': 26.4.1 + long: 5.3.2 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + qs@6.16.0: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + + range-parser@1.3.0: {} + + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.7.3 + unpipe: 1.0.0 + + react-dom@19.2.8(react@18.3.1): + dependencies: + react: 18.3.1 + scheduler: 0.27.0 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + readdirp@4.1.2: {} + + readdirp@5.1.1: {} + + require-from-string@2.0.2: {} + + resolve.exports@2.0.3: {} + + retry@0.13.1: {} + + router@2.2.0: + dependencies: + debug: 4.4.3 + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.4.2 + transitivePeerDependencies: + - supports-color + + run-applescript@7.1.0: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + scheduler@0.27.0: {} + + semver@7.8.5: {} + + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.3.0 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + sharp@0.35.4: + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.4 + '@img/sharp-darwin-x64': 0.35.4 + '@img/sharp-freebsd-wasm32': 0.35.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-linux-arm': 0.35.4 + '@img/sharp-linux-arm64': 0.35.4 + '@img/sharp-linux-ppc64': 0.35.4 + '@img/sharp-linux-riscv64': 0.35.4 + '@img/sharp-linux-s390x': 0.35.4 + '@img/sharp-linux-x64': 0.35.4 + '@img/sharp-linuxmusl-arm64': 0.35.4 + '@img/sharp-linuxmusl-x64': 0.35.4 + '@img/sharp-webcontainers-wasm32': 0.35.4 + '@img/sharp-win32-arm64': 0.35.4 + '@img/sharp-win32-ia32': 0.35.4 + '@img/sharp-win32-x64': 0.35.4 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + statuses@2.0.2: {} + + toidentifier@1.0.1: {} + + ts-algebra@2.0.0: {} + + tslib@2.8.1: {} + + turndown@7.2.4: + dependencies: + '@mixmark-io/domino': 2.2.0 + + type-is@2.1.0: + dependencies: + content-type: 2.1.0 + media-typer: 1.1.1 + mime-types: 3.0.2 + + typebox@1.3.7: {} + + undici-types@8.3.0: {} + + undici@8.10.1: {} + + unpipe@1.0.0: {} + + use-sync-external-store@1.2.0(react@18.3.1): + dependencies: + react: 18.3.1 + + vary@1.1.2: {} + + web-streams-polyfill@3.3.3: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrappy@1.0.2: {} + + ws@8.21.3: {} + + wsl-utils@1.0.0: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + + yaml@2.9.0: {} + + zod-to-json-schema@3.25.2(zod@4.5.4): + dependencies: + zod: 4.5.4 + + zod@4.5.4: {} diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/pnpm-workspace.yaml b/integrations/dsh/plugins/powercontext/tests/runtime/pnpm-workspace.yaml new file mode 100644 index 000000000..b984f74ce --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/pnpm-workspace.yaml @@ -0,0 +1,24 @@ +# Copyright (c) 2026 OceanBase. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +packages: + - . + +autoInstallPeers: true +allowBuilds: + '@deepseek-ai/dsh-subprocess-local': true + '@google/genai': false + koffi: true + node-pty: true + protobufjs: false diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/real-model.test.mjs b/integrations/dsh/plugins/powercontext/tests/runtime/real-model.test.mjs new file mode 100644 index 000000000..4323df9c6 --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/real-model.test.mjs @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2026 OceanBase. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import assert from 'node:assert/strict' +import { test } from 'node:test' +import { environment, injected, CANARY } from './fixture.mjs' + +test('live model processes Source and uses recalled Memory in a new DSH session', { timeout: 240000 }, async () => { + assert.ok(process.env.DEEPSEEK_API_KEY, 'DEEPSEEK_API_KEY is required for real-model acceptance') + const realModel = { + apiKey: process.env.DEEPSEEK_API_KEY, + baseUrl: process.env.DEEPSEEK_BASE_URL ?? 'https://api.deepseek.com', + model: process.env.DSH_REAL_MODEL ?? 'deepseek-v4-pro', + } + const env = await environment({ realModel }) + try { + const { instance } = env.harness({ requestTimeoutMs: 90000, timeoutMs: 90000 }) + const first = await instance.run('This is a stable convention for the aurora project: ' + CANARY + ' Acknowledge briefly.') + assert.ok(first.finalResponse) + assert.ok(env.calls.some(call => call.path === '/v1/sources/content' && call.status === 202)) + assert.ok(env.calls.some(call => call.path === '/v1/memory/flush' && call.status === 200)) + const memory = await env.api('/v1/memory/entries/list', { scope_id: env.scopeId }) + assert.ok(JSON.stringify(memory).includes('violet-cedar-1457'), 'accepted Source must actually become Memory') + const second = await instance.run('What is the aurora deployment color? Use the available context and answer briefly.') + assert.equal(injected(second).length, 1) + assert.ok(injected(second)[0].content[0].text.includes('violet-cedar-1457')) + assert.ok(second.finalResponse.includes('violet-cedar-1457')) + assert.ok(env.modelRequests.filter(request => request.stream).at(-1).messages.some(message => + JSON.stringify(message.content).includes('PowerContext context prepared'))) + console.log('Live model:', realModel.model, '; Source → Memory → fresh-session snapshot → model answer passed') + } finally { await env.close() } +}) diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/runtime.test.mjs b/integrations/dsh/plugins/powercontext/tests/runtime/runtime.test.mjs new file mode 100644 index 000000000..d97a28c03 --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/runtime.test.mjs @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2026 OceanBase. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import assert from 'node:assert/strict' +import { readdirSync, readFileSync } from 'node:fs' +import { join } from 'node:path' +import { test } from 'node:test' +import { environment, injected, CANARY } from './fixture.mjs' + +test('real DSH loads the built plugin and recalls processed Source in another session', { timeout: 120000 }, async () => { + const env = await environment() + try { + const { instance, dshHome } = env.harness() + const first = await instance.run('For this project: ' + CANARY + ' Reply with an acknowledgement.') + assert.ok(first.finalResponse) + assert.equal(injected(first).length, 0) + assert.ok(env.calls.some(call => call.path === '/v1/sources/content' && call.status === 202)) + assert.ok(env.calls.some(call => call.path === '/v1/memory/flush' && call.status === 200)) + const memory = await env.api('/v1/memory/entries/list', { scope_id: env.scopeId }) + assert.ok(JSON.stringify(memory).includes(CANARY)) + const capture = env.calls.find(call => call.path === '/v1/sources/content') + const replay = await env.api('/v1/sources/content', capture.body) + assert.equal(replay.position, capture.result.position) + const second = await instance.run('What is the aurora deployment color?') + const messages = injected(second) + assert.equal(messages.length, 1) + const message = messages[0] + assert.equal(message.source.form, 'snapshot') + assert.equal(message.source.sections[0].text, message.content[0].text) + assert.ok(message.content[0].text.includes(CANARY)) + const prepare = env.calls.findLast(call => call.path === '/v1/context/prepare') + assert.ok(message.content[0].text.endsWith(prepare.result.content)) + assert.ok(message.content[0].text.includes('untrusted historical evidence')) + const modelInput = env.modelRequests.filter(r => r.stream).at(-1).messages + assert.equal(modelInput.filter(m => JSON.stringify(m.content).includes('PowerContext context prepared')).length, 1) + await instance.close() + const sessions = join(dshHome, 'sessions') + const saved = readdirSync(sessions, { recursive: true }).filter(path => path.endsWith('.jsonl')) + .flatMap(path => readFileSync(join(sessions, path), 'utf8').trim().split('\n').map(line => JSON.parse(line))) + const persisted = saved.find(event => event.type === 'user/message' && event.data?.id === message.id) + assert.deepEqual(persisted?.data, message) + } finally { await env.close() } +}) + +test('Scope faults leave real DSH conversations running and preserve direct-tool errors', { timeout: 120000 }, async () => { + const env = await environment() + try { + const { instance, diagnostics } = env.harness({ scopeId: 'scp_missing_runtime_fixture' }) + const run = await instance.run('RUN_PC_SEARCH') + assert.ok(run.finalResponse) + assert.equal(injected(run).length, 0) + assert.ok(env.calls.length >= 2) + assert.ok(env.calls.every(call => call.path === '/v1/scope-bindings/resolve' && call.status === 404)) + const tool = env.modelRequests.filter(r => r.stream).at(-1).messages.find(message => message.role === 'tool') + assert.ok(tool.content.startsWith('{'), tool.content) + const result = JSON.parse(tool.content) + assert.equal(result.ok, false) + assert.equal(result.code, 'not_found') + assert.equal(result.error_code, 'scope_not_found') + assert.ok(diagnostics().some(event => event.event === 'scope_resolve' && event.error_code === 'scope_not_found')) + for (const status of [404, 401, 503]) { + env.setFault({ path: '/v1/scope-bindings/resolve', status }) + const start = env.calls.length + const next = await instance.run('Reply with a short acknowledgement.') + assert.ok(next.finalResponse) + assert.equal(injected(next).length, 0) + assert.ok(env.calls.slice(start).every(call => call.path === '/v1/scope-bindings/resolve')) + assert.ok(!JSON.stringify(env.modelRequests.filter(r => r.stream).at(-1)).includes('private-response-marker')) + } + for (const outcome of ['version_mismatch', 'authentication_failed', 'server_unavailable']) { + assert.ok(diagnostics().some(event => event.event === 'scope_resolve' && event.outcome === outcome)) + } + assert.ok(!JSON.stringify(diagnostics()).includes('private-response-marker')) + assert.ok(!JSON.stringify(diagnostics()).includes('/v1/')) + } finally { await env.close() } +}) + +test('prepare, capture and flush fail independently and recover across real host restarts', { timeout: 120000 }, async () => { + const env = await environment() + try { + await env.api('/v1/memory/remember', { scope_id: env.scopeId, kind: 'decision', text: CANARY }) + const { instance } = env.harness() + for (const path of ['/v1/context/prepare', '/v1/sources/content', '/v1/memory/flush']) { + env.setFault({ path, status: 503 }) + const start = env.calls.length + const run = await instance.run('What is the aurora deployment color?') + assert.ok(run.finalResponse) + assert.equal(injected(run).length, path === '/v1/context/prepare' ? 0 : 1) + const calls = env.calls.slice(start) + assert.equal(calls.filter(call => call.path === '/v1/sources/content').length, 1) + if (path === '/v1/context/prepare') assert.ok(calls.some(call => call.path === '/v1/sources/content' && call.status === 202)) + if (path === '/v1/sources/content') assert.ok(!calls.some(call => call.path === '/v1/memory/flush')) + } + env.setFault(undefined) + const recovered = await instance.run('What is the aurora deployment color?') + assert.equal(injected(recovered).length, 1) + await instance.close() + const start = env.calls.length + const restarted = env.harness().instance + assert.equal(injected(await restarted.run('What is the aurora deployment color?')).length, 1) + assert.equal(env.calls.slice(start).filter(call => call.path === '/v1/context/prepare').length, 1) + assert.equal(env.calls.slice(start).filter(call => call.path === '/v1/sources/content').length, 1) + } finally { await env.close() } +}) + +test('real DSH does not recall or capture into another configured Scope', { timeout: 120000 }, async () => { + const env = await environment() + try { + await env.api('/v1/memory/remember', { scope_id: env.scopeId, kind: 'decision', text: CANARY }) + const other = await env.api('/v1/scopes', { + title: 'Isolated runtime Scope', summary: 'Isolation fixture', idempotency_key: 'runtime-isolated', + }) + const { instance } = env.harness({ scopeId: other.scope_id }) + const run = await instance.run('What is the aurora deployment color?') + assert.ok(run.finalResponse) + assert.equal(injected(run).length, 0) + assert.ok(!JSON.stringify(env.modelRequests.filter(r => r.stream).at(-1)).includes(CANARY)) + const scoped = env.calls.filter(call => call.path !== '/v1/scope-bindings/resolve') + assert.ok(scoped.length > 0) + assert.ok(scoped.every(call => call.body.scope_id === other.scope_id)) + } finally { await env.close() } +}) From d219a1404791fb6e4669620618a907a2ae2028b7 Mon Sep 17 00:00:00 2001 From: knqiufan Date: Fri, 4 Sep 2026 18:59:54 +0800 Subject: [PATCH 3/5] test(dsh): record runtime and Web acceptance evidence --- .../powercontext/tests/runtime/README.md | 3 + .../tests/runtime/acceptance/2026-09-04.md | 127 ++++++++++++++++++ .../acceptance/snapshot-0.1.2-rc.1.png | Bin 0 -> 133076 bytes 3 files changed, 130 insertions(+) create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md create mode 100644 integrations/dsh/plugins/powercontext/tests/runtime/acceptance/snapshot-0.1.2-rc.1.png diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/README.md b/integrations/dsh/plugins/powercontext/tests/runtime/README.md index 9e7371dfe..2580d6e52 100644 --- a/integrations/dsh/plugins/powercontext/tests/runtime/README.md +++ b/integrations/dsh/plugins/powercontext/tests/runtime/README.md @@ -1,5 +1,8 @@ # DSH runtime acceptance +The [2026-09-04 acceptance record](acceptance/2026-09-04.md) includes build identity, automated results, +actual Web checks, a snapshot screenshot, and the outstanding live-model authentication blocker. + Run from the PowerContext checkout after `uv sync --frozen` and building the plugin: ```bash diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md b/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md new file mode 100644 index 000000000..23d024bd1 --- /dev/null +++ b/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md @@ -0,0 +1,127 @@ +# DSH automatic-path acceptance — 2026-09-04 + +Tracking: [#1450 B](https://github.com/oceanbase/powercontext/issues/1450). +Bug: [#1457](https://github.com/oceanbase/powercontext/issues/1457). +Dependency: [#1452](https://github.com/oceanbase/powercontext/pull/1452). + +**Acceptance is incomplete: live-model authentication failed.** The registered-entry, real Server, +real DSH runtime, and browser checks below passed with deterministic model responses. They do not +establish real-model behavior. Keep the PR Draft until the live-model and associated Web scenarios pass. + +## Build and environment + +| Item | Tested identity | +| --- | --- | +| PowerContext plugin implementation | `c25b6329`, based on A at `c776cddf564cc2b4c9b45d79a3e056fea26ddad8` | +| Built `lib/index.js` SHA-256 | `67ae2c96c2f03b4ce9b8d2e43dce47bcffaf588e5b80082346ce43443825c758` | +| Primary DSH | Published `0.1.2-rc.1`, SDK and Web profiles; runtime dependency graph pinned in the adjacent lockfile | +| Compatibility DSH | Installed `0.1.0-rc.6`, Web profile; this version has no built-in SDK profile | +| Reference DSH source | `76fda729799fe9b3848dbe2c211d4b231032b81e`; used to inspect contracts and load its native console exporter for the Web log check | +| Local environment | Windows, Node `24.14.1`, Python `3.12.13`, pnpm `11.13.1` | +| CI runtime | Node `22.19.0` on Linux, configured in the repository; CI results are reported on the PR | +| Plugin installation | Only distributable files copied into isolated DSH homes; no source imports or replaced host services | +| Server and data | Actual PowerContext Server and SQLite, temporary home/workspace, dedicated test data | +| Model used for passing checks | Loopback OpenAI-compatible streaming fixture and deterministic Server inference; no live AI involved | +| Web configuration | Shipped Web profile, telemetry disabled, `flushOnCapture: true` for test processing | +| Live-model attempt | Official DeepSeek endpoint, requested `deepseek-v4-pro`; minimal chat request returned HTTP 401 `authentication_error` | + +The Web model selector displays the host's configured model name. In the screenshot its traffic goes +to the deterministic fixture; the displayed name is not evidence of a live DeepSeek response. +Credentials, access tokens, raw host logs, and user configuration are excluded from this record. + +## Automated verification + +| Check | Result | +| --- | --- | +| New registered-entry regressions on unchanged A | 28 tests: 8 passed, 20 failed | +| Final plugin unit suite | 147 passed in 13 files, including 30 automatic-path regressions | +| Real PowerContext Server e2e | 9 passed in 2 files; includes A and no-cwd default Scope behavior | +| Real DSH runtime with built plugin | 4 passed; Source processing, persistence, native diagnostics, real tool validation, isolation, and recovery | +| Integration manifest tests | 26 passed | +| Build consistency | Rebuilt bundle matches committed generated files | +| Quality and documentation | Lock check, pre-commit hooks, type checks, manifest checks, strict documentation build and published OpenAPI equality passed | +| Live-model acceptance | Blocked by 401; not reported as a skipped or passing test | + +GNU make was unavailable locally. The commands inside `make js-test`, `make check`, and +`make docs-test` were executed in PowerShell and completed successfully. The separate runtime +installation and `test:e2e:runtime` command also completed successfully. See the +[reproduction instructions](../README.md) for the same gates and opt-in `test:real` command. + +The registered-entry tests preserve downstream rejection/exception and `startsRequestSeries`, +exercise cancellation/deadlines and throwing/rejecting log writers, and verify redaction, response +validation, existing capture restrictions, and the 60-second diagnostic cooldown. + +## Actual browser use with fixture responses + +These checks operated the real Web UI, actual built plugin and Server, and inspected native +session events, model requests, endpoint responses, and logger output. The primary host's +isolated workspace was registered using its public workspace API; subsequent message, history, +command, and cancellation checks used the Web UI. + +| Scenario | Observed result | +| --- | --- | +| Ordinary message and automatic capture | Source accepted at position 1; flush processed cursor 0 → 1 and returned Memory revision 1 | +| Fresh session asks for the unique fact | Prepare returned ready; one snapshot contained the fact; model input and persisted `user/message` contained the same text | +| Snapshot display | Native “Context injection — powercontext-dsh” row shows snapshot replacement label and a PowerContext section | +| Reload page and inspect history | Persisted snapshot remained visible with the same content; no extra injection | +| Scope 503 | Conversation continued; no prepare/capture/flush; native Scope failure diagnostic | +| Prepare 503 or route 404 | No new snapshot; Source capture and flush still succeeded | +| Capture 503 or 401 | Prepared snapshot remained; failed capture did not start flush | +| Flush 503 | Source acceptance remained distinct from flush failure; prepared snapshot remained | +| Restore endpoints and restart host | One prepare, one capture, one snapshot for the next ordinary prompt | +| Web Stop during held Scope request | Request closed; zero new model requests and no prepare/capture/flush | +| `/pc doctor`, `/pc capabilities` during Scope failure | Commands executed without Scope; live/ready and capabilities returned HTTP 200 | +| Bare `/pc` during Scope failure | Controlled failure with `scope=unresolved` | +| Older `0.1.0-rc.6` Web | Capture → Memory, fresh-session recall, persisted/rendered snapshot, Scope failure, doctor/capabilities, and controlled `pc_search` failure passed | +| Live-model English/Chinese coding and recall | Not run: authentication blocked model access | +| Live-model Web isolation, outage/recovery, cancellation, and direct calls | Not run; deterministic runtime/Web evidence above does not replace them | + +The primary Web fixture's readiness response reported `inference.generation: unavailable` while +still returning both doctor checks. This was the earlier fixture's unsupported plain-text readiness +probe, not a claim that inference was healthy. The committed fixture now handles that probe. + +### Source → Memory → context evidence + +The first ordinary user message was: + +```text +For this project: The aurora deployment color is violet-cedar-1457. Reply with an acknowledgement. +``` + +The actual Server accepted Source position 1, processed one Source during flush, advanced the +cursor to 1, and returned `{family: "memory", artifact_id: "memory", revision: 1}`. +A later prepare response was `ready`, with `content_bytes: 644`, and cited that Memory revision +with the test fact. The section text matched the injected message; its suffix matched the actual +prepare response. The runtime test additionally queries Memory entries and replays the Source, +asserting its original position to verify idempotency. + +![Real DSH Web showing the PowerContext snapshot with fixture model responses](snapshot-0.1.2-rc.1.png) + +The native snapshot body is scrollable. Its fixed prefix describes untrusted historical evidence; +the underlying Server text and citations are retained. The screenshot shows the recovered turn, +not an additional model message generated solely for presentation. + +### Native diagnostic evidence + +With the host's real Cordis console exporter enabled, observed records included: + +```json +{"component":"powercontext.dsh","event":"context_prepare","outcome":"version_mismatch","http_status":404} +{"component":"powercontext.dsh","event":"capture_content_source","outcome":"authentication_failed","http_status":401} +{"component":"powercontext.dsh","event":"flush_memory","outcome":"server_unavailable","http_status":503,"recovery":"powercontext doctor"} +``` + +Repeated failures with the same outcome were coalesced across stages for 60 seconds, preserving +the existing policy. Distinct outcomes were used to inspect each stage independently. The injected +private-response marker appeared in neither diagnostics nor model messages. + +Default Web profiles have no terminal exporter. Enable a native logger exporter at warning level +to see failures; debug level also shows normal ready/empty/accepted events. No chat warning or new +UI logging channel was added. + +## Remaining acceptance + +Provide a working test-model configuration through the local environment, run `test:real`, and +complete the real-model English/Chinese and Web matrix above without selecting only successful +retries. Record observed model identity and sanitized results. After A merges, rebase B onto +upstream master, rebuild generated files, and pass the final PR CI before marking B complete. diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/snapshot-0.1.2-rc.1.png b/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/snapshot-0.1.2-rc.1.png new file mode 100644 index 0000000000000000000000000000000000000000..0d0808f7be1f3adf77a5b6e3ef20f8e6fc3d7a3a GIT binary patch literal 133076 zcmdSBWmH^C@Gm+s2m}cpoIr4QcMI-rA-D$*P7W5_T?ZIkf;%LH;6A|M1Q=un3m*JU z&Ivi^|K3`6-M7~La{JS;ckk}%>Z&g3UlFdVEQ^jxgbDxv(B)oBsRIBgRRF*fx~C5j zPre+<8Up~&0di8}n(woAmypG#PVf2-RU-b%kibwSfdVuh$;Lg?d65xe!#AjfF|4=N zpPpZ8qo>V~RK7|_?UGj%Obo$v71P`QjKVUmsXXPM+s2yJ=S+f3^0e>xuuF8wuWMz@ zbD8wElXW>aHW@Bn3jjpo6B8ShTcSTe5b$?HO{Dxq%^Euxi$n`u}o)*#Zr_80(t1UdUDpdz1(O!`M zXE8Y#)CcVzdl|m@=nD**C3(ZlbY7X?z`c|5+Lax~tptn#l&DYchZQqU)XU&eOLQhG zwem0O5NJ)6GZwixuI{>JFzNK|ti+-IPv4vb`uWoxh(+)w6#7b)js7(6sJK0Yot^#2 zcJnK$TE6Q2r~oJ_Vdg+C$72xo6i5H#dd*VxL5mS58*8jTn+Sl0cimnp#0BY-cyaGc zl~So!JKc)^yLo}_@Al@o1->=B8BD8|_p%oG?>ocdD9jAZu*6_Odj6*N8Oi{P|4_N# z>UoeeEMAJtjAlO1T;0&VMoIoZ-}{_9UL0)@lGn4v>F62n_^Q8<|IfsW(vaqmi1wLt zt{$)@^`9jL8oKVyHymvYJ;SBBD14Y!_Mg?}`*PU7I#Lfo#XFKDZ~2dy^-FW0f;<$v=k^bEov(zBmf zMJtvh*e~Z1n z!FgWe=jH7&df#n|b2zvZ)5IrRMl_5)t4rpj+P>9Lih{2*nmEBu-p>x%4#(Gk%;n`O zk=Y%0Im5*L8#g!CA{ZT6NAvAY#n<1z-%(mTou6F?orht@i*C4HJfEWt8pe9W@!l6m zFCg4(JFTds@5RF418@qXL2QbB_4J+kK@FIzJ^KND)zyprzgC7%j;P0@zh20S^r^u~`y z+>YH0Uf+Togs}1J@lwj=HwKTa5>tgSq;LJ{j(&VoNQSz`lkOLEI`g)EUJX*?&Cmaf zq>FI=mHXtE(}k+JCSs8Nr`oHMmpZ*;e7@fk#)y+Sjg`#D13>{roj)Bvx2@Q0G5LG; zygd!rL7$lm#!6<;so?Sjf-h|nA>{sM&29fIo9?wHJFy6P)0@*AD(6z(wu&47mLE2D zrv7C;Qt>))B$C({n@NY)pMYn=Gf$zvjx>sB$w*P{tvsGi#{3}P!SL%>EVdU%>E)?{ zQNkU09f78YqO4QUyarmCU9zpWX7V_Fjlx0?^C?L$J%){0bOHU(HHia^TPs+;P2q=H zCWIQJl8TxwG$au$&~&va-S#<*cdMmmF{CF)urA*?9_D{lN?KIYz%DZinkgcr;sFV9 z1)+e%iu1;ki(Qk!@|8SW9wKJ7jIh_{(#}{^#$rdD_Gdr?Mr-O zxx;xJ9ok}#&#U6ywm-u(0_-_}4=D`f8;pKg6JBB>}PS=7Z(*KMpVa$8n@KBbOopLd**&DeKPS`)EVg$9CF zqD@RJ98)9U3FGyIaD>9q-0kOhgoIgm6D1!RYCN)a>c-btSN}RC4x3iiC?+l!{zu9C z{pQFyk3RR^%)DwkoThgeblDF zRH3FoLORXR>_N$J2@4K}fJ+aUy*g2u$IrYdx;^Qc_h_WoT{g&!<;VTs)QY%NFPEkt z=R4AK=W(!;{@6huSv($U7nd32Nj zz=g(JXadlfmCqKbuhG+y-|YfOtY;X+z~dI-v<|1Ive)tbGUViJzV;Q3AXe`?J%Iwu z&tHjEiE%7sOTDNZd0RVMe{xLg#@D>rgP5K8p#ZOkGGWicgjRs)*b|!|jr(O3m{l19$l@vsk9xM#~EK)42M{Qu_T28cA*)xar%evRI#bcP(Z2 zL2qm@50l->d+~}@ydA?HH=OB%=N&-;UR1vFcBkn!gt(cf1#HCWfrH;Q=mFEpNiRzh zf*8z+7^cEu2k8}z9O|@#?UzGgR7mZ1Q1-o41^P%HLJ_|tGw4r6flu7E%;;Ahb)9<6 zh6n5=Icy|0oI?m+H(Z!{J_H7(nCdTt>g_BzCNU3EfjF*Y_*pA)z= z)8EkdSG$9fq2!yk%?DvgeB-_PuSyfv3W8|e&@fQ=>b-Owf=uo}Wm;~ENek+IAniuH zJ%`{D%Nz57p6_bLUoyFDK(+H>#rPg4S=gn+4UIMG)YLX-oUhC`J4dLpz!icX;RnwI z&&$rGN~F|JBK-H|M16PI8X?{9O{tm^UnS&A$avGt8UAeap?}n7siB+`R#=|Oeb@8J zy@W2+SrL3^w-yR?w3EP|-hsRd5Iu3Suj99jk>wfNf{7jUK7dQf=ODKL+njY`rLrz{ z-ZQ#?2w$ZlKG%=GbfRgwJ6hboP@tZ-wRAjnTC|(iI)o0><}9~;>be^1&>`0!=h>Ud z-)g|rb(X4|l}vseg+T`MI@(O^6sc`qn8Ap_z$2$IjMg!sBKAQR^x7M=QGWe1IE6}b z%4&4ti*kopzPB*)+8IgCw&iWWQ>if@VG3PN>kn{Ko|x`o4#soMu!6y6U@KN>PSBl3 z?eJHVcAw_MDVURQ{f}r`&S~i^%Jm7!YALeLqW!JL$qdh~NPU5~pVgPr1ti0YQa%*f zGs4>*9E5sg2y~SCl2wa#TbCtqX)Zzbt3z*{E9a^PgfIW`bD^?4)hbzp^;+j!1Cs& z5XT0~$_Erj($rMzov!Z&yu?_Z))&|PQ&&FT%1G|^Lj3A{SEFcfs5w=Y43a;7+W!7b z^z*JwtZ*k}ro#p~fg0c4;t#^@6_})%x&}~B`EOR2a20CgWDQhrxsv`MI!$6PTYA&2 z+Z$x)nB_X?{Ck*KG~kf@(@l6_}68Zp5qS0#{XFJ=ytFJHIQm$><@qaWBcDV{g# zAjh$nht`v{@UwH|nWz>^Qk8?8pj>ZGR~}6@_`$nXSMs`o)cuc(@l8UJo%Wi)k3;;j zHEvt5PMukmF!V>9PB&xc1xp@{xRzhHUrXXp6`x?9gumDjra66QaXcGoBUsfzdeqKYu>*hnLIEUN}mWALpulKhI(K|D6j1J z&1U@A7tJ!B9MCRN9@*LEKmPdIuwBT$D6C0~XSA5%eFhD(gP^FTyOY64^GHoQk@T9kA)a1Fy#PvFI)>9NmXxHJv1oK{{hO!RE%J5vWS7ot` z8K!$~JprrHARnr*FI!nwX6DC;ve};v<(Za``7`F3_ohumvb?rI^h2U$bUKtAgm&iqqftLujw8rk_XLsGmX zedrHw*{-HX20R$AT|F6v3@b$18#^j%#rDGXnYWNxgxL6uPq!hi(=>M_m=jBl$jyPis zM&{%XIfG(naX5)41H>7s8utCd*(LS5DAKKI>^>Jz>Z&@>2xb$#it{>rt72Zyh8toz zX!+U29ivP{HMOR|*Xk^>%Oqdr8|nek9A7SqoTo-^(QQt>1AM1aNbotGt2X}^r>~pz zr6x`Yf63ORFO7UNtkmR+Ma@O^l*pbqp!pK~6yh9T_MM!E+4`XTcu;^>4g%RDV53)(ET02iirV0UrY!U-1(=1Drm3Y!U zevC%e9OkQUFqy}}vDJBVtJYN9u}$Wz_IcqwZW@+aKpCx4OV)fABiz5}aR2tbaCK)` z{Ot;^au$SKp}`@!XQ>kH(da{fKTTfnQqk^(+(P7!*tD5<2U%P;l!yKx7rz=~G zqkWy9MdQSzeuFlfdU}k!rCB7?oIH+7C$OZ+$=>7F@*Jnqn$OERE(NaJ?8u!IYF2K)BO;7vQ+FzT*H!y+$qC6T zau=*1Np-f@lt!WnRmUyMWF?|4Q0l;N$*nM7PRwyho>Xtqr`82o*1x;F*oxZ|^jK{3 zG{LpMBh0cj)5tdxJm78hzccZE(JqU*i%Z7W@?7)u{&1q(2<^MRx$|ivo1!NB1vw^6tiuV~1JovU%E)<- znM!LR@=C&qaZsCa%1nM`tS%YTTK;IM)K}V}uEie%pEnylj&h%HpzfW(6Enn8=c9vX zGv-enXD;feOIa&+^bLZu6#bGh7Vw#OB0k|zvZzrHAM(5g zQ;K+x6)6GLCi=b>tUL7@DPgyKTW)e)qOBhG!7XZg4|9pPis;WZVY$?IYF4cbx{I9B zjzReFS>le~??ZOzUu`caF?-Y-r!7?jCoZ|%qGxEr9nW0TJfkXXIzDoE#x)KP}v}d<>`8>XlPMSnlfA;Bu zYUT>zN0RK$N*o~NRh6f%2m4j`!uE-$s~8VFWJ(#?lQIjU4Z$ZNJE}^{k75MK8H49` zo=@`AI&p@c{BYyWDYKNXE;fuD5SMn80v2uMsY9xkPRc|xx$VlBUun%0R6U-iX9o3r zdZ*v&Hdi=6jvCqMxO6#`$`bp6T@m-4d_MiUB4NN_-;VY>G5r{J%%3?4z@S+^KPDlRexSeny*UY#;qI83xLn^5lYQG*E6>(CqBp)2AN0m zNTaioQr#uTg{+*+G`8^AoAZoXee)k`qQ>y^(f>I;sqOXh=z7C~3jZD=7u1OX6 z`FVY0>$xwp+fnrnhKC$InpW(k&5H6ld0u)H-aNI10kV6_IP6-x$FNmxl{z*_3T(FR z0+!G&9^87&4mPFvDIDF|AQ+qmmw>I<_S%|IcxV@&wAPonX zmH>qG=Ju)DM=duuRRSgLJ+6&scf05n*|nkOT1Ymj*}mg|eYrZCYbD zUGF)R8b^yA*5k|X$VdoIUB{DRADtV*4xXAaiM>2V} zL7?r$%}_;8@DBf?gCq-UfJ%1IyvH5S+b=tVCLM^x&?1Su1oS~2skC-~nnnro11*A} zK|0OetT0MU;@u~ZrbzF6gjwcrk$V&ZO!nKvfMmM;j06P?LXV;cFNd_@YwKs_jcg}B zzR;svuVQOcKux4T0P{RAs~E{Q#i+nd5+rUDENXtgD$fZ zSHQn_wKu)tAJ?6&8j;>jX3|qn3vpN&-IMxZqXe-Xn;%?IDXuW`HTE2N=Vcd`613Gs zB1F3xb{j4GN|9cMVChy8V+z1?{W(Qu;lQ#$^hs3#WjfFg+LD26f@d1mDPsdL9_gM`_*}=XQ|$C z5shU{QN4Poh*r*y$CE6O1B?f2b6L{0VX$QfQXMJreKcEeU|`@|1Rls*(|rWq-bVNl!i%x|!`mC*~xOzG_+PN&>WZflhz|J|jh zbNm5eiTO89t;K;7vZ+kkVf;_ zNND^mP1YKvkMT;shG=_m8Df|ApaJ;7~mDM=$E|eDe zpYz{~j`pSXa9JQ5B;4OoVCfTesM8{ilP7;kxyata<@=A$;vawqPcB|;_bMe9)+&=e zo|-S!amrO&1*T4Q%u$zW^32e4+S{J&FHDHq*R{&>cF;|YG^K*CFE~X}53mY34Yy&R z)9r%y-mLUeIyv0DA4Hk(YXHW)TR^VdBP3;-GCC^T5r>=zkYTx5H+vjZwCs9sUSX{R}oa&Fe>$kw~J6^q!+sD~Hi8CbrF99_MB$ zt@suQDRpWz7!XtQnKZ8`Sz)tUz$U~jv;BTz*~o0l2Im24$&{;8YK63~Jxq}h{IR8B zBKN@(ybO`;7h`uZ+(J=a*nH3U$h&;)jOh%syw2Ow0B7dMC0kcbX6mb)j7hVCJ5}v zWaG6G&zz6%R-fDz?Ibno>*OEhU1}PXVd>Nq9l3~8dUWDlX8%mxf=LuFTBUufp!)S|2@cDnVTZ2x7nJaS70eKMF?Lk~uv(-!sRPzv1Q{r#L6 z&p0zdO%BxfSi{=8&%w5;=TLq7Cn&%+LcaR;X!Rqj)Fqdua&8N~@v$51BV)Ca-t9;t z?pgHcDG&3~**EXl79$4Z7B{Wgw#-%Hf3npSPK#*d5P=_GiI{!oeY|{Tvla=-S_Q75 zl8|)rOWXbD0zaA2bSL=os$JdAF>eHQG*$|u!qN16rd+>S5)$r{>P?F}e(K5%i&9FA zsYZR8a=z_d=2WpusCC*g^tBgF^^V$SGF*#1^eOG#GE)9XD-J{%(@Cf@6^yl#ULeRn z_pv5M0%g6Aek13oWs}fnMcAVo=e5a4}_ZFUn)=bvat9N*iV^uwUS! z=H$e_%2x{S$n^zQjfy{oJAsBsmNz)L(VKC~AbB6R!-4Sn^Nyp0p7F(+Dh<49@uy*A z{9c*rGcrmpJNXM1L(5+tk4fB(DzV-t(zOKN<-EiW=1K zzS6eGmJ>ZGYo4F)byx$w1Ir-7*o!E=>8=BF)17TqiH}!@&f)NNmuwE*<5=Ro7Ntd@ zTIcEbQe=}tm+r%9nUyk-aR`i8E=4tHrEXKrJ? ziuqY5+L_UPN2_=9^OqmvR4-IO9$Gpjf+rsp+>ZD5Nw9tAPqdoRh?d?imvpR2y%F3J zBPJ%qc-EBD*#HSPH-2GTRnSkl!jj!k@PX&-U8-oZu`6CGi;3Erik+Puh)t8lY(9dq z^Khb@*NxV&)kQkVuA-8ra+mX*nB1MMMNNnh!kJuCBLVivEnojZaNu9e!j|2tn%Gt5 z`Tcu7)+3%q1(>1E(&}ELUB;6XtE6`CU%7Uy$bfAA@8>RfYfev_)53mg{T*XGTtK)Zq7-0n>3s96Q%lRqI$0L+TJ$#`!+hBt(o(xECu8tmW^SsCTg^7 zNe%tyJ_m>k%YSeIgoVmQ?q}l0i@Vf|^2jr-HlWJ`0`;%bdmQv?*2k6z=VDqp6&>B* zx*^~yk01~3F!W|YIb$^hY_G{l?N`=H@7A%rNFJb%gM-5uSZ}|8oGr8{cXQ?AWUubK zsCD5p-y+>~{;)UQSb9sye#|D8T7$;7@#STiKy+dkOfWi)%~^H9wg{qO**$2{GXo|Y zqK&%p)zEAgz(~5Y{y`|>Jovp)d4`fe*VE(^zcN}{Exoevi(&`-7^=uE@RtHlgC^E< z8KW2tSq~lz$Ijc_QN`nG#wFLxSN3*I+ro_#MGZjf2^ ze6-V*2b7w=SsZr@FRlHaH+ znfdFo-#=FlE^23eQT0`u!Y-Y@FZ6nfWct#H1xC5piuKR)_LhRshTk2b&#&8AhXQ+Q z-tL4mVkqH;63Wxrp$WRVru9#S2VPn{k~%B#>1jAvbrhw(sc3!BC!4_)QJP>aRft4_ zWYK1_c)dG}_Zkb2PPo>>u<&dXRCO$H+jq zps7CMGTrBim4}b2E5U^4-Ux-0n(DWn9?cTfRTzFKK9=QMw%w#JX~V7NFN)BN(sQsY zOUcdZOwMhB9gRzt(Uqc#g%s^UsnY|g9PHDUKCMd+iJd^1Pc5g?KN-q6^_fcsRk|V1 zPldL%R+=-E3P~aLfp~?AT|gYdEa3BTilv+gSKVDZRBE@R8c?I8eo&Idqzdoypqsbf zG3v8DECRrhC}9AP*PJAwoaS%qjcL)vFvZbeIOLkS=d zCT|-Tiq8Y7GV+1*m#|&w0%c0fTHHrYT7&U2o~wyKncNQ=U^02bC=N1dAR(;^?Y40lG+oPiBX9>m-3EL%m*+BjaiJv3kzXacP#i1$gkN_p5%T;tpROWbh5n(oU65 zVuk~U23Kd`K1H^7-4sfRrLHP9@^tx>CMIrK`0M0-htpd13w2L$E9tTad{GPbM29e5 zvzpbgh2cV7j{=*>qIYcAD!6OIydms9m2SnwCR(Gg zXtXjx1YlA zu0a>jM^UljH$MTNUDWXOXAQgjJCw5p)@(QpkXz;fOyC6ZB{fbwj*dFdcbWtkMGlz? zk3MG56^#0$50(^hp3@bi5b;YNRSX*H`QUnWg|)g-IZ(3_Z07Yuz>u#r->SLKwm4_| zzOX50vP4KTPBPl`=ZcSh^GfASIpW$3II0$XlaN9NS9+8usLV>Ncj=f&zX{Ss0>v)c zL8?%2F^=?8Sxt0nunr=xKySuftJCu3jYye-L7vSk7QE2E zhM9JQXsEe4)Jvtp?pXqe)B#F_Afi$YV*MBW~h%>)wREB)ol}1aTr0bz!1%p_+_$nw|lZyu5yx?gkrdT}gsPeqsF` zgVS7^a>9b{`(=LSnk%K6Net`WMY(o`Y?_3&npfk>sikG!dE-;CLE8pkg-4YK`aMQ1 zP$Cb36WSO`EoQ4{`xqV`4-pVW!(|wL5rUenKc=$fmtr$pL>xtEV$f(ov`(0nW>dsS zJ1@w`fVub3yK<7e^NV)xK(ZSQp6UNanct|5p(T(leV?po1$k*2KI%7VYmBc?Sm>jq zofD_gf2)OD5rv61Pq0&&-rR>doT4Rx@jbq*%mX}y)H$cPDkjb@zP*j zOIDlJn6as|a<&LnE%m}5INpUJ0`?S4LyPmtP#)4e*f5G&5qz;N6KmAwVbHX1)gd86 z%>dps-GPMkUk`sT8|IcTF^t8gE;DQQ${k3RziUFI4(xb28Bmga=*~?FG2WK#M%kxz zCObA3FUX5b2tTH(Jh3*@?C={Zk7xB=SjG3X7fEP_8MH1H|JMH!PU$+gVMIL z%}2!^TJV>zsm@>+RAs|>rRgQhhLNjlhKyUzMTX(`(xOX3OI!R4uvTPoLCX+CIFNOP z03^A?r?4)1Im?g-x_!-gilRqeEpcfID)3H&4UA2DtDHeBMt(|BJ8oCW+#s#Xn_*i< zcXvx$mJ)j-&j{^0OC<}O4ob*Lq(v)#yiQ+(|4rzZ0}LgvP8O-^YaLGqmlQ*>w7g%| z&D^z9=eSaVz$^lfkp{J5tjmzDKsDVW#y=oiNjoBfNO}-Y17X6M({T6JEQG-iWPEnH7{RB&L{pp9e z^lvv+EXXt{71R9&r8pJPlWF7`k2mvvvoO#XBoTs&5boIUaMNwoA&TmP_6&~MQ76Rt z?xR&AQEjQV@TJ1|K?zR@r|x=*n`Jq{gH7{PDci6r`Rmdty`t(Nt{T%bo>c#u69b4$ zP!UPneskfxLwapui?`tp#Oddo>&F`xo+~UWxx70@&Ouhjv3J|-<=QuNOh!W~%>Ee0 zRH%Fo`K3eev->5gA(*2bhE`>aG$u+&Cs@KJl zRkTx;6p%7fxS2s^5>v=#ImhJ~s2DW+5dI|y`CBA`PR`x=O2C-Vaa4azWGagvo1^c~ zGtzFCX|L4~kOG0AK@VHHJZ{Exw<=-k;Bzisq<^qJzc>@%O^8{hVzk^ zd?k!YH^LRGlegv{YeEl(k_^;Jx=+M31rH{YuV5zS^3; z7K?X4C+2xhXKl!oKZ^Hzx8fG+wSa*wP)A$_b+GEt{uci47XW~mf8vfBU6l1qJB&~K z^}Wdk0MbnMWAIP`7Y`5+yx*NwpW{(~0<;D7vmY4+=N;FJF# zQ~_^3{Q68~E~HYyY8WGCD%1Pb``%qpm+@f9L=7G+)7ohMHaWiK_qc)G9}puU0B^ik zv0WTHX=kTP$+kYAXKGNbYr!x7Um<`w!9L%L`iLZ9@_Xs!)yMG$q z53*5*jlh=emf2oK_pu+Z2X{%5yX&X%*3rjfZ=(lr9e-w!>hJT4eM5TqjId4v zdl|mhcj90!aW!bHlpS;9Z9Y_86=WPWqn8}he;}#=R;qFcy8YTwo6>T>6R1oGZuk4a z`8fA*mG~GGwaUhjG0l2K-<7@B5g|y)x4jbASYZ56vS*jr>hqE5czf^kJRiKFp#yTh zfJlqVL?rcd(lR3d<`1qL0*V?(aOUr6q4Fr3XuLf3trS*u1RMsw<@n?~9IMlKM<mYKCLcvugE&M96y~hwJ2ejf$eN%5e#3 zz##-D#7N1<86h4sQn5|Q9oqa2JsMW>ww1KM=?3VDA%MPKd76=)J%H2qxsa?Wl#Qhh zwb&3pwPM8u7zT&_=;Z?DARHYb_I;?#6kn_aWR-IX8p*0+C|MLnVk*-*ZrYEyEPkpe zY1?jbH#GUl3_ZgMqqyH--3SCUJ&r*B^dhe?^*!HSVkWze)`HX1Y9#rwrtrF6lZ8w* zs#A)BWRGEH&b+KouL;(0EYkEkUGOu*k^E?*(*OZ5*tNFm-AVNY` zSheKioQT<(6=!2FYW$0f8>^!W9Rt?L3cM&=O05MrtG2S%9co7ap#(4r|he6+k&Llbj(Mk3c#Re??JD~xN@G{wnev05wvctLb;LkcWQupHK zjLvttbt*b!`Ykbado}%a0Y=YbwC?vKPZfdu4s1_qcG)r;NelybDl8r<59+2W?>V%4 zEHC))I+BB_h6Sh_M%*Ey2<_(V#y0E#vYc>H6Lm5KXP3;>cL>}n!ssC{Z`5O0XX>Mc zTr^k||A56q9wQL9(Cm(tr3IE>Qb^I+#<5rJQx`L*tXvvVkI-Xn3W4{%=QYy{v9N{h zqtnOf?@|=V4P>e=cOk(@H(@?DR$BH`HytvA8ld7uBvv8@=E`~h@u{0iKP$wk zW(@zSLC9F&;ITap-U_JdCQLOUy52jLu{wB5px-Ow$sL$Qt|gS zAGqqjj-s6@$>71K$JuDIkD}*@AOTxudkV!o7MF$L66C#$aiZjrJQg1HtkgYA9Y@n9 z=f;EqW8deqq#jsRHMdaSM9#?#BC8i)kwbs{ zTWRvfsSpBX2w6iMMo}!^r{M=-43BMo2(U4DWbyIEadnrx0*!X%G|0)W3_cya0}9}-eT05lwt5)+ePrqV(eNNEP0WNR z0Nwh(^AC1Up;m*sz>F*om+8r!N))DhOUf^ei~9NK-$IxFgEse`l>eWm`hV-QT7-c$ zJiBr7?8Lm&fdZQrM6S-tLHBwK2zh}(cgO7<@ge&$7~C_Tq6<-{AO?JngF}^*0}+mJ z{K&*`G`>R?o3sD&(eGJ*ObHiw$1%C|JxZ3p)f85}%e~xqlne;0k05B$zN=?p2}ofv zl7YtjX6ikys%cPptr9fxgT)rAIu&AKVmrH?t(>|y0L1*&R2JWh=^>jD?5*s2%mqYaF9tN{`B{QP_CpA_*? z&Jlm|P9RX_ha26YWdwD^M2>Fs>0R?z4tVK&1hcwz6H|TT!yedwD0wpbD~_Z@t}^U| z{wlA^>yOe1=eM}F`6Ot#_i&CLb4g&TO6T?Y^r6DMXgUqf2$`K5!I6;*o_|u(Rk+X2~&rXtTr`$3X>eO(h5cOKgB#e=}5z*0= zT6Lj+2na#Z0*1t3yCPVW@{Uuaz*OAgx-_Sp9+MlyqiLC8g-=S}GBlF_Cv3MVaGiaXL>GE&}y zDPa7m&iiHA@C6VxWWXIxBXvC);T-E8k#z-u=&09xB&vc+vxK>y5TLyP%kt+M8v2MC zg62`x9HfGWIV8Q`BlVikim_0ERa4We+j^e&Z7vIpYD|e3Vq;*@ z`%UTb6r?B_QTJ3nBw3)6gQEwkV&B74_qjAx!YH$DgKon2X&=Ig5!i?#AQsiUPC=LD zpD~~2k9W(!h#=p8OC~%9FdsCiJRV+TFbTeDLC)H35qL@2 zFBrMb8H(OeExM711fYx zU6yG2<@K*RmyNj$V-LHjyGr4kAF|z#5ws5hw0>5Nd{S9LRFACr;lH2pY%*cLdDmLO z6@sSWQ^C$fUhIW zolhu#A^||)Hwsi{H=#^kut+ZFxyF*O=7MaMcY1yH_8^QVC9#+3M}?@;un-BmM77-_ z;j)7gJBSF~s%6}ttplLF zL}ivjq(?>^s`CmG)ml!WZ6_V$;Mzq}|B^AS6RQ}a-C^Ld>Jw0TO zr*vOG5;>I%3Kat}T+9e$o~^>yULD1Ji1C1&)Pe`>+C*W%KWEaf5Vro^q5ZO=Fa<)A zJFGR9xT}DzDi&-LQS#F6r3HQ59WkcwAP(XV+cFE0 zOxqg1(WJlRYK}4#Lug16o!jd0b2Z*K5ylsm(WZ9A<&5HAdHP#Ad~KiNAYz%;g6Igg z)wUV#Jbyi(uFCW(ibW^u=0A%TTa`g>35gUy-dohNMnaw*5pQ@D!hmD(l!5Csk0v=7 z)%iMDktK{Dl)2Bvu{PfFxfd*TK8>_Vgxxj{_8UaWW)}fR?+`8yi8OD)5m+^(1>|xw zO?THC3b8+PnK+2WpZ6U-99egqsnZB63pOA@VL)+Y1i0>BaNA#}N z@w2{0@0D+YcjyV-)vMbIgdPIpTeEjUuafsH2uSk?Lo^wA+(zhMDnE&wM&X^Nw^3|8 z{dXc&gy^}sJrhnw0Aq>Drb07v0*ineoq9f(@T81U*AL`X?1pT%Vpn;=nc_4|5RZY? zz!Lun+A$Pb2h7$jo=U!#t<^Jx2AWF6tz1Dye~yemkhjb!g&y>C@=$74mg3GOE})i? zhNdXN%p%?hVVfIlGlUG8@5%V|RQg|o3eY7%_~w7w|10G(XoIWY-t4Zfo`7)7sJhId zI?;c+_Mvf zqd$qIKzlYxT>ZuQ%ft0MY;5eufVAZ6w?NN7c0Eqm@}q>btts6S^dTG7MKWcVZVt1N z{-0^hvy<7v)@EkLiaZkS%*?0&6jt^8bkxB64irAa8h8v-AwY|Y2)xM1$bw=+0RO8l z8E9(wwfxK9z$--OIm?_f)evlbx&~lEc6K(xqf?C#Cl|e~Hf%ZiR$2LH*Tg*1IZ^R4 zxHLuf7h7(`PAS;gduL{}(;W+50w|a*qD(I|Kt~3$;tZ~^?-I4gyKW259S|?w%GRgT?{@MLv0Dyjl z|7|h&|7PCqhxuPd0SI^g?}pECF%baI#r#&#*NXE*YUH!szqx?^oVU^%Ik-xd^$eEO zv?2(mo7~TakHC`3VJ6WcoXWJ+Gf4TFoO&F&}oom~|B;Hh$&ySdB=0KC71vThWbKU4!;Jp5fDPxm>2 z{Kj*u6G80-`Ukqe>%e=oz9w!EB6l-JZ?u^Z`tZH}pV8d5ZUfMsp#sEiWr6Py4-S?3kVdF{hb&34J%_*XCqE+Fus z{4J7-zZ4NFh06bY@z>5M;+ozo{GOs0ZWYJ?G4Vbp*Z)3D3VsMs9iLEQ32eXrX9uWA z5w8(`Fxmj-695z)p{u`|>T^|WR6wA``x9M&*z&y#jte*`L`GQc*Zw_D9ssZ4`?>yk zOfBb4fham37ial<2s*&F946wInD#xP4=FC<5fAW#R(1hLNTg82h9OMDbTl=uE##u7ug{Ce;Y2&OYO}Q>B)A>5-RD72l~E)) zzx}()EkFNC~;~ABgBq_-)Bb%%15%G||=m_^S4|2oylz%Zu8e zMYFEqi@m>$g2*I|D+~R-ydaSBm}h$m6f5IM5gdlQQ^1bvQeK60Myqf`8ct=L)FeSF z^7$jxma&2r@|VL51zB2i^N{M_X%XMyFx*(+-FPh17jBDw#ISh+^SX6Jj&i&^5_o$Ro-2vyJ#%xLhGGX6l zdl>J+*RS}GSsI%>pNs7`d!Fxa<&JdtUQD)+bu#FcCH0?=W{L1S?b}~GAQ!m4F+gcb zVZk8bG5;=GCkk8Ia_FFTu(ucR^rw1xnBsfOcCmW42PYC_WpyfltDVt8y_>_xSUZ&D z1X#cI-2Pk<`|w&e*6v2$ApUN#`DXhEeX@Ivm2s)bTDld7-p@{W*9~m~4{58<;iV+u z$C-*Gxis3ZU8g(#j?=A5BN+`+s|B7v)%s#dV}!UIE-U;G&@}O9$vTyAxi&9vFaR=X z+^Ey$DJYb7S;l^Ml}I*4B>Z0DAIn&ak#bXSg>oqdxyn*)Fubq(R6M_ZWGb8SmKeKy z*pE;BBT+5i@oAarUmZdUl1kNx(sZphU&kaf+x69xxlhYdzm%fiY-32r`Xs^Ur_%yU zPw#B2NVvpUjItoNYxZHUq7LHAwl-@8L}FJ8UrwXb{C$$y8$=K_7_HdP}VdklL%C_7qGMJ?h|YB&s%-;|Cp zad`bvs5BwGRBOU2f!xwq(i02yOhSmj4OF4auWfC1?4)4@#S~~* zJi-@k?jwI=K_(Sw!g@^!wy5{Jus!cd($)hBGke3T7fU!I%H|?fe;p;C-Hy%<8I6~L z#1L6&(twH6ffX5Yk!w*qyG(D^)~xHR>LDE#yP&Zh-l|+dpH1r6REtms0IoT;Lduk% z-dRg6B3xc+cQyj4<9#ffc_^NIy;8M)zL7X{s-R0SR6(Ozf-^2K9dT}dx?59Mc6!B0 zD0x2dHLUBpee)ZE5pf5U1vOW~|0f_0=fbgKT%n6J9ILz31Aa%u@A3V0{_~o)P2Wq4 z&{%Gm_f}W?&d#?s7K?iHb=L6T(&Rj^MPi3bkzjXZoN1qd zao{iMa8VJ~;T3G#qCDGAX-ZC}=Xe?}_p(%2VxnKj1=bu4!J>Hhz4 z_n%QsZEy4_tjD7qQ9uPmKtM%$6QoF2>XF`i5h3)Vp@*g-pmgcI_bMd>2t@^{(mNqR zAfYFLPy&Q*@!zN^legRd^ zg8~lKnb&?kDH;4heM>H5 zc{NVRw4ls`#{u%bG%G`yv`TDjY<#DXPoo7@5%Db&-uU%mp)Sp6FFUk?xT>*ImZR^t zD7V=jD^!y^DQe2nX=JysvE0xj9bn2}Ck&aAre_=-^8W{cOj=8V_KI{^>bQ2JIe4>opoi&h9GM8dN_fs3^kx1QKf-5p~f6GzAt zn3pAh?N?CEzV5SO)R<4)^SAI6LBxHm!dUx7g)1z+O`n|~Ao?z&A!y$7#Jtrvghf{U zFvUh1WZbZ78GY4SGg~6{l$v|~%BA_WN;9tW>lw-8Gn-S6HRn3W8x$EQYEOx$OC$4U z`2CRy&0uPeYP;P-veuQ(y$sL2FP6`({jo9-_-4cqT@d@uv|fg^pDnQ})4bV>$J`{K zxAtUNEHGtOpfG|?;QIQ!p}09=u5W{9-kN~!ul`G1JManyuIdKugUdDHYA4c>a0O-Q zrZxh}EU>&kY%Y6kjJ+S!brADo_p$5NR-*Sif`tz1YID0lJzCp-{yx2W!u+%>+1W$l zGvJG@3yE36r#w^_$lo7N#=j}LGTso_pKvt7V|514*|jR?;-ig%5XB0m^pM4_i&)xh z)GjkoiS;D4J7|1&5x!#NG*+hf_Ij$$YUz0JGN^$AmN*jaKt>+G-8#M=QVsc3>|Yh| z9CMC^zL{Gx>eVjF8tIPd^&6n1o#@!^{BC~2DpBS)1Y;0$;ny7n*7@1CSq)<&83FCQ z_vxl-HJ+j&RcCBASOorhEzJ91fduML=1aP%_$6{i#q4N>MVoNjf1+#xP2<}E!KO{r z*m zUE2GY43wKDCn2g00nh-&FqLa`KY-CX`~JDE3)Y!OA2RAYiT`wF+KyZCs`lI@?th8R zp6YqTB`CPC@qM0~?X{3>?6YMKciRT%30t&ZzJPgiBV>YzgnJzYV$zN%7#L7BkyHjY z--F4hiZnA@TsCeWN*Tu&^gT7{x*!xDOFS`!Za3dxWc5~3qFdq!eB#ryW#{oS-ra7f zXIBq3nQXW|!s^+=w6#zW#W>};fvR(;yDfC{klp_4&u4DcM$m?rY#m~WHjA9`Wx$X2 z{6N4=H8Ed6ZE+bH73N)?@vK8z1>4pp_0Gs*%QNaArD~JyR<(jQ3qs~TQ(^akRi7?* zF_~H>4HHvgi=nQjU%gZnQ7H;qQ=?sU+$_GkIx;`c{F8{!loX0*l<@h|o$Y_Sezm;W zb7SC4=vDXr=i#UgP*Lq8`;ViYyB&vnQ|egDjp?8-FEAADXQu%mHo^s@G(*3Cm4661 ztJ0Av!blR{@?z@_XqeEOVGMTH&=}H8-PdjcV`7-a{Wm80bO*mY4kZZs-qU4|j?aDu zJEB7B#VWR~Z?+^2^tbCId;=rEIIs{lXZ2RHNf)Q$9K&QPv+GG;iU1#RKMd zJUs#|w{ePZea(*?v< zy>4%+G7$pT%|_egIk1%ddw=pD6G(2!eJfyV_Q0+^N=sjkyNA*`xDte$wg?2%GbE)gA4w&cA7UKHQoGacTVszM#WZF@8J1R*#sf zskAXZAQ={U2c+`x7rKJZh&-_X6A$KdFWC)d7`RGjOB@n`0T0BzdOD-5?JP+bb1N&6 z$e^=CV!o63RFw(#xxxMXocV7JRa8j!ovVk039srsJhA9H_i^a;>LTL`qngER|9uc? zN`jWJtPMY3yT=25`%|PG)U|ImQ(KAfk%sL4jcN(Z)iC$nnCT2iA|7F|dta(2W@7vg zA%>PsVOQ{wsWJ?2%*z4I^0+u$`{=&D?}~{xZe3s2zOE`-CQ~`;?(GJb{*Tl_J!-1< z;Q7Psfs@7Z9F0skr|%mzr=ylN(gfYkAMM7juiU$+3{p0U^Jj*|gAs5b->&!EzP2j$ zaS_|Yhwm%q^VFA7^gqSG2S0~a2KIcKKDwU8GERo=`qWLuTHzhwvM$4)N2aOR9fLJ} z&6Q#p+K~FDfK2EgjexbXPc`b~x@*8vsHdM7etZCR)P}UY!fiJQM32JTX#X?hD2qX5 zK<^3YaIV-r*;N{q@YdkxHvtAQhcdLX~KN z_PK-Jt5V19iLxPjBiHFUVG}ErIO`MTXrH0^pdUUnDi#~cG0gb6ZA9uAM`B>Ex>Uxl z+nvK@+3gh;a5wt7SB07H!n+|Jz0X8fV%jH4TQQfpd+x(xetX(49gF)6ybGDPq1j=)@9j66@DT{#4?rE& zUS3{(GbD+va^GzKxtg(!0clfa37?;vsbkOPdEJO6$`~JzJvZ?gbKA%H3-keKjBnrs z{A8xC7(~M@+dweSb$NO0614T@6e?Re*-B1mx)tp>^=j#8Z`*o4dE?A}pF`yjq7n=j z-xZVSx3T9asoSO6=D%dM>#NU|{(#S1_lk{+Nw;lx4e6sd%NccYg+eY-?@Te%?_PGJ zzJNuM&20(ZmcWzQqG1XG4@_k?SFrAAS#0|e#lsJtv6AY}ZdF77pH|h_KR zouhZ8tL^y);2x{cUV?1CF6lx-O>D~=Fa8Y=S80nizngylnqifNxcgDUb!!{mGQ@G_ zX>daNx40G#9I~ndNRm?Pl+W3ua4+3pW6--@qTi3fwZeO;;uR^S{13EX{RT~{GbKHr z-iF6j{4GTJ>1vc&WlOMtF!Y(wH|Oadb3aLoIN}__r}YQ`6x@(4RR7BlMhK6E(v%Toja?BbhUKo3NmJ2{aR<(loM&6jha8JVgHocHTE zgVU3y_#Yl{H04?Z963;#btMJjDaYD`PtYD4+Xnf`QuP8(lO9P9tMfsbPl9k}N9yU| z6cMLM$BE{FwjM1N5+w6CD_bUo zL_U2|GBYzvqAb>I_pT=uRXh|w{0gnlbYbwuCEtO`NA5Zm-2Q2RpUsVObWR^-%WPHfu^zLm z*KTjssh={*%+`F3YQC`|5FOQmP2_QP!$0ykAk89UHEmS5lSf2n+GXXgSi2EfN-7l+ z`Z>8ajq{m6PD}?pTnqEv&~lpca|P8MeANq(ZOROHd^D? zFV5Oj=>%F(-wmr}L{!}Z$Eb9di}*|$0A+xi=+N!;l@qe-24JnyPw=q0;Z)t?`f}-j zql6!p&~~PWzKS-tg7(%ES;JVN)Juz1(ae%}H8fWv&Bb_~?5<0Xi4*81=0 z$*U!p*V(Ytxcemp1;pj5j0Y@51)q17&hguv&!whBMS6cFW(iKb69*eomO!$aI-;;~ zd?3u_Fq~JNmlxen`Wd98%=U235jUd)t87u9%UMuu)(xlOi%Uo-kh~2zND|QjF1`Y! zgBn($OYz>*Ak;lK_l*hrG@L$u%HVVh2@ggw%YgM_#QdD_-|h74Y_pnSBbDK$OW`|b zCA!TBm|K6R2C6TpMuVc&0K8Id*`B10ueBAQmhjwIGk~0&5I=@d#V4BRn@?n9aO;;n zT#`ssDXcVe9<69{Wr>rE_dIbw%@{2%nJe#47LX1+HcB^I{dBQcc4eslo-irF!{{X(o2Yh7|MH=IwF5KP9vDU?LU6VwbWB!}xF?CN)ThIYO@ljjz< zZDMC-WbtKnBL(44Nkg({<0Z!B0M6g6ZZleB+8Tf+_Q20h5l#7TkK}aukJ^bWc-c>S z^&jlVaui0!*BLin4hdI)0thb&Gd#U8yfnXVZ4ZDKz@M)->J=4yvmw0i|LYjjr4D*m zBE|!ZQ7eL#LAAF0ny(T3)}ck2MShW2xW93Qk05fQPb}-0d(5=>*qk-~yLESTk65LU zVjGJGUHnz=qU_hKVcGK0(a{#wkh6LS<_*j*hC#Y2Fj#3;)@6j*wg?!Y_s;rdwM&W~ zjyIIWH|CsnsA`v5>=a9AZjEHiNeYo&bp2+f^Y zRTuM<%txxAoJS(bhpWy3;LjJlhNL;%4sa+aD?e@>+xh-+vF5&iIZWquA@0RwP3`r4 z$gaPWWoH&S?WVb7G5tktR64&-r;+v`fK0K5QZ@&jwMD36k0>l59Wdq9uDzfFgB)AU zlPeU#Q!Z(bT*v2PWaDC7k@I)OtZL`PJ}Ii~J7^I)&~PFS(lUq6ycoP|3X;kxZK7-d zW4N28D^P8jocMOc?Cd(9L9IfsN^~OVpiEMutj^s92?A0u(pGc!AT4QnYwy)@<7IkF z|I_D6=^D*JnuRLh5+iM!AG`7Sbj^3{7Og~GCe1>Pav1|1#=2DPyRP{I(U%=vvM~G; zuCGsuHGf@jjH%CmByNhCMc8Z<9FjG|( z4|f59L?Cm2aul!Z*>cJ6^bvQ~v*m0DQyTo�U#Bc@w)aGLz~fLWvVGE!(hGwFI}h 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 literal 0 HcmV?d00001 From e3ad78d7f1b0dec456b94dab52480a5852bb536d Mon Sep 17 00:00:00 2001 From: knqiufan Date: Sat, 5 Sep 2026 00:25:30 +0800 Subject: [PATCH 4/5] test(dsh): verify acceptance against current upstream --- .../tests/runtime/acceptance/2026-09-04.md | 23 ++++++++++++------ .../acceptance/snapshot-0.1.2-rc.1.png | Bin 133076 -> 133194 bytes 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md b/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md index 23d024bd1..8cbe5c5f4 100644 --- a/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md +++ b/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/2026-09-04.md @@ -1,4 +1,4 @@ -# DSH automatic-path acceptance — 2026-09-04 +# DSH automatic-path acceptance — 2026-09-04–05 Tracking: [#1450 B](https://github.com/oceanbase/powercontext/issues/1450). Bug: [#1457](https://github.com/oceanbase/powercontext/issues/1457). @@ -12,8 +12,8 @@ establish real-model behavior. Keep the PR Draft until the live-model and associ | Item | Tested identity | | --- | --- | -| PowerContext plugin implementation | `c25b6329`, based on A at `c776cddf564cc2b4c9b45d79a3e056fea26ddad8` | -| Built `lib/index.js` SHA-256 | `67ae2c96c2f03b4ce9b8d2e43dce47bcffaf588e5b80082346ce43443825c758` | +| PowerContext plugin implementation | `fb82b69e`, based on A reapplied as `30c65c3f` onto upstream `fc75f927` (includes #1438) | +| Built `lib/index.js` SHA-256 | `e0689155f189c64b6cfa84d685386a771ebad9c11b0aa95657277189759554fe` | | Primary DSH | Published `0.1.2-rc.1`, SDK and Web profiles; runtime dependency graph pinned in the adjacent lockfile | | Compatibility DSH | Installed `0.1.0-rc.6`, Web profile; this version has no built-in SDK profile | | Reference DSH source | `76fda729799fe9b3848dbe2c211d4b231032b81e`; used to inspect contracts and load its native console exporter for the Web log check | @@ -34,12 +34,12 @@ Credentials, access tokens, raw host logs, and user configuration are excluded f | Check | Result | | --- | --- | | New registered-entry regressions on unchanged A | 28 tests: 8 passed, 20 failed | -| Final plugin unit suite | 147 passed in 13 files, including 30 automatic-path regressions | +| Final plugin unit suite | 148 passed in 13 files, including 30 automatic-path regressions | | Real PowerContext Server e2e | 9 passed in 2 files; includes A and no-cwd default Scope behavior | | Real DSH runtime with built plugin | 4 passed; Source processing, persistence, native diagnostics, real tool validation, isolation, and recovery | | Integration manifest tests | 26 passed | | Build consistency | Rebuilt bundle matches committed generated files | -| Quality and documentation | Lock check, pre-commit hooks, type checks, manifest checks, strict documentation build and published OpenAPI equality passed | +| Quality and documentation | Lock check, pre-commit hooks, type checks, manifest checks, website lint/build and static export verification passed | | Live-model acceptance | Blocked by 401; not reported as a skipped or passing test | GNU make was unavailable locally. The commands inside `make js-test`, `make check`, and @@ -47,6 +47,13 @@ GNU make was unavailable locally. The commands inside `make js-test`, `make chec installation and `test:e2e:runtime` command also completed successfully. See the [reproduction instructions](../README.md) for the same gates and opt-in `test:real` command. +After integrating upstream #1438 and #1456, the bundle was rebuilt and the unit, Server/runtime e2e, +quality, documentation, and both Web-version checks were repeated. A's remote branch was unchanged; +the TypeScript patches compare identically after rebasing. The final website export verified 78 HTTP +API pages and 378 Python API pages. Its homepage/benchmark parsers require LF: four Markdown inputs +were temporarily normalized to Git's canonical LF content for the Windows build, then restored, +without committing content changes. + The registered-entry tests preserve downstream rejection/exception and `startsRequestSeries`, exercise cancellation/deadlines and throwing/rejecting log writers, and verify redaction, response validation, existing capture restrictions, and the 60-second diagnostic cooldown. @@ -76,9 +83,9 @@ command, and cancellation checks used the Web UI. | Live-model English/Chinese coding and recall | Not run: authentication blocked model access | | Live-model Web isolation, outage/recovery, cancellation, and direct calls | Not run; deterministic runtime/Web evidence above does not replace them | -The primary Web fixture's readiness response reported `inference.generation: unavailable` while -still returning both doctor checks. This was the earlier fixture's unsupported plain-text readiness -probe, not a claim that inference was healthy. The committed fixture now handles that probe. +Both Web versions returned live and ready checks successfully with `inference.generation: ready` +in the final fixture run. The fixture handles the Server's plain-text readiness probe separately +from its structured Memory generation requests. ### Source → Memory → context evidence diff --git a/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/snapshot-0.1.2-rc.1.png b/integrations/dsh/plugins/powercontext/tests/runtime/acceptance/snapshot-0.1.2-rc.1.png index 0d0808f7be1f3adf77a5b6e3ef20f8e6fc3d7a3a..c94d184c45e28581a883876513e796b7bf0f0e64 100644 GIT binary patch literal 133194 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
  • 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%0D*TS9w9LmLF@BVjqg|j% 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®5QbY^Np*@rh0M3#f`aJ;!tfw`V8BXOGYvu;6A*y zu(DvWS~b^uMobY8gCUjf5AKHFdgVf|PDAqIn=xN|AmnCEzEls7rJh*t&eW&l2a)bo zci{p1bI;g>S@52kH8^gO5%Yy3dR>J$3o<3g3X;o3Jo^CKgl?WMCwIn}Lqu|y8zQHU8aJe6nTGNeEK9X z*LZ=)DFmqw8@w1`wA{W!sYU+}$v-YWhxb!#A{D zC?8EpVU?c+v%&U#ynW|%`wUobu07eKWm2NAE(1UuOO0xN`k&dNbf3fKUG<#z`oF}V z_i!CUXP-hCJ(Zj8k<+Z}|%sxip9A?BZEQ^47EKHqN{g#xqiUqM}*5t7>+)`Y{XYVLNjP zR=qNgts2HMplR69sM*~xCc3aBQ?$6olOo-;;;_P(Rn~HZsqla3MRAH>@?Gx2%XD~K z5}FZpk{U^={NXGg2Y8y2Rzb^ssuxcC)Q#eY^sR7Hg$N-rmmPHOY_1E;(D>SBrDnzS zJd#u$hgYEZ&Jxvq2HyvVNwUD%c=p`v(VErZP?>L?li5LiagGi7Pg|%<+TYt3vUYcq zg-TT9685o)y*pNbdY=UAj_}bub;a`A^wsDUF0y(o@enfQ2T1tP{Pf;uKRwJ{d$2ss zkx6`{eor&(xI1IANstd4`sgG<)PJm!w&6bKH+5Q#{%VA=_EVh(`DQ+q5 zP_(vnxt9@9K&NCZfG6w~r0YNsdyR@gFz60|hR%6%3v;5I zvP9KsE-ysHL5Cran=T85KLPs;6t9ot5E_BkMjsu)PyK114R)KyM>>t}nP z^ncYtJ*&qf_^egxaV5ppgdaQtE!T=$Du4J`XD?c_ficDpv?cPo zMqIlgtDWaYnkb)f0TrcaO){X4(qra+e`LWBZS%_ib5x;AAp?H(PLh665bb6MG5PlNe>H6{2$6}_rsJ!V?_L_s| zeH?|eT*_9oj$kR}ez76kfMxWa%tBPWuAoezZ55lnKEkym6Q1U7(>MxWKyMvVdNq#2 zfZQ3}?74j@DD>Mf`aozl=&6Efqk$~Me$u=!C;v7C5ax4^;_@7(rN zL*nmPJci})E^qX`l_6bEWz!gpK!%vLy9Iri56)R1&7P_}@yfN>JZ5fdqbC@+e&lyK zkG9%hke$*`@kfAp5xBLUYAL2+}1v@pFw1jqz)PU&^YkfE@8lMHSP(`l`#n;0Htpi&bC!botHD^Usev zD1%9)Ro;J2hWPuK_w_IRGGtF_ZVlY~uX*L4|LmAA7CsKSZo&9pv+Ap}`M7Q(C!hMh z{u~niKL+1_mRFg2{Go0$I_P?}7W(hBRQxO31zB#<>=|tm5)@r=&{uEP%($3&Gx~l4 z;auj^%U1vDn;OM>h)-UzI|6QNH%NNB{?W}en*NQ)zrk0UlFdrhYNH>pU|Ba3Wo1o8 zHG~7cV}hBFE-ARK{L7sPM-b%hE$-8}cX=&M{P(IPI`>-Bt=jkFqcrjzi2D#Ud zH2Op{bA6sec(6P*{I6z*tgVYptre}$oMcyuk_+k9#;>jVsDbD1`)df!zwzz^o=lDF zRZX4TgWclgBl$)yf}e#V^5b1$dZ3ng*@xYd}!qP`wQ^>%3UN_K|_}-yXqJ zpUXbUdzg3rEYM=jXe?G|cJ|w)TB~qBRF#GC8PTl)?yGD1;0wUm;-R)+_v+f$U#6zv z`VEDMYAw2>R8|%=C`U>e0=~C0fF%rZDd4Kmd40zQ|7jrJtD-h@83i@LRbX0SgA`qLAF(qvORwwzS2h%+biFbMlNBktAJ z4_>ezO~gxnLIa`VKqMExd_%}&Z|AaL^5>R~e=2|=w>?L7`4cV-a7DMlvo@iinoR??4e+z1uI4}Lu5OyXdV}cxL*W_eN zg(aBLA$#2hyGsAUn78A^0)k$h&Dz%fdKIUrtb8~ci;0mu&*daxt6j2zdv3b%nNOsc zE|n!Q-gRj#65eMqXT>988%b3+nreg71CYz3Q-a{w0~l+XcD_a;W?Ta3?P__(?YU1M z0q~!`nW@yP(`Hw8kIF%C?s3OQc7horD$^2{6*(T>%D&RT7_hl!F|$?{OYK$;~eH0b9S8m$RwYMfEv< z;D8?Od(zmvN#)$v{p9A$9Nl~_4emSW(B`2v@h|(%O)gfrV-!N?f)K0m;+jP7F{3== zLv8k;ZHB;d8@yF7AqeEmTI^H8& zE_vODGH?KO3ok4&XgA(F{FBTv8`P(h?P(a`g`pn&mQb!#BZk)FeAFyD9vMZA*!Aj=KG_YpZee!CyxQ$JZ9G`7D#stRs1{514`t}v*Tat=nevTfWF{QcFHc?h zSFdRV{HBMABVDvIx5=pK-AfRhA&%>pi;1>_|DM`R$FjMHsa8xpL2 z;BXl2sCu6AZXK#k9VgU1tE>fTJWF~S#n!XFq8hCV2DyDN9f! z#(s4z=U5=YyVYS$_U&J7Y+(+VOLhDOt4OQM6OeA1Lit&A!CZ({ZM+_ zt_ehFzN=ZvMh@y0NE8X2OgCaB)(e9=lLai|03E zN_-9CZqK8DvKPs0$tIFzi>@Ulk8LO&UFvXb%r!W$5rSjKdaiQ^PF3qx4E&YC( zzQ)ZrI%oD+x`jlTV&AgA0DxbGdAk4$PwrIgwm0KCL`O@TzYhy%Q0%q>aDn+9n{;dU z0fZ5SZ1^OiWwbq;Y7{YlgI~(Be;62z4=@&gwWOFAu-mKfbqZ zylO=n37m9+{Ar0&n=epazWMXNjEV_)Hb5f&6IKW8B1;iyORFD5&Aa^ABm*<{R~sbl zIq*}HNgwj6P1S51^F#>3{!Z-l;Upa5KwW_b{V+b1Kt!LxD02Z4Tj; z$m1Q$Bzh2@YB}%A+pr0v`Y9EoT=s~(aAEX(sNqhITsmPbau?`T?g3+{i|kjp<%ZET z_r~RHzm0lka%NF&J^thFamMK{wFExTG0EbT#2gw;3!Q)|JZ>wo{DM&(vK?6+4&nO` z<#+^3-gon*+Gj|0WQM1U^4m%)XS%w~U8E%jCH;OxOuX-4_ues9M3J0>$H7D`W!Vz; z7)3NHG#qH_^oU|c{fb@aNyIdH+or6btp=CNyRcli|5l<*bE~C|Jx=pePshwPQtZXw z*R1cITNuNZe28^E=trF11)Sq$rWuNpUjew|>NkWM>FMi#AVX5xL5U0Hh;+40ZULSpa1WQw$nhgQCcDF4+rDtq;~>l=uP@UIi_Lf+yT ztrb2$E8ziImnu>Y_u`mZExDDtj-E|J3wiE$eD+xh@Md#Wg&qWyJ~v)`4{DLK;W)=G zqySU}4gH`%-bMN7ncn3Sj&%_pIQ-B)MCl|c%)OY?I>RET$+`JBWhV4Uen~U@1>3G@ zOAucSZcu9UB^(q9pSlAuLf%`=aCLQ!(WYl$03hjY7eqy)Kif#w(9g!P_MXvQ$DswQ z>=%^D)f3h3z6t&Rkaz)3ED%8mZA8T15!gf?v@QU)wAS8m+$MrbWCkEuN*D1aYbATP zD2V^H_jNtSOEnFmYencK@+Ppl{mijH$GX8h6}Fq8Q0qD~Wv?iWGR5#)|3AiQpt*uy zBJ8Jt#kWV4F)=Y}$Fa>_EiV<{Vawe4bK5BNcN|-TRRIfITU!8+79$;QxXkj7gjzLV#BTU}mmQ*uuA>^NvIH%oi&Xc;2jED#OjBwZfh8ox@My+Q2OY!|h{3H3C>6>wZ-{JUpxm)MGMdY^D!{-juw2 zdG9g9{|u&dI8+CC6AE&2YQ&Md`aNyHQt14b#u^yNR;%k3$H#wkE&(FPZc$%EeyBWv zm5#khvhDK#<1yDwr1SSPC&$@7ny2Uvpm6&lL#c73NV92GsA3c_SpEK;p(eHhsbZSo zc%`}GxS*7Dw(uRrn6SGRkN)R{MzIjog)zdwlAG}ucU(**H4k_xFX-P}ImrvCRO zXR@UNW1Ah8-U2eDc4FXp%5y1TyiVyRohQs*nk@T47WiY_Mv`~ycmH14`OjiMU(HS- z;H$BxmL)ob9n7(#8B@5&`o#O&f6(P{W+~<3-W!tpH|Ta?l_t6g+Kr4719?TT2vwL= z6fye4|J@gNPN$(<+K8W)7J5!Yb#ZtYzy76=YpX6=8S3ar4!qv%6bqMq1WkVJ#Eu~m zQTP{o3V0z~69~a}t4OsEt58F7PdBCCq zxcY^;9F>FQ_I1}C1IHvmDM z;F2qeljxzzQTdwo9}wfeGqw8|PKf!k0|4xwoS1-4h|9cOD;Hf+a>DrEebg(_t+fN* zqs3wAOT$$5!y9S;FU0cgFmK4$=fW$1Xu5+_#Os9LZTI`%$Fll9Oz#efJOf;#{{szhYo9+xIB$1p|zms%tPiJ9~TE%JrygKIfsCXIzfQ zoyaW$oab!+KJ8HHCYXaSH4DH=hlJp`a&&=A57zyffobae4~5+Rv&VcrrNC+eOb|c| zvNG$<*%sf7MJ#>iP33Jv`|Uh3`kkqCCT4Jf!P0Ns3t%Evj1}zDS-X67ukQpr^Z>3Y z{g3vL^KXRq#E72(t5;rLZi)!(F)%R%n5mzA31oeZ@wW@}?=qJxKjujOWC9WO6}?#W zUr*;#t6}$!_SJTmzl)R6e!Js;er}ECMtR}K2EmZ+AjmKMV2DdYn$8Ju$%Wi>T5Whyc8uh5?MP&=sOofJ;qvb_;y_fV5X z?H#FlfO12?FMc9 z*tGz5b3!IEYM;Z;4OK}zj~Ae?YtB9^yx{EDw4A7%qhJu6VXduSAC|L^jdI(c<2jcV z2!&H6bFO8%^kB5mC3Ch!XTm7m$|N%#1JQ6if=XgLC)%jsI_a1I|7sa2-(ImwC@a^1~tPM&Hf zQSH+D{`isO$&7WW*afQT0JL%49V_}{Cc_TafZ8in%r}dQjy~!E8!Gkh0x09M3D>KK zOTQyg>yu6_Jvomk_%C81sHD!i5!b#+bI5zie~K72CnE+40{{OAtM z`gpfOyE z$&x%T|15mb9hsn&^`xWyz4NO%9W@pBdcg4pAzL6orc;bO=StLHpQ%%@bL~g=Os0FT zPg99_g$?!q5AK#7a^2gZOThoGU~OCACln(R36DiC?7Uwbltws`yYi;ryBHv3)Ec7W(@VscXU z!3^NYST|VW@nhnA^bMwX_Qv^R$<1xf$D(CQ7>ggAe61HsP?)%_mClmgRhFuh2`tRa z$aeMwU&N^U>CPnkVopbgGa$WNu)@TUu({{DM;8Ybm7NQ2v#d8l)6e+PNMR@T4t}4w zWB40xR#tgXx}fWJ+h&sHV;^t=W^E^>h{puK~N>Oc;S&PC>1uXCTT9isZ!W?{yoLr~neuWugBiw|f{v%` z*DisRs6^|sv9Po|&V02MA9lE;Y3SRksVMQ^T!6eljBy+dk47{MhCD?wF*CiRD$-y3 z9v}dCLcb0~Ow@u{D&a?HYa1Jv`BO1;wFZu5oZCfw7U=BQkj&KsaN^h(xD1&#`uS>g zHKQ?`j$cgyDkLAv#-~R@ zr(ry|bw{7jsu&~MofxE;aEah+A#HkM%wgS~^I4jUi#BzLk}#R#WC9kM=!%+_^Z?%8mg2?%w38bGN; zP}Cj8q^1>qFz~%N{3O7Lc^@zO-fD67FYH&pCF$jT51LUOvK_%)=??x!BUPl8t3}$A z;j6X;Wxms0Lddfu01o*uRhUsMr*G0sp2TB%Xk;YqQBJ(B8dwVjJ_qll0LIQiOKzS~ z4BcLF2GIMtUNRjhV4Bd{t{|3ahSaOP+o4=AfeHUPaDK%)O zosP)Q%HbTTtD)13;tY(`zh{VS|2?AA%M52duy@*ePj;Kbb+$+tABezN)$ z=y-MT+3v3Zd>PL23oLw1H8s&>^puEzq4e&E>Gl|7$6bK-(sy}45g-M*T%r-%oG9J_ z+Csetno6kzRL)MlTZx>WKkxPy^_(i}Z(<$2!yM-(4R zrj!-{j}LT^WDcOSoU>on`?RkR4EHB{BK;S1J$9##OnX77`f2A0)XssXp$PqI2^}=9 z%4Ylk{o1V00$YE3hy2=p{J_w6uR1xIY{w{CZQ#hbv(@2z?tDS)@)&}engR&Ik!^tK z-D8sYQi8l*Kq-n|)>?OlBTq{~F9y5Jz;&yVrA>%!YR%H^>B@~fG2cYmKkO|h3)Us1 z)+Kb)>dHqom&f~CDalqQ9x=`RNyxR`BkhVO1v!Q&1RpV*kHfOW-o%d|kSh;qZSBia zP#XB0xb>v30j%%27L@;JqtLKfQzd^v^lY=nmQLmU`Ukc~o1p^@HuU6-tD*?%+};Oe zz0wiBGgEEd72!VOmm`Hs?V)r=H!kFJQC2%YqpYs(dp#!*AN9EA{@Zj;?2*;f9{F$q z=N1Rp*WDNb##w4HPS5QFO%c)KGtzaVkton*uc35Y{)wfFI)4o3{LxWk4>QyLC7if3 zjPw}ZTWUA0qUC;OQ<|~TaQ$vlnr5!fag^8$Tq2vu))5=?p%vhn=9~BU?RN)Nh$4@i zsy%=S9U!V$oG10&K_<(#PCXjvPvL)ld*X|koL`UVuKQbGpO_oR13pvNr`fOxo=o&u_MrRi*TT7u zYIIvqi;<5g1zFltI8V=7#ZV^e)sxVm1^R{SeM~SKDJF(YQe1Eu#XD%KR3w|<5OqHn zLm%BxEjuSQAMASXmamPtJbn6fEv+PZclwn48os)4eQ>nKSity#SV}=b;UJOfXF^r& zD)n`p+3vWpUCSjsP;&Dl`tUHCtrt~z|Pv=IyANh8R-#xM-R02?! zyou#fc-M%< zkipUWJ_uEJ){FI8+P?3crtqMp-~N14Ext(fdB1&^Q3pKc?G|P4#M-J4KoRM-`VoDS z#{hz_ zWws`ni(W?N1n^8qc&xII3bVNjJVyQ_+(4EkZURaUrefSzNj&9ErhYPT61a zS*`~74v>MvJbT9wWM9*zA#xM~xfsjak4fe9m;`=Y3P$ayPQ2a)zTQO_>-eH;Tai=t znm*@3=dwxP^c~y5ykg+N#EoR%F%x#cimHkVPR~Wqy0v=yTy`E@d>2j^wVh!&K!mN% z5wHy@YayV8 zCEV#OOl&1ZMR6yB{AUS9!WToo2}JCCO4_7|+BMfV`cNtZF*#z0p>HL))4~&1Tfwd9 z70A88qWG@SSA$`sTxJ7^3wtW$USz`cYvyB}ZawhXv8nGUV&J2*JJ1EZ zwTgtLUPHu>qc_WEz<5VJgpu6_VGW4YG=TB66WI7z2zm*>uz{9V0?zxSV(nW??a)Kf z@IVH72=6)yO zA3uxRdroy#+&dmZ0LfW$;;|`B$7AD;u$HqK>qrfCX$6|r>+`ild}`5{<2ClA<~bAT z;CBkC{N?87^HJoxDanEx`|MhY)Iw)g(>kyuK|(z3we=Kx#IM~!a#NtrGY3ImC012& zW6So9gap^ZypUm}rA=^X+^CPrkF*1^6A>tm>|$I|Z>67wGM7P=vgObBX%gD&cws@gYai;^(f6uX7ToEFQ3ct6oJJj;K_5f|x#YMMj z^;{ddy?|B#$;5(|gBk2w)@V{7;1?d!0(}gStCZ9~DRvFF&;X{>;c+`dzFfSIba8d5 z%pXEP}kJn{Tcw{jAsiGN3 zp-dWrjgOB9WrZu9H%hjxY^&sgGvde!f4q=Rzl@Z_RxnXD{tzi6t60f43IK~Zu2fyh zpHuU{_Bb@{h$VO=ZT7URnnp50DhdEU%CECXVPOdXe5A5$`kx{jyJzDJ1(B{^zaB74 zE_Y{(`WBTwYVmRK@@jBxkWlq}-`?WB5Ie>GoF>k&v|$@+j+0(23Uk0L~p{gsWV#lK4-=-s}R?e2qMG4X72E z-M6nh>L4#FJ_kYoMc_VD$-w#fQ}E?6H6?;n_x!XGjr8qKnT3G1*(a`e+I9!Q13p*b zr5kpPbBF>(@V=xNqWhw#&o8jn{XhskebvNqQUzom-h|>#^Qi@FQ$dr5h`BsG8_j>f zDhe2zHSg$sxyjzN(Pf%m+o^p~{00si2Y7^64S)m!&Lha~`g87Fs<=620u5PO_G-4DgVaMxPKoX9B08REeO+S#X%TRlhxD~Q)eb$?d=?1>GK8KV3iDo8dch_`*ldDt!TkLM6jUs48$j ze&uCNCOy!^2QgvnzB#q1=r3y9iz<;L@}~o z9f(E@o_4s_bqpUw%!`LiVLU1SVI(`2&v7*FlC{jP9y(PnL&;TkY;7blYm&8G1xl?MMW3KoM%{*(LWV*B14_ z++hGYs{k)OeV3qlcbRG0-dS$Jz!y@kTrg61fxG$HBK7l>@{*SM_|fd9rYr9S^svxD z3xl=CQ9H4Lcfb0RC(&T9T}RdOC%*?RMRZSvtatlduPz*uap!d}uMa@z&d%!-tXZ!T zg;YM*kn96lLvI?c<2Xh}!`3BS)zMKPO4>A07*XmM$4_H3ke_X?a^$Q)iRYH{sbVGJh^kPikkF7l zjriE2VcxdUV*T3dBy$Lt+f-5_1bxCaXsMvCsm{mCD=5tYgYh?10Nklirlh$uI_=b= z%njDg^h z3YuKP31hTm?QCnaQ|SRmxn8qdpu>U%hIhq`hH)^=H$92c94h{(NPua~( z!=90lIBd-cxV^J}=-_qm-&}w|FgLM6?4*I=*}gY31by!8^)0K>Z4b0u3LZ^WK@C{h z#hk+rHqgvF$8C|+F|E!TE7g3f2Y?y(*(VjEmaH(UNL;%}w3O$Hi-&Mq8d+I|08LhY zB`dTmRd^EBZtj#;Li7HYbmQ;t)O~3Il-O@_+b%6gE|tHfq5|Ib)1NINQEy{ti3X^! zj5;gr$&J<-28RW`Vr3Q4_t2rH@%&w&sy(nl0fF>E5t_$=xKOdlzn zzGR-!nzE+Q)oWBOP-X+!iRHr8K0G3cDmp(AK*q=#86!)ykEcsu-X`j$x*oPdr8zLz zWQ5eOjV8Y={errddtrZfjwd{kqvA+1oUEWa*nKMq z33<&k$v<rDKkoy%ER!ia)wbkQe?A5V$ul)6iy%iI4Y#w;m{=PFNqa^sgEu;(#JV?kfe?gN zPp`L)bXO@POewfL$7vI|$!smAHC(;Tzhv?CKvY?lmvewYSHXRKs))k&_V&`IhV1D( zNj1+~Gjel3h`?%mk=CW`Tm#^d>|la=->dFCqR{u@mzyh!ymoUYI(Jr7pFAVEI4y-S z6>J+quDpGHn?*sV$%FH{_3-V&(zvL;DtJe|^odhLzLZFOH^leMFb0E1=rI97#Ui{H zpIV^8Wori^Bjbe_8yzGGt*>x283ueuFXu}fUs08dNHF4fDDxd{JV%Rm^-Rn$%w_b4 z?W}v#MQh@zw8>()X>aYplxHt1-?wky3Ztc^gSm1Qktd_$vWYFcR;v%B2juLh-DsvL zxAtc(Yd(<)*jUKo7#JuI@A~b^U_Wqnc1FYh#3CGjI6LBgf27l0f1|KGB~AZ0fsshD zKzzliNct245>=Wo5B7T)Y+dVc>O1xYBXya+>VFwPmjH zoR*f6QF`52Se~MObvcyIAbt<%q;VXTtw;g#2L>SVpRr)%H%ATKmbnJc-o$=32>lP> zQ#D_~<~&3{VU6v-^EXEG0=?AJM~Kiaj&z%9kSj?hgMO%zB`WcGhL) zG;+^1YyD&+pMVCnh+II8|87lkU7~Xbt(-Zobl6Rm9aT>*)U78Mwz%!E)~q2rIt&Ee zYrbmLg7(gI?dkzubxhz?7h&Zw-Kp90N;)0?Hyb@0M&)*N_NYF$vW%7?BJ(x zN;T0@eYfeHg}N2qq)P-Id5h~H9~~ER(LZwD*M6-?n+tpvir=jY7FO19m$~vEbz2?e^M=*i(F<2+v5K0#4&vfVXagPLPrvw$VXDM@1FO+tiP8m!cEUu6aMC4k{;BHe!IyCd&kq(B_J5dakn{Sy2nB7Vo$ogtyOCD$IoXMBqSs(_Ez>=+)NhRK3CXMqxPtwg@wm(_(9Wg zL>&kvXIjz#$I@X zE6vvAFae?Rz6u~VY(SRS^IKMH&2QO*k9WxJTTUx3HQ97rnzQRkNf`|FE7Tql2ng@; zwlQN}`ksTlfmR_zw6>-u8ou1lppfcwzQ+YSk|AOqz5rh%m)WU7Cfjk{aF=1cNg*99 zPxeUE(Rl^TByYiIG~9_PJ}$20a<>wKTFvAz{$L1(RTpab9>SM30ckzmZ`^-~gQF&7 zv{lGn*sU)hUsAu_W7?ar;L-~OaR&wh7HH(J(4XSs5mr5J5lvST%`_%?#!xJF4v+3eBn5MvH z7EYIDQ8T%0XI^74E9YI0v3pz0GsszSQc@k64!l<_!H#x6nBp)7o$g3pAB}Nweo)D= zhdG~PiXlG3-~_Z+XTy@Tn->RQ!z-UX!C+^Di^0}f+l5bIZ)0O(3_RDs3&`t8+L*Xj zpgPBDaJBptjM6Psws`ZV4ML4vxkucGI9^e_+TCc4;{XWP!51id`_?_{fmlN6Qv=V- zb}TTwQtax8BdHtazTkPDwxH#K3Rj?yHgP_4THB@bdoUI;_U@ME|lAsB5?biH>Pg zU)9ryEd|dR~#r>rDh-G39_5c>NnS=mhYYv{{IP z2}@h;J{2Cv0r#P=l9(3^>0Trq3z0o#P|!k7=S89}gV*efJy55nEiEn1W`^)>X7+Fr z(Yaw-%=@(9lbBYq7ll$!szpn-U`@yf6DA68C4YBs3v@gBv1J?eYG5kYuA5Pe?q*o4M8@8W4!rvsUQlR1gwa-LYG#&8 z(lCv=*e;yzKhmaf9-RmgJE&j=7OKN}P&mic@5`@Wg{3Waecy-CKKqulAUa@FjEvfH zEtcdIAK%$2I!Nbl*%76T#IEjc%j$>jp1_|b9)7ghS}uAZBc$rRz0zQWLf}b8P@ztL zw;moJ8xP);bl((?3+l5N*JcNcX6C(=+YY=tbX!@sUyR=E*_V@Q_wt9s;pmpbR_v8d zi2JQ@^Uo3u7`cR>ujSG_~A|1_6C1qV71~Mxt^_Sy+deArEudZ4lXYE^w55J zWd&IGWx#={um;`~qb*oLib&rwcoJ6sBSO{-CTXRJuqfB6a(jO9&+V{;HJU@Vp|q#e z+(-n%%J!{s{hQMFH)OY7(Y)U>{y=UX!l;5AAsXL+bzr%ck39IPaHBzb96nnk0d^L0n zBE58n(5}z4D%zkAdB-5t$salce|?vZw4>1-*=C(f3br0(Ztsy)2tb=ym{7@#*OE)NTm+16H8&P;3m zf>Q%O7dwt;6cqfsml%6l=&`z*nwnvm`>Ssaai_RV_V z<$;W=B1Vl4n&TdZ#~tIHL}7TBF}|;w4r`W`Csa~XCSBCG0qEt(%zVMY!67Ot%ES~x zaZ5Pq$Mzy|)#(#k;)YZ7{>DaPY^2{CD(Pl(PNB{i!^H$z5HbDRz84y1GF4id~hqi7T z!IYp;cSZDpQbD0<{tXgr)7PEbZZ~D+Xb8m6$46KIK*Rw)Fbxxv)eLd}RRROH)p7Qe zv}bNd0~me=xBYJ(n3IL!6XWCEYpQB$aod5n0*T?`?1aru3>Od(a8f?7`>l-Ob>nw8 zzdhDYmiJx`GZ$X*9`p!pS1~X!P*;C%3Me1&@gk~^qUN?x0(v*zzYi$L8{Bt8e?AH` z_sI))zvmlp_YibKh;!mn465WHa!}Lin4FyKr33ty)SFu`z|V8PeE9gxLP5QPdC7ZrttgpAz&fgdsUqeo}Q$FaEJ z`m0GvK^zHSLN`xm=sG*yG4|@-9|h*p)g|?x_esmh$Y^K~?621S$1OVLu0iCD7MytG zLVU;|yxiPMbhko^QA(S51=t9yDPX1;&9~$ko6{7ikyu=++rRa~mUPFg6TrCbA#||@ z1U$l^0`)m>%M#dMDXF0UOeIe50@z3L&Z&832ZA8M`aO&`pmObV+4E>L26mPE zcErV;)nBbmO>^8M@hSHQIx!E)Zf7Csl+&JqKp++uKmKP1jP-}Lx|OjBPIq2ObdNE- z|8FiJ6T|D?ss1-fD$kP$$Ti7;Z?evRC_9UL9MfCkwTwBX;9{zNHvz){YfK#oTKoTy9uPU$W1v)60M zPkDOXW0RA&)&qz|0=|B|(3G|$hSzGHi%YJkZi!Jb2jqcn>Z{i?u?k%DKrP$m`F4iM0AZ@uHpP2Y9ARvjX z`|s}zJ~#~l`MjW@2d86pr%H|EAJWF??hVll0UeMSo33L#a>v?#50yi!juZ@u6pY)B zML%Md#5XTqy!h`|PM3z7nw_X#kX6BbHAr)7X?1r&kh#&i#1ZY8n}l$wXpoPGul>cc~aVjAiD zm3AwM@#^EKrz^S%TDr*T2Kl^-yzy%6Ko{s~cs1J5g-PiA7*7`{HjNkQy-*&? zgMg!BH9t1;*XCcEn3&PgbsWq%f85wdIiigG{rzoZ?O^5RvjfeaGG9bLS+WW+EhSlq ze&)bgZw50mw3#kh&!`{lCfa|r3fmL%sKcFB_cQk zMk<`)ba<{#U8Dlj&x@%VBD%in*6hW2B9O>#Pc;pLB?P05JDxm4P}p?2HzYOX&h@nd zeO#<#=ROJxpIQ}+_(lM%%8<93h6d2>2>pbj`f_CUWlyTH^zNoMFdZG%l~Q2cT)f$8 zjE$irP|xI5y!d$aN;A3Okg%w{HNto}$&-1>W+p|ta(=g$$HnKOA;A$19uwTYzxq@K z2o!b|#a^1`Dv;%w(S80#RwMf|DmJfz{ks4UEs&7=eD!5io~XC%1!nabHV)3ihYyv0 zW5&ipq1F>cv)mcrAA1emvY?ihCEs5Z{W3URMJ9m}IIHW#g312bb~}7_@x|GZq#`d} zJ+_sMlUQfnWIxvpJ!agssC0SZ=}yq=+ho=}V@(hv{c&zv4KZ5ftRU72Qxp126r?vyuV!D! zL-wwSgU8x8>yyZ!vsl*z{W8RHxK+B7g!Jn4*q8|uJwwqE<_(VIW`LYnrrTP&UuZkV ziOcQzlTy*oLwWB<+9+<2No-7=)M~~z3fAEah@pi=kQdoPY3WrsX%amh-D#Yph)K+y z%h(Imn6Q|UiX&r5neQ)tb7D2#32cf3t=7dwKU9YV!z|=K^g#9~cFmHCW8$Q))#i-! zzv8?0qBtX&4Jq zG*00x3OS29T`2R^HSxH(9A%g_c->o~)@Z=Vi#=r$MnM(Z5t-oo$=wcGW|?inJHsdU__?si>*%uQo=vk+5KWZ+u`D9xLnwa#&?W(!Rd_6np7C?xrK|15xY6bH(?YoQio@5$sNE=WP`99 zGn&!Tf9w08l+y+}IEX^qJt9&9MWmcs0Li0km8Rs?qNdT7k#dN#HBMo=s7edYCL@Tw zKq94UxHoi@#HUmWV1^~m~Nf|ke~{( zAqkuOjsp5>Dyq7C7H`0k_uz2cHDylnq^0;{b8td}BxSvq%Uv(E=T;}@5o8*X?t)JAXysIo zkKZg~#`k@aO=G#z?aO@kh4)L*o%4sAw@e&E#$5p+(EHE}{(d2SwCF0%tQ#X;Y^+-D zxL~r^r$!O~ZDq;#rty1Hy0-a*+fSg5!)}LX7Cs6KB?^eg@mZSHaXb0y=DL6#h^35A;4~RKeAajm!O#I5eRlIT)`Qn4 zma6nsUIX-h&U?F=yL#EHym6$om>Gg#A?e$B4_}z?q(fJxFR0SgqHOV})9G?dD=Y|E zttYseyN#k*E%{(BV_tr@SIt*&zDG5-224OwQLX+GSI6I}Tm+^776ITx3R zh7psTZ5q{Iud&~&WpCsU>o8i{FifarRgLDq=5d|+C<0X$&;4VjK(DM_(8Mz2uIJv|%0oi%(4+G9YMFri0aN6TZ8Ru#htz|ju zIt$T0wM~oKpH}^3`Q$>oYLZz^#Ko9WP$*;z&VX4#>V6E@5I`224CGEZ9a7h?SttNJe zjM+1DsotG(P)hQ&GiD|-3* z{T#QN`%s-E|8Eh30)Dy(bz2(>P7lA-$nbFal-fNe)Tz zq%pAsYnBF}9p!u$*&ov4$E|A_ zn629SEkoO1rTM)cgFCI-C-%D18;5>lIDQc8)^AoUwP8q;q-wqxJ_+ySE)sJ~)w3RF zi*FNPGKNy-&k)CVb;gHeM^xo~)*G#25?B6RVZ^DYtevxc7ivJ*878AzDigJ}u|d8} zylN55bRB(O2v_UZx%c|@Yo+(%1nu2@PoFO1;DmDXO>6kap4QHu7W5Q``HD1D6zehk zG^lLnd@j(vhwTg>2!1`t8^v5mJjp&$(`5T*KYv(l{CDAc9EEGK2A&$Z_RIO50a)1) z3Sj`+YKJ;&^hX6kr+b!Okn6oi){tutNMc96d-qmtJu%u7nqB2{5)>Dg>Az+vC6!F^ z8u4T#Ptii@<405V`1LOrbuCVBsDz>|_3~{sGjbD6tatVdr7d&-3pXO3(i}meXuiTo z@7bDt?NwUn_0qae`&7)8b> zW8>KMyTK%D#odlCbrr$>fa8-8q#S`Y%apmDQ=T;vK_ynuA*IJ;-)Se*u$OJ5>DgN& ze<0(;vQ_G1N8-&D|Bo7{nn28Hy2MRzQk4{WDmgM!zZG<}?)Px?{i`9No0Nm!e$KRk zW=73ed)SenBwi!Gr#FRAG-ISC<2%6Jpu3DRX(wshbPW23cVJ^BpAop@5*;=(_ol=d zy73mc&yJr2{aT|&7#>2xYmz|~08Idmm*KFh_g2BjI+Mw2it^eC01y5?Eq?5f>@s(- z>^Q9(4L6S>wy3_`!PijAYA*>lJCLm{tn4QyUFS#xvu~@3=|(}|moyjFg1V7T=x(V1 zasSxNpM{3{)vzcNZvIzNV)7<(KpGCGx0Px4V7n%sOCe$euw1l`YWAule*ig=v|J7v z%M8YL^m@irxb!O34imt(($FZN#+%Z>9uF-rbCPdPQXmm>`kiZwg-==S=1*31vqBbp zs)foSJFN-(Ll6zjO@bTOBtRkP1BOQw%z2__J1D?+)+6%S z+PFNZMh@d6hjOOSf<98PgrVI{5Kb% zIWWj)Q&2VWPkbKWSg)-U(|4T5))#~T%@yNi#p)f0<6Tn}B}ej}H475ccEI`d^QSmq z3V8SmnkH(pG(?2Y9uRuU5WNyoAfhF0Dsa`9J=3&p z&Wff-S-RPc5u;T68BT`gVyE64{N*0k&@H}nrc-YH5|=;0rODp$KGwgcqLVX=2Z9bo zp@Lao4Ps`h~vk`CM@>=SbyH#Xwy9*2a68R*s#pFhlT>+n!Qy81dckR8Q{mz z3UUl9muU8LM?XI4Di4c2J>}%9b>iHRqcniNlKP=Bi}#~pd`y@Lhz)-HaC+lplrJCJ zsbDkTP&uqbIa+tL7dV$(ecu*{2y6u1-?20Y%)Z<6I4G%lUDTNa70iu|f!YrM%{T&d zbbP1h=cQ1nhDcXWVUo50U|0HQk}7$G_!I{wFD_buC}oS_iwp(}xvD~~rD{i`Xfe#j zVDDMuWr^S?%2Prnf@NfP0WEoJOXjd0P4mojV6J-MOfHe*saqv%+345J5q3f)s)6tW zDYlKhDq&WCUmyM8Hm!m&6kfHIm*~YZgDo~YS7BRQa7V8DHPBhEo+cLDL;Eduaighw z#dalXdz(yJ{72TywH)5;Oej1@f`=f#YgtXV0?ISPv%{O@^rTy#*SFrdFMmm4nMgI_ zC8L?6bU{&*j3*D4K%sL?l=L&E;DfFuMxAfb@42;EyuO8gs9+bKci1l|qM$ZhFi9*- z>M^+X==Yi)u4WC##QNvnJ*#~OHRO=p@2;4;R>jdMi&}-^AZ!<7*a^j$-2?NNSSngt z`Ax*rG%;u(Igv*#%G7PzQ}%OO0O)S}21%ri!xSz&9m-#^%EVyeH!i48K;$UG1%7j259Bt0crAp1} z21%9WZ!>ZD)dP5g#n#kG*%(=6Nd=`6=ze!9m^4g@7E5Tb%5qD%6Yz}lao3y>Zkzq0 zy%XPKA@s$dall`GQSe0y%Ed8w)y>!Vhc0Uo)OCVSty4lW=Mi}kw4{N`y&DO&wSfDe4OjOuZ%2vMk;l?VV zl!Tz`a$R6Y;9ldI?R*XM^XDI@qQq~!L^f4s8ppaOc29S!09)|mAhAGwl|-bawcN}{VX$4L_cXaUp(W>pOu@OrkH|TP?4*6;O&DYR zd)^qmog4azsV+eqSu-76TM)5~6@`n4b`1OU&Op;eS zYqNt50dY#CI+#jE5i2_B1z*XMz}1bbfI5?nfWzj0}JY> zzfJ$9P{fxEm!C<_J<~4{sBRB2AL6oS0GatLC5CK2+Na6i^2X}+1WUfE5_4=<6+vi&){F7?R@SlxJFmnh_~MSn zJ34ad-$Byo6Nny_+S3j6^s~oV@G)jW*1wE>@}~<;1KiftQU*oSUg%l4h-%{4m~x>} z(PE)hV^2aHi~Noi^o~~b&+!O171;C>&)(S1$V;Q%GuB!6NNO&lk4`bRq|=B2aB1;q zq=DqPiu$(-ujkuW?)UdcXtYk%&Q@GC^>axpE^!BH^jH_Q7^V9m5>sGpLHo3TV%{IChWlOdjjZw~>iKWNzHFxjl0mj9!fSQ!`w`zd zb+CX~YW-v=s77$UGE5(X$?LVTj2`Wks(fV2>AYk|;*GBog^Pc1$vu3tjs1_TsA zq*WMFKsn25juHk)aLtn=6I&t7LaB$Z?~g`#SdFR4AtG)4zTr(RPQxkSBF;Sbmn^2DeYRheyloboX>*;vf9NUhw-2Z*GsnW_DPl)Q5TmyWxy1B!1F||kTP=N zf(9wa(87g0zE5l>E5z+Q&oQBtg`*K%ij>?FyF>Cuv@EK8`NGuN>!+nOt~)~cn@N^C zT0SxUlQzf^<=^WM9bWwBR$V{ISWqY~_}n>vrd7N|x;RxvgT76zr@e{~9xOA-TvRx! zN}SZSZ%R>OYM$IZ(TkdM;I=9m>O`dCSoQvckZIT(p|AJeVhpZ%JTgXg z60f*4TJQdg%?#)@eHLY|5w*KjMb!mx-$|&t^xIqtesgnX(AL$HD@oa>FS-I zchG7=6mMs4-K_aMG_Za3ky|L~-B3bDK>wXqyTUi-z8`i-4V|Z+-^)T5#rm()2pUWv zb^H@=QB$e36+xF0ff*0*?0+kZPmw747Cqf)pYdNP3p_TtAirw6H=hmu!<_25+veve zq+4645f)Zp&`>agZ`iN3|8=MN$gt(KG}Ty1_2;!SyJAB5A45#vu-CAEL2&S-cffEp zP&|*UBCKLd%S+zN(Ne|t9$M;u&1=xM--?WWz8*NAljcPT4VWdOK z%GOkHiM0Qe^$7u5NqBJJ^&tA~8n%#AbZul) zs70Ebomq_F-JRD?4Hnb2y~ABZ{`m%|C!H%;LQjA6_F!^i)~@=Z68Kprr{F z*gjR~4u~o#atu*Da{mIt?$M2;`cZx^K{=Rz*>8`O>0{aQ?D)`7s<*F9=-7*5oBne~ zvBTE59&1+YoBgDECL8Ar_)3p%IVjcp`xcshQ}T~xffGdAVrh|Zh;yKPEWF|Se~2}B zp}j%nbxkU{#eT)XtGO<-576dgZvGXm=|k`9Eg^#dRa1s?2;MCVz{!#RfQ&q;f|Y*j zMvO2Ai2`rbA1wq{mSw z?)AFg`tPFifkpQl;o)>LSDLie{}=cdt&VoCD{Z3GY=`<9@Ub|xcg|NV$9{IXmsv(v zCQOD_p@_&DFx^^vf2i5o``^dVfXC?YH=*ll`@eX5yI<4KyI5>J5H*CJG8pcC@yot0 zxfwg!)M!eA6QXbeuzNnWyAFOrn{CO1RW^GGD%lD{ z>#T0h?H+P3q6>*N9BN-5X!5eiFIH4NXHBm^w#D?_Z85wF#Yi$Tfy&(67px2~ zm9{LQzJ;fUfEB;FpAu69uXXr*-_UUs<2FzaBoW1U@L~xa79w+6CvCRbB*&OoyA?5g zt8VE?jVWy(ED$AfJhoF#t#~|*XRBKrW`90fiD@VQMIzswQ|u}~%a;*t`&*&bB}_nR z>BeM{?;b7ZbozJXp+y1N{Z#kkIY>^9cTAf9|MUU~uKv~o+`2uIULp0OP0^cz{1L1+ zE5By>B>d8(GyU~kNieKoXxQ9kyX}$RcE@hnYS^r^x@bT|CdF*^DmqK(>8pZ;N43>oT z?$~{3u!}ilkVmtj9#vi`aQY z4?}Co*H_LbXa(W;BMBa+FBTWK%WI-3+A}LrM7^v9x%wkDNcz;|_Hb-NA%=3Vj*!|F zg*t)yvk&cEa=j*gSa_UZo+%#%Z+vR}1CghE(&eV1P(PWmbwLf!%}JlV=|(9>Z6&1$ zs>&)UWo3JL`JIt2Lr7fN6?Mr~F&w_D=;Jn|_G$6d9ttaTPlLLW84mIM8ru=b%6zV> zs(N#*(;XXY7iZL|y{%E+vo@5%4%=OMsWG2jyi51|U1z4JJq4FWGO{|XthO#LFX4X?+RKd3dH@qI z;?k~LUCZh1WeGXnn*NrtF@{PPahpGf6OCDYDWr4UfqGyOTwgpx?1MGFJi%r2+JXz@ zDkc^3IWsZS^RW5!K}ZS^58&g_=sTqxR$)vY$2$br*kPfeXM>8~uN+Yoi&71FU z$;a5Z+qL8f`)}H;eFx>1RTaNK37l+;xG_mt@g-j@vnv^l*5%aQD{t~iHMyTWkXnPf`d^Qg-bn}n@) z9i!JhZY{KWHWoctd8OahZ5WRzVL8D^*yp6k<}hB}Y(!?! zFqp;k1D}+WfsRfx?fUbPcsX0s$KJIqV=b1qE9vmxElejd&F4OU(|3y4F19RgqQ{J= zkx`aqgYj@I8@<94*ApIFT*#8A@`QjczCax6Q;&<;T?WIe$UWDb?A6|MM!*6fiNb2z(3StYJ7@Me9Mn`|n_OAg@TRwC~RXmG) ze5CZD8EVfd)sLy2v%*BoHB+g2OlHkfz;&$=tz~KIVE}hhVE^%A$ETZwNhw5yrn7`n z56!9F${bi_-Q8QBIT2xCX0ARTvZsxzjktq@1?78e()oW}sTc%#=sm^h&G8{f8->mLBqM2{trK(JOr{{wJ+ehXAi-G!3!=wAJ@e=N$yv-fmS*zHIwwm%^$ zs#2G&pY9Vn=P1|NbP5dg|4x;V_=K8X(-CyGg2IyX;RRite{gVcD7YGO5Fx00(ri$Uc`m_d=tPPJF{af}SlsHjx5U8~N+j~G9C{D>cVJ^@*eqbZ~v zb3I4UA=0R{##MXwwSJ8`gqBxpND3ih#FN|_lxImP8JnXyAn3U~vDrV?SG)YYn*S;? zNwxoC$G(>5D6d(tVAFTgF-mT*jmnoc<^>D0teo6OgY7Iujq%aZ4Mji^qP{v4-`tHC z?7k$Mv}IjQf6mOT`$b(F{^GJIlCQQ9-C%7vwdyKUZ`Z4n@=#8vv= ziw9ktV$G%StP#Ri^6WfLwr5J58!{I^AbT3_#_97rb-r^xd-V9Rd#m%fT;fZGEvM2~ zuQoT|?KNRKJ0nr2K+l)e5oR^^SdaGMNQW${dT}Pk8HofuQ60tDB+ZBv-KUtPgUaA~ zEet3+#>t=2(Z%oK)qGr41370ah7&{&u|t3OW!2v9n=1cA+m*!KSWQ8w9TbYuND3&L z;8xpPITvR;UD4&ToEw^il+p#sc|fpqJ&eO@^+*=x>X`f_GST|VrSDLdV-lt%dZq#r?wg1XvG>Cd_b=B*n$*wCo&2v+`i)gR;Bvr$4AU21D7}#LZ z(L?x|jbJU7ClKul+Vt12UyEGs6NH3>sBbmFTue}dc~)vam}JL8x={5)&g*Zt_Ie4Z zgiTN4=20n;kru6L(qKg^(n?D98fwd3x2N>iDexS* z<#C8N9!kw4NuWQ^t(6f+%Z1qR+7Ur z0C<5*6abUPz{Du3*j%D#Hhw-&dL^Dojpx8%gwei)ykZG(-<8RJAAfiuHiUVkGF2 zPx9{DU)t6!)Y%(J6=`xPm^M{y!@h&2JRaUbJLLDx0Yv!+Y((|&T$uD23VvGu(e{Cq z^J9yU>rCncYCG500NEhiLY<%Gqe~VOFF+TTEDW~y3dJk&~AZx6&M_iE7+e6u8Fbbb{Q41g8*7nfwp%MAQn8t>F)WMsULq6|Ab?;fsguxvdh?hrhz?l7TqFxvW=b}4h9TpL1r z$kX`n*==s0{j_D{rmpTE)2OVXLqiP;3r|hjz95f#_YAp<6VQX6Krs z76m`g`aBdIlpxL%0}~VRUw#d@b33SS)f{*Uv%=F1R9N|A8<8#m*JNf*JL!h;S`>lTPPf#|9@b7!2CGL_&f%Jz2mb#-?a6cvqU4ICVNYrfbiK%oNX z)1OXm)3YlGpO;);Eq|t-XtM9hV`eHcPFGC(aq3-KWkpE-2y&J$k+DKd46VhPj4!h? z&U-7$tO(S^%NeDm(vsaj!o$B?ucUgCcq0gK*29$Zi(^6{1t{zm)|yatSQ7*8FknLRVM+3oMvM}Vbj~SN)1I# zGY=oYqy`me7KDy&eMWkFx^gW`aZEx|(sQrLPIiF7XbgV67y~J3KDolmk_!6=56^2O zCWnx&rn^RWk1O?N3YyvMjdyxD1qp4s<2OcMUc<2l9E!ov4xKhDh-eq zt6VO#v6oE#jN8>pv%1hW%ZWHGN6uX`*7`uRvn{n#b&JEw1gb*=J%;H-LdM4T_Yi)>hF9a;2v$k=suSQwc4~B=uC93`d$Ku3)zjGE)t<3t94UTm{mo_VyPID4EeVQ;AQfm70e8M~?k#t1BxcME5Bo zUMxY*lld+ia_nC8clYtd#9Rge{p`1%HR%XOO+_kgbXX2g1Pft7x9ebiv%RjEXYwJ- z)5x{J(4=x*@3!%>z(VKg{Lao-SyF`cyju@R;Sw;)aH9o%8bZb*SC>!;B_3 zh`bIDja7~_Kf78>(k;R_E6-|ISJ>aD&|C(UaIC2e)k8XgW6Q@_?4U%->$Lv0BTI=G zOXh37+t*EMwR_&EB_NXP+DxfG5xiPfh2>@d(f=OiMiA|}8j{QBx|7X>DIuH@PkuMe zsbAl9y}D5jmy4^t2s%h!QtyJQDA2K@J&o=%2{1A;;7shK5>L{8s1g`R1x= zizv0~&c+_st8Gz^&(?7qOe+jjKgwg}CQwz?t+zSv13ZRQ{uq5_J{v=PaoZyC ztO8rEJ}6l^rz3UEKR`jpN$kl4q_UuyZWbgCWYn}cmGwlUeK2<`2eb)|`!)q!QzKBy zz<{bNaXDA#tLn>qVf_dERfQgKVqdCT9n%plRSDnb*4FUI2p3>q>1;WT>s8M8D_-b- zP*@Z4-Q+WuQo}~_3Sp@~%)Kb^UmP!%eOgQ)e>!lUicV|mXxlLI^zsaK%edp<{?;OUlk4gtgZdIl z-A^Up{b6a94I+Hhi33iWc489n1q7jc{P5RnOlY1$s(E$8ogl(q8KOFmz1glPItn2d zz06T^Fg7@jHE8rNa)q-rsKS z>F)mG=Xc&-pr?{E+{Rk1{6%G}K(x9V@Irw<4_?>+apjDuW{LQrqqCsvJk;mOOYu z-p`GYW>!+6Pizsd3xsbXbB{i8uZg9-gV|buj}T0IcoNh^A=mY5tiw}<#IrSSAx%}9 zf11^H`9W}M*srsife{vF(cRQEQbh$YFQc<>2j6hID9w_2)SH+kB_%sgpZQ?{A0YXv zm88T(ph<$fZn&B%0xokDy;b=&HFb4#N7eyi!8%r3o0(ae*2D6>sNu#~Zj11=A6hTi z9m9)7<>X{@x~{M6_NyrC7Z*|buD$9G5H9C#+A~Mau4w5;5bZyGT{9JDJ(-z{r>8Xw z1!izEU`z7+SF5~;0jvNHw=<8BdqvBs77!WNn*ys0_e_hUa2oo(f8u?pKs?84a8O4T zV97F$|JjkX_U+XW0p-=&AzL@3r4Emrt=SsB+JxREeRemGoQ!NZoZ<#H46G^J16(b} zdhz3TDq_iFulNrUO=%^M0X#65GSwM_+;`j=O7MN;OLNmfPS-q)2`Q9>$)2K|*^NqRl4gWn-sc&po@7A?~GKPeti1iH? z0U2n>co*cA@A;et7iZtkKdTukW(5(BA6Q{F{`TK%x(0Wg_ex5@ImuvVJW(}_TEMh_ z_ENXXmYnNDjj;n$U}UGw)^Q5Y%#W9~KG)t}=cXoW4f|sV@Uf1648;EP0}j9P3l||3 za3A?mj(l2P?l@+1`eAl@5~xoIS(~mGI>4>p!h-RDSo3-RXj)0V({Y>MJ^Tnw6HinI zjetvK1v9gKR&lVDhG_Yf-ofgd@#c$7D{8MYI$>7Zu|FGqJYS3ZeV4DK!YSu!&U)xV zOh!5%E-ZMB$Pz9JAM~Upb{84qg;8-0?Xo>Y^`|g=lNnK`dCCd)9_7Yh-XEj#! z18k&>!p}_Zdl})tj1eW~=y*trez~-ySXFWFctW$NkZdC+iTCCzs-D#Z4K!U@t{Zwq zc=IzRdh)1>XbiVWNX>zpLPsbiEVVD*Wj598+;wO6{7>^0O+k{6sHl;+xVm$tWgYj6 z7fyr7@tcxdM&hIu%Lo2}&rLnEUYSO6{qTt3ui^gg`JT_;(&pyohN+2(C*%~!La&FtXQrX$aoJnYWgp!_0rol|jMvu?snh$6wL`FU& zo2Ku(Y%5tB-D z16-G#@ptZ>cA{!@cwZ`EqIukcFs{&|^rGTCs-DwFkDY(#(_TZh z40YC8I>?@)w#C`H3L|mKu7StU-&p7&$*tJze zy&CTOobL*VTseUzBR6mz;?mSS*%+4krth_q;LXq;Mum*RYPy~(t7d0ch>eMpok)m| z{|Ji8-23ND+)-$IQ$=vC<1qwZt((L9=TV+JvE)lAWK7(>`|CcFIpxjMby+nvS`NIy z)0xj{=;fcd_Ks@i>kZQ|r@x(|C&9RTH$b;~Pp{6}&3aC2O%vTnGW23SYIJmzi@o)k z-#yEe-NL(v73e>lu9vn-g%xT7KRAH|HyNl-m#fK%d;;fw;1*n2 zx6)?$z@~j9n9uEQP09Y(&6Fj&d9%^H79zFyeA2ZMcMO2juy zAsv{K8vES_g;lL%rt=&Eb^mz~P{00@kdVOG8fb~;{!e|3fIJN{uYJE)12qgZvb7KA zWr!?GwJf(bEBlBkh}IErD#do{wh(iJeXHq&k%fH{#8N_mn{KJAbd5r~TtNxLc?p}Z z`N>LD<*hAtmELC`^2uHlOpT~3%IilJYT7Vo6s~^UIX2ofUI~4cADoy`3I+@SeR4Qz zjOWvUD57cSGkkPlqQPBL-bk|=y0w?roA7{eeouv_nlJ!xO(i8fiDl2VNYfJUZ3{cI z6N;WhM@0==l3Lz2s1%+{i-^qS(uIs^8{5w?VafA2;TLZD88{vXEhjGNWVj2Irj+!i z+~+eitHnhA?WZ2n%Ua7NEUP2dt*Sd993GOqiOat5=Nm>k4)dRZ0aM8PN7`5~=8ONKE>!%rGj1{=}XhAJ8J-IglDz(~O^Tz8u)Gs%r7| z1#Tp!u&h%pl8hU~ZymY*jB3Wv!SFf}wJM&+Um4Q4fQeyTo0tUjrl56>%**YJx0mWb)B{g;0>Z&P8$mC=0FbhSW zXN2!TyG@2_YGfof;q>gR`@Uzv{eJ=QGg??OAJge4gQbOHR68B)^5U|hV!0&)dk2s4 zJIPfQY`*XnYgL#mO`Wgizt#+Xx@Y-UoPvT4z-5$)NyaKFw#o(*bEQmXaX@mM6}ep3 z)!*N5_(e(VmR#WL8oBHsYS{cQ`2mRsGt5R1Kbhy??els2#mCpjBTK4wna72wFw!04 z2jCEcBNsvSwVPNO*h-BF6I$NuHWU?&^3OcDHa$};cj2~IZ)O7u`pD}u)Y%X{$hTm< zL!`YEVkw^bXy=hTh9n)xPUk--`wtUi+~}vjL@9r#+TlJp)hhfBAktf6Oka3{M$ptn5 zT#Tkq+vvD1=KToF!3V{!nUI7tb6^t?urV>=RQ*dT5>?dD)z#J4rz9sYa?7;P3;js+ z*YbwWq>~r%;Ap=iZKB3L%6|D9v0bW&W9~gPO2+@VfQS+plLzqQNF~9xW7R<0-WeK5 zM@t(Kc)Q&PvP_JPY3b+^3;n06!nPRZD<~C-aE_F2HRc-)3`bJ|PR#ei{bs@U6o>QS)Gu>W2?JR5KKVsq zuy%W{X6jb9k?&HQQ=DwK4O8=(=Y5=NP11j{G4Ts>*8gV|?dZt}&RuuTaYW~6vc~<< z`_AGPj3hU2<(vA(VW6R*VPZlHL80bYE0Zs|RpaXl0%d;5*ekgHr^Z)UDSVFYV3iX; z^a0~7>n>rRi_y0U5_BWeQMC?}k*(nh;pcsphs-q8v$1Kaf5SKpLD+bJCN1$=ZFKHK zP`N>c7F(5ZWUp$gXO&QLAuujcSRR9XJH&m~Xlo9Um$+Hxld{B7!Y9BPVk+A2dVR_6L# zc~yYPb<-=Yot1;zNDn^&icNJ#HP$qs)n;dB&n&({$HCt(*FzV(0~*MT3il^douWX# z#p9>LsT{-N(l~L7q)o>qnSB~nkC5A)&U1`4m+q0uHI?CH>Q^k*aZr-gU3S1z2v&|G zO-o7@=7(G$b6~#h|Ks)PzCfU3f+j*_|4X%nxIu@WaHw110&PrFzfeWT`;}7FZ z5Chux+1tCOZ+;p;fNoz`CJ^xZ^5y82OS!ZZdftp)6jO$%-I5H^)HAODnTWHt_D~l@ zEmwOoG_Z;@wti6#eY6a2TC$)gb#J!0YTg@`^Je-Kp|;NNI?LgB$fb!_>neWLcx;$? zV^T2_uG_oZEenqxXY-b0E7*6CHa*u>lln*MHYh9U^^;M?I6-Zpei$G1gCsJ<9F&Hi z2yJkd?L2S-j?Fsfo~V>;-8eqxh~vMjcxx^+o957!Y6uHYxNZ&YbwcgUZrhzo3rsX{ zR%y4DUh9;QZ*4E?{|~HR^#!hl_aUiYplnoq;&}0tAa$&HU0~rN$r2 z>ClYsWw_@3O0JWQWJsb!k_)@+X!`EN$mio+E1@N8E@QyQqU=R}%SaTk$agtr>ap#q z%l(i@|1t9Rp!!N9HeH9_Frd+UR^q?gexyb(oi{6+Z_q;IR+v}CSWv%e(5N)5A$TCS zTAQVLy+24ZmDz?r)u3;0<*AZ9EaCvtX&q)Y{QXhLbE8*l%`Bt;ripab3U{I1^`TS> zB45YU65>L#Um*Gf+Vm=TeUFZOj~KHDAE_$kdz~5Z5hJZ#jFh52Ke{Sma`#51AY!cw z!UbP;{Nx0&4lTXoqXFrN^84yKvQcVX82#XtbX=f2NXG{xWNyMZpj(&4 ztD2KRV0nya_PW@oSEJ9`>3*$yzhSQ}C{E7jXlzeU^RJWaal+Z3H_#8cLJg-)&%)@m z?X50w0Ab=t6h@cT&Z)++oS2&zmOE;VdITZ;*V0BGZkCoSy)A6xENq;HR)N3CeDsrA zWMBwqcS$k1`B$UFFj&;xv(u~V;ZzF?4A;&^St<;C_6lz&F+gC_| zd`M}>+S;O8IG;I2BIVDdvqawQxk=4`gz=_6Gl~vSgZ}f z94p&iVCiOQR^-tq=o47FqHBcyhH#jBEq$sCVaxRg*)k+;O?}ZrWTC`Z_i{2Zw4P-YD89E+f;858f8Ke`2r;2C#45T-2i?Lnm+5A%Da6 zQW;H1|NZ-nEKW}Fbq$-nQ-}h-S&1$ zGxpJ7Grvj9MtWI0BJJ>W$&4S13rW6-jk$L&xF#G<4C+at@B(Tj*YgMJm?_hC3}~MQ zGFqiTexlvu42{G6MJaI7>6;zSE{B@H^*Ze`LsacSKQl(r|7kuV^zsaEl4aPK`npgM zMIScY5c#bDNLiP&t9lFT*TRb61;DCW|LXWWH{b5OPl%qK{p@0pV!H;0a0LSl6_WU+ zx1I>?Yhet?*363J*E=q?;;jdufI(2fVWv_}%FGu~GxCn7a;l}t;Kk=wHby_ExH|xQ z+x}Eq+*3~kvFT;SV-2KNNnDOou`mJSiFki!{H_Ij3c(S3bppVOIPBVV=6TWJFfs6x ztZ!&Z@!@#M9_CzgwVw)ukh#4Vq0!wHqYjQ)z0x7&Jz>cM)}zGVWdi_FCJ@$PxfWJT zeAyS{{LerC3=j}5wcEFSIde2-)WPCt48hkomr9OdFS3Fsvv~mf{v!sp`FX%tN^(i9T^-=7Ud64P zyWEiG%6G_`Zum0eaU4#~gIdHjGhJJjdH2$0^Y?l_L$8+tyDy**C?vidJ6mpQTJyAi zOqA-qxOdGN^J-MvNxLUm$N{l+8XVO#>#oQhw`0lcCjIMso9t|~E2kg}z=<>`Q_7cJ z*qTw22Hu~eP9{c1DqJpe0T$MEA3*0)_Z1thciWyl`&k9yP)OA|JPZ8t*=x8oMXI@kHq=+oozG7du~PFJN37CyrFkDU zdf0UIpwo1uT0dAjR1<)YigzBd8fTPUu{(?g6`4?p-y;}ErVMXq`BqMw7 z_%aojNtq*5?OdPI$Yo`D)#r47^Wx$cT?mAZ-x2_Oo$u56)U~xMFLq+~_w92lN2{}U z#E`9ueTKb1gL7jozB zJCfTbu0rl+Mq*G|7i(<==73efx-wy}EGxfA%bduenv1i1Xh}&)!NixI)y}!Xa1Aq4 zQ$Ug=59PZ4_Dz;{?pxTmhUH%g>x|3x+SEh>xFR_N=8k)q! zr09_!ykHfMObe}g;1K~iCbHpS0zU~m#`1h{3>-1TkojrqA z^`zB16OEg#iYtyoyGc`J&K-G0@LL|~WQ$2Tm;bk6sS0Gpd8~nuvK9ZtWz@2$J|A*xV`}vmT{xO>h z4Xb(xH=T}Tcdxyh^B_{QNcZ@F*Y!96THRRtAtwv1HTW|oswd6<`)_9u*T@7+ja4$~ zlU%klE-*1RH#bjq6stqU0I=nKMU^biz0%2xnrXZW=>>RgwU>?Zccdl;O<>*&w;fpjxD5s8M^V5ADY(e( zMF{Jj1W?@fGBN^2W?Zfmav~HD=BaH?S-vFq0iW3Tvx6agoF52rujh~xMJLxb8JX^H zA+juwL&h43iBfHms%kjKYs-M7rN{k+B8{!7LCp^C(zRu0F&5|uI>J#=$|(o%C~0oH zNh<2OJu4o=5@E!OllRun$x2Iompec2czGBE?W2EpI-1_C9?QIlh{=@59m%+NraY;5H-Jg&)$mE-yJ zbkgBm^MQ)Le}w^k5UQt;%FBwH-Ym~6a{xL)ECM-U+u`VZ+r1{g_Zb=NFk#an|58G0 z+2{}C0g1mmIzR^kIF@Y~ji9Gf6D;o2r;Qfx0JYtq4*fR8aIONh%~}0%*}JQ0#;A4y z#&l4z!IYghj`DI{ceKZ3THXLE$5+1kddOXBcH{X4nvO$U9QkJQ2PVYCm#B6FmyI?g z5^s!KR#)4Nm>?)HaN1!>tdahm(K@rDR4B!40D4tl#i|*RW%$(s_An7@mhOLg0X4q9 zXs$)yTzJY3;`(ayP4+x1+<%%lZpTLAIe;C6FQ_hhJQD8nF^%lHYqQc4H{VkYV+kC) zYT*blrBhj3+imbJ$B|_Lqc~PiX@4_u)S7$(5hbz3dEvK396aUe@@vnZYO8Ex@!ho9IanQzi@I^2{tCw{CK(KIf;3Z_ zB?Z5-o&mAhR3XjM)1qgL5<~|^M)B~p3hDqbvQZ|Ug;Y{PqDGjViT!zlV%p*&;beTD zE+ITW-`d(5m}TULM;@HaItH1}$oFV8kWi8q@DMYfMM@kIq}Bh4Q#E_&NLo=E>W z{5cuFcHqdNMyjDGkGI@So0~JDHaQDfBY)@u@*LhV11`GXsd#^4t zGm{sLa;q?Ei`NldSJh_hV7 ztfFilE*y*2!ipFHjT_&P+ZMOodtFGh9Fb@>!Hj-&6x_%ZK+?V2&QP7lP@TNehYHu3YIkOMG4tOKVwQ(b&eWBg#Wym}1MDT=AQhwEic>Qp zl*AH;^Fl1GwkY0YfD{L;mam<9QNSe$YCQ2cBEF$CL)p+;Rw`q36g8NcBJ_?Zp|v!N zG;yt_#xQ#Viy9Uyvet$|hNxpQtttndXmaeAav0JxKO%d45Q^x-o`Hn$$9s2j4pk6k z0iZBF-FJQ6(HrL}x{K($cgo78tI<&`G#T$+zt7me1n8TrTjTSR{ggs9U9l#OLkEGa z`9bnd_?}h$(z$;?Z__7@_Ab?ppfH6eB6QsROu%~c<&PCwl}0)#Nr_|;N1eAH2f9=z zJHk>voy7p6-9{1o74ih?#&mv3AdHQNUAvDeQpacN7!6DDfJQ|v|AiM7Au7%0pyP9O z8-Z5$3U~*knAu7`c}*fNqaI1&EB1Ev#(j4@`xY}-vt!D4&e=ix>tb#(XRr7|ROHa(U?N@xXBRp;a6khT9IQb$$uHP zT>(x%KhZM=UzdNiO(8RG>>8YrRWf4i}Rx#qoMl3l=)uF;k*Pr4)e~N=2wMz=*$FKNLoB5oL znt*6)*o?f_t6Ep5kw3K!#3xJb-*xKW50@^{)2b=4?Mzf^TG?7;Rp#W0VmUG}GTNA1 zLwSF@R2>jRwaqrmLlHX@rMmY3M~6=Ci2z8BRnA{cRMYrlc8pT`yVa@to0i42BlgV) z`-I-n;-2kZx>`{!JHQ4&aktd)d0I2Jf$(Fz#9j*e&uVMs-p zANA0%DRY|`EFaNy)A7^~2iiOqzj#A(w10URsmq>qLjO9fNBrb5@QLC7m6yVE_BYaq zdG>t%5J_%Vca>P~Xp>;){dz&yu6b{1$zwRvN==3-YH!w6R3U>@#e0wST`ODr zwXlf4;NmD2ap=rtxbVazk2v^a-8nrc_vX%si^DUg7`6bV?x*CL9{?s3{nzQ*pj$ac zX}FEJi@}#wSx;|BY3}9A+Uv}%zUj*}ez#wXIX(Cka%nGZD+*TH%MK2J!ybW%0gaF4 zAIIyfG(m+_PGRSX2h^=tN!b`cg(32S7VwoSni~;EU@(wf6Vkv`;}|(^z~|KYl-`N~ z-8ZdyFMg1QbG$QC>`M2gG+;1^!M(+RgjU32%SIv<3%AU1#0Vv(8&?wE+?}7p=V%V08uI{w0Uu;tTaoq`%7lAyt(D3p^$jMV2)jb*Fy0|Rj*OE zYzeErfv&F4Vd!{aq6_@*tG*dGY0X`mDFo4)+LJV zcxWH(&#xtf<3wz{T&rLWe;iXQu(~Tz1mQerKB@cvsFkIxgyz6hy_9Z3!`BQ@vesI0YRZ2NqYNeeIY88e+a_9)0q{yVwr(s(@ZNEfK!csSEdu7=BfMk!)di@=J zz_RN4FxOTx>xd_-rh1ixYia3fpP$i(%yLHu$c85IFl0x!c5?}InXF0--fcIk(*dJQ zpa6)Crz60_D=2{BV&g;o_{APSK#gkC^aGiI0!iEiJlV6wwpwG_N#gQ;TkL}0_+-#% z=R=DFMwX7+T)WI0Vf+MfZCBfe*&tr#BZS z-;$b94~B75G=2ryJgBg6lknOdV&L*l7z36bEkR$u>|UI)GkbhXfaCr zBdlQQgW}!z(T&RN&&D=_M9kLP`7}3`0trk=_?Ce2Kubw(8Bb8e{5z4kSf=duH~{`b z+Bb$(0+>h6bY;J8#U-*k&3*QBI}31kp3MT*J}b+hVtEhvWCv()#ZLRW@A`4GsWpw}8>iJ@ z!im{n=Idoz6|VcSA)Dp#1gqvTuqG3?w2>}Nfr`7l=ZkDOPYp#Ta zy}g?V=S|j@Q~q?yy=pHNW(h_DDkBDFUoGb22Tz_NCO=rHm~5+eR+YOR9k#_%q@CRj zfbWHX))?)1GjerH%?-)Ncz)R-a@x$1m*+=Gn>OU|j))kzzl@N1aImnl#)=CuF{!Z4 zx!vRhe9cKTevF&Whc9Jc(KifHDcP^#)to!5%*-5N#YM2Fr1^&r7Zm6!JWk&3{vaR~ z{F^6o1z&w86_yfVEr+aFo5rFpnXK{}2mLk*E)Qn=8E|6&t~#?PFuRJ{bCvKp&O?h~ z**eg70b-NzG+tt2h(M|5>JcB{g8|uKJr_TJq1=ax?(Vv#!fW5JNTP{MDKbg-P5rxHdgj7seV_;LP$Em;k2`jSbj*jUN4a^krreUN$Jne3J#t-cgUZV8At9>rZN21&-cTyFkE^^vbJ@ ziSFS$AU*~jS;5%*RUrbylJFU>L4Nk={; z{lc(+enn_?`SB4p?&#V;0{H1F9_`cnhTZx!4B#MeIRFij(gyTS!9WF&rzl?u%8#B$ zE}QOM`2lC}OFSEqDRq7Qtinp^Ar7M{B2ulFKD(eqKf)+{ocpKB#_N}~2EFUV%41I_ zt562pxmqced|kV`zW>wPm47vPX5k1O9a(~4YZx%1plrf~32R9qNZBGH$RZ;M>4+fv zCW~xRwG~k|K`2E6iY&4WAcUYHK|w>4u!(>n1R4;iX+eRo2MlwA(=-3UF6S%umr(!-|#^HQpdA)wpE; z`v=Ps-=t0pq7pU%oVjfjQ=!w~o5JwV#a^Yv(IKlzaMNTv5URmiO|vR@Tzg2Y64Qg; zD0`>mLF5*8c$+fKc?zrop)F(AE^!<_Agw}RcQnqsv&7l6A!Tx=VycUL^j}G< z=$s@0$EW$lhl09 zUjDrd(+cW`BGE>sgJYC1x3sh&2>I5ajt}`ftY`EiwoNlbl@4)?T7bkYfv7Ep+qJk~ z%U>F)VrJF6JFP)ak~L{nr)M|x3!w~Ox#QGSiQ_&?P+DDIU-wN|)T4{4Lp?mpoIJuf z`-8~5;-NE_2RfEt78whli${;crc^dF(WE{tcei8T&&7l1iV6__-J(r?PCPXHOx!@5 z;|95Dr7W{9Vd$cp#Z|q%2hztb3h!WwbsE4E!@rwvk)Z2st$B{%86XfO|0CCQ{av@C z|Acou|E<^(-NySAm|ozY8aCSGgIu|Nn=RW{YN8%H@@mnK63$;4Tf(sHkPtnc5|;&w zkQV)Ash=R4p)(IXTdDjpx{{ezm2uZ7rbnO%?63&_6C4f~Kg1*>Qn%SP!35Wt3aEI3 zOMVMXV%sk^wf@=`(`Q@hGdKP18aV& zHQ$wiKcx341euiTcU2j;#MYcV&$CPgh_2}ToXkMifS=Y;g}}hT9NMZlXs)1 zNAX*$QNZU9x!}u(l|9B^Q||MC@ntl-h+)XcIAaRG@g(N_&{k=QuE=P|LRVc;TQ-_} z0aUipI;gD$WME$lE8tOW(KYlt;PmgmnrL6MEc;-Kw<;3RaHsq< zGt@Lv>-*1#>3olDXFX59u0P26G zP0gCJH(l>$s4Pt=%tJ3P-_LINtFxs0z+9xQ3thhsG!8+#SZEIuKP8W&u)b(dCG@BD zJ!{;*pTnUX zik1C@-bC}U#)Xqwc|C=ewqhgGm0N&FAYL@@Yyy~`B#amaPe=OsJ!C@!H$Rd+q)}gx z^l>e+pMHn%>T%P7e!IgTSefqHwMs5@(na3xypiX+I7i! zG#^UC=Ia@m>k5@ZR4G{_B$rv4zF9`x@%p-Q8p*lNiPQNiTzmGMh2Wpiv|P}W4D-k% zXkPyv%z>sh=79>6zO?FXPGt>-+s+&x)k3BM&>1JBG{g`ski>_`hNgt6MAw0 literal 133076 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�U#Bc@w)aGLz~fLWvVGE!(hGwFI}h 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 From d2b3ee255c28b7bb45670c581aa49c7703c2cd87 Mon Sep 17 00:00:00 2001 From: knqiufan Date: Sat, 5 Sep 2026 00:57:08 +0800 Subject: [PATCH 5/5] fix(server): preserve binary cursor keys on Windows --- .github/workflows/native-service.yml | 14 +++++++++++ src/powercontext/server/cursor_secret.py | 4 ++- tests/test_cursor_secret.py | 32 ++++++++++++++++++------ tests/test_server.py | 3 ++- 4 files changed, 43 insertions(+), 10 deletions(-) diff --git a/.github/workflows/native-service.yml b/.github/workflows/native-service.yml index bf4875750..a9952ab06 100644 --- a/.github/workflows/native-service.yml +++ b/.github/workflows/native-service.yml @@ -116,6 +116,13 @@ jobs: uv venv .native-venv uv pip install --python .native-venv\Scripts\python.exe "powercontext[cli,server] @ $wheelUri" pytest + - name: Verify binary cursor persistence and restart compatibility + shell: pwsh + run: >- + .native-venv\Scripts\python.exe -m pytest -q + tests/test_cursor_secret.py + tests/test_server.py::test_server_reuses_file_backed_cursor_secret_across_restarts + - name: Exercise the real Task Scheduler lifecycle shell: pwsh run: >- @@ -127,6 +134,13 @@ jobs: if: failure() shell: pwsh run: | + Get-ChildItem -LiteralPath "$env:RUNNER_TEMP\powercontext-native-tests" -Recurse -File -ErrorAction SilentlyContinue | + Where-Object { $_.Name -in @('server.stdout.log', 'server.stderr.log') } | + ForEach-Object { + Write-Output "::group::$($_.FullName)" + Get-Content -LiteralPath $_.FullName -Tail 100 + Write-Output "::endgroup::" + } schtasks.exe /Query /TN "$env:POWERCONTEXT_NATIVE_SERVICE_IDENTIFIER" /XML /HRESULT if ($LASTEXITCODE -ne 0) { exit 0 } schtasks.exe /Query /TN "$env:POWERCONTEXT_NATIVE_SERVICE_IDENTIFIER" /FO LIST /V /HRESULT diff --git a/src/powercontext/server/cursor_secret.py b/src/powercontext/server/cursor_secret.py index 66310ae28..be8815fff 100644 --- a/src/powercontext/server/cursor_secret.py +++ b/src/powercontext/server/cursor_secret.py @@ -53,7 +53,9 @@ def _load_or_create(path: Path) -> bytes: generated = secrets.token_bytes(_CURSOR_SECRET_BYTES) try: - descriptor = os.open(path, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600) + # Windows text descriptors translate LF bytes even when using os.write. + flags = os.O_WRONLY | os.O_CREAT | os.O_EXCL | getattr(os, "O_BINARY", 0) + descriptor = os.open(path, flags, 0o600) except FileExistsError: return _read(path) try: diff --git a/tests/test_cursor_secret.py b/tests/test_cursor_secret.py index 613813b37..74988d447 100644 --- a/tests/test_cursor_secret.py +++ b/tests/test_cursor_secret.py @@ -14,8 +14,10 @@ from __future__ import annotations +import os import stat +import pytest from pydantic import SecretStr from powercontext.builtin.persistence.oceanbase import OceanBaseConfig @@ -23,7 +25,16 @@ from powercontext.server.cursor_secret import resolve_cursor_secret -def test_file_backed_sqlite_reuses_private_cursor_secret(tmp_path) -> None: +@pytest.fixture +def generated_secret(monkeypatch) -> bytes: + # Include LF and other control bytes so Windows text translation cannot hide + # behind a randomly generated key that happens not to contain a newline. + secret = bytes(range(32)) + monkeypatch.setattr("powercontext.server.cursor_secret.secrets.token_bytes", lambda size: secret[:size]) + return secret + + +def test_file_backed_sqlite_reuses_private_cursor_secret(tmp_path, generated_secret) -> None: database_path = tmp_path / "powercontext.db" config = SQLiteConfig(url=f"sqlite+aiosqlite:///{database_path}") @@ -31,9 +42,10 @@ def test_file_backed_sqlite_reuses_private_cursor_secret(tmp_path) -> None: second = resolve_cursor_secret(config, None) key_path = tmp_path / ".powercontext.db.cursor-key" - assert first == second - assert first is not None and len(first) == 32 - assert stat.S_IMODE(key_path.stat().st_mode) == 0o600 + assert first == second == generated_secret + assert key_path.read_bytes() == generated_secret + if os.name != "nt": + assert stat.S_IMODE(key_path.stat().st_mode) == 0o600 def test_explicit_cursor_secret_overrides_database_storage(tmp_path) -> None: @@ -46,13 +58,17 @@ def test_explicit_cursor_secret_overrides_database_storage(tmp_path) -> None: assert not (tmp_path / ".powercontext.db.cursor-key").exists() -def test_remote_database_without_override_reuses_local_persisted_secret(tmp_path, monkeypatch) -> None: +def test_remote_database_without_override_reuses_local_persisted_secret( + tmp_path, monkeypatch, generated_secret +) -> None: monkeypatch.setenv("POWERCONTEXT_HOME", str(tmp_path)) config = OceanBaseConfig(url=SecretStr("mysql+aoceanbase://user:password@127.0.0.1:2881/test?charset=utf8mb4")) first = resolve_cursor_secret(config, None) second = resolve_cursor_secret(config, None) - assert first == second - assert first is not None and len(first) == 32 - assert stat.S_IMODE((tmp_path / "cursor-signing.key").stat().st_mode) == 0o600 + key_path = tmp_path / "cursor-signing.key" + assert first == second == generated_secret + assert key_path.read_bytes() == generated_secret + if os.name != "nt": + assert stat.S_IMODE(key_path.stat().st_mode) == 0o600 diff --git a/tests/test_server.py b/tests/test_server.py index 88bfc84b4..75916df8e 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -180,7 +180,8 @@ def test_server_settings_configure_default_project_skill_targets(tmp_path, monke assert all(target.allow_managed_publish for target in settings.external_skills.targets) -def test_server_reuses_file_backed_cursor_secret_across_restarts(tmp_path) -> None: +def test_server_reuses_file_backed_cursor_secret_across_restarts(tmp_path, monkeypatch) -> None: + monkeypatch.setattr("powercontext.server.cursor_secret.secrets.token_bytes", lambda size: b"\n" * size) database = SQLiteConfig(url=f"sqlite+aiosqlite:///{tmp_path / 'runtime.db'}") settings = ServerSettings( database=database,