mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-04 11:01:16 +01:00
Merge branch 'codex/claude-runner-default' into codex/claude-runner-platforms
* codex/claude-runner-default: style: remove added runner and import comments
This commit is contained in:
commit
bddff3c5e9
4 files changed
+23
-7
No files matched your search
@@ -1351,3 +1351,26 @@ The prior reconciliation report was uploaded to its original completed QA task
|
|||||||
and independently byte-checked: attachment aabe2e7e-a8a0-4408-bc7e-a013e0f7485b,
|
and independently byte-checked: attachment aabe2e7e-a8a0-4408-bc7e-a013e0f7485b,
|
||||||
5916 bytes, SHA256 3bd9bcfa64db6a3a7968952122b1a5c2ae27e24f0e4ff336fd47ae374bae8ff1.
|
5916 bytes, SHA256 3bd9bcfa64db6a3a7968952122b1a5c2ae27e24f0e4ff336fd47ae374bae8ff1.
|
||||||
Paid acceptance and budget/hold changes remain stopped pending human approval.
|
Paid acceptance and budget/hold changes remain stopped pending human approval.
|
||||||
|
|
||||||
|
|
||||||
|
### Frozen runtime and comment-only review cleanup — 2026-10-14
|
||||||
|
|
||||||
|
Protocol dd82936c1d has current 5/5 review and green CI 38609018629.
|
||||||
|
Platform 2646b94533 has current 5/5 review and green CI 38609191818.
|
||||||
|
Behavior 05a98b6cbf received one style finding for added code comments.
|
||||||
|
Removing its seven specified comment lines across three files produces identical
|
||||||
|
comment-free esbuild output for each file; the SHA256 comparison is retained in
|
||||||
|
/private/tmp/claude-comment-cleanup-equivalence-20261014.json. No executable
|
||||||
|
behavior changes, so package campaign 38610086180 and qualification-image
|
||||||
|
campaign 38610152781 retain their literal 2646b94533 runtime source identity.
|
||||||
|
They do not become proof of a later source revision by relabeling.
|
||||||
|
|
||||||
|
The full Product E2E support checks pass 2733 Vitest and 128 node:test controls.
|
||||||
|
The behavior static lane observed a transient atomic .tmp record in an unchanged
|
||||||
|
build-stamp concurrency fixture; its exact local control passes. The original
|
||||||
|
failed attempt and one requested failed-job rerun remain recorded.
|
||||||
|
A read-only QA budget audit now succeeds on 3115: six confirmed policies have
|
||||||
|
zero live runs; four remain paused with pending accounting, and an older policy
|
||||||
|
is unavailable. Historical reservations remain conservative. No hold, limit or
|
||||||
|
paid run was changed. The two previously colliding foreign port listeners remain
|
||||||
|
present and untouched; retrying that exact old session is not execution proof.
|
||||||
@@ -77,14 +77,12 @@ function resolveClaudeRunnerConfig(config: Record<string, unknown>): Record<stri
|
|||||||
return { ...translated, ...(effort === undefined || effort === "" ? {} : { modelReasoningEffort: effort }), provider: "acpx", acpxAgent: "claude", model, acpxPermissionMode: translated.acpxPermissionMode ?? "approve-all", lifecycleMode: config.lifecycleMode ?? "per_turn" };
|
return { ...translated, ...(effort === undefined || effort === "" ? {} : { modelReasoningEffort: effort }), provider: "acpx", acpxAgent: "claude", model, acpxPermissionMode: translated.acpxPermissionMode ?? "approve-all", lifecycleMode: config.lifecycleMode ?? "per_turn" };
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Idempotent translation. Missing dependencies or credentials never select another runner. */
|
|
||||||
export function resolveNewAgentRunner(input: AgentRunnerSelection): { adapterType: string; adapterConfig: Record<string, unknown> } {
|
export function resolveNewAgentRunner(input: AgentRunnerSelection): { adapterType: string; adapterConfig: Record<string, unknown> } {
|
||||||
const adapterType = input.adapterType ?? "process";
|
const adapterType = input.adapterType ?? "process";
|
||||||
let config = { ...input.adapterConfig };
|
let config = { ...input.adapterConfig };
|
||||||
const harness = agentHarnessType(adapterType, config);
|
const harness = agentHarnessType(adapterType, config);
|
||||||
const native = adapterType === "paperclip_runner";
|
const native = adapterType === "paperclip_runner";
|
||||||
if (["codex_local", "claude_local"].includes(adapterType) && getDisabledAdapterTypes().includes(adapterType)) throw unprocessable(`${adapterType === "claude_local" ? "Claude" : "Codex"} is disabled on this instance. Enable its adapter or choose another harness.`, { code: "agent_runner_unavailable" });
|
if (["codex_local", "claude_local"].includes(adapterType) && getDisabledAdapterTypes().includes(adapterType)) throw unprocessable(`${adapterType === "claude_local" ? "Claude" : "Codex"} is disabled on this instance. Enable its adapter or choose another harness.`, { code: "agent_runner_unavailable" });
|
||||||
// Explicit saved native profiles (including historical provider omission) retain execution.
|
|
||||||
if (native && (input.runner === undefined || input.runner === "paperclip" || (harness !== "codex_local" && input.runner !== "legacy"))) return { adapterType, adapterConfig: normalizeLegacyRunnerProvider(config) };
|
if (native && (input.runner === undefined || input.runner === "paperclip" || (harness !== "codex_local" && input.runner !== "legacy"))) return { adapterType, adapterConfig: normalizeLegacyRunnerProvider(config) };
|
||||||
const availability = agentRunnerAvailability(harness, input.target);
|
const availability = agentRunnerAvailability(harness, input.target);
|
||||||
const choice = input.runner ?? "auto";
|
const choice = input.runner ?? "auto";
|
||||||
|
|||||||
@@ -5644,8 +5644,6 @@ export function companyPortabilityService(db: Db, storage?: StorageService) {
|
|||||||
runner = agentRunner(existingImportAgent.adapterType);
|
runner = agentRunner(existingImportAgent.adapterType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// The picker sends harness identity for config edits. Keep a saved
|
|
||||||
// native profile, including on a source-built unqualified platform.
|
|
||||||
const retainedNative = runner === "paperclip" && ["codex_local", "claude_local"].includes(selectedHarness)
|
const retainedNative = runner === "paperclip" && ["codex_local", "claude_local"].includes(selectedHarness)
|
||||||
? [manifestAgent, existingImportAgent].find((agent) => agent?.adapterType === "paperclip_runner"
|
? [manifestAgent, existingImportAgent].find((agent) => agent?.adapterType === "paperclip_runner"
|
||||||
&& agentHarnessType(agent.adapterType, agent.adapterConfig) === selectedHarness)
|
&& agentHarnessType(agent.adapterType, agent.adapterConfig) === selectedHarness)
|
||||||
|
|||||||
@@ -1753,9 +1753,6 @@ export function CompanyImport() {
|
|||||||
if (agent.adapterType === "paperclip_runner" && selectedType === agent.adapterChoice
|
if (agent.adapterType === "paperclip_runner" && selectedType === agent.adapterChoice
|
||||||
&& ["codex_local", "claude_local"].includes(selectedType) && configVals.adapterType === selectedType
|
&& ["codex_local", "claude_local"].includes(selectedType) && configVals.adapterType === selectedType
|
||||||
&& agentHarnessType("paperclip_runner", configVals.adapterSchemaValues) === selectedType) {
|
&& agentHarnessType("paperclip_runner", configVals.adapterSchemaValues) === selectedType) {
|
||||||
// Project only real form changes onto the saved native configuration.
|
|
||||||
// Form defaults must not replace bindings or runtime fields; explicit
|
|
||||||
// clears must not be filled back in from the source either.
|
|
||||||
const original = importAdapterValues(selectedType, agent.adapterConfig, agent.adapterType, configVals.runner);
|
const original = importAdapterValues(selectedType, agent.adapterConfig, agent.adapterType, configVals.runner);
|
||||||
const baseline = build(original);
|
const baseline = build(original);
|
||||||
const retained = { ...agent.adapterConfig };
|
const retained = { ...agent.adapterConfig };
|
||||||
|
|||||||
Reference in new issue
Block a user