@dsh-enhanced/assistant-isolation 0.1.30

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.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/cordis.patch.yml +3 -0
  4. package/lib/audit-archive.d.ts +52 -0
  5. package/lib/audit-archive.d.ts.map +1 -0
  6. package/lib/audit-archive.js +775 -0
  7. package/lib/audit-archive.js.map +1 -0
  8. package/lib/cleanup-receipt.d.ts +26 -0
  9. package/lib/cleanup-receipt.d.ts.map +1 -0
  10. package/lib/cleanup-receipt.js +131 -0
  11. package/lib/cleanup-receipt.js.map +1 -0
  12. package/lib/cli.d.ts +16 -0
  13. package/lib/cli.d.ts.map +1 -0
  14. package/lib/cli.js +183 -0
  15. package/lib/cli.js.map +1 -0
  16. package/lib/config.d.ts +20 -0
  17. package/lib/config.d.ts.map +1 -0
  18. package/lib/config.js +61 -0
  19. package/lib/config.js.map +1 -0
  20. package/lib/daemon-binding.d.ts +13 -0
  21. package/lib/daemon-binding.d.ts.map +1 -0
  22. package/lib/daemon-binding.js +120 -0
  23. package/lib/daemon-binding.js.map +1 -0
  24. package/lib/diagnostics.d.ts +19 -0
  25. package/lib/diagnostics.d.ts.map +1 -0
  26. package/lib/diagnostics.js +122 -0
  27. package/lib/diagnostics.js.map +1 -0
  28. package/lib/index.d.ts +19 -0
  29. package/lib/index.d.ts.map +1 -0
  30. package/lib/index.js +13 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/ledger.d.ts +88 -0
  33. package/lib/ledger.d.ts.map +1 -0
  34. package/lib/ledger.js +623 -0
  35. package/lib/ledger.js.map +1 -0
  36. package/lib/probe.d.ts +5 -0
  37. package/lib/probe.d.ts.map +1 -0
  38. package/lib/probe.js +45 -0
  39. package/lib/probe.js.map +1 -0
  40. package/lib/reconcile.d.ts +5 -0
  41. package/lib/reconcile.d.ts.map +1 -0
  42. package/lib/reconcile.js +29 -0
  43. package/lib/reconcile.js.map +1 -0
  44. package/lib/runner.d.ts +12 -0
  45. package/lib/runner.d.ts.map +1 -0
  46. package/lib/runner.js +201 -0
  47. package/lib/runner.js.map +1 -0
  48. package/lib/runtime-witness.d.ts +32 -0
  49. package/lib/runtime-witness.d.ts.map +1 -0
  50. package/lib/runtime-witness.js +225 -0
  51. package/lib/runtime-witness.js.map +1 -0
  52. package/lib/service.d.ts +47 -0
  53. package/lib/service.d.ts.map +1 -0
  54. package/lib/service.js +361 -0
  55. package/lib/service.js.map +1 -0
  56. package/lib/storage-policy.d.ts +7 -0
  57. package/lib/storage-policy.d.ts.map +1 -0
  58. package/lib/storage-policy.js +82 -0
  59. package/lib/storage-policy.js.map +1 -0
  60. package/lib/storage.d.ts +18 -0
  61. package/lib/storage.d.ts.map +1 -0
  62. package/lib/storage.js +102 -0
  63. package/lib/storage.js.map +1 -0
  64. package/lib/tools.d.ts +4 -0
  65. package/lib/tools.d.ts.map +1 -0
  66. package/lib/tools.js +49 -0
  67. package/lib/tools.js.map +1 -0
  68. package/lib/types.d.ts +143 -0
  69. package/lib/types.d.ts.map +1 -0
  70. package/lib/types.js +2 -0
  71. package/lib/types.js.map +1 -0
  72. package/lib/verifier-runner.d.ts +21 -0
  73. package/lib/verifier-runner.d.ts.map +1 -0
  74. package/lib/verifier-runner.js +192 -0
  75. package/lib/verifier-runner.js.map +1 -0
  76. package/lib/version.d.ts +2 -0
  77. package/lib/version.d.ts.map +1 -0
  78. package/lib/version.js +2 -0
  79. package/lib/version.js.map +1 -0
  80. package/lib/workspace.d.ts +6 -0
  81. package/lib/workspace.d.ts.map +1 -0
  82. package/lib/workspace.js +140 -0
  83. package/lib/workspace.js.map +1 -0
  84. package/package.json +105 -0
  85. package/runtime/supervisor.mjs +290 -0
