dsh-super-code 0.1.1 → 0.1.3
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 +34 -78
- package/client/index.js +195 -79
- package/lib/core/guidance.d.ts +1 -1
- package/lib/core/guidance.d.ts.map +1 -1
- package/lib/core/guidance.js +1 -1
- package/lib/core/guidance.js.map +1 -1
- package/lib/core/teams.d.ts +1 -1
- package/lib/core/teams.d.ts.map +1 -1
- package/lib/core/teams.js +9 -9
- package/lib/core/teams.js.map +1 -1
- package/lib/dsh/preset-installation.d.ts +22 -3
- package/lib/dsh/preset-installation.d.ts.map +1 -1
- package/lib/dsh/preset-installation.js +152 -9
- package/lib/dsh/preset-installation.js.map +1 -1
- package/lib/dsh/preset-metadata.d.ts +15 -0
- package/lib/dsh/preset-metadata.d.ts.map +1 -0
- package/lib/dsh/preset-metadata.js +83 -0
- package/lib/dsh/preset-metadata.js.map +1 -0
- package/lib/dsh/super-code.js +1 -1
- package/lib/dsh/super-code.js.map +1 -1
- package/package.json +11 -11
- package/presets/super-code/preset.yml +1 -1
package/lib/core/teams.js
CHANGED
|
@@ -3,10 +3,10 @@ export const TEAM_NAMES = ['research', 'design', 'develop', 'verify', 'optimize'
|
|
|
3
3
|
export const METHODS = Object.freeze({
|
|
4
4
|
investigation: 'Start from the exact question, revision and observed failure. For competing causes, predict different observable outcomes and run the cheapest discriminating check; a result compatible with both proves neither. Use a minimal reproduction for broad failures, a matched good/bad run for regressions, and bisection only with a reliable pass/fail signal. Hold other conditions fixed and trace the first divergence through callers and data flow. If a check disproves the cause, change the hypothesis rather than expanding the patch. Stop at supported facts or explicit missing evidence; diagnosis alone does not authorize edits.',
|
|
5
5
|
product: 'Turn the requested outcome into a small end-to-end usable slice and verify it before expanding. Check actual users, inputs, normal/empty/error/cancel paths, persistence and existing conventions. Design interactions around user decisions, not internal machinery. Use existing interfaces and include only adjacent cases necessary for the outcome. Ask only when a missing product decision changes correctness or scope.',
|
|
6
|
-
bugfix: 'Reproduce the failing input and locate the first incorrect state before editing. Compare the same failing check on the baseline before attributing it to the environment. For async bugs, trace creation, update, invalidation, cancellation, late results and resource release. Control completion order with barriers instead of sleeps; test a late result after cancellation or replacement. Add a regression that fails before the fix at the causal boundary. If the patch expands, revisit the cause. Check affected callers and preserve unaffected behavior. Deliver the fix and actual checks, or name a concrete blocker; a passing mock is not live evidence.',
|
|
6
|
+
bugfix: 'Reproduce the failing input and locate the first incorrect state before editing. For recovery bugs, start from persisted in-progress state, not only a fresh run. Compare the same failing check on the baseline before attributing it to the environment. For async bugs, trace creation, update, invalidation, cancellation, late results and resource release. Control completion order with barriers instead of sleeps; test a late result after cancellation or replacement. Add a regression that fails before the fix at the causal boundary. If the patch expands, revisit the cause. Check affected callers and preserve unaffected behavior. Deliver the fix and actual checks, or name a concrete blocker; a passing mock is not live evidence.',
|
|
7
7
|
architecture: 'Map responsibilities, contracts, ownership, data lifetime and failure propagation. Choose the simplest boundary that resolves the demonstrated problem. Follow changed return types to callers, changed state to serialization/defaults/restoration, and changed async ownership to cancellation/cleanup. Search actual consumers; avoid building a repository-wide dependency graph for a local change. State migration/rollback costs and verify affected boundaries. Refactor only authorized scope; fewer lines or new abstractions do not prove improvement.',
|
|
8
8
|
algorithm: 'State input size, invariants, objective and correctness argument. Examine asymptotic time/space, numerical stability and adversarial cases. When correctness is hard to inspect, compare a simple reference on exhaustive small inputs or deterministic generated cases, then test representative large inputs. Minimize mismatches into regressions. A reference must be independent of the candidate, not the same algorithm copied twice. Prefer better algorithms/data structures before tuning constants; constant-factor gains do not prove better complexity. Report quality/accuracy tradeoffs.',
|
|
9
|
-
testing: 'Derive checks from behavior
|
|
9
|
+
testing: 'Compare the actual diff with requested behavior and affected existing contracts. Derive checks from these contracts, not implementation text. For changed stateful behavior, probe the relevant initialization, failure or restart boundary; a normal run does not verify recovery. Prioritize changed contracts and their callers, persisted state and restoration, async cancellation/late completion, or algorithm boundaries and scale. Cover relevant empty/invalid input, duplicates and failures. A regression must fail on the broken behavior and pass on the fix; use an independent reference for tricky algorithms. Confirm intended tests executed on the changed workspace: unchanged HEAD does not imply unchanged files; zero or entirely skipped tests are not passing evidence. Report commands and limits; no extra reviewer unless risk warrants it.',
|
|
10
10
|
performance: 'Measure a comparable baseline and locate the bottleneck before changing code. Fix workload, versions, resource allocation and warm/cold conditions. Inspect CPU, I/O, allocations, algorithmic scaling and contention. Compare repeated measurements and tail behavior, preserving correctness and recovery. Keep benchmarks isolated from competing jobs. Without comparable measurements, report a hypothesis, not a speedup. Stop at the target/budget or when no supported hypothesis remains.',
|
|
11
11
|
integration: 'Confirm the actual entry point, loaded package/build, deployed versions and effective configuration before diagnosing an integration. Inspect both sides of the contract: serialization, errors, timeouts, idempotency, cancellation and permissions. Verify one bounded end-to-end slice through the real entry point; source edits or a passing mock do not prove the installed artifact works. Distinguish local, mocked and live evidence, and name unavailable dependencies. Retain a recovery path for schema/data migrations; external writes still require authorization.',
|
|
12
12
|
quality: 'Define a fixed, representative evaluation set and acceptance criteria before candidates. Bind results to data, model/code and evaluator versions. Count failed attempts and all member/tool costs. Compare matched samples; investigate category regressions and hard cases. Do not tune against hidden tests, cherry-pick best runs or relax gates after observing failure.',
|
|
@@ -19,13 +19,13 @@ export const TEAMS = Object.freeze({
|
|
|
19
19
|
optimize: { outcome: 'Demonstrated improvement and an adoption or rollback recommendation.', approach: 'Select goals separately from methods: latency, throughput, memory, cost, quality or maintainability.', evidence: 'Matched baseline/candidate measurements plus non-regression checks and stopping criteria.', methods: ['performance', 'algorithm', 'architecture', 'quality'] },
|
|
20
20
|
});
|
|
21
21
|
/** Stable, compact instructions; the host logs selected methods as tool results. */
|
|
22
|
-
export const SUPER_CODE_INSTRUCTIONS = `You are super-code,
|
|
23
|
-
Choose by deliverable: research
|
|
24
|
-
Explanation/design does not authorize edits; methods/teammates grant no permission. Ask only for decisions affecting correctness or scope.
|
|
25
|
-
For long/interleaved work, use super_code_task
|
|
26
|
-
|
|
27
|
-
Resolve
|
|
28
|
-
Minimize
|
|
22
|
+
export const SUPER_CODE_INSTRUCTIONS = `You are super-code, completing the user's authorized coding work.
|
|
23
|
+
Choose by deliverable: research, design, develop, verify, optimize. Teams are specialties, not stages. Use super_code_method when causes remain indistinguishable, failures repeat or state/recovery behavior is unclear; reuse loaded guidance. No mandatory routing or reflection loop.
|
|
24
|
+
Explanation/design does not authorize edits; methods/teammates grant no permission. Ask only for decisions affecting correctness or scope. Diagnosis is not a fix.
|
|
25
|
+
For long/interleaved work, use super_code_task to preserve user-sourced requirements, acceptance, decisions/evidence and next dependency before switching or compaction, not each action. Corrections replace affected constraints only. Never truncate hard requirements. Resume from current context; read missing details and recheck mutable evidence. Status questions do not cancel work.
|
|
26
|
+
Batch independent tools first. Delegate independent deliverables for time or verification value; reuse members for related scope, never recursively. Continue locally; one writer per file or isolated workspaces. For recorded tasks, delegate binds ownership/versions; validate_member precedes lead review. Neither starts workers nor enforces token budgets. Reject stale returns; count all attempts; unknown-stop is not success.
|
|
27
|
+
Resolve APIs from visible contracts and callers, never guessed tests or aliases. Before finishing, compare the diff with requirements and affected existing behavior. Check changed recovery/state paths, not just the happy path. An unresolved failure stays unresolved unless baseline evidence or an explicit contract change explains it; future tests cannot establish success. When stuck, change the hypothesis or reduce the reproduction before expanding scope.
|
|
28
|
+
Minimize request cost: reuse context, read targeted ranges, batch independent checks. Keep full verbose logs in task files; report exit status, executed test counts, failure context and file references. Do not hide errors or skip required checks to save tokens. Inspect scaling and resource release. Report delivery, checks and gaps; no unmeasured gains.`;
|
|
29
29
|
/** Read exactly the selected team/method; caller chooses using task meaning. */
|
|
30
30
|
export function readTeamMethod(team, method) {
|
|
31
31
|
const definition = TEAMS[team];
|
package/lib/core/teams.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teams.js","sourceRoot":"","sources":["../../src/core/teams.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAa1F,MAAM,CAAC,MAAM,OAAO,GAAyC,MAAM,CAAC,MAAM,CAAC;IACzE,aAAa,EAAE,inBAAinB;IAChoB,OAAO,EAAE,iaAAia;IAC1a,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"teams.js","sourceRoot":"","sources":["../../src/core/teams.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAa1F,MAAM,CAAC,MAAM,OAAO,GAAyC,MAAM,CAAC,MAAM,CAAC;IACzE,aAAa,EAAE,inBAAinB;IAChoB,OAAO,EAAE,iaAAia;IAC1a,MAAM,EAAE,4tBAA4tB;IACpuB,YAAY,EAAE,miBAAmiB;IACjjB,SAAS,EAAE,ykBAAykB;IACplB,OAAO,EAAE,00BAA00B;IACn1B,WAAW,EAAE,oeAAoe;IACjf,WAAW,EAAE,mjBAAmjB;IAChkB,OAAO,EAAE,8WAA8W;CAC/W,CAAC,CAAA;AAEX,MAAM,CAAC,MAAM,KAAK,GAA+C,MAAM,CAAC,MAAM,CAAC;IAC7E,QAAQ,EAAE,EAAE,OAAO,EAAE,mDAAmD,EAAE,QAAQ,EAAE,kFAAkF,EAAE,QAAQ,EAAE,0EAA0E,EAAE,OAAO,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;IACzS,MAAM,EAAE,EAAE,OAAO,EAAE,wEAAwE,EAAE,QAAQ,EAAE,8EAA8E,EAAE,QAAQ,EAAE,sFAAsF,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE;IAC5U,OAAO,EAAE,EAAE,OAAO,EAAE,iEAAiE,EAAE,QAAQ,EAAE,wFAAwF,EAAE,QAAQ,EAAE,sEAAsE,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE;IAC5U,MAAM,EAAE,EAAE,OAAO,EAAE,2DAA2D,EAAE,QAAQ,EAAE,iFAAiF,EAAE,QAAQ,EAAE,iFAAiF,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE;IAC/S,QAAQ,EAAE,EAAE,OAAO,EAAE,sEAAsE,EAAE,QAAQ,EAAE,sGAAsG,EAAE,QAAQ,EAAE,2FAA2F,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE;CACzX,CAAC,CAAA;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;mWAM4T,CAAA;AAEnW,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,MAAmB;IAChE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;IACzD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAA;IACzG,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,IAAI,KAAK,UAAU,CAAC,OAAO,KAAK,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,CAAA;IAChG,OAAO,GAAG,IAAI,KAAK,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,QAAQ,eAAe,UAAU,CAAC,QAAQ,cAAc,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAC9I,CAAC"}
|
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
2
|
import { type AgentPresets } from '@deepseek-ai/dsh-agent-presets';
|
|
3
|
+
import { type DisplayBaseline } from './preset-metadata.js';
|
|
3
4
|
import type { SettingsScope } from '@deepseek-ai/dsh-settings';
|
|
4
5
|
import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
|
|
5
6
|
interface InstallationSettings {
|
|
6
7
|
checked: boolean;
|
|
7
8
|
installedId: string;
|
|
9
|
+
installation?: {
|
|
10
|
+
id: string;
|
|
11
|
+
path: string;
|
|
12
|
+
token: string;
|
|
13
|
+
dev: number;
|
|
14
|
+
ino: number;
|
|
15
|
+
};
|
|
16
|
+
display?: Record<string, DisplayBaseline>;
|
|
17
|
+
pendingDisplay?: Record<string, DisplayBaseline>;
|
|
8
18
|
}
|
|
9
19
|
export interface PresetInstallationStatus {
|
|
10
20
|
state: 'available' | 'installed' | 'conflict' | 'missing' | 'broken';
|
|
11
21
|
id: string;
|
|
22
|
+
name?: string;
|
|
12
23
|
authorable: boolean;
|
|
13
24
|
userConflict: boolean;
|
|
14
25
|
}
|
|
15
26
|
export interface PresetInstallationResult {
|
|
16
27
|
ok: boolean;
|
|
17
28
|
status: PresetInstallationStatus;
|
|
18
|
-
error?: 'invalid-name' | 'name-taken' | 'no-user-root' | 'install-failed';
|
|
29
|
+
error?: 'ownership-unverified' | 'invalid-name' | 'invalid-display-name' | 'name-taken' | 'no-user-root' | 'install-failed';
|
|
19
30
|
}
|
|
20
31
|
/** Serialized writes protect double clicks; mkdir claims only an unoccupied name. */
|
|
21
32
|
export declare class PresetInstaller {
|
|
@@ -27,7 +38,11 @@ export declare class PresetInstaller {
|
|
|
27
38
|
constructor(roster: Pick<AgentPresets, 'list' | 'roots'>, settings: SettingsScope<InstallationSettings>, bundledRoot?: string, baseUrl?: string);
|
|
28
39
|
status(): Promise<PresetInstallationStatus>;
|
|
29
40
|
initialize(): Promise<void>;
|
|
30
|
-
|
|
41
|
+
synchronize(language: string): Promise<{
|
|
42
|
+
changed: boolean;
|
|
43
|
+
}>;
|
|
44
|
+
install(id: unknown, name?: string): Promise<PresetInstallationResult>;
|
|
45
|
+
reinstall(previousId: string, id: unknown, name?: string): Promise<PresetInstallationResult>;
|
|
31
46
|
private occupied;
|
|
32
47
|
private installNow;
|
|
33
48
|
private enqueue;
|
|
@@ -36,7 +51,11 @@ export declare class SuperCodePresets extends TypertRemoteService {
|
|
|
36
51
|
private readonly installer;
|
|
37
52
|
constructor(ctx: Context, installer: PresetInstaller);
|
|
38
53
|
status(): Promise<PresetInstallationStatus>;
|
|
39
|
-
installPreset(id: unknown): Promise<PresetInstallationResult>;
|
|
54
|
+
installPreset(id: unknown, name?: string): Promise<PresetInstallationResult>;
|
|
55
|
+
reinstallPreset(previousId: string, id: unknown, name?: string): Promise<PresetInstallationResult>;
|
|
56
|
+
synchronize(language: string): Promise<{
|
|
57
|
+
changed: boolean;
|
|
58
|
+
}>;
|
|
40
59
|
}
|
|
41
60
|
export declare function applyPresetInstallation(ctx: Context): void;
|
|
42
61
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset-installation.d.ts","sourceRoot":"","sources":["../../src/dsh/preset-installation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"preset-installation.d.ts","sourceRoot":"","sources":["../../src/dsh/preset-installation.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,13 +33,16 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
|
|
|
33
33
|
done = true;
|
|
34
34
|
};
|
|
35
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';
|
|
36
|
+
import { cp, lstat, mkdir, mkdtemp, readdir, rm, readFile, writeFile, rename, realpath } from 'node:fs/promises';
|
|
37
|
+
import { randomUUID } from 'node:crypto';
|
|
37
38
|
import { join, resolve } from 'node:path';
|
|
38
39
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
39
40
|
import s from '@deepseek-ai/schemastery';
|
|
40
41
|
import { copyComposition, discoverPresets, writableRoot } from '@deepseek-ai/dsh-agent-presets';
|
|
42
|
+
import { displayCopy, migrateMetadata } from './preset-metadata.js';
|
|
41
43
|
import { Remote, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
|
|
42
44
|
const sourceRoot = fileURLToPath(new URL('../../presets/', import.meta.url));
|
|
45
|
+
const ownershipFile = '.super-code-installation.json';
|
|
43
46
|
const validId = /^[a-z0-9][a-z0-9-]{0,63}$/;
|
|
44
47
|
async function exists(path) {
|
|
45
48
|
try {
|
|
@@ -75,7 +78,7 @@ export class PresetInstaller {
|
|
|
75
78
|
const userConflict = occupied && this.settings.get().installedId !== id;
|
|
76
79
|
if (preset) {
|
|
77
80
|
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'
|
|
81
|
+
return { id, name: preset.name, authorable, userConflict, state: preset.broken ? 'broken' : owned ? 'available'
|
|
79
82
|
: preset.trust === 'user' && this.settings.get().installedId === id ? 'installed' : 'conflict' };
|
|
80
83
|
}
|
|
81
84
|
return { id, authorable, userConflict, state: occupied ? 'conflict' : 'missing' };
|
|
@@ -92,8 +95,116 @@ export class PresetInstaller {
|
|
|
92
95
|
await this.installNow('super-code');
|
|
93
96
|
});
|
|
94
97
|
}
|
|
95
|
-
async
|
|
96
|
-
|
|
98
|
+
async synchronize(language) {
|
|
99
|
+
if (!/^[a-z]{2,8}(?:-[a-z0-9]{1,8})*$/i.test(language))
|
|
100
|
+
throw new Error('Invalid language');
|
|
101
|
+
return await this.enqueue(async () => {
|
|
102
|
+
const stored = this.settings.get();
|
|
103
|
+
const display = { ...stored.display };
|
|
104
|
+
const pendingDisplay = { ...stored.pendingDisplay };
|
|
105
|
+
let changed = false;
|
|
106
|
+
for (const preset of await this.roster.list()) {
|
|
107
|
+
const bundled = preset.trust === 'system' && resolve(preset.path) === join(this.bundledRoot, 'super-code', 'agent.cordis.yml');
|
|
108
|
+
const owned = preset.trust === 'user' && (preset.id === stored.installedId || Object.hasOwn(display, preset.path));
|
|
109
|
+
if (!bundled && !owned)
|
|
110
|
+
continue;
|
|
111
|
+
if ((await lstat(join(preset.path, '..'))).isSymbolicLink())
|
|
112
|
+
continue;
|
|
113
|
+
const metadata = join(preset.path, '..', 'preset.yml');
|
|
114
|
+
let previous = display[preset.path];
|
|
115
|
+
const pending = pendingDisplay[preset.path];
|
|
116
|
+
if (previous && pending) {
|
|
117
|
+
previous = { ...previous };
|
|
118
|
+
for (const field of ['name', 'description']) {
|
|
119
|
+
if (pending[field] !== undefined && preset[field] === pending[field])
|
|
120
|
+
previous[field] = pending[field];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const result = await migrateMetadata(metadata, preset.id, preset, previous, displayCopy(language), async (baseline) => {
|
|
124
|
+
pendingDisplay[preset.path] = baseline;
|
|
125
|
+
await this.settings.update({ pendingDisplay: { ...pendingDisplay } });
|
|
126
|
+
});
|
|
127
|
+
changed ||= result.changed;
|
|
128
|
+
display[preset.path] = result.baseline;
|
|
129
|
+
delete pendingDisplay[preset.path];
|
|
130
|
+
}
|
|
131
|
+
if (JSON.stringify(display) !== JSON.stringify(stored.display ?? {}) || JSON.stringify(pendingDisplay) !== JSON.stringify(this.settings.get().pendingDisplay ?? {})) {
|
|
132
|
+
await this.settings.update({ display, pendingDisplay });
|
|
133
|
+
}
|
|
134
|
+
return { changed };
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
async install(id, name) {
|
|
138
|
+
return await this.enqueue(() => this.installNow(id, name));
|
|
139
|
+
}
|
|
140
|
+
async reinstall(previousId, id, name) {
|
|
141
|
+
return await this.enqueue(async () => {
|
|
142
|
+
const reject = async (error) => ({ ok: false, error, status: await this.status() });
|
|
143
|
+
if (typeof id !== 'string' || !validId.test(id))
|
|
144
|
+
return reject('invalid-name');
|
|
145
|
+
if (name !== undefined && (typeof name !== 'string' || !name.trim() || name.length > 120))
|
|
146
|
+
return reject('invalid-display-name');
|
|
147
|
+
const stored = this.settings.get(), installation = stored.installation;
|
|
148
|
+
if (!installation || previousId !== stored.installedId || installation.id !== previousId)
|
|
149
|
+
return reject('ownership-unverified');
|
|
150
|
+
const roots = this.roster.roots.filter(root => root.trust === 'user');
|
|
151
|
+
const expected = await Promise.all(roots
|
|
152
|
+
.map(async (root) => {
|
|
153
|
+
try {
|
|
154
|
+
return join(await realpath(writableRoot([root], previousId)), previousId);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return '';
|
|
158
|
+
}
|
|
159
|
+
}));
|
|
160
|
+
if (!expected.includes(installation.path))
|
|
161
|
+
return reject('ownership-unverified');
|
|
162
|
+
const originalPath = join(writableRoot([roots[expected.indexOf(installation.path)]], previousId), previousId);
|
|
163
|
+
let backup = '';
|
|
164
|
+
try {
|
|
165
|
+
const directory = await lstat(installation.path);
|
|
166
|
+
const markerPath = join(installation.path, ownershipFile);
|
|
167
|
+
const markerStat = await lstat(markerPath);
|
|
168
|
+
if (!directory.isDirectory() || directory.isSymbolicLink() || !markerStat.isFile() || markerStat.isSymbolicLink()
|
|
169
|
+
|| await realpath(installation.path) !== installation.path
|
|
170
|
+
|| directory.dev !== installation.dev || directory.ino !== installation.ino)
|
|
171
|
+
return reject('ownership-unverified');
|
|
172
|
+
const marker = JSON.parse(await readFile(markerPath, 'utf8'));
|
|
173
|
+
if (marker.plugin !== 'dsh-super-code' || marker.token !== installation.token || marker.id !== previousId)
|
|
174
|
+
return reject('ownership-unverified');
|
|
175
|
+
if (id !== previousId && ((await this.roster.list()).some(row => row.id === id) || await this.occupied(id)))
|
|
176
|
+
return reject('name-taken');
|
|
177
|
+
// A container without agent.cordis.yml is not a discoverable preset.
|
|
178
|
+
// Retain it after success as a recovery copy of the removed preset.
|
|
179
|
+
backup = await mkdtemp(join(installation.path, '..', '.super-code-backup-'));
|
|
180
|
+
await rename(installation.path, join(backup, previousId));
|
|
181
|
+
const moved = await lstat(join(backup, previousId));
|
|
182
|
+
if (!moved.isDirectory() || moved.dev !== installation.dev || moved.ino !== installation.ino) {
|
|
183
|
+
if (!await exists(installation.path))
|
|
184
|
+
await rename(join(backup, previousId), installation.path);
|
|
185
|
+
return reject('ownership-unverified');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return reject('ownership-unverified');
|
|
190
|
+
}
|
|
191
|
+
try {
|
|
192
|
+
const result = await this.installNow(id, name, originalPath);
|
|
193
|
+
if (result.ok)
|
|
194
|
+
return result;
|
|
195
|
+
if (await exists(installation.path))
|
|
196
|
+
return reject('install-failed');
|
|
197
|
+
await rename(join(backup, previousId), installation.path);
|
|
198
|
+
await rm(backup, { recursive: true, force: true });
|
|
199
|
+
return { ...result, status: await this.status() };
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Never overwrite a directory created by another actor during repair.
|
|
203
|
+
if (!await exists(installation.path))
|
|
204
|
+
await rename(join(backup, previousId), installation.path);
|
|
205
|
+
return reject('install-failed');
|
|
206
|
+
}
|
|
207
|
+
});
|
|
97
208
|
}
|
|
98
209
|
async occupied(id) {
|
|
99
210
|
for (const root of this.roster.roots.filter(root => root.trust === 'user')) {
|
|
@@ -102,11 +213,13 @@ export class PresetInstaller {
|
|
|
102
213
|
}
|
|
103
214
|
return false;
|
|
104
215
|
}
|
|
105
|
-
async installNow(value) {
|
|
216
|
+
async installNow(value, name, replacedPath) {
|
|
106
217
|
const reject = async (error) => ({ ok: false, error, status: await this.status() });
|
|
107
218
|
if (typeof value !== 'string' || !validId.test(value))
|
|
108
219
|
return reject('invalid-name');
|
|
109
220
|
const id = value;
|
|
221
|
+
if (name !== undefined && (typeof name !== 'string' || !name.trim() || name.length > 120))
|
|
222
|
+
return reject('invalid-display-name');
|
|
110
223
|
if (!this.roster.roots.some(root => root.trust === 'user'))
|
|
111
224
|
return reject('no-user-root');
|
|
112
225
|
if ((await this.roster.list()).some(row => row.id === id) || await this.occupied(id))
|
|
@@ -124,15 +237,31 @@ export class PresetInstaller {
|
|
|
124
237
|
staging = await mkdtemp(join(root, '.super-code-install-'));
|
|
125
238
|
// The host copy helper can clean up its destination on failure. Isolate
|
|
126
239
|
// it from user-owned paths, then exclusively claim the final directory.
|
|
127
|
-
const prepared = await copyComposition([{ path: staging, trust: 'user' }], source, id,
|
|
240
|
+
const prepared = await copyComposition([{ path: staging, trust: 'user' }], source, id, name?.trim() ?? 'Super Code');
|
|
128
241
|
await mkdir(target, { mode: 0o700 });
|
|
129
242
|
claimed = true;
|
|
130
243
|
for (const entry of await readdir(prepared)) {
|
|
131
244
|
await cp(join(prepared, entry), join(target, entry), { recursive: true, force: false, errorOnExist: true });
|
|
132
245
|
}
|
|
133
|
-
|
|
246
|
+
const token = randomUUID();
|
|
247
|
+
await writeFile(join(target, ownershipFile), JSON.stringify({ plugin: 'dsh-super-code', id, token }), { flag: 'wx', mode: 0o600 });
|
|
248
|
+
const directory = await lstat(target);
|
|
249
|
+
const installation = { id, path: await realpath(target), token, dev: directory.dev, ino: directory.ino };
|
|
250
|
+
const display = { ...this.settings.get().display }, pendingDisplay = { ...this.settings.get().pendingDisplay };
|
|
251
|
+
if (replacedPath) {
|
|
252
|
+
delete display[join(replacedPath, 'agent.cordis.yml')];
|
|
253
|
+
delete pendingDisplay[join(replacedPath, 'agent.cordis.yml')];
|
|
254
|
+
}
|
|
255
|
+
const status = { id, authorable: true, userConflict: false, state: 'installed' };
|
|
256
|
+
await this.settings.update({ checked: true, installedId: id, installation, pendingDisplay, display: {
|
|
257
|
+
...display,
|
|
258
|
+
[join(target, 'agent.cordis.yml')]: {
|
|
259
|
+
...(name === undefined ? { name: 'Super Code' } : {}),
|
|
260
|
+
...(source.description === undefined ? {} : { description: source.description }),
|
|
261
|
+
},
|
|
262
|
+
} });
|
|
134
263
|
claimed = false;
|
|
135
|
-
return { ok: true, status
|
|
264
|
+
return { ok: true, status };
|
|
136
265
|
}
|
|
137
266
|
catch (error) {
|
|
138
267
|
if (claimed)
|
|
@@ -155,13 +284,19 @@ let SuperCodePresets = (() => {
|
|
|
155
284
|
let _instanceExtraInitializers = [];
|
|
156
285
|
let _status_decorators;
|
|
157
286
|
let _installPreset_decorators;
|
|
287
|
+
let _reinstallPreset_decorators;
|
|
288
|
+
let _synchronize_decorators;
|
|
158
289
|
return class SuperCodePresets extends _classSuper {
|
|
159
290
|
static {
|
|
160
291
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
161
292
|
_status_decorators = [Remote];
|
|
162
293
|
_installPreset_decorators = [Remote];
|
|
294
|
+
_reinstallPreset_decorators = [Remote];
|
|
295
|
+
_synchronize_decorators = [Remote];
|
|
163
296
|
__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
297
|
__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);
|
|
298
|
+
__esDecorate(this, null, _reinstallPreset_decorators, { kind: "method", name: "reinstallPreset", static: false, private: false, access: { has: obj => "reinstallPreset" in obj, get: obj => obj.reinstallPreset }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
299
|
+
__esDecorate(this, null, _synchronize_decorators, { kind: "method", name: "synchronize", static: false, private: false, access: { has: obj => "synchronize" in obj, get: obj => obj.synchronize }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
165
300
|
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
166
301
|
}
|
|
167
302
|
installer = __runInitializers(this, _instanceExtraInitializers);
|
|
@@ -170,7 +305,9 @@ let SuperCodePresets = (() => {
|
|
|
170
305
|
this.installer = installer;
|
|
171
306
|
}
|
|
172
307
|
status() { return this.installer.status(); }
|
|
173
|
-
installPreset(id) { return this.installer.install(id); }
|
|
308
|
+
installPreset(id, name) { return this.installer.install(id, name === '' ? undefined : name); }
|
|
309
|
+
reinstallPreset(previousId, id, name) { return this.installer.reinstall(previousId, id, name === '' ? undefined : name); }
|
|
310
|
+
synchronize(language) { return this.installer.synchronize(language); }
|
|
174
311
|
};
|
|
175
312
|
})();
|
|
176
313
|
export { SuperCodePresets };
|
|
@@ -179,11 +316,17 @@ export function applyPresetInstallation(ctx) {
|
|
|
179
316
|
const settings = owner.settings.register('super-code', s.object({
|
|
180
317
|
checked: s.boolean().default(false),
|
|
181
318
|
installedId: s.string().default(''),
|
|
319
|
+
installation: s.object({ id: s.string(), path: s.string(), token: s.string(), dev: s.number(), ino: s.number() }).required(false),
|
|
320
|
+
pendingDisplay: s.dict(s.object({ name: s.string().required(false), description: s.string().required(false) })).default({}),
|
|
321
|
+
display: s.dict(s.object({ name: s.string().required(false), description: s.string().required(false) })).default({}),
|
|
182
322
|
}));
|
|
183
323
|
const installer = new PresetInstaller(owner.agentPresets, settings, sourceRoot, owner.baseUrl);
|
|
184
324
|
new SuperCodePresets(owner, installer);
|
|
185
325
|
try {
|
|
186
326
|
await installer.initialize();
|
|
327
|
+
const language = owner.settings.get('locale');
|
|
328
|
+
if (language?.preference)
|
|
329
|
+
await installer.synchronize(language.preference);
|
|
187
330
|
}
|
|
188
331
|
catch {
|
|
189
332
|
owner.logger.warn('Super Code preset installation unavailable; retry in plugin settings.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset-installation.js","sourceRoot":"","sources":["../../src/dsh/preset-installation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preset-installation.js","sourceRoot":"","sources":["../../src/dsh/preset-installation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DisplayBaseline {
|
|
2
|
+
name?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface DisplayCopy {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function displayCopy(language: string): DisplayCopy;
|
|
10
|
+
export interface MetadataMigration {
|
|
11
|
+
changed: boolean;
|
|
12
|
+
baseline: DisplayBaseline;
|
|
13
|
+
}
|
|
14
|
+
export declare function migrateMetadata(path: string, id: string, current: DisplayBaseline, previous: DisplayBaseline | undefined, copy: DisplayCopy, beforeWrite?: (baseline: DisplayBaseline) => Promise<void>): Promise<MetadataMigration>;
|
|
15
|
+
//# sourceMappingURL=preset-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-metadata.d.ts","sourceRoot":"","sources":["../../src/dsh/preset-metadata.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AACD,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAClE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAIzD;AAQD,MAAM,WAAW,iBAAiB;IAAG,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE;AAClF,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,EAC5G,WAAW,GAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAkB,GACzE,OAAO,CAAC,iBAAiB,CAAC,CAgD5B"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** Update only recognized or previously managed display fields, preserving YAML around them. */
|
|
2
|
+
import { lstat, readFile, open, mkdtemp, rename, rm } from 'node:fs/promises';
|
|
3
|
+
import { constants } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { readPresetMetadata } from '@deepseek-ai/dsh-agent-presets';
|
|
6
|
+
export function displayCopy(language) {
|
|
7
|
+
return language.toLowerCase().startsWith('zh')
|
|
8
|
+
? { name: 'Super Code 模式', description: '更快、更省、更聪明的编码模式。' }
|
|
9
|
+
: { name: 'Super Code', description: 'A faster, more efficient, smarter coding mode.' };
|
|
10
|
+
}
|
|
11
|
+
const legacyDescriptions = [
|
|
12
|
+
'Coding with on-demand research, design, development, testing and optimization expertise.',
|
|
13
|
+
'A faster, more efficient, smarter coding mode.',
|
|
14
|
+
'更快、更省、更聪明的编码模式。',
|
|
15
|
+
'按需协同调研、设计、开发、测试与优化的编码助手。',
|
|
16
|
+
];
|
|
17
|
+
export async function migrateMetadata(path, id, current, previous, copy, beforeWrite = async () => { }) {
|
|
18
|
+
const baseline = {};
|
|
19
|
+
let original;
|
|
20
|
+
try {
|
|
21
|
+
if (!(await lstat(path)).isFile())
|
|
22
|
+
return { changed: false, baseline: previous ?? {} };
|
|
23
|
+
original = await readFile(path, 'utf8');
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (error.code === 'ENOENT')
|
|
27
|
+
return { changed: false, baseline: previous ?? {} };
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
// Discovery may predate a user edit; re-read the metadata before deciding ownership.
|
|
31
|
+
current = await readPresetMetadata(dirname(path));
|
|
32
|
+
let updated = original;
|
|
33
|
+
for (const field of ['name', 'description']) {
|
|
34
|
+
const value = current[field];
|
|
35
|
+
const managed = previous === undefined
|
|
36
|
+
? value !== undefined && (field === 'name'
|
|
37
|
+
? [id, 'Super Code', 'Super Code 模式', '超级编码'].includes(value)
|
|
38
|
+
: legacyDescriptions.includes(value))
|
|
39
|
+
: previous[field] !== undefined && value === previous[field];
|
|
40
|
+
if (!managed)
|
|
41
|
+
continue;
|
|
42
|
+
// A single top-level scalar only: preserve comments/unknown fields; leave
|
|
43
|
+
// aliases, multiline values and duplicate keys untouched for user review.
|
|
44
|
+
const pattern = new RegExp(`^${field}:[ \\t]*([^\\r\\n]*)$`, 'gm');
|
|
45
|
+
const matches = [...updated.matchAll(pattern)];
|
|
46
|
+
const match = matches[0];
|
|
47
|
+
if (matches.length !== 1 || !match || /^[>|&*]/.test(match[1].trim()))
|
|
48
|
+
continue;
|
|
49
|
+
baseline[field] = copy[field];
|
|
50
|
+
if (value === copy[field])
|
|
51
|
+
continue;
|
|
52
|
+
const comment = match[1].match(/\s+#.*$/)?.[0] ?? '';
|
|
53
|
+
updated = updated.replace(pattern, () => `${field}: ${JSON.stringify(copy[field])}${comment}`);
|
|
54
|
+
}
|
|
55
|
+
if (updated === original)
|
|
56
|
+
return { changed: false, baseline };
|
|
57
|
+
// Stage beside the original so interruption cannot leave a partial YAML file.
|
|
58
|
+
const staging = await mkdtemp(join(dirname(path), '.super-code-metadata-'));
|
|
59
|
+
try {
|
|
60
|
+
const temporary = join(staging, 'preset.yml');
|
|
61
|
+
const file = await open(temporary, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY, 0o600);
|
|
62
|
+
try {
|
|
63
|
+
await file.writeFile(updated);
|
|
64
|
+
await file.sync();
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
await file.close();
|
|
68
|
+
}
|
|
69
|
+
if (!(await lstat(path)).isFile() || await readFile(path, 'utf8') !== original) {
|
|
70
|
+
throw new Error('Preset metadata changed during migration');
|
|
71
|
+
}
|
|
72
|
+
await beforeWrite(baseline);
|
|
73
|
+
// Persistence can await I/O; check once more before replacing the file.
|
|
74
|
+
if (await readFile(path, 'utf8') !== original)
|
|
75
|
+
throw new Error('Preset metadata changed during migration');
|
|
76
|
+
await rename(temporary, path);
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
await rm(staging, { recursive: true, force: true });
|
|
80
|
+
}
|
|
81
|
+
return { changed: true, baseline };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=preset-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-metadata.js","sourceRoot":"","sources":["../../src/dsh/preset-metadata.ts"],"names":[],"mappings":"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"}
|
package/lib/dsh/super-code.js
CHANGED
|
@@ -89,7 +89,7 @@ export function apply(ctx, config = {}) {
|
|
|
89
89
|
} });
|
|
90
90
|
ctx.tools.register(defineTool({
|
|
91
91
|
name: 'super_code_method',
|
|
92
|
-
description: 'Read
|
|
92
|
+
description: 'Read expertise when causes remain indistinguishable, failures repeat or recovery/state behavior is unclear. Select a method directly; omit it only to inspect a team. Reuse loaded guidance; batch with independent reads. Not a routine prerequisite.',
|
|
93
93
|
parameters: { team: { type: 'string', enum: TEAM_NAMES, required: true }, method: { type: 'string', enum: Object.keys(METHODS) },
|
|
94
94
|
recipe: { type: 'string', enum: EXPERIMENT_RECIPES, description: 'Optional runnable Shell example for a hard problem: failure reduction, differential oracle, controlled async interleavings or contract relation. Omit when unnecessary.' } },
|
|
95
95
|
output: { schema: { type: 'string' }, render: (_args, value) => [{ type: 'text', text: value }] },
|