From cec02e3c6ca687face5f1addaef768e5751f4954 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:08:45 +0000 Subject: [PATCH 1/2] Initial plan From 912d836b894f7dcf8795f642e44b9673d5b11800 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:11:45 +0000 Subject: [PATCH 2/2] feat: add qbx_management event logging integration Agent-Logs-Url: https://github.com/fivemanage/sdk/sessions/ea8de92d-cd33-45c1-bbbb-05ed8ff089c5 Co-authored-by: itschip <59088889+itschip@users.noreply.github.com> --- config.json | 4 ++ config.schema.json | 20 +++++- features/logs/server/logger.ts | 1 + .../logs/server/third-party/qbx-management.ts | 65 +++++++++++++++++++ features/utils/common/config.ts | 1 + 5 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 features/logs/server/third-party/qbx-management.ts diff --git a/config.json b/config.json index dff7961..ed6b4ea 100644 --- a/config.json +++ b/config.json @@ -27,6 +27,10 @@ "oxInventoryEvents": { "enabled": true, "dataset": "default" + }, + "qbxManagementEvents": { + "enabled": false, + "dataset": "default" } } } \ No newline at end of file diff --git a/config.schema.json b/config.schema.json index 654eedb..3c2609a 100644 --- a/config.schema.json +++ b/config.schema.json @@ -132,6 +132,23 @@ } }, "default": { "enabled": false, "dataset": "default" } + }, + "qbxManagementEvents": { + "description": "qbx_management job/gang management events configuration.", + "type": "object", + "properties": { + "enabled": { + "description": "Enable qbx_management events to be logged.", + "type": "boolean", + "default": false + }, + "dataset": { + "description": "Dataset to use for qbx_management events.", + "type": "string", + "default": "default" + } + }, + "default": { "enabled": false, "dataset": "default" } } }, "required": [ @@ -144,7 +161,8 @@ "playerEvents", "chatEvents", "txAdminEvents", - "oxInventoryEvents" + "oxInventoryEvents", + "qbxManagementEvents" ] } }, diff --git a/features/logs/server/logger.ts b/features/logs/server/logger.ts index e8fa588..e2b4fd8 100644 --- a/features/logs/server/logger.ts +++ b/features/logs/server/logger.ts @@ -20,6 +20,7 @@ import './chat'; import './txadmin' import './baseevents' import './third-party/ox-inventory' +import './third-party/qbx-management' const levels = config.logs.levels.reduce>( (acc, curr, idx) => { diff --git a/features/logs/server/third-party/qbx-management.ts b/features/logs/server/third-party/qbx-management.ts new file mode 100644 index 0000000..e7661a9 --- /dev/null +++ b/features/logs/server/third-party/qbx-management.ts @@ -0,0 +1,65 @@ +import { ingest } from "../logger"; +import { config } from "~/utils/common/config"; + +if (config.logs.qbxManagementEvents.enabled) { + const dataset = config.logs.qbxManagementEvents.dataset; + + onNet("QBCore:Server:OnPlayerLoaded", () => { + const _source = global.source; + + ingest(dataset, "info", "qbx_management.player.loaded", { + playerSource: _source, + playerName: GetPlayerName(_source.toString()), + }, { + _internal_RESOURCE: "qbx_management", + }); + }); + + on("QBCore:Server:OnPlayerUnload", () => { + const source = global.source; + + ingest(dataset, "info", "qbx_management.player.unloaded", { + playerSource: source, + }, { + _internal_RESOURCE: "qbx_management", + }); + }); + + on("QBCore:Server:SetDuty", (source: number, duty: boolean) => { + ingest(dataset, "info", duty ? "qbx_management.player.clockedIn" : "qbx_management.player.clockedOut", { + playerSource: source, + playerName: GetPlayerName(source.toString()), + onDuty: duty, + }, { + _internal_RESOURCE: "qbx_management", + }); + }); + + on("QBCore:Server:OnJobUpdate", (source: number, job: unknown) => { + ingest(dataset, "info", "qbx_management.player.jobUpdated", { + playerSource: source, + playerName: GetPlayerName(source.toString()), + job, + }, { + _internal_RESOURCE: "qbx_management", + }); + }); + + on("qbx_core:server:onJobUpdate", (jobName: string, job: unknown) => { + ingest(dataset, "info", "qbx_management.job.definitionUpdated", { + jobName, + job, + }, { + _internal_RESOURCE: "qbx_management", + }); + }); + + on("qbx_core:server:onGangUpdate", (gangName: string, gang: unknown) => { + ingest(dataset, "info", "qbx_management.gang.definitionUpdated", { + gangName, + gang, + }, { + _internal_RESOURCE: "qbx_management", + }); + }); +} diff --git a/features/utils/common/config.ts b/features/utils/common/config.ts index 2f2ceaf..caa65a8 100644 --- a/features/utils/common/config.ts +++ b/features/utils/common/config.ts @@ -29,6 +29,7 @@ const ConfigSchema = object({ chatEvents: EventConfigSchema, txAdminEvents: EventConfigSchema, oxInventoryEvents: EventConfigSchema, + qbxManagementEvents: EventConfigSchema, }), });