@paperclipai/server 2026.930.0-canary.0 → 2026.930.0-canary.2
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/build-info.json +1 -1
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +2 -59
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/openapi.d.ts.map +1 -1
- package/dist/routes/openapi.js +1 -17
- package/dist/routes/openapi.js.map +1 -1
- package/dist/services/feedback.d.ts.map +1 -1
- package/dist/services/feedback.js +4 -1
- package/dist/services/feedback.js.map +1 -1
- package/dist/services/instance-settings.d.ts.map +1 -1
- package/dist/services/instance-settings.js +0 -2
- package/dist/services/instance-settings.js.map +1 -1
- package/dist/vendor/paperclip-runner/cli/opencode-app-server-proxy.cjs +33 -14
- package/dist/vendor/paperclip-runner/cli/opencode-app-server-proxy.js +33 -14
- package/dist/vendor/paperclip-runner/drivers/opencode/opencode-server-driver.d.ts.map +1 -1
- package/dist/vendor/paperclip-runner/drivers/opencode/opencode-server-driver.js +63 -14
- package/dist/vendor/paperclip-runner/drivers/opencode/opencode-server-driver.js.map +1 -1
- package/package.json +18 -18
- package/ui-dist/assets/{AgentAvatar-CenkOYQD.js → AgentAvatar-BPfN9vZK.js} +1 -1
- package/ui-dist/assets/{AgentIdentity-DvfyLNJD.js → AgentIdentity-EYn8iSEF.js} +1 -1
- package/ui-dist/assets/{Agents.production-deCQ55FV.js → Agents.production-WVmmp2za.js} +2 -2
- package/ui-dist/assets/{CompanyActivity.production-CuGZzJsX.js → CompanyActivity.production-nDcqjZbO.js} +1 -1
- package/ui-dist/assets/{CompanyExport-DsXqO_Ln.js → CompanyExport-BJoyzcat.js} +1 -1
- package/ui-dist/assets/{CompanySkills.production-C9V1PXKI.js → CompanySkills.production-jsiCBXHx.js} +1 -1
- package/ui-dist/assets/{Costs.production-B9c6HtBM.js → Costs.production-SJm6H8Xd.js} +1 -1
- package/ui-dist/assets/{EmptyState-CQk9Alvk.js → EmptyState-BUSvCSIq.js} +1 -1
- package/ui-dist/assets/{MarkdownBody-C8ACX6RA.js → MarkdownBody-DP1mZ18N.js} +1 -1
- package/ui-dist/assets/{MarkdownEditor-Bep-i--v.js → MarkdownEditor-DeIJ7VsW.js} +1 -1
- package/ui-dist/assets/{OrgChart.production-Dx7STBZo.js → OrgChart.production-CUkp38UD.js} +1 -1
- package/ui-dist/assets/{PageSkeleton-BYEJNKOY.js → PageSkeleton-DlX5umyy.js} +1 -1
- package/ui-dist/assets/{RoutineDetail.production-CUgHF_Iw.js → RoutineDetail.production-rY4HJPUD.js} +1 -1
- package/ui-dist/assets/RoutineRunVariablesDialog-CFS41W3m.js +5 -0
- package/ui-dist/assets/{Routines.production-CZ7N1b4P.js → Routines.production-8xhxnNQX.js} +1 -1
- package/ui-dist/assets/{SidebarContext-G94149DF.js → SidebarContext-7EurXhRY.js} +1 -1
- package/ui-dist/assets/{StatusIcon-CZvZA3QF.js → StatusIcon-DljkAslt.js} +1 -1
- package/ui-dist/assets/{agents-BTURuFaN.js → agents-D4OgWpQo.js} +1 -1
- package/ui-dist/assets/{badge-DVqKIWjg.js → badge-ByLeLJNJ.js} +1 -1
- package/ui-dist/assets/{bot-ib34OtKY.js → bot-BDQWcnts.js} +1 -1
- package/ui-dist/assets/{button-CCFFHCiY.js → button-eJD3mJ-f.js} +1 -1
- package/ui-dist/assets/{card-FCNH59Or.js → card-DCWVzojo.js} +1 -1
- package/ui-dist/assets/{check-C_s9ixVR.js → check-BZkq07h0.js} +1 -1
- package/ui-dist/assets/{checkbox-Bz1imj9R.js → checkbox-C0vlgLXf.js} +1 -1
- package/ui-dist/assets/{chevron-down-CnNBhJxy.js → chevron-down-BAooAioa.js} +1 -1
- package/ui-dist/assets/{chevron-right-B_Kq_AOH.js → chevron-right-DnuAqQPO.js} +1 -1
- package/ui-dist/assets/{clipboard-CWqG-7pk.js → clipboard-BFKuGI7l.js} +1 -1
- package/ui-dist/assets/{company-members-BofPNq_F.js → company-members-_Jj7ZWOW.js} +1 -1
- package/ui-dist/assets/{createLucideIcon-B_mK_VG2.js → createLucideIcon-vMwTZN_6.js} +19 -19
- package/ui-dist/assets/{definition-Du6OcBek.js → definition-Dga96mzr.js} +1 -1
- package/ui-dist/assets/{dist-P7ZTd9lT.js → dist-BmD4gHtJ.js} +1 -1
- package/ui-dist/assets/{dist-Dow0RKFv.js → dist-C7P2DN3n.js} +1 -1
- package/ui-dist/assets/{environments-0oXrdCTQ.js → environments-BV5Fwzsy.js} +1 -1
- package/ui-dist/assets/{external-link-D59L8hGo.js → external-link-CUwlvZDK.js} +1 -1
- package/ui-dist/assets/{file-text-BAEPXW_A.js → file-text-Bl0TaQug.js} +1 -1
- package/ui-dist/assets/{health-DSjugwwL.js → health-DePSo-9o.js} +1 -1
- package/ui-dist/assets/{heartbeats-D4ELe4Sn.js → heartbeats-Dl3Va5bS.js} +1 -1
- package/ui-dist/assets/{index-BMvRq36z.js → index-C_APSfRe.js} +167 -167
- package/ui-dist/assets/{input-YNKVumOW.js → input-CRPsD3AN.js} +1 -1
- package/ui-dist/assets/{label-9zUPNH5F.js → label-CsiPASFm.js} +1 -1
- package/ui-dist/assets/{loader-circle-qWQA7r5v.js → loader-circle-9v7-iJQ0.js} +1 -1
- package/ui-dist/assets/{mention-chips-aYeYhD29.js → mention-chips-BCQEsQpi.js} +1 -1
- package/ui-dist/assets/{octagon-alert-uymgu9kR.js → octagon-alert-lthA7KU_.js} +1 -1
- package/ui-dist/assets/{rotate-ccw-BGH9Cp0p.js → rotate-ccw--WuZTXsk.js} +1 -1
- package/ui-dist/assets/{router-ja-t0dzd.js → router-Cvpxsdv_.js} +1 -1
- package/ui-dist/assets/{save-7zDjc338.js → save-eTfQckrT.js} +1 -1
- package/ui-dist/assets/{select-jkziYfPS.js → select-DOwvxO_m.js} +1 -1
- package/ui-dist/assets/{sheet-DOdqbZr_.js → sheet-B3qMuujY.js} +1 -1
- package/ui-dist/assets/{skeleton-BreU-f6r.js → skeleton-BXgsFieL.js} +1 -1
- package/ui-dist/assets/{tabs-wFhvLS_B.js → tabs-Cl9qV5-t.js} +1 -1
- package/ui-dist/assets/{triangle-alert-umP_IRXH.js → triangle-alert-q7IP_bV2.js} +1 -1
- package/ui-dist/assets/{use-adapter-capabilities-Cfy3s6Qh.js → use-adapter-capabilities-w3OwdSmU.js} +1 -1
- package/ui-dist/assets/{useHiddenSettings-Cj7nbsiJ.js → useHiddenSettings-7SFj2hvo.js} +1 -1
- package/ui-dist/assets/{zap-DtwT6JJ5.js → zap-COmV4eDi.js} +1 -1
- package/ui-dist/index.html +45 -45
- package/ui-dist/sw.js +1 -1
- package/ui-dist/assets/RoutineRunVariablesDialog-CL6XqtCD.js +0 -5
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAmC1C,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,8CAsEhC"}
|
package/dist/routes/auth.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { Router } from "express";
|
|
2
2
|
import { eq } from "drizzle-orm";
|
|
3
3
|
import { authUsers } from "@paperclipai/db";
|
|
4
|
-
import { authSessionSchema,
|
|
5
|
-
import {
|
|
6
|
-
import { logActivity, publishActivity } from "../services/activity-log.js";
|
|
7
|
-
import { forbidden, unauthorized } from "../errors.js";
|
|
8
|
-
import { logger } from "../middleware/logger.js";
|
|
4
|
+
import { authSessionSchema, currentUserProfileSchema, updateCurrentUserProfileSchema, } from "@paperclipai/shared";
|
|
5
|
+
import { unauthorized } from "../errors.js";
|
|
9
6
|
import { validate } from "../middleware/validate.js";
|
|
10
7
|
import { resolveSentryDsns } from "../sentry-dsn.js";
|
|
11
8
|
async function loadCurrentUserProfile(db, userId) {
|
|
@@ -88,60 +85,6 @@ export function authRoutes(db) {
|
|
|
88
85
|
image: updated.image ?? null,
|
|
89
86
|
}));
|
|
90
87
|
});
|
|
91
|
-
router.get("/preferences", async (req, res) => {
|
|
92
|
-
if (req.actor.type !== "board" || !req.actor.userId) {
|
|
93
|
-
throw unauthorized("Board authentication required");
|
|
94
|
-
}
|
|
95
|
-
if (req.query.expectedUserId !== req.actor.userId)
|
|
96
|
-
throw unauthorized("Account changed. Refresh and try again.");
|
|
97
|
-
const [user] = await db.select({ keyboardShortcuts: authUsers.keyboardShortcuts })
|
|
98
|
-
.from(authUsers).where(eq(authUsers.id, req.actor.userId));
|
|
99
|
-
if (!user)
|
|
100
|
-
throw unauthorized("Signed-in user not found");
|
|
101
|
-
res.json(currentUserPreferencesSchema.parse(user));
|
|
102
|
-
});
|
|
103
|
-
router.patch("/preferences", validate(updateCurrentUserPreferencesSchema), async (req, res) => {
|
|
104
|
-
if (req.actor.type !== "board" || !req.actor.userId) {
|
|
105
|
-
throw unauthorized("Board authentication required");
|
|
106
|
-
}
|
|
107
|
-
const { companyId, keyboardShortcuts, expectedUserId } = updateCurrentUserPreferencesSchema.parse(req.body);
|
|
108
|
-
const userId = req.actor.userId;
|
|
109
|
-
if (expectedUserId !== userId)
|
|
110
|
-
throw unauthorized("Account changed. Refresh and try again.");
|
|
111
|
-
// This is a personal write; company membership supplies audit context only.
|
|
112
|
-
if (!hasCompanyAccess(req, companyId))
|
|
113
|
-
throw forbidden("User does not have access to this company");
|
|
114
|
-
const publications = [];
|
|
115
|
-
const user = await db.transaction(async (tx) => {
|
|
116
|
-
const [updated] = await tx.update(authUsers)
|
|
117
|
-
.set({ keyboardShortcuts, updatedAt: new Date() })
|
|
118
|
-
.where(eq(authUsers.id, userId))
|
|
119
|
-
.returning({ keyboardShortcuts: authUsers.keyboardShortcuts });
|
|
120
|
-
if (!updated)
|
|
121
|
-
throw unauthorized("Signed-in user not found");
|
|
122
|
-
await logActivity(tx, {
|
|
123
|
-
companyId,
|
|
124
|
-
actorType: "user",
|
|
125
|
-
actorId: userId,
|
|
126
|
-
action: "user.preferences_updated",
|
|
127
|
-
entityType: "user",
|
|
128
|
-
entityId: userId,
|
|
129
|
-
details: { keyboardShortcuts },
|
|
130
|
-
}, publications);
|
|
131
|
-
return updated;
|
|
132
|
-
});
|
|
133
|
-
for (const publication of publications) {
|
|
134
|
-
try {
|
|
135
|
-
publishActivity(publication);
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
// The preference and audit row are committed; notification failure must
|
|
139
|
-
// not tell the caller that its durable save failed.
|
|
140
|
-
logger.warn({ err, companyId, userId }, "Could not publish user preference activity");
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
res.json(currentUserPreferencesSchema.parse(user));
|
|
144
|
-
});
|
|
145
88
|
return router;
|
|
146
89
|
}
|
|
147
90
|
//# sourceMappingURL=auth.js.map
|
package/dist/routes/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/routes/openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/routes/openapi.ts"],"names":[],"mappings":"AAgqWA,wBAAgB,oBAAoB,IAAI,GAAG,CAY1C;AAED,eAAO,MAAM,gBAAgB,6BAAuB,CAAC;AAErD,wBAAgB,aAAa,+CAM5B"}
|
package/dist/routes/openapi.js
CHANGED
|
@@ -40,7 +40,7 @@ createIssueTreeHoldSchema, previewIssueTreeControlSchema, releaseIssueTreeHoldSc
|
|
|
40
40
|
// Issue interactions
|
|
41
41
|
createIssueThreadInteractionSchema, createChildIssueSchema, acceptIssueThreadInteractionSchema, rejectIssueThreadInteractionSchema, respondIssueThreadInteractionSchema, skipIssueThreadInteractionSchema, submitIssueThreadInteractionVerdictsSchema, withdrawIssueThreadInteractionSchema,
|
|
42
42
|
// Auth / profile
|
|
43
|
-
updateCurrentUserProfileSchema,
|
|
43
|
+
updateCurrentUserProfileSchema,
|
|
44
44
|
// Company portability (legacy routes)
|
|
45
45
|
companyPortabilityExportSchema, companyPortabilityPreviewSchema, companyPortabilityImportSchema,
|
|
46
46
|
// Access / membership
|
|
@@ -5746,22 +5746,6 @@ registry.registerPath({
|
|
|
5746
5746
|
summary: "List all users (admin)",
|
|
5747
5747
|
responses: { 200: r.ok(), 401: r.unauthorized, 403: r.forbidden },
|
|
5748
5748
|
});
|
|
5749
|
-
registry.registerPath({
|
|
5750
|
-
method: "get",
|
|
5751
|
-
path: "/api/auth/preferences",
|
|
5752
|
-
tags: ["auth"],
|
|
5753
|
-
summary: "Get the signed-in user's personal preferences",
|
|
5754
|
-
request: { query: z.object({ expectedUserId: z.string().min(1) }) },
|
|
5755
|
-
responses: { 200: r.ok(), 401: r.unauthorized },
|
|
5756
|
-
});
|
|
5757
|
-
registry.registerPath({
|
|
5758
|
-
method: "patch",
|
|
5759
|
-
path: "/api/auth/preferences",
|
|
5760
|
-
tags: ["auth"],
|
|
5761
|
-
summary: "Update personal preferences with a company audit context",
|
|
5762
|
-
request: { body: jsonBody(updateCurrentUserPreferencesSchema) },
|
|
5763
|
-
responses: { 200: r.ok(), 400: r.badRequest, 401: r.unauthorized, 403: r.forbidden },
|
|
5764
|
-
});
|
|
5765
5749
|
// ─── Auth / profile ──────────────────────────────────────────────────────────
|
|
5766
5750
|
registry.registerPath({
|
|
5767
5751
|
method: "get",
|