dsh-super-code 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/client/index.js +104 -0
- package/lib/dsh/index.d.ts +0 -1
- package/lib/dsh/index.d.ts.map +1 -1
- package/lib/dsh/index.js +3 -0
- package/lib/dsh/index.js.map +1 -1
- package/lib/dsh/preset-installation.d.ts +43 -0
- package/lib/dsh/preset-installation.d.ts.map +1 -0
- package/lib/dsh/preset-installation.js +193 -0
- package/lib/dsh/preset-installation.js.map +1 -0
- package/package.json +12 -13
package/README.md
CHANGED
|
@@ -20,9 +20,9 @@ It selects research, design, development, verification, and optimization methods
|
|
|
20
20
|
|
|
21
21
|
## 在 DeepSeek Harness 中安装 · Installation
|
|
22
22
|
|
|
23
|
-
要求 DeepSeek Harness 0.1.5-rc.
|
|
23
|
+
要求 DeepSeek Harness 0.1.5-rc.1 或更高版本。
|
|
24
24
|
|
|
25
|
-
Requires DeepSeek Harness 0.1.5-rc.
|
|
25
|
+
Requires DeepSeek Harness 0.1.5-rc.1 or later.
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
28
|
dsh plugin --profile web add dsh-super-code
|
|
@@ -32,6 +32,12 @@ dsh plugin --profile web add dsh-super-code
|
|
|
32
32
|
|
|
33
33
|
After installation, select `super-code` in "Settings" - "Agent Presets" in Harness; models, permissions, and tools use the Harness configuration.
|
|
34
34
|
|
|
35
|
+
若安装后找不到预设,插件会在首次加载时尝试安装一份用户预设。也可打开“设置”→“插件”→“插件配置”中的 **Super Code** 查看状态并手动安装;名称冲突时换个名称即可,已有预设不会被覆盖。用户副本不会自动更新,删除后也不会在重启时自动重装。
|
|
36
|
+
|
|
37
|
+
If the preset is missing, the plugin attempts a one-time user-preset installation on first load. Open **Super Code** under “Settings” → “Plugins” → “Plugin configuration” to check its status or install manually. Choose another name if it is taken. Existing presets are preserved; user copies are not automatically updated or reinstalled after deletion.
|
|
38
|
+
|
|
39
|
+
[版本记录 · Changelog](docs/CHANGELOG.md)
|
|
40
|
+
|
|
35
41
|
[](docs/images/preset-settings.png)
|
|
36
42
|
|
|
37
43
|
当前版本不使用三模型池,也不需要单独配置插件模型。在 Harness“设置”→“模型”中配置提供方,再从对话输入框下方选择模型和推理等级;已有可用配置时直接沿用。插件跟随当前会话的模型,子 Agent 在未单独覆盖时继承父 Agent 的选择。
|
package/client/index.js
CHANGED
|
@@ -14,6 +14,20 @@ const { SessionEventStream } = require('@deepseek-ai/dsh-api-session-controller'
|
|
|
14
14
|
|
|
15
15
|
const LOCALE_NS = 'dshSuperCode'
|
|
16
16
|
const zh = {
|
|
17
|
+
'preset.description': '统一编码预设,按需协作。', 'preset.refresh': '刷新状态',
|
|
18
|
+
'preset.state.available': '预设可用', 'preset.state.installed': '用户预设已安装', 'preset.state.conflict': '已有同名预设',
|
|
19
|
+
'preset.state.missing': '尚未安装', 'preset.state.broken': '预设不可用',
|
|
20
|
+
'preset.availableHint': '可在新对话中选择此预设。用户副本不会自动覆盖或更新。',
|
|
21
|
+
'preset.installHint': '安装一份用户预设;已有内容会保留,重名时请换个名称。',
|
|
22
|
+
'preset.userConflict': '用户目录中已有同名预设,已保留。可换名安装独立副本。',
|
|
23
|
+
'preset.readonly': '此宿主未提供用户预设目录,无法安装副本。',
|
|
24
|
+
'preset.name': '预设名称', 'preset.nameHint': '使用小写字母、数字和连字符,最多 64 个字符。安装后在新对话中选择。',
|
|
25
|
+
'preset.install': '安装用户预设', 'preset.working': '处理中…',
|
|
26
|
+
'preset.error.invalid-name': '名称格式不正确,请使用小写字母、数字和连字符。',
|
|
27
|
+
'preset.error.name-taken': '该名称已被占用,原预设未改动。请换个名称。',
|
|
28
|
+
'preset.error.no-user-root': '此宿主没有可写的用户预设目录。',
|
|
29
|
+
'preset.error.install-failed': '安装未完成,请检查预设目录的写入权限后重试。',
|
|
30
|
+
'preset.error.connection': '暂时无法读取预设状态,请刷新重试。',
|
|
17
31
|
'task.memory': '任务档案', 'task.other': '其他任务', 'task.history': '任务记录',
|
|
18
32
|
'status.active': '进行中', 'status.paused': '已暂停', 'status.completed': '已完成', 'status.cancelled': '已取消',
|
|
19
33
|
'next': '下一步:', 'tree.title': '协作执行', 'tree.count': '显示 {shown} / {total} · 运行中 {running}',
|
|
@@ -28,6 +42,20 @@ const zh = {
|
|
|
28
42
|
'detail.path': 'Agent 路径', 'detail.title': 'Agent 详情', 'detail.refresh': '刷新对话详情', 'detail.task': '任务', 'detail.agent': 'Agent', 'detail.interrupted': 'Agent · 已中断', 'detail.error': '执行错误', 'detail.incomplete': '执行未完成,请稍后重试。', 'detail.input': '输入', 'detail.output': '输出', 'detail.cacheRead': '缓存读取', 'detail.cacheWrite': '缓存写入', 'detail.total': 'Token 总量', 'detail.hitRate': '缓存命中率', 'detail.moreUsage': '用量详情', 'detail.unavailable': '未提供', 'detail.reading': '正在读取对话…', 'detail.read': '读取中…', 'detail.older': '加载更早记录', 'detail.latest': '回到最新', 'detail.empty': '暂无执行内容', 'detail.new': '有新内容 · 查看最新', 'detail.loadError': '对话详情读取失败', 'detail.connection': '连接中断,正在重连', 'detail.historyError': '历史记录读取失败', 'detail.open': '展开全文', 'detail.noAccess': '无法打开详情,请重试', 'tree.loadError': '部分执行记录读取失败,请刷新重试', 'detail.unknown': '用量未知', 'main.agent': '主 Agent', 'tree.open': '点击查看详情', 'tree.expand': '展开', 'tree.collapse': '收起', 'image': '[图片]'
|
|
29
43
|
}
|
|
30
44
|
const en = {
|
|
45
|
+
'preset.description': 'One coding preset with on-demand collaboration.', 'preset.refresh': 'Refresh status',
|
|
46
|
+
'preset.state.available': 'Preset available', 'preset.state.installed': 'User preset installed', 'preset.state.conflict': 'Preset name already exists',
|
|
47
|
+
'preset.state.missing': 'Not installed', 'preset.state.broken': 'Preset unavailable',
|
|
48
|
+
'preset.availableHint': 'Select this preset in a new conversation. User copies are never overwritten or updated automatically.',
|
|
49
|
+
'preset.installHint': 'Install a user copy. Existing content is preserved; choose another name if it is taken.',
|
|
50
|
+
'preset.userConflict': 'A user preset with this name already exists and was preserved. Choose another name for a separate copy.',
|
|
51
|
+
'preset.readonly': 'This host does not provide a user preset directory.',
|
|
52
|
+
'preset.name': 'Preset name', 'preset.nameHint': 'Lowercase letters, digits and hyphens, up to 64 characters. Select it in a new conversation after installing.',
|
|
53
|
+
'preset.install': 'Install user preset', 'preset.working': 'Working…',
|
|
54
|
+
'preset.error.invalid-name': 'Use lowercase letters, digits and hyphens for the name.',
|
|
55
|
+
'preset.error.name-taken': 'This name is taken. The existing preset was preserved. Choose another name.',
|
|
56
|
+
'preset.error.no-user-root': 'This host has no writable user preset directory.',
|
|
57
|
+
'preset.error.install-failed': 'Installation failed. Check directory write permissions and retry.',
|
|
58
|
+
'preset.error.connection': 'Preset status is unavailable. Refresh to try again.',
|
|
31
59
|
'task.memory': 'Task memory', 'task.other': 'Other tasks', 'task.history': 'Task history',
|
|
32
60
|
'status.active': 'Active', 'status.paused': 'Paused', 'status.completed': 'Completed', 'status.cancelled': 'Cancelled', 'next': 'Next: ',
|
|
33
61
|
'tree.title': 'Collaborative execution', 'tree.count': 'Showing {shown} / {total} · Running {running}', 'tree.refresh': 'Refresh execution records', 'tree.legend.active': 'Running', 'tree.legend.idle': 'Idle', 'tree.legend.stopped': 'Stopped', 'tree.legend.unavailable': 'Unavailable', 'tree.empty': 'No sessions', 'tree.zoom.out': 'Zoom out', 'tree.zoom.in': 'Zoom in', 'tree.fit': 'Fit to window', 'tree.organize': 'Organize automatically', 'tree.collapsed': '{count} collapsed', 'tree.more': 'Show more', 'tree.canvas': 'Drag to pan, scroll to zoom, double-click empty space to fit', 'tree.aria': 'Agent execution tree', 'tree.status': 'Status colors', 'tree.usage': 'This node and all known descendants. {partial}Tokens {tokens}; cache reads {cache}; {agents} agents', 'usage.unknown': 'Usage —', 'usage.cache': 'Cache {value}%', 'usage.partial': 'partial', 'usage.incomplete': 'Some records or usage are unavailable; showing known values only.',
|
|
@@ -761,6 +789,63 @@ function AgentDetail({ useTabInfo, useSessions, createInspector, detailStates, t
|
|
|
761
789
|
} }, text(t, 'detail.new')))
|
|
762
790
|
}
|
|
763
791
|
|
|
792
|
+
// Explicit public Remote contribution; no model tools or private transport hooks.
|
|
793
|
+
const presetRemoteContribution = {
|
|
794
|
+
package: 'dsh-super-code',
|
|
795
|
+
descriptors: ['status', 'installPreset'].map(method => ({
|
|
796
|
+
id: `dsh-super-code:superCodePresets/${method}`, service: 'superCodePresets',
|
|
797
|
+
namespace: 'superCodePresets', method, invocation: { kind: 'direct' },
|
|
798
|
+
parameters: method === 'installPreset' ? [{ name: 'id', wire: 'id', source: 'json', codec: { mode: 'strict', typeSymbol: 'dsh-super-code#PresetId', schema: { parse(value) {
|
|
799
|
+
if (typeof value !== 'string' || !/^[a-z0-9][a-z0-9-]{0,63}$/.test(value)) throw new Error('Invalid preset name')
|
|
800
|
+
return value
|
|
801
|
+
} } } }] : [],
|
|
802
|
+
result: { mode: 'src-json' },
|
|
803
|
+
})),
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
function PresetSettings({ api, t }) {
|
|
807
|
+
const [status, setStatus] = useState(null), [name, setName] = useState('super-code')
|
|
808
|
+
const [busy, setBusy] = useState(true), [error, setError] = useState('')
|
|
809
|
+
const alive = useRef(false), pending = useRef(false)
|
|
810
|
+
const run = async install => {
|
|
811
|
+
if (pending.current) return
|
|
812
|
+
pending.current = true; setBusy(true); setError('')
|
|
813
|
+
try {
|
|
814
|
+
const response = install ? await api.installPreset(name.trim()) : await api.status()
|
|
815
|
+
if (!response.ok) throw new Error('Remote unavailable')
|
|
816
|
+
if (!alive.current) return
|
|
817
|
+
const value = response.value
|
|
818
|
+
setStatus(install ? value.status : value)
|
|
819
|
+
if (install && !value.ok) setError(t(`preset.error.${value.error}`))
|
|
820
|
+
} catch {
|
|
821
|
+
if (alive.current) setError(t('preset.error.connection'))
|
|
822
|
+
} finally {
|
|
823
|
+
pending.current = false
|
|
824
|
+
if (alive.current) setBusy(false)
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
useEffect(() => { alive.current = true; run(false); return () => { alive.current = false } }, [api])
|
|
828
|
+
const available = status && ['available', 'installed'].includes(status.state)
|
|
829
|
+
return React.createElement('section', { className: 'dsh-super-code-settings', 'aria-label': 'Super Code' },
|
|
830
|
+
React.createElement('header', null,
|
|
831
|
+
React.createElement('div', null, React.createElement('h3', null, 'Super Code'), React.createElement('p', null, t('preset.description'))),
|
|
832
|
+
React.createElement('button', { type: 'button', disabled: busy, onClick: () => run(false), 'aria-label': t('preset.refresh') }, t('preset.refresh'))),
|
|
833
|
+
status && React.createElement('p', { className: 'dsh-super-code-preset-status', role: 'status', 'data-available': available },
|
|
834
|
+
React.createElement('span', { 'aria-hidden': true }, '●'), ' ', t(`preset.state.${status.state}`), ' · ', status.id),
|
|
835
|
+
status && React.createElement('p', null, t(available ? 'preset.availableHint' : 'preset.installHint')),
|
|
836
|
+
status?.userConflict && status.state !== 'conflict' && React.createElement('p', null, t('preset.userConflict')),
|
|
837
|
+
status && !status.authorable && React.createElement('p', { role: 'note' }, t('preset.readonly')),
|
|
838
|
+
status?.authorable && React.createElement('form', { onSubmit: event => { event.preventDefault(); run(true) } },
|
|
839
|
+
React.createElement('label', { htmlFor: 'super-code-preset-name' }, t('preset.name')),
|
|
840
|
+
React.createElement('div', { className: 'dsh-super-code-install-row' },
|
|
841
|
+
React.createElement('input', { id: 'super-code-preset-name', value: name, maxLength: 64, disabled: busy,
|
|
842
|
+
pattern: '[a-z0-9][a-z0-9\\-]{0,63}', required: true, autoComplete: 'off', spellCheck: false,
|
|
843
|
+
'aria-describedby': 'super-code-preset-name-hint', onChange: event => setName(event.target.value) }),
|
|
844
|
+
React.createElement('button', { type: 'submit', disabled: busy || !/^[a-z0-9][a-z0-9-]{0,63}$/.test(name.trim()) }, t(busy ? 'preset.working' : 'preset.install'))),
|
|
845
|
+
React.createElement('small', { id: 'super-code-preset-name-hint' }, t('preset.nameHint'))),
|
|
846
|
+
error && React.createElement('p', { role: 'alert' }, error))
|
|
847
|
+
}
|
|
848
|
+
|
|
764
849
|
const inject = [
|
|
765
850
|
'slots', 'remote', 'remote.session', 'sessions', 'locale',
|
|
766
851
|
'sidebarRightTabs', 'sidebarRight',
|
|
@@ -770,10 +855,29 @@ function apply(ctx) {
|
|
|
770
855
|
const locale = ctx.locale || { register: () => () => {}, bind: () => key => zh[key] || key }
|
|
771
856
|
ctx.effect(() => locale.register(LOCALE_NS, { zh, en }), 'dsh-super-code: dictionaries')
|
|
772
857
|
const t = locale.bind(LOCALE_NS)
|
|
858
|
+
ctx.effect(async () => {
|
|
859
|
+
const owner = ctx
|
|
860
|
+
await owner.remote.$mount(presetRemoteContribution)
|
|
861
|
+
owner.inject(['remote.superCodePresets'], ready => ready.slots.inject('settings.plugin.item', () => ready.slots.register({
|
|
862
|
+
name: 'settings.plugin.item', key: 'super-code', locale: LOCALE_NS,
|
|
863
|
+
inject: () => ({ api: ready.remote.superCodePresets, t }),
|
|
864
|
+
}, PresetSettings)))
|
|
865
|
+
})
|
|
773
866
|
ctx.effect(() => {
|
|
774
867
|
const style = document.createElement('style')
|
|
775
868
|
style.dataset.dshSuperCode = 'true'
|
|
776
869
|
style.textContent = `
|
|
870
|
+
.dsh-super-code-settings{padding:20px;border:1px solid var(--dsw-alias-border-l1,#dedfe3);border-radius:12px;line-height:1.6;font-size:13px}
|
|
871
|
+
.dsh-super-code-settings header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
|
|
872
|
+
.dsh-super-code-settings h3{margin:0;font-size:15px;font-weight:600}.dsh-super-code-settings p{margin:8px 0;color:var(--dsw-alias-label-secondary,#70757d)}
|
|
873
|
+
.dsh-super-code-settings button,.dsh-super-code-settings input{font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l1,#dedfe3);border-radius:7px;background:transparent;padding:7px 10px;min-height:34px}
|
|
874
|
+
.dsh-super-code-settings button{cursor:pointer;white-space:nowrap}.dsh-super-code-settings button:disabled{opacity:.45;cursor:default}
|
|
875
|
+
.dsh-super-code-settings form{margin-top:16px}.dsh-super-code-settings label{display:block;margin-bottom:6px}
|
|
876
|
+
.dsh-super-code-install-row{display:flex;gap:8px;flex-wrap:wrap}.dsh-super-code-install-row input{flex:1;min-width:140px}
|
|
877
|
+
.dsh-super-code-settings small{display:block;margin-top:6px;color:var(--dsw-alias-label-secondary,#70757d)}
|
|
878
|
+
.dsh-super-code-settings .dsh-super-code-preset-status{color:inherit}.dsh-super-code-preset-status span{color:#b87716}.dsh-super-code-preset-status[data-available=true] span{color:#008b78}
|
|
879
|
+
.dsh-super-code-settings [role=alert]{color:var(--dsw-color-text-error,#bd423b)}.dsh-super-code-settings :focus-visible{outline:2px solid var(--dsw-color-primary,#3276dc);outline-offset:2px}
|
|
880
|
+
|
|
777
881
|
.dsh-super-code-tree{--agent-muted:var(--dsw-alias-label-secondary,#70757d);--agent-line:var(--dsw-alias-border-l1,#dedfe3);height:100%;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:auto;font-size:13px;letter-spacing:0;color:inherit}
|
|
778
882
|
.dsh-super-code-tree>header,.dsh-super-code-tree>.dsh-super-code-graph-controls,.dsh-super-code-tree>.dsh-super-code-graph-legend,.dsh-super-code-tree>.dsh-super-code-history-controls{flex-shrink:0}
|
|
779
883
|
.dsh-super-code-tree-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 18px 16px}
|
package/lib/dsh/index.d.ts
CHANGED
package/lib/dsh/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,eAAO,MAAM,IAAI,eAAe,CAAA;AAEhC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAMxC;AAED,eAAe,KAAK,CAAA"}
|
package/lib/dsh/index.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
/** Host projections and preset installation; execution belongs to Harness. */
|
|
2
|
+
import { applyPresetInstallation } from './preset-installation.js';
|
|
1
3
|
import { superAgentUsageProjectionDefinition } from '../super-agent-usage.js';
|
|
2
4
|
import { taskMemoryProjection } from '../task-memory-projection.js';
|
|
3
5
|
export const name = 'super-code';
|
|
4
6
|
export function apply(ctx) {
|
|
7
|
+
applyPresetInstallation(ctx);
|
|
5
8
|
ctx.inject(['sessionProjections'], projectionCtx => {
|
|
6
9
|
projectionCtx.sessionProjections.register(superAgentUsageProjectionDefinition);
|
|
7
10
|
projectionCtx.sessionProjections.register(taskMemoryProjection);
|
package/lib/dsh/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,OAAO,EAAE,mCAAmC,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,MAAM,CAAC,MAAM,IAAI,GAAG,YAAY,CAAA;AAEhC,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,EAAE,aAAa,CAAC,EAAE;QACjD,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAA;QAC9E,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,eAAe,KAAK,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import { type AgentPresets } from '@deepseek-ai/dsh-agent-presets';
|
|
3
|
+
import type { SettingsScope } from '@deepseek-ai/dsh-settings';
|
|
4
|
+
import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
|
|
5
|
+
interface InstallationSettings {
|
|
6
|
+
checked: boolean;
|
|
7
|
+
installedId: string;
|
|
8
|
+
}
|
|
9
|
+
export interface PresetInstallationStatus {
|
|
10
|
+
state: 'available' | 'installed' | 'conflict' | 'missing' | 'broken';
|
|
11
|
+
id: string;
|
|
12
|
+
authorable: boolean;
|
|
13
|
+
userConflict: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface PresetInstallationResult {
|
|
16
|
+
ok: boolean;
|
|
17
|
+
status: PresetInstallationStatus;
|
|
18
|
+
error?: 'invalid-name' | 'name-taken' | 'no-user-root' | 'install-failed';
|
|
19
|
+
}
|
|
20
|
+
/** Serialized writes protect double clicks; mkdir claims only an unoccupied name. */
|
|
21
|
+
export declare class PresetInstaller {
|
|
22
|
+
private readonly roster;
|
|
23
|
+
private readonly settings;
|
|
24
|
+
private readonly bundledRoot;
|
|
25
|
+
private readonly baseUrl;
|
|
26
|
+
private tail;
|
|
27
|
+
constructor(roster: Pick<AgentPresets, 'list' | 'roots'>, settings: SettingsScope<InstallationSettings>, bundledRoot?: string, baseUrl?: string);
|
|
28
|
+
status(): Promise<PresetInstallationStatus>;
|
|
29
|
+
initialize(): Promise<void>;
|
|
30
|
+
install(id: unknown): Promise<PresetInstallationResult>;
|
|
31
|
+
private occupied;
|
|
32
|
+
private installNow;
|
|
33
|
+
private enqueue;
|
|
34
|
+
}
|
|
35
|
+
export declare class SuperCodePresets extends TypertRemoteService {
|
|
36
|
+
private readonly installer;
|
|
37
|
+
constructor(ctx: Context, installer: PresetInstaller);
|
|
38
|
+
status(): Promise<PresetInstallationStatus>;
|
|
39
|
+
installPreset(id: unknown): Promise<PresetInstallationResult>;
|
|
40
|
+
}
|
|
41
|
+
export declare function applyPresetInstallation(ctx: Context): void;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=preset-installation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-installation.d.ts","sourceRoot":"","sources":["../../src/dsh/preset-installation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAkD,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAClH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAU,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAE9E,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AACD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;IACpE,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;CACtB;AACD,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,wBAAwB,CAAA;IAChC,KAAK,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,CAAA;CAC1E;AAWD,qFAAqF;AACrF,qBAAa,eAAe;IAGxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,IAAI,CAAsC;gBAE/B,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,EAC5C,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC7C,WAAW,GAAE,MAAmB,EAChC,OAAO,GAAE,MAAwC;IAG9D,MAAM,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAgB3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;YAI/C,QAAQ;YAOR,UAAU;IAoCxB,OAAO,CAAC,OAAO;CAKhB;AAED,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;gBAC/B,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe;IAKpD,MAAM,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAE3C,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAC9D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAY1D"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
/** Host-only preset discovery repair; never part of a model's tool surface. */
|
|
36
|
+
import { cp, lstat, mkdir, mkdtemp, readdir, rm } from 'node:fs/promises';
|
|
37
|
+
import { join, resolve } from 'node:path';
|
|
38
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
39
|
+
import s from '@deepseek-ai/schemastery';
|
|
40
|
+
import { copyComposition, discoverPresets, writableRoot } from '@deepseek-ai/dsh-agent-presets';
|
|
41
|
+
import { Remote, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
|
|
42
|
+
const sourceRoot = fileURLToPath(new URL('../../presets/', import.meta.url));
|
|
43
|
+
const validId = /^[a-z0-9][a-z0-9-]{0,63}$/;
|
|
44
|
+
async function exists(path) {
|
|
45
|
+
try {
|
|
46
|
+
await lstat(path);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (error.code === 'ENOENT')
|
|
51
|
+
return false;
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Serialized writes protect double clicks; mkdir claims only an unoccupied name. */
|
|
56
|
+
export class PresetInstaller {
|
|
57
|
+
roster;
|
|
58
|
+
settings;
|
|
59
|
+
bundledRoot;
|
|
60
|
+
baseUrl;
|
|
61
|
+
tail = Promise.resolve();
|
|
62
|
+
constructor(roster, settings, bundledRoot = sourceRoot, baseUrl = pathToFileURL(bundledRoot).href) {
|
|
63
|
+
this.roster = roster;
|
|
64
|
+
this.settings = settings;
|
|
65
|
+
this.bundledRoot = bundledRoot;
|
|
66
|
+
this.baseUrl = baseUrl;
|
|
67
|
+
}
|
|
68
|
+
async status() {
|
|
69
|
+
const savedId = this.settings.get().installedId;
|
|
70
|
+
const id = validId.test(savedId) ? savedId : 'super-code';
|
|
71
|
+
const presets = await this.roster.list();
|
|
72
|
+
const preset = presets.find(row => row.id === id);
|
|
73
|
+
const authorable = this.roster.roots.some(root => root.trust === 'user');
|
|
74
|
+
const occupied = await this.occupied(id);
|
|
75
|
+
const userConflict = occupied && this.settings.get().installedId !== id;
|
|
76
|
+
if (preset) {
|
|
77
|
+
const owned = preset.trust === 'system' && resolve(preset.path) === join(this.bundledRoot, 'super-code', 'agent.cordis.yml');
|
|
78
|
+
return { id, authorable, userConflict, state: preset.broken ? 'broken' : owned ? 'available'
|
|
79
|
+
: preset.trust === 'user' && this.settings.get().installedId === id ? 'installed' : 'conflict' };
|
|
80
|
+
}
|
|
81
|
+
return { id, authorable, userConflict, state: occupied ? 'conflict' : 'missing' };
|
|
82
|
+
}
|
|
83
|
+
async initialize() {
|
|
84
|
+
await this.enqueue(async () => {
|
|
85
|
+
if (this.settings.get().checked)
|
|
86
|
+
return;
|
|
87
|
+
const status = await this.status();
|
|
88
|
+
// Persist intent first: a failure or subsequent user deletion must not
|
|
89
|
+
// trigger a new filesystem write on every host restart.
|
|
90
|
+
await this.settings.update({ checked: true });
|
|
91
|
+
if (status.state === 'missing' && status.authorable)
|
|
92
|
+
await this.installNow('super-code');
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async install(id) {
|
|
96
|
+
return await this.enqueue(() => this.installNow(id));
|
|
97
|
+
}
|
|
98
|
+
async occupied(id) {
|
|
99
|
+
for (const root of this.roster.roots.filter(root => root.trust === 'user')) {
|
|
100
|
+
if (await exists(join(writableRoot([root], id), id)))
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
async installNow(value) {
|
|
106
|
+
const reject = async (error) => ({ ok: false, error, status: await this.status() });
|
|
107
|
+
if (typeof value !== 'string' || !validId.test(value))
|
|
108
|
+
return reject('invalid-name');
|
|
109
|
+
const id = value;
|
|
110
|
+
if (!this.roster.roots.some(root => root.trust === 'user'))
|
|
111
|
+
return reject('no-user-root');
|
|
112
|
+
if ((await this.roster.list()).some(row => row.id === id) || await this.occupied(id))
|
|
113
|
+
return reject('name-taken');
|
|
114
|
+
let staging = '';
|
|
115
|
+
let claimed = false;
|
|
116
|
+
const target = join(writableRoot(this.roster.roots, id), id);
|
|
117
|
+
try {
|
|
118
|
+
const source = (await discoverPresets([{ path: this.bundledRoot, trust: 'system' }], this.baseUrl))
|
|
119
|
+
.find(preset => preset.id === 'super-code' && !preset.broken);
|
|
120
|
+
if (!source)
|
|
121
|
+
throw new Error('Bundled super-code preset unavailable');
|
|
122
|
+
const root = writableRoot(this.roster.roots, id);
|
|
123
|
+
await mkdir(root, { recursive: true, mode: 0o700 });
|
|
124
|
+
staging = await mkdtemp(join(root, '.super-code-install-'));
|
|
125
|
+
// The host copy helper can clean up its destination on failure. Isolate
|
|
126
|
+
// it from user-owned paths, then exclusively claim the final directory.
|
|
127
|
+
const prepared = await copyComposition([{ path: staging, trust: 'user' }], source, id, id);
|
|
128
|
+
await mkdir(target, { mode: 0o700 });
|
|
129
|
+
claimed = true;
|
|
130
|
+
for (const entry of await readdir(prepared)) {
|
|
131
|
+
await cp(join(prepared, entry), join(target, entry), { recursive: true, force: false, errorOnExist: true });
|
|
132
|
+
}
|
|
133
|
+
await this.settings.update({ checked: true, installedId: id });
|
|
134
|
+
claimed = false;
|
|
135
|
+
return { ok: true, status: await this.status() };
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (claimed)
|
|
139
|
+
await rm(target, { recursive: true, force: true });
|
|
140
|
+
return reject(error.code === 'EEXIST' ? 'name-taken' : 'install-failed');
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
if (staging)
|
|
144
|
+
await rm(staging, { recursive: true, force: true });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
enqueue(run) {
|
|
148
|
+
const next = this.tail.then(run);
|
|
149
|
+
this.tail = next.catch(() => { });
|
|
150
|
+
return next;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
let SuperCodePresets = (() => {
|
|
154
|
+
let _classSuper = TypertRemoteService;
|
|
155
|
+
let _instanceExtraInitializers = [];
|
|
156
|
+
let _status_decorators;
|
|
157
|
+
let _installPreset_decorators;
|
|
158
|
+
return class SuperCodePresets extends _classSuper {
|
|
159
|
+
static {
|
|
160
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
161
|
+
_status_decorators = [Remote];
|
|
162
|
+
_installPreset_decorators = [Remote];
|
|
163
|
+
__esDecorate(this, null, _status_decorators, { kind: "method", name: "status", static: false, private: false, access: { has: obj => "status" in obj, get: obj => obj.status }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
164
|
+
__esDecorate(this, null, _installPreset_decorators, { kind: "method", name: "installPreset", static: false, private: false, access: { has: obj => "installPreset" in obj, get: obj => obj.installPreset }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
165
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
166
|
+
}
|
|
167
|
+
installer = __runInitializers(this, _instanceExtraInitializers);
|
|
168
|
+
constructor(ctx, installer) {
|
|
169
|
+
super(ctx, 'superCodePresets');
|
|
170
|
+
this.installer = installer;
|
|
171
|
+
}
|
|
172
|
+
status() { return this.installer.status(); }
|
|
173
|
+
installPreset(id) { return this.installer.install(id); }
|
|
174
|
+
};
|
|
175
|
+
})();
|
|
176
|
+
export { SuperCodePresets };
|
|
177
|
+
export function applyPresetInstallation(ctx) {
|
|
178
|
+
ctx.inject(['agentPresets', 'settings'], async (owner) => {
|
|
179
|
+
const settings = owner.settings.register('super-code', s.object({
|
|
180
|
+
checked: s.boolean().default(false),
|
|
181
|
+
installedId: s.string().default(''),
|
|
182
|
+
}));
|
|
183
|
+
const installer = new PresetInstaller(owner.agentPresets, settings, sourceRoot, owner.baseUrl);
|
|
184
|
+
new SuperCodePresets(owner, installer);
|
|
185
|
+
try {
|
|
186
|
+
await installer.initialize();
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
owner.logger.warn('Super Code preset installation unavailable; retry in plugin settings.');
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=preset-installation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-installation.js","sourceRoot":"","sources":["../../src/dsh/preset-installation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-super-code",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "One super-code preset with specialist teams and durable task memory for DeepSeek Harness.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -46,21 +46,20 @@
|
|
|
46
46
|
"zod": "^4.4.3"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@deepseek-ai/dsh-agent": "^0.1.5-rc.
|
|
50
|
-
"@deepseek-ai/dsh-agent-presets": "^0.1.5-rc.
|
|
49
|
+
"@deepseek-ai/dsh-agent": "^0.1.5-rc.1",
|
|
50
|
+
"@deepseek-ai/dsh-agent-presets": "^0.1.5-rc.1",
|
|
51
51
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
52
|
-
"@deepseek-ai/dsh-llm": "^0.1.5-rc.
|
|
53
|
-
"@deepseek-ai/dsh-session": "^0.1.5-rc.
|
|
54
|
-
"@deepseek-ai/dsh-session-projection": "^0.1.5-rc.
|
|
55
|
-
"@deepseek-ai/dsh-scope": "^0.1.5-rc.
|
|
56
|
-
"@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.
|
|
57
|
-
"@deepseek-ai/dsh-tools": "^0.1.5-rc.
|
|
58
|
-
"@deepseek-ai/schemastery": "^3.18.2"
|
|
52
|
+
"@deepseek-ai/dsh-llm": "^0.1.5-rc.1",
|
|
53
|
+
"@deepseek-ai/dsh-session": "^0.1.5-rc.1",
|
|
54
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.5-rc.1",
|
|
55
|
+
"@deepseek-ai/dsh-scope": "^0.1.5-rc.1",
|
|
56
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.1",
|
|
57
|
+
"@deepseek-ai/dsh-tools": "^0.1.5-rc.1",
|
|
58
|
+
"@deepseek-ai/schemastery": "^3.18.2",
|
|
59
|
+
"@deepseek-ai/dsh-settings": "^0.1.5-rc.1",
|
|
60
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.5-rc.1"
|
|
59
61
|
},
|
|
60
62
|
"peerDependenciesMeta": {
|
|
61
|
-
"@deepseek-ai/dsh-agent-presets": {
|
|
62
|
-
"optional": true
|
|
63
|
-
},
|
|
64
63
|
"@deepseek-ai/cordis": {
|
|
65
64
|
"optional": true
|
|
66
65
|
},
|