@dsh-enhanced/assistant-policy 0.1.3 → 0.1.5
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.
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type PermissionPreset = 'workspace-write' | 'auto' | 'danger-full-access';
|
|
2
|
+
export interface PermissionSetupArgs {
|
|
3
|
+
dshHome: string;
|
|
4
|
+
preset: PermissionPreset;
|
|
5
|
+
help: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function parsePermissionSetupArgs(argv: readonly string[]): PermissionSetupArgs;
|
|
8
|
+
export declare function permissionSetupUsage(): string;
|
|
9
|
+
export declare function setPermissionDefault(input: Pick<PermissionSetupArgs, 'dshHome' | 'preset'>): Promise<string>;
|
|
10
|
+
export declare function runPermissionSetup(argv?: string[]): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=permission-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-setup.d.ts","sourceRoot":"","sources":["../src/permission-setup.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,oBAAoB,CAAA;AAEhF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,OAAO,CAAA;CACd;AAUD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,mBAAmB,CAqBrF;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,GACrD,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { chmod, mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { isAbsolute, join } from 'node:path';
|
|
4
|
+
import { isMap, parseDocument } from 'yaml';
|
|
5
|
+
const allowedPresets = new Set(['workspace-write', 'auto', 'danger-full-access']);
|
|
6
|
+
function argumentValue(argv, index, option) {
|
|
7
|
+
const value = argv[index + 1];
|
|
8
|
+
if (value === undefined || value.startsWith('--'))
|
|
9
|
+
throw new Error(`assistant-policy permission setup: ${option} requires a value`);
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
export function parsePermissionSetupArgs(argv) {
|
|
13
|
+
const result = {
|
|
14
|
+
dshHome: process.env.DSH_HOME ?? join(process.env.HOME ?? '', '.dsh'),
|
|
15
|
+
preset: 'workspace-write',
|
|
16
|
+
help: false,
|
|
17
|
+
};
|
|
18
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
19
|
+
const option = argv[index];
|
|
20
|
+
if (option === '--help' || option === '-h') {
|
|
21
|
+
result.help = true;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (option === '--dsh-home')
|
|
25
|
+
result.dshHome = argumentValue(argv, index++, option);
|
|
26
|
+
else if (option === '--preset')
|
|
27
|
+
result.preset = argumentValue(argv, index++, option);
|
|
28
|
+
else
|
|
29
|
+
throw new Error(`assistant-policy permission setup: unknown option: ${option}`);
|
|
30
|
+
}
|
|
31
|
+
if (!isAbsolute(result.dshHome))
|
|
32
|
+
throw new Error('assistant-policy permission setup: DSH home must be an absolute path');
|
|
33
|
+
if (!allowedPresets.has(result.preset)) {
|
|
34
|
+
throw new Error('assistant-policy permission setup: preset must be workspace-write, auto, or danger-full-access');
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
export function permissionSetupUsage() {
|
|
39
|
+
return [
|
|
40
|
+
'Usage: dsh-permission-setup [--dsh-home <absolute-path>] --preset <workspace-write|auto|danger-full-access>',
|
|
41
|
+
'',
|
|
42
|
+
'Writes only permission.defaultPreset in DSH settings.yaml using an atomic replacement.',
|
|
43
|
+
].join('\n');
|
|
44
|
+
}
|
|
45
|
+
export async function setPermissionDefault(input) {
|
|
46
|
+
const settingsPath = join(input.dshHome, 'settings.yaml');
|
|
47
|
+
let source = '';
|
|
48
|
+
try {
|
|
49
|
+
source = await readFile(settingsPath, 'utf8');
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (!(error instanceof Error) || !('code' in error) || error.code !== 'ENOENT')
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
const document = parseDocument(source.length === 0 ? '{}' : source);
|
|
56
|
+
if (document.errors.length > 0) {
|
|
57
|
+
throw new Error(`assistant-policy permission setup: settings.yaml is invalid YAML: ${document.errors[0]?.message}`);
|
|
58
|
+
}
|
|
59
|
+
if (!isMap(document.contents)) {
|
|
60
|
+
throw new Error('assistant-policy permission setup: settings.yaml must contain a YAML mapping');
|
|
61
|
+
}
|
|
62
|
+
const permission = document.get('permission', true);
|
|
63
|
+
if (permission !== undefined && !isMap(permission)) {
|
|
64
|
+
throw new Error('assistant-policy permission setup: settings.permission must be a YAML mapping');
|
|
65
|
+
}
|
|
66
|
+
document.setIn(['permission', 'defaultPreset'], input.preset);
|
|
67
|
+
const serialized = document.toString({ lineWidth: 0 });
|
|
68
|
+
await mkdir(input.dshHome, { recursive: true });
|
|
69
|
+
const temporaryPath = `${settingsPath}.${randomUUID()}.tmp`;
|
|
70
|
+
await writeFile(temporaryPath, serialized, { encoding: 'utf8', mode: 0o600 });
|
|
71
|
+
await chmod(temporaryPath, 0o600);
|
|
72
|
+
await rename(temporaryPath, settingsPath);
|
|
73
|
+
return settingsPath;
|
|
74
|
+
}
|
|
75
|
+
export async function runPermissionSetup(argv = process.argv.slice(2)) {
|
|
76
|
+
const args = parsePermissionSetupArgs(argv);
|
|
77
|
+
if (args.help) {
|
|
78
|
+
process.stdout.write(`${permissionSetupUsage()}\n`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const settingsPath = await setPermissionDefault(args);
|
|
82
|
+
process.stdout.write(`Updated ${settingsPath}: permission.defaultPreset=${args.preset}\n`);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=permission-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-setup.js","sourceRoot":"","sources":["../src/permission-setup.ts"],"names":[],"mappings":"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"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.1.
|
|
1
|
+
export declare const version = "0.1.5";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '0.1.
|
|
1
|
+
export const version = '0.1.5';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-enhanced/assistant-policy",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "A DeepSeek Harness plugin for Assistant Policy.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./lib/index.js",
|
|
8
8
|
"types": "./lib/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"dsh-permission-setup": "./bin/dsh-permission-setup.js"
|
|
11
|
+
},
|
|
9
12
|
"exports": {
|
|
10
13
|
".": {
|
|
11
14
|
"types": "./lib/index.d.ts",
|
|
12
15
|
"default": "./lib/index.js"
|
|
13
16
|
},
|
|
14
17
|
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
18
|
+
"./permission-setup": {
|
|
19
|
+
"types": "./lib/permission-setup.d.ts",
|
|
20
|
+
"default": "./lib/permission-setup.js"
|
|
21
|
+
},
|
|
15
22
|
"./package.json": "./package.json"
|
|
16
23
|
},
|
|
17
24
|
"files": [
|
|
25
|
+
"bin",
|
|
18
26
|
"lib",
|
|
19
27
|
"cordis.patch.yml",
|
|
20
28
|
"README.md",
|
|
@@ -42,7 +50,8 @@
|
|
|
42
50
|
}
|
|
43
51
|
},
|
|
44
52
|
"dependencies": {
|
|
45
|
-
"@deepseek-ai/schemastery": "3.18.1"
|
|
53
|
+
"@deepseek-ai/schemastery": "3.18.1",
|
|
54
|
+
"yaml": "2.9.0"
|
|
46
55
|
},
|
|
47
56
|
"peerDependencies": {
|
|
48
57
|
"@deepseek-ai/cordis": "^4.0.1",
|