pi-codex-auto-review 0.1.0 → 0.1.2
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 +5 -5
- package/dist/native/darwin-arm64/artifact.json +1 -1
- package/dist/native/darwin-arm64/pi-guard-execpolicy +0 -0
- package/dist/native/linux-x64/artifact.json +1 -1
- package/dist/native/linux-x64/pi-guard-execpolicy +0 -0
- package/dist/pi-host.d.ts +2 -0
- package/dist/pi-host.js +7 -0
- package/dist/pi-host.js.map +1 -0
- package/dist/sandbox/broker.js +5 -1
- package/dist/sandbox/broker.js.map +1 -1
- package/dist/sandbox/config.d.ts +1 -1
- package/dist/sandbox/config.js +13 -7
- package/dist/sandbox/config.js.map +1 -1
- package/dist/sandbox/directory-scan.d.ts +1 -0
- package/dist/sandbox/directory-scan.js +32 -0
- package/dist/sandbox/directory-scan.js.map +1 -0
- package/dist/sandbox/executor.js +4 -2
- package/dist/sandbox/executor.js.map +1 -1
- package/dist/sandbox/hard-links.js +65 -55
- package/dist/sandbox/hard-links.js.map +1 -1
- package/dist/sandbox/worker.js +6 -1
- package/dist/sandbox/worker.js.map +1 -1
- package/dist/startup.js +3 -3
- package/dist/startup.js.map +1 -1
- package/dist/tools/mcp.js +3 -1
- package/dist/tools/mcp.js.map +1 -1
- package/docs/publishing.md +76 -37
- package/docs/usage.md +8 -2
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# pi-codex-auto-review
|
|
2
2
|
|
|
3
|
-
Codex의 ‘Approve for me’에서 영감을 받은 Pi 자동 실행 승인 검토 확장입니다. Pi 도구 실행을 규칙과 현재 모델로 검토하고, 필요하면 사용자 승인을 요청합니다. Codex 공개 소스 [`rust-v0.160.0`](https://github.com/openai/codex/tree/a956835d020762cb2b570053af06f643a11c0ecc)의 실행 승인 동작을 참고한 독립 구현을 Pi 0.99.1의 공개 API와 운영체제 샌드박스에 연결했습니다. 설치·설정 방법은 [사용법](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/usage.md) 문서에 있습니다.
|
|
3
|
+
Codex의 ‘Approve for me’에서 영감을 받은 Pi 자동 실행 승인 검토 확장입니다. Pi 도구 실행을 규칙과 현재 모델로 검토하고, 필요하면 사용자 승인을 요청합니다. Codex 공개 소스 [`rust-v0.160.0`](https://github.com/openai/codex/tree/a956835d020762cb2b570053af06f643a11c0ecc)의 실행 승인 동작을 참고한 독립 구현을 Pi 0.99.1·1.0.0의 공개 API와 운영체제 샌드박스에 연결했습니다. 설치·설정 방법은 [사용법](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/usage.md) 문서에 있습니다.
|
|
4
4
|
|
|
5
5
|
## 설치
|
|
6
6
|
|
|
7
7
|
npm에 게시된 버전은 Pi에서 설치합니다. 배포 패키지는 macOS ARM64와 Linux x64용 규칙 엔진을 포함하며, 설치할 때 Rust 빌드가 필요하지 않습니다.
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
pi install npm:pi-codex-auto-review@0.1.
|
|
10
|
+
pi install npm:pi-codex-auto-review@0.1.2
|
|
11
11
|
pi list
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
확장 로딩 실패를 Pi가 무시할 수 있으므로 보호 시작이 필수인 실행은 [사용법](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/usage.md)의 CLI·SDK 진입점을 사용합니다.
|
|
14
|
+
확장 로딩 실패를 Pi가 무시할 수 있으므로 보호 시작이 필수인 실행은 [사용법](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/usage.md)의 CLI·SDK 진입점을 사용합니다. `pnpm release`의 버전 선택·Git 작업과 GitHub Actions의 자동 npm 게시 설정은 [배포 안내](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/publishing.md)에 있습니다.
|
|
15
15
|
|
|
16
16
|
## 동작 흐름
|
|
17
17
|
|
|
@@ -25,7 +25,7 @@ pi list
|
|
|
25
25
|
| 항목 | 요구 |
|
|
26
26
|
| --- | --- |
|
|
27
27
|
| Node.js | 22.19 이상 |
|
|
28
|
-
| Pi | 0.99.1
|
|
28
|
+
| Pi | 0.99.1 또는 1.0.0 |
|
|
29
29
|
| Rust | 소스 빌드에만 1.95 이상 필요 |
|
|
30
30
|
| 운영체제 | npm 배포 대상은 macOS ARM64와 Linux x64. Windows는 네이티브 격리를 지원하지 않습니다 |
|
|
31
31
|
|
|
@@ -67,7 +67,7 @@ npm run verify:guard
|
|
|
67
67
|
## 문서
|
|
68
68
|
|
|
69
69
|
- [사용법](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/usage.md) — 설치와 빌드, Pi 확장 등록, CLI·SDK, 정책 파일, 검증 활용
|
|
70
|
-
- [배포 안내](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/publishing.md) —
|
|
70
|
+
- [배포 안내](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/publishing.md) — pnpm release, Trusted Publishing 설정과 GitHub Actions의 자동 npm 게시
|
|
71
71
|
- [의존성 보안](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/security/dependencies.md) — 높은 심각도 감사 항목의 적용 근거와 재생성 방법
|
|
72
72
|
- [보호 경계 검증표](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/testing/auto-review-protection.md) — 보호·허용·검토 실패·취소 사례와 검증하지 않은 범위
|
|
73
73
|
- [인계 자료](https://github.com/buYoung/pi-codex-auto-review/tree/HEAD/docs/handoffs/auto-review) — 플랫폼·실모델 검증의 실행 근거와 소스 해시. 새 변경의 완료 여부는 이 기준으로 확인합니다.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"platform": "darwin-arm64",
|
|
3
3
|
"sourceDigest": "77a7cd21c340d5d5956164cc0ce32970097bc8f4180a2e373df56a1ff79b5088",
|
|
4
|
-
"sha256": "
|
|
4
|
+
"sha256": "660d7f76dec67a66b6e62d3e1c43fb01ae3e9b6912ff0b73645e0f87c22cd198"
|
|
5
5
|
}
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"platform": "linux-x64",
|
|
3
3
|
"sourceDigest": "77a7cd21c340d5d5956164cc0ce32970097bc8f4180a2e373df56a1ff79b5088",
|
|
4
|
-
"sha256": "
|
|
4
|
+
"sha256": "a08e8b8579986c6f0d17b6ef964e129ebf036df972b95a8510ea679802bfa1fb"
|
|
5
5
|
}
|
|
Binary file
|
package/dist/pi-host.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { getPackageDir } from '@earendil-works/pi-coding-agent';
|
|
3
|
+
/** Resolve the SDK supplied by Pi's extension loader, including global installs. */
|
|
4
|
+
export function getPiSDKEntryPath() {
|
|
5
|
+
return resolve(getPackageDir(), 'dist/index.js');
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=pi-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-host.js","sourceRoot":"","sources":["../src/pi-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,aAAa,EAAE,EAAE,eAAe,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/sandbox/broker.js
CHANGED
|
@@ -2,6 +2,7 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
import { StringDecoder } from 'node:string_decoder';
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
|
+
import { isAbsolute } from 'node:path';
|
|
5
6
|
import { SandboxManager } from '@anthropic-ai/sandbox-runtime';
|
|
6
7
|
import { GuardError, validateWorkerFrame } from '../contracts.js';
|
|
7
8
|
import { shellQuote, workloadEnvironment } from './config.js';
|
|
@@ -59,6 +60,9 @@ process.on('message', raw => {
|
|
|
59
60
|
async function run({ commandId, config, job }) {
|
|
60
61
|
if (!job || !['shell', 'tool', 'file'].includes(job.kind) || typeof job.cwd !== 'string')
|
|
61
62
|
throw new GuardError('INVALID_IPC', 'Invalid workload');
|
|
63
|
+
const piSDKEntryPath = process.argv[2];
|
|
64
|
+
if (!piSDKEntryPath || !isAbsolute(piSDKEntryPath) || piSDKEntryPath.includes('\0'))
|
|
65
|
+
throw new GuardError('INVALID_IPC', 'Expected a trusted absolute Pi SDK entry');
|
|
62
66
|
await SandboxManager.initialize(config, config.network.strictAllowlist === false ? async (destination) => {
|
|
63
67
|
if (cancellation.signal.aborted || !process.connected || networkRequests.size >= 32)
|
|
64
68
|
return false;
|
|
@@ -77,7 +81,7 @@ async function run({ commandId, config, job }) {
|
|
|
77
81
|
const sockets = [SandboxManager.getLinuxHttpSocketPath(), SandboxManager.getLinuxSocksSocketPath()].filter((path) => !!path);
|
|
78
82
|
SandboxManager.updateConfig({ ...config, filesystem: { ...config.filesystem, allowRead: [...(config.filesystem.allowRead ?? []), ...sockets] } });
|
|
79
83
|
}
|
|
80
|
-
const command = `${shellQuote(process.execPath)} ${shellQuote(fileURLToPath(new URL('./worker.js', import.meta.url)))}`;
|
|
84
|
+
const command = `${shellQuote(process.execPath)} ${shellQuote(fileURLToPath(new URL('./worker.js', import.meta.url)))} ${shellQuote(piSDKEntryPath)}`;
|
|
81
85
|
const wrapped = await SandboxManager.wrapWithSandboxArgv(command, '/bin/bash', undefined, cancellation.signal, job.cwd, { commandId });
|
|
82
86
|
cancellation.signal.throwIfAborted();
|
|
83
87
|
if (!wrapped.argv.length || !wrapped.argv.some(arg => arg.includes('sandbox-exec') || arg.includes('bwrap')))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/sandbox/broker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/sandbox/broker.ts"],"names":[],"mappings":"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"}
|
package/dist/sandbox/config.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ import type { SandboxRuntimeConfig } from '@anthropic-ai/sandbox-runtime';
|
|
|
2
2
|
import { type PermissionDelta, type PermissionProfile, type ExecutionAuthority } from '../contracts.js';
|
|
3
3
|
export declare function shellQuote(text: string): string;
|
|
4
4
|
export declare function workloadEnvironment(caller?: NodeJS.ProcessEnv, ambient?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
5
|
-
export declare function nativeConfig(profile: PermissionProfile, delta: PermissionDelta, cwd: string, authority?: ExecutionAuthority): Promise<SandboxRuntimeConfig>;
|
|
5
|
+
export declare function nativeConfig(profile: PermissionProfile, delta: PermissionDelta, cwd: string, authority?: ExecutionAuthority, piSDKEntryPath?: string): Promise<SandboxRuntimeConfig>;
|
package/dist/sandbox/config.js
CHANGED
|
@@ -22,7 +22,7 @@ export function workloadEnvironment(caller = {}, ambient = process.env) {
|
|
|
22
22
|
}
|
|
23
23
|
return env;
|
|
24
24
|
}
|
|
25
|
-
export async function nativeConfig(profile, delta, cwd, authority) {
|
|
25
|
+
export async function nativeConfig(profile, delta, cwd, authority, piSDKEntryPath) {
|
|
26
26
|
createProfile(profile);
|
|
27
27
|
const resolved = { ...profile };
|
|
28
28
|
for (const key of ['readRoots', 'writeRoots', 'denyRead', 'denyWrite'])
|
|
@@ -41,6 +41,7 @@ export async function nativeConfig(profile, delta, cwd, authority) {
|
|
|
41
41
|
if (delta.domains.some(domain => !isNetworkHost(domain) || profile.deniedDomains.some(pattern => matchesDomain(domain, pattern))))
|
|
42
42
|
throw new GuardError('HARD_DENY', 'Invalid or denied network domain');
|
|
43
43
|
const isCommandAuthority = authority?.kind === 'command-rule' || authority?.kind === 'reviewed-command';
|
|
44
|
+
const hasFullRead = isCommandAuthority || profile.readRoots.includes('/');
|
|
44
45
|
const baseProtected = await Promise.all((profile.readOnlyPaths ?? []).map(path => canonicalPath(path, cwd)));
|
|
45
46
|
const lifted = baseProtected.filter(root => writes.some(path => isWithin(path, root)));
|
|
46
47
|
// Removing a base metadata deny must not expose its siblings through the original workspace root.
|
|
@@ -51,8 +52,11 @@ export async function nativeConfig(profile, delta, cwd, authority) {
|
|
|
51
52
|
const packageRoot = fileURLToPath(new URL('../../', import.meta.url));
|
|
52
53
|
const nodeRoot = resolve(dirname(await realpath(process.execPath)), '..');
|
|
53
54
|
const dependencyRoots = [];
|
|
54
|
-
for (const
|
|
55
|
-
|
|
55
|
+
for (const entry of [
|
|
56
|
+
piSDKEntryPath ?? fileURLToPath(import.meta.resolve('@earendil-works/pi-coding-agent')),
|
|
57
|
+
fileURLToPath(import.meta.resolve('@anthropic-ai/sandbox-runtime')),
|
|
58
|
+
]) {
|
|
59
|
+
let current = dirname(await realpath(entry));
|
|
56
60
|
let root = current;
|
|
57
61
|
while (dirname(current) !== current) {
|
|
58
62
|
if (basename(current) === 'node_modules' || basename(current) === '.pnpm')
|
|
@@ -61,14 +65,16 @@ export async function nativeConfig(profile, delta, cwd, authority) {
|
|
|
61
65
|
}
|
|
62
66
|
dependencyRoots.push(root);
|
|
63
67
|
}
|
|
64
|
-
const systemRead = ['/usr', '/bin', '/sbin', '/System', '/Library', '/opt/homebrew', '/private/etc', '/etc', '/dev', '/proc', '/sys', nodeRoot
|
|
68
|
+
const systemRead = ['/usr', '/bin', '/sbin', '/System', '/Library', '/opt/homebrew', '/private/etc', '/etc', '/dev', '/proc', '/sys', nodeRoot];
|
|
69
|
+
const runtimeRead = [resolve(packageRoot, 'dist'), resolve(packageRoot, 'node_modules'), resolve(packageRoot, 'package.json'), ...dependencyRoots];
|
|
65
70
|
const seccomp = seccompRuntime();
|
|
66
71
|
const config = {
|
|
67
72
|
...(seccomp ? { seccomp: { applyPath: seccomp.applyPath } } : {}),
|
|
68
73
|
filesystem: {
|
|
69
|
-
//
|
|
70
|
-
|
|
71
|
-
|
|
74
|
+
// A full-read profile needs only its explicit denies. Re-allowing "/" would
|
|
75
|
+
// make SRT's nested denies override runtime code installed inside the agent directory.
|
|
76
|
+
denyRead: [...(hasFullRead ? [] : ['/']), ...profile.denyRead],
|
|
77
|
+
allowRead: [...await linuxReadPaths([...systemRead, ...(hasFullRead ? [] : [...profile.readRoots, ...reads, ...writes])], writeRoots), ...runtimeRead],
|
|
72
78
|
allowWrite: writeRoots,
|
|
73
79
|
denyWrite: [...profile.denyWrite, ...profile.denyRead, ...unapprovedDefaults, ...(isCommandAuthority ? [] : baseProtected.filter(root => !lifted.includes(root))), ...dependencyRoots, resolve(packageRoot, 'dist'), resolve(packageRoot, 'node_modules'), resolve(packageRoot, 'package.json'), resolve(packageRoot, 'package-lock.json')],
|
|
74
80
|
allowGitConfig: isCommandAuthority || writes.some(path => /[/\\]\.git(?:[/\\]config)?$/.test(path)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/sandbox/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAyE,MAAM,iBAAiB,CAAC;AACnI,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,UAAU,UAAU,CAAC,IAAY,IAAY,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAClF,MAAM,aAAa,GAAG,wQAAwQ,CAAC;AAC/R,MAAM,UAAU,mBAAmB,CAAC,SAA4B,EAAE,EAAE,UAA6B,OAAO,CAAC,GAAG;IAC1G,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACjR,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA0B,EAAE,KAAsB,EAAE,GAAW,EAAE,SAA8B;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/sandbox/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { readFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join, sep } from 'node:path';
|
|
3
|
+
import { isWithin } from '../policy/paths.js';
|
|
4
|
+
// Internal metadata-only child. The parent supplies canonical, disjoint roots
|
|
5
|
+
// and owns cancellation, the time budget and the bounded output buffer.
|
|
6
|
+
const { roots, denied } = JSON.parse(readFileSync(0, 'utf8'));
|
|
7
|
+
const unlistable = [];
|
|
8
|
+
for (const root of roots) {
|
|
9
|
+
const exclusions = denied.filter(path => isWithin(path, root));
|
|
10
|
+
const pending = [root];
|
|
11
|
+
while (pending.length) {
|
|
12
|
+
const path = pending.pop();
|
|
13
|
+
if (exclusions.some(root => path === root || path.startsWith(root + sep)))
|
|
14
|
+
continue;
|
|
15
|
+
try {
|
|
16
|
+
for (const entry of readdirSync(path, { withFileTypes: true })) {
|
|
17
|
+
if (entry.isDirectory())
|
|
18
|
+
pending.push(join(path, entry.name));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
const code = error.code;
|
|
23
|
+
if (code === 'ENOENT' || code === 'ENOTDIR')
|
|
24
|
+
continue;
|
|
25
|
+
if (code !== 'EACCES' && code !== 'EPERM')
|
|
26
|
+
throw error;
|
|
27
|
+
unlistable.push(path);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
process.stdout.write(JSON.stringify(unlistable));
|
|
32
|
+
//# sourceMappingURL=directory-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-scan.js","sourceRoot":"","sources":["../../src/sandbox/directory-scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,8EAA8E;AAC9E,wEAAwE;AACxE,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,GAAqC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAC,MAAM,CAAC,CAAC,CAAC;AAC5F,MAAM,UAAU,GAAa,EAAE,CAAC;AAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAG,CAAC;QAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;YAAE,SAAS;QACpF,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAC,EAAC,aAAa,EAAC,IAAI,EAAC,CAAC,EAAE,CAAC;gBAC3D,IAAI,KAAK,CAAC,WAAW,EAAE;oBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YACtD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO;gBAAE,MAAM,KAAK,CAAC;YACvD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC"}
|
package/dist/sandbox/executor.js
CHANGED
|
@@ -7,6 +7,7 @@ import { nativeConfig, workloadEnvironment } from './config.js';
|
|
|
7
7
|
import { assertHardLinkBoundaries } from './hard-links.js';
|
|
8
8
|
import { withSignal } from '../signals.js';
|
|
9
9
|
import { matchesDomain, isNetworkHost, normalizeHost } from '../policy/domains.js';
|
|
10
|
+
import { getPiSDKEntryPath } from '../pi-host.js';
|
|
10
11
|
export class NativeExecutor {
|
|
11
12
|
transport;
|
|
12
13
|
active = new Set();
|
|
@@ -33,7 +34,8 @@ export class NativeExecutor {
|
|
|
33
34
|
const lifetime = new AbortController();
|
|
34
35
|
const signal = AbortSignal.any([lifetime.signal, this.stop.signal, ...(options.signal ? [options.signal] : [])]);
|
|
35
36
|
signal.throwIfAborted();
|
|
36
|
-
const
|
|
37
|
+
const piSDKEntryPath = getPiSDKEntryPath();
|
|
38
|
+
const config = await nativeConfig(profile, delta, job.cwd, options.authority, piSDKEntryPath);
|
|
37
39
|
await assertHardLinkBoundaries(profile, delta, config, signal);
|
|
38
40
|
if (options.onNetworkRequest)
|
|
39
41
|
config.network.strictAllowlist = false;
|
|
@@ -43,7 +45,7 @@ export class NativeExecutor {
|
|
|
43
45
|
if (!Number.isFinite(timeoutSeconds) || timeoutSeconds <= 0)
|
|
44
46
|
throw new GuardError('INVALID_TIMEOUT', 'Execution timeout must be positive seconds');
|
|
45
47
|
signal.throwIfAborted();
|
|
46
|
-
const child = fork(fileURLToPath(new URL('./broker.js', import.meta.url)), [], {
|
|
48
|
+
const child = fork(fileURLToPath(new URL('./broker.js', import.meta.url)), [piSDKEntryPath], {
|
|
47
49
|
execArgv: [], serialization: 'json', env: workloadEnvironment(), stdio: ['ignore', 'ignore', 'pipe', 'ipc'],
|
|
48
50
|
});
|
|
49
51
|
// Broker owns the workload process group and is never itself a workload child.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/sandbox/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAkG,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC/K,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/sandbox/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { access, lstat,
|
|
1
|
+
import { access, lstat, realpath } from 'node:fs/promises';
|
|
2
2
|
import { constants } from 'node:fs';
|
|
3
3
|
import { execFile } from 'node:child_process';
|
|
4
4
|
import { promisify } from 'node:util';
|
|
5
|
-
import {
|
|
5
|
+
import { parse } from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
6
7
|
import { GuardError } from '../contracts.js';
|
|
7
8
|
import { isWithin } from '../policy/paths.js';
|
|
8
9
|
const MAX_SCAN_MS = 30000;
|
|
9
|
-
const
|
|
10
|
+
const runScan = promisify(execFile);
|
|
10
11
|
const isMissing = (error) => ['ENOENT', 'ENOTDIR'].includes(error.code ?? '');
|
|
11
12
|
async function existingRoots(paths) {
|
|
12
13
|
const values = [];
|
|
@@ -30,42 +31,42 @@ export async function assertHardLinkBoundaries(profile, delta, config, signal) {
|
|
|
30
31
|
throw new GuardError('HARD_LINK_SCAN_LIMIT', 'The filesystem is too large to qualify hard-link boundaries safely');
|
|
31
32
|
};
|
|
32
33
|
const scanned = new Map();
|
|
34
|
+
const directoryScans = new Map();
|
|
33
35
|
const opaqueDirectories = async (paths, exclusions) => {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
+
const denied = await existingRoots(exclusions);
|
|
37
|
+
const roots = (await existingRoots(paths)).filter(root => root !== parse(root).root && !denied.some(path => isWithin(root, path)));
|
|
38
|
+
if (!roots.length)
|
|
39
|
+
return [];
|
|
40
|
+
const prune = denied.filter(path => roots.some(root => isWithin(path, root)));
|
|
41
|
+
const key = JSON.stringify([roots.toSorted(), prune.toSorted()]);
|
|
42
|
+
if (directoryScans.has(key))
|
|
43
|
+
return directoryScans.get(key);
|
|
44
|
+
check();
|
|
45
|
+
// Synchronous directory I/O avoids a promise per directory. Keep it in an
|
|
46
|
+
// owned process so the shared deadline and caller cancellation stay effective.
|
|
47
|
+
const scan = runScan(process.execPath, [fileURLToPath(new URL('./directory-scan.js', import.meta.url))], { encoding: 'utf8', maxBuffer: 16 * 1024 * 1024, timeout: Math.max(1, deadlineMs - Date.now()), killSignal: 'SIGKILL', signal, env: {} });
|
|
48
|
+
scan.child.stdin.on('error', () => { });
|
|
49
|
+
scan.child.stdin.end(JSON.stringify({ roots, denied: prune }));
|
|
50
|
+
const { stdout } = await scan;
|
|
51
|
+
const unlistable = JSON.parse(stdout);
|
|
52
|
+
if (!Array.isArray(unlistable) || unlistable.some(path => typeof path !== 'string' || path.includes('\0') || !roots.some(root => isWithin(path, root))))
|
|
53
|
+
throw new GuardError('HARD_LINK_SCAN_FAILED', 'Invalid directory scan output');
|
|
54
|
+
const result = [];
|
|
55
|
+
for (const path of unlistable) {
|
|
36
56
|
check();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (isMissing(error))
|
|
49
|
-
return;
|
|
50
|
-
if (['EACCES', 'EPERM'].includes(error.code ?? '')) {
|
|
51
|
-
const isSearchable = await access(path, constants.X_OK).then(() => true, error => { if (['EACCES', 'EPERM'].includes(error.code ?? ''))
|
|
52
|
-
return false; throw error; });
|
|
53
|
-
if (!isSearchable) {
|
|
54
|
-
if (/[?*[\]{}]/.test(path))
|
|
55
|
-
throw new GuardError('NATIVE_SCOPE_UNSUPPORTED', 'An opaque directory cannot be represented safely in the native profile');
|
|
56
|
-
result.push(path);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// An unlistable but searchable directory can still expose known filenames.
|
|
61
|
-
throw error;
|
|
62
|
-
}
|
|
63
|
-
check();
|
|
64
|
-
for (const entry of entries)
|
|
65
|
-
if (entry.isDirectory())
|
|
66
|
-
pending.push(join(path, entry.name));
|
|
67
|
-
}));
|
|
57
|
+
const isSearchable = await access(path, constants.X_OK).then(() => true, error => {
|
|
58
|
+
if (['EACCES', 'EPERM'].includes(error.code ?? ''))
|
|
59
|
+
return false;
|
|
60
|
+
throw error;
|
|
61
|
+
});
|
|
62
|
+
// An unlistable but searchable directory can still expose known filenames.
|
|
63
|
+
if (isSearchable)
|
|
64
|
+
throw new GuardError('HARD_LINK_SCAN_FAILED', 'A searchable directory could not be inspected safely');
|
|
65
|
+
if (/[?*[\]{}]/.test(path))
|
|
66
|
+
throw new GuardError('NATIVE_SCOPE_UNSUPPORTED', 'An opaque directory cannot be represented safely in the native profile');
|
|
67
|
+
result.push(path);
|
|
68
68
|
}
|
|
69
|
+
directoryScans.set(key, result);
|
|
69
70
|
return result;
|
|
70
71
|
};
|
|
71
72
|
const inspect = async (paths, exclusions = []) => {
|
|
@@ -73,42 +74,51 @@ export async function assertHardLinkBoundaries(profile, delta, config, signal) {
|
|
|
73
74
|
// Every name is already in scope when the filesystem root is admitted (or denied).
|
|
74
75
|
if (roots.some(root => root === parse(root).root) && denied.length === 0)
|
|
75
76
|
return;
|
|
76
|
-
const
|
|
77
|
+
const admitted = roots.filter(path => !denied.some(root => isWithin(path, root)));
|
|
78
|
+
if (!admitted.length)
|
|
79
|
+
return;
|
|
80
|
+
const prune = denied.filter(path => admitted.some(root => isWithin(path, root)));
|
|
81
|
+
// Read/write passes with the same effective subtree share one qualification.
|
|
82
|
+
const key = JSON.stringify([admitted.toSorted(), prune.toSorted()]);
|
|
77
83
|
if (scanned.has(key))
|
|
78
84
|
return scanned.get(key);
|
|
79
85
|
const scan = async () => {
|
|
80
|
-
const admitted = roots.filter(path => !denied.some(root => isWithin(path, root)));
|
|
81
|
-
if (!admitted.length)
|
|
82
|
-
return;
|
|
83
86
|
// Native find performs the metadata traversal without one JS promise/stat per ordinary file.
|
|
84
87
|
// Arguments are passed directly (no shell); NUL framing preserves spaces/newlines in names.
|
|
85
|
-
const prune = denied.filter(path => admitted.some(root => isWithin(path, root)));
|
|
86
88
|
const escapePattern = (path) => path.replace(/[?*\[\]\\]/g, '\\$&');
|
|
87
89
|
const terms = prune.flatMap((path, index) => [...(index ? ['-o'] : []), '-path', escapePattern(path)]);
|
|
88
90
|
const args = [...admitted, ...(terms.length ? ['(', ...terms, ')', '-prune', '-o'] : []), '-type', 'f', '-links', '+1', '-print0'];
|
|
89
91
|
check();
|
|
90
|
-
const { stdout } = await
|
|
92
|
+
const { stdout } = await runScan('/usr/bin/find', args, { encoding: 'buffer', maxBuffer: 16 * 1024 * 1024, timeout: Math.max(1, deadlineMs - Date.now()), killSignal: 'SIGKILL', signal, env: {} });
|
|
91
93
|
const names = [];
|
|
92
94
|
for (let start = 0, end = stdout.indexOf(0); end >= 0; start = end + 1, end = stdout.indexOf(0, start))
|
|
93
95
|
names.push(stdout.subarray(start, end));
|
|
94
96
|
if (stdout.length && stdout.at(-1) !== 0)
|
|
95
97
|
throw new GuardError('HARD_LINK_SCAN_FAILED', 'Incomplete hard-link scan output');
|
|
96
98
|
const links = new Map();
|
|
97
|
-
for (
|
|
99
|
+
for (let start = 0; start < names.length; start += 64) {
|
|
98
100
|
check();
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
const batch = names.slice(start, start + 64);
|
|
102
|
+
const metadata = await Promise.all(batch.map(path => lstat(path)));
|
|
103
|
+
for (const [index, info] of metadata.entries()) {
|
|
104
|
+
if (!info.isFile() || info.nlink < 2)
|
|
105
|
+
throw new GuardError('HARD_LINK_CHANGED', 'Hard-link topology changed during qualification');
|
|
106
|
+
const inode = `${info.dev}:${info.ino}`, prior = links.get(inode);
|
|
107
|
+
if (prior && prior.nlink !== info.nlink)
|
|
108
|
+
throw new GuardError('HARD_LINK_CHANGED', 'Hard-link topology changed during qualification');
|
|
109
|
+
links.set(inode, { count: (prior?.count ?? 0) + 1, nlink: info.nlink, path: batch[index] });
|
|
110
|
+
}
|
|
106
111
|
}
|
|
107
|
-
|
|
112
|
+
const values = [...links.values()];
|
|
113
|
+
for (let start = 0; start < values.length; start += 64) {
|
|
108
114
|
check();
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
const batch = values.slice(start, start + 64);
|
|
116
|
+
const metadata = await Promise.all(batch.map(value => lstat(value.path)));
|
|
117
|
+
for (const [index, info] of metadata.entries()) {
|
|
118
|
+
const value = batch[index];
|
|
119
|
+
if (value.count !== value.nlink || info.nlink !== value.nlink)
|
|
120
|
+
throw new GuardError('HARD_LINK_BOUNDARY', 'A pre-existing hard link crosses the admitted filesystem boundary');
|
|
121
|
+
}
|
|
112
122
|
}
|
|
113
123
|
};
|
|
114
124
|
const pending = scan();
|
|
@@ -119,7 +129,7 @@ export async function assertHardLinkBoundaries(profile, delta, config, signal) {
|
|
|
119
129
|
// A protected inode with another name outside these denies must never be read.
|
|
120
130
|
await inspect(profile.denyRead);
|
|
121
131
|
const reads = [...profile.readRoots, ...delta.readPaths, ...delta.writePaths];
|
|
122
|
-
const hasFullRead = (config.filesystem.allowRead ?? []).some(root => root === parse(root).root);
|
|
132
|
+
const hasFullRead = !config.filesystem.denyRead.includes('/') || (config.filesystem.allowRead ?? []).some(root => root === parse(root).root);
|
|
123
133
|
const writes = config.filesystem.allowWrite ?? [], writeDenies = config.filesystem.denyWrite ?? [];
|
|
124
134
|
const opaque = [...new Set([...(hasFullRead ? [] : await opaqueDirectories(reads, profile.denyRead)), ...await opaqueDirectories(writes, writeDenies)])];
|
|
125
135
|
// Keep opaque subtrees inaccessible in the workload, including chmod and ancestor moves.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hard-links.js","sourceRoot":"","sources":["../../src/sandbox/hard-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"hard-links.js","sourceRoot":"","sources":["../../src/sandbox/hard-links.ts"],"names":[],"mappings":"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"}
|
package/dist/sandbox/worker.js
CHANGED
|
@@ -3,6 +3,8 @@ import { spawn } from 'node:child_process';
|
|
|
3
3
|
import { access, readFile, writeFile, mkdir, stat, readdir } from 'node:fs/promises';
|
|
4
4
|
import { constants } from 'node:fs';
|
|
5
5
|
import { constants as osConstants } from 'node:os';
|
|
6
|
+
import { isAbsolute } from 'node:path';
|
|
7
|
+
import { pathToFileURL } from 'node:url';
|
|
6
8
|
import { TOOL_NAMES, GuardError } from '../contracts.js';
|
|
7
9
|
const send = (frame) => process.stdout.write(JSON.stringify(frame) + '\n');
|
|
8
10
|
const input = createInterface({ input: process.stdin, crlfDelay: Infinity });
|
|
@@ -56,7 +58,10 @@ async function execute(job) {
|
|
|
56
58
|
throw new GuardError('INVALID_IPC', 'Unknown local tool');
|
|
57
59
|
// Running the public Pi definition inside the boundary also confines grep's rg process,
|
|
58
60
|
// image MIME reads, find globbing, edit matching, access, mkdir and stat helpers.
|
|
59
|
-
const
|
|
61
|
+
const piSDKEntryPath = process.argv[2];
|
|
62
|
+
if (!piSDKEntryPath || !isAbsolute(piSDKEntryPath) || piSDKEntryPath.includes('\0'))
|
|
63
|
+
throw new GuardError('INVALID_IPC', 'Expected a trusted absolute Pi SDK entry');
|
|
64
|
+
const pi = await import(pathToFileURL(piSDKEntryPath).href);
|
|
60
65
|
const definitions = {
|
|
61
66
|
bash: pi.createBashToolDefinition,
|
|
62
67
|
read: pi.createReadToolDefinition,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/sandbox/worker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/sandbox/worker.ts"],"names":[],"mappings":"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"}
|
package/dist/startup.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
3
|
import { createAgentSessionRuntime, createAgentSessionServices, createAgentSessionFromServices, createCodemodeExtension, SessionManager, SettingsManager, ProjectTrustStore } from '@earendil-works/pi-coding-agent';
|
|
5
4
|
import { GuardError } from './contracts.js';
|
|
6
5
|
import { createGuardExtension } from './index.js';
|
|
6
|
+
import { getPiSDKEntryPath } from './pi-host.js';
|
|
7
7
|
import { loadContextFiles } from './context-files.js';
|
|
8
8
|
import { guardedExternalExtension } from './tools/mcp.js';
|
|
9
9
|
export async function assertSupportedPi() {
|
|
10
|
-
let path = dirname(
|
|
10
|
+
let path = dirname(getPiSDKEntryPath());
|
|
11
11
|
for (let i = 0; i < 8; i++) {
|
|
12
12
|
try {
|
|
13
13
|
const pkg = JSON.parse(await readFile(join(path, 'package.json'), 'utf8'));
|
|
14
14
|
if (pkg.name === '@earendil-works/pi-coding-agent') {
|
|
15
|
-
if (
|
|
15
|
+
if (!['0.99.1', '1.0.0'].includes(pkg.version))
|
|
16
16
|
throw new GuardError('UNSUPPORTED_PI', 'Pi APIs are not qualified for this version');
|
|
17
17
|
return pkg.version;
|
|
18
18
|
}
|
package/dist/startup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/mcp.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
3
4
|
import { createMcpExtension } from '@earendil-works/pi-coding-agent';
|
|
4
5
|
import { canonicalJson, digest, GuardError } from '../contracts.js';
|
|
6
|
+
import { getPiSDKEntryPath } from '../pi-host.js';
|
|
5
7
|
import { externalInvocations } from './external.js';
|
|
6
8
|
export function guardedExternalExtension(input, controller) {
|
|
7
9
|
const factory = typeof input.extension === 'function' ? input.extension : input.extension.factory;
|
|
@@ -133,7 +135,7 @@ function guardedTransport(base, server, registration, catalog, policies) {
|
|
|
133
135
|
* This small, version-qualified seam preserves the SDK's transport, config and OAuth implementation.
|
|
134
136
|
*/
|
|
135
137
|
export async function createGuardedMcpExtension(agentDir, controller, options = {}, policies = {}) {
|
|
136
|
-
const sdk = new URL('./',
|
|
138
|
+
const sdk = new URL('./', pathToFileURL(getPiSDKEntryPath()));
|
|
137
139
|
const [runtime, config, auth] = await Promise.all([
|
|
138
140
|
import(new URL('extensions/mcp/runtime.js', sdk).href),
|
|
139
141
|
import(new URL('extensions/mcp/config.js', sdk).href),
|
package/dist/tools/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
|
package/docs/publishing.md
CHANGED
|
@@ -1,73 +1,112 @@
|
|
|
1
1
|
# npm 배포 안내
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`pnpm release`에서 버전을 선택하고 커밋·태그·푸시를 확인하면 GitHub Actions가 macOS ARM64와 Linux x64 실행 파일을 빌드하고 npm에 게시합니다. 로컬 명령은 npm 자격 증명을 사용하지 않습니다.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 처음 한 번 설정
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### 소스와 의존성
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
릴리스 설정, 스크립트, 패키지 수정 사항과 워크플로를 `master`에 커밋하고 원격 저장소에 반영합니다. 릴리스 브랜치는 `origin/master`를 추적해야 합니다. 수정된 파일이나 인덱스가 남아 있으면 릴리스 명령은 중단합니다.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
2. 같은 소스에서 만든 실행 파일과 소스·실행 파일 해시를 취합한다.
|
|
13
|
-
3. 잠금 파일로 의존성을 설치하고 TypeScript를 컴파일한다.
|
|
14
|
-
4. 두 플랫폼의 실행 파일 형식·CPU·해시, 설치된 `node-forge`의 보정 버전·소스 고정, 의존성 묶음과 필수 배포 파일을 확인한다.
|
|
15
|
-
5. 성공하면 `npm-package` 결과물에 `pi-codex-auto-review-<버전>.tgz`를 저장한다.
|
|
16
|
-
|
|
17
|
-
이 워크플로는 npm 인증이나 게시를 수행하지 않는다. Linux 실행 파일은 Ubuntu 22.04의 GNU 환경에서 빌드한다. Alpine 등 musl 환경과 macOS x64·Linux ARM64는 이 배포의 지원 대상에 포함하지 않는다. 격리·승인 동작의 플랫폼 전체 검증은 기존 운영체제 검증 절차로 별도 확인한다.
|
|
18
|
-
|
|
19
|
-
### 로컬에서 준비
|
|
20
|
-
|
|
21
|
-
Node.js 22.19 이상과 Rust 1.95 이상이 있는 macOS ARM64 및 Linux x64 환경에서 **동일한 소스**를 사용한다. 각각 저장소 루트에서 실행한다.
|
|
11
|
+
Node.js 24.14.0과 pnpm 10을 사용할 수 있는 터미널에서 저장소 루트로 이동하고 의존성을 설치합니다.
|
|
22
12
|
|
|
23
13
|
```sh
|
|
24
14
|
npm ci --ignore-scripts
|
|
25
|
-
npm run build
|
|
26
15
|
```
|
|
27
16
|
|
|
28
|
-
`
|
|
17
|
+
의존성 설치와 CI 빌드는 기존 `package-lock.json`을 사용합니다. `pnpm`은 릴리스 스크립트의 실행 진입점으로 사용하며, `pnpm-lock.yaml`로 설치 방식을 바꾸지 않습니다. 기존 npm 의존성 보정과 배포 시 의존성 묶음을 유지하기 위한 선택입니다.
|
|
18
|
+
|
|
19
|
+
### npm Trusted Publisher
|
|
20
|
+
|
|
21
|
+
`pi-codex-auto-review`의 npm **Settings → Trusted publishing**에서 GitHub Actions 연결을 추가합니다.
|
|
22
|
+
|
|
23
|
+
| 항목 | 입력 값 |
|
|
24
|
+
|---|---|
|
|
25
|
+
| Organization or user | `buYoung` |
|
|
26
|
+
| Repository | `pi-codex-auto-review` |
|
|
27
|
+
| Workflow filename | `npm-package.yml` |
|
|
28
|
+
| Environment name | 비워 둠 |
|
|
29
|
+
| Allowed actions | 직접 게시하는 `npm publish` 허용 |
|
|
30
|
+
|
|
31
|
+
워크플로 이름은 파일명만 입력합니다. `.github/workflows/` 경로를 붙이지 않습니다. 기본 `npm stage publish` 권한만 허용하면 이 워크플로의 직접 게시가 실패합니다.
|
|
32
|
+
|
|
33
|
+
게시 작업에는 `id-token: write` 권한이 설정되어 있고 npm 11.5.1 이상인지 확인합니다. GitHub-hosted runner가 발급하는 OIDC 인증을 사용하므로 `NPM_TOKEN`을 GitHub Secret에 추가하지 않습니다. npm의 연결은 저장 시 검증되지 않으므로 실제 첫 게시에서 확인해야 합니다. [npm Trusted Publishing 공식 안내](https://docs.npmjs.com/trusted-publishers/)
|
|
34
|
+
|
|
35
|
+
## 버전 선택과 릴리스
|
|
36
|
+
|
|
37
|
+
`master`의 변경 사항이 커밋된 상태에서 실행합니다.
|
|
29
38
|
|
|
30
39
|
```sh
|
|
31
|
-
|
|
40
|
+
pnpm release
|
|
32
41
|
```
|
|
33
42
|
|
|
34
|
-
|
|
43
|
+
1. 현재 버전과 구체적인 다음 버전을 보고 하나를 선택합니다. `0.1.1`에서 `0.1.2`를 출시할 때는 **patch**를 선택합니다. 로컬 버전 태그가 없으면 **현재 준비 버전 출시**도 선택할 수 있습니다.
|
|
44
|
+
2. 커밋 여부를 확인하고 릴리스 커밋을 만듭니다. 현재 버전을 그대로 출시할 때는 출시 기록을 남기는 빈 커밋을 만듭니다.
|
|
45
|
+
3. `v<버전>` 태그 생성 여부를 확인하고 주석 태그를 만듭니다.
|
|
46
|
+
4. `master`와 해당 태그의 푸시 여부를 확인합니다. 승인하면 두 참조를 원자적으로 함께 푸시하고 Actions의 npm 게시를 시작합니다.
|
|
47
|
+
|
|
48
|
+
각 확인의 기본값은 승인입니다. `n`이나 `Ctrl+C`를 입력하면 해당 작업과 이후 흐름을 중단합니다. `--ci`, 버전 인자나 자동 응답으로 질문을 건너뛰는 방식은 지원하지 않습니다.
|
|
35
49
|
|
|
36
|
-
|
|
50
|
+
버전 선택은 자동으로 `0.1.2` 등을 적용하지 않습니다. `package.json`과 `package-lock.json`의 버전 변경은 release-it이 수행하며 npm 버전 수명 주기 스크립트는 실행하지 않습니다. 로컬에서는 실행 파일을 다시 빌드하거나 npm에 게시하지 않습니다.
|
|
37
51
|
|
|
38
|
-
현재
|
|
52
|
+
같은 npm 버전은 다시 게시할 수 없습니다. 현재 준비 버전이 이미 npm에 게시됐다면 더 큰 버전을 선택합니다. 시험 버전은 npm의 `next` 태그로, 정식 버전은 `latest` 태그로 게시합니다.
|
|
53
|
+
|
|
54
|
+
## GitHub Actions가 수행하는 작업
|
|
55
|
+
|
|
56
|
+
`v*` 태그의 푸시가 `.github/workflows/npm-package.yml`을 시작합니다.
|
|
57
|
+
|
|
58
|
+
1. `macos-14` ARM64와 `ubuntu-22.04` x64에서 같은 커밋의 Rust 규칙 엔진을 Rust 1.95.0으로 빌드합니다.
|
|
59
|
+
2. 패키지 작업은 태그와 `package.json` 버전이 일치하고 태그 커밋이 `origin/master`에 포함되는지 확인합니다.
|
|
60
|
+
3. npm 잠금 파일로 의존성을 설치하고 두 실행 파일을 취합합니다. `npm pack`의 `prepack`이 TypeScript와 실행 파일 형식·CPU·소스 해시, 보정된 의존성 및 필수 배포 파일을 검사합니다.
|
|
61
|
+
4. 검증한 `pi-codex-auto-review-<버전>.tgz`를 `npm-package` 결과물에 보관합니다.
|
|
62
|
+
5. 별도 게시 작업이 같은 결과물을 내려받아 OIDC로 npm에 게시합니다.
|
|
63
|
+
|
|
64
|
+
**Actions → npm 배포 → Run workflow**로 수동 실행하면 압축 패키지 준비만 수행하며 게시 작업은 생략합니다. 태그 게시에는 같은 워크플로의 태그 실행을 사용합니다.
|
|
65
|
+
|
|
66
|
+
Linux 실행 파일은 Ubuntu 22.04의 GNU 환경에서 빌드합니다. Alpine 등 musl 환경과 macOS x64·Linux ARM64는 이 배포의 지원 대상에 포함하지 않습니다. 격리·승인 동작의 플랫폼 검증은 [검증 안내](testing/auto-review-protection.md)를 따릅니다.
|
|
67
|
+
|
|
68
|
+
## 중단과 실패 후 확인
|
|
69
|
+
|
|
70
|
+
로컬 명령은 종료 시 파일·인덱스 변경, 현재 HEAD, 로컬 태그 및 푸시 시도 상태를 출력합니다. 질문에서 거절하거나 취소해도 이미 변경한 버전·인덱스·커밋·태그는 보존합니다.
|
|
71
|
+
|
|
72
|
+
푸시 실패 시 release-it은 원격 태그 정리를 시도할 수 있습니다. 출력만으로 원격 상태를 단정하지 말고 아래 결과를 확인합니다.
|
|
39
73
|
|
|
40
74
|
```sh
|
|
41
|
-
|
|
75
|
+
git status --short
|
|
76
|
+
git log -1
|
|
77
|
+
git ls-remote origin refs/heads/master 'refs/tags/v*'
|
|
42
78
|
```
|
|
43
79
|
|
|
44
|
-
|
|
80
|
+
태그 푸시 후 Actions가 실패하면 해당 실행의 로그를 확인하고 실패한 작업을 다시 실행합니다. 실제 npm 게시가 성공했는지 먼저 확인합니다. 이미 게시된 버전을 되풀이하지 않고 새 변경에는 새 버전을 사용합니다.
|
|
81
|
+
|
|
82
|
+
## 게시 결과와 Pi 설치 확인
|
|
45
83
|
|
|
46
|
-
|
|
84
|
+
`0.1.2` 게시 후 다음 명령으로 확인합니다.
|
|
47
85
|
|
|
48
86
|
```sh
|
|
49
|
-
npm
|
|
50
|
-
|
|
51
|
-
|
|
87
|
+
npm view pi-codex-auto-review@0.1.2 version --registry=https://registry.npmjs.org/
|
|
88
|
+
pi install npm:pi-codex-auto-review@0.1.2
|
|
89
|
+
pi list
|
|
90
|
+
pi
|
|
52
91
|
```
|
|
53
92
|
|
|
54
|
-
|
|
93
|
+
다음 릴리스부터는 선택한 버전으로 명령을 바꿉니다. Pi 등록 성공만으로 보호 시작을 보장하지 않습니다. [사용법](usage.md)의 보호 CLI·SDK 진입점에서 규칙 엔진과 OS 샌드박스 준비가 성공하는지 확인합니다.
|
|
55
94
|
|
|
56
|
-
##
|
|
95
|
+
## 로컬에서 압축 패키지만 준비
|
|
57
96
|
|
|
58
|
-
|
|
97
|
+
게시용 압축 파일을 직접 확인해야 할 때 사용합니다. TypeScript와 같은 네이티브 소스로 만든 두 플랫폼의 실행 파일·메타데이터가 먼저 준비되어 있어야 합니다.
|
|
59
98
|
|
|
60
99
|
```sh
|
|
61
|
-
npm
|
|
62
|
-
|
|
63
|
-
|
|
100
|
+
npm run build
|
|
101
|
+
mkdir -p tmp/npm-release
|
|
102
|
+
npm pack --pack-destination tmp/npm-release
|
|
64
103
|
```
|
|
65
104
|
|
|
66
|
-
|
|
105
|
+
`npm run build`는 현재 운영체제·아키텍처의 실행 파일만 만듭니다. 다른 플랫폼의 결과물은 Actions의 빌드 결과에서 가져와 `dist/native/<플랫폼>-<아키텍처>/`에 둡니다. 실행 파일이 없거나 소스 해시가 다르면 압축 패키지 검사는 중단합니다. 정상 게시 준비에서 `--ignore-scripts`로 `prepack`을 생략하지 않습니다.
|
|
67
106
|
|
|
68
107
|
## 관련 근거
|
|
69
108
|
|
|
109
|
+
- [release-it 21.0.1](https://github.com/release-it/release-it/tree/21.0.1)
|
|
110
|
+
- [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers/)
|
|
111
|
+
- [GitHub-hosted runner 종류](https://docs.github.com/en/actions/reference/runners/github-hosted-runners)
|
|
70
112
|
- [Pi 패키지 등록](https://github.com/earendil-works/pi/blob/v0.99.1/packages/coding-agent/docs/packages.md)
|
|
71
|
-
- [npm 의존성 묶음과 overrides](https://docs.npmjs.com/cli/v11/configuring-npm/package-json/)
|
|
72
|
-
- [npm 공개 패키지 게시](https://docs.npmjs.com/creating-and-publishing-unscoped-public-packages/)
|
|
73
|
-
- [의존성 보안 보정](security/dependencies.md)
|
package/docs/usage.md
CHANGED
|
@@ -4,16 +4,22 @@ pi-codex-auto-review를 Pi 확장으로 등록하는 방법과 CLI·SDK·정책
|
|
|
4
4
|
|
|
5
5
|
## npm에서 설치
|
|
6
6
|
|
|
7
|
-
npm에 게시된 버전은 Node.js 22.19 이상과 Pi 0.99.1에서 설치합니다. 배포 대상은 macOS ARM64와 Linux x64이며, 패키지에 두 플랫폼의 규칙 엔진을 포함하므로 설치할 때 Rust가 필요하지 않습니다. 운영체제 샌드박스가 사용할 수 있는 환경이어야 하며 Windows의 네이티브 격리는 지원하지 않습니다.
|
|
7
|
+
npm에 게시된 버전은 Node.js 22.19 이상과 Pi 0.99.1 또는 1.0.0에서 설치합니다. 배포 대상은 macOS ARM64와 Linux x64이며, 패키지에 두 플랫폼의 규칙 엔진을 포함하므로 설치할 때 Rust가 필요하지 않습니다. 운영체제 샌드박스가 사용할 수 있는 환경이어야 하며 Windows의 네이티브 격리는 지원하지 않습니다.
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
pi install npm:pi-codex-auto-review@0.1.
|
|
10
|
+
pi install npm:pi-codex-auto-review@0.1.2
|
|
11
11
|
pi list
|
|
12
12
|
pi remove npm:pi-codex-auto-review
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
`--local`을 추가하면 현재 프로젝트의 `.pi/settings.json`에 등록합니다. 프로젝트 패키지는 해당 프로젝트의 신뢰 결정 후 로드됩니다. 버전을 명시한 설치는 그 버전으로 고정됩니다.
|
|
16
16
|
|
|
17
|
+
0.1.0에서 `Cannot find package '@earendil-works/pi-coding-agent'`로 시작에 실패하면 0.1.2로 업데이트합니다. Pi는 관리하는 확장에 호스트 SDK의 물리적 복사본을 설치하지 않습니다. 0.1.1부터 Pi의 공개 경로 API로 호스트 SDK를 찾고, 그 절대 경로를 격리 워커에도 전달합니다. 별도의 SDK 복사본이나 심볼릭 링크를 추가할 필요가 없습니다.
|
|
18
|
+
|
|
19
|
+
0.1.1에서 `Directory metadata scope is too large to qualify safely`로 시작에 실패해도 0.1.2로 업데이트합니다. 0.1.2는 별도 프로세스에서 디렉터리 메타데이터를 탐색하며, 10만 개 제한을 제거합니다. 기본 `/tmp`·`TMPDIR`의 쓰기 범위와 하드링크 보호, 30초 검사 제한 및 취소 처리는 유지합니다. 검사에 실패하거나 제한 시간을 초과하면 실행을 차단합니다.
|
|
20
|
+
|
|
21
|
+
기본 설치 위치인 `.pi/agent/npm` 안에서도 실행에 필요한 확장 코드와 의존성을 읽을 수 있습니다. 에이전트 설정과 자격 증명 경로의 보호는 유지합니다.
|
|
22
|
+
|
|
17
23
|
## 소스에서 빌드
|
|
18
24
|
|
|
19
25
|
소스 빌드에는 Rust 1.95 이상도 필요합니다. 저장소 루트에서 개발 의존성을 설치하고 빌드합니다. 이 명령은 현재 운영체제·아키텍처용 실행 파일을 `dist/native/<플랫폼>-<아키텍처>/`에 만듭니다. npm 게시용 패키지 준비는 [배포 안내](publishing.md)를 따릅니다.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-codex-auto-review",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Codex의 ‘Approve for me’에서 영감을 받은 Pi용 자동 실행 승인 검토 확장. 규칙과 Pi의 현재 모델로 도구 실행을 검토하고, 필요한 경우 사용자 승인을 요청합니다.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
]
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
|
+
"release": "node scripts/release.mjs",
|
|
40
41
|
"build": "tsc && node scripts/build-execpolicy.mjs",
|
|
41
42
|
"prepack": "tsc && node scripts/check-package.mjs",
|
|
42
43
|
"test:contracts": "node scripts/run-tests.mjs contracts",
|
|
@@ -59,13 +60,16 @@
|
|
|
59
60
|
"@anthropic-ai/sandbox-runtime"
|
|
60
61
|
],
|
|
61
62
|
"peerDependencies": {
|
|
62
|
-
"@earendil-works/pi-coding-agent": "0.99.1"
|
|
63
|
+
"@earendil-works/pi-coding-agent": "0.99.1 || 1.0.0"
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
65
66
|
"@earendil-works/pi-coding-agent": "file:vendor/pi-coding-agent-0.99.1-security.1.tgz",
|
|
67
|
+
"@inquirer/prompts": "8.5.2",
|
|
66
68
|
"@sinclair/typebox": "0.34.52",
|
|
67
69
|
"@types/node": "24.0.0",
|
|
68
70
|
"pi-ollama-cloud": "0.12.2",
|
|
71
|
+
"release-it": "21.0.1",
|
|
72
|
+
"semver": "7.8.5",
|
|
69
73
|
"typescript": "6.0.3"
|
|
70
74
|
},
|
|
71
75
|
"overrides": {
|