@@ -0,0 +1,225 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { constants, readFileSync } from 'node:fs';
3
+ import { chmod, lstat, mkdtemp, open, readFile, realpath, rm, stat } from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import { isAbsolute, join } from 'node:path';
6
+ const bootIdPattern = /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;
7
+ const ticksPattern = /^[1-9][0-9]{0,63}$/;
8
+ const engineIdPattern = /^[A-Za-z0-9:-]{1,256}$/;
9
+ const pathMaximum = 4096;
10
+ const defaultSocketPath = '/var/run/docker.sock';
11
+ const defaultPidFile = '/run/docker.pid';
12
+ const validPath = (value) => typeof value === 'string' && value.length > 0 && value.length <= pathMaximum && isAbsolute(value) && !/[\p{Cc}]/u.test(value);
13
+ const validProcess = (value) => !!value && typeof value === 'object'
14
+ && Object.keys(value).length === 3 && typeof value.bootId === 'string' && bootIdPattern.test(value.bootId)
15
+ && Number.isSafeInteger(value.pid) && value.pid > 0
16
+ && typeof value.startTicks === 'string' && ticksPattern.test(value.startTicks);
17
+ export function validateCreationWitness(value) {
18
+ if (!value || typeof value !== 'object' || ![2, 3, 4].includes(Object.keys(value).length) || Object.keys(value).some(key => !['daemon', 'supervisor', 'requestsSettled', 'binding'].includes(key)) || !validProcess(value.supervisor))
19
+ throw new TypeError('invalid creation witness');
20
+ const daemon = value.daemon;
21
+ if (!daemon || typeof daemon !== 'object' || Object.keys(daemon).length !== 5 || !validProcess(daemon.process)
22
+ || typeof daemon.engineId !== 'string' || !engineIdPattern.test(daemon.engineId)
23
+ || !validPath(daemon.dockerPath) || !validPath(daemon.socketPath) || !validPath(daemon.pidFile))
24
+ throw new TypeError('invalid creation witness');
25
+ if (daemon.process.bootId !== value.supervisor.bootId)
26
+ throw new TypeError('creation witness crosses boot generations');
27
+ const witness = value;
28
+ if (witness.requestsSettled !== undefined && typeof witness.requestsSettled !== 'boolean')
29
+ throw new TypeError('invalid settlement proof');
30
+ if (witness.binding !== undefined && (!witness.binding || Object.keys(witness.binding).length !== 3 || witness.binding.kind !== 'systemd'
31
+ || !/^[0-9a-f]{32}$/.test(witness.binding.serviceInvocationId) || !/^[0-9a-f]{32}$/.test(witness.binding.socketInvocationId)))
32
+ throw new TypeError('invalid daemon binding');
33
+ return { ...(witness.requestsSettled === undefined ? {} : { requestsSettled: witness.requestsSettled }),
34
+ ...(witness.binding === undefined ? {} : { binding: { ...witness.binding } }), daemon: { process: { ...daemon.process }, engineId: daemon.engineId, dockerPath: daemon.dockerPath, socketPath: daemon.socketPath, pidFile: daemon.pidFile }, supervisor: { ...value.supervisor } };
35
+ }
36
+ async function bootId() {
37
+ try {
38
+ const value = (await readFile('/proc/sys/kernel/random/boot_id', 'utf8')).trim().toLowerCase();
39
+ return bootIdPattern.test(value) ? value : undefined;
40
+ }
41
+ catch {
42
+ return undefined;
43
+ }
44
+ }
45
+ async function proc(pid) {
46
+ if (!Number.isSafeInteger(pid) || pid <= 0)
47
+ return undefined;
48
+ try {
49
+ const [currentBootId, raw, metadata] = await Promise.all([bootId(), readFile(`/proc/${pid}/stat`, 'utf8'), stat(`/proc/${pid}`)]);
50
+ const close = raw.lastIndexOf(') ');
51
+ const opening = raw.indexOf('(');
52
+ if (!currentBootId || opening < 0 || close <= opening || !Number.isSafeInteger(metadata.uid))
53
+ return undefined;
54
+ const fields = raw.slice(close + 2).trim().split(/\s+/);
55
+ const startTicks = fields[19];
56
+ if (!startTicks || !ticksPattern.test(startTicks) || !fields[0])
57
+ return undefined;
58
+ return { bootId: currentBootId, pid, startTicks, comm: raw.slice(opening + 1, close), state: fields[0], uid: metadata.uid };
59
+ }
60
+ catch {
61
+ return undefined;
62
+ }
63
+ }
64
+ export async function processWitness(pid = process.pid) {
65
+ const value = await proc(pid);
66
+ return value ? { bootId: value.bootId, pid: value.pid, startTicks: value.startTicks } : undefined;
67
+ }
68
+ export function processExited(witness) {
69
+ if (!validProcess(witness))
70
+ return false;
71
+ let currentBootId;
72
+ try {
73
+ currentBootId = readFileSync('/proc/sys/kernel/random/boot_id', 'utf8').trim().toLowerCase();
74
+ }
75
+ catch {
76
+ return false;
77
+ }
78
+ if (!bootIdPattern.test(currentBootId))
79
+ return false;
80
+ if (currentBootId !== witness.bootId)
81
+ return true;
82
+ try {
83
+ const raw = readFileSync(`/proc/${witness.pid}/stat`, 'utf8');
84
+ const close = raw.lastIndexOf(') ');
85
+ if (close < 0)
86
+ return false;
87
+ const fields = raw.slice(close + 2).trim().split(/\s+/);
88
+ // A zombie retains its proc entry; it is not proof that all waiters reaped it.
89
+ if (fields[0] === 'Z' || !fields[19] || !ticksPattern.test(fields[19]))
90
+ return false;
91
+ return fields[19] !== witness.startTicks;
92
+ }
93
+ catch (error) {
94
+ return !!error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT';
95
+ }
96
+ }
97
+ async function stablePidFile(path) {
98
+ if (!validPath(path))
99
+ return undefined;
100
+ try {
101
+ const canonical = await realpath(path);
102
+ if (!isAbsolute(canonical))
103
+ return undefined;
104
+ const handle = await open(canonical, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
105
+ try {
106
+ const before = await handle.stat();
107
+ if (!before.isFile() || before.nlink !== 1 || (before.mode & 0o022) !== 0 || (before.uid !== 0 && before.uid !== process.getuid?.()) || before.size < 1 || before.size >= 64)
108
+ return undefined;
109
+ const bytes = Buffer.alloc(64);
110
+ const read = await handle.read(bytes, 0, bytes.length, 0);
111
+ const after = await handle.stat();
112
+ if (before.dev !== after.dev || before.ino !== after.ino || before.size !== after.size || before.mtimeMs !== after.mtimeMs || before.ctimeMs !== after.ctimeMs)
113
+ return undefined;
114
+ const text = bytes.subarray(0, read.bytesRead).toString('ascii').trim();
115
+ if (!/^[1-9][0-9]{0,15}$/.test(text))
116
+ return undefined;
117
+ const pid = Number(text);
118
+ return Number.isSafeInteger(pid) && pid > 0 ? { path: canonical, pid, uid: before.uid, dev: before.dev, ino: before.ino } : undefined;
119
+ }
120
+ finally {
121
+ await handle.close();
122
+ }
123
+ }
124
+ catch {
125
+ return undefined;
126
+ }
127
+ }
128
+ async function canonicalSocket(path) {
129
+ if (!validPath(path))
130
+ return undefined;
131
+ try {
132
+ const canonical = await realpath(path);
133
+ const info = await lstat(canonical);
134
+ return isAbsolute(canonical) && info.isSocket() ? { path: canonical, dev: info.dev, ino: info.ino } : undefined;
135
+ }
136
+ catch {
137
+ return undefined;
138
+ }
139
+ }
140
+ async function canonicalExecutable(path) {
141
+ if (!validPath(path))
142
+ return undefined;
143
+ try {
144
+ const canonical = await realpath(path);
145
+ const info = await stat(canonical);
146
+ return isAbsolute(canonical) && info.isFile() && (info.mode & 0o111) !== 0 ? canonical : undefined;
147
+ }
148
+ catch {
149
+ return undefined;
150
+ }
151
+ }
152
+ async function engineId(dockerPath, socketPath) {
153
+ let directory;
154
+ try {
155
+ directory = await mkdtemp(join(tmpdir(), 'dsh-isolation-docker-'));
156
+ await chmod(directory, 0o700);
157
+ return await new Promise(resolve => {
158
+ let output = Buffer.alloc(0);
159
+ let done = false;
160
+ const finish = (value) => { if (done)
161
+ return; done = true; clearTimeout(timer); resolve(value); };
162
+ const child = spawn(dockerPath, ['--config', directory, '-H', `unix://${socketPath}`, 'info', '--format', '{{.ID}}'], { shell: false, env: { PATH: process.env.PATH || '/usr/bin:/bin', LANG: 'C', LC_ALL: 'C' }, stdio: ['ignore', 'pipe', 'ignore'] });
163
+ const timer = setTimeout(() => { child.kill('SIGKILL'); finish(undefined); }, 5_000);
164
+ timer.unref();
165
+ child.stdout.on('data', (chunk) => { if (output.length + chunk.length > 4096) {
166
+ child.kill('SIGKILL');
167
+ finish(undefined);
168
+ }
169
+ else
170
+ output = Buffer.concat([output, chunk]); });
171
+ child.once('error', () => finish(undefined));
172
+ child.once('close', code => { const value = output.toString('utf8').trim(); finish(code === 0 && engineIdPattern.test(value) ? value : undefined); });
173
+ });
174
+ }
175
+ catch {
176
+ return undefined;
177
+ }
178
+ finally {
179
+ if (directory !== undefined)
180
+ await rm(directory, { recursive: true, force: true }).catch(() => undefined);
181
+ }
182
+ }
183
+ export async function captureDaemonWitness({ dockerPath, socketPath = defaultSocketPath, pidFile = defaultPidFile }) {
184
+ const [executable, socket, pid] = await Promise.all([canonicalExecutable(dockerPath), canonicalSocket(socketPath), stablePidFile(pidFile)]);
185
+ if (!executable || !socket || !pid)
186
+ return undefined;
187
+ const first = await proc(pid.pid);
188
+ if (!first || first.comm !== 'dockerd' || first.uid !== pid.uid || first.state === 'Z')
189
+ return undefined;
190
+ const id = await engineId(executable, socket.path);
191
+ const [recheckedPid, recheckedSocket] = await Promise.all([stablePidFile(pidFile), canonicalSocket(socketPath)]);
192
+ const second = await proc(pid.pid);
193
+ if (!id || !recheckedPid || !recheckedSocket || recheckedPid.path !== pid.path || recheckedPid.dev !== pid.dev || recheckedPid.ino !== pid.ino || recheckedPid.pid !== pid.pid || recheckedPid.uid !== pid.uid
194
+ || recheckedSocket.path !== socket.path || recheckedSocket.dev !== socket.dev || recheckedSocket.ino !== socket.ino
195
+ || !second || second.comm !== 'dockerd' || second.uid !== pid.uid || second.state === 'Z' || first.bootId !== second.bootId || first.startTicks !== second.startTicks)
196
+ return undefined;
197
+ return { process: { bootId: second.bootId, pid: second.pid, startTicks: second.startTicks }, engineId: id, dockerPath: executable, socketPath: socket.path, pidFile: pid.path };
198
+ }
199
+ function validDaemon(value) {
200
+ return !!value && typeof value === 'object' && Object.keys(value).length === 5 && validProcess(value.process)
201
+ && typeof value.engineId === 'string' && engineIdPattern.test(value.engineId)
202
+ && validPath(value.dockerPath) && validPath(value.socketPath) && validPath(value.pidFile);
203
+ }
204
+ export function sameDaemonWitness(a, b) {
205
+ if (!validDaemon(a) || !validDaemon(b))
206
+ return false;
207
+ return a.process.bootId === b.process.bootId && a.process.pid === b.process.pid && a.process.startTicks === b.process.startTicks && a.engineId === b.engineId && a.dockerPath === b.dockerPath && a.socketPath === b.socketPath && a.pidFile === b.pidFile;
208
+ }
209
+ /** Diagnostic candidate only: does not prove socket ownership or authorize quota release. */
210
+ export async function eligibleRestartWitness(original) {
211
+ let value;
212
+ try {
213
+ value = validateCreationWitness(original);
214
+ }
215
+ catch {
216
+ return undefined;
217
+ }
218
+ if (!processExited(value.supervisor) || !processExited(value.daemon.process))
219
+ return undefined;
220
+ const current = await captureDaemonWitness({ dockerPath: value.daemon.dockerPath, socketPath: value.daemon.socketPath, pidFile: value.daemon.pidFile });
221
+ if (!current || current.engineId !== value.daemon.engineId || current.dockerPath !== value.daemon.dockerPath || current.socketPath !== value.daemon.socketPath || current.pidFile !== value.daemon.pidFile)
222
+ return undefined;
223
+ return current.process.bootId === value.daemon.process.bootId && current.process.pid === value.daemon.process.pid && current.process.startTicks === value.daemon.process.startTicks ? undefined : current;
224
+ }
225
+ //# sourceMappingURL=runtime-witness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-witness.js","sourceRoot":"","sources":["../src/runtime-witness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { type GoalArtifactAdmission, type TaskAcceptanceContract } from '@dsh-enhanced/task-acceptance-contract';
2
+ import { Service, type Context } from '@deepseek-ai/cordis';
3
+ import type { ToolExecution } from '@deepseek-ai/dsh-tools';
4
+ import type { Agent } from '@deepseek-ai/dsh-agent';
5
+ import { Config } from './config.js';
6
+ import type { IsolationRequest, IsolationResult } from './types.js';
7
+ export { Config };
8
+ export declare const isolationPrincipalDigest: (principal: string) => string;
9
+ export interface IsolationGrantDiscovery {
10
+ readonly id: string;
11
+ readonly expiresAt: number;
12
+ readonly remainingRuns: number;
13
+ readonly remainingDurationMs: number;
14
+ readonly limits: Readonly<{
15
+ maxDurationMs: number;
16
+ maxInputBytes: number;
17
+ maxOutputBytes: number;
18
+ maxArtifactBytes: number;
19
+ maxFiles: number;
20
+ }>;
21
+ }
22
+ declare module '@deepseek-ai/cordis' {
23
+ interface Context {
24
+ assistantIsolation: AssistantIsolationService;
25
+ }
26
+ }
27
+ /** Trusted Host broker. Only bounded input copies cross into the job-specific Docker volume. */
28
+ export declare class AssistantIsolationService extends Service {
29
+ #private;
30
+ static Config: import("@deepseek-ai/schemastery").default<Config>;
31
+ constructor(ctx: Context, input?: Config);
32
+ /** Model-visible read-only discovery for grants already authorized to this exact live owner scope. */
33
+ discover: (agent: Agent | undefined) => Promise<readonly IsolationGrantDiscovery[]>;
34
+ /** Private Host readback; never exposed as a model tool or filesystem path. */
35
+ readAcceptedArtifact: (input: TaskAcceptanceContract, path: string) => Readonly<{
36
+ jobId: string;
37
+ requestDigest: string;
38
+ admission: GoalArtifactAdmission;
39
+ path: string;
40
+ content: string;
41
+ sha256: string;
42
+ }>;
43
+ /** Only the trusted registered isolation tool may skip a redundant risk prompt. */
44
+ preauthorize: (execution: ToolExecution) => boolean;
45
+ run: (agent: Agent | undefined, input: IsolationRequest, signal: AbortSignal) => Promise<IsolationResult>;
46
+ }
47
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiE,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/K,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AASnD,OAAO,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAA;AAQpD,OAAO,KAAK,EAAmC,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGpG,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,eAAO,MAAM,wBAAwB,GAAI,WAAW,MAAM,KAAG,MAA8D,CAAA;AAC3H,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACrH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChJ;AAQD,OAAO,QAAQ,qBAAqB,CAAC;IAAE,UAAU,OAAO;QAAG,kBAAkB,EAAE,yBAAyB,CAAA;KAAE;CAAE;AAE5G,gGAAgG;AAChG,qBAAa,yBAA0B,SAAQ,OAAO;;IACpD,MAAM,CAAC,MAAM,qDAAS;gBAcV,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAW;IAgG5C,sGAAsG;IACtG,QAAQ,GAAU,OAAO,KAAK,GAAG,SAAS,KAAG,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC,CAiBvF;IAwBD,+EAA+E;IAC/E,oBAAoB,GAAI,OAAO,sBAAsB,EAAE,MAAM,MAAM;;;;;;;OAelE;IAED,mFAAmF;IACnF,YAAY,GAAI,WAAW,aAAa,KAAG,OAAO,CAWjD;IAED,GAAG,GAAU,OAAO,KAAK,GAAG,SAAS,EAAE,OAAO,gBAAgB,EAAE,QAAQ,WAAW,KAAG,OAAO,CAAC,eAAe,CAAC,CA0C7G;CAkDF"}