chainlesschain 0.143.0 → 0.145.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/a2a.js +196 -28
- package/src/commands/activitypub.js +157 -27
- package/src/commands/agent.js +587 -103
- package/src/commands/audit.js +206 -0
- package/src/commands/bi.js +152 -27
- package/src/commands/bm25.js +111 -27
- package/src/commands/browse.js +190 -29
- package/src/commands/ccron.js +128 -28
- package/src/commands/chat.js +207 -0
- package/src/commands/compliance.js +414 -34
- package/src/commands/compt.js +127 -29
- package/src/commands/consol.js +8 -2
- package/src/commands/cowork.js +580 -34
- package/src/commands/crosschain.js +182 -28
- package/src/commands/dao.js +182 -28
- package/src/commands/dlp.js +172 -27
- package/src/commands/economy.js +205 -50
- package/src/commands/evolution.js +203 -50
- package/src/commands/evomap.js +182 -27
- package/src/commands/fflag.js +74 -22
- package/src/commands/git.js +177 -37
- package/src/commands/hardening.js +209 -0
- package/src/commands/hmemory.js +204 -50
- package/src/commands/incentive.js +209 -0
- package/src/commands/inference.js +170 -34
- package/src/commands/itbudget.js +149 -33
- package/src/commands/kg.js +206 -0
- package/src/commands/lowcode.js +195 -38
- package/src/commands/marketplace.js +206 -0
- package/src/commands/matrix.js +179 -27
- package/src/commands/mcpscaf.js +145 -33
- package/src/commands/meminj.js +145 -33
- package/src/commands/nostr.js +178 -27
- package/src/commands/orchestrate.js +217 -0
- package/src/commands/orchgov.js +144 -33
- package/src/commands/pdfp.js +109 -27
- package/src/commands/perf.js +169 -32
- package/src/commands/perm.js +144 -33
- package/src/commands/pipeline.js +207 -52
- package/src/commands/planmode.js +141 -32
- package/src/commands/privacy.js +203 -0
- package/src/commands/promcomp.js +111 -27
- package/src/commands/recommend.js +177 -34
- package/src/commands/reputation.js +208 -0
- package/src/commands/sandbox.js +206 -0
- package/src/commands/seshhook.js +145 -33
- package/src/commands/seshsearch.js +141 -33
- package/src/commands/seshtail.js +144 -33
- package/src/commands/seshu.js +152 -33
- package/src/commands/sganal.js +123 -29
- package/src/commands/siem.js +201 -34
- package/src/commands/sla.js +212 -0
- package/src/commands/slotfill.js +146 -33
- package/src/commands/social.js +157 -32
- package/src/commands/stress.js +206 -0
- package/src/commands/svccont.js +145 -33
- package/src/commands/terraform.js +206 -0
- package/src/commands/tms.js +171 -33
- package/src/commands/topiccls.js +146 -33
- package/src/commands/uprof.js +141 -32
- package/src/commands/vcheck.js +122 -28
- package/src/commands/webfetch.js +141 -32
- package/src/commands/zkp.js +184 -28
- package/src/index.js +40 -0
- package/src/lib/a2a-protocol.js +319 -51
- package/src/lib/activitypub-bridge.js +288 -50
- package/src/lib/agent-economy.js +304 -51
- package/src/lib/app-builder.js +279 -46
- package/src/lib/audit-logger.js +321 -0
- package/src/lib/autonomous-agent.js +284 -48
- package/src/lib/bi-engine.js +283 -49
- package/src/lib/bm25-search.js +301 -49
- package/src/lib/browser-automation.js +296 -49
- package/src/lib/chat-core.js +336 -0
- package/src/lib/claude-code-bridge.js +341 -0
- package/src/lib/compliance-framework-reporter.js +305 -51
- package/src/lib/compliance-manager.js +330 -0
- package/src/lib/compression-telemetry.js +301 -49
- package/src/lib/content-recommender.js +317 -52
- package/src/lib/cowork-cron.js +298 -49
- package/src/lib/cowork-learning.js +333 -0
- package/src/lib/cowork-task-runner.js +308 -51
- package/src/lib/cowork-workflow.js +327 -0
- package/src/lib/cross-chain.js +311 -51
- package/src/lib/dao-governance.js +280 -46
- package/src/lib/dlp-engine.js +287 -49
- package/src/lib/evolution-system.js +278 -47
- package/src/lib/evomap-manager.js +280 -46
- package/src/lib/execution-backend.js +294 -48
- package/src/lib/feature-flags.js +294 -49
- package/src/lib/git-integration.js +285 -47
- package/src/lib/hardening-manager.js +341 -0
- package/src/lib/hierarchical-memory.js +284 -48
- package/src/lib/inference-network.js +308 -51
- package/src/lib/iteration-budget.js +302 -50
- package/src/lib/knowledge-graph.js +333 -0
- package/src/lib/matrix-bridge.js +281 -47
- package/src/lib/mcp-scaffold.js +318 -54
- package/src/lib/memory-injection.js +288 -49
- package/src/lib/nostr-bridge.js +286 -49
- package/src/lib/orchestrator.js +293 -48
- package/src/lib/pdf-parser.js +298 -49
- package/src/lib/perf-tuning.js +309 -50
- package/src/lib/permission-engine.js +287 -49
- package/src/lib/pipeline-orchestrator.js +289 -49
- package/src/lib/plan-mode.js +298 -51
- package/src/lib/privacy-computing.js +335 -0
- package/src/lib/reputation-optimizer.js +340 -0
- package/src/lib/sandbox-v2.js +327 -0
- package/src/lib/service-container.js +313 -52
- package/src/lib/session-consolidator.js +296 -49
- package/src/lib/session-hooks.js +312 -53
- package/src/lib/session-search.js +304 -51
- package/src/lib/session-tail.js +288 -49
- package/src/lib/session-usage.js +298 -52
- package/src/lib/siem-exporter.js +298 -51
- package/src/lib/skill-marketplace.js +345 -0
- package/src/lib/sla-manager.js +341 -0
- package/src/lib/slot-filler.js +303 -51
- package/src/lib/social-graph-analytics.js +295 -49
- package/src/lib/social-graph.js +272 -49
- package/src/lib/stress-tester.js +342 -0
- package/src/lib/sub-agent-registry.js +302 -53
- package/src/lib/task-model-selector.js +302 -50
- package/src/lib/terraform-manager.js +333 -0
- package/src/lib/todo-manager.js +281 -47
- package/src/lib/token-incentive.js +341 -0
- package/src/lib/topic-classifier.js +297 -49
- package/src/lib/user-profile.js +294 -50
- package/src/lib/version-checker.js +304 -50
- package/src/lib/web-fetch.js +292 -51
- package/src/lib/zkp-engine.js +286 -49
|
@@ -804,3 +804,344 @@ export function _resetStateV2() {
|
|
|
804
804
|
_claimExpiryMs = TOKEN_DEFAULT_CLAIM_EXPIRY_MS;
|
|
805
805
|
_maxClaimAmount = TOKEN_DEFAULT_MAX_CLAIM_AMOUNT;
|
|
806
806
|
}
|
|
807
|
+
|
|
808
|
+
// =====================================================================
|
|
809
|
+
// token-incentive V2 governance overlay (iter17)
|
|
810
|
+
// =====================================================================
|
|
811
|
+
export const INCGOV_PROFILE_MATURITY_V2 = Object.freeze({
|
|
812
|
+
PENDING: "pending",
|
|
813
|
+
ACTIVE: "active",
|
|
814
|
+
PAUSED: "paused",
|
|
815
|
+
ARCHIVED: "archived",
|
|
816
|
+
});
|
|
817
|
+
export const INCGOV_PAYOUT_LIFECYCLE_V2 = Object.freeze({
|
|
818
|
+
QUEUED: "queued",
|
|
819
|
+
PROCESSING: "processing",
|
|
820
|
+
PAID: "paid",
|
|
821
|
+
FAILED: "failed",
|
|
822
|
+
CANCELLED: "cancelled",
|
|
823
|
+
});
|
|
824
|
+
const _incgovPTrans = new Map([
|
|
825
|
+
[
|
|
826
|
+
INCGOV_PROFILE_MATURITY_V2.PENDING,
|
|
827
|
+
new Set([
|
|
828
|
+
INCGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
829
|
+
INCGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
830
|
+
]),
|
|
831
|
+
],
|
|
832
|
+
[
|
|
833
|
+
INCGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
834
|
+
new Set([
|
|
835
|
+
INCGOV_PROFILE_MATURITY_V2.PAUSED,
|
|
836
|
+
INCGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
837
|
+
]),
|
|
838
|
+
],
|
|
839
|
+
[
|
|
840
|
+
INCGOV_PROFILE_MATURITY_V2.PAUSED,
|
|
841
|
+
new Set([
|
|
842
|
+
INCGOV_PROFILE_MATURITY_V2.ACTIVE,
|
|
843
|
+
INCGOV_PROFILE_MATURITY_V2.ARCHIVED,
|
|
844
|
+
]),
|
|
845
|
+
],
|
|
846
|
+
[INCGOV_PROFILE_MATURITY_V2.ARCHIVED, new Set()],
|
|
847
|
+
]);
|
|
848
|
+
const _incgovPTerminal = new Set([INCGOV_PROFILE_MATURITY_V2.ARCHIVED]);
|
|
849
|
+
const _incgovJTrans = new Map([
|
|
850
|
+
[
|
|
851
|
+
INCGOV_PAYOUT_LIFECYCLE_V2.QUEUED,
|
|
852
|
+
new Set([
|
|
853
|
+
INCGOV_PAYOUT_LIFECYCLE_V2.PROCESSING,
|
|
854
|
+
INCGOV_PAYOUT_LIFECYCLE_V2.CANCELLED,
|
|
855
|
+
]),
|
|
856
|
+
],
|
|
857
|
+
[
|
|
858
|
+
INCGOV_PAYOUT_LIFECYCLE_V2.PROCESSING,
|
|
859
|
+
new Set([
|
|
860
|
+
INCGOV_PAYOUT_LIFECYCLE_V2.PAID,
|
|
861
|
+
INCGOV_PAYOUT_LIFECYCLE_V2.FAILED,
|
|
862
|
+
INCGOV_PAYOUT_LIFECYCLE_V2.CANCELLED,
|
|
863
|
+
]),
|
|
864
|
+
],
|
|
865
|
+
[INCGOV_PAYOUT_LIFECYCLE_V2.PAID, new Set()],
|
|
866
|
+
[INCGOV_PAYOUT_LIFECYCLE_V2.FAILED, new Set()],
|
|
867
|
+
[INCGOV_PAYOUT_LIFECYCLE_V2.CANCELLED, new Set()],
|
|
868
|
+
]);
|
|
869
|
+
const _incgovPsV2 = new Map();
|
|
870
|
+
const _incgovJsV2 = new Map();
|
|
871
|
+
let _incgovMaxActive = 10,
|
|
872
|
+
_incgovMaxPending = 30,
|
|
873
|
+
_incgovIdleMs = 30 * 24 * 60 * 60 * 1000,
|
|
874
|
+
_incgovStuckMs = 60 * 1000;
|
|
875
|
+
function _incgovPos(n, label) {
|
|
876
|
+
const v = Math.floor(Number(n));
|
|
877
|
+
if (!Number.isFinite(v) || v <= 0)
|
|
878
|
+
throw new Error(`${label} must be positive integer`);
|
|
879
|
+
return v;
|
|
880
|
+
}
|
|
881
|
+
function _incgovCheckP(from, to) {
|
|
882
|
+
const a = _incgovPTrans.get(from);
|
|
883
|
+
if (!a || !a.has(to))
|
|
884
|
+
throw new Error(`invalid incgov profile transition ${from} → ${to}`);
|
|
885
|
+
}
|
|
886
|
+
function _incgovCheckJ(from, to) {
|
|
887
|
+
const a = _incgovJTrans.get(from);
|
|
888
|
+
if (!a || !a.has(to))
|
|
889
|
+
throw new Error(`invalid incgov payout transition ${from} → ${to}`);
|
|
890
|
+
}
|
|
891
|
+
function _incgovCountActive(owner) {
|
|
892
|
+
let c = 0;
|
|
893
|
+
for (const p of _incgovPsV2.values())
|
|
894
|
+
if (p.owner === owner && p.status === INCGOV_PROFILE_MATURITY_V2.ACTIVE)
|
|
895
|
+
c++;
|
|
896
|
+
return c;
|
|
897
|
+
}
|
|
898
|
+
function _incgovCountPending(profileId) {
|
|
899
|
+
let c = 0;
|
|
900
|
+
for (const j of _incgovJsV2.values())
|
|
901
|
+
if (
|
|
902
|
+
j.profileId === profileId &&
|
|
903
|
+
(j.status === INCGOV_PAYOUT_LIFECYCLE_V2.QUEUED ||
|
|
904
|
+
j.status === INCGOV_PAYOUT_LIFECYCLE_V2.PROCESSING)
|
|
905
|
+
)
|
|
906
|
+
c++;
|
|
907
|
+
return c;
|
|
908
|
+
}
|
|
909
|
+
export function setMaxActiveIncgovProfilesPerOwnerV2(n) {
|
|
910
|
+
_incgovMaxActive = _incgovPos(n, "maxActiveIncgovProfilesPerOwner");
|
|
911
|
+
}
|
|
912
|
+
export function getMaxActiveIncgovProfilesPerOwnerV2() {
|
|
913
|
+
return _incgovMaxActive;
|
|
914
|
+
}
|
|
915
|
+
export function setMaxPendingIncgovPayoutsPerProfileV2(n) {
|
|
916
|
+
_incgovMaxPending = _incgovPos(n, "maxPendingIncgovPayoutsPerProfile");
|
|
917
|
+
}
|
|
918
|
+
export function getMaxPendingIncgovPayoutsPerProfileV2() {
|
|
919
|
+
return _incgovMaxPending;
|
|
920
|
+
}
|
|
921
|
+
export function setIncgovProfileIdleMsV2(n) {
|
|
922
|
+
_incgovIdleMs = _incgovPos(n, "incgovProfileIdleMs");
|
|
923
|
+
}
|
|
924
|
+
export function getIncgovProfileIdleMsV2() {
|
|
925
|
+
return _incgovIdleMs;
|
|
926
|
+
}
|
|
927
|
+
export function setIncgovPayoutStuckMsV2(n) {
|
|
928
|
+
_incgovStuckMs = _incgovPos(n, "incgovPayoutStuckMs");
|
|
929
|
+
}
|
|
930
|
+
export function getIncgovPayoutStuckMsV2() {
|
|
931
|
+
return _incgovStuckMs;
|
|
932
|
+
}
|
|
933
|
+
export function _resetStateTokenIncentiveV2() {
|
|
934
|
+
_incgovPsV2.clear();
|
|
935
|
+
_incgovJsV2.clear();
|
|
936
|
+
_incgovMaxActive = 10;
|
|
937
|
+
_incgovMaxPending = 30;
|
|
938
|
+
_incgovIdleMs = 30 * 24 * 60 * 60 * 1000;
|
|
939
|
+
_incgovStuckMs = 60 * 1000;
|
|
940
|
+
}
|
|
941
|
+
export function registerIncgovProfileV2({ id, owner, token, metadata } = {}) {
|
|
942
|
+
if (!id || !owner) throw new Error("id and owner required");
|
|
943
|
+
if (_incgovPsV2.has(id))
|
|
944
|
+
throw new Error(`incgov profile ${id} already exists`);
|
|
945
|
+
const now = Date.now();
|
|
946
|
+
const p = {
|
|
947
|
+
id,
|
|
948
|
+
owner,
|
|
949
|
+
token: token || "CLC",
|
|
950
|
+
status: INCGOV_PROFILE_MATURITY_V2.PENDING,
|
|
951
|
+
createdAt: now,
|
|
952
|
+
updatedAt: now,
|
|
953
|
+
lastTouchedAt: now,
|
|
954
|
+
activatedAt: null,
|
|
955
|
+
archivedAt: null,
|
|
956
|
+
metadata: { ...(metadata || {}) },
|
|
957
|
+
};
|
|
958
|
+
_incgovPsV2.set(id, p);
|
|
959
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
960
|
+
}
|
|
961
|
+
export function activateIncgovProfileV2(id) {
|
|
962
|
+
const p = _incgovPsV2.get(id);
|
|
963
|
+
if (!p) throw new Error(`incgov profile ${id} not found`);
|
|
964
|
+
const isInitial = p.status === INCGOV_PROFILE_MATURITY_V2.PENDING;
|
|
965
|
+
_incgovCheckP(p.status, INCGOV_PROFILE_MATURITY_V2.ACTIVE);
|
|
966
|
+
if (isInitial && _incgovCountActive(p.owner) >= _incgovMaxActive)
|
|
967
|
+
throw new Error(`max active incgov profiles for owner ${p.owner} reached`);
|
|
968
|
+
const now = Date.now();
|
|
969
|
+
p.status = INCGOV_PROFILE_MATURITY_V2.ACTIVE;
|
|
970
|
+
p.updatedAt = now;
|
|
971
|
+
p.lastTouchedAt = now;
|
|
972
|
+
if (!p.activatedAt) p.activatedAt = now;
|
|
973
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
974
|
+
}
|
|
975
|
+
export function pauseIncgovProfileV2(id) {
|
|
976
|
+
const p = _incgovPsV2.get(id);
|
|
977
|
+
if (!p) throw new Error(`incgov profile ${id} not found`);
|
|
978
|
+
_incgovCheckP(p.status, INCGOV_PROFILE_MATURITY_V2.PAUSED);
|
|
979
|
+
p.status = INCGOV_PROFILE_MATURITY_V2.PAUSED;
|
|
980
|
+
p.updatedAt = Date.now();
|
|
981
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
982
|
+
}
|
|
983
|
+
export function archiveIncgovProfileV2(id) {
|
|
984
|
+
const p = _incgovPsV2.get(id);
|
|
985
|
+
if (!p) throw new Error(`incgov profile ${id} not found`);
|
|
986
|
+
_incgovCheckP(p.status, INCGOV_PROFILE_MATURITY_V2.ARCHIVED);
|
|
987
|
+
const now = Date.now();
|
|
988
|
+
p.status = INCGOV_PROFILE_MATURITY_V2.ARCHIVED;
|
|
989
|
+
p.updatedAt = now;
|
|
990
|
+
if (!p.archivedAt) p.archivedAt = now;
|
|
991
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
992
|
+
}
|
|
993
|
+
export function touchIncgovProfileV2(id) {
|
|
994
|
+
const p = _incgovPsV2.get(id);
|
|
995
|
+
if (!p) throw new Error(`incgov profile ${id} not found`);
|
|
996
|
+
if (_incgovPTerminal.has(p.status))
|
|
997
|
+
throw new Error(`cannot touch terminal incgov profile ${id}`);
|
|
998
|
+
const now = Date.now();
|
|
999
|
+
p.lastTouchedAt = now;
|
|
1000
|
+
p.updatedAt = now;
|
|
1001
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1002
|
+
}
|
|
1003
|
+
export function getIncgovProfileV2(id) {
|
|
1004
|
+
const p = _incgovPsV2.get(id);
|
|
1005
|
+
if (!p) return null;
|
|
1006
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1007
|
+
}
|
|
1008
|
+
export function listIncgovProfilesV2() {
|
|
1009
|
+
return [..._incgovPsV2.values()].map((p) => ({
|
|
1010
|
+
...p,
|
|
1011
|
+
metadata: { ...p.metadata },
|
|
1012
|
+
}));
|
|
1013
|
+
}
|
|
1014
|
+
export function createIncgovPayoutV2({
|
|
1015
|
+
id,
|
|
1016
|
+
profileId,
|
|
1017
|
+
recipient,
|
|
1018
|
+
metadata,
|
|
1019
|
+
} = {}) {
|
|
1020
|
+
if (!id || !profileId) throw new Error("id and profileId required");
|
|
1021
|
+
if (_incgovJsV2.has(id))
|
|
1022
|
+
throw new Error(`incgov payout ${id} already exists`);
|
|
1023
|
+
if (!_incgovPsV2.has(profileId))
|
|
1024
|
+
throw new Error(`incgov profile ${profileId} not found`);
|
|
1025
|
+
if (_incgovCountPending(profileId) >= _incgovMaxPending)
|
|
1026
|
+
throw new Error(
|
|
1027
|
+
`max pending incgov payouts for profile ${profileId} reached`,
|
|
1028
|
+
);
|
|
1029
|
+
const now = Date.now();
|
|
1030
|
+
const j = {
|
|
1031
|
+
id,
|
|
1032
|
+
profileId,
|
|
1033
|
+
recipient: recipient || "",
|
|
1034
|
+
status: INCGOV_PAYOUT_LIFECYCLE_V2.QUEUED,
|
|
1035
|
+
createdAt: now,
|
|
1036
|
+
updatedAt: now,
|
|
1037
|
+
startedAt: null,
|
|
1038
|
+
settledAt: null,
|
|
1039
|
+
metadata: { ...(metadata || {}) },
|
|
1040
|
+
};
|
|
1041
|
+
_incgovJsV2.set(id, j);
|
|
1042
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1043
|
+
}
|
|
1044
|
+
export function processingIncgovPayoutV2(id) {
|
|
1045
|
+
const j = _incgovJsV2.get(id);
|
|
1046
|
+
if (!j) throw new Error(`incgov payout ${id} not found`);
|
|
1047
|
+
_incgovCheckJ(j.status, INCGOV_PAYOUT_LIFECYCLE_V2.PROCESSING);
|
|
1048
|
+
const now = Date.now();
|
|
1049
|
+
j.status = INCGOV_PAYOUT_LIFECYCLE_V2.PROCESSING;
|
|
1050
|
+
j.updatedAt = now;
|
|
1051
|
+
if (!j.startedAt) j.startedAt = now;
|
|
1052
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1053
|
+
}
|
|
1054
|
+
export function completePayoutIncgovV2(id) {
|
|
1055
|
+
const j = _incgovJsV2.get(id);
|
|
1056
|
+
if (!j) throw new Error(`incgov payout ${id} not found`);
|
|
1057
|
+
_incgovCheckJ(j.status, INCGOV_PAYOUT_LIFECYCLE_V2.PAID);
|
|
1058
|
+
const now = Date.now();
|
|
1059
|
+
j.status = INCGOV_PAYOUT_LIFECYCLE_V2.PAID;
|
|
1060
|
+
j.updatedAt = now;
|
|
1061
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1062
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1063
|
+
}
|
|
1064
|
+
export function failIncgovPayoutV2(id, reason) {
|
|
1065
|
+
const j = _incgovJsV2.get(id);
|
|
1066
|
+
if (!j) throw new Error(`incgov payout ${id} not found`);
|
|
1067
|
+
_incgovCheckJ(j.status, INCGOV_PAYOUT_LIFECYCLE_V2.FAILED);
|
|
1068
|
+
const now = Date.now();
|
|
1069
|
+
j.status = INCGOV_PAYOUT_LIFECYCLE_V2.FAILED;
|
|
1070
|
+
j.updatedAt = now;
|
|
1071
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1072
|
+
if (reason) j.metadata.failReason = String(reason);
|
|
1073
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1074
|
+
}
|
|
1075
|
+
export function cancelIncgovPayoutV2(id, reason) {
|
|
1076
|
+
const j = _incgovJsV2.get(id);
|
|
1077
|
+
if (!j) throw new Error(`incgov payout ${id} not found`);
|
|
1078
|
+
_incgovCheckJ(j.status, INCGOV_PAYOUT_LIFECYCLE_V2.CANCELLED);
|
|
1079
|
+
const now = Date.now();
|
|
1080
|
+
j.status = INCGOV_PAYOUT_LIFECYCLE_V2.CANCELLED;
|
|
1081
|
+
j.updatedAt = now;
|
|
1082
|
+
if (!j.settledAt) j.settledAt = now;
|
|
1083
|
+
if (reason) j.metadata.cancelReason = String(reason);
|
|
1084
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1085
|
+
}
|
|
1086
|
+
export function getIncgovPayoutV2(id) {
|
|
1087
|
+
const j = _incgovJsV2.get(id);
|
|
1088
|
+
if (!j) return null;
|
|
1089
|
+
return { ...j, metadata: { ...j.metadata } };
|
|
1090
|
+
}
|
|
1091
|
+
export function listIncgovPayoutsV2() {
|
|
1092
|
+
return [..._incgovJsV2.values()].map((j) => ({
|
|
1093
|
+
...j,
|
|
1094
|
+
metadata: { ...j.metadata },
|
|
1095
|
+
}));
|
|
1096
|
+
}
|
|
1097
|
+
export function autoPauseIdleIncgovProfilesV2({ now } = {}) {
|
|
1098
|
+
const t = now ?? Date.now();
|
|
1099
|
+
const flipped = [];
|
|
1100
|
+
for (const p of _incgovPsV2.values())
|
|
1101
|
+
if (
|
|
1102
|
+
p.status === INCGOV_PROFILE_MATURITY_V2.ACTIVE &&
|
|
1103
|
+
t - p.lastTouchedAt >= _incgovIdleMs
|
|
1104
|
+
) {
|
|
1105
|
+
p.status = INCGOV_PROFILE_MATURITY_V2.PAUSED;
|
|
1106
|
+
p.updatedAt = t;
|
|
1107
|
+
flipped.push(p.id);
|
|
1108
|
+
}
|
|
1109
|
+
return { flipped, count: flipped.length };
|
|
1110
|
+
}
|
|
1111
|
+
export function autoFailStuckIncgovPayoutsV2({ now } = {}) {
|
|
1112
|
+
const t = now ?? Date.now();
|
|
1113
|
+
const flipped = [];
|
|
1114
|
+
for (const j of _incgovJsV2.values())
|
|
1115
|
+
if (
|
|
1116
|
+
j.status === INCGOV_PAYOUT_LIFECYCLE_V2.PROCESSING &&
|
|
1117
|
+
j.startedAt != null &&
|
|
1118
|
+
t - j.startedAt >= _incgovStuckMs
|
|
1119
|
+
) {
|
|
1120
|
+
j.status = INCGOV_PAYOUT_LIFECYCLE_V2.FAILED;
|
|
1121
|
+
j.updatedAt = t;
|
|
1122
|
+
if (!j.settledAt) j.settledAt = t;
|
|
1123
|
+
j.metadata.failReason = "auto-fail-stuck";
|
|
1124
|
+
flipped.push(j.id);
|
|
1125
|
+
}
|
|
1126
|
+
return { flipped, count: flipped.length };
|
|
1127
|
+
}
|
|
1128
|
+
export function getTokenIncentiveGovStatsV2() {
|
|
1129
|
+
const profilesByStatus = {};
|
|
1130
|
+
for (const v of Object.values(INCGOV_PROFILE_MATURITY_V2))
|
|
1131
|
+
profilesByStatus[v] = 0;
|
|
1132
|
+
for (const p of _incgovPsV2.values()) profilesByStatus[p.status]++;
|
|
1133
|
+
const payoutsByStatus = {};
|
|
1134
|
+
for (const v of Object.values(INCGOV_PAYOUT_LIFECYCLE_V2))
|
|
1135
|
+
payoutsByStatus[v] = 0;
|
|
1136
|
+
for (const j of _incgovJsV2.values()) payoutsByStatus[j.status]++;
|
|
1137
|
+
return {
|
|
1138
|
+
totalIncgovProfilesV2: _incgovPsV2.size,
|
|
1139
|
+
totalIncgovPayoutsV2: _incgovJsV2.size,
|
|
1140
|
+
maxActiveIncgovProfilesPerOwner: _incgovMaxActive,
|
|
1141
|
+
maxPendingIncgovPayoutsPerProfile: _incgovMaxPending,
|
|
1142
|
+
incgovProfileIdleMs: _incgovIdleMs,
|
|
1143
|
+
incgovPayoutStuckMs: _incgovStuckMs,
|
|
1144
|
+
profilesByStatus,
|
|
1145
|
+
payoutsByStatus,
|
|
1146
|
+
};
|
|
1147
|
+
}
|