@oneuptime/common 11.5.7 → 11.5.8
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/Models/DatabaseModels/AIRun.ts +31 -0
- package/Server/API/CodeFixRunAPI.ts +25 -74
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784105912819-BackfillCodeFixTaskType.ts +41 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Middleware/MasterAdminAuthorization.ts +1 -1
- package/Server/Middleware/ProjectAuthorization.ts +1 -1
- package/Server/Services/AIRunService.ts +10 -11
- package/Server/Utils/AI/AIRunPrivacyFilter.ts +106 -0
- package/Tests/Server/Utils/AI/AIRunPrivacyFilter.test.ts +295 -0
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/UI/Components/EditionLabel/EditionLabel.tsx +821 -331
- package/build/dist/Models/DatabaseModels/AIRun.js +31 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Server/API/CodeFixRunAPI.js +25 -53
- package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784105912819-BackfillCodeFixTaskType.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784105912819-BackfillCodeFixTaskType.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MasterAdminAuthorization.js +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +1 -1
- package/build/dist/Server/Services/AIRunService.js +10 -3
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Utils/AI/AIRunPrivacyFilter.js +82 -0
- package/build/dist/Server/Utils/AI/AIRunPrivacyFilter.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +424 -139
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/package.json +1 -1
|
@@ -58,7 +58,7 @@ export default class ProjectMiddleware {
|
|
|
58
58
|
* (Admin Dashboard → Settings → API Key) and that key is currently enabled.
|
|
59
59
|
* The master key has root/master-admin access, so this is shared with
|
|
60
60
|
* MasterAdminAuthorization to let the key reach master-admin-only endpoints
|
|
61
|
-
* (e.g.
|
|
61
|
+
* (e.g. OneUptime Health) as well.
|
|
62
62
|
*/
|
|
63
63
|
static async isMasterApiKey(apiKey) {
|
|
64
64
|
/*
|
|
@@ -16,7 +16,7 @@ import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
|
16
16
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
17
17
|
import DatabaseService from "./DatabaseService";
|
|
18
18
|
import Model from "../../Models/DatabaseModels/AIRun";
|
|
19
|
-
import {
|
|
19
|
+
import { applyAIRunPrivacyFilter } from "../Utils/AI/AIRunPrivacyFilter";
|
|
20
20
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
21
21
|
export class Service extends DatabaseService {
|
|
22
22
|
constructor() {
|
|
@@ -246,11 +246,18 @@ export class Service extends DatabaseService {
|
|
|
246
246
|
return { runId: run.id, verdict: data.verdict };
|
|
247
247
|
}
|
|
248
248
|
async onBeforeFind(findBy) {
|
|
249
|
-
findBy.query =
|
|
249
|
+
findBy.query = applyAIRunPrivacyFilter(findBy.query, findBy.props);
|
|
250
250
|
return { findBy, carryForward: null };
|
|
251
251
|
}
|
|
252
|
+
/*
|
|
253
|
+
* countBy MUST repeat the filter. DatabaseService has no onBeforeCount hook
|
|
254
|
+
* (only onCountSuccess / onCountError), and BaseAPI.getList issues findBy
|
|
255
|
+
* and countBy with the SAME client query, so filtering in onBeforeFind alone
|
|
256
|
+
* would return a correctly-scoped list beside an unscoped project-wide
|
|
257
|
+
* count on every page. IncidentService repeats it for the same reason.
|
|
258
|
+
*/
|
|
252
259
|
async countBy(countBy) {
|
|
253
|
-
countBy.query =
|
|
260
|
+
countBy.query = applyAIRunPrivacyFilter(countBy.query, countBy.props);
|
|
254
261
|
return super.countBy(countBy);
|
|
255
262
|
}
|
|
256
263
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIRunService.js","sourceRoot":"","sources":["../../../../Server/Services/AIRunService.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,eAAe,EAAE,EACtB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,SAAS,MAAM,oCAAoC,CAAC;AAC3D,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAIxD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,mCAAmC,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AIRunService.js","sourceRoot":"","sources":["../../../../Server/Services/AIRunService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import NotAuthorizedException from "../../../Types/Exception/NotAuthorizedException";
|
|
2
|
+
import AIRunType from "../../../Types/AI/AIRunType";
|
|
3
|
+
import Text from "../../../Types/Text";
|
|
4
|
+
import { combineWithPrivacyClause } from "../PrivacyFilterUtil";
|
|
5
|
+
import { Raw } from "typeorm";
|
|
6
|
+
/*
|
|
7
|
+
* AIRun mixes two kinds of row under one table:
|
|
8
|
+
*
|
|
9
|
+
* - Chat and investigation runs are PERSONAL. They hang off a conversation
|
|
10
|
+
* and carry the user's own prompt trail, so only their author may read
|
|
11
|
+
* them. This is what AIChatPrivacyFilter's flat pin protects, and that pin
|
|
12
|
+
* stays exactly as it is for AIConversation, AIConversationMessage and
|
|
13
|
+
* AIRunEvent.
|
|
14
|
+
* - CodeFix runs are a SHARED TEAM ARTIFACT: they are triggered off an
|
|
15
|
+
* exception or an incident, they produce a pull request, and their child
|
|
16
|
+
* AIAgentTaskPullRequest rows are already project-readable through the
|
|
17
|
+
* standard CRUD. `userId` on a CodeFix run is attribution only (who
|
|
18
|
+
* clicked "Fix with AI Agent") and is null for automatic triggers — it
|
|
19
|
+
* carries no conversational content.
|
|
20
|
+
*
|
|
21
|
+
* So AIRun cannot use that flat pin. It needs `runType = CodeFix OR userId =
|
|
22
|
+
* <caller>`, a CROSS-COLUMN disjunction, which a query object cannot express
|
|
23
|
+
* (query objects are conjunctions).
|
|
24
|
+
*
|
|
25
|
+
* The clause below is built ENTIRELY from server state and AND-ed onto the
|
|
26
|
+
* caller's query. It never READS query.runType to decide anything — that
|
|
27
|
+
* would be unsound, because onBeforeFind runs BEFORE QueryUtil.serializeQuery,
|
|
28
|
+
* so query.runType here is still a raw, client-controlled operator object
|
|
29
|
+
* whose .value/.toString() are identical across the safe and hostile cases:
|
|
30
|
+
* LessThan("CodeFix") stringifies to exactly "CodeFix" but compiles to
|
|
31
|
+
* `runType < 'CodeFix'`, which matches "Chat". Because the clause is forced, a
|
|
32
|
+
* caller-supplied runType filter can only ever NARROW it, and
|
|
33
|
+
* combineWithPrivacyClause fails closed on operator shapes it does not
|
|
34
|
+
* recognize.
|
|
35
|
+
*
|
|
36
|
+
* Modelled on Utils/Incident/IncidentPrivacyFilter, which solves the same
|
|
37
|
+
* "unrestricted rows for everyone, restricted rows only for their owner"
|
|
38
|
+
* shape.
|
|
39
|
+
*/
|
|
40
|
+
export function getAIRunPrivacyRaw(props) {
|
|
41
|
+
if (props.isRoot || props.isMasterAdmin) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
/*
|
|
45
|
+
* The same hard gate the flat pin has, and it must stay. A caller with no
|
|
46
|
+
* user — a project API key, which gets userTenantAccessPermission but never
|
|
47
|
+
* userAuthorization (see ProjectAuthorization), so props.userId is
|
|
48
|
+
* undefined — has no personal scope. Today such a caller cannot read AIRun
|
|
49
|
+
* at all. Letting CodeFix rows through here would hand every API key holding
|
|
50
|
+
* ProjectMember the project's whole fix history: access that neither
|
|
51
|
+
* /ai-run nor /code-fix-run grants today. That is a separate product
|
|
52
|
+
* decision and must not ride in as a side effect of this filter.
|
|
53
|
+
*/
|
|
54
|
+
if (!props.userId) {
|
|
55
|
+
throw new NotAuthorizedException("AI runs are personal and can only be accessed by the user who created them.");
|
|
56
|
+
}
|
|
57
|
+
const userIdRid = "aiRunUid_" + Text.generateRandomText(10);
|
|
58
|
+
const runTypeRid = "aiRunType_" + Text.generateRandomText(10);
|
|
59
|
+
return Raw((alias) => {
|
|
60
|
+
return `(${alias} = :${runTypeRid} OR "AIRun"."userId" = :${userIdRid})`;
|
|
61
|
+
}, {
|
|
62
|
+
[runTypeRid]: AIRunType.CodeFix,
|
|
63
|
+
[userIdRid]: props.userId.toString(),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/*
|
|
67
|
+
* Applies the clause above on AIRun.runType. Project isolation is unaffected:
|
|
68
|
+
* @TenantColumn("projectId") independently forces projectId = <tenant>, so
|
|
69
|
+
* "CodeFix runs are readable" always means "in YOUR project".
|
|
70
|
+
*/
|
|
71
|
+
export function applyAIRunPrivacyFilter(query, props) {
|
|
72
|
+
const rawClause = getAIRunPrivacyRaw(props);
|
|
73
|
+
if (!rawClause) {
|
|
74
|
+
return query;
|
|
75
|
+
}
|
|
76
|
+
if (!query) {
|
|
77
|
+
return { runType: rawClause };
|
|
78
|
+
}
|
|
79
|
+
query.runType = combineWithPrivacyClause(query.runType, rawClause);
|
|
80
|
+
return query;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=AIRunPrivacyFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIRunPrivacyFilter.js","sourceRoot":"","sources":["../../../../../Server/Utils/AI/AIRunPrivacyFilter.ts"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,MAAM,iDAAiD,CAAC;AACrF,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,IAAI,MAAM,qBAAqB,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAqC;IAErC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,sBAAsB,CAC9B,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAW,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACpE,MAAM,UAAU,GAAW,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAEtE,OAAO,GAAG,CACR,CAAC,KAAa,EAAU,EAAE;QACxB,OAAO,IAAI,KAAK,OAAO,UAAU,2BAA2B,SAAS,GAAG,CAAC;IAC3E,CAAC,EACD;QACE,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,OAAO;QAC/B,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;KACrC,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,KAAqC;IAErC,MAAM,SAAS,GACb,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAE5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,SAAS,EAAuB,CAAC;IACrD,CAAC;IAEA,KAAa,CAAC,OAAO,GAAG,wBAAwB,CAC9C,KAAa,CAAC,OAAO,EACtB,SAAS,CACV,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -77,6 +77,7 @@ var EmailTemplateType;
|
|
|
77
77
|
EmailTemplateType["UserNoLongerActiveOnOnCallRoster"] = "UserNoLongerActiveOnOnCallRoster.hbs";
|
|
78
78
|
EmailTemplateType["ProjectSubscriptionOverdue"] = "ProjectSubscriptionOverdue.hbs";
|
|
79
79
|
EmailTemplateType["Invoice"] = "Invoice.hbs";
|
|
80
|
+
EmailTemplateType["ClickhouseCapacityWarning"] = "ClickhouseCapacityWarning.hbs";
|
|
80
81
|
})(EmailTemplateType || (EmailTemplateType = {}));
|
|
81
82
|
export default EmailTemplateType;
|
|
82
83
|
//# sourceMappingURL=EmailTemplateType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailTemplateType.js","sourceRoot":"","sources":["../../../../Types/Email/EmailTemplateType.ts"],"names":[],"mappings":"AAAA,IAAK,
|
|
1
|
+
{"version":3,"file":"EmailTemplateType.js","sourceRoot":"","sources":["../../../../Types/Email/EmailTemplateType.ts"],"names":[],"mappings":"AAAA,IAAK,iBAwFJ;AAxFD,WAAK,iBAAiB;IACpB,wDAAmC,CAAA;IACnC,0DAAqC,CAAA;IACrC,sDAAiC,CAAA;IACjC,kEAA6C,CAAA;IAC7C,oFAA+D,CAAA;IAC/D,wFAAmE,CAAA;IACnE,gEAA2C,CAAA;IAC3C,wFAAmE,CAAA;IACnE,wDAAmC,CAAA;IACnC,4DAAuC,CAAA;IACvC,4DAAuC,CAAA;IACvC,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,0EAAqD,CAAA;IACrD,wFAAmE,CAAA;IACnE,gFAA2D,CAAA;IAC3D,oGAA+E,CAAA;IAC/E,kFAA6D,CAAA;IAC7D,wFAAmE,CAAA;IACnE,0FAAqE,CAAA;IACrE,kHAA6F,CAAA;IAC7F,0HAAqG,CAAA;IACrG,4HAAuG,CAAA;IACvG,8EAAyD,CAAA;IACzD,gFAA2D,CAAA;IAC3D,0EAAqD,CAAA;IACrD,0HAAqG,CAAA;IACrG,8CAAyB,CAAA;IACzB,gEAA2C,CAAA;IAC3C,oFAA+D,CAAA;IAC/D,oEAA+C,CAAA;IAC/C,gFAA2D,CAAA;IAE3D,kEAA6C,CAAA;IAC7C,gFAA2D,CAAA;IAC3D,4EAAuD,CAAA;IACvD,sFAAiE,CAAA;IACjE,oEAA+C,CAAA;IAC/C,4FAAuE,CAAA;IAEvE,4DAAuC,CAAA;IACvC,0EAAqD,CAAA;IACrD,sEAAiD,CAAA;IACjD,gFAA2D,CAAA;IAC3D,sFAAiE,CAAA;IAEjE,0EAAqD,CAAA;IACrD,wFAAmE,CAAA;IACnE,oFAA+D,CAAA;IAC/D,8FAAyE,CAAA;IACzE,oFAA+D,CAAA;IAE/D,gFAA2D,CAAA;IAC3D,8FAAyE,CAAA;IACzE,0FAAqE,CAAA;IACrE,oGAA+E,CAAA;IAC/E,gGAA2E,CAAA;IAE3E,8EAAyD,CAAA;IACzD,wFAAmE,CAAA;IACnE,sFAAiE,CAAA;IAEjE,oGAA+E,CAAA;IAC/E,0FAAqE,CAAA;IACrE,wGAAmF,CAAA;IACnF,8GAAyF,CAAA;IACzF,oHAA+F,CAAA;IAC/F,0FAAqE,CAAA;IACrE,sEAAiD,CAAA;IACjD,gGAA2E,CAAA;IAC3E,wDAAmC,CAAA;IACnC,8DAAyC,CAAA;IACzC,oEAA+C,CAAA;IAC/C,8DAAyC,CAAA;IACzC,4EAAuD,CAAA;IACvD,kFAA6D,CAAA;IAE7D,4EAAuD,CAAA;IACvD,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAC/D,0EAAqD,CAAA;IACrD,8FAAyE,CAAA;IAEzE,kFAA6D,CAAA;IAC7D,4CAAuB,CAAA;IAEvB,gFAA2D,CAAA;AAC7D,CAAC,EAxFI,iBAAiB,KAAjB,iBAAiB,QAwFrB;AAED,eAAe,iBAAiB,CAAC"}
|