@dsh-electron/dsh-plugin-multi-root-workspace 0.1.8 → 0.1.10
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/CHANGELOG.en.md +22 -1
- package/CHANGELOG.md +22 -1
- package/README.en.md +39 -16
- package/README.md +47 -24
- package/cordis.patch.yml +10 -0
- package/lib/auto-review-packages-nRjnb4pU.js +15 -0
- package/lib/auto-review.js +166 -0
- package/lib/client.js +573 -131
- package/lib/client.js.map +1 -1
- package/lib/{command-CESuwlVt.js → command-BGdz7VBH.js} +68 -8
- package/lib/command.js +1 -1
- package/lib/{compat-DR2LvmYZ.js → compat-D-MljsPV.js} +13 -2
- package/lib/compat.js +1 -1
- package/lib/{contract-DZ4zczDT.js → contract-CStSEOcK.js} +44 -1
- package/lib/fork-CzbeWxHp.js +670 -0
- package/lib/fs.js +1 -1
- package/lib/index.js +9 -8
- package/lib/{instructions-D19jRxN0.js → instructions-MePoRigy.js} +213 -263
- package/lib/instructions.js +1 -1
- package/lib/llm-message-fYORacvh.js +206 -0
- package/lib/lsp.js +1 -1
- package/lib/metadata-DgqSdVX_.js +35 -0
- package/lib/{registry-DCxC5Lay.js → registry-KSsmU393.js} +66 -13
- package/lib/registry.js +1 -1
- package/lib/review-context-AH-SXHmj.js +98 -0
- package/lib/review-context.js +2 -0
- package/lib/{roots-B-0l8mNG.js → roots-Ca_W1S9n.js} +1 -1
- package/lib/{sandbox-CVAcT_gy.js → sandbox-CXk5h-ct.js} +3 -3
- package/lib/sandbox.js +1 -1
- package/lib/scope.js +15 -6
- package/lib/skills.js +790 -0
- package/lib/types/auto-review/entry.d.ts +5 -0
- package/lib/types/client/WorkspaceFoldersAction.d.ts +1 -1
- package/lib/types/client/locales.d.ts +26 -16
- package/lib/types/client/skills-client.d.ts +23 -0
- package/lib/types/client/skills-settings.d.ts +10 -0
- package/lib/types/client/skills.d.ts +36 -0
- package/lib/types/client/styles.d.ts +1 -1
- package/lib/types/command.d.ts +1 -1
- package/lib/types/compat/auto-review-contract.d.ts +3 -0
- package/lib/types/compat/auto-review-loader.d.ts +33 -0
- package/lib/types/compat/auto-review-packages.d.ts +1 -0
- package/lib/types/compat/client-session.d.ts +2 -0
- package/lib/types/compat/dsh-version.d.ts +5 -5
- package/lib/types/compat/instruction-activity.d.ts +17 -0
- package/lib/types/compat/review-session.d.ts +2 -0
- package/lib/types/compat/skill-content.d.ts +3 -0
- package/lib/types/compat/skills-client.d.ts +33 -0
- package/lib/types/compat/skills-settings.d.ts +8 -0
- package/lib/types/compat/skills.d.ts +13 -0
- package/lib/types/compat/storage-zod.d.ts +1 -0
- package/lib/types/contract.d.ts +12 -1
- package/lib/types/instructions.d.ts +18 -1
- package/lib/types/registry.d.ts +7 -0
- package/lib/types/review-context.d.ts +49 -0
- package/lib/types/roots.d.ts +4 -1
- package/lib/types/scope.d.ts +5 -0
- package/lib/types/skills/catalog.d.ts +34 -0
- package/lib/types/skills/invocation.d.ts +7 -0
- package/lib/types/skills/metadata.d.ts +13 -0
- package/lib/types/skills/pool.d.ts +19 -0
- package/lib/types/skills/reader.d.ts +3 -0
- package/lib/types/skills/routing.d.ts +2 -0
- package/lib/types/skills-contract.d.ts +39 -0
- package/lib/types/skills.d.ts +43 -0
- package/lib/windows-runner.js +2 -2
- package/lib/workspace-files.js +2 -2
- package/package.json +121 -68
- package/src/auto-review/FORK.md +26 -0
- package/src/auto-review/LICENSE +21 -0
- package/src/auto-review/README.en.md +22 -0
- package/src/auto-review/README.md +22 -0
- package/lib/{fs-Nlp2AiRX.js → fs-BTXySwSG.js} +1 -1
- package/lib/{registry-lease-win32-DTO6QpT9.js → registry-lease-win32-DVTq9d4D.js} +1 -1
- package/lib/{windows-runner-contract-CEfmZzu0.js → windows-runner-contract-B5R2K3mM.js} +1 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Context, Service } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
3
|
+
import type { CurrentRootInstruction } from './instructions.ts';
|
|
4
|
+
declare module '@deepseek-ai/cordis' {
|
|
5
|
+
interface Context {
|
|
6
|
+
multiRootReviewContext: MultiRootReviewContext;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export interface ReviewExecution {
|
|
10
|
+
readonly agent?: Agent;
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly arguments: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface ReviewContext {
|
|
15
|
+
readonly schemaVersion: 1;
|
|
16
|
+
readonly environment: {
|
|
17
|
+
readonly sessionOrigin: string;
|
|
18
|
+
readonly effectiveCwd: string;
|
|
19
|
+
readonly sandboxMode: string;
|
|
20
|
+
readonly registryAuthority: 'available' | 'unavailable';
|
|
21
|
+
readonly roots: readonly {
|
|
22
|
+
readonly path: string;
|
|
23
|
+
readonly access: string;
|
|
24
|
+
readonly effectiveWritable: boolean;
|
|
25
|
+
}[];
|
|
26
|
+
readonly writableRoots: readonly string[];
|
|
27
|
+
readonly deniedRoots: readonly string[];
|
|
28
|
+
readonly protectedHome?: string;
|
|
29
|
+
/** Full access permits unregistered paths subject to the existing deny fence. */
|
|
30
|
+
readonly ambientWrites: boolean;
|
|
31
|
+
readonly readConfinement: false;
|
|
32
|
+
readonly primaryRootWritable: boolean;
|
|
33
|
+
readonly writeBoundary: string;
|
|
34
|
+
};
|
|
35
|
+
/** Provenance from current scope and the existing delivery index; never a grant. */
|
|
36
|
+
readonly instructionProvenanceRoots: readonly string[];
|
|
37
|
+
readonly constraints: readonly CurrentRootInstruction[];
|
|
38
|
+
readonly completeness: 'complete';
|
|
39
|
+
readonly fingerprint: string;
|
|
40
|
+
}
|
|
41
|
+
/** All authority remains in the existing Registry/scope and instruction index. */
|
|
42
|
+
export declare class MultiRootReviewContext extends Service {
|
|
43
|
+
static inject: string[];
|
|
44
|
+
constructor(ctx: Context);
|
|
45
|
+
assertCompatible(): void;
|
|
46
|
+
build(exec: ReviewExecution, signal: AbortSignal): Promise<ReviewContext>;
|
|
47
|
+
assertCurrent(exec: ReviewExecution, snapshot: ReviewContext, signal: AbortSignal): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
export default MultiRootReviewContext;
|
package/lib/types/roots.d.ts
CHANGED
|
@@ -105,6 +105,9 @@ export interface RegisteredRoot {
|
|
|
105
105
|
readonly readWriteRecordedPath?: string;
|
|
106
106
|
/** Optional display alias; absent when the operator cleared it. */
|
|
107
107
|
readonly alias?: string;
|
|
108
|
+
/** Untrusted stored metadata; consumers must validate both fields and uniqueness. */
|
|
109
|
+
readonly aliasId?: unknown;
|
|
110
|
+
readonly skillsEnabled?: unknown;
|
|
108
111
|
/** ISO-8601 instant of registration. */
|
|
109
112
|
readonly addedAt: string;
|
|
110
113
|
}
|
|
@@ -169,7 +172,7 @@ export type RootRef = {
|
|
|
169
172
|
readonly addedAt: string;
|
|
170
173
|
};
|
|
171
174
|
/** Every way root handling can fail, as a stable code the surfaces localize. */
|
|
172
|
-
export type RootValidationCode = 'not-absolute' | 'missing' | 'not-a-directory' | 'equals-primary' | 'primary-overlap' | 'duplicate' | 'nested' | 'invalid-alias' | 'not-found' | 'invalid-ref' | 'storage-unavailable' | 'registry-contended' | 'root-limit-reached' | 'config-invalid' | 'reveal-unavailable' | 'session-not-found' | 'unsupported-path' | 'root-unavailable';
|
|
175
|
+
export type RootValidationCode = 'not-absolute' | 'missing' | 'not-a-directory' | 'equals-primary' | 'primary-overlap' | 'duplicate' | 'nested' | 'invalid-alias' | 'invalid-alias-id' | 'not-found' | 'invalid-ref' | 'storage-unavailable' | 'registry-contended' | 'root-limit-reached' | 'config-invalid' | 'reveal-unavailable' | 'session-not-found' | 'unsupported-path' | 'root-unavailable';
|
|
173
176
|
/** A rejected root operation; `code` is the stable contract, `message` the fallback prose. */
|
|
174
177
|
export declare class RootValidationError extends Error {
|
|
175
178
|
readonly code: RootValidationCode;
|
package/lib/types/scope.d.ts
CHANGED
|
@@ -245,6 +245,11 @@ export declare class MultiRootScopeService extends Service {
|
|
|
245
245
|
* @returns the canonical scope; `additionalRoots` is empty when none are registered.
|
|
246
246
|
*/
|
|
247
247
|
resolve(policy: SandboxExecutionPolicy): FilesystemScope;
|
|
248
|
+
/** Read-only pending-dispatch projection. Does not mint an ALS execution grant. */
|
|
249
|
+
previewForTool(policy: SandboxExecutionPolicy, toolName: string): FilesystemScope;
|
|
250
|
+
/** Execution and review use exactly the same parent-narrowing rule. */
|
|
251
|
+
private capForTool;
|
|
252
|
+
private project;
|
|
248
253
|
/**
|
|
249
254
|
* Whether THIS call's additional-root writes are capped. Inside a tool
|
|
250
255
|
* dispatch the AsyncLocalStorage store answers; outside any dispatch (user
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SkillReaderPool } from './pool.ts';
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import type { SkillCandidate, SkillLookupOptions, SkillDefinition } from '@deepseek-ai/dsh-skill';
|
|
4
|
+
import type { RootStatus } from '../roots.ts';
|
|
5
|
+
import { rootReader } from './reader.ts';
|
|
6
|
+
export declare const SKILLS_PROVIDER = "multi-root-workspace";
|
|
7
|
+
export declare function internalSkillName(primary: string, rootId: string, skillName: string): string;
|
|
8
|
+
export interface LocatedSkill {
|
|
9
|
+
readonly primary: string;
|
|
10
|
+
readonly rootId: string;
|
|
11
|
+
readonly aliasId: string;
|
|
12
|
+
readonly candidate: SkillCandidate;
|
|
13
|
+
}
|
|
14
|
+
export type Reader = NonNullable<Awaited<ReturnType<typeof rootReader>>>;
|
|
15
|
+
export declare class AdditionalSkillCatalog {
|
|
16
|
+
private readonly ctx;
|
|
17
|
+
private readonly signal;
|
|
18
|
+
private readonly enabled;
|
|
19
|
+
private readonly generation;
|
|
20
|
+
private readonly loadedReceipts;
|
|
21
|
+
private readonly locators;
|
|
22
|
+
private readonly requests;
|
|
23
|
+
readonly pool: SkillReaderPool;
|
|
24
|
+
constructor(ctx: Context, signal: AbortSignal, enabled: () => boolean, generation?: () => number, invalidate?: () => void);
|
|
25
|
+
/** Read synchronously after awaited receipt checks, immediately before batch delivery. */
|
|
26
|
+
get revision(): number;
|
|
27
|
+
current(primary: string, id: string): RootStatus | undefined;
|
|
28
|
+
private withReader;
|
|
29
|
+
list(primary: string, options: SkillLookupOptions): Promise<SkillCandidate[]>;
|
|
30
|
+
/** Locators are created here and are not accepted from a client path or object. */
|
|
31
|
+
load(primary: string, entry: SkillCandidate, options: SkillLookupOptions, user: boolean): Promise<SkillDefinition | undefined>;
|
|
32
|
+
admissionValid(definition: SkillDefinition): Promise<boolean>;
|
|
33
|
+
dispose(): Promise<void>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Host-only explicit gesture parsing. External messages cannot forge user intent. */
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
4
|
+
import type { AdditionalSkillCatalog, LocatedSkill } from './catalog.ts';
|
|
5
|
+
export declare function installSkillInvocations(ctx: Context, catalog: AdditionalSkillCatalog, known: WeakMap<Agent, Map<string, LocatedSkill>>): void;
|
|
6
|
+
/** The tracked identity is an Agent object, never a process-global current Session. */
|
|
7
|
+
export type SkillCaller = Agent;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface SkillsMetadata {
|
|
2
|
+
readonly id: string;
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly alias?: string | undefined;
|
|
5
|
+
readonly aliasId?: unknown;
|
|
6
|
+
readonly skillsEnabled?: unknown;
|
|
7
|
+
readonly readOnlyRecordedPath?: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function validAliasId(value: unknown): value is string;
|
|
10
|
+
export declare function skillsMetadataValid(row: SkillsMetadata, rows: readonly SkillsMetadata[]): boolean;
|
|
11
|
+
export declare function validateAliasId(value: string, others: readonly SkillsMetadata[]): string;
|
|
12
|
+
/** Missing metadata is legacy; malformed supplied metadata is preserved and withheld. */
|
|
13
|
+
export declare function migrateRootSkills<T extends SkillsMetadata>(rows: readonly T[]): T[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Reader } from './catalog.ts';
|
|
2
|
+
export declare class SkillReaderPool {
|
|
3
|
+
private readonly invalidate;
|
|
4
|
+
readonly capacity: number;
|
|
5
|
+
private readonly entries;
|
|
6
|
+
private readonly waiters;
|
|
7
|
+
private closing;
|
|
8
|
+
private polling;
|
|
9
|
+
private readonly timer;
|
|
10
|
+
constructor(invalidate: () => void, capacity?: number, intervalMs?: number);
|
|
11
|
+
get size(): number;
|
|
12
|
+
get roots(): readonly string[];
|
|
13
|
+
use<T>(key: string, create: (signal: AbortSignal) => Promise<Reader | undefined>, run: (reader: Reader | undefined) => Promise<T>, signal?: AbortSignal): Promise<T>;
|
|
14
|
+
poll(): Promise<void>;
|
|
15
|
+
dispose(): Promise<void>;
|
|
16
|
+
private closeEntry;
|
|
17
|
+
}
|
|
18
|
+
/** No symlink target outside the Root is read or enumerated. Content reads stay on demand. */
|
|
19
|
+
export declare function skillTreeStamp(root: string): Promise<string>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
export declare function containsPath(root: string, target: string): boolean;
|
|
3
|
+
export declare function rootReader(ctx: Context, root: string, signal: AbortSignal, valid: () => boolean): Promise<import("@deepseek-ai/dsh-skill-filesystem").FileSystemSkillProvider | undefined>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** Browser-safe Skills wire shapes. Session IDs select authority; clients never send paths. */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare const SKILLS_ENDPOINTS: readonly ["skillsList", "skillsPreview", "skillsChanges"];
|
|
4
|
+
export type SkillsEndpoint = typeof SKILLS_ENDPOINTS[number];
|
|
5
|
+
export declare const skillsRequestSchema: z.ZodObject<{
|
|
6
|
+
sessionId: z.ZodString;
|
|
7
|
+
name: z.ZodOptional<z.ZodString>;
|
|
8
|
+
generation: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
}, z.core.$strict>;
|
|
10
|
+
export declare const skillsStatusSchema: z.ZodObject<{
|
|
11
|
+
sessionId: z.ZodString;
|
|
12
|
+
generation: z.ZodNumber;
|
|
13
|
+
enabled: z.ZodBoolean;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export declare const skillsCatalogSchema: z.ZodObject<{
|
|
16
|
+
skills: z.ZodArray<z.ZodObject<{
|
|
17
|
+
name: z.ZodString;
|
|
18
|
+
description: z.ZodString;
|
|
19
|
+
modelInvocable: z.ZodBoolean;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
sessionId: z.ZodString;
|
|
22
|
+
generation: z.ZodNumber;
|
|
23
|
+
enabled: z.ZodBoolean;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
export declare const skillsPreviewSchema: z.ZodObject<{
|
|
26
|
+
name: z.ZodString;
|
|
27
|
+
content: z.ZodString;
|
|
28
|
+
sessionId: z.ZodString;
|
|
29
|
+
generation: z.ZodNumber;
|
|
30
|
+
enabled: z.ZodBoolean;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export type SkillsStatusView = z.infer<typeof skillsStatusSchema>;
|
|
33
|
+
export type SkillsCatalogView = z.infer<typeof skillsCatalogSchema>;
|
|
34
|
+
export type SkillsPreviewView = z.infer<typeof skillsPreviewSchema>;
|
|
35
|
+
export interface SkillsResponseMap {
|
|
36
|
+
skillsList: SkillsCatalogView;
|
|
37
|
+
skillsPreview: SkillsPreviewView;
|
|
38
|
+
skillsChanges: SkillsStatusView;
|
|
39
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Optional Skills host entry. Kept outside the carrier's module evaluation graph. */
|
|
2
|
+
import { Service, type Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import z from '@deepseek-ai/schemastery';
|
|
4
|
+
import type { SkillsCatalogView, SkillsPreviewView, SkillsStatusView } from './skills-contract.ts';
|
|
5
|
+
export interface Config {
|
|
6
|
+
readonly enabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
9
|
+
enabled: z<boolean, boolean, "defined">;
|
|
10
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
11
|
+
enabled: z<boolean, boolean, "defined">;
|
|
12
|
+
}>>, "plain">;
|
|
13
|
+
declare module '@deepseek-ai/cordis' {
|
|
14
|
+
interface Context {
|
|
15
|
+
multiRootSkills: MultiRootSkills;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Assembly owner; discovery is installed only after native services arrive. */
|
|
19
|
+
export declare class MultiRootSkills extends Service {
|
|
20
|
+
private readonly settingsConfig;
|
|
21
|
+
static Config: z<Schemastery.ObjectS<NoInfer<{
|
|
22
|
+
enabled: z<boolean, boolean, "defined">;
|
|
23
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
24
|
+
enabled: z<boolean, boolean, "defined">;
|
|
25
|
+
}>>, "plain">;
|
|
26
|
+
static provide: string;
|
|
27
|
+
static inject: string[];
|
|
28
|
+
constructor(ctx: Context, settingsConfig?: Config);
|
|
29
|
+
private settingsRead;
|
|
30
|
+
private revision;
|
|
31
|
+
private catalog;
|
|
32
|
+
private readonly changed;
|
|
33
|
+
private closing;
|
|
34
|
+
get generation(): number;
|
|
35
|
+
invalidate(): void;
|
|
36
|
+
private status;
|
|
37
|
+
listSession(sessionId: string, signal?: AbortSignal): Promise<SkillsCatalogView>;
|
|
38
|
+
previewSession(sessionId: string, name: string, signal?: AbortSignal): Promise<SkillsPreviewView>;
|
|
39
|
+
changes(sessionId: string, generation: number, signal?: AbortSignal): Promise<SkillsStatusView>;
|
|
40
|
+
protected [Service.init](): Promise<void>;
|
|
41
|
+
get enabled(): boolean;
|
|
42
|
+
}
|
|
43
|
+
export default MultiRootSkills;
|
package/lib/windows-runner.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as parseWindowsProfile, i as isWindowsNetworkOrDevicePath, n as assertWindowsDenyCapacity, o as rootDenySid, r as canonicalPath, s as workspaceScopeSid } from "./windows-runner-contract-
|
|
1
|
+
import { a as parseWindowsProfile, i as isWindowsNetworkOrDevicePath, n as assertWindowsDenyCapacity, o as rootDenySid, r as canonicalPath, s as workspaceScopeSid } from "./windows-runner-contract-B5R2K3mM.js";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { closeSync, existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync, statSync } from "node:fs";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
4
5
|
import { basename, dirname, isAbsolute, join, win32 } from "node:path";
|
|
5
6
|
import { pathToFileURL } from "node:url";
|
|
6
|
-
import { createHash } from "node:crypto";
|
|
7
7
|
import { createConnection } from "node:net";
|
|
8
8
|
//#region src/compat/windows-native.ts
|
|
9
9
|
/** Public Win32 process primitives, resolved from the upstream ACL installation.
|
package/lib/workspace-files.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { l as isCanonicallyUnder } from "./roots-B-0l8mNG.js";
|
|
2
|
-
import { t as routeWorkspacePath } from "./workspace-routing-YPxaQ4V3.js";
|
|
3
1
|
import { t as wrapMethod } from "./method-wrapper-CFY3p3j2.js";
|
|
2
|
+
import { l as isCanonicallyUnder } from "./roots-Ca_W1S9n.js";
|
|
3
|
+
import { t as routeWorkspacePath } from "./workspace-routing-YPxaQ4V3.js";
|
|
4
4
|
import { posix, resolve, win32 } from "node:path";
|
|
5
5
|
//#region src/compat/workspace-files.ts
|
|
6
6
|
function adaptPathWatch(service, wrap) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-electron/dsh-plugin-multi-root-workspace",
|
|
3
3
|
"description": "Multi-root Workspace for DeepSeek Harness: adds N additional roots to the workspace sandbox scope as an out-of-tree bundle",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.10",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/types/index.d.ts",
|
|
@@ -62,6 +62,18 @@
|
|
|
62
62
|
"./windows-runner": {
|
|
63
63
|
"types": "./lib/types/windows-runner.d.ts",
|
|
64
64
|
"default": "./lib/windows-runner.js"
|
|
65
|
+
},
|
|
66
|
+
"./review-context": {
|
|
67
|
+
"types": "./lib/types/review-context.d.ts",
|
|
68
|
+
"default": "./lib/review-context.js"
|
|
69
|
+
},
|
|
70
|
+
"./auto-review": {
|
|
71
|
+
"types": "./lib/types/auto-review/entry.d.ts",
|
|
72
|
+
"default": "./lib/auto-review.js"
|
|
73
|
+
},
|
|
74
|
+
"./skills": {
|
|
75
|
+
"types": "./lib/types/skills.d.ts",
|
|
76
|
+
"default": "./lib/skills.js"
|
|
65
77
|
}
|
|
66
78
|
},
|
|
67
79
|
"files": [
|
|
@@ -75,7 +87,11 @@
|
|
|
75
87
|
"CHANGELOG.en.md",
|
|
76
88
|
"LICENSE",
|
|
77
89
|
"scripts/windows-broker/*.ps1",
|
|
78
|
-
"scripts/windows-broker/*.cs"
|
|
90
|
+
"scripts/windows-broker/*.cs",
|
|
91
|
+
"src/auto-review/FORK.md",
|
|
92
|
+
"src/auto-review/LICENSE",
|
|
93
|
+
"src/auto-review/README.md",
|
|
94
|
+
"src/auto-review/README.en.md"
|
|
79
95
|
],
|
|
80
96
|
"publishConfig": {
|
|
81
97
|
"access": "public"
|
|
@@ -90,26 +106,33 @@
|
|
|
90
106
|
"license": "MIT",
|
|
91
107
|
"peerDependencies": {
|
|
92
108
|
"@deepseek-ai/cordis": ">=4.0.1 <5.0.0 || 4.0.5-alpha.1 || 4.0.5-alpha.2",
|
|
93
|
-
"@deepseek-ai/dsh-agent": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
94
|
-
"@deepseek-ai/dsh-agent-instructions": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
95
|
-
"@deepseek-ai/dsh-api-workspace-files": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
96
|
-
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
97
|
-
"@deepseek-ai/dsh-commands": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
98
|
-
"@deepseek-ai/dsh-fs": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
99
|
-
"@deepseek-ai/dsh-fs-local": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
100
|
-
"@deepseek-ai/dsh-llm": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
101
|
-
"@deepseek-ai/dsh-lsp": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
102
|
-
"@deepseek-ai/dsh-lsp-stdio": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
103
|
-
"@deepseek-ai/dsh-sandbox": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
104
|
-
"@deepseek-ai/dsh-sandbox-local": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
105
|
-
"@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
106
|
-
"@deepseek-ai/dsh-sandbox-windows-acl": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
107
|
-
"@deepseek-ai/dsh-session": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
108
|
-
"@deepseek-ai/dsh-storage-domain": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
109
|
-
"@deepseek-ai/dsh-subprocess": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
110
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
111
|
-
"@deepseek-ai/dsh-tools": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
112
|
-
"@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2"
|
|
109
|
+
"@deepseek-ai/dsh-agent": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
110
|
+
"@deepseek-ai/dsh-agent-instructions": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
111
|
+
"@deepseek-ai/dsh-api-workspace-files": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
112
|
+
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
113
|
+
"@deepseek-ai/dsh-commands": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
114
|
+
"@deepseek-ai/dsh-fs": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
115
|
+
"@deepseek-ai/dsh-fs-local": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
116
|
+
"@deepseek-ai/dsh-llm": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
117
|
+
"@deepseek-ai/dsh-lsp": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
118
|
+
"@deepseek-ai/dsh-lsp-stdio": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
119
|
+
"@deepseek-ai/dsh-sandbox": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
120
|
+
"@deepseek-ai/dsh-sandbox-local": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
121
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
122
|
+
"@deepseek-ai/dsh-sandbox-windows-acl": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
123
|
+
"@deepseek-ai/dsh-session": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
124
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
125
|
+
"@deepseek-ai/dsh-subprocess": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
126
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
127
|
+
"@deepseek-ai/dsh-tools": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
128
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
129
|
+
"@deepseek-ai/dsh-permission-presets": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
130
|
+
"@deepseek-ai/dsh-util-values": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
131
|
+
"@deepseek-ai/dsh-skill": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
132
|
+
"@deepseek-ai/dsh-skill-filesystem": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
133
|
+
"@deepseek-ai/dsh-settings": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
134
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
135
|
+
"@deepseek-ai/dsh-session-query": "0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1 || 0.1.7-alpha.2 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.1 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-alpha.4 || 0.2.1-alpha.5 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3"
|
|
113
136
|
},
|
|
114
137
|
"peerDependenciesMeta": {
|
|
115
138
|
"@deepseek-ai/dsh-agent": {
|
|
@@ -153,51 +176,72 @@
|
|
|
153
176
|
},
|
|
154
177
|
"@deepseek-ai/dsh-tools": {
|
|
155
178
|
"optional": true
|
|
179
|
+
},
|
|
180
|
+
"@deepseek-ai/dsh-permission-presets": {
|
|
181
|
+
"optional": true
|
|
182
|
+
},
|
|
183
|
+
"@deepseek-ai/dsh-util-values": {
|
|
184
|
+
"optional": true
|
|
185
|
+
},
|
|
186
|
+
"@deepseek-ai/dsh-skill": {
|
|
187
|
+
"optional": true
|
|
188
|
+
},
|
|
189
|
+
"@deepseek-ai/dsh-skill-filesystem": {
|
|
190
|
+
"optional": true
|
|
191
|
+
},
|
|
192
|
+
"@deepseek-ai/dsh-settings": {
|
|
193
|
+
"optional": true
|
|
194
|
+
},
|
|
195
|
+
"@deepseek-ai/dsh-api-session-controller": {
|
|
196
|
+
"optional": true
|
|
197
|
+
},
|
|
198
|
+
"@deepseek-ai/dsh-session-query": {
|
|
199
|
+
"optional": true
|
|
156
200
|
}
|
|
157
201
|
},
|
|
158
202
|
"devDependencies": {
|
|
159
203
|
"@deepseek-ai/cordis": "4.0.5",
|
|
160
|
-
"@deepseek-ai/dsh": "0.2.1-rc.
|
|
161
|
-
"@deepseek-ai/dsh-agent": "0.2.1-rc.
|
|
162
|
-
"@deepseek-ai/dsh-agent-instructions": "0.2.1-rc.
|
|
163
|
-
"@deepseek-ai/dsh-api-remotes": "0.2.1-rc.
|
|
164
|
-
"@deepseek-ai/dsh-api-workspace-files": "0.2.1-rc.
|
|
165
|
-
"@deepseek-ai/dsh-app-boot": "0.2.1-rc.
|
|
166
|
-
"@deepseek-ai/dsh-base": "0.2.1-rc.
|
|
167
|
-
"@deepseek-ai/dsh-client-connection": "0.2.1-rc.
|
|
168
|
-
"@deepseek-ai/dsh-client-locale": "0.2.1-rc.
|
|
169
|
-
"@deepseek-ai/dsh-client-store": "0.2.1-rc.
|
|
170
|
-
"@deepseek-ai/dsh-client-ui-dockkit": "0.2.1-rc.
|
|
171
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.
|
|
172
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.
|
|
173
|
-
"@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.
|
|
174
|
-
"@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-rc.
|
|
175
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.
|
|
176
|
-
"@deepseek-ai/dsh-client-ui-workspace": "0.2.1-rc.
|
|
177
|
-
"@deepseek-ai/dsh-commands": "0.2.1-rc.
|
|
178
|
-
"@deepseek-ai/dsh-fs": "0.2.1-rc.
|
|
179
|
-
"@deepseek-ai/dsh-fs-local": "0.2.1-rc.
|
|
180
|
-
"@deepseek-ai/dsh-fs-sandbox": "0.2.1-rc.
|
|
181
|
-
"@deepseek-ai/dsh-host-open-in-app": "0.2.1-rc.
|
|
182
|
-
"@deepseek-ai/dsh-llm": "0.2.1-rc.
|
|
183
|
-
"@deepseek-ai/dsh-lsp": "0.2.1-rc.
|
|
184
|
-
"@deepseek-ai/dsh-lsp-stdio": "0.2.1-rc.
|
|
185
|
-
"@deepseek-ai/dsh-sandbox": "0.2.1-rc.
|
|
186
|
-
"@deepseek-ai/dsh-sandbox-local": "0.2.1-rc.
|
|
187
|
-
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.
|
|
188
|
-
"@deepseek-ai/dsh-sandbox-windows-acl": "0.2.1-rc.
|
|
189
|
-
"@deepseek-ai/dsh-session": "0.2.1-rc.
|
|
190
|
-
"@deepseek-ai/dsh-session-projection": "0.2.1-rc.
|
|
191
|
-
"@deepseek-ai/dsh-storage": "0.2.1-rc.
|
|
192
|
-
"@deepseek-ai/dsh-storage-domain": "0.2.1-rc.
|
|
193
|
-
"@deepseek-ai/dsh-storage-json": "0.2.1-rc.
|
|
194
|
-
"@deepseek-ai/dsh-subprocess": "0.2.1-rc.
|
|
195
|
-
"@deepseek-ai/dsh-subprocess-local": "0.2.1-rc.
|
|
196
|
-
"@deepseek-ai/dsh-system-prompt": "0.2.1-rc.
|
|
197
|
-
"@deepseek-ai/dsh-tools": "0.2.1-rc.
|
|
198
|
-
"@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.
|
|
199
|
-
"@deepseek-ai/dsh-util-workspace-path": "0.2.1-rc.
|
|
200
|
-
"@deepseek-ai/dsh-workspace": "0.2.1-rc.
|
|
204
|
+
"@deepseek-ai/dsh": "0.2.1-rc.3",
|
|
205
|
+
"@deepseek-ai/dsh-agent": "0.2.1-rc.3",
|
|
206
|
+
"@deepseek-ai/dsh-agent-instructions": "0.2.1-rc.3",
|
|
207
|
+
"@deepseek-ai/dsh-api-remotes": "0.2.1-rc.3",
|
|
208
|
+
"@deepseek-ai/dsh-api-workspace-files": "0.2.1-rc.3",
|
|
209
|
+
"@deepseek-ai/dsh-app-boot": "0.2.1-rc.3",
|
|
210
|
+
"@deepseek-ai/dsh-base": "0.2.1-rc.3",
|
|
211
|
+
"@deepseek-ai/dsh-client-connection": "0.2.1-rc.3",
|
|
212
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-rc.3",
|
|
213
|
+
"@deepseek-ai/dsh-client-store": "0.2.1-rc.3",
|
|
214
|
+
"@deepseek-ai/dsh-client-ui-dockkit": "0.2.1-rc.3",
|
|
215
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.3",
|
|
216
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.3",
|
|
217
|
+
"@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.3",
|
|
218
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-rc.3",
|
|
219
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.3",
|
|
220
|
+
"@deepseek-ai/dsh-client-ui-workspace": "0.2.1-rc.3",
|
|
221
|
+
"@deepseek-ai/dsh-commands": "0.2.1-rc.3",
|
|
222
|
+
"@deepseek-ai/dsh-fs": "0.2.1-rc.3",
|
|
223
|
+
"@deepseek-ai/dsh-fs-local": "0.2.1-rc.3",
|
|
224
|
+
"@deepseek-ai/dsh-fs-sandbox": "0.2.1-rc.3",
|
|
225
|
+
"@deepseek-ai/dsh-host-open-in-app": "0.2.1-rc.3",
|
|
226
|
+
"@deepseek-ai/dsh-llm": "0.2.1-rc.3",
|
|
227
|
+
"@deepseek-ai/dsh-lsp": "0.2.1-rc.3",
|
|
228
|
+
"@deepseek-ai/dsh-lsp-stdio": "0.2.1-rc.3",
|
|
229
|
+
"@deepseek-ai/dsh-sandbox": "0.2.1-rc.3",
|
|
230
|
+
"@deepseek-ai/dsh-sandbox-local": "0.2.1-rc.3",
|
|
231
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.1-rc.3",
|
|
232
|
+
"@deepseek-ai/dsh-sandbox-windows-acl": "0.2.1-rc.3",
|
|
233
|
+
"@deepseek-ai/dsh-session": "0.2.1-rc.3",
|
|
234
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-rc.3",
|
|
235
|
+
"@deepseek-ai/dsh-storage": "0.2.1-rc.3",
|
|
236
|
+
"@deepseek-ai/dsh-storage-domain": "0.2.1-rc.3",
|
|
237
|
+
"@deepseek-ai/dsh-storage-json": "0.2.1-rc.3",
|
|
238
|
+
"@deepseek-ai/dsh-subprocess": "0.2.1-rc.3",
|
|
239
|
+
"@deepseek-ai/dsh-subprocess-local": "0.2.1-rc.3",
|
|
240
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.1-rc.3",
|
|
241
|
+
"@deepseek-ai/dsh-tools": "0.2.1-rc.3",
|
|
242
|
+
"@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.3",
|
|
243
|
+
"@deepseek-ai/dsh-util-workspace-path": "0.2.1-rc.3",
|
|
244
|
+
"@deepseek-ai/dsh-workspace": "0.2.1-rc.3",
|
|
201
245
|
"@testing-library/react": "^16.3.3",
|
|
202
246
|
"@types/node": "^22.0.0",
|
|
203
247
|
"@types/react": "~18.3.31",
|
|
@@ -212,7 +256,13 @@
|
|
|
212
256
|
"typescript": "^6.0.3",
|
|
213
257
|
"vitest": "^4.1.8",
|
|
214
258
|
"yaml": "^2.9.0",
|
|
215
|
-
"zustand": "~4.5.7"
|
|
259
|
+
"zustand": "~4.5.7",
|
|
260
|
+
"@deepseek-ai/dsh-skill": "0.2.1-rc.3",
|
|
261
|
+
"@deepseek-ai/dsh-skill-filesystem": "0.2.1-rc.3",
|
|
262
|
+
"@deepseek-ai/dsh-settings": "0.2.1-rc.3",
|
|
263
|
+
"@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.3",
|
|
264
|
+
"@deepseek-ai/dsh-session-query": "0.2.1-rc.3",
|
|
265
|
+
"@deepseek-ai/dsh-tool-skill": "0.2.1-rc.3"
|
|
216
266
|
},
|
|
217
267
|
"dsh": {
|
|
218
268
|
"bundle": {
|
|
@@ -231,12 +281,13 @@
|
|
|
231
281
|
"dependencies": {
|
|
232
282
|
"@deepseek-ai/node-addon-system": "^0.1.2",
|
|
233
283
|
"koffi": "^3.1.0",
|
|
234
|
-
"zod": "^4.6.2"
|
|
284
|
+
"zod": "^4.6.2",
|
|
285
|
+
"@deepseek-ai/schemastery": "^3.18.2"
|
|
235
286
|
},
|
|
236
287
|
"scripts": {
|
|
237
288
|
"bench:roots": "node --experimental-transform-types scripts/bench-root-scale.mjs",
|
|
238
289
|
"build": "pnpm run build:types && pnpm run bundle",
|
|
239
|
-
"build:types": "tsc -p tsconfig.host.json && tsc -p tsconfig.client.json",
|
|
290
|
+
"build:types": "tsc -p tsconfig.host.json && tsc -p tsconfig.client.json && node scripts/build-auto-review.mjs",
|
|
240
291
|
"bundle": "node scripts/clean-lib.mjs && tsdown",
|
|
241
292
|
"compat:check": "node scripts/check-dsh-compat.mjs",
|
|
242
293
|
"docs:check": "node scripts/check-docs.mjs",
|
|
@@ -251,7 +302,9 @@
|
|
|
251
302
|
"smoke:packed": "node scripts/smoke-packed.mjs",
|
|
252
303
|
"test": "vitest run",
|
|
253
304
|
"test:watch": "vitest",
|
|
254
|
-
"typecheck": "tsc -p tsconfig.host.json --noEmit && tsc -p tsconfig.client.json --noEmit",
|
|
255
|
-
"verify:all": "pnpm lint && pnpm typecheck && pnpm build && pnpm kernel:probe && pnpm test && pnpm smoke && pnpm pack:check && pnpm smoke:packed"
|
|
305
|
+
"typecheck": "tsc -p tsconfig.host.json --noEmit && tsc -p tsconfig.client.json --noEmit && node scripts/build-auto-review.mjs",
|
|
306
|
+
"verify:all": "pnpm lint && pnpm typecheck && pnpm build && pnpm kernel:probe && pnpm test && pnpm smoke && pnpm pack:check && pnpm smoke:packed && pnpm auto-review:fork && pnpm smoke:auto-review",
|
|
307
|
+
"auto-review:fork": "node scripts/check-auto-review-fork.mjs",
|
|
308
|
+
"smoke:auto-review": "node scripts/verify-auto-review.mjs"
|
|
256
309
|
}
|
|
257
310
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Auto Review fork
|
|
2
|
+
|
|
3
|
+
基线:DeepSeek Harness `dsh-v0.2.1-rc.2`,commit `687f282e8625c6b8d11ff58211a90524be2e4317`,`packages/experimental/auto-review/src/index.ts`。原文件保存在 `upstream.ts`;MIT 许可保存在 `LICENSE`。
|
|
4
|
+
|
|
5
|
+
允许差异:兼容层身份及必需服务;调用只读宿主 context builder;环境数据及当前 constraint 数据;native 副本的 metadata/digest 校验与去重;发送前、模型等待后、后续 gate 后和 dispatch 前的失败关闭/陈旧校验。dispatch 复核使用 registry token,涵盖人工批准等待,并随 owner 生命周期取消和 drain。
|
|
6
|
+
|
|
7
|
+
风险 policy、human/direct-parent/checkpoint/fact 角色判定、native/PTC 身份、严格输出协议、ask/never、下游 gate 与卸载时 Session 迁移保持官方语义。新增当前项目文本没有授权身份。没有全局 LLM hook、提示词文本匹配或第二 reviewer。
|
|
8
|
+
|
|
9
|
+
同步:先核对发布包与 tag 源码;人工审阅上游 policy、身份与 lifecycle 差异;更新 `upstream.ts` 和基线哈希;重放最小 context 差异;更新 `fork.patch`;运行差分门禁、官方回归、联合工具/装配/packed 与原生内核验证。绿色测试不能自动扩大联合支持版本。正式 context contribution API 足够后迁移 collector,移除 fork,保留联合测试。
|
|
10
|
+
|
|
11
|
+
Native 协调只使用现有 scope/delivery 索引证明的附加根来源;纯附加根旧帧留作 fact,以新快照替代。混合 native 帧若含陈旧的附加文件,公开接口不足以无损拆出 global/primary 正文,故拒绝本次审查并要求刷新 baseline。未登记 cwd 的 native 项目约束保持官方身份。
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
逐文件维护范围:
|
|
15
|
+
|
|
16
|
+
| 文件 | 来源/职责 |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `upstream.ts` | 原始官方入口,哈希固定,不能当实现文件编辑 |
|
|
19
|
+
| `fork.ts` / `fork.patch` | 可执行 fork / 人工审阅的唯一入口差异 |
|
|
20
|
+
| `context.ts` | 当前 native baseline、scope metadata、历史 fact 与新鲜 constraint 分区 |
|
|
21
|
+
| `../compat/auto-review-packages.ts` | 精确执行副本门禁 |
|
|
22
|
+
| `../../tests/auto-review/upstream.spec.ts` / `../../tests/auto-review/parent.ts` | 同一 commit 的官方回归和 parent fixture;只调整导入、context stub 及新增环境字段断言 |
|
|
23
|
+
| `entry.ts` / `../compat/auto-review-loader.ts` | 单开关的 context/owner 生命周期、运行时接管与恢复 |
|
|
24
|
+
| `../../tests/auto-review/` 与 joint smoke | 上下文、工具、接管、启停和单包安装验证 |
|
|
25
|
+
|
|
26
|
+
主包的 `review-context` 与 instructions facade 是本地接口,不是上游正式 API。不再有独立 companion manifest 或主包 peer;普通 allowlist 的提升不能代替 fork 的同步和联合验收。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DeepSeek
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Optional Auto Review
|
|
2
|
+
|
|
3
|
+
中文:[README.md](./README.md)
|
|
4
|
+
|
|
5
|
+
Auto Review is included at `@dsh-electron/dsh-plugin-multi-root-workspace/auto-review` and supports only DSH `0.2.1-rc.2`. After installing the main package, expand Multi-root Workspace's row list in the Plugin Manager and enable the `@dsh-electron/dsh-plugin-multi-root-workspace/auto-review` row (its `cordis.patch.yml` row id is `multi-root-auto-review`). This row ships disabled: while off, it mounts neither the reviewer nor review context and does not register the Auto preset. Profiles without hot reload require a restart, as reported by the manager.
|
|
6
|
+
|
|
7
|
+
The one switch mounts both current multi-root context and the reviewer, taking over the sibling official `@deepseek-ai/dsh-experimental-auto-review` row at runtime. Either bundle order works, and subsequent reloads retain one owner. Takeover does not change the official row's saved configuration. After disabling, reload/restart restores the official owner only if its bundle is still selected and its original configuration allows it to run; an unselected official bundle is not installed or enabled automatically. When the official bundle is not selected, the row still provides the same reviewer standalone (it registers the Auto preset itself); there is simply no official owner to take over.
|
|
8
|
+
|
|
9
|
+
Alternatively, set this in the profile's `cordis.patch.yml`:
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
- id: multi-root-auto-review
|
|
13
|
+
disabled: false
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Unloading a live Auto owner preserves official behavior: Auto sessions move to Full access, and a replacement owner does not automatically switch them back. Select Auto again in the session when needed. Multi-root write fences remain enforced.
|
|
17
|
+
|
|
18
|
+
To migrate from the former companion, stop the profile, remove its bundle selection and `@dsh-electron/dsh-plugin-multi-root-auto-review` dependency, then install/update the main package and enable the row above. The existing `dsh plugin --profile <name> remove @dsh-electron/dsh-plugin-multi-root-auto-review` command can remove the old package; preserve the official bundle's existing selection. The old configure command is retired. Coexistence with a selected legacy companion produces an explicit startup diagnostic and never silently rewrites the user's manifest.
|
|
19
|
+
|
|
20
|
+
Constraint roles, budgets, mixed native frames, and freshness retain the existing fork semantics: current topology and instructions enter the reviewer's data sections; project text only constrains actions. Budget, I/O, cancellation, or snapshot changes fail that call. bash/pwsh collection covers known directory chains and cannot infer every target of an arbitrary script. Automatic source-file reading remains outside scope.
|
|
21
|
+
|
|
22
|
+
See [FORK.md](./FORK.md) for the baseline, permitted differences, and synchronization procedure.
|