@openvulcan/dsh-vulcancode 0.4.0 → 0.4.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/README.md +103 -38
- package/cordis.patch.yml +4 -0
- package/node_modules/@openvulcan/dsh-decision-guard/lib/client.js +133 -38
- package/node_modules/@openvulcan/dsh-decision-guard/package.json +2 -2
- package/node_modules/@openvulcan/dsh-vulcan-account/lib/client.js +55 -47
- package/node_modules/@openvulcan/dsh-vulcan-account/package.json +2 -2
- package/node_modules/@openvulcan/dsh-vulcan-answers/lib/client.js +30 -30
- package/node_modules/@openvulcan/dsh-vulcan-answers/lib/committed-fiber.d.ts +18 -0
- package/node_modules/@openvulcan/dsh-vulcan-answers/lib/committed-fiber.js +62 -0
- package/node_modules/@openvulcan/dsh-vulcan-answers/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-luaskills/lib/client.js +14 -5
- package/node_modules/@openvulcan/dsh-vulcan-luaskills/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/assets/markdown-memory-guide.md +1 -0
- package/node_modules/@openvulcan/dsh-vulcan-memory/assets/memory-curator/SKILL.md +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/errors.d.ts +7 -0
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/errors.js +11 -0
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/index.d.ts +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/index.js +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/operations.js +22 -3
- package/node_modules/@openvulcan/dsh-vulcan-memory/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/LICENSE +21 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/client.js +509 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/index.d.ts +6 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/index.js +8 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/package.json +42 -0
- package/node_modules/@openvulcan/dsh-vulcan-style/lib/client.js +67 -3
- package/node_modules/@openvulcan/dsh-vulcan-style/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/LICENSE +21 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/client.js +1567 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/cloud.d.ts +39 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/cloud.js +187 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/contract.d.ts +58 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/contract.js +1 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/index.d.ts +49 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/index.js +204 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/package.json +46 -0
- package/node_modules/@openvulcan/openvulcan-account/package.json +1 -1
- package/node_modules/@openvulcan/vulcan-decision/package.json +2 -2
- package/package.json +14 -10
|
@@ -32,6 +32,7 @@ window.__ModuleLoader__.load({
|
|
|
32
32
|
"use strict";
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
34
|
exports.AccountFooter = AccountFooter;
|
|
35
|
+
exports.VulcanMark = VulcanMark;
|
|
35
36
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
36
37
|
/**
|
|
37
38
|
* The OpenVulcan account in the sidebar foot, above Settings: who is signed in and their plan, or
|
|
@@ -70,23 +71,6 @@ window.__ModuleLoader__.load({
|
|
|
70
71
|
view.refresh();
|
|
71
72
|
});
|
|
72
73
|
};
|
|
73
|
-
const signIn = (site) => {
|
|
74
|
-
// Opened during the click, so no popup blocker stops it, and pointed at the page once known.
|
|
75
|
-
const popup = window.open('about:blank', '_blank');
|
|
76
|
-
act(async () => {
|
|
77
|
-
try {
|
|
78
|
-
const { approvalUrl } = await (0, shared_1.callAccount)('POST', `signin?site=${site}`);
|
|
79
|
-
if (popup !== null) {
|
|
80
|
-
popup.opener = null;
|
|
81
|
-
popup.location.href = approvalUrl;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch (failure) {
|
|
85
|
-
popup?.close();
|
|
86
|
-
throw failure;
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
74
|
// Without the plugin routes there is nothing to show or do here.
|
|
91
75
|
if (live === null)
|
|
92
76
|
return null;
|
|
@@ -108,11 +92,17 @@ window.__ModuleLoader__.load({
|
|
|
108
92
|
}
|
|
109
93
|
const failure = live.signInError ?? error;
|
|
110
94
|
const note = failure !== undefined ? t('footer.failed') : live.account.reauthRequired === true ? t('footer.reauth') : t('footer.signedOut');
|
|
111
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "vac-foot", children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: "vac-foot-home", "aria-label": t('footer.open'), title: failure ?? t('footer.open'), onClick: openSettings, children: [(0, jsx_runtime_1.jsx)(VulcanMark, {}), (0, jsx_runtime_1.jsxs)("span", { className: "vac-foot-text", children: [(0, jsx_runtime_1.jsx)("span", { className: "vac-foot-name", children: t('footer.brand') }), (0, jsx_runtime_1.jsx)("span", { className: failure === undefined && live.account.reauthRequired !== true ? 'vac-foot-sub' : 'vac-foot-sub warn', children: note })] })] }), (0, jsx_runtime_1.jsx)("span", { className: "vac-foot-actions", children: shared_1.SITES.map(item => ((0, jsx_runtime_1.jsx)("button", { type: "button", className: "vac-foot-chip", disabled: busy, title: (0, i18n_1.fill)(t('footer.signInAt'), { site: t(`account.site.${item.site}`), domain: item.domain }), onClick: () => {
|
|
95
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "vac-foot", children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: "vac-foot-home", "aria-label": t('footer.open'), title: failure ?? t('footer.open'), onClick: openSettings, children: [(0, jsx_runtime_1.jsx)(VulcanMark, {}), (0, jsx_runtime_1.jsxs)("span", { className: "vac-foot-text", children: [(0, jsx_runtime_1.jsx)("span", { className: "vac-foot-name", children: t('footer.brand') }), (0, jsx_runtime_1.jsx)("span", { className: failure === undefined && live.account.reauthRequired !== true ? 'vac-foot-sub' : 'vac-foot-sub warn', children: note })] })] }), (0, jsx_runtime_1.jsx)("span", { className: "vac-foot-actions", children: shared_1.SITES.map(item => ((0, jsx_runtime_1.jsx)("button", { type: "button", className: "vac-foot-chip", disabled: busy, title: (0, i18n_1.fill)(t('footer.signInAt'), { site: t(`account.site.${item.site}`), domain: item.domain }), onClick: () => { act(() => (0, shared_1.startAccountSignIn)(item.site)); }, children: t(`footer.chip.${item.site}`) }, item.site))) })] }));
|
|
112
96
|
}
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Render the OpenVulcan mark with the requested square size, or use the footer dimensions when omitted.
|
|
99
|
+
* 按指定的方形尺寸渲染 OpenVulcan 标识,未指定时使用侧栏底部的尺寸。
|
|
100
|
+
*/
|
|
101
|
+
function VulcanMark({ size }) {
|
|
102
|
+
// The footer and settings can render at once, so each SVG owns its gradient reference.
|
|
103
|
+
// 侧栏底部与设置页可以同时渲染,因此每个 SVG 使用独立的渐变标识。
|
|
104
|
+
const flameId = (0, react_1.useId)();
|
|
105
|
+
return ((0, jsx_runtime_1.jsxs)("svg", { className: size === undefined ? 'vac-foot-mark' : undefined, width: size, height: size, viewBox: "32 29 232 259", "aria-hidden": "true", focusable: "false", children: [(0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsxs)("linearGradient", { id: flameId, x1: "0%", y1: "100%", x2: "100%", y2: "0%", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0%", stopColor: "#FF6527" }), (0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: "#F44E1C" })] }) }), (0, jsx_runtime_1.jsx)("path", { d: "M 2 0 L 84 0 C 88 0 91 1 95 5 L 153 76 C 159 83 159 95 153 102 L 95 173 C 91 177 88 178 84 178 L 2 178 L 78 89 Z", fill: "currentColor", transform: "translate(30 110)" }), (0, jsx_runtime_1.jsx)("path", { d: "M 73 0 C 64 14 51 28 38 40 C 21 55 7 68 2 87 C -2 107 8 129 25 150 C 39 134 53 119 67 107 C 82 95 91 79 93 60 C 95 40 86 18 73 0 Z", fill: `url(#${flameId})`, transform: "translate(169 29)" })] }));
|
|
116
106
|
}
|
|
117
107
|
|
|
118
108
|
},
|
|
@@ -140,8 +130,8 @@ window.__ModuleLoader__.load({
|
|
|
140
130
|
'account.signedIn': '已登录',
|
|
141
131
|
'account.expires': '凭据有效期至 {expires}',
|
|
142
132
|
'account.reauth': '凭据轮换中断,需要重新登录。',
|
|
143
|
-
'account.waiting': '
|
|
144
|
-
'account.openAgain': '
|
|
133
|
+
'account.waiting': '等待浏览器授权,批准后自动完成登录。',
|
|
134
|
+
'account.openAgain': '打开授权页',
|
|
145
135
|
'account.cancel': '取消登录',
|
|
146
136
|
'account.signOut': '退出登录',
|
|
147
137
|
'account.failed': '登录失败:{error}',
|
|
@@ -153,7 +143,7 @@ window.__ModuleLoader__.load({
|
|
|
153
143
|
'footer.chip.global': '国际',
|
|
154
144
|
'footer.chip.cn': '中国',
|
|
155
145
|
'footer.waiting': '等待授权…',
|
|
156
|
-
'footer.reopen': '
|
|
146
|
+
'footer.reopen': '授权页',
|
|
157
147
|
'footer.cancel': '取消',
|
|
158
148
|
'footer.reauth': '需要重新登录',
|
|
159
149
|
'footer.failed': '登录失败',
|
|
@@ -175,8 +165,8 @@ window.__ModuleLoader__.load({
|
|
|
175
165
|
'account.signedIn': 'Signed in',
|
|
176
166
|
'account.expires': 'Credential valid until {expires}',
|
|
177
167
|
'account.reauth': 'A credential rotation was interrupted; sign in again.',
|
|
178
|
-
'account.waiting': '
|
|
179
|
-
'account.openAgain': 'Open
|
|
168
|
+
'account.waiting': 'Approve in your browser to finish signing in.',
|
|
169
|
+
'account.openAgain': 'Open approval page',
|
|
180
170
|
'account.cancel': 'Cancel sign-in',
|
|
181
171
|
'account.signOut': 'Sign out',
|
|
182
172
|
'account.failed': 'Sign-in failed: {error}',
|
|
@@ -188,7 +178,7 @@ window.__ModuleLoader__.load({
|
|
|
188
178
|
'footer.chip.global': 'Global',
|
|
189
179
|
'footer.chip.cn': 'China',
|
|
190
180
|
'footer.waiting': 'Waiting for approval…',
|
|
191
|
-
'footer.reopen': '
|
|
181
|
+
'footer.reopen': 'Approve',
|
|
192
182
|
'footer.cancel': 'Cancel',
|
|
193
183
|
'footer.reauth': 'Sign in again',
|
|
194
184
|
'footer.failed': 'Sign-in failed',
|
|
@@ -246,6 +236,12 @@ window.__ModuleLoader__.load({
|
|
|
246
236
|
locale: i18n_1.NAMESPACE,
|
|
247
237
|
inject: () => ({ view }),
|
|
248
238
|
}, ({ t, view: injected }) => (0, jsx_runtime_1.jsx)(page_1.AccountPage, { view: injected, t: t })));
|
|
239
|
+
// dsh 0.2.2 declares this optional slot. The injection waits on older hosts.
|
|
240
|
+
// dsh 0.2.2 声明了此可选插槽,旧版宿主上的注入会保持等待。
|
|
241
|
+
ctx.slots.inject('settings.section.icon', () => ctx.slots.register({
|
|
242
|
+
name: 'settings.section.icon',
|
|
243
|
+
id: shared_1.SETTINGS_SECTION,
|
|
244
|
+
}, footer_1.VulcanMark));
|
|
249
245
|
// Above Settings in the sidebar foot.
|
|
250
246
|
ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({
|
|
251
247
|
name: 'sidebar.footer.action',
|
|
@@ -296,23 +292,6 @@ window.__ModuleLoader__.load({
|
|
|
296
292
|
view.refresh();
|
|
297
293
|
});
|
|
298
294
|
};
|
|
299
|
-
const signIn = (site) => {
|
|
300
|
-
// Opened during the click, so no popup blocker stops it, and pointed at the page once known.
|
|
301
|
-
const popup = window.open('about:blank', '_blank');
|
|
302
|
-
act(async () => {
|
|
303
|
-
try {
|
|
304
|
-
const { approvalUrl } = await (0, shared_1.callAccount)('POST', `signin?site=${site}`);
|
|
305
|
-
if (popup !== null) {
|
|
306
|
-
popup.opener = null;
|
|
307
|
-
popup.location.href = approvalUrl;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
catch (failure) {
|
|
311
|
-
popup?.close();
|
|
312
|
-
throw failure;
|
|
313
|
-
}
|
|
314
|
-
});
|
|
315
|
-
};
|
|
316
295
|
let body;
|
|
317
296
|
if (live === undefined)
|
|
318
297
|
body = (0, jsx_runtime_1.jsx)("p", { className: "vac-hint", children: t('loading') });
|
|
@@ -323,13 +302,13 @@ window.__ModuleLoader__.load({
|
|
|
323
302
|
body = ((0, jsx_runtime_1.jsxs)("div", { className: "vac-between", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "vac-inline", children: [(0, jsx_runtime_1.jsx)("span", { className: "vac-badge ok", children: t('account.signedIn') }), (0, jsx_runtime_1.jsx)("strong", { children: t(`account.site.${account.site ?? 'global'}`) }), (0, jsx_runtime_1.jsx)("span", { className: "vac-hint vac-mono", children: shared_1.SITES.find(item => item.site === account.site)?.domain })] }), account.expiresAt === undefined ? null : (0, jsx_runtime_1.jsx)("p", { className: "vac-hint", children: (0, i18n_1.fill)(t('account.expires'), { expires: when(account.expiresAt) }) })] }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "vac-btn", disabled: busy, onClick: () => { act(() => (0, shared_1.callAccount)('POST', 'signout')); }, children: t('account.signOut') })] }));
|
|
324
303
|
}
|
|
325
304
|
else if (live.signIn !== null) {
|
|
326
|
-
body = ((0, jsx_runtime_1.jsxs)("div", { className: "vac-between", children: [(0, jsx_runtime_1.jsx)("span", { children: t('account.waiting') }), (0, jsx_runtime_1.jsxs)("span", { className: "vac-inline", children: [(0, jsx_runtime_1.jsx)("a", { className: "vac-link", href: live.signIn.approvalUrl, target: "_blank", rel: "noopener noreferrer", children: t('account.openAgain') }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "vac-btn sm", disabled: busy, onClick: () => { act(() => (0, shared_1.callAccount)('POST', 'signin/cancel')); }, children: t('account.cancel') })] })] }));
|
|
305
|
+
body = ((0, jsx_runtime_1.jsxs)("div", { className: "vac-between", children: [(0, jsx_runtime_1.jsx)("span", { role: "status", children: t('account.waiting') }), (0, jsx_runtime_1.jsxs)("span", { className: "vac-inline", children: [(0, jsx_runtime_1.jsx)("a", { className: "vac-link", href: live.signIn.approvalUrl, target: "_blank", rel: "noopener noreferrer", children: t('account.openAgain') }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "vac-btn sm", disabled: busy, onClick: () => { act(() => (0, shared_1.callAccount)('POST', 'signin/cancel')); }, children: t('account.cancel') })] })] }));
|
|
327
306
|
}
|
|
328
307
|
else {
|
|
329
|
-
body = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [live.account.reauthRequired === true ? (0, jsx_runtime_1.jsx)("div", { className: "vac-alert warn", children: t('account.reauth') }) : null, (0, jsx_runtime_1.jsx)("div", { className: "vac-sites", children: shared_1.SITES.map(item => ((0, jsx_runtime_1.jsxs)("button", { type: "button", className: "vac-site", disabled: busy, onClick: () => {
|
|
308
|
+
body = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [live.account.reauthRequired === true ? (0, jsx_runtime_1.jsx)("div", { className: "vac-alert warn", children: t('account.reauth') }) : null, (0, jsx_runtime_1.jsx)("div", { className: "vac-sites", children: shared_1.SITES.map(item => ((0, jsx_runtime_1.jsxs)("button", { type: "button", className: "vac-site", disabled: busy, onClick: () => { act(() => (0, shared_1.startAccountSignIn)(item.site)); }, children: [(0, jsx_runtime_1.jsx)("strong", { children: t(`account.site.${item.site}`) }), (0, jsx_runtime_1.jsx)("span", { children: item.domain }), (0, jsx_runtime_1.jsxs)("span", { style: { fontFamily: 'inherit', color: 'var(--vk-signal)' }, children: [t('account.signIn'), " \u2192"] })] }, item.site))) })] }));
|
|
330
309
|
}
|
|
331
310
|
const failure = live?.signInError === undefined ? error : (0, i18n_1.fill)(t('account.failed'), { error: live.signInError });
|
|
332
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "vac vac-page", children: [(0, jsx_runtime_1.jsxs)("
|
|
311
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "vac vac-page", "data-vulcan-settings-width": "readable", children: [(0, jsx_runtime_1.jsxs)("header", { className: "vac-page-head", "data-vulcan-settings-header": true, children: [(0, jsx_runtime_1.jsx)("h2", { children: t('page.title') }), (0, jsx_runtime_1.jsx)("p", { className: "vac-lead", children: t('page.lead') })] }), (0, jsx_runtime_1.jsxs)("section", { className: "vac-section", children: [(0, jsx_runtime_1.jsx)("div", { className: "vac-section-head", children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h3", { className: "vac-section-title", children: t('account.title') }), live?.account.signedIn === true ? null : (0, jsx_runtime_1.jsx)("p", { className: "vac-section-lead", children: t('account.lead') })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "vac-section-body", children: [body, failure === undefined ? null : (0, jsx_runtime_1.jsx)("p", { className: "vac-error", role: "alert", children: failure })] })] })] }));
|
|
333
312
|
}
|
|
334
313
|
/** The suite's entry on the Plugins page: what it holds, and the way to its settings. */
|
|
335
314
|
function PluginPageSummary({ view, t, open }) {
|
|
@@ -349,6 +328,7 @@ window.__ModuleLoader__.load({
|
|
|
349
328
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
350
329
|
exports.HostWatch = exports.SITES = exports.GUARD_SECTION = exports.SUITE_PACKAGE = exports.SETTINGS_SECTION = exports.PACKAGE_NAME = void 0;
|
|
351
330
|
exports.callAccount = callAccount;
|
|
331
|
+
exports.startAccountSignIn = startAccountSignIn;
|
|
352
332
|
exports.messageOf = messageOf;
|
|
353
333
|
/** Checked against `package.json` by `scripts/bundle-client.mjs`. */
|
|
354
334
|
exports.PACKAGE_NAME = '@openvulcan/dsh-vulcan-account';
|
|
@@ -372,6 +352,34 @@ window.__ModuleLoader__.load({
|
|
|
372
352
|
throw new Error(answer?.error?.message ?? `HTTP ${response.status}`);
|
|
373
353
|
return answer.value;
|
|
374
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* Start device sign-in for the selected site and request its authorization page. Resolves after
|
|
357
|
+
* asking the browser or desktop shell to open it, and rejects if the sign-in request fails.
|
|
358
|
+
* 为所选站点发起设备登录并请求打开授权页。向浏览器或桌面壳发出打开请求后完成,登录请求失败时拒绝。
|
|
359
|
+
*/
|
|
360
|
+
async function startAccountSignIn(site) {
|
|
361
|
+
// A browser needs the click to open a tab before the asynchronous sign-in request.
|
|
362
|
+
// 浏览器需要利用点击手势在异步登录请求之前打开标签页。
|
|
363
|
+
const popup = window.open('about:blank', '_blank');
|
|
364
|
+
try {
|
|
365
|
+
// The account service validates the approval URL against the selected site and sign-in state.
|
|
366
|
+
// 账号服务会根据所选站点和登录状态验证授权地址。
|
|
367
|
+
const { approvalUrl } = await callAccount('POST', `signin?site=${site}`);
|
|
368
|
+
if (popup === null) {
|
|
369
|
+
// dsh Desktop denies the blank tab and sends HTTP(S) URLs directly to the system browser.
|
|
370
|
+
// dsh 桌面端拒绝空白标签页,并将 HTTP(S) 地址直接交给系统浏览器。
|
|
371
|
+
window.open(approvalUrl, '_blank', 'noopener,noreferrer');
|
|
372
|
+
}
|
|
373
|
+
else if (!popup.closed) {
|
|
374
|
+
popup.opener = null;
|
|
375
|
+
popup.location.replace(approvalUrl);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
catch (failure) {
|
|
379
|
+
popup?.close();
|
|
380
|
+
throw failure;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
375
383
|
function messageOf(error) {
|
|
376
384
|
return error instanceof Error ? error.message : String(error);
|
|
377
385
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openvulcan/dsh-vulcan-account",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "OpenVulcan account for DeepSeek Harness: sign in once, used by every VulcanCode plugin.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"icon": "./assets/account-icon.png",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@openvulcan/openvulcan-account": "0.4.
|
|
45
|
+
"@openvulcan/openvulcan-account": "0.4.4"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"@deepseek-ai/cordis": "^4.0.5",
|