@tickernelz/paperclip-pro-adapter-utils 2026.1002.8 → 2026.1004.0
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/dist/acpx-engine/execute.d.ts +2 -1
- package/dist/acpx-engine/execute.d.ts.map +1 -1
- package/dist/acpx-engine/execute.js +46 -0
- package/dist/acpx-engine/execute.js.map +1 -1
- package/dist/acpx-engine/execute.test.js +32 -3
- package/dist/acpx-engine/execute.test.js.map +1 -1
- package/dist/acpx-engine/read-only-permissions.test.d.ts +2 -0
- package/dist/acpx-engine/read-only-permissions.test.d.ts.map +1 -0
- package/dist/acpx-engine/read-only-permissions.test.js +33 -0
- package/dist/acpx-engine/read-only-permissions.test.js.map +1 -0
- package/dist/acpx-engine/run-contracts.d.ts +1 -0
- package/dist/acpx-engine/run-contracts.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tool-profile.d.ts +5 -0
- package/dist/tool-profile.d.ts.map +1 -0
- package/dist/tool-profile.js +5 -0
- package/dist/tool-profile.js.map +1 -0
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AdapterBillingType, AdapterExecutionContext, AdapterExecutionResult, UsageSummary } from "@tickernelz/paperclip-pro-adapter-utils";
|
|
2
2
|
import { type AdapterExecutionTarget, type AdapterManagedRuntimeAsset, type PreparedAdapterExecutionTargetRuntime, type ReferencedSourceIgnoreResolution } from "@tickernelz/paperclip-pro-adapter-utils/execution-target";
|
|
3
3
|
import type { WorkspaceRestoreOutcome } from "../workspace-restore-merge.js";
|
|
4
|
-
import { type AcpRuntime, type AcpRuntimeOptions, type AcpRuntimeStatus, type AcpRuntimeUsageBreakdown } from "acpx/runtime";
|
|
4
|
+
import { type AcpPermissionDecision, type AcpPermissionRequest, type AcpRuntime, type AcpRuntimeOptions, type AcpRuntimeStatus, type AcpRuntimeUsageBreakdown } from "acpx/runtime";
|
|
5
5
|
import type { LaunchEnvironment, LaunchEnvironmentContribution, SessionFingerprintIdentity, SessionKeyIdentity } from "./run-contracts.js";
|
|
6
6
|
import { type SettlementDispositionReport } from "./run-coordinator.js";
|
|
7
7
|
import { type AcpxAgentProcessIdentity, type RuntimeCacheEntry } from "./run-site-host.js";
|
|
@@ -287,6 +287,7 @@ export declare function findAncestorBin(startDir: string, binName: string): Prom
|
|
|
287
287
|
export declare function parseGeminiVersionParts(output: string | null | undefined): number[] | null;
|
|
288
288
|
export declare function geminiVersionSupportsNativeAcpFlag(parts: number[] | null): boolean;
|
|
289
289
|
export declare function rewriteGeminiAcpFlagForVersion(commandShell: string, versionParts: number[] | null): string;
|
|
290
|
+
export declare function readOnlyAcpPermissionDecision(acpxAgent: string, request: AcpPermissionRequest): AcpPermissionDecision | undefined;
|
|
290
291
|
/**
|
|
291
292
|
* Build the short run summary that Paperclip may auto-post as an issue comment
|
|
292
293
|
* when the agent leaves no comment of its own.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/acpx-engine/execute.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACb,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAcL,KAAK,sBAAsB,EAI3B,KAAK,0BAA0B,EAC/B,KAAK,qCAAqC,EAC1C,KAAK,gCAAgC,EAEtC,MAAM,0DAA0D,CAAC;AAIlE,OAAO,KAAK,EAA+B,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/acpx-engine/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import { paperclipAgentPromptTemplate, DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEM
|
|
|
15
15
|
import { PAPERCLIP_MCP_SERVER_NAME, paperclipAccessGuidance, paperclipAccessMode, paperclipMcpToolsets, } from "@tickernelz/paperclip-pro-adapter-utils/paperclip-mcp";
|
|
16
16
|
import { paperclipMcpHttpTarget } from "@tickernelz/paperclip-pro-adapter-utils/paperclip-mcp-mount";
|
|
17
17
|
import { shellQuote } from "@tickernelz/paperclip-pro-adapter-utils/ssh";
|
|
18
|
+
import { runToolProfile } from "@tickernelz/paperclip-pro-adapter-utils/tool-profile";
|
|
18
19
|
import { createAcpRuntime, createAgentRegistry, createRuntimeStore, isAcpRuntimeError, } from "acpx/runtime";
|
|
19
20
|
import { ACPX_DUPLEX_LOSS_CANCEL_DEADLINE_MS, ACPX_HANDSHAKE_TIMEOUT_MS, ACPX_HANDSHAKE_TRANSPORT_POLL_MS, DEFAULT_ACP_ENGINE_AGENT, DEFAULT_ACP_ENGINE_MODE, DEFAULT_ACP_ENGINE_NON_INTERACTIVE_PERMISSIONS, DEFAULT_ACP_ENGINE_PERMISSION_MODE, DEFAULT_ACP_ENGINE_TIMEOUT_SEC, DEFAULT_ACP_ENGINE_WARM_HANDLE_IDLE_MS, } from "./constants.js";
|
|
20
21
|
import { createRunResourceLedger } from "./run-resource-ledger.js";
|
|
@@ -839,6 +840,37 @@ function normalizePermissionMode(config) {
|
|
|
839
840
|
return DEFAULT_ACP_ENGINE_PERMISSION_MODE;
|
|
840
841
|
return "approve-all";
|
|
841
842
|
}
|
|
843
|
+
const READ_ONLY_ACP_DENIED_KINDS = new Set(["edit", "delete", "move"]);
|
|
844
|
+
const READ_ONLY_CODEX_ALLOWED_KINDS = new Set(["read", "search", "fetch", "think"]);
|
|
845
|
+
const READ_ONLY_CLAUDE_DENIED_TOOLS = new Set(["Edit", "Write", "MultiEdit", "NotebookEdit"]);
|
|
846
|
+
const READ_ONLY_ACP_SESSION_MODES = { claude: "default", codex: "read-only" };
|
|
847
|
+
export function readOnlyAcpPermissionDecision(acpxAgent, request) {
|
|
848
|
+
const toolCall = request.raw.toolCall;
|
|
849
|
+
const kind = request.inferredKind ?? toolCall.kind ?? undefined;
|
|
850
|
+
if (kind && READ_ONLY_ACP_DENIED_KINDS.has(kind))
|
|
851
|
+
return { outcome: "reject_once" };
|
|
852
|
+
if (typeof toolCall.name === "string" && READ_ONLY_CLAUDE_DENIED_TOOLS.has(toolCall.name)) {
|
|
853
|
+
return { outcome: "reject_once" };
|
|
854
|
+
}
|
|
855
|
+
if (acpxAgent !== "codex" || (kind && READ_ONLY_CODEX_ALLOWED_KINDS.has(kind)))
|
|
856
|
+
return undefined;
|
|
857
|
+
const meta = request.raw._meta;
|
|
858
|
+
return meta?.is_mcp_tool_approval === true ? undefined : { outcome: "reject_once" };
|
|
859
|
+
}
|
|
860
|
+
async function applyReadOnlySessionMode(input) {
|
|
861
|
+
if (input.prepared.toolProfile !== "read_only")
|
|
862
|
+
return;
|
|
863
|
+
const mode = READ_ONLY_ACP_SESSION_MODES[input.prepared.acpxAgent];
|
|
864
|
+
if (!mode)
|
|
865
|
+
return;
|
|
866
|
+
if (!input.runtime.setMode) {
|
|
867
|
+
const message = "ACPX runtime does not expose session mode controls, so the read_only tool profile cannot be applied.";
|
|
868
|
+
await input.onLog("stderr", `[paperclip] ${message}\n`);
|
|
869
|
+
throw new Error(message);
|
|
870
|
+
}
|
|
871
|
+
await input.runtime.setMode({ handle: input.handle, mode });
|
|
872
|
+
await input.onLog("stdout", `[paperclip] Applied read_only tool profile: ACPX ${input.prepared.acpxAgent} session mode ${mode}\n`);
|
|
873
|
+
}
|
|
842
874
|
function normalizeNonInteractivePermissions(config) {
|
|
843
875
|
return asString(config.nonInteractivePermissions, DEFAULT_ACP_ENGINE_NON_INTERACTIVE_PERMISSIONS) === "fail"
|
|
844
876
|
? "fail"
|
|
@@ -1175,6 +1207,7 @@ async function buildRuntime(input) {
|
|
|
1175
1207
|
const mode = normalizeMode(config);
|
|
1176
1208
|
const permissionMode = normalizePermissionMode(config);
|
|
1177
1209
|
const nonInteractivePermissions = normalizeNonInteractivePermissions(config);
|
|
1210
|
+
const toolProfile = runToolProfile(context);
|
|
1178
1211
|
const requestedModel = asString(config.model, "").trim();
|
|
1179
1212
|
const requestedThinkingEffort = normalizeRequestedThinkingEffort(config);
|
|
1180
1213
|
const fastMode = acpxAgent === "codex" && config.fastMode === true;
|
|
@@ -1478,6 +1511,7 @@ async function buildRuntime(input) {
|
|
|
1478
1511
|
}
|
|
1479
1512
|
: null,
|
|
1480
1513
|
mcpServers: mcpIdentity,
|
|
1514
|
+
...(toolProfile === "read_only" ? { toolProfile } : {}),
|
|
1481
1515
|
secretManifestHash: shortHash(secretManifest),
|
|
1482
1516
|
// Fold the resolved adapter env (all applied user-configured values —
|
|
1483
1517
|
// plain, secret_ref, and stable PAPERCLIP_* config such as an explicit
|
|
@@ -1810,6 +1844,7 @@ async function buildRuntime(input) {
|
|
|
1810
1844
|
stateDir,
|
|
1811
1845
|
permissionMode,
|
|
1812
1846
|
nonInteractivePermissions,
|
|
1847
|
+
toolProfile,
|
|
1813
1848
|
requestedModel,
|
|
1814
1849
|
requestedThinkingEffort,
|
|
1815
1850
|
fastMode,
|
|
@@ -3279,6 +3314,11 @@ export function createAcpxEngineExecutor(deps = {}) {
|
|
|
3279
3314
|
agentRegistry: prepared.agentRegistry,
|
|
3280
3315
|
permissionMode: prepared.permissionMode,
|
|
3281
3316
|
nonInteractivePermissions: prepared.nonInteractivePermissions,
|
|
3317
|
+
...(prepared.toolProfile === "read_only"
|
|
3318
|
+
? {
|
|
3319
|
+
onPermissionRequest: async (request) => readOnlyAcpPermissionDecision(prepared.acpxAgent, request),
|
|
3320
|
+
}
|
|
3321
|
+
: {}),
|
|
3282
3322
|
mcpServers: prepared.mcpServers,
|
|
3283
3323
|
timeoutMs: prepared.timeoutSec > 0 ? prepared.timeoutSec * 1000 : undefined,
|
|
3284
3324
|
// Scope ACPX runtime verbose logs to the claude agent only. Codex
|
|
@@ -3622,6 +3662,12 @@ export function createAcpxEngineExecutor(deps = {}) {
|
|
|
3622
3662
|
prepared,
|
|
3623
3663
|
onLog: ctx.onLog,
|
|
3624
3664
|
});
|
|
3665
|
+
await applyReadOnlySessionMode({
|
|
3666
|
+
runtime,
|
|
3667
|
+
handle: sessionHandle,
|
|
3668
|
+
prepared,
|
|
3669
|
+
onLog: ctx.onLog,
|
|
3670
|
+
});
|
|
3625
3671
|
await emitPhase("configure_session", configureSessionStart, "ok");
|
|
3626
3672
|
}
|
|
3627
3673
|
catch (err) {
|