@probelabs/probe 0.6.0-rc339 → 0.6.0-rc341
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/bin/binaries/{probe-v0.6.0-rc339-x86_64-apple-darwin.tar.gz → probe-v0.6.0-rc341-aarch64-apple-darwin.tar.gz} +0 -0
- package/bin/binaries/{probe-v0.6.0-rc339-aarch64-unknown-linux-musl.tar.gz → probe-v0.6.0-rc341-aarch64-unknown-linux-musl.tar.gz} +0 -0
- package/bin/binaries/{probe-v0.6.0-rc339-x86_64-pc-windows-msvc.zip → probe-v0.6.0-rc341-x86_64-apple-darwin.tar.gz} +0 -0
- package/bin/binaries/probe-v0.6.0-rc341-x86_64-pc-windows-msvc.zip +0 -0
- package/bin/binaries/{probe-v0.6.0-rc339-x86_64-unknown-linux-musl.tar.gz → probe-v0.6.0-rc341-x86_64-unknown-linux-musl.tar.gz} +0 -0
- package/build/agent/ProbeAgent.d.ts +37 -9
- package/build/agent/ProbeAgent.js +196 -62
- package/build/agent/acp/tools.js +1 -1
- package/build/agent/engines/codex.js +189 -52
- package/build/agent/engines/governed-answer-failure.js +164 -5
- package/build/agent/engines/governed-codex-exec.js +1227 -0
- package/build/agent/engines/governed-codex-profile.js +80 -28
- package/build/agent/governance/index.d.ts +18 -0
- package/build/agent/governance/index.js +14 -0
- package/build/index.js +26 -0
- package/cjs/agent/ProbeAgent.cjs +3291 -1117
- package/cjs/index.cjs +3318 -1119
- package/index.d.ts +53 -7
- package/package.json +1 -1
- package/src/agent/ProbeAgent.d.ts +37 -9
- package/src/agent/ProbeAgent.js +196 -62
- package/src/agent/acp/tools.js +1 -1
- package/src/agent/engines/codex.js +189 -52
- package/src/agent/engines/governed-answer-failure.js +164 -5
- package/src/agent/engines/governed-codex-exec.js +1227 -0
- package/src/agent/engines/governed-codex-profile.js +80 -28
- package/src/agent/governance/index.d.ts +18 -0
- package/src/agent/governance/index.js +14 -0
- package/src/index.js +26 -0
- package/bin/binaries/probe-v0.6.0-rc339-aarch64-apple-darwin.tar.gz +0 -0
|
@@ -4,16 +4,19 @@ import { isAbsolute, normalize } from 'node:path';
|
|
|
4
4
|
|
|
5
5
|
const PROFILE_KEYS = ['version', 'profileId', 'engine', 'model', 'reasoningEffort', 'sandbox', 'approvalPolicy', 'cwd', 'probeTools', 'fallback', 'retries'];
|
|
6
6
|
const PROFILE_V2_KEYS = ['version', 'profileId', 'engine', 'model', 'reasoningEffort', 'sandbox', 'approvalPolicy', 'cwd', 'probeMcpTools', 'codexNativeTools', 'fallback', 'retries'];
|
|
7
|
+
const PROFILE_V3_KEYS = PROFILE_V2_KEYS;
|
|
7
8
|
const PROFILE_VALUES = {
|
|
8
9
|
version: 'probe.governed-codex-profile/v1', profileId: 'luna-xhigh-readonly-v1', engine: 'codex',
|
|
9
10
|
model: 'gpt-5.6-luna', reasoningEffort: 'xhigh', sandbox: 'read-only', approvalPolicy: 'never',
|
|
10
11
|
fallback: false, retries: 0,
|
|
11
12
|
};
|
|
12
13
|
const PROFILE_V2_VALUES = { ...PROFILE_VALUES, version: 'probe.governed-codex-profile/v2', profileId: 'luna-xhigh-readonly-native-exec-v1' };
|
|
14
|
+
const PROFILE_V3_VALUES = { ...PROFILE_V2_VALUES, version: 'probe.governed-codex-profile/v3', profileId: 'luna-xhigh-isolated-writer-v1', sandbox: 'workspace-write' };
|
|
13
15
|
// This profile admits the pinned Codex `exec` capability inside the attested read-only sandbox.
|
|
14
16
|
// It does not claim that commands supplied to `exec` are semantically safe.
|
|
15
17
|
const PROBE_TOOLS = ['search', 'extract', 'listFiles'];
|
|
16
18
|
const CODEX_NATIVE_TOOLS = ['exec'];
|
|
19
|
+
const WRITER_CODEX_NATIVE_TOOLS = ['apply_patch', 'exec'];
|
|
17
20
|
const ENABLED_TOOLS = ['mcp__probe__search', 'mcp__probe__extract', 'mcp__probe__listFiles'];
|
|
18
21
|
const SESSION_MSG_KEYS = ['type', 'session_id', 'thread_id', 'model', 'model_provider_id', 'approval_policy',
|
|
19
22
|
'approvals_reviewer', 'permission_profile', 'reasoning_effort', 'rollout_path', 'cwd'];
|
|
@@ -75,22 +78,26 @@ function requireValue(actual, expected, label) { if (!Object.is(actual, expected
|
|
|
75
78
|
|
|
76
79
|
export function validateGovernedCodexProfile(input) {
|
|
77
80
|
const version = input && Object.getOwnPropertyDescriptor(input, 'version')?.value;
|
|
78
|
-
const v2 = version === PROFILE_V2_VALUES.version
|
|
79
|
-
const
|
|
81
|
+
const v2 = version === PROFILE_V2_VALUES.version;
|
|
82
|
+
const v3 = version === PROFILE_V3_VALUES.version;
|
|
83
|
+
const native = v2 || v3;
|
|
84
|
+
const values = v3 ? PROFILE_V3_VALUES : v2 ? PROFILE_V2_VALUES : PROFILE_VALUES;
|
|
85
|
+
const nativeTools = v3 ? WRITER_CODEX_NATIVE_TOOLS : CODEX_NATIVE_TOOLS;
|
|
86
|
+
const profile = exactObject(input, native ? (v3 ? PROFILE_V3_KEYS : PROFILE_V2_KEYS) : PROFILE_KEYS, 'profile');
|
|
80
87
|
for (const [key, value] of Object.entries(values)) requireValue(profile[key], value, `profile.${key}`);
|
|
81
|
-
const probeKey =
|
|
88
|
+
const probeKey = native ? 'probeMcpTools' : 'probeTools';
|
|
82
89
|
exactArray(profile[probeKey], PROBE_TOOLS.length, `profile.${probeKey}`);
|
|
83
90
|
PROBE_TOOLS.forEach((tool, index) => requireValue(profile[probeKey][index], tool, `profile.${probeKey}[${index}]`));
|
|
84
|
-
if (
|
|
85
|
-
exactArray(profile.codexNativeTools,
|
|
86
|
-
|
|
91
|
+
if (native) {
|
|
92
|
+
exactArray(profile.codexNativeTools, nativeTools.length, 'profile.codexNativeTools');
|
|
93
|
+
nativeTools.forEach((tool, index) => requireValue(profile.codexNativeTools[index], tool, `profile.codexNativeTools[${index}]`));
|
|
87
94
|
if (profile.probeMcpTools.some((tool) => profile.codexNativeTools.includes(tool))) invalid('profile capability overlap');
|
|
88
95
|
}
|
|
89
96
|
return deepFreeze({
|
|
90
97
|
version: values.version, profileId: values.profileId, engine: values.engine,
|
|
91
98
|
model: values.model, reasoningEffort: values.reasoningEffort, sandbox: values.sandbox,
|
|
92
99
|
approvalPolicy: values.approvalPolicy, cwd: canonicalCwd(profile.cwd),
|
|
93
|
-
...(
|
|
100
|
+
...(native ? { probeMcpTools: [...PROBE_TOOLS], codexNativeTools: [...nativeTools] } : { probeTools: [...PROBE_TOOLS] }),
|
|
94
101
|
fallback: false, retries: 0,
|
|
95
102
|
});
|
|
96
103
|
}
|
|
@@ -112,29 +119,64 @@ export function buildGovernedCodexInitialToolArgs(input) {
|
|
|
112
119
|
if (typeof input.prompt !== 'string' || Buffer.byteLength(input.prompt, 'utf8') < 1 || Buffer.byteLength(input.prompt, 'utf8') > 131072) invalid('prompt');
|
|
113
120
|
const mcp = validateMcp(input.mcp);
|
|
114
121
|
const features = Object.fromEntries(FEATURE_NAMES.map((name) => [name, false]));
|
|
122
|
+
if (profile.version === PROFILE_V3_VALUES.version && profile.profileId === PROFILE_V3_VALUES.profileId) features.shell_tool = true;
|
|
115
123
|
const tools = Object.fromEntries(ENABLED_TOOLS.map((name) => [name, { approval_mode: 'approve' }]));
|
|
116
124
|
const server = { url: mcp.url, default_tools_approval_mode: 'prompt', enabled_tools: [...ENABLED_TOOLS], tools };
|
|
125
|
+
const writerSandbox = profile.sandbox === 'workspace-write' ? {
|
|
126
|
+
network_access: false, writable_roots: [], exclude_tmpdir_env_var: true, exclude_slash_tmp: true,
|
|
127
|
+
} : undefined;
|
|
117
128
|
return deepFreeze({
|
|
118
129
|
prompt: input.prompt, model: profile.model,
|
|
119
|
-
config: { model_reasoning_effort: profile.reasoningEffort, web_search: 'disabled', features, skills: { include_instructions: false },
|
|
130
|
+
config: { model_reasoning_effort: profile.reasoningEffort, web_search: 'disabled', features, skills: { include_instructions: false },
|
|
131
|
+
...(writerSandbox ? { sandbox_workspace_write: writerSandbox } : {}), mcp_servers: { [mcp.name]: server } },
|
|
120
132
|
cwd: profile.cwd, sandbox: profile.sandbox, 'approval-policy': profile.approvalPolicy,
|
|
121
133
|
});
|
|
122
134
|
}
|
|
123
135
|
|
|
124
|
-
function validatePermission(input) {
|
|
136
|
+
function validatePermission(input, profile) {
|
|
125
137
|
const permission = exactObject(input, ['type', 'file_system', 'network'], 'permission_profile');
|
|
126
138
|
requireValue(permission.type, 'managed', 'permission_profile.type');
|
|
127
139
|
requireValue(permission.network, 'restricted', 'permission_profile.network');
|
|
128
140
|
const fileSystem = exactObject(permission.file_system, ['type', 'entries'], 'file_system');
|
|
129
141
|
requireValue(fileSystem.type, 'restricted', 'file_system.type');
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
142
|
+
const writer = profile.sandbox === 'workspace-write';
|
|
143
|
+
if (!writer) {
|
|
144
|
+
exactArray(fileSystem.entries, 1, 'file_system.entries');
|
|
145
|
+
const entry = exactObject(fileSystem.entries[0], ['access', 'path'], 'file_system entry');
|
|
146
|
+
requireValue(entry.access, 'read', 'file_system entry access');
|
|
147
|
+
const path = exactObject(entry.path, ['type', 'value'], 'permission path');
|
|
148
|
+
requireValue(path.type, 'special', 'permission path type');
|
|
149
|
+
const value = exactObject(path.value, ['kind'], 'permission path value');
|
|
150
|
+
requireValue(value.kind, 'root', 'permission path kind');
|
|
151
|
+
return { type: 'managed', file_system: { type: 'restricted', entries: [{ access: 'read', path: { type: 'special', value: { kind: 'root' } } }] }, network: 'restricted' };
|
|
152
|
+
}
|
|
153
|
+
exactArray(fileSystem.entries, 5, 'file_system.entries');
|
|
154
|
+
const rootEntry = exactObject(fileSystem.entries[0], ['access', 'path'], 'file_system entry');
|
|
155
|
+
requireValue(rootEntry.access, 'read', 'file_system entry access');
|
|
156
|
+
const rootPath = exactObject(rootEntry.path, ['type', 'value'], 'permission path');
|
|
157
|
+
requireValue(rootPath.type, 'special', 'permission path type');
|
|
158
|
+
const rootValue = exactObject(rootPath.value, ['kind'], 'permission path value');
|
|
159
|
+
requireValue(rootValue.kind, 'root', 'permission path kind');
|
|
160
|
+
const cwdEntry = exactObject(fileSystem.entries[1], ['access', 'path'], 'file_system entry');
|
|
161
|
+
requireValue(cwdEntry.access, 'write', 'file_system entry access');
|
|
162
|
+
const cwdPath = exactObject(cwdEntry.path, ['type', 'path'], 'permission path');
|
|
163
|
+
requireValue(cwdPath.type, 'path', 'permission path type');
|
|
164
|
+
requireValue(cwdPath.path, profile.cwd, 'permission path cwd');
|
|
165
|
+
const protectedPaths = ['.git', '.agents', '.codex'];
|
|
166
|
+
const protectedEntries = protectedPaths.map((suffix, index) => {
|
|
167
|
+
const protectedEntry = exactObject(fileSystem.entries[index + 2], ['access', 'missing_path_behavior', 'path'], 'file_system entry');
|
|
168
|
+
requireValue(protectedEntry.access, 'read', 'file_system entry access');
|
|
169
|
+
requireValue(protectedEntry.missing_path_behavior, 'skip', 'file_system missing path behavior');
|
|
170
|
+
const protectedPath = exactObject(protectedEntry.path, ['type', 'path'], 'permission path');
|
|
171
|
+
requireValue(protectedPath.type, 'path', 'permission path type');
|
|
172
|
+
requireValue(protectedPath.path, `${profile.cwd}/${suffix}`, 'permission path cwd');
|
|
173
|
+
return { access: 'read', missing_path_behavior: 'skip', path: { type: 'path', path: `${profile.cwd}/${suffix}` } };
|
|
174
|
+
});
|
|
175
|
+
return { type: 'managed', file_system: { type: 'restricted', entries: [
|
|
176
|
+
{ access: 'read', path: { type: 'special', value: { kind: 'root' } } },
|
|
177
|
+
{ access: 'write', path: { type: 'path', path: profile.cwd } },
|
|
178
|
+
...protectedEntries,
|
|
179
|
+
] }, network: 'restricted' };
|
|
138
180
|
}
|
|
139
181
|
|
|
140
182
|
function validateRollout(value) {
|
|
@@ -146,8 +188,8 @@ function validateRollout(value) {
|
|
|
146
188
|
export function attestGovernedCodexSession(input) {
|
|
147
189
|
exactObject(input, ['profile', 'events'], 'attester input');
|
|
148
190
|
const profile = validateGovernedCodexProfile(input.profile);
|
|
149
|
-
const
|
|
150
|
-
if (
|
|
191
|
+
const native = profile.version === PROFILE_V2_VALUES.version || profile.version === PROFILE_V3_VALUES.version;
|
|
192
|
+
if (native) {
|
|
151
193
|
exactArray(input.events, 2, 'events');
|
|
152
194
|
} else exactArray(input.events, 1, 'events');
|
|
153
195
|
const event = exactObject(input.events[0], ['jsonrpc', 'method', 'params'], 'event');
|
|
@@ -155,27 +197,37 @@ export function attestGovernedCodexSession(input) {
|
|
|
155
197
|
const params = exactObject(event.params, ['_meta', 'id', 'msg'], 'event.params'); requireValue(params.id, '', 'event.params.id');
|
|
156
198
|
const meta = exactObject(params._meta, ['requestId', 'threadId'], 'event._meta'); requireValue(meta.requestId, 2, 'requestId');
|
|
157
199
|
const hasServiceTier = Object.prototype.propertyIsEnumerable.call(params.msg, 'service_tier');
|
|
158
|
-
const
|
|
200
|
+
const hasSandbox = Object.prototype.propertyIsEnumerable.call(params.msg, 'sandbox');
|
|
201
|
+
const writer = profile.sandbox === 'workspace-write';
|
|
202
|
+
const sessionKeys = writer ? [...SESSION_MSG_KEYS, ...(hasServiceTier ? ['service_tier'] : []), ...(hasSandbox ? ['sandbox'] : [])]
|
|
203
|
+
: hasServiceTier ? [...SESSION_MSG_KEYS, 'service_tier'] : SESSION_MSG_KEYS;
|
|
204
|
+
const msg = exactObject(params.msg, sessionKeys, 'event.msg');
|
|
159
205
|
if (hasServiceTier && !SESSION_SERVICE_TIERS.includes(msg.service_tier)) invalid('event.msg');
|
|
160
206
|
for (const id of [meta.threadId, msg.session_id, msg.thread_id]) if (typeof id !== 'string' || !SAFE_ID.test(id)) invalid('session identity');
|
|
161
207
|
if (meta.threadId !== msg.session_id || msg.session_id !== msg.thread_id) invalid('session identity');
|
|
162
208
|
requireValue(msg.type, 'session_configured', 'msg.type'); requireValue(msg.model, profile.model, 'msg.model');
|
|
163
209
|
requireValue(msg.model_provider_id, 'openai', 'msg.model_provider_id'); requireValue(msg.approval_policy, profile.approvalPolicy, 'msg.approval_policy');
|
|
164
210
|
requireValue(msg.approvals_reviewer, 'user', 'msg.approvals_reviewer'); requireValue(msg.reasoning_effort, profile.reasoningEffort, 'msg.reasoning_effort');
|
|
211
|
+
if (writer && hasSandbox) requireValue(msg.sandbox, profile.sandbox, 'msg.sandbox');
|
|
165
212
|
validateRollout(msg.rollout_path);
|
|
166
213
|
if (canonicalCwd(msg.cwd) !== profile.cwd) invalid('msg.cwd');
|
|
167
|
-
const permission = validatePermission(msg.permission_profile);
|
|
214
|
+
const permission = validatePermission(msg.permission_profile, profile);
|
|
168
215
|
const cwdDigest = digest(profile.cwd);
|
|
169
|
-
if (
|
|
216
|
+
if (native) {
|
|
170
217
|
const nativeTools = exactObject(input.events[1], ['total', 'tools'], 'native tool evidence');
|
|
171
218
|
if (!Number.isSafeInteger(nativeTools.total) || nativeTools.total < 0 || nativeTools.total > 256) invalid('native tool total');
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
219
|
+
if (!Array.isArray(nativeTools.tools) || nativeTools.tools.length > profile.codexNativeTools.length) invalid('native tool aggregates');
|
|
220
|
+
const seen = new Set(); let aggregateTotal = 0;
|
|
221
|
+
for (const item of nativeTools.tools) {
|
|
222
|
+
const aggregate = exactObject(item, ['name', 'status', 'count'], 'native tool aggregate');
|
|
223
|
+
if (!profile.codexNativeTools.includes(aggregate.name) || seen.has(aggregate.name)) invalid('undeclared native tool evidence');
|
|
224
|
+
seen.add(aggregate.name);
|
|
176
225
|
requireValue(aggregate.status, 'completed', 'native tool status');
|
|
177
|
-
if (!Number.isSafeInteger(aggregate.count) || aggregate.count
|
|
226
|
+
if (!Number.isSafeInteger(aggregate.count) || aggregate.count < 1 || aggregate.count > 256) invalid('native tool count');
|
|
227
|
+
aggregateTotal += aggregate.count;
|
|
178
228
|
}
|
|
229
|
+
if (aggregateTotal !== nativeTools.total || (nativeTools.total === 0 && nativeTools.tools.length !== 0) ||
|
|
230
|
+
(nativeTools.total > 0 && nativeTools.tools.length === 0)) invalid('native tool count');
|
|
179
231
|
return deepFreeze({
|
|
180
232
|
version: 'probe.governed-codex-attestation/v3', profileId: profile.profileId,
|
|
181
233
|
requested: { profileDigest: digest(profile), cwdDigest, probeMcpToolsDigest: digest(profile.probeMcpTools),
|
|
@@ -184,7 +236,7 @@ export function attestGovernedCodexSession(input) {
|
|
|
184
236
|
sandbox: profile.sandbox, approvalPolicy: profile.approvalPolicy },
|
|
185
237
|
observed: { source: 'session_configured+raw_response_item', model: msg.model, modelProviderId: msg.model_provider_id,
|
|
186
238
|
reasoningEffort: msg.reasoning_effort, approvalPolicy: msg.approval_policy, cwdDigest,
|
|
187
|
-
permissionProfileDigest: digest(permission), filesystem: 'restricted-read-root', network: permission.network,
|
|
239
|
+
permissionProfileDigest: digest(permission), filesystem: profile.sandbox === 'workspace-write' ? 'restricted-write-cwd' : 'restricted-read-root', network: permission.network,
|
|
188
240
|
nativeTools: { total: nativeTools.total, tools: nativeTools.tools.map((item) => ({ ...item })) } },
|
|
189
241
|
correlation: { requestId: 2, eventCount: nativeTools.total + 1 }, usage: { status: 'unavailable' },
|
|
190
242
|
});
|
|
@@ -128,3 +128,21 @@ export interface AtomicTerminalReceiptResult {
|
|
|
128
128
|
export function writeAtomicTerminalReceipt(
|
|
129
129
|
options: AtomicTerminalReceiptOptions
|
|
130
130
|
): Promise<Readonly<AtomicTerminalReceiptResult>>;
|
|
131
|
+
|
|
132
|
+
export const GOVERNED_CODEX_EXEC_PROTOCOL: 'probe.governed-codex-exec/v1';
|
|
133
|
+
export const GOVERNED_CODEX_EXEC_ATTESTATION_VERSION: 'probe.governed-codex-exec-attestation/v1';
|
|
134
|
+
export const GOVERNED_CODEX_EXEC_TRANSPORT: 'exec-jsonl-default-auth-v1';
|
|
135
|
+
export function buildGovernedCodexExecLaunch(options: Record<string, unknown>): Readonly<Record<string, unknown>>;
|
|
136
|
+
export function createGovernedCodexExecEngine(options: Record<string, unknown>): Promise<Readonly<{
|
|
137
|
+
run(prompt?: string, options?: Record<string, unknown>): Promise<Readonly<Record<string, unknown>>>;
|
|
138
|
+
query(prompt: string, options?: Record<string, unknown>): AsyncGenerator<Readonly<Record<string, unknown>>>;
|
|
139
|
+
close(): Promise<void>;
|
|
140
|
+
readonly launch: Readonly<Record<string, unknown>> | null;
|
|
141
|
+
}>>;
|
|
142
|
+
export function runGovernedCodexExec(options: Record<string, unknown>): Promise<Readonly<Record<string, unknown>>>;
|
|
143
|
+
export function formatGovernedCodexExecAttestation(input: Record<string, unknown>): Readonly<Record<string, unknown>>;
|
|
144
|
+
export const buildGovernedCodexExecAttestation: typeof formatGovernedCodexExecAttestation;
|
|
145
|
+
export function validateGovernedCodexExecAttestation(input: Record<string, unknown>): Readonly<Record<string, unknown>>;
|
|
146
|
+
export function projectGovernedCodexExecFailure(error: unknown): Readonly<Record<string, unknown>> | null;
|
|
147
|
+
export function normalizeGovernedCodexExecFailure(error: unknown, boundary: 'acquire' | 'query' | 'close'): Error;
|
|
148
|
+
export function previewGovernedCodexExecDispatch(prompt: string, systemPrompt?: string): Readonly<{ source: 'probe-host-exec'; tool: 'codex-exec'; promptDigest: `sha256:${string}`; promptBytes: number }>;
|
|
@@ -6,3 +6,17 @@
|
|
|
6
6
|
export { spawnGovernedProcess } from '../processSupervisor.js';
|
|
7
7
|
export { createAcknowledgedJsonlChannel } from './acknowledgedJsonlChannel.js';
|
|
8
8
|
export { writeAtomicTerminalReceipt } from './atomicTerminalReceipt.js';
|
|
9
|
+
export {
|
|
10
|
+
GOVERNED_CODEX_EXEC_PROTOCOL,
|
|
11
|
+
GOVERNED_CODEX_EXEC_ATTESTATION_VERSION,
|
|
12
|
+
GOVERNED_CODEX_EXEC_TRANSPORT,
|
|
13
|
+
buildGovernedCodexExecLaunch,
|
|
14
|
+
createGovernedCodexExecEngine,
|
|
15
|
+
runGovernedCodexExec,
|
|
16
|
+
formatGovernedCodexExecAttestation,
|
|
17
|
+
buildGovernedCodexExecAttestation,
|
|
18
|
+
validateGovernedCodexExecAttestation,
|
|
19
|
+
projectGovernedCodexExecFailure,
|
|
20
|
+
normalizeGovernedCodexExecFailure,
|
|
21
|
+
previewGovernedCodexExecDispatch,
|
|
22
|
+
} from '../engines/governed-codex-exec.js';
|
package/src/index.js
CHANGED
|
@@ -51,6 +51,20 @@ import { FileTracker } from './tools/fileTracker.js';
|
|
|
51
51
|
import { ProbeAgent, ENGINE_ACTIVITY_TIMEOUT_DEFAULT, ENGINE_ACTIVITY_TIMEOUT_MIN, ENGINE_ACTIVITY_TIMEOUT_MAX } from './agent/ProbeAgent.js';
|
|
52
52
|
import { SimpleTelemetry, SimpleAppTracer, initializeSimpleTelemetryFromOptions } from './agent/simpleTelemetry.js';
|
|
53
53
|
import { spawnGovernedProcess } from './agent/processSupervisor.js';
|
|
54
|
+
import {
|
|
55
|
+
GOVERNED_CODEX_EXEC_PROTOCOL,
|
|
56
|
+
GOVERNED_CODEX_EXEC_ATTESTATION_VERSION,
|
|
57
|
+
GOVERNED_CODEX_EXEC_TRANSPORT,
|
|
58
|
+
buildGovernedCodexExecLaunch,
|
|
59
|
+
createGovernedCodexExecEngine,
|
|
60
|
+
runGovernedCodexExec,
|
|
61
|
+
formatGovernedCodexExecAttestation,
|
|
62
|
+
buildGovernedCodexExecAttestation,
|
|
63
|
+
validateGovernedCodexExecAttestation,
|
|
64
|
+
projectGovernedCodexExecFailure,
|
|
65
|
+
normalizeGovernedCodexExecFailure,
|
|
66
|
+
previewGovernedCodexExecDispatch
|
|
67
|
+
} from './agent/engines/governed-codex-exec.js';
|
|
54
68
|
import { listFilesToolInstance, searchFilesToolInstance } from './agent/probeTool.js';
|
|
55
69
|
import { StorageAdapter, InMemoryStorageAdapter } from './agent/storage/index.js';
|
|
56
70
|
import { HookManager, HOOK_TYPES } from './agent/hooks/index.js';
|
|
@@ -90,6 +104,18 @@ export {
|
|
|
90
104
|
SimpleAppTracer,
|
|
91
105
|
initializeSimpleTelemetryFromOptions,
|
|
92
106
|
spawnGovernedProcess,
|
|
107
|
+
GOVERNED_CODEX_EXEC_PROTOCOL,
|
|
108
|
+
GOVERNED_CODEX_EXEC_ATTESTATION_VERSION,
|
|
109
|
+
GOVERNED_CODEX_EXEC_TRANSPORT,
|
|
110
|
+
buildGovernedCodexExecLaunch,
|
|
111
|
+
createGovernedCodexExecEngine,
|
|
112
|
+
runGovernedCodexExec,
|
|
113
|
+
formatGovernedCodexExecAttestation,
|
|
114
|
+
buildGovernedCodexExecAttestation,
|
|
115
|
+
validateGovernedCodexExecAttestation,
|
|
116
|
+
projectGovernedCodexExecFailure,
|
|
117
|
+
normalizeGovernedCodexExecFailure,
|
|
118
|
+
previewGovernedCodexExecDispatch,
|
|
93
119
|
// Export tool generators directly
|
|
94
120
|
searchTool,
|
|
95
121
|
queryTool,
|
|
Binary file
|