dsh-super-code 0.3.9 → 0.3.11
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.en.md +36 -11
- package/README.md +36 -11
- package/client/index.js +168 -64
- package/cordis.patch.yml +3 -7
- package/docs/Changelog.md +59 -0
- package/docs/Compatibility.md +51 -3
- package/docs/EvaluationResults.md +21 -5
- package/docs/UsageGuide.md +48 -9
- package/docs/en/Changelog.md +59 -0
- package/docs/en/Compatibility.md +51 -3
- package/docs/en/EvaluationResults.md +21 -5
- package/docs/en/UsageGuide.md +48 -9
- package/lib/connection/directories.d.ts.map +1 -1
- package/lib/connection/directories.js +14 -5
- package/lib/connection/directories.js.map +1 -1
- package/lib/connection/guidance.d.ts.map +1 -1
- package/lib/connection/guidance.js +7 -0
- package/lib/connection/guidance.js.map +1 -1
- package/lib/connection/http.d.ts.map +1 -1
- package/lib/connection/http.js +59 -30
- package/lib/connection/http.js.map +1 -1
- package/lib/connection/service.d.ts +3 -0
- package/lib/connection/service.d.ts.map +1 -1
- package/lib/connection/service.js +82 -33
- package/lib/connection/service.js.map +1 -1
- package/lib/connection/store.d.ts +2 -0
- package/lib/connection/store.d.ts.map +1 -1
- package/lib/connection/store.js +95 -30
- package/lib/connection/store.js.map +1 -1
- package/lib/connection/tasks.d.ts +6 -3
- package/lib/connection/tasks.d.ts.map +1 -1
- package/lib/connection/tasks.js +125 -53
- package/lib/connection/tasks.js.map +1 -1
- package/lib/connection/types.d.ts +1 -0
- package/lib/connection/types.d.ts.map +1 -1
- package/lib/connection/types.js.map +1 -1
- package/lib/core/deletion-command.d.ts.map +1 -1
- package/lib/core/deletion-command.js +84 -23
- package/lib/core/deletion-command.js.map +1 -1
- package/lib/core/windows-runtime.d.ts +16 -0
- package/lib/core/windows-runtime.d.ts.map +1 -0
- package/lib/core/windows-runtime.js +123 -0
- package/lib/core/windows-runtime.js.map +1 -0
- package/lib/dsh/budget-settings.d.ts +2 -0
- package/lib/dsh/budget-settings.d.ts.map +1 -1
- package/lib/dsh/budget-settings.js +9 -3
- package/lib/dsh/budget-settings.js.map +1 -1
- package/lib/dsh/budgets.d.ts +2 -0
- package/lib/dsh/budgets.d.ts.map +1 -1
- package/lib/dsh/budgets.js +6 -0
- package/lib/dsh/budgets.js.map +1 -1
- package/lib/dsh/compaction.d.ts.map +1 -1
- package/lib/dsh/compaction.js +1 -0
- package/lib/dsh/compaction.js.map +1 -1
- package/lib/dsh/connection-history.d.ts.map +1 -1
- package/lib/dsh/connection-history.js +3 -0
- package/lib/dsh/connection-history.js.map +1 -1
- package/lib/dsh/connection-host.js +1 -1
- package/lib/dsh/connection-host.js.map +1 -1
- package/lib/dsh/connection.d.ts.map +1 -1
- package/lib/dsh/connection.js +24 -3
- package/lib/dsh/connection.js.map +1 -1
- package/lib/dsh/deletion-protection.d.ts.map +1 -1
- package/lib/dsh/deletion-protection.js +18 -10
- package/lib/dsh/deletion-protection.js.map +1 -1
- package/lib/dsh/index.d.ts.map +1 -1
- package/lib/dsh/index.js +6 -0
- package/lib/dsh/index.js.map +1 -1
- package/lib/dsh/official-budgets.d.ts.map +1 -1
- package/lib/dsh/official-budgets.js +15 -3
- package/lib/dsh/official-budgets.js.map +1 -1
- package/lib/dsh/official-windows-shell.d.ts +4 -0
- package/lib/dsh/official-windows-shell.d.ts.map +1 -0
- package/lib/dsh/official-windows-shell.js +128 -0
- package/lib/dsh/official-windows-shell.js.map +1 -0
- package/lib/dsh/preset-declaration.d.ts +3 -0
- package/lib/dsh/preset-declaration.d.ts.map +1 -1
- package/lib/dsh/preset-declaration.js +68 -45
- package/lib/dsh/preset-declaration.js.map +1 -1
- package/lib/dsh/preset-installation.d.ts +10 -7
- package/lib/dsh/preset-installation.d.ts.map +1 -1
- package/lib/dsh/preset-installation.js +66 -30
- package/lib/dsh/preset-installation.js.map +1 -1
- package/lib/dsh/preset-metadata.d.ts.map +1 -1
- package/lib/dsh/preset-metadata.js +2 -1
- package/lib/dsh/preset-metadata.js.map +1 -1
- package/lib/dsh/preset-recovery-runtime.d.ts +76 -0
- package/lib/dsh/preset-recovery-runtime.d.ts.map +1 -0
- package/lib/dsh/preset-recovery-runtime.js +322 -0
- package/lib/dsh/preset-recovery-runtime.js.map +1 -0
- package/lib/dsh/preset-recovery.d.ts +14 -0
- package/lib/dsh/preset-recovery.d.ts.map +1 -0
- package/lib/dsh/preset-recovery.js +140 -0
- package/lib/dsh/preset-recovery.js.map +1 -0
- package/lib/dsh/ptc-budget.d.ts.map +1 -1
- package/lib/dsh/ptc-budget.js +20 -10
- package/lib/dsh/ptc-budget.js.map +1 -1
- package/lib/dsh/windows-shell.d.ts +53 -0
- package/lib/dsh/windows-shell.d.ts.map +1 -0
- package/lib/dsh/windows-shell.js +196 -0
- package/lib/dsh/windows-shell.js.map +1 -0
- package/lib/long-memory.d.ts.map +1 -1
- package/lib/long-memory.js +3 -2
- package/lib/long-memory.js.map +1 -1
- package/lib/super-agent-usage.d.ts +2 -0
- package/lib/super-agent-usage.d.ts.map +1 -1
- package/lib/super-agent-usage.js +16 -11
- package/lib/super-agent-usage.js.map +1 -1
- package/lib/task-feedback-projection.d.ts +11 -0
- package/lib/task-feedback-projection.d.ts.map +1 -1
- package/lib/task-feedback-projection.js +37 -12
- package/lib/task-feedback-projection.js.map +1 -1
- package/package.json +21 -16
- package/presets/super-code/agent.cordis.yml +3 -7
- package/runtime/windows/README.md +45 -0
- package/runtime/windows/arm64-busybox.exe.gz +0 -0
- package/runtime/windows/bash.exe.gz +0 -0
- package/runtime/windows/grep.exe.gz +0 -0
- package/runtime/windows/licenses/BusyBox-LICENSE.txt +348 -0
- package/runtime/windows/licenses/GPL-3.0.txt +674 -0
- package/runtime/windows/licenses/LGPL-3.0.txt +165 -0
- package/runtime/windows/licenses/MSYS-COPYING.LIB +165 -0
- package/runtime/windows/licenses/MSYS-COPYING.RUNTIME +674 -0
- package/runtime/windows/licenses/PCRE-LICENCE.txt +93 -0
- package/runtime/windows/licenses/ncurses-COPYING.txt +29 -0
- package/runtime/windows/manifest.json +236 -0
- package/runtime/windows/msys-2.0.dll.gz +0 -0
- package/runtime/windows/msys-iconv-2.dll.gz +0 -0
- package/runtime/windows/msys-intl-8.dll.gz +0 -0
- package/runtime/windows/msys-pcre-1.dll.gz +0 -0
- package/runtime/windows/sources/busybox-w32-FRP-6354-g5f09fb446.tgz +0 -0
- package/runtime/windows/sources.json +45 -0
- package/runtime/windows/x64-busybox.exe.gz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset-metadata.js","sourceRoot":"","sources":["../../src/dsh/preset-metadata.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"preset-metadata.js","sourceRoot":"","sources":["../../src/dsh/preset-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
3
|
+
import type { Session } from '@deepseek-ai/dsh-session';
|
|
4
|
+
import type { createUserMessage } from '@deepseek-ai/dsh-llm';
|
|
5
|
+
interface Record {
|
|
6
|
+
preset: string;
|
|
7
|
+
createdAt: number;
|
|
8
|
+
cwd?: string;
|
|
9
|
+
fingerprint: string;
|
|
10
|
+
}
|
|
11
|
+
interface State {
|
|
12
|
+
plugin: 'dsh-super-code';
|
|
13
|
+
format: 1;
|
|
14
|
+
sessions: {
|
|
15
|
+
[id: string]: Record;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export interface RecoveryConfig {
|
|
19
|
+
statePath: string;
|
|
20
|
+
packagePath: string;
|
|
21
|
+
}
|
|
22
|
+
export interface RecoveryService {
|
|
23
|
+
remember(agent: Agent): Promise<void>;
|
|
24
|
+
backfill(presets: readonly string[]): Promise<void>;
|
|
25
|
+
lifetime?: RecoveryConfig & {
|
|
26
|
+
source: string;
|
|
27
|
+
dispose(): Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare function fingerprint(content: string): string;
|
|
31
|
+
/** The durable producer record survives cold reloads and compaction. */
|
|
32
|
+
export declare function deletionNoticeMatches(session: Session, instruction: string): boolean;
|
|
33
|
+
/** Retire only producer-owned rules; keep append-origin history and user instructions intact. */
|
|
34
|
+
export declare function revokeDeletionNotices(session: Session, message: typeof createUserMessage): void;
|
|
35
|
+
/** The first declarative releases predate readDocument; their Loader still owns the definition. */
|
|
36
|
+
export declare function compositionContent(ctx: Context, id: string): Promise<string>;
|
|
37
|
+
/** Invalid or unrelated records fail closed; never replace them with an empty ownership record. */
|
|
38
|
+
export declare class RecoveryState {
|
|
39
|
+
readonly path: string;
|
|
40
|
+
readonly value: State;
|
|
41
|
+
private content;
|
|
42
|
+
private tail;
|
|
43
|
+
private constructor();
|
|
44
|
+
static open(path: string, required?: boolean): Promise<RecoveryState>;
|
|
45
|
+
save(id: string, record: Record): Promise<void>;
|
|
46
|
+
flush(): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
/** Wrap only the public roster seam; mounting still belongs to the running host. */
|
|
49
|
+
export declare function installRecovery(ctx: Context, state: RecoveryState, config: RecoveryConfig, host: {
|
|
50
|
+
scopeOf(ctx: Context): unknown;
|
|
51
|
+
message: typeof createUserMessage;
|
|
52
|
+
}): RecoveryService;
|
|
53
|
+
export declare const name = "super-code-session-recovery";
|
|
54
|
+
export declare function apply(ctx: Context, config: RecoveryConfig): void;
|
|
55
|
+
declare module '@deepseek-ai/cordis' {
|
|
56
|
+
interface Context {
|
|
57
|
+
superCodeSessionRecovery: RecoveryService;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
declare module '@deepseek-ai/dsh-llm' {
|
|
61
|
+
interface MessageSourceMap {
|
|
62
|
+
'dsh-super-code/deletion-protection-revoked': {
|
|
63
|
+
kind: 'dsh-super-code/deletion-protection-revoked';
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Automatic local recovery owns this command; it is not a user submission. */
|
|
68
|
+
declare module '@deepseek-ai/dsh-commands' {
|
|
69
|
+
interface CommandSourceMap {
|
|
70
|
+
'dsh-super-code/preset-recovery': {
|
|
71
|
+
kind: 'dsh-super-code/preset-recovery';
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=preset-recovery-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-recovery-runtime.d.ts","sourceRoot":"","sources":["../../src/dsh/preset-recovery-runtime.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAA+B,MAAM,0BAA0B,CAAA;AAEpF,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,sBAAsB,CAAA;AAe1E,UAAU,MAAM;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AACzF,UAAU,KAAK;IAAG,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CAAE;AAC3F,MAAM,WAAW,cAAc;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,QAAQ,CAAC,EAAE,cAAc,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAA;CACzE;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAA8D;AAiBlH,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAMpF;AAED,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,iBAAiB,GAAG,IAAI,CAoB/F;AAED,mGAAmG;AACnG,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASlF;AAUD,mGAAmG;AACnG,qBAAa,aAAa;IAEJ,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK;IAAE,OAAO,CAAC,OAAO;IADjF,OAAO,CAAC,IAAI,CAAmC;IAC/C,OAAO;WACM,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBnE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAC7B;AAMD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EACxF,IAAI,EAAE;IAAE,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,iBAAiB,CAAA;CAAE,GAAG,eAAe,CAoG9F;AAED,eAAO,MAAM,IAAI,gCAAgC,CAAA;AACjD,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAsChE;AAED,OAAO,QAAQ,qBAAqB,CAAC;IAAE,UAAU,OAAO;QAAG,wBAAwB,EAAE,eAAe,CAAA;KAAE;CAAE;AAExG,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,gBAAgB;QACxB,4CAA4C,EAAE;YAAE,IAAI,EAAE,4CAA4C,CAAA;SAAE,CAAA;KACrG;CACF;AAED,+EAA+E;AAC/E,OAAO,QAAQ,2BAA2B,CAAC;IACzC,UAAU,gBAAgB;QACxB,gCAAgC,EAAE;YAAE,IAAI,EAAE,gCAAgC,CAAA;SAAE,CAAA;KAC7E;CACF"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/** Copied to the profile so cold recovery does not depend on the removed npm package. */
|
|
2
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { lstat, mkdtemp, readFile, rename, rm, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
import { createRequire } from 'node:module';
|
|
7
|
+
import { pathToFileURL } from 'node:url';
|
|
8
|
+
const noticePlugin = 'dsh-super-code/preset-recovery';
|
|
9
|
+
const deletionSource = 'dsh-super-code/deletion-protection';
|
|
10
|
+
const revokedSource = 'dsh-super-code/deletion-protection-revoked';
|
|
11
|
+
const official = new Set(['standard', 'ptc', 'minimal', 'cordis']);
|
|
12
|
+
export function fingerprint(content) { return createHash('sha256').update(content).digest('hex'); }
|
|
13
|
+
const revocationCursors = new WeakMap();
|
|
14
|
+
function deletionCursor(session) {
|
|
15
|
+
const cursor = revocationCursors.get(session) ?? { offset: 0, pending: new Set() };
|
|
16
|
+
for (const event of session.snapshotEvents(cursor.offset)) {
|
|
17
|
+
if (event.type !== 'user/message')
|
|
18
|
+
continue;
|
|
19
|
+
if (event.data.source.kind === deletionSource)
|
|
20
|
+
cursor.pending.add(event.seq);
|
|
21
|
+
else if (event.data.source.kind === revokedSource)
|
|
22
|
+
for (const seq of event.sourceEventSeqs ?? [])
|
|
23
|
+
cursor.pending.delete(seq);
|
|
24
|
+
}
|
|
25
|
+
cursor.offset = session.seq;
|
|
26
|
+
revocationCursors.set(session, cursor);
|
|
27
|
+
return cursor;
|
|
28
|
+
}
|
|
29
|
+
/** The durable producer record survives cold reloads and compaction. */
|
|
30
|
+
export function deletionNoticeMatches(session, instruction) {
|
|
31
|
+
const cursor = deletionCursor(session);
|
|
32
|
+
if (cursor.pending.size !== 1)
|
|
33
|
+
return false;
|
|
34
|
+
const event = session.eventAt([...cursor.pending][0]);
|
|
35
|
+
return event?.type === 'user/message' && event.data.content.length === 1
|
|
36
|
+
&& event.data.content[0]?.type === 'text' && event.data.content[0].text.endsWith(instruction);
|
|
37
|
+
}
|
|
38
|
+
/** Retire only producer-owned rules; keep append-origin history and user instructions intact. */
|
|
39
|
+
export function revokeDeletionNotices(session, message) {
|
|
40
|
+
const cursor = deletionCursor(session);
|
|
41
|
+
const notice = () => message({ source: { kind: revokedSource }, content: [{ type: 'text', text: 'Super Code 先前添加的删除保护规则已撤销,不再适用;请遵循当前用户指令和宿主权限。\nEarlier deletion-protection rules added by Super Code have been revoked and no longer apply. Follow current user instructions and host permissions.' }] });
|
|
42
|
+
const active = new Set(session.surface.nodes);
|
|
43
|
+
for (const seq of cursor.pending) {
|
|
44
|
+
if (!active.has(seq))
|
|
45
|
+
continue;
|
|
46
|
+
session.append('user/message', notice(), {
|
|
47
|
+
surfaceOp: { op: 'replace', startSeq: seq, endSeq: seq }, sourceEventSeqs: [seq],
|
|
48
|
+
});
|
|
49
|
+
cursor.pending.delete(seq);
|
|
50
|
+
}
|
|
51
|
+
// A previous compaction may have absorbed a rule into its summary. Preserve
|
|
52
|
+
// that summary and its other context; explicitly revoke the owned rule once.
|
|
53
|
+
if (cursor.pending.size) {
|
|
54
|
+
session.append('user/message', notice(), { surfaceOp: 'append', sourceEventSeqs: [...cursor.pending] });
|
|
55
|
+
cursor.pending.clear();
|
|
56
|
+
}
|
|
57
|
+
cursor.offset = session.seq;
|
|
58
|
+
revocationCursors.set(session, cursor);
|
|
59
|
+
}
|
|
60
|
+
/** The first declarative releases predate readDocument; their Loader still owns the definition. */
|
|
61
|
+
export async function compositionContent(ctx, id) {
|
|
62
|
+
const registry = ctx.get('agentPresets');
|
|
63
|
+
if (registry.readDocument) {
|
|
64
|
+
const document = await registry.readDocument(id);
|
|
65
|
+
return document.agentPreset === id ? document.content : '';
|
|
66
|
+
}
|
|
67
|
+
const entries = [...ctx.loader.entries()].filter(row => row.options.name === '@deepseek-ai/dsh-agent-preset'
|
|
68
|
+
&& !row.disabled && row.options.disabled !== true && row.options.config?.id === id);
|
|
69
|
+
return entries.length === 1 ? JSON.stringify(entries[0].options.config.plugins) : '';
|
|
70
|
+
}
|
|
71
|
+
async function recoveryContent(path) {
|
|
72
|
+
try {
|
|
73
|
+
const stat = await lstat(path);
|
|
74
|
+
if (!stat.isFile() || stat.isSymbolicLink())
|
|
75
|
+
throw new Error('Unsafe recovery record');
|
|
76
|
+
return await readFile(path, 'utf8');
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error.code === 'ENOENT')
|
|
80
|
+
return false;
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Invalid or unrelated records fail closed; never replace them with an empty ownership record. */
|
|
85
|
+
export class RecoveryState {
|
|
86
|
+
path;
|
|
87
|
+
value;
|
|
88
|
+
content;
|
|
89
|
+
tail = Promise.resolve();
|
|
90
|
+
constructor(path, value, content) {
|
|
91
|
+
this.path = path;
|
|
92
|
+
this.value = value;
|
|
93
|
+
this.content = content;
|
|
94
|
+
}
|
|
95
|
+
static async open(path, required = false) {
|
|
96
|
+
let value = { plugin: 'dsh-super-code', format: 1, sessions: {} };
|
|
97
|
+
const content = await recoveryContent(path);
|
|
98
|
+
if (content === false && required)
|
|
99
|
+
throw new Error('Missing recovery record');
|
|
100
|
+
if (content !== false) {
|
|
101
|
+
const data = JSON.parse(content);
|
|
102
|
+
if (data?.plugin !== 'dsh-super-code' || data.format !== 1 || !data.sessions || typeof data.sessions !== 'object' || Array.isArray(data.sessions))
|
|
103
|
+
throw new Error('Invalid recovery record');
|
|
104
|
+
for (const [id, row] of Object.entries(data.sessions)) {
|
|
105
|
+
if (!id || !row || typeof row.preset !== 'string' || !row.preset || official.has(row.preset)
|
|
106
|
+
|| !Number.isSafeInteger(row.createdAt) || row.createdAt < 0 || row.cwd !== undefined && typeof row.cwd !== 'string'
|
|
107
|
+
|| typeof row.fingerprint !== 'string' || !/^[a-f0-9]{64}$/.test(row.fingerprint))
|
|
108
|
+
throw new Error('Invalid recovery session');
|
|
109
|
+
}
|
|
110
|
+
value = data;
|
|
111
|
+
}
|
|
112
|
+
return new RecoveryState(path, value, content);
|
|
113
|
+
}
|
|
114
|
+
async save(id, record) {
|
|
115
|
+
const next = this.tail.then(async () => {
|
|
116
|
+
if (JSON.stringify(this.value.sessions[id]) === JSON.stringify(record))
|
|
117
|
+
return;
|
|
118
|
+
const value = { ...this.value, sessions: { ...this.value.sessions, [id]: record } };
|
|
119
|
+
if (await recoveryContent(this.path) !== this.content)
|
|
120
|
+
throw new Error('Recovery record changed since loading');
|
|
121
|
+
const stage = await mkdtemp(join(dirname(this.path), '.state-'));
|
|
122
|
+
try {
|
|
123
|
+
const file = join(stage, 'state.json'), content = JSON.stringify(value);
|
|
124
|
+
await writeFile(file, content, { mode: 0o600 });
|
|
125
|
+
if (await recoveryContent(this.path) !== this.content)
|
|
126
|
+
throw new Error('Recovery record changed during save');
|
|
127
|
+
await rename(file, this.path);
|
|
128
|
+
this.content = content;
|
|
129
|
+
this.value.sessions = value.sessions;
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
await rm(stage, { recursive: true, force: true });
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
this.tail = next.catch(() => { });
|
|
136
|
+
await next;
|
|
137
|
+
}
|
|
138
|
+
async flush() { await this.tail; }
|
|
139
|
+
}
|
|
140
|
+
function selected(session, ctx) {
|
|
141
|
+
return ctx.sessionProjections.stateOf(session, 'agentPreset') ?? session.header.agentPreset;
|
|
142
|
+
}
|
|
143
|
+
/** Wrap only the public roster seam; mounting still belongs to the running host. */
|
|
144
|
+
export function installRecovery(ctx, state, config, host) {
|
|
145
|
+
const registry = ctx.get('agentPresets');
|
|
146
|
+
const originalResolve = registry.resolve, originalMount = registry.mount;
|
|
147
|
+
const resolveDescriptor = Object.getOwnPropertyDescriptor(registry, 'resolve');
|
|
148
|
+
const mountDescriptor = Object.getOwnPropertyDescriptor(registry, 'mount');
|
|
149
|
+
let active = true;
|
|
150
|
+
const unavailable = () => active && !existsSync(config.packagePath) && !ctx.get('superCodeConfiguration');
|
|
151
|
+
ctx.on('agent/pre-step', async ({ agent, signal }, next) => {
|
|
152
|
+
// Disabling a bundle leaves its package on disk but removes its policy owner.
|
|
153
|
+
if (!ctx.get('superCodeConfiguration')) {
|
|
154
|
+
signal.throwIfAborted();
|
|
155
|
+
revokeDeletionNotices(agent.session, host.message);
|
|
156
|
+
}
|
|
157
|
+
return next();
|
|
158
|
+
}, true);
|
|
159
|
+
const known = (id) => Object.values(state.value.sessions).some(row => row.preset === id);
|
|
160
|
+
const documentHash = async (id) => {
|
|
161
|
+
const content = await compositionContent(ctx, id);
|
|
162
|
+
return content ? fingerprint(content) : '';
|
|
163
|
+
};
|
|
164
|
+
const rememberHeader = async (header, preset) => {
|
|
165
|
+
if (!active || official.has(preset))
|
|
166
|
+
return;
|
|
167
|
+
const hash = await documentHash(preset);
|
|
168
|
+
if (active && hash)
|
|
169
|
+
await state.save(header.id, { preset, createdAt: header.createdAt, ...(header.cwd === undefined ? {} : { cwd: header.cwd }), fingerprint: hash });
|
|
170
|
+
};
|
|
171
|
+
const service = {
|
|
172
|
+
async remember(agent) {
|
|
173
|
+
if (!active || !ctx.get('tools')?.get('super_code_task', agent))
|
|
174
|
+
return;
|
|
175
|
+
const preset = registry.composedPreset(agent.ctx);
|
|
176
|
+
if (preset)
|
|
177
|
+
await rememberHeader(agent.session.header, preset);
|
|
178
|
+
},
|
|
179
|
+
async backfill(presets) {
|
|
180
|
+
const query = ctx.get('sessionQuery');
|
|
181
|
+
if (!active || !query || !presets.length)
|
|
182
|
+
return;
|
|
183
|
+
const owned = new Set(presets);
|
|
184
|
+
for (const { header } of await query.listSessions()) {
|
|
185
|
+
if (!active)
|
|
186
|
+
return;
|
|
187
|
+
// A blank conversation can switch from an official preset before its
|
|
188
|
+
// first turn; its immutable header then differs from the selected one.
|
|
189
|
+
try {
|
|
190
|
+
const history = await query.readSession(header.id);
|
|
191
|
+
let preset = history.session.agentPreset;
|
|
192
|
+
for (const event of history.events)
|
|
193
|
+
if (event.type === 'agent-preset/selected')
|
|
194
|
+
preset = event.data.agentPreset;
|
|
195
|
+
if (preset && owned.has(preset))
|
|
196
|
+
await rememberHeader(history.session, preset);
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
ctx.logger.warn('A historical Super Code session could not be registered for uninstall recovery.');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
const resolve = async function (id) {
|
|
205
|
+
try {
|
|
206
|
+
return await originalResolve.call(this, id);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
if (!id || !unavailable() || !known(id) || (await this.list()).some(row => row.id === id))
|
|
210
|
+
throw error;
|
|
211
|
+
if (!unavailable() || !known(id))
|
|
212
|
+
throw error;
|
|
213
|
+
// The actual mount below requires an exact previously recorded Session.
|
|
214
|
+
return { id };
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
const mount = async function (agentCtx, id) {
|
|
218
|
+
const scope = host.scopeOf(agentCtx);
|
|
219
|
+
const agent = scope && typeof scope === 'object' && 'session' in scope ? scope : undefined;
|
|
220
|
+
const saved = agent && state.value.sessions[agent.session.id];
|
|
221
|
+
if (!agent || !id || !saved)
|
|
222
|
+
return originalMount.call(this, agentCtx, id);
|
|
223
|
+
const eligible = () => unavailable() && state.value.sessions[agent.session.id] === saved && saved.preset === id
|
|
224
|
+
&& selected(agent.session, ctx) === id && saved.createdAt === agent.session.header.createdAt && saved.cwd === agent.session.header.cwd;
|
|
225
|
+
if (!eligible())
|
|
226
|
+
return originalMount.call(this, agentCtx, id);
|
|
227
|
+
const preset = (await this.list()).find(row => row.id === id);
|
|
228
|
+
if (preset && (!preset.broken || await documentHash(id) !== saved.fingerprint))
|
|
229
|
+
return originalMount.call(this, agentCtx, id);
|
|
230
|
+
// Roster/document reads can yield to reinstallation, a selection change or
|
|
231
|
+
// teardown. A stale wrapper must return control to the host in each case.
|
|
232
|
+
if (!eligible())
|
|
233
|
+
return originalMount.call(this, agentCtx, id);
|
|
234
|
+
const mounted = await originalMount.call(this, agentCtx, 'standard');
|
|
235
|
+
const current = selected(agent.session, ctx);
|
|
236
|
+
if (!unavailable())
|
|
237
|
+
return originalMount.call(this, agentCtx, current ?? id);
|
|
238
|
+
if (current !== id)
|
|
239
|
+
return current === 'standard' ? mounted : originalMount.call(this, agentCtx, current);
|
|
240
|
+
if (!eligible())
|
|
241
|
+
return originalMount.call(this, agentCtx, id);
|
|
242
|
+
const settings = ctx.get('settings');
|
|
243
|
+
const language = (settings?.get ? settings.get('locale')?.preference
|
|
244
|
+
: settings?.describe?.().find(row => row.ns === 'locale')?.value?.preference) ?? 'zh';
|
|
245
|
+
const chinese = language.toLowerCase().startsWith('zh') || language === 'auto' || language === 'system';
|
|
246
|
+
// Native command-result records remain visible outside collapsed work
|
|
247
|
+
// steps. Attribute this automatic operation to the plugin, never the user;
|
|
248
|
+
// it adds no model-facing message and schedules no extra turn.
|
|
249
|
+
const commandId = randomUUID();
|
|
250
|
+
agent.session.append('command/run', { commandId, name: 'super-code-recovery', source: { kind: noticePlugin } });
|
|
251
|
+
agent.session.append('agent-preset/selected', { agentPreset: 'standard' });
|
|
252
|
+
agent.session.append('command/done', { commandId, kind: 'success', text: chinese
|
|
253
|
+
? 'Super Code 插件已卸载,本对话将使用官方标准预设继续。已有历史记录保留。'
|
|
254
|
+
: 'The Super Code plugin has been uninstalled. This conversation will continue with the official Standard preset. Existing history is preserved.' });
|
|
255
|
+
return mounted;
|
|
256
|
+
};
|
|
257
|
+
registry.resolve = resolve;
|
|
258
|
+
registry.mount = mount;
|
|
259
|
+
ctx.effect(() => async () => {
|
|
260
|
+
active = false;
|
|
261
|
+
for (const [key, wrapper, descriptor] of [['resolve', resolve, resolveDescriptor], ['mount', mount, mountDescriptor]]) {
|
|
262
|
+
if (registry[key] !== wrapper)
|
|
263
|
+
continue;
|
|
264
|
+
if (descriptor)
|
|
265
|
+
Object.defineProperty(registry, key, descriptor);
|
|
266
|
+
else
|
|
267
|
+
Reflect.deleteProperty(registry, key);
|
|
268
|
+
}
|
|
269
|
+
await state.flush();
|
|
270
|
+
});
|
|
271
|
+
return service;
|
|
272
|
+
}
|
|
273
|
+
export const name = 'super-code-session-recovery';
|
|
274
|
+
export function apply(ctx, config) {
|
|
275
|
+
// Duplicate or failed loaders remain subscribed to host services; they must
|
|
276
|
+
// never compete with a newer generation when those services return.
|
|
277
|
+
let redundant = false;
|
|
278
|
+
ctx.inject(['agentPresets', 'sessionProjections', 'tools'], async (owner) => {
|
|
279
|
+
if (redundant)
|
|
280
|
+
return;
|
|
281
|
+
try {
|
|
282
|
+
const profile = owner.get('profileContext');
|
|
283
|
+
const require = createRequire(profile?.installAnchor ?? new URL('package.json', owner.root.baseUrl));
|
|
284
|
+
const scope = await import(pathToFileURL(require.resolve('@deepseek-ai/dsh-scope')).href);
|
|
285
|
+
const llm = await import(pathToFileURL(require.resolve('@deepseek-ai/dsh-llm')).href);
|
|
286
|
+
const previous = owner.get('superCodeSessionRecovery')?.lifetime;
|
|
287
|
+
if (owner.get('superCodeSessionRecovery')) {
|
|
288
|
+
if (!previous || previous.source === import.meta.url || previous.statePath !== config.statePath || previous.packagePath !== config.packagePath) {
|
|
289
|
+
redundant = true;
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
// A content-addressed runtime is rooted outside the main bundle. Retire
|
|
293
|
+
// its hooks and drain its writer before loading the next generation.
|
|
294
|
+
await RecoveryState.open(config.statePath, true);
|
|
295
|
+
await previous.dispose();
|
|
296
|
+
}
|
|
297
|
+
const state = await RecoveryState.open(config.statePath, !!previous);
|
|
298
|
+
if (owner.get('superCodeSessionRecovery')) {
|
|
299
|
+
redundant = true;
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const service = installRecovery(owner, state, config, { scopeOf: scope.scopeOf, message: llm.createUserMessage });
|
|
303
|
+
service.lifetime = { ...config, source: import.meta.url, dispose: () => ctx.fiber.dispose() };
|
|
304
|
+
owner.provide('superCodeSessionRecovery', service);
|
|
305
|
+
const remember = async (agent) => {
|
|
306
|
+
try {
|
|
307
|
+
await service.remember(agent);
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
owner.logger.warn('Super Code session recovery record could not be saved.');
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
owner.on('agent/created', async ({ agent }) => { await remember(agent); });
|
|
314
|
+
owner.on('agent/pre-step', async ({ agent }, next) => { await remember(agent); return next(); }, true);
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
redundant = true;
|
|
318
|
+
owner.logger.warn('Super Code continuation recovery could not be loaded; check the local recovery record and restart DSH.');
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=preset-recovery-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-recovery-runtime.js","sourceRoot":"","sources":["../../src/dsh/preset-recovery-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { RecoveryConfig } from './preset-recovery-runtime.js';
|
|
3
|
+
interface PreparedRecovery {
|
|
4
|
+
modulePath: string;
|
|
5
|
+
config: RecoveryConfig & {
|
|
6
|
+
owner: 'dsh-super-code';
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/** Preserve the user's YAML and expressions, with a concrete backup and stale-write check. */
|
|
10
|
+
export declare function prepareRecovery(patchPath: string, packagePath: string, source: string): Promise<PreparedRecovery>;
|
|
11
|
+
export declare function registerRecoverySessions(ctx: Context): Promise<void>;
|
|
12
|
+
export declare function applyPresetRecovery(ctx: Context): void;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=preset-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-recovery.d.ts","sourceRoot":"","sources":["../../src/dsh/preset-recovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,qBAAqB,CAAA;AAI1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAGlE,UAAU,gBAAgB;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAA;CAAE;AAcvG,8FAA8F;AAC9F,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqCvH;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA4BtD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/** Install a profile-owned continuation shim without modifying the host or old conversation logs. */
|
|
2
|
+
import { lstat, mkdir, mkdtemp, readFile, readdir, rename, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
5
|
+
import yaml from 'js-yaml';
|
|
6
|
+
import { declarationSchema } from './preset-declaration.js';
|
|
7
|
+
import { RecoveryState, compositionContent, fingerprint } from './preset-recovery-runtime.js';
|
|
8
|
+
const entryId = 'super-code-session-recovery';
|
|
9
|
+
async function regularContent(path) {
|
|
10
|
+
try {
|
|
11
|
+
const stat = await lstat(path);
|
|
12
|
+
if (!stat.isFile() || stat.isSymbolicLink())
|
|
13
|
+
throw new Error('Unsafe recovery file');
|
|
14
|
+
return await readFile(path, 'utf8');
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (error.code === 'ENOENT')
|
|
18
|
+
return '';
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function createOwnedFile(path, content) {
|
|
23
|
+
try {
|
|
24
|
+
await writeFile(path, content, { flag: 'wx', mode: 0o600 });
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error.code !== 'EEXIST' || await regularContent(path) !== content)
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Preserve the user's YAML and expressions, with a concrete backup and stale-write check. */
|
|
32
|
+
export async function prepareRecovery(patchPath, packagePath, source) {
|
|
33
|
+
const directory = join(dirname(patchPath), '.super-code-recovery');
|
|
34
|
+
let created = false;
|
|
35
|
+
try {
|
|
36
|
+
await mkdir(directory, { mode: 0o700 });
|
|
37
|
+
created = true;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error.code !== 'EEXIST')
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
const stat = await lstat(directory);
|
|
44
|
+
if (!stat.isDirectory() || stat.isSymbolicLink())
|
|
45
|
+
throw new Error('Unsafe recovery directory');
|
|
46
|
+
const statePath = join(directory, 'state.json');
|
|
47
|
+
if (!await regularContent(statePath)) {
|
|
48
|
+
if (!created && (await readdir(directory)).length)
|
|
49
|
+
throw new Error('Unowned recovery directory');
|
|
50
|
+
await createOwnedFile(statePath, JSON.stringify({ plugin: 'dsh-super-code', format: 1, sessions: {} }));
|
|
51
|
+
}
|
|
52
|
+
await RecoveryState.open(statePath);
|
|
53
|
+
const modulePath = join(directory, `recovery-${fingerprint(source).slice(0, 24)}.mjs`);
|
|
54
|
+
await createOwnedFile(modulePath, source);
|
|
55
|
+
const config = { owner: 'dsh-super-code', statePath, packagePath };
|
|
56
|
+
const entry = { id: entryId, name: pathToFileURL(modulePath).href, config };
|
|
57
|
+
const original = await regularContent(patchPath);
|
|
58
|
+
const rows = original.trim() ? yaml.load(original, { schema: declarationSchema }) : [];
|
|
59
|
+
if (!Array.isArray(rows))
|
|
60
|
+
throw new Error('Invalid profile patch');
|
|
61
|
+
const existing = rows.flatMap(row => row?.insert ?? [row]).filter(row => row?.id === entryId);
|
|
62
|
+
if (existing.some(row => row.config?.owner !== 'dsh-super-code' || row.config?.statePath !== statePath))
|
|
63
|
+
throw new Error('Recovery entry conflict');
|
|
64
|
+
if (existing.length && JSON.stringify(existing.at(-1)) === JSON.stringify(entry))
|
|
65
|
+
return { modulePath, config };
|
|
66
|
+
const patch = existing.length ? entry : { insert: [entry] };
|
|
67
|
+
const prefix = rows.length && /^[ \t]*-/m.test(original) ? original.trimEnd() + '\n'
|
|
68
|
+
: rows.length ? yaml.dump(rows, { schema: declarationSchema, noRefs: true, lineWidth: -1 })
|
|
69
|
+
: original.replace(/^[ \t]*\[\][ \t]*(?:#.*)?$/m, '').trimEnd() + '\n';
|
|
70
|
+
const content = prefix + yaml.dump([patch], { schema: declarationSchema, noRefs: true, lineWidth: -1 });
|
|
71
|
+
await createOwnedFile(join(directory, `patch-before-${fingerprint(original).slice(0, 24)}.yml`), original);
|
|
72
|
+
const staging = await mkdtemp(join(directory, '.patch-'));
|
|
73
|
+
try {
|
|
74
|
+
const file = join(staging, 'cordis.patch.yml');
|
|
75
|
+
await writeFile(file, content, { mode: 0o600 });
|
|
76
|
+
if (await regularContent(patchPath) !== original)
|
|
77
|
+
throw new Error('Profile patch changed during recovery setup');
|
|
78
|
+
await rename(file, patchPath);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
await rm(staging, { recursive: true, force: true });
|
|
82
|
+
}
|
|
83
|
+
return { modulePath, config };
|
|
84
|
+
}
|
|
85
|
+
export async function registerRecoverySessions(ctx) {
|
|
86
|
+
const registry = ctx.get('agentPresets');
|
|
87
|
+
const ids = [];
|
|
88
|
+
for (const row of await registry.list()) {
|
|
89
|
+
try {
|
|
90
|
+
const plugins = yaml.load(await compositionContent(ctx, row.id), { schema: declarationSchema });
|
|
91
|
+
if (Array.isArray(plugins) && plugins.filter(plugin => plugin?.name === 'dsh-super-code/super-code' && plugin.disabled !== true).length === 1)
|
|
92
|
+
ids.push(row.id);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
ctx.logger.warn('A preset could not be inspected for Super Code uninstall recovery; other presets will still be registered.');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
await ctx.superCodeSessionRecovery.backfill(ids);
|
|
99
|
+
}
|
|
100
|
+
export function applyPresetRecovery(ctx) {
|
|
101
|
+
ctx.inject(['agentPresets', 'sessionProjections', 'tools'], async (owner) => {
|
|
102
|
+
const profile = owner.get('profileContext');
|
|
103
|
+
let patchPath = profile?.patchPath;
|
|
104
|
+
if (!patchPath) {
|
|
105
|
+
// Early directory-preset releases expose the profile only through root.baseUrl.
|
|
106
|
+
try {
|
|
107
|
+
if (!owner.root.baseUrl)
|
|
108
|
+
return;
|
|
109
|
+
const directory = fileURLToPath(owner.root.baseUrl);
|
|
110
|
+
const manifest = JSON.parse(await regularContent(join(directory, 'package.json')));
|
|
111
|
+
if (!Array.isArray(manifest.dsh?.profile?.bundles) || !manifest.dsh.profile.bundles.includes('dsh-super-code'))
|
|
112
|
+
return;
|
|
113
|
+
patchPath = join(directory, 'cordis.patch.yml');
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const source = await readFile(new URL('./preset-recovery-runtime.js', import.meta.url), 'utf8');
|
|
121
|
+
const prepare = () => prepareRecovery(patchPath, join(dirname(patchPath), 'node_modules/dsh-super-code/package.json'), source);
|
|
122
|
+
const hmr = owner.get('hmr');
|
|
123
|
+
const prepared = await (hmr ? hmr.runExclusive(prepare) : prepare());
|
|
124
|
+
// Owned by the host root, so removing the main plugin does not dispose recovery.
|
|
125
|
+
await owner.root.plugin(await import(pathToFileURL(prepared.modulePath).href), prepared.config);
|
|
126
|
+
owner.inject(['superCodeSessionRecovery', 'sessionQuery'], async (ready) => {
|
|
127
|
+
try {
|
|
128
|
+
await registerRecoverySessions(ready);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
ready.logger.warn('Some existing Super Code sessions could not be registered for uninstall recovery.');
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
owner.logger.warn('Super Code uninstall recovery is unavailable; check the profile recovery files and patch permissions.');
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=preset-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-recovery.js","sourceRoot":"","sources":["../../src/dsh/preset-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptc-budget.d.ts","sourceRoot":"","sources":["../../src/dsh/ptc-budget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"ptc-budget.d.ts","sourceRoot":"","sources":["../../src/dsh/ptc-budget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAiD3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,IAAI,CAoBjG"}
|