mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-24 01:41:42 +02:00
feat(connections): add experimental task-pinned AI routing
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
806af230b6
commit
c2efe3e92a
51 files changed
+1763
-60
No files matched your search
@@ -127,7 +127,7 @@ function readNonEmptyString(value: unknown): string | null {
|
||||
function classifyRetryReasonKind(retryReason: string | null): RetryReasonKind {
|
||||
if (retryReason === MAX_TURN_CONTINUATION_RETRY_REASON) return "max_turn_continuation";
|
||||
if (retryReason === ISSUE_DISPOSITION_REPAIR_RETRY_REASON) return "disposition_repair";
|
||||
if (retryReason === "ai_connection_busy") return "ai_connection_wait";
|
||||
if ((retryReason === "ai_connection_busy" || retryReason === "ai_connection_pool_wait")) return "ai_connection_wait";
|
||||
if (retryReason === "native_safe_replacement") return "native_safe_replacement";
|
||||
return "other";
|
||||
}
|
||||
|
||||
@@ -91,3 +91,8 @@ describe("wake context", () => {
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it("preserves non-assignee pool wait authority", () => {
|
||||
expect(isNonAssigneeWorkspaceBusyRetry("ai_connection_pool_wait", { aiConnectionBusyDeferredWhileAssignee: false })).toBe(true);
|
||||
expect(isNonAssigneeWorkspaceBusyRetry("ai_connection_pool_wait", { aiConnectionBusyDeferredWhileAssignee: true })).toBe(false);
|
||||
});
|
||||
@@ -17,6 +17,7 @@ function readNonEmptyString(value: unknown): string | null {
|
||||
|
||||
export const MAX_TURN_CONTINUATION_RETRY_REASON = "max_turns_continuation";
|
||||
export const WORKSPACE_BUSY_RETRY_REASON = "workspace_busy";
|
||||
export const AI_CONNECTION_POOL_WAIT_RETRY_REASON = "ai_connection_pool_wait";
|
||||
export const AI_CONNECTION_BUSY_RETRY_REASON = "ai_connection_busy";
|
||||
export const INTERACTION_CONTINUATION_INFRA_RETRY_REASON = "interaction_continuation_infra_retry";
|
||||
export const INTERACTION_CONTINUATION_INFRA_WAKE_REASON = "interaction_continuation_infra_retry";
|
||||
@@ -41,7 +42,7 @@ export function isNonAssigneeWorkspaceBusyRetry(
|
||||
return (
|
||||
(retryReason === WORKSPACE_BUSY_RETRY_REASON &&
|
||||
contextSnapshot.workspaceBusyDeferredWhileAssignee === false) ||
|
||||
(retryReason === AI_CONNECTION_BUSY_RETRY_REASON &&
|
||||
((retryReason === AI_CONNECTION_BUSY_RETRY_REASON || retryReason === AI_CONNECTION_POOL_WAIT_RETRY_REASON) &&
|
||||
contextSnapshot.aiConnectionBusyDeferredWhileAssignee === false)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ export {
|
||||
MAX_TURN_CONTINUATION_RETRY_REASON,
|
||||
WORKSPACE_BUSY_RETRY_REASON,
|
||||
AI_CONNECTION_BUSY_RETRY_REASON,
|
||||
AI_CONNECTION_POOL_WAIT_RETRY_REASON,
|
||||
INTERACTION_CONTINUATION_INFRA_RETRY_REASON,
|
||||
INTERACTION_CONTINUATION_INFRA_WAKE_REASON,
|
||||
WAKE_COMMENT_IDS_KEY,
|
||||
|
||||
Reference in new issue
Block a user