@tnnevol/dsh-codex-auth 0.1.1-rc.3 → 0.1.2-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compatibility.json +1 -1
- package/lib/client.js +69 -14
- package/lib/index.d.ts +1 -1
- package/lib/index.js +13 -8
- package/package.json +60 -54
package/compatibility.json
CHANGED
package/lib/client.js
CHANGED
|
@@ -47108,6 +47108,11 @@ window.__ModuleLoader__.load({
|
|
|
47108
47108
|
};
|
|
47109
47109
|
}
|
|
47110
47110
|
//#endregion
|
|
47111
|
+
//#region src/client/image-capability-message.ts
|
|
47112
|
+
function formatImageGenerationHelp(t, dshVersion) {
|
|
47113
|
+
return t("imageGenerationUnavailableHelp").replace("{version}", dshVersion ?? "unknown");
|
|
47114
|
+
}
|
|
47115
|
+
//#endregion
|
|
47111
47116
|
//#region src/client/CodexCapabilities.tsx
|
|
47112
47117
|
/** Live optional-capability settings for the Codex Auth plugin. */
|
|
47113
47118
|
const UNAVAILABLE_SNAPSHOT = {
|
|
@@ -47120,7 +47125,7 @@ window.__ModuleLoader__.load({
|
|
|
47120
47125
|
mode: "memory"
|
|
47121
47126
|
};
|
|
47122
47127
|
/** Render the capability controls with the same Save/Discard contract as DSH settings. */
|
|
47123
|
-
function CodexCapabilities({ scope, t }) {
|
|
47128
|
+
function CodexCapabilities({ scope, t, dshVersion }) {
|
|
47124
47129
|
const subscribe = (0, react.useCallback)((listener) => scope?.subscribe(listener) ?? (() => void 0), [scope]);
|
|
47125
47130
|
const getSnapshot = (0, react.useCallback)(() => scope?.getSnapshot() ?? UNAVAILABLE_SNAPSHOT, [scope]);
|
|
47126
47131
|
const snapshot = (0, react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
|
|
@@ -47179,6 +47184,7 @@ window.__ModuleLoader__.load({
|
|
|
47179
47184
|
};
|
|
47180
47185
|
const loading = snapshot.status === "loading";
|
|
47181
47186
|
const editable = snapshot.status === "ready" && snapshot.writable && !busy;
|
|
47187
|
+
const imageGenerationHelp = formatImageGenerationHelp(t, dshVersion);
|
|
47182
47188
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
47183
47189
|
className: "dsh-codex-capabilities",
|
|
47184
47190
|
"aria-labelledby": "dsh-codex-capabilities-title",
|
|
@@ -47250,7 +47256,7 @@ window.__ModuleLoader__.load({
|
|
|
47250
47256
|
}),
|
|
47251
47257
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
47252
47258
|
className: "dsh-codex-capability-row dsh-codex-capability-row--disabled",
|
|
47253
|
-
title:
|
|
47259
|
+
title: imageGenerationHelp,
|
|
47254
47260
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckboxWithGroup, {
|
|
47255
47261
|
checked: false,
|
|
47256
47262
|
disabled: true,
|
|
@@ -47262,7 +47268,7 @@ window.__ModuleLoader__.load({
|
|
|
47262
47268
|
children: t("enableImageGeneration")
|
|
47263
47269
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
47264
47270
|
className: "dsh-codex-body",
|
|
47265
|
-
children:
|
|
47271
|
+
children: imageGenerationHelp
|
|
47266
47272
|
})]
|
|
47267
47273
|
})
|
|
47268
47274
|
})
|
|
@@ -47321,6 +47327,29 @@ window.__ModuleLoader__.load({
|
|
|
47321
47327
|
/** Same-origin endpoint for the DSH-wide Codex default model selection. */
|
|
47322
47328
|
const CODEX_GLOBAL_MODEL_PATH = "/plugins/dsh-codex-auth-plugin/auth/global-model";
|
|
47323
47329
|
//#endregion
|
|
47330
|
+
//#region src/client/model-catalog.ts
|
|
47331
|
+
function errorMessage(error, fallback) {
|
|
47332
|
+
return error?.message || fallback;
|
|
47333
|
+
}
|
|
47334
|
+
/**
|
|
47335
|
+
* Read the host model catalog from the alpha.4 Remote API, with a guarded
|
|
47336
|
+
* legacy fallback for mixed deployments that still expose the old connection
|
|
47337
|
+
* API.
|
|
47338
|
+
*/
|
|
47339
|
+
async function loadCodexModelCatalog(connection, remote) {
|
|
47340
|
+
const modern = remote?.session?.modelCatalog;
|
|
47341
|
+
if (typeof modern === "function") {
|
|
47342
|
+
const result = await modern();
|
|
47343
|
+
if (!result.ok) throw new Error(errorMessage(result.error, "DSH model catalog request failed"));
|
|
47344
|
+
return result.value;
|
|
47345
|
+
}
|
|
47346
|
+
const legacy = connection.api?.llm?.models;
|
|
47347
|
+
if (typeof legacy !== "function") throw new Error("DSH model catalog API is unavailable");
|
|
47348
|
+
const response = await legacy({});
|
|
47349
|
+
if (!response.result.ok) throw new Error(errorMessage(response.result.error, "DSH model catalog request failed"));
|
|
47350
|
+
return response.result.value;
|
|
47351
|
+
}
|
|
47352
|
+
//#endregion
|
|
47324
47353
|
//#region src/client/CodexGlobalModel.tsx
|
|
47325
47354
|
/** DSH-wide Codex default model controls. */
|
|
47326
47355
|
async function request(method, body) {
|
|
@@ -47410,7 +47439,7 @@ window.__ModuleLoader__.load({
|
|
|
47410
47439
|
});
|
|
47411
47440
|
}
|
|
47412
47441
|
/** Set the model used by new DSH sessions and the host-backed agent entry point. */
|
|
47413
|
-
function CodexGlobalModel({ connection, t }) {
|
|
47442
|
+
function CodexGlobalModel({ connection, remote, t }) {
|
|
47414
47443
|
const [models, setModels] = (0, react.useState)([]);
|
|
47415
47444
|
const [current, setCurrent] = (0, react.useState)();
|
|
47416
47445
|
const [draftModel, setDraftModel] = (0, react.useState)("");
|
|
@@ -47421,9 +47450,8 @@ window.__ModuleLoader__.load({
|
|
|
47421
47450
|
const load = (0, react.useCallback)(async () => {
|
|
47422
47451
|
setStatus("loading");
|
|
47423
47452
|
try {
|
|
47424
|
-
const [global, catalog] = await Promise.all([request("GET"), connection
|
|
47425
|
-
|
|
47426
|
-
const available = codexModels(catalog.result.value.groups);
|
|
47453
|
+
const [global, catalog] = await Promise.all([request("GET"), loadCodexModelCatalog(connection, remote)]);
|
|
47454
|
+
const available = codexModels(catalog.groups);
|
|
47427
47455
|
setModels(available);
|
|
47428
47456
|
setCurrent(global.globalModel);
|
|
47429
47457
|
setDraftModel(global.globalModel?.model ?? "");
|
|
@@ -47432,7 +47460,7 @@ window.__ModuleLoader__.load({
|
|
|
47432
47460
|
} catch {
|
|
47433
47461
|
setStatus("error");
|
|
47434
47462
|
}
|
|
47435
|
-
}, [connection]);
|
|
47463
|
+
}, [connection, remote]);
|
|
47436
47464
|
(0, react.useEffect)(() => {
|
|
47437
47465
|
load();
|
|
47438
47466
|
}, [load]);
|
|
@@ -47724,8 +47752,8 @@ window.__ModuleLoader__.load({
|
|
|
47724
47752
|
})
|
|
47725
47753
|
});
|
|
47726
47754
|
}
|
|
47727
|
-
/** Render a standalone login/logout card in the
|
|
47728
|
-
function CodexAuthCard({ t, configScope, connection }) {
|
|
47755
|
+
/** Render a standalone login/logout card in the alpha.4 keyed Plugin slot. */
|
|
47756
|
+
function CodexAuthCard({ t, configScope, connection, remote }) {
|
|
47729
47757
|
if (t === void 0) throw new Error("Codex auth card requires its translation function");
|
|
47730
47758
|
if (connection === void 0) throw new Error("Codex auth card requires the DSH connection");
|
|
47731
47759
|
const [open, setOpen] = (0, react.useState)(false);
|
|
@@ -47996,11 +48024,13 @@ window.__ModuleLoader__.load({
|
|
|
47996
48024
|
}) : null,
|
|
47997
48025
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CodexGlobalModel, {
|
|
47998
48026
|
connection,
|
|
48027
|
+
remote,
|
|
47999
48028
|
t
|
|
48000
48029
|
}),
|
|
48001
48030
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(CodexCapabilities, {
|
|
48002
48031
|
scope: configScope,
|
|
48003
|
-
t
|
|
48032
|
+
t,
|
|
48033
|
+
dshVersion: status.dshVersion
|
|
48004
48034
|
})
|
|
48005
48035
|
]
|
|
48006
48036
|
}) : null]
|
|
@@ -48853,6 +48883,28 @@ window.__ModuleLoader__.load({
|
|
|
48853
48883
|
});
|
|
48854
48884
|
});
|
|
48855
48885
|
}
|
|
48886
|
+
mutate(ops, _expectedRevision) {
|
|
48887
|
+
return this.enqueue(async () => {
|
|
48888
|
+
const current = this.getSnapshot().value;
|
|
48889
|
+
if (current === void 0) throw new Error("Codex settings are not loaded");
|
|
48890
|
+
const next = { ...current };
|
|
48891
|
+
for (const op of ops) {
|
|
48892
|
+
if (op.path.length !== 1 || op.path[0] !== "enableImageTool" && op.path[0] !== "enableImageUpload") throw new Error(`Unsupported Codex settings path: ${op.path.join(".")}`);
|
|
48893
|
+
const field = op.path[0];
|
|
48894
|
+
if (op.op === "unset") next[field] = false;
|
|
48895
|
+
else if (typeof op.value !== "boolean") throw new TypeError(`Codex setting ${field} must be boolean`);
|
|
48896
|
+
else next[field] = op.value;
|
|
48897
|
+
}
|
|
48898
|
+
const accepted = await requestSettings("PUT", next);
|
|
48899
|
+
if (this.disposed) return;
|
|
48900
|
+
this.publish({
|
|
48901
|
+
...this.snapshot,
|
|
48902
|
+
status: "ready",
|
|
48903
|
+
value: accepted,
|
|
48904
|
+
writable: true
|
|
48905
|
+
});
|
|
48906
|
+
});
|
|
48907
|
+
}
|
|
48856
48908
|
unset(field) {
|
|
48857
48909
|
return this.set(field, false);
|
|
48858
48910
|
}
|
|
@@ -48926,7 +48978,7 @@ window.__ModuleLoader__.load({
|
|
|
48926
48978
|
enableImageUpload: "Enable image upload",
|
|
48927
48979
|
enableImageUploadHelp: "Allow image-capable Codex models to receive images pasted or dropped into the conversation.",
|
|
48928
48980
|
enableImageGeneration: "Enable image generation",
|
|
48929
|
-
imageGenerationUnavailableHelp: "Not supported by the Codex provider and DSH
|
|
48981
|
+
imageGenerationUnavailableHelp: "Not supported by the Codex provider and DSH {version} model adapter.",
|
|
48930
48982
|
settingsLoading: "Loading plugin settings…",
|
|
48931
48983
|
settingsUnavailable: "Plugin settings are unavailable in this dsh profile.",
|
|
48932
48984
|
settingsReadOnly: "This profile exposes plugin settings as read-only.",
|
|
@@ -48995,7 +49047,7 @@ window.__ModuleLoader__.load({
|
|
|
48995
49047
|
enableImageUpload: "启用图片上传",
|
|
48996
49048
|
enableImageUploadHelp: "允许具备图片输入能力的 Codex 模型接收粘贴或拖入对话的图片。",
|
|
48997
49049
|
enableImageGeneration: "启用图像生成",
|
|
48998
|
-
imageGenerationUnavailableHelp: "当前 Codex 提供方和 DSH
|
|
49050
|
+
imageGenerationUnavailableHelp: "当前 Codex 提供方和 DSH {version} 模型适配器暂不支持图像输出。",
|
|
48999
49051
|
settingsLoading: "正在加载插件设置…",
|
|
49000
49052
|
settingsUnavailable: "此 dsh profile 无法使用插件设置。",
|
|
49001
49053
|
settingsReadOnly: "此 profile 的插件设置为只读。",
|
|
@@ -49023,6 +49075,7 @@ window.__ModuleLoader__.load({
|
|
|
49023
49075
|
"locale",
|
|
49024
49076
|
"connection",
|
|
49025
49077
|
"remote",
|
|
49078
|
+
"remote.session",
|
|
49026
49079
|
"settingsScope",
|
|
49027
49080
|
"timer"
|
|
49028
49081
|
];
|
|
@@ -49036,6 +49089,7 @@ window.__ModuleLoader__.load({
|
|
|
49036
49089
|
}), "dsh-codex-auth-plugin: locale");
|
|
49037
49090
|
const t = ctx.locale.bind(namespace);
|
|
49038
49091
|
const connection = ctx.get("connection");
|
|
49092
|
+
const remote = ctx.remote;
|
|
49039
49093
|
const timer = ctx.get("timer");
|
|
49040
49094
|
const remoteScope = connection.isLoopback ? void 0 : new CodexAuthRemoteSettingsScope();
|
|
49041
49095
|
const configScope = remoteScope ?? ctx.settingsScope.bind({
|
|
@@ -49054,7 +49108,8 @@ window.__ModuleLoader__.load({
|
|
|
49054
49108
|
inject: () => ({
|
|
49055
49109
|
t,
|
|
49056
49110
|
configScope,
|
|
49057
|
-
connection
|
|
49111
|
+
connection,
|
|
49112
|
+
remote
|
|
49058
49113
|
})
|
|
49059
49114
|
}, CodexAuthCard));
|
|
49060
49115
|
ctx.slots.inject("conversation.input.right", () => ctx.slots.register({
|
package/lib/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { CODEX_AUTH_LOGIN_PATH, CODEX_AUTH_LOGOUT_PATH, CODEX_AUTH_SETTINGS_NAMESPACE, CODEX_AUTH_STATUS_PATH, CODEX_GLOBAL_MODEL_PATH } from "./auth-paths.js";
|
|
2
2
|
import { a as CODEX_AUTH_FILENAME, c as codexAuthPath, i as logoutCodex, n as codexAuthStatus, o as CODEX_PROVIDER, r as loginCodex, s as CodexCredentialStore, t as CodexAuthStatus } from "./auth-BBBeI24-.js";
|
|
3
3
|
import { CredentialProvider } from "@deepseek-ai/dsh-credentials";
|
|
4
|
-
import "@deepseek-ai/dsh-settings";
|
|
5
4
|
import { AttachmentStore } from "@deepseek-ai/dsh-attachment";
|
|
6
5
|
import { PiAiAdapter } from "@deepseek-ai/dsh-llm-pi-ai";
|
|
7
6
|
import { Context } from "@deepseek-ai/cordis";
|
|
8
7
|
import { IncomingMessage } from "node:http";
|
|
8
|
+
import "@deepseek-ai/dsh-settings";
|
|
9
9
|
//#region src/credential-mirror.d.ts
|
|
10
10
|
/** Credential reference exposed to the official `llm-pi-ai` model settings UI. */
|
|
11
11
|
declare const CODEX_API_KEY_ENV = "OPENAI_CODEX_AUTH_TOKEN";
|
package/lib/index.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { a as CODEX_PROVIDER, i as CODEX_AUTH_FILENAME, n as loginCodex, o as CodexCredentialStore, r as logoutCodex, s as codexAuthPath, t as codexAuthStatus } from "./auth-DQ2F4vc6.js";
|
|
2
2
|
import { CODEX_AUTH_LOGIN_PATH, CODEX_AUTH_LOGOUT_PATH, CODEX_AUTH_SETTINGS_NAMESPACE, CODEX_AUTH_SETTINGS_PATH, CODEX_AUTH_STATUS_PATH, CODEX_GLOBAL_MODEL_PATH, CODEX_USAGE_PATH } from "./auth-paths.js";
|
|
3
|
+
import { APP_IDENTITY, createUserMessage, resolveRetryPolicy } from "@deepseek-ai/dsh-llm";
|
|
3
4
|
import { createModels, defaultProviderAuthContext } from "@earendil-works/pi-ai";
|
|
4
5
|
import { openaiCodexProvider } from "@earendil-works/pi-ai/providers/openai-codex";
|
|
5
6
|
import { basename } from "node:path";
|
|
6
7
|
import { credentialRef } from "@deepseek-ai/dsh-credentials";
|
|
7
8
|
import z from "@deepseek-ai/schemastery";
|
|
8
|
-
import { settingsNamespace } from "@deepseek-ai/dsh-settings";
|
|
9
9
|
import { AttachmentId } from "@deepseek-ai/dsh-attachment";
|
|
10
|
-
import { createUserMessage, resolveRetryPolicy } from "@deepseek-ai/dsh-llm";
|
|
11
10
|
import { defineTool } from "@deepseek-ai/dsh-tools";
|
|
12
11
|
import { PiAiAdapter } from "@deepseek-ai/dsh-llm-pi-ai";
|
|
13
12
|
//#region src/usage.ts
|
|
@@ -160,6 +159,12 @@ const CODEX_USAGE_UNAVAILABLE = "codex-usage-unavailable";
|
|
|
160
159
|
const CODEX_SETTINGS_INVALID = "codex-settings-invalid";
|
|
161
160
|
const CODEX_GLOBAL_MODEL_INVALID = "codex-global-model-invalid";
|
|
162
161
|
const CODEX_SETTINGS_BODY_LIMIT = 8192;
|
|
162
|
+
function withDshVersion(status) {
|
|
163
|
+
return {
|
|
164
|
+
...status,
|
|
165
|
+
dshVersion: APP_IDENTITY.version
|
|
166
|
+
};
|
|
167
|
+
}
|
|
163
168
|
function signedInStatus(expiresAt) {
|
|
164
169
|
return expiresAt === void 0 ? { status: "signed-in" } : {
|
|
165
170
|
status: "signed-in",
|
|
@@ -411,7 +416,7 @@ function decodeGlobalModelWrite(value) {
|
|
|
411
416
|
...typeof record.reasoningEffort === "string" ? { reasoningEffort: record.reasoningEffort } : {}
|
|
412
417
|
};
|
|
413
418
|
}
|
|
414
|
-
/** Register the plugin-owned bridge to DSH
|
|
419
|
+
/** Register the plugin-owned bridge to DSH alpha.4's shared Agent default model. */
|
|
415
420
|
function registerCodexGlobalModelRoute(ctx, defaultModel, llm) {
|
|
416
421
|
ctx.effect(() => {
|
|
417
422
|
const authorize = (req, res) => {
|
|
@@ -489,7 +494,7 @@ function registerCodexAuthRoutes(ctx, store, mirror) {
|
|
|
489
494
|
if (req.method !== "GET") return json(res, 405, { error: "method not allowed" });
|
|
490
495
|
if (!authorize(req, res)) return;
|
|
491
496
|
try {
|
|
492
|
-
json(res, 200, await auth.status());
|
|
497
|
+
json(res, 200, withDshVersion(await auth.status()));
|
|
493
498
|
} catch (error) {
|
|
494
499
|
json(res, 500, { error: safeMessage(error) });
|
|
495
500
|
}
|
|
@@ -598,7 +603,7 @@ var CodexCredentialMirror = class {
|
|
|
598
603
|
//#region src/settings.ts
|
|
599
604
|
/** Host settings registration that makes the standalone auth card discoverable. */
|
|
600
605
|
/** Branded namespace used by the Host settings service. */
|
|
601
|
-
const CODEX_AUTH_SETTINGS_NS =
|
|
606
|
+
const CODEX_AUTH_SETTINGS_NS = CODEX_AUTH_SETTINGS_NAMESPACE;
|
|
602
607
|
/** Settings schema for the plugin card and its optional image capability. */
|
|
603
608
|
const CodexAuthSettingsSchema = z.object({
|
|
604
609
|
enableImageTool: z.boolean().default(DEFAULT_CODEX_AUTH_SETTINGS.enableImageTool),
|
|
@@ -766,11 +771,11 @@ function viewImageTool(ctx) {
|
|
|
766
771
|
/** OpenAI Codex adapter assembled from dsh's public pi-ai extension seam. */
|
|
767
772
|
/** Keep the Codex stream open while the provider is still producing output. */
|
|
768
773
|
const CODEX_STREAM_IDLE_TIMEOUT_MS = 3e5;
|
|
769
|
-
/** Match DSH
|
|
774
|
+
/** Match DSH alpha.4's default request-level image payload bound. */
|
|
770
775
|
const CODEX_MAX_REQUEST_IMAGE_BYTES = 20971520;
|
|
771
|
-
/** Match DSH
|
|
776
|
+
/** Match DSH alpha.4's default per-image total-pixel budget. */
|
|
772
777
|
const CODEX_REQUEST_IMAGE_PIXEL_BUDGET = 4194304;
|
|
773
|
-
/** Match DSH
|
|
778
|
+
/** Match DSH alpha.4's default raw per-image byte budget. */
|
|
774
779
|
const CODEX_REQUEST_IMAGE_MAX_BYTES = 1048576;
|
|
775
780
|
/**
|
|
776
781
|
* Give dsh's generic adapter the bearer token resolved by the plugin-owned
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@tnnevol/dsh-codex-auth",
|
|
3
3
|
"displayName": "Codex Auth",
|
|
4
4
|
"description": "Standalone ChatGPT OAuth account management for DeepSeek Harness.",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.2-alpha.4",
|
|
6
6
|
"author": "tnnevol",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -52,11 +52,12 @@
|
|
|
52
52
|
"client": {
|
|
53
53
|
"inject": [
|
|
54
54
|
"@deepseek-ai/dsh-api-remotes",
|
|
55
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
55
56
|
"@deepseek-ai/dsh-client-connection",
|
|
56
|
-
"@deepseek-ai/dsh-client-runtime",
|
|
57
57
|
"@deepseek-ai/dsh-client-ui-conversation",
|
|
58
58
|
"@deepseek-ai/dsh-client-ui-model-selection",
|
|
59
59
|
"@deepseek-ai/dsh-client-ui-primitives",
|
|
60
|
+
"@deepseek-ai/dsh-client-ui-renderer",
|
|
60
61
|
"@deepseek-ai/dsh-client-ui-settings",
|
|
61
62
|
"@deepseek-ai/dsh-client-ui-settings-plugins",
|
|
62
63
|
"@deepseek-ai/dsh-client-locale"
|
|
@@ -65,66 +66,71 @@
|
|
|
65
66
|
}
|
|
66
67
|
},
|
|
67
68
|
"peerDependencies": {
|
|
68
|
-
"@earendil-works/pi-ai": "0.
|
|
69
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/dsh-
|
|
72
|
-
"@deepseek-ai/dsh-
|
|
73
|
-
"@deepseek-ai/dsh-
|
|
74
|
-
"@deepseek-ai/dsh-
|
|
75
|
-
"@deepseek-ai/dsh-
|
|
76
|
-
"@deepseek-ai/dsh-
|
|
77
|
-
"@deepseek-ai/dsh-
|
|
78
|
-
"@deepseek-ai/dsh-
|
|
79
|
-
"@deepseek-ai/dsh-
|
|
80
|
-
"@deepseek-ai/dsh-
|
|
81
|
-
"@deepseek-ai/dsh-
|
|
82
|
-
"@deepseek-ai/dsh-
|
|
83
|
-
"@deepseek-ai/dsh-client-
|
|
84
|
-
"@deepseek-ai/dsh-client-ui-
|
|
85
|
-
"@deepseek-ai/dsh-client-ui-
|
|
86
|
-
"@deepseek-ai/dsh-
|
|
87
|
-
"@deepseek-ai/dsh-
|
|
88
|
-
"@deepseek-ai/dsh-
|
|
89
|
-
"@deepseek-ai/dsh-
|
|
90
|
-
"@deepseek-ai/
|
|
69
|
+
"@earendil-works/pi-ai": "^0.84.2",
|
|
70
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
71
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.2-alpha.4",
|
|
72
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.2-alpha.4",
|
|
73
|
+
"@deepseek-ai/dsh-scope": "0.1.2-alpha.4",
|
|
74
|
+
"@deepseek-ai/dsh-attachment": "0.1.2-alpha.4",
|
|
75
|
+
"@deepseek-ai/dsh-agent-default-model": "0.1.2-alpha.4",
|
|
76
|
+
"@deepseek-ai/dsh-atomic-write": "0.1.2-alpha.4",
|
|
77
|
+
"@deepseek-ai/dsh-home-paths": "0.1.2-alpha.4",
|
|
78
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.2-alpha.4",
|
|
79
|
+
"@deepseek-ai/dsh-invariants": "0.1.2-alpha.4",
|
|
80
|
+
"@deepseek-ai/dsh-llm": "0.1.2-alpha.4",
|
|
81
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.1.2-alpha.4",
|
|
82
|
+
"@deepseek-ai/dsh-settings": "0.1.2-alpha.4",
|
|
83
|
+
"@deepseek-ai/dsh-tools": "0.1.2-alpha.4",
|
|
84
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-alpha.4",
|
|
85
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-alpha.4",
|
|
86
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.2-alpha.4",
|
|
87
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-alpha.4",
|
|
88
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.2-alpha.4",
|
|
89
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-alpha.4",
|
|
90
|
+
"@deepseek-ai/dsh-credentials": "0.1.2-alpha.4",
|
|
91
|
+
"@deepseek-ai/dsh-fs": "0.1.2-alpha.4",
|
|
92
|
+
"@deepseek-ai/dsh-launch-environment": "0.1.2-alpha.4",
|
|
93
|
+
"@deepseek-ai/dsh-timeout": "0.1.2-alpha.4",
|
|
94
|
+
"@deepseek-ai/schemastery": "3.18.2",
|
|
91
95
|
"react": "^18.2.0"
|
|
92
96
|
},
|
|
93
97
|
"devDependencies": {
|
|
94
|
-
"@earendil-works/pi-ai": "0.
|
|
95
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
96
|
-
"@deepseek-ai/dsh-api-remotes": "0.1.
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-
|
|
100
|
-
"@deepseek-ai/dsh-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-client-
|
|
103
|
-
"@deepseek-ai/dsh-client-
|
|
104
|
-
"@deepseek-ai/dsh-client-ui-
|
|
105
|
-
"@deepseek-ai/dsh-client-ui-
|
|
106
|
-
"@deepseek-ai/dsh-client-ui-
|
|
107
|
-
"@deepseek-ai/dsh-client-ui-
|
|
108
|
-
"@deepseek-ai/dsh-client-ui-
|
|
109
|
-
"@deepseek-ai/dsh-
|
|
110
|
-
"@deepseek-ai/dsh-
|
|
111
|
-
"@deepseek-ai/dsh-
|
|
112
|
-
"@deepseek-ai/dsh-
|
|
113
|
-
"@deepseek-ai/dsh-
|
|
114
|
-
"@deepseek-ai/dsh-
|
|
115
|
-
"@deepseek-ai/dsh-
|
|
116
|
-
"@deepseek-ai/dsh-
|
|
117
|
-
"@deepseek-ai/dsh-
|
|
118
|
-
"@deepseek-ai/dsh-
|
|
119
|
-
"@deepseek-ai/dsh-
|
|
120
|
-
"@deepseek-ai/
|
|
98
|
+
"@earendil-works/pi-ai": "^0.84.2",
|
|
99
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
100
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.2-alpha.4",
|
|
101
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.2-alpha.4",
|
|
102
|
+
"@deepseek-ai/dsh-scope": "0.1.2-alpha.4",
|
|
103
|
+
"@deepseek-ai/dsh-agent-default-model": "0.1.2-alpha.4",
|
|
104
|
+
"@deepseek-ai/dsh-attachment": "0.1.2-alpha.4",
|
|
105
|
+
"@deepseek-ai/dsh-atomic-write": "0.1.2-alpha.4",
|
|
106
|
+
"@deepseek-ai/dsh-client-connection": "0.1.2-alpha.4",
|
|
107
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-alpha.4",
|
|
108
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.2-alpha.4",
|
|
109
|
+
"@deepseek-ai/dsh-client-ui-model-selection": "0.1.2-alpha.4",
|
|
110
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-alpha.4",
|
|
111
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.2-alpha.4",
|
|
112
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-alpha.4",
|
|
113
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.2-alpha.4",
|
|
114
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-alpha.4",
|
|
115
|
+
"@deepseek-ai/dsh-credentials": "0.1.2-alpha.4",
|
|
116
|
+
"@deepseek-ai/dsh-home-paths": "0.1.2-alpha.4",
|
|
117
|
+
"@deepseek-ai/dsh-fs": "0.1.2-alpha.4",
|
|
118
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.2-alpha.4",
|
|
119
|
+
"@deepseek-ai/dsh-invariants": "0.1.2-alpha.4",
|
|
120
|
+
"@deepseek-ai/dsh-launch-environment": "0.1.2-alpha.4",
|
|
121
|
+
"@deepseek-ai/dsh-llm": "0.1.2-alpha.4",
|
|
122
|
+
"@deepseek-ai/dsh-llm-pi-ai": "0.1.2-alpha.4",
|
|
123
|
+
"@deepseek-ai/dsh-settings": "0.1.2-alpha.4",
|
|
124
|
+
"@deepseek-ai/dsh-tools": "0.1.2-alpha.4",
|
|
125
|
+
"@deepseek-ai/dsh-timeout": "0.1.2-alpha.4",
|
|
126
|
+
"@deepseek-ai/schemastery": "3.18.2",
|
|
121
127
|
"@types/node": "^22.20.0",
|
|
122
128
|
"@types/react": "~18.3.1",
|
|
123
129
|
"react": "^18.3.1",
|
|
124
130
|
"tsdown": "^0.22.2",
|
|
125
131
|
"typescript": "^5.9.3",
|
|
126
132
|
"vitest": "^4.1.8",
|
|
127
|
-
"@tnnevol/dsh-semi-ui": "
|
|
133
|
+
"@tnnevol/dsh-semi-ui": "5.2.1"
|
|
128
134
|
},
|
|
129
135
|
"scripts": {
|
|
130
136
|
"pretypecheck": "pnpm --filter @tnnevol/dsh-semi-ui run build",
|
|
@@ -134,6 +140,6 @@
|
|
|
134
140
|
"test:unit": "vitest run --config vitest.config.ts",
|
|
135
141
|
"test": "pnpm run test:unit",
|
|
136
142
|
"check": "pnpm run typecheck && pnpm run build && pnpm run test:unit",
|
|
137
|
-
"publish:
|
|
143
|
+
"publish:alpha": "pnpm publish --tag alpha --access public"
|
|
138
144
|
}
|
|
139
145
|
}
|