chainlesschain 0.145.0 → 0.152.0
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/package.json +1 -1
- package/src/commands/activitypub.js +207 -0
- package/src/commands/agent-network.js +217 -0
- package/src/commands/automation.js +201 -0
- package/src/commands/bi.js +203 -0
- package/src/commands/browse.js +213 -0
- package/src/commands/codegen.js +207 -0
- package/src/commands/collab.js +211 -0
- package/src/commands/compliance.js +410 -0
- package/src/commands/cowork.js +203 -0
- package/src/commands/dbevo.js +227 -0
- package/src/commands/dev.js +207 -0
- package/src/commands/did-v2.js +217 -0
- package/src/commands/did.js +221 -0
- package/src/commands/dlp.js +213 -0
- package/src/commands/evomap.js +205 -0
- package/src/commands/export.js +213 -0
- package/src/commands/federation.js +209 -0
- package/src/commands/fusion.js +205 -0
- package/src/commands/governance.js +209 -0
- package/src/commands/hook.js +209 -0
- package/src/commands/import.js +209 -0
- package/src/commands/infra.js +203 -0
- package/src/commands/instinct.js +209 -0
- package/src/commands/ipfs.js +207 -0
- package/src/commands/llm.js +217 -0
- package/src/commands/matrix.js +207 -0
- package/src/commands/mcp.js +217 -0
- package/src/commands/memory.js +209 -0
- package/src/commands/multimodal.js +203 -0
- package/src/commands/nlprog.js +225 -0
- package/src/commands/nostr.js +209 -0
- package/src/commands/note.js +205 -0
- package/src/commands/ops.js +219 -0
- package/src/commands/org.js +209 -0
- package/src/commands/p2p.js +209 -0
- package/src/commands/perception.js +209 -0
- package/src/commands/permmem.js +203 -0
- package/src/commands/plugin-ecosystem.js +209 -0
- package/src/commands/pqc.js +213 -0
- package/src/commands/quantization.js +207 -0
- package/src/commands/rcache.js +205 -0
- package/src/commands/recommend.js +233 -0
- package/src/commands/runtime.js +205 -0
- package/src/commands/scim.js +209 -0
- package/src/commands/session.js +209 -0
- package/src/commands/skill.js +207 -0
- package/src/commands/social.js +201 -0
- package/src/commands/sso.js +209 -0
- package/src/commands/sync.js +209 -0
- package/src/commands/tech.js +209 -0
- package/src/commands/tenant.js +217 -0
- package/src/commands/tokens.js +209 -0
- package/src/commands/trust.js +217 -0
- package/src/commands/wallet.js +209 -0
- package/src/commands/workflow.js +203 -0
- package/src/index.js +140 -0
- package/src/lib/activitypub-bridge.js +334 -0
- package/src/lib/agent-network.js +341 -0
- package/src/lib/aiops.js +346 -0
- package/src/lib/automation-engine.js +335 -0
- package/src/lib/autonomous-developer.js +332 -0
- package/src/lib/bi-engine.js +333 -0
- package/src/lib/browser-automation.js +334 -0
- package/src/lib/code-agent.js +339 -0
- package/src/lib/collaboration-governance.js +334 -0
- package/src/lib/community-governance.js +346 -0
- package/src/lib/content-recommendation.js +351 -0
- package/src/lib/cowork-share.js +338 -0
- package/src/lib/dbevo.js +351 -0
- package/src/lib/decentral-infra.js +330 -0
- package/src/lib/did-manager.js +341 -0
- package/src/lib/did-v2-manager.js +341 -0
- package/src/lib/dlp-engine.js +339 -0
- package/src/lib/evomap-governance.js +334 -0
- package/src/lib/federation-hardening.js +340 -0
- package/src/lib/hook-manager.js +341 -0
- package/src/lib/instinct-manager.js +346 -0
- package/src/lib/ipfs-storage.js +334 -0
- package/src/lib/knowledge-exporter.js +341 -0
- package/src/lib/knowledge-importer.js +341 -0
- package/src/lib/llm-providers.js +346 -0
- package/src/lib/matrix-bridge.js +339 -0
- package/src/lib/mcp-registry.js +346 -0
- package/src/lib/memory-manager.js +336 -0
- package/src/lib/multimodal.js +330 -0
- package/src/lib/nl-programming.js +341 -0
- package/src/lib/nostr-bridge.js +336 -0
- package/src/lib/note-versioning.js +339 -0
- package/src/lib/org-manager.js +336 -0
- package/src/lib/p2p-manager.js +341 -0
- package/src/lib/perception.js +346 -0
- package/src/lib/permanent-memory.js +327 -0
- package/src/lib/plugin-ecosystem.js +346 -0
- package/src/lib/pqc-manager.js +346 -0
- package/src/lib/protocol-fusion.js +338 -0
- package/src/lib/quantization.js +337 -0
- package/src/lib/response-cache.js +333 -0
- package/src/lib/scim-manager.js +346 -0
- package/src/lib/session-manager.js +334 -0
- package/src/lib/skill-loader.js +334 -0
- package/src/lib/social-manager.js +330 -0
- package/src/lib/sso-manager.js +340 -0
- package/src/lib/sync-manager.js +336 -0
- package/src/lib/tech-learning-engine.js +341 -0
- package/src/lib/tenant-saas.js +341 -0
- package/src/lib/threat-intel.js +330 -0
- package/src/lib/token-tracker.js +336 -0
- package/src/lib/trust-security.js +343 -0
- package/src/lib/ueba.js +340 -0
- package/src/lib/universal-runtime.js +330 -0
- package/src/lib/wallet-manager.js +336 -0
- package/src/lib/workflow-engine.js +330 -0
|
@@ -872,3 +872,335 @@ export function _resetStateV2() {
|
|
|
872
872
|
_adAdrStaleMs = AD_DEFAULT_ADR_STALE_MS;
|
|
873
873
|
_adSessionStuckMs = AD_DEFAULT_SESSION_STUCK_MS;
|
|
874
874
|
}
|
|
875
|
+
|
|
876
|
+
// =====================================================================
|
|
877
|
+
// autonomous-developer V2 governance overlay (iter24)
|
|
878
|
+
// =====================================================================
|
|
879
|
+
export const DEVGOV_PROFILE_MATURITY_V2 = Object.freeze({
|
|
880
|
+
PENDING: "pending",
|
|
881
|
+
ACTIVE: "active",
|
|
882
|
+
PAUSED: "paused",
|
|
883
|
+
ARCHIVED: "archived",
|
|
884
|
+
});
|
|
885
|
+
export const DEVGOV_RUN_LIFECYCLE_V2 = Object.freeze({
|
|
886
|
+
QUEUED: "queued",
|
|
887
|
+
DEVELOPING: "developing",
|
|
888
|
+
SHIPPED: "shipped",
|
|
889
|
+
FAILED: "failed",
|
|
890
|
+
CANCELLED: "cancelled",
|
|
891
|
+
});
|
|
892
|
+
const _devgovPTrans = new Map([
|
|
893
|
+
[
|
|
894
|
+
DEVGOV_PROFILE_MATURITY_V2.PENDING,
|
|
895
|
+
new Set([
|
|
896
|
+
DEVGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
897
|
+
DEVGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
898
|
+
]),
|
|
899
|
+
],
|
|
900
|
+
[
|
|
901
|
+
DEVGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
902
|
+
new Set([
|
|
903
|
+
DEVGOV_PROFILE_MATURITY_V2.PAUSED,
|
|
904
|
+
DEVGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
905
|
+
]),
|
|
906
|
+
],
|
|
907
|
+
[
|
|
908
|
+
DEVGOV_PROFILE_MATURITY_V2.PAUSED,
|
|
909
|
+
new Set([
|
|
910
|
+
DEVGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
911
|
+
DEVGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
912
|
+
]),
|
|
913
|
+
],
|
|
914
|
+
[DEVGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
|
|
915
|
+
]);
|
|
916
|
+
const _devgovPTerminal = new Set([DEVGOV_PROFILE_MATURITY_V2.ARCHIVED]);
|
|
917
|
+
const _devgovJTrans = new Map([
|
|
918
|
+
[
|
|
919
|
+
DEVGOV_RUN_LIFECYCLE_V2.QUEUED,
|
|
920
|
+
new Set([
|
|
921
|
+
DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING,
|
|
922
|
+
DEVGOV_RUN_LIFECYCLE_V2.CANCELLED,
|
|
923
|
+
]),
|
|
924
|
+
],
|
|
925
|
+
[
|
|
926
|
+
DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING,
|
|
927
|
+
new Set([
|
|
928
|
+
DEVGOV_RUN_LIFECYCLE_V2.SHIPPED,
|
|
929
|
+
DEVGOV_RUN_LIFECYCLE_V2.FAILED,
|
|
930
|
+
DEVGOV_RUN_LIFECYCLE_V2.CANCELLED,
|
|
931
|
+
]),
|
|
932
|
+
],
|
|
933
|
+
[DEVGOV_RUN_LIFECYCLE_V2.SHIPPED, new Set()],
|
|
934
|
+
[DEVGOV_RUN_LIFECYCLE_V2.FAILED, new Set()],
|
|
935
|
+
[DEVGOV_RUN_LIFECYCLE_V2.CANCELLED, new Set()],
|
|
936
|
+
]);
|
|
937
|
+
const _devgovPsV2 = new Map();
|
|
938
|
+
const _devgovJsV2 = new Map();
|
|
939
|
+
let _devgovMaxActive = 6,
|
|
940
|
+
_devgovMaxPending = 15,
|
|
941
|
+
_devgovIdleMs = 30 * 24 * 60 * 60 * 1000,
|
|
942
|
+
_devgovStuckMs = 60 * 1000;
|
|
943
|
+
function _devgovPos(n, label) {
|
|
944
|
+
const v = Math.floor(Number(n));
|
|
945
|
+
if (!Number.isFinite(v) || v <= 0)
|
|
946
|
+
throw new Error(`${label} must be positive integer`);
|
|
947
|
+
return v;
|
|
948
|
+
}
|
|
949
|
+
function _devgovCheckP(from, to) {
|
|
950
|
+
const a = _devgovPTrans.get(from);
|
|
951
|
+
if (!a || !a.has(to))
|
|
952
|
+
throw new Error(`invalid devgov profile transition ${from} → ${to}`);
|
|
953
|
+
}
|
|
954
|
+
function _devgovCheckJ(from, to) {
|
|
955
|
+
const a = _devgovJTrans.get(from);
|
|
956
|
+
if (!a || !a.has(to))
|
|
957
|
+
throw new Error(`invalid devgov run transition ${from} → ${to}`);
|
|
958
|
+
}
|
|
959
|
+
function _devgovCountActive(owner) {
|
|
960
|
+
let c = 0;
|
|
961
|
+
for (const p of _devgovPsV2.values())
|
|
962
|
+
if (p.owner === owner && p.status === DEVGOV_PROFILE_MATURITY_V2.ACTIVE)
|
|
963
|
+
c++;
|
|
964
|
+
return c;
|
|
965
|
+
}
|
|
966
|
+
function _devgovCountPending(profileId) {
|
|
967
|
+
let c = 0;
|
|
968
|
+
for (const j of _devgovJsV2.values())
|
|
969
|
+
if (
|
|
970
|
+
j.profileId === profileId &&
|
|
971
|
+
(j.status === DEVGOV_RUN_LIFECYCLE_V2.QUEUED ||
|
|
972
|
+
j.status === DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING)
|
|
973
|
+
)
|
|
974
|
+
c++;
|
|
975
|
+
return c;
|
|
976
|
+
}
|
|
977
|
+
export function setMaxActiveDevgovProfilesPerOwnerV2(n) {
|
|
978
|
+
_devgovMaxActive = _devgovPos(n, "maxActiveDevgovProfilesPerOwner");
|
|
979
|
+
}
|
|
980
|
+
export function getMaxActiveDevgovProfilesPerOwnerV2() {
|
|
981
|
+
return _devgovMaxActive;
|
|
982
|
+
}
|
|
983
|
+
export function setMaxPendingDevgovRunsPerProfileV2(n) {
|
|
984
|
+
_devgovMaxPending = _devgovPos(n, "maxPendingDevgovRunsPerProfile");
|
|
985
|
+
}
|
|
986
|
+
export function getMaxPendingDevgovRunsPerProfileV2() {
|
|
987
|
+
return _devgovMaxPending;
|
|
988
|
+
}
|
|
989
|
+
export function setDevgovProfileIdleMsV2(n) {
|
|
990
|
+
_devgovIdleMs = _devgovPos(n, "devgovProfileIdleMs");
|
|
991
|
+
}
|
|
992
|
+
export function getDevgovProfileIdleMsV2() {
|
|
993
|
+
return _devgovIdleMs;
|
|
994
|
+
}
|
|
995
|
+
export function setDevgovRunStuckMsV2(n) {
|
|
996
|
+
_devgovStuckMs = _devgovPos(n, "devgovRunStuckMs");
|
|
997
|
+
}
|
|
998
|
+
export function getDevgovRunStuckMsV2() {
|
|
999
|
+
return _devgovStuckMs;
|
|
1000
|
+
}
|
|
1001
|
+
export function _resetStateAutonomousDeveloperGovV2() {
|
|
1002
|
+
_devgovPsV2.clear();
|
|
1003
|
+
_devgovJsV2.clear();
|
|
1004
|
+
_devgovMaxActive = 6;
|
|
1005
|
+
_devgovMaxPending = 15;
|
|
1006
|
+
_devgovIdleMs = 30 * 24 * 60 * 60 * 1000;
|
|
1007
|
+
_devgovStuckMs = 60 * 1000;
|
|
1008
|
+
}
|
|
1009
|
+
export function registerDevgovProfileV2({ id, owner, level, metadata } = {}) {
|
|
1010
|
+
if (!id || !owner) throw new Error("id and owner required");
|
|
1011
|
+
if (_devgovPsV2.has(id))
|
|
1012
|
+
throw new Error(`devgov profile ${id} already exists`);
|
|
1013
|
+
const now = Date.now();
|
|
1014
|
+
const p = {
|
|
1015
|
+
id,
|
|
1016
|
+
owner,
|
|
1017
|
+
level: level || "assist",
|
|
1018
|
+
status: DEVGOV_PROFILE_MATURITY_V2.PENDING,
|
|
1019
|
+
createdAt: now,
|
|
1020
|
+
updatedAt: now,
|
|
1021
|
+
lastTouchedAt: now,
|
|
1022
|
+
activatedAt: null,
|
|
1023
|
+
archivedAt: null,
|
|
1024
|
+
metadata: { ...(metadata || {}) },
|
|
1025
|
+
};
|
|
1026
|
+
_devgovPsV2.set(id, p);
|
|
1027
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1028
|
+
}
|
|
1029
|
+
export function activateDevgovProfileV2(id) {
|
|
1030
|
+
const p = _devgovPsV2.get(id);
|
|
1031
|
+
if (!p) throw new Error(`devgov profile ${id} not found`);
|
|
1032
|
+
const isInitial = p.status === DEVGOV_PROFILE_MATURITY_V2.PENDING;
|
|
1033
|
+
_devgovCheckP(p.status, DEVGOV_PROFILE_MATURITY_V2.ACTIVE);
|
|
1034
|
+
if (isInitial && _devgovCountActive(p.owner) >= _devgovMaxActive)
|
|
1035
|
+
throw new Error(`max active devgov profiles for owner ${p.owner} reached`);
|
|
1036
|
+
const now = Date.now();
|
|
1037
|
+
p.status = DEVGOV_PROFILE_MATURITY_V2.ACTIVE;
|
|
1038
|
+
p.updatedAt = now;
|
|
1039
|
+
p.lastTouchedAt = now;
|
|
1040
|
+
if (!p.activatedAt) p.activatedAt = now;
|
|
1041
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1042
|
+
}
|
|
1043
|
+
export function pauseDevgovProfileV2(id) {
|
|
1044
|
+
const p = _devgovPsV2.get(id);
|
|
1045
|
+
if (!p) throw new Error(`devgov profile ${id} not found`);
|
|
1046
|
+
_devgovCheckP(p.status, DEVGOV_PROFILE_MATURITY_V2.PAUSED);
|
|
1047
|
+
p.status = DEVGOV_PROFILE_MATURITY_V2.PAUSED;
|
|
1048
|
+
p.updatedAt = Date.now();
|
|
1049
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1050
|
+
}
|
|
1051
|
+
export function archiveDevgovProfileV2(id) {
|
|
1052
|
+
const p = _devgovPsV2.get(id);
|
|
1053
|
+
if (!p) throw new Error(`devgov profile ${id} not found`);
|
|
1054
|
+
_devgovCheckP(p.status, DEVGOV_PROFILE_MATURITY_V2.ARCHIVED);
|
|
1055
|
+
const now = Date.now();
|
|
1056
|
+
p.status = DEVGOV_PROFILE_MATURITY_V2.ARCHIVED;
|
|
1057
|
+
p.updatedAt = now;
|
|
1058
|
+
if (!p.archivedAt) p.archivedAt = now;
|
|
1059
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1060
|
+
}
|
|
1061
|
+
export function touchDevgovProfileV2(id) {
|
|
1062
|
+
const p = _devgovPsV2.get(id);
|
|
1063
|
+
if (!p) throw new Error(`devgov profile ${id} not found`);
|
|
1064
|
+
if (_devgovPTerminal.has(p.status))
|
|
1065
|
+
throw new Error(`cannot touch terminal devgov profile ${id}`);
|
|
1066
|
+
const now = Date.now();
|
|
1067
|
+
p.lastTouchedAt = now;
|
|
1068
|
+
p.updatedAt = now;
|
|
1069
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1070
|
+
}
|
|
1071
|
+
export function getDevgovProfileV2(id) {
|
|
1072
|
+
const p = _devgovPsV2.get(id);
|
|
1073
|
+
if (!p) return null;
|
|
1074
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1075
|
+
}
|
|
1076
|
+
export function listDevgovProfilesV2() {
|
|
1077
|
+
return [..._devgovPsV2.values()].map((p) => ({
|
|
1078
|
+
...p,
|
|
1079
|
+
metadata: { ...p.metadata },
|
|
1080
|
+
}));
|
|
1081
|
+
}
|
|
1082
|
+
export function createDevgovRunV2({ id, profileId, goal, metadata } = {}) {
|
|
1083
|
+
if (!id || !profileId) throw new Error("id and profileId required");
|
|
1084
|
+
if (_devgovJsV2.has(id)) throw new Error(`devgov run ${id} already exists`);
|
|
1085
|
+
if (!_devgovPsV2.has(profileId))
|
|
1086
|
+
throw new Error(`devgov profile ${profileId} not found`);
|
|
1087
|
+
if (_devgovCountPending(profileId) >= _devgovMaxPending)
|
|
1088
|
+
throw new Error(`max pending devgov runs for profile ${profileId} reached`);
|
|
1089
|
+
const now = Date.now();
|
|
1090
|
+
const j = {
|
|
1091
|
+
id,
|
|
1092
|
+
profileId,
|
|
1093
|
+
goal: goal || "",
|
|
1094
|
+
status: DEVGOV_RUN_LIFECYCLE_V2.QUEUED,
|
|
1095
|
+
createdAt: now,
|
|
1096
|
+
updatedAt: now,
|
|
1097
|
+
startedAt: null,
|
|
1098
|
+
settledAt: null,
|
|
1099
|
+
metadata: { ...(metadata || {}) },
|
|
1100
|
+
};
|
|
1101
|
+
_devgovJsV2.set(id, j);
|
|
1102
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1103
|
+
}
|
|
1104
|
+
export function developingDevgovRunV2(id) {
|
|
1105
|
+
const j = _devgovJsV2.get(id);
|
|
1106
|
+
if (!j) throw new Error(`devgov run ${id} not found`);
|
|
1107
|
+
_devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING);
|
|
1108
|
+
const now = Date.now();
|
|
1109
|
+
j.status = DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING;
|
|
1110
|
+
j.updatedAt = now;
|
|
1111
|
+
if (!j.startedAt) j.startedAt = now;
|
|
1112
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1113
|
+
}
|
|
1114
|
+
export function completeRunDevgovV2(id) {
|
|
1115
|
+
const j = _devgovJsV2.get(id);
|
|
1116
|
+
if (!j) throw new Error(`devgov run ${id} not found`);
|
|
1117
|
+
_devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.SHIPPED);
|
|
1118
|
+
const now = Date.now();
|
|
1119
|
+
j.status = DEVGOV_RUN_LIFECYCLE_V2.SHIPPED;
|
|
1120
|
+
j.updatedAt = now;
|
|
1121
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1122
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1123
|
+
}
|
|
1124
|
+
export function failDevgovRunV2(id, reason) {
|
|
1125
|
+
const j = _devgovJsV2.get(id);
|
|
1126
|
+
if (!j) throw new Error(`devgov run ${id} not found`);
|
|
1127
|
+
_devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.FAILED);
|
|
1128
|
+
const now = Date.now();
|
|
1129
|
+
j.status = DEVGOV_RUN_LIFECYCLE_V2.FAILED;
|
|
1130
|
+
j.updatedAt = now;
|
|
1131
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1132
|
+
if (reason) j.metadata.failReason = String(reason);
|
|
1133
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1134
|
+
}
|
|
1135
|
+
export function cancelDevgovRunV2(id, reason) {
|
|
1136
|
+
const j = _devgovJsV2.get(id);
|
|
1137
|
+
if (!j) throw new Error(`devgov run ${id} not found`);
|
|
1138
|
+
_devgovCheckJ(j.status, DEVGOV_RUN_LIFECYCLE_V2.CANCELLED);
|
|
1139
|
+
const now = Date.now();
|
|
1140
|
+
j.status = DEVGOV_RUN_LIFECYCLE_V2.CANCELLED;
|
|
1141
|
+
j.updatedAt = now;
|
|
1142
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1143
|
+
if (reason) j.metadata.cancelReason = String(reason);
|
|
1144
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1145
|
+
}
|
|
1146
|
+
export function getDevgovRunV2(id) {
|
|
1147
|
+
const j = _devgovJsV2.get(id);
|
|
1148
|
+
if (!j) return null;
|
|
1149
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1150
|
+
}
|
|
1151
|
+
export function listDevgovRunsV2() {
|
|
1152
|
+
return [..._devgovJsV2.values()].map((j) => ({
|
|
1153
|
+
...j,
|
|
1154
|
+
metadata: { ...j.metadata },
|
|
1155
|
+
}));
|
|
1156
|
+
}
|
|
1157
|
+
export function autoPauseIdleDevgovProfilesV2({ now } = {}) {
|
|
1158
|
+
const t = now ?? Date.now();
|
|
1159
|
+
const flipped = [];
|
|
1160
|
+
for (const p of _devgovPsV2.values())
|
|
1161
|
+
if (
|
|
1162
|
+
p.status === DEVGOV_PROFILE_MATURITY_V2.ACTIVE &&
|
|
1163
|
+
t - p.lastTouchedAt >= _devgovIdleMs
|
|
1164
|
+
) {
|
|
1165
|
+
p.status = DEVGOV_PROFILE_MATURITY_V2.PAUSED;
|
|
1166
|
+
p.updatedAt = t;
|
|
1167
|
+
flipped.push(p.id);
|
|
1168
|
+
}
|
|
1169
|
+
return { flipped, count: flipped.length };
|
|
1170
|
+
}
|
|
1171
|
+
export function autoFailStuckDevgovRunsV2({ now } = {}) {
|
|
1172
|
+
const t = now ?? Date.now();
|
|
1173
|
+
const flipped = [];
|
|
1174
|
+
for (const j of _devgovJsV2.values())
|
|
1175
|
+
if (
|
|
1176
|
+
j.status === DEVGOV_RUN_LIFECYCLE_V2.DEVELOPING &&
|
|
1177
|
+
j.startedAt != null &&
|
|
1178
|
+
t - j.startedAt >= _devgovStuckMs
|
|
1179
|
+
) {
|
|
1180
|
+
j.status = DEVGOV_RUN_LIFECYCLE_V2.FAILED;
|
|
1181
|
+
j.updatedAt = t;
|
|
1182
|
+
if (!j.settledAt) j.settledAt = t;
|
|
1183
|
+
j.metadata.failReason = "auto-fail-stuck";
|
|
1184
|
+
flipped.push(j.id);
|
|
1185
|
+
}
|
|
1186
|
+
return { flipped, count: flipped.length };
|
|
1187
|
+
}
|
|
1188
|
+
export function getAutonomousDeveloperGovStatsV2() {
|
|
1189
|
+
const profilesByStatus = {};
|
|
1190
|
+
for (const v of Object.values(DEVGOV_PROFILE_MATURITY_V2))
|
|
1191
|
+
profilesByStatus[v] = 0;
|
|
1192
|
+
for (const p of _devgovPsV2.values()) profilesByStatus[p.status]++;
|
|
1193
|
+
const runsByStatus = {};
|
|
1194
|
+
for (const v of Object.values(DEVGOV_RUN_LIFECYCLE_V2)) runsByStatus[v] = 0;
|
|
1195
|
+
for (const j of _devgovJsV2.values()) runsByStatus[j.status]++;
|
|
1196
|
+
return {
|
|
1197
|
+
totalDevgovProfilesV2: _devgovPsV2.size,
|
|
1198
|
+
totalDevgovRunsV2: _devgovJsV2.size,
|
|
1199
|
+
maxActiveDevgovProfilesPerOwner: _devgovMaxActive,
|
|
1200
|
+
maxPendingDevgovRunsPerProfile: _devgovMaxPending,
|
|
1201
|
+
devgovProfileIdleMs: _devgovIdleMs,
|
|
1202
|
+
devgovRunStuckMs: _devgovStuckMs,
|
|
1203
|
+
profilesByStatus,
|
|
1204
|
+
runsByStatus,
|
|
1205
|
+
};
|
|
1206
|
+
}
|
package/src/lib/bi-engine.js
CHANGED
|
@@ -974,3 +974,336 @@ export function getBiEngineStatsV2() {
|
|
|
974
974
|
queriesByStatus,
|
|
975
975
|
};
|
|
976
976
|
}
|
|
977
|
+
|
|
978
|
+
// =====================================================================
|
|
979
|
+
// bi-engine V2 governance overlay (iter21)
|
|
980
|
+
// =====================================================================
|
|
981
|
+
export const BIGOV_PROFILE_MATURITY_V2 = Object.freeze({
|
|
982
|
+
PENDING: "pending",
|
|
983
|
+
ACTIVE: "active",
|
|
984
|
+
STALE: "stale",
|
|
985
|
+
ARCHIVED: "archived",
|
|
986
|
+
});
|
|
987
|
+
export const BIGOV_QUERY_LIFECYCLE_V2 = Object.freeze({
|
|
988
|
+
QUEUED: "queued",
|
|
989
|
+
QUERYING: "querying",
|
|
990
|
+
QUERIED: "queried",
|
|
991
|
+
FAILED: "failed",
|
|
992
|
+
CANCELLED: "cancelled",
|
|
993
|
+
});
|
|
994
|
+
const _bigovPTrans = new Map([
|
|
995
|
+
[
|
|
996
|
+
BIGOV_PROFILE_MATURITY_V2.PENDING,
|
|
997
|
+
new Set([
|
|
998
|
+
BIGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
999
|
+
BIGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
1000
|
+
]),
|
|
1001
|
+
],
|
|
1002
|
+
[
|
|
1003
|
+
BIGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
1004
|
+
new Set([
|
|
1005
|
+
BIGOV_PROFILE_MATURITY_V2.STALE,
|
|
1006
|
+
BIGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
1007
|
+
]),
|
|
1008
|
+
],
|
|
1009
|
+
[
|
|
1010
|
+
BIGOV_PROFILE_MATURITY_V2.STALE,
|
|
1011
|
+
new Set([
|
|
1012
|
+
BIGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
1013
|
+
BIGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
1014
|
+
]),
|
|
1015
|
+
],
|
|
1016
|
+
[BIGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
|
|
1017
|
+
]);
|
|
1018
|
+
const _bigovPTerminal = new Set([BIGOV_PROFILE_MATURITY_V2.ARCHIVED]);
|
|
1019
|
+
const _bigovJTrans = new Map([
|
|
1020
|
+
[
|
|
1021
|
+
BIGOV_QUERY_LIFECYCLE_V2.QUEUED,
|
|
1022
|
+
new Set([
|
|
1023
|
+
BIGOV_QUERY_LIFECYCLE_V2.QUERYING,
|
|
1024
|
+
BIGOV_QUERY_LIFECYCLE_V2.CANCELLED,
|
|
1025
|
+
]),
|
|
1026
|
+
],
|
|
1027
|
+
[
|
|
1028
|
+
BIGOV_QUERY_LIFECYCLE_V2.QUERYING,
|
|
1029
|
+
new Set([
|
|
1030
|
+
BIGOV_QUERY_LIFECYCLE_V2.QUERIED,
|
|
1031
|
+
BIGOV_QUERY_LIFECYCLE_V2.FAILED,
|
|
1032
|
+
BIGOV_QUERY_LIFECYCLE_V2.CANCELLED,
|
|
1033
|
+
]),
|
|
1034
|
+
],
|
|
1035
|
+
[BIGOV_QUERY_LIFECYCLE_V2.QUERIED, new Set()],
|
|
1036
|
+
[BIGOV_QUERY_LIFECYCLE_V2.FAILED, new Set()],
|
|
1037
|
+
[BIGOV_QUERY_LIFECYCLE_V2.CANCELLED, new Set()],
|
|
1038
|
+
]);
|
|
1039
|
+
const _bigovPsV2 = new Map();
|
|
1040
|
+
const _bigovJsV2 = new Map();
|
|
1041
|
+
let _bigovMaxActive = 6,
|
|
1042
|
+
_bigovMaxPending = 15,
|
|
1043
|
+
_bigovIdleMs = 30 * 24 * 60 * 60 * 1000,
|
|
1044
|
+
_bigovStuckMs = 60 * 1000;
|
|
1045
|
+
function _bigovPos(n, label) {
|
|
1046
|
+
const v = Math.floor(Number(n));
|
|
1047
|
+
if (!Number.isFinite(v) || v <= 0)
|
|
1048
|
+
throw new Error(`${label} must be positive integer`);
|
|
1049
|
+
return v;
|
|
1050
|
+
}
|
|
1051
|
+
function _bigovCheckP(from, to) {
|
|
1052
|
+
const a = _bigovPTrans.get(from);
|
|
1053
|
+
if (!a || !a.has(to))
|
|
1054
|
+
throw new Error(`invalid bigov profile transition ${from} → ${to}`);
|
|
1055
|
+
}
|
|
1056
|
+
function _bigovCheckJ(from, to) {
|
|
1057
|
+
const a = _bigovJTrans.get(from);
|
|
1058
|
+
if (!a || !a.has(to))
|
|
1059
|
+
throw new Error(`invalid bigov query transition ${from} → ${to}`);
|
|
1060
|
+
}
|
|
1061
|
+
function _bigovCountActive(owner) {
|
|
1062
|
+
let c = 0;
|
|
1063
|
+
for (const p of _bigovPsV2.values())
|
|
1064
|
+
if (p.owner === owner && p.status === BIGOV_PROFILE_MATURITY_V2.ACTIVE) c++;
|
|
1065
|
+
return c;
|
|
1066
|
+
}
|
|
1067
|
+
function _bigovCountPending(profileId) {
|
|
1068
|
+
let c = 0;
|
|
1069
|
+
for (const j of _bigovJsV2.values())
|
|
1070
|
+
if (
|
|
1071
|
+
j.profileId === profileId &&
|
|
1072
|
+
(j.status === BIGOV_QUERY_LIFECYCLE_V2.QUEUED ||
|
|
1073
|
+
j.status === BIGOV_QUERY_LIFECYCLE_V2.QUERYING)
|
|
1074
|
+
)
|
|
1075
|
+
c++;
|
|
1076
|
+
return c;
|
|
1077
|
+
}
|
|
1078
|
+
export function setMaxActiveBigovProfilesPerOwnerV2(n) {
|
|
1079
|
+
_bigovMaxActive = _bigovPos(n, "maxActiveBigovProfilesPerOwner");
|
|
1080
|
+
}
|
|
1081
|
+
export function getMaxActiveBigovProfilesPerOwnerV2() {
|
|
1082
|
+
return _bigovMaxActive;
|
|
1083
|
+
}
|
|
1084
|
+
export function setMaxPendingBigovQuerysPerProfileV2(n) {
|
|
1085
|
+
_bigovMaxPending = _bigovPos(n, "maxPendingBigovQuerysPerProfile");
|
|
1086
|
+
}
|
|
1087
|
+
export function getMaxPendingBigovQuerysPerProfileV2() {
|
|
1088
|
+
return _bigovMaxPending;
|
|
1089
|
+
}
|
|
1090
|
+
export function setBigovProfileIdleMsV2(n) {
|
|
1091
|
+
_bigovIdleMs = _bigovPos(n, "bigovProfileIdleMs");
|
|
1092
|
+
}
|
|
1093
|
+
export function getBigovProfileIdleMsV2() {
|
|
1094
|
+
return _bigovIdleMs;
|
|
1095
|
+
}
|
|
1096
|
+
export function setBigovQueryStuckMsV2(n) {
|
|
1097
|
+
_bigovStuckMs = _bigovPos(n, "bigovQueryStuckMs");
|
|
1098
|
+
}
|
|
1099
|
+
export function getBigovQueryStuckMsV2() {
|
|
1100
|
+
return _bigovStuckMs;
|
|
1101
|
+
}
|
|
1102
|
+
export function _resetStateBiEngineGovV2() {
|
|
1103
|
+
_bigovPsV2.clear();
|
|
1104
|
+
_bigovJsV2.clear();
|
|
1105
|
+
_bigovMaxActive = 6;
|
|
1106
|
+
_bigovMaxPending = 15;
|
|
1107
|
+
_bigovIdleMs = 30 * 24 * 60 * 60 * 1000;
|
|
1108
|
+
_bigovStuckMs = 60 * 1000;
|
|
1109
|
+
}
|
|
1110
|
+
export function registerBigovProfileV2({ id, owner, dataset, metadata } = {}) {
|
|
1111
|
+
if (!id || !owner) throw new Error("id and owner required");
|
|
1112
|
+
if (_bigovPsV2.has(id)) throw new Error(`bigov profile ${id} already exists`);
|
|
1113
|
+
const now = Date.now();
|
|
1114
|
+
const p = {
|
|
1115
|
+
id,
|
|
1116
|
+
owner,
|
|
1117
|
+
dataset: dataset || "default",
|
|
1118
|
+
status: BIGOV_PROFILE_MATURITY_V2.PENDING,
|
|
1119
|
+
createdAt: now,
|
|
1120
|
+
updatedAt: now,
|
|
1121
|
+
lastTouchedAt: now,
|
|
1122
|
+
activatedAt: null,
|
|
1123
|
+
archivedAt: null,
|
|
1124
|
+
metadata: { ...(metadata || {}) },
|
|
1125
|
+
};
|
|
1126
|
+
_bigovPsV2.set(id, p);
|
|
1127
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1128
|
+
}
|
|
1129
|
+
export function activateBigovProfileV2(id) {
|
|
1130
|
+
const p = _bigovPsV2.get(id);
|
|
1131
|
+
if (!p) throw new Error(`bigov profile ${id} not found`);
|
|
1132
|
+
const isInitial = p.status === BIGOV_PROFILE_MATURITY_V2.PENDING;
|
|
1133
|
+
_bigovCheckP(p.status, BIGOV_PROFILE_MATURITY_V2.ACTIVE);
|
|
1134
|
+
if (isInitial && _bigovCountActive(p.owner) >= _bigovMaxActive)
|
|
1135
|
+
throw new Error(`max active bigov profiles for owner ${p.owner} reached`);
|
|
1136
|
+
const now = Date.now();
|
|
1137
|
+
p.status = BIGOV_PROFILE_MATURITY_V2.ACTIVE;
|
|
1138
|
+
p.updatedAt = now;
|
|
1139
|
+
p.lastTouchedAt = now;
|
|
1140
|
+
if (!p.activatedAt) p.activatedAt = now;
|
|
1141
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1142
|
+
}
|
|
1143
|
+
export function staleBigovProfileV2(id) {
|
|
1144
|
+
const p = _bigovPsV2.get(id);
|
|
1145
|
+
if (!p) throw new Error(`bigov profile ${id} not found`);
|
|
1146
|
+
_bigovCheckP(p.status, BIGOV_PROFILE_MATURITY_V2.STALE);
|
|
1147
|
+
p.status = BIGOV_PROFILE_MATURITY_V2.STALE;
|
|
1148
|
+
p.updatedAt = Date.now();
|
|
1149
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1150
|
+
}
|
|
1151
|
+
export function archiveBigovProfileV2(id) {
|
|
1152
|
+
const p = _bigovPsV2.get(id);
|
|
1153
|
+
if (!p) throw new Error(`bigov profile ${id} not found`);
|
|
1154
|
+
_bigovCheckP(p.status, BIGOV_PROFILE_MATURITY_V2.ARCHIVED);
|
|
1155
|
+
const now = Date.now();
|
|
1156
|
+
p.status = BIGOV_PROFILE_MATURITY_V2.ARCHIVED;
|
|
1157
|
+
p.updatedAt = now;
|
|
1158
|
+
if (!p.archivedAt) p.archivedAt = now;
|
|
1159
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1160
|
+
}
|
|
1161
|
+
export function touchBigovProfileV2(id) {
|
|
1162
|
+
const p = _bigovPsV2.get(id);
|
|
1163
|
+
if (!p) throw new Error(`bigov profile ${id} not found`);
|
|
1164
|
+
if (_bigovPTerminal.has(p.status))
|
|
1165
|
+
throw new Error(`cannot touch terminal bigov profile ${id}`);
|
|
1166
|
+
const now = Date.now();
|
|
1167
|
+
p.lastTouchedAt = now;
|
|
1168
|
+
p.updatedAt = now;
|
|
1169
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1170
|
+
}
|
|
1171
|
+
export function getBigovProfileV2(id) {
|
|
1172
|
+
const p = _bigovPsV2.get(id);
|
|
1173
|
+
if (!p) return null;
|
|
1174
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1175
|
+
}
|
|
1176
|
+
export function listBigovProfilesV2() {
|
|
1177
|
+
return [..._bigovPsV2.values()].map((p) => ({
|
|
1178
|
+
...p,
|
|
1179
|
+
metadata: { ...p.metadata },
|
|
1180
|
+
}));
|
|
1181
|
+
}
|
|
1182
|
+
export function createBigovQueryV2({ id, profileId, kpi, metadata } = {}) {
|
|
1183
|
+
if (!id || !profileId) throw new Error("id and profileId required");
|
|
1184
|
+
if (_bigovJsV2.has(id)) throw new Error(`bigov query ${id} already exists`);
|
|
1185
|
+
if (!_bigovPsV2.has(profileId))
|
|
1186
|
+
throw new Error(`bigov profile ${profileId} not found`);
|
|
1187
|
+
if (_bigovCountPending(profileId) >= _bigovMaxPending)
|
|
1188
|
+
throw new Error(
|
|
1189
|
+
`max pending bigov querys for profile ${profileId} reached`,
|
|
1190
|
+
);
|
|
1191
|
+
const now = Date.now();
|
|
1192
|
+
const j = {
|
|
1193
|
+
id,
|
|
1194
|
+
profileId,
|
|
1195
|
+
kpi: kpi || "",
|
|
1196
|
+
status: BIGOV_QUERY_LIFECYCLE_V2.QUEUED,
|
|
1197
|
+
createdAt: now,
|
|
1198
|
+
updatedAt: now,
|
|
1199
|
+
startedAt: null,
|
|
1200
|
+
settledAt: null,
|
|
1201
|
+
metadata: { ...(metadata || {}) },
|
|
1202
|
+
};
|
|
1203
|
+
_bigovJsV2.set(id, j);
|
|
1204
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1205
|
+
}
|
|
1206
|
+
export function queryingBigovQueryV2(id) {
|
|
1207
|
+
const j = _bigovJsV2.get(id);
|
|
1208
|
+
if (!j) throw new Error(`bigov query ${id} not found`);
|
|
1209
|
+
_bigovCheckJ(j.status, BIGOV_QUERY_LIFECYCLE_V2.QUERYING);
|
|
1210
|
+
const now = Date.now();
|
|
1211
|
+
j.status = BIGOV_QUERY_LIFECYCLE_V2.QUERYING;
|
|
1212
|
+
j.updatedAt = now;
|
|
1213
|
+
if (!j.startedAt) j.startedAt = now;
|
|
1214
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1215
|
+
}
|
|
1216
|
+
export function completeQueryBigovV2(id) {
|
|
1217
|
+
const j = _bigovJsV2.get(id);
|
|
1218
|
+
if (!j) throw new Error(`bigov query ${id} not found`);
|
|
1219
|
+
_bigovCheckJ(j.status, BIGOV_QUERY_LIFECYCLE_V2.QUERIED);
|
|
1220
|
+
const now = Date.now();
|
|
1221
|
+
j.status = BIGOV_QUERY_LIFECYCLE_V2.QUERIED;
|
|
1222
|
+
j.updatedAt = now;
|
|
1223
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1224
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1225
|
+
}
|
|
1226
|
+
export function failBigovQueryV2(id, reason) {
|
|
1227
|
+
const j = _bigovJsV2.get(id);
|
|
1228
|
+
if (!j) throw new Error(`bigov query ${id} not found`);
|
|
1229
|
+
_bigovCheckJ(j.status, BIGOV_QUERY_LIFECYCLE_V2.FAILED);
|
|
1230
|
+
const now = Date.now();
|
|
1231
|
+
j.status = BIGOV_QUERY_LIFECYCLE_V2.FAILED;
|
|
1232
|
+
j.updatedAt = now;
|
|
1233
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1234
|
+
if (reason) j.metadata.failReason = String(reason);
|
|
1235
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1236
|
+
}
|
|
1237
|
+
export function cancelBigovQueryV2(id, reason) {
|
|
1238
|
+
const j = _bigovJsV2.get(id);
|
|
1239
|
+
if (!j) throw new Error(`bigov query ${id} not found`);
|
|
1240
|
+
_bigovCheckJ(j.status, BIGOV_QUERY_LIFECYCLE_V2.CANCELLED);
|
|
1241
|
+
const now = Date.now();
|
|
1242
|
+
j.status = BIGOV_QUERY_LIFECYCLE_V2.CANCELLED;
|
|
1243
|
+
j.updatedAt = now;
|
|
1244
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1245
|
+
if (reason) j.metadata.cancelReason = String(reason);
|
|
1246
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1247
|
+
}
|
|
1248
|
+
export function getBigovQueryV2(id) {
|
|
1249
|
+
const j = _bigovJsV2.get(id);
|
|
1250
|
+
if (!j) return null;
|
|
1251
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1252
|
+
}
|
|
1253
|
+
export function listBigovQuerysV2() {
|
|
1254
|
+
return [..._bigovJsV2.values()].map((j) => ({
|
|
1255
|
+
...j,
|
|
1256
|
+
metadata: { ...j.metadata },
|
|
1257
|
+
}));
|
|
1258
|
+
}
|
|
1259
|
+
export function autoStaleIdleBigovProfilesV2({ now } = {}) {
|
|
1260
|
+
const t = now ?? Date.now();
|
|
1261
|
+
const flipped = [];
|
|
1262
|
+
for (const p of _bigovPsV2.values())
|
|
1263
|
+
if (
|
|
1264
|
+
p.status === BIGOV_PROFILE_MATURITY_V2.ACTIVE &&
|
|
1265
|
+
t - p.lastTouchedAt >= _bigovIdleMs
|
|
1266
|
+
) {
|
|
1267
|
+
p.status = BIGOV_PROFILE_MATURITY_V2.STALE;
|
|
1268
|
+
p.updatedAt = t;
|
|
1269
|
+
flipped.push(p.id);
|
|
1270
|
+
}
|
|
1271
|
+
return { flipped, count: flipped.length };
|
|
1272
|
+
}
|
|
1273
|
+
export function autoFailStuckBigovQuerysV2({ now } = {}) {
|
|
1274
|
+
const t = now ?? Date.now();
|
|
1275
|
+
const flipped = [];
|
|
1276
|
+
for (const j of _bigovJsV2.values())
|
|
1277
|
+
if (
|
|
1278
|
+
j.status === BIGOV_QUERY_LIFECYCLE_V2.QUERYING &&
|
|
1279
|
+
j.startedAt != null &&
|
|
1280
|
+
t - j.startedAt >= _bigovStuckMs
|
|
1281
|
+
) {
|
|
1282
|
+
j.status = BIGOV_QUERY_LIFECYCLE_V2.FAILED;
|
|
1283
|
+
j.updatedAt = t;
|
|
1284
|
+
if (!j.settledAt) j.settledAt = t;
|
|
1285
|
+
j.metadata.failReason = "auto-fail-stuck";
|
|
1286
|
+
flipped.push(j.id);
|
|
1287
|
+
}
|
|
1288
|
+
return { flipped, count: flipped.length };
|
|
1289
|
+
}
|
|
1290
|
+
export function getBiEngineGovStatsV2() {
|
|
1291
|
+
const profilesByStatus = {};
|
|
1292
|
+
for (const v of Object.values(BIGOV_PROFILE_MATURITY_V2))
|
|
1293
|
+
profilesByStatus[v] = 0;
|
|
1294
|
+
for (const p of _bigovPsV2.values()) profilesByStatus[p.status]++;
|
|
1295
|
+
const querysByStatus = {};
|
|
1296
|
+
for (const v of Object.values(BIGOV_QUERY_LIFECYCLE_V2))
|
|
1297
|
+
querysByStatus[v] = 0;
|
|
1298
|
+
for (const j of _bigovJsV2.values()) querysByStatus[j.status]++;
|
|
1299
|
+
return {
|
|
1300
|
+
totalBigovProfilesV2: _bigovPsV2.size,
|
|
1301
|
+
totalBigovQuerysV2: _bigovJsV2.size,
|
|
1302
|
+
maxActiveBigovProfilesPerOwner: _bigovMaxActive,
|
|
1303
|
+
maxPendingBigovQuerysPerProfile: _bigovMaxPending,
|
|
1304
|
+
bigovProfileIdleMs: _bigovIdleMs,
|
|
1305
|
+
bigovQueryStuckMs: _bigovStuckMs,
|
|
1306
|
+
profilesByStatus,
|
|
1307
|
+
querysByStatus,
|
|
1308
|
+
};
|
|
1309
|
+
}
|