@tickernelz/paperclip-pro-server 2026.929.1 → 2026.929.3
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/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +10 -4
- package/dist/adapters/registry.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/middleware/http-log-redaction.d.ts +1 -1
- package/dist/middleware/http-log-redaction.d.ts.map +1 -1
- package/dist/middleware/http-log-redaction.js +5 -0
- package/dist/middleware/http-log-redaction.js.map +1 -1
- package/dist/onboarding-assets/ceo/HEARTBEAT.md +1 -1
- package/dist/onboarding-assets/default/AGENTS.md +1 -1
- package/dist/routes/access.d.ts.map +1 -1
- package/dist/routes/access.js +6 -0
- package/dist/routes/access.js.map +1 -1
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +111 -2
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/openapi.d.ts.map +1 -1
- package/dist/routes/openapi.js +7 -4
- package/dist/routes/openapi.js.map +1 -1
- package/dist/services/execution-workspace-policy.d.ts.map +1 -1
- package/dist/services/execution-workspace-policy.js +18 -10
- package/dist/services/execution-workspace-policy.js.map +1 -1
- package/dist/services/execution-workspaces.d.ts.map +1 -1
- package/dist/services/execution-workspaces.js +3 -0
- package/dist/services/execution-workspaces.js.map +1 -1
- package/dist/services/heartbeat.d.ts +1 -0
- package/dist/services/heartbeat.d.ts.map +1 -1
- package/dist/services/heartbeat.js +79 -7
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/issue-run-model-override.d.ts +1 -0
- package/dist/services/issue-run-model-override.d.ts.map +1 -1
- package/dist/services/issue-run-model-override.js +1 -1
- package/dist/services/issue-run-model-override.js.map +1 -1
- package/dist/services/issue-thread-interactions.js +4 -4
- package/dist/services/issue-thread-interactions.js.map +1 -1
- package/dist/services/native-runtime/paperclip-runner-tool-authority.js +1 -1
- package/dist/services/native-runtime/paperclip-runner-tool-authority.js.map +1 -1
- package/dist/services/paperclip-cloud-connector.d.ts +1 -1
- package/dist/services/paperclip-cloud-connector.d.ts.map +1 -1
- package/dist/services/paperclip-cloud-connector.js +55 -2
- package/dist/services/paperclip-cloud-connector.js.map +1 -1
- package/dist/services/paperclip-cloud-connector.test.js +88 -0
- package/dist/services/paperclip-cloud-connector.test.js.map +1 -1
- package/dist/services/recovery/service.d.ts +9 -0
- package/dist/services/recovery/service.d.ts.map +1 -1
- package/dist/services/recovery/service.js +132 -2
- package/dist/services/recovery/service.js.map +1 -1
- package/dist/services/run-identity.d.ts.map +1 -1
- package/dist/services/run-identity.js +12 -6
- package/dist/services/run-identity.js.map +1 -1
- package/dist/services/work-products.d.ts.map +1 -1
- package/dist/services/work-products.js +18 -1
- package/dist/services/work-products.js.map +1 -1
- package/node_modules/@types/ws/README.md +1 -1
- package/node_modules/@types/ws/index.d.mts +4 -0
- package/node_modules/@types/ws/index.d.ts +4 -0
- package/node_modules/@types/ws/package.json +3 -3
- package/package.json +21 -21
- package/skills/paperclip/SKILL.md +1 -1
- package/skills/paperclip/references/api-reference.md +2 -2
- package/ui-dist/assets/{Agents.production-zgRr_fIZ.js → Agents.production-DgL_dkS-.js} +2 -2
- package/ui-dist/assets/{CompanyActivity.production-DRpXVqnb.js → CompanyActivity.production-B3SxLtX3.js} +1 -1
- package/ui-dist/assets/{CompanyExport-BH9rrwu1.js → CompanyExport-CvtRA1t4.js} +1 -1
- package/ui-dist/assets/{CompanySkills.production-Bz-JcjC5.js → CompanySkills.production-BDujOe3I.js} +1 -1
- package/ui-dist/assets/{Costs.production-CQTfI_sh.js → Costs.production-YraSSt5l.js} +1 -1
- package/ui-dist/assets/{MarkdownBody-DJQ35hak.js → MarkdownBody-NJwkQWmo.js} +2 -2
- package/ui-dist/assets/{OrgChart.production-Cg16xkld.js → OrgChart.production-Ob1Blnw5.js} +1 -1
- package/ui-dist/assets/{RoutineDetail.production-BHPOgs21.js → RoutineDetail.production-DUASKX-C.js} +1 -1
- package/ui-dist/assets/{RoutineRunVariablesDialog-Bt4KAWCh.js → RoutineRunVariablesDialog-B1KRZJIl.js} +2 -2
- package/ui-dist/assets/{Routines.production-Blu3EE_K.js → Routines.production-D67kgR0m.js} +1 -1
- package/ui-dist/assets/StatusIcon-DgMlA1TU.js +1 -0
- package/ui-dist/assets/{definition-rtnhHFhU.js → definition-Bm9_obJ1.js} +1 -1
- package/ui-dist/assets/index-DLfVxJmv.css +1 -0
- package/ui-dist/assets/{index-CR1_ZQyb.js → index-un1DvcsQ.js} +163 -160
- package/ui-dist/index.html +5 -5
- package/ui-dist/sw.js +1 -1
- package/ui-dist/assets/StatusIcon-BuUYMqqU.js +0 -1
- package/ui-dist/assets/index-J-4PQOv1.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/issues.js
CHANGED
|
@@ -2,7 +2,7 @@ import { queuedInteractionId, readQueuedInteractionResponse, hasQueuedInteractio
|
|
|
2
2
|
import { deliverConversationComments, isConversation, isConversationReset } from "../services/agent-conversations.js";
|
|
3
3
|
import { issueRecoveryActionReadModel } from "../services/issue-recovery-actions.js";
|
|
4
4
|
import { getExecutionBlocker } from "../services/execution-blocker.js";
|
|
5
|
-
import { IssueRunModelOverrideError, buildIssueRunModelOverrideView, readIssueRunModelOverrideInheritance, resolveIssueRunModelOverrideUpdate, writeIssueRunModelOverride, } from "../services/issue-run-model-override.js";
|
|
5
|
+
import { IssueRunModelOverrideError, buildIssueRunModelOverrideView, readIssueRunModelOverride, readIssueRunModelOverrideInheritance, resolveIssueRunModelOverrideUpdate, writeIssueRunModelOverride, } from "../services/issue-run-model-override.js";
|
|
6
6
|
import { applyIssueRunModelOverrideToSubtree } from "../services/issue-model-override-inheritance.js";
|
|
7
7
|
import { releaseDependencyGateRecoveryHold } from "../services/dependency-gate-recovery-hold.js";
|
|
8
8
|
import { documentExportFileName, extractIssueReferenceIdentifiers, requiresExecutionReconciliation } from "@tickernelz/paperclip-pro-shared";
|
|
@@ -9225,7 +9225,16 @@ export function issueRoutes(db, storage, opts = {}) {
|
|
|
9225
9225
|
const existingRelations = Array.isArray(req.body.blockedByIssueIds)
|
|
9226
9226
|
? await svc.getRelationSummaries(existing.id)
|
|
9227
9227
|
: null;
|
|
9228
|
-
const { comment: commentBody, commentClientRequestId, attachmentIds: commentAttachmentIds, reviewInteractionId: requestedReviewInteractionId, reviewRequest, reopen: reopenRequested, resume: resumeRequested, interrupt: interruptRequested, deferWakeForGoal, hiddenAt: hiddenAtRaw, onBehalfOfUserId: _requestedOnBehalfOfUserId, ...updateFields } = req.body;
|
|
9228
|
+
const { comment: commentBody, commentClientRequestId, attachmentIds: commentAttachmentIds, reviewInteractionId: requestedReviewInteractionId, reviewRequest, reopen: reopenRequested, resume: resumeRequested, interrupt: interruptRequested, deferWakeForGoal, hiddenAt: hiddenAtRaw, onBehalfOfUserId: _requestedOnBehalfOfUserId, modelOverride: requestedModelOverride, ...updateFields } = req.body;
|
|
9229
|
+
if (requestedModelOverride !== undefined) {
|
|
9230
|
+
if (req.actor.type === "agent") {
|
|
9231
|
+
res.status(403).json({
|
|
9232
|
+
error: "Agents cannot change the per-task model override",
|
|
9233
|
+
});
|
|
9234
|
+
return;
|
|
9235
|
+
}
|
|
9236
|
+
assertBoard(req);
|
|
9237
|
+
}
|
|
9229
9238
|
if (existing.conversationAgentId && req.actor.type === "board" && commentBody) {
|
|
9230
9239
|
throw unprocessable("Send conversation messages through the comments endpoint with a clientRequestId");
|
|
9231
9240
|
}
|
|
@@ -9235,6 +9244,7 @@ export function issueRoutes(db, storage, opts = {}) {
|
|
|
9235
9244
|
"assigneeAgentId",
|
|
9236
9245
|
"assigneeUserId",
|
|
9237
9246
|
"deferWakeForGoal",
|
|
9247
|
+
"modelOverride",
|
|
9238
9248
|
].includes(key)))) {
|
|
9239
9249
|
res.status(400).json({
|
|
9240
9250
|
error: "Deferring the goal wake requires an assignment-only agent handoff",
|
|
@@ -9606,6 +9616,74 @@ export function issueRoutes(db, storage, opts = {}) {
|
|
|
9606
9616
|
: updateFields.assigneeUserId;
|
|
9607
9617
|
const assigneeWillChange = nextAssigneeAgentId !== existing.assigneeAgentId ||
|
|
9608
9618
|
nextAssigneeUserId !== existing.assigneeUserId;
|
|
9619
|
+
const storedModelOverride = readIssueRunModelOverride(existing.assigneeAdapterOverrides);
|
|
9620
|
+
const staleModelOverridePossible = nextAssigneeAgentId !== existing.assigneeAgentId &&
|
|
9621
|
+
Boolean(storedModelOverride.model || storedModelOverride.thinking);
|
|
9622
|
+
const [modelOverrideAgent, previousModelOverrideAgent] = await Promise.all([
|
|
9623
|
+
requestedModelOverride !== undefined || staleModelOverridePossible
|
|
9624
|
+
? loadIssueRunModelOverrideAgent(existing.companyId, nextAssigneeAgentId)
|
|
9625
|
+
: null,
|
|
9626
|
+
staleModelOverridePossible
|
|
9627
|
+
? loadIssueRunModelOverrideAgent(existing.companyId, existing.assigneeAgentId)
|
|
9628
|
+
: null,
|
|
9629
|
+
]);
|
|
9630
|
+
let resolvedModelOverride = null;
|
|
9631
|
+
if (requestedModelOverride) {
|
|
9632
|
+
let values;
|
|
9633
|
+
try {
|
|
9634
|
+
values = await resolveIssueRunModelOverrideUpdate({
|
|
9635
|
+
adapterType: modelOverrideAgent?.adapterType ?? null,
|
|
9636
|
+
values: {
|
|
9637
|
+
...(requestedModelOverride.model !== undefined
|
|
9638
|
+
? { model: requestedModelOverride.model }
|
|
9639
|
+
: {}),
|
|
9640
|
+
...(requestedModelOverride.thinking !== undefined
|
|
9641
|
+
? { thinking: requestedModelOverride.thinking }
|
|
9642
|
+
: {}),
|
|
9643
|
+
},
|
|
9644
|
+
});
|
|
9645
|
+
}
|
|
9646
|
+
catch (error) {
|
|
9647
|
+
if (error instanceof IssueRunModelOverrideError) {
|
|
9648
|
+
throw unprocessable(error.message);
|
|
9649
|
+
}
|
|
9650
|
+
throw error;
|
|
9651
|
+
}
|
|
9652
|
+
const storedInheritance = readIssueRunModelOverrideInheritance(existing.assigneeAdapterOverrides);
|
|
9653
|
+
const inheritance = {
|
|
9654
|
+
...storedInheritance,
|
|
9655
|
+
inheritToSubtasks: typeof requestedModelOverride.inheritToSubtasks === "boolean"
|
|
9656
|
+
? requestedModelOverride.inheritToSubtasks
|
|
9657
|
+
: storedInheritance.inheritToSubtasks,
|
|
9658
|
+
subtaskScope: requestedModelOverride.subtaskScope ?? storedInheritance.subtaskScope,
|
|
9659
|
+
inherited: false,
|
|
9660
|
+
sourceIssueId: null,
|
|
9661
|
+
};
|
|
9662
|
+
const crossesAdapters = staleModelOverridePossible &&
|
|
9663
|
+
modelOverrideAgent?.adapterType !== previousModelOverrideAgent?.adapterType;
|
|
9664
|
+
const writtenValues = crossesAdapters
|
|
9665
|
+
? { model: null, thinking: null, ...values }
|
|
9666
|
+
: values;
|
|
9667
|
+
resolvedModelOverride = {
|
|
9668
|
+
assigneeAdapterOverrides: writeIssueRunModelOverride(existing.assigneeAdapterOverrides, writtenValues, inheritance),
|
|
9669
|
+
values: writtenValues,
|
|
9670
|
+
inheritance,
|
|
9671
|
+
};
|
|
9672
|
+
}
|
|
9673
|
+
else if (staleModelOverridePossible &&
|
|
9674
|
+
modelOverrideAgent?.adapterType !== previousModelOverrideAgent?.adapterType) {
|
|
9675
|
+
const inheritance = {
|
|
9676
|
+
...readIssueRunModelOverrideInheritance(existing.assigneeAdapterOverrides),
|
|
9677
|
+
inherited: false,
|
|
9678
|
+
sourceIssueId: null,
|
|
9679
|
+
};
|
|
9680
|
+
const values = { model: null, thinking: null };
|
|
9681
|
+
resolvedModelOverride = {
|
|
9682
|
+
assigneeAdapterOverrides: writeIssueRunModelOverride(existing.assigneeAdapterOverrides, values, inheritance),
|
|
9683
|
+
values,
|
|
9684
|
+
inheritance,
|
|
9685
|
+
};
|
|
9686
|
+
}
|
|
9609
9687
|
const isAgentReturningIssueToCreator = req.actor.type === "agent" &&
|
|
9610
9688
|
!!req.actor.agentId &&
|
|
9611
9689
|
existing.assigneeAgentId === req.actor.agentId &&
|
|
@@ -9721,6 +9799,9 @@ export function issueRoutes(db, storage, opts = {}) {
|
|
|
9721
9799
|
const postCommitIssueActions = [];
|
|
9722
9800
|
const issueUpdateData = {
|
|
9723
9801
|
...updateFields,
|
|
9802
|
+
...(resolvedModelOverride
|
|
9803
|
+
? { assigneeAdapterOverrides: resolvedModelOverride.assigneeAdapterOverrides }
|
|
9804
|
+
: {}),
|
|
9724
9805
|
actorAgentId: actor.agentId ?? null,
|
|
9725
9806
|
actorUserId: actor.actorType === "user" ? actor.actorId : null,
|
|
9726
9807
|
};
|
|
@@ -9913,6 +9994,34 @@ export function issueRoutes(db, storage, opts = {}) {
|
|
|
9913
9994
|
for (const publication of postCommitActivityPublications)
|
|
9914
9995
|
publishActivity(publication);
|
|
9915
9996
|
await flushIssuePostCommitActions(postCommitIssueActions);
|
|
9997
|
+
if (resolvedModelOverride) {
|
|
9998
|
+
const propagation = resolvedModelOverride.inheritance.inheritToSubtasks &&
|
|
9999
|
+
resolvedModelOverride.inheritance.subtaskScope === "new_and_existing"
|
|
10000
|
+
? await applyIssueRunModelOverrideToSubtree(db, {
|
|
10001
|
+
companyId: existing.companyId,
|
|
10002
|
+
rootIssueId: existing.id,
|
|
10003
|
+
values: resolvedModelOverride.values,
|
|
10004
|
+
subtaskScope: resolvedModelOverride.inheritance.subtaskScope,
|
|
10005
|
+
})
|
|
10006
|
+
: null;
|
|
10007
|
+
await logActivity(db, {
|
|
10008
|
+
companyId: existing.companyId,
|
|
10009
|
+
actorType: actor.actorType,
|
|
10010
|
+
actorId: actor.actorId,
|
|
10011
|
+
agentId: actor.agentId,
|
|
10012
|
+
runId: actor.runId,
|
|
10013
|
+
action: "issue.run_model_override_updated",
|
|
10014
|
+
entityType: "issue",
|
|
10015
|
+
entityId: existing.id,
|
|
10016
|
+
issueId: existing.id,
|
|
10017
|
+
details: {
|
|
10018
|
+
values: resolvedModelOverride.values,
|
|
10019
|
+
inheritance: resolvedModelOverride.inheritance,
|
|
10020
|
+
propagation,
|
|
10021
|
+
assigneeAgentId: nextAssigneeAgentId,
|
|
10022
|
+
},
|
|
10023
|
+
});
|
|
10024
|
+
}
|
|
9916
10025
|
if (enteringBlocked) {
|
|
9917
10026
|
const blockedIssue = issue;
|
|
9918
10027
|
let ownerNotifiedAt = null;
|