chainlesschain 0.143.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/a2a.js +196 -28
- package/src/commands/activitypub.js +364 -27
- package/src/commands/agent-network.js +217 -0
- package/src/commands/agent.js +587 -103
- package/src/commands/audit.js +206 -0
- package/src/commands/automation.js +201 -0
- package/src/commands/bi.js +355 -27
- package/src/commands/bm25.js +111 -27
- package/src/commands/browse.js +403 -29
- package/src/commands/ccron.js +128 -28
- package/src/commands/chat.js +207 -0
- package/src/commands/codegen.js +207 -0
- package/src/commands/collab.js +211 -0
- package/src/commands/compliance.js +824 -34
- package/src/commands/compt.js +127 -29
- package/src/commands/consol.js +8 -2
- package/src/commands/cowork.js +783 -34
- package/src/commands/crosschain.js +182 -28
- package/src/commands/dao.js +182 -28
- 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 +385 -27
- package/src/commands/economy.js +205 -50
- package/src/commands/evolution.js +203 -50
- package/src/commands/evomap.js +387 -27
- package/src/commands/export.js +213 -0
- package/src/commands/federation.js +209 -0
- package/src/commands/fflag.js +74 -22
- package/src/commands/fusion.js +205 -0
- package/src/commands/git.js +177 -37
- package/src/commands/governance.js +209 -0
- package/src/commands/hardening.js +209 -0
- package/src/commands/hmemory.js +204 -50
- package/src/commands/hook.js +209 -0
- package/src/commands/import.js +209 -0
- package/src/commands/incentive.js +209 -0
- package/src/commands/inference.js +170 -34
- package/src/commands/infra.js +203 -0
- package/src/commands/instinct.js +209 -0
- package/src/commands/ipfs.js +207 -0
- package/src/commands/itbudget.js +149 -33
- package/src/commands/kg.js +206 -0
- package/src/commands/llm.js +217 -0
- package/src/commands/lowcode.js +195 -38
- package/src/commands/marketplace.js +206 -0
- package/src/commands/matrix.js +386 -27
- package/src/commands/mcp.js +217 -0
- package/src/commands/mcpscaf.js +145 -33
- package/src/commands/meminj.js +145 -33
- 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 +387 -27
- package/src/commands/note.js +205 -0
- package/src/commands/ops.js +219 -0
- package/src/commands/orchestrate.js +217 -0
- package/src/commands/orchgov.js +144 -33
- package/src/commands/org.js +209 -0
- package/src/commands/p2p.js +209 -0
- package/src/commands/pdfp.js +109 -27
- package/src/commands/perception.js +209 -0
- package/src/commands/perf.js +169 -32
- package/src/commands/perm.js +144 -33
- package/src/commands/permmem.js +203 -0
- package/src/commands/pipeline.js +207 -52
- package/src/commands/planmode.js +141 -32
- package/src/commands/plugin-ecosystem.js +209 -0
- package/src/commands/pqc.js +213 -0
- package/src/commands/privacy.js +203 -0
- package/src/commands/promcomp.js +111 -27
- package/src/commands/quantization.js +207 -0
- package/src/commands/rcache.js +205 -0
- package/src/commands/recommend.js +410 -34
- package/src/commands/reputation.js +208 -0
- package/src/commands/runtime.js +205 -0
- package/src/commands/sandbox.js +206 -0
- package/src/commands/scim.js +209 -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/session.js +209 -0
- package/src/commands/sganal.js +123 -29
- package/src/commands/siem.js +201 -34
- package/src/commands/skill.js +207 -0
- package/src/commands/sla.js +212 -0
- package/src/commands/slotfill.js +146 -33
- package/src/commands/social.js +358 -32
- package/src/commands/sso.js +209 -0
- package/src/commands/stress.js +206 -0
- package/src/commands/svccont.js +145 -33
- package/src/commands/sync.js +209 -0
- package/src/commands/tech.js +209 -0
- package/src/commands/tenant.js +217 -0
- package/src/commands/terraform.js +206 -0
- package/src/commands/tms.js +171 -33
- package/src/commands/tokens.js +209 -0
- package/src/commands/topiccls.js +146 -33
- package/src/commands/trust.js +217 -0
- package/src/commands/uprof.js +141 -32
- package/src/commands/vcheck.js +122 -28
- package/src/commands/wallet.js +209 -0
- package/src/commands/webfetch.js +141 -32
- package/src/commands/workflow.js +203 -0
- package/src/commands/zkp.js +184 -28
- package/src/index.js +180 -0
- package/src/lib/a2a-protocol.js +319 -51
- package/src/lib/activitypub-bridge.js +622 -50
- package/src/lib/agent-economy.js +304 -51
- package/src/lib/agent-network.js +341 -0
- package/src/lib/aiops.js +346 -0
- package/src/lib/app-builder.js +279 -46
- package/src/lib/audit-logger.js +321 -0
- package/src/lib/automation-engine.js +335 -0
- package/src/lib/autonomous-agent.js +284 -48
- package/src/lib/autonomous-developer.js +332 -0
- package/src/lib/bi-engine.js +616 -49
- package/src/lib/bm25-search.js +301 -49
- package/src/lib/browser-automation.js +630 -49
- package/src/lib/chat-core.js +336 -0
- package/src/lib/claude-code-bridge.js +341 -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/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-recommendation.js +351 -0
- 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-share.js +338 -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/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 +626 -49
- package/src/lib/evolution-system.js +278 -47
- package/src/lib/evomap-governance.js +334 -0
- 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/federation-hardening.js +340 -0
- 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/hook-manager.js +341 -0
- package/src/lib/inference-network.js +308 -51
- package/src/lib/instinct-manager.js +346 -0
- package/src/lib/ipfs-storage.js +334 -0
- package/src/lib/iteration-budget.js +302 -50
- package/src/lib/knowledge-exporter.js +341 -0
- package/src/lib/knowledge-graph.js +333 -0
- package/src/lib/knowledge-importer.js +341 -0
- package/src/lib/llm-providers.js +346 -0
- package/src/lib/matrix-bridge.js +620 -47
- package/src/lib/mcp-registry.js +346 -0
- package/src/lib/mcp-scaffold.js +318 -54
- package/src/lib/memory-injection.js +288 -49
- 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 +622 -49
- package/src/lib/note-versioning.js +339 -0
- package/src/lib/orchestrator.js +293 -48
- package/src/lib/org-manager.js +336 -0
- package/src/lib/p2p-manager.js +341 -0
- package/src/lib/pdf-parser.js +298 -49
- package/src/lib/perception.js +346 -0
- package/src/lib/perf-tuning.js +309 -50
- package/src/lib/permanent-memory.js +327 -0
- 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/plugin-ecosystem.js +346 -0
- package/src/lib/pqc-manager.js +346 -0
- package/src/lib/privacy-computing.js +335 -0
- package/src/lib/protocol-fusion.js +338 -0
- package/src/lib/quantization.js +337 -0
- package/src/lib/reputation-optimizer.js +340 -0
- package/src/lib/response-cache.js +333 -0
- package/src/lib/sandbox-v2.js +327 -0
- package/src/lib/scim-manager.js +346 -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-manager.js +334 -0
- 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-loader.js +334 -0
- 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/social-manager.js +330 -0
- package/src/lib/sso-manager.js +340 -0
- package/src/lib/stress-tester.js +342 -0
- package/src/lib/sub-agent-registry.js +302 -53
- package/src/lib/sync-manager.js +336 -0
- package/src/lib/task-model-selector.js +302 -50
- package/src/lib/tech-learning-engine.js +341 -0
- package/src/lib/tenant-saas.js +341 -0
- package/src/lib/terraform-manager.js +333 -0
- package/src/lib/threat-intel.js +330 -0
- package/src/lib/todo-manager.js +281 -47
- package/src/lib/token-incentive.js +341 -0
- package/src/lib/token-tracker.js +336 -0
- package/src/lib/topic-classifier.js +297 -49
- 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/user-profile.js +294 -50
- package/src/lib/version-checker.js +304 -50
- package/src/lib/wallet-manager.js +336 -0
- package/src/lib/web-fetch.js +292 -51
- package/src/lib/workflow-engine.js +330 -0
- package/src/lib/zkp-engine.js +286 -49
package/src/lib/zkp-engine.js
CHANGED
|
@@ -743,25 +743,53 @@ export function getZKPStatsV2() {
|
|
|
743
743
|
};
|
|
744
744
|
}
|
|
745
745
|
|
|
746
|
-
|
|
747
746
|
// ===== V2 Surface: ZKP Engine governance overlay (CLI v0.136.0) =====
|
|
748
747
|
export const ZKP_CIRCUIT_MATURITY_V2 = Object.freeze({
|
|
749
|
-
PENDING: "pending",
|
|
748
|
+
PENDING: "pending",
|
|
749
|
+
ACTIVE: "active",
|
|
750
|
+
DEPRECATED: "deprecated",
|
|
751
|
+
ARCHIVED: "archived",
|
|
750
752
|
});
|
|
751
753
|
export const ZKP_PROOF_LIFECYCLE_V2 = Object.freeze({
|
|
752
|
-
QUEUED: "queued",
|
|
754
|
+
QUEUED: "queued",
|
|
755
|
+
PROVING: "proving",
|
|
756
|
+
VERIFIED: "verified",
|
|
757
|
+
FAILED: "failed",
|
|
758
|
+
CANCELLED: "cancelled",
|
|
753
759
|
});
|
|
754
760
|
|
|
755
761
|
const _zkpCircTrans = new Map([
|
|
756
|
-
[
|
|
757
|
-
|
|
758
|
-
|
|
762
|
+
[
|
|
763
|
+
ZKP_CIRCUIT_MATURITY_V2.PENDING,
|
|
764
|
+
new Set([ZKP_CIRCUIT_MATURITY_V2.ACTIVE, ZKP_CIRCUIT_MATURITY_V2.ARCHIVED]),
|
|
765
|
+
],
|
|
766
|
+
[
|
|
767
|
+
ZKP_CIRCUIT_MATURITY_V2.ACTIVE,
|
|
768
|
+
new Set([
|
|
769
|
+
ZKP_CIRCUIT_MATURITY_V2.DEPRECATED,
|
|
770
|
+
ZKP_CIRCUIT_MATURITY_V2.ARCHIVED,
|
|
771
|
+
]),
|
|
772
|
+
],
|
|
773
|
+
[
|
|
774
|
+
ZKP_CIRCUIT_MATURITY_V2.DEPRECATED,
|
|
775
|
+
new Set([ZKP_CIRCUIT_MATURITY_V2.ACTIVE, ZKP_CIRCUIT_MATURITY_V2.ARCHIVED]),
|
|
776
|
+
],
|
|
759
777
|
[ZKP_CIRCUIT_MATURITY_V2.ARCHIVED, new Set()],
|
|
760
778
|
]);
|
|
761
779
|
const _zkpCircTerminal = new Set([ZKP_CIRCUIT_MATURITY_V2.ARCHIVED]);
|
|
762
780
|
const _zkpProofTrans = new Map([
|
|
763
|
-
[
|
|
764
|
-
|
|
781
|
+
[
|
|
782
|
+
ZKP_PROOF_LIFECYCLE_V2.QUEUED,
|
|
783
|
+
new Set([ZKP_PROOF_LIFECYCLE_V2.PROVING, ZKP_PROOF_LIFECYCLE_V2.CANCELLED]),
|
|
784
|
+
],
|
|
785
|
+
[
|
|
786
|
+
ZKP_PROOF_LIFECYCLE_V2.PROVING,
|
|
787
|
+
new Set([
|
|
788
|
+
ZKP_PROOF_LIFECYCLE_V2.VERIFIED,
|
|
789
|
+
ZKP_PROOF_LIFECYCLE_V2.FAILED,
|
|
790
|
+
ZKP_PROOF_LIFECYCLE_V2.CANCELLED,
|
|
791
|
+
]),
|
|
792
|
+
],
|
|
765
793
|
[ZKP_PROOF_LIFECYCLE_V2.VERIFIED, new Set()],
|
|
766
794
|
[ZKP_PROOF_LIFECYCLE_V2.FAILED, new Set()],
|
|
767
795
|
[ZKP_PROOF_LIFECYCLE_V2.CANCELLED, new Set()],
|
|
@@ -774,76 +802,285 @@ let _zkpMaxPendingPerCircuit = 15;
|
|
|
774
802
|
let _zkpCircuitIdleMs = 30 * 24 * 60 * 60 * 1000;
|
|
775
803
|
let _zkpProofStuckMs = 10 * 60 * 1000;
|
|
776
804
|
|
|
777
|
-
function _zkpPos(n, lbl) {
|
|
805
|
+
function _zkpPos(n, lbl) {
|
|
806
|
+
const v = Math.floor(Number(n));
|
|
807
|
+
if (!Number.isFinite(v) || v <= 0)
|
|
808
|
+
throw new Error(`${lbl} must be positive integer`);
|
|
809
|
+
return v;
|
|
810
|
+
}
|
|
778
811
|
|
|
779
|
-
export function setMaxActiveZkpCircuitsPerOwnerV2(n) {
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
export function
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
export function
|
|
786
|
-
|
|
812
|
+
export function setMaxActiveZkpCircuitsPerOwnerV2(n) {
|
|
813
|
+
_zkpMaxActivePerOwner = _zkpPos(n, "maxActiveZkpCircuitsPerOwner");
|
|
814
|
+
}
|
|
815
|
+
export function getMaxActiveZkpCircuitsPerOwnerV2() {
|
|
816
|
+
return _zkpMaxActivePerOwner;
|
|
817
|
+
}
|
|
818
|
+
export function setMaxPendingZkpProofsPerCircuitV2(n) {
|
|
819
|
+
_zkpMaxPendingPerCircuit = _zkpPos(n, "maxPendingZkpProofsPerCircuit");
|
|
820
|
+
}
|
|
821
|
+
export function getMaxPendingZkpProofsPerCircuitV2() {
|
|
822
|
+
return _zkpMaxPendingPerCircuit;
|
|
823
|
+
}
|
|
824
|
+
export function setZkpCircuitIdleMsV2(n) {
|
|
825
|
+
_zkpCircuitIdleMs = _zkpPos(n, "zkpCircuitIdleMs");
|
|
826
|
+
}
|
|
827
|
+
export function getZkpCircuitIdleMsV2() {
|
|
828
|
+
return _zkpCircuitIdleMs;
|
|
829
|
+
}
|
|
830
|
+
export function setZkpProofStuckMsV2(n) {
|
|
831
|
+
_zkpProofStuckMs = _zkpPos(n, "zkpProofStuckMs");
|
|
832
|
+
}
|
|
833
|
+
export function getZkpProofStuckMsV2() {
|
|
834
|
+
return _zkpProofStuckMs;
|
|
835
|
+
}
|
|
787
836
|
|
|
788
837
|
export function _resetStateZkpEngineV2() {
|
|
789
|
-
_zkpCircs.clear();
|
|
790
|
-
|
|
791
|
-
|
|
838
|
+
_zkpCircs.clear();
|
|
839
|
+
_zkpProofs.clear();
|
|
840
|
+
_zkpMaxActivePerOwner = 10;
|
|
841
|
+
_zkpMaxPendingPerCircuit = 15;
|
|
842
|
+
_zkpCircuitIdleMs = 30 * 24 * 60 * 60 * 1000;
|
|
843
|
+
_zkpProofStuckMs = 10 * 60 * 1000;
|
|
792
844
|
}
|
|
793
845
|
|
|
794
846
|
export function registerZkpCircuitV2({ id, owner, scheme, metadata } = {}) {
|
|
795
847
|
if (!id || typeof id !== "string") throw new Error("id is required");
|
|
796
848
|
if (!owner || typeof owner !== "string") throw new Error("owner is required");
|
|
797
|
-
if (_zkpCircs.has(id))
|
|
849
|
+
if (_zkpCircs.has(id))
|
|
850
|
+
throw new Error(`zkp circuit ${id} already registered`);
|
|
798
851
|
const now = Date.now();
|
|
799
|
-
const c = {
|
|
852
|
+
const c = {
|
|
853
|
+
id,
|
|
854
|
+
owner,
|
|
855
|
+
scheme: scheme || "groth16",
|
|
856
|
+
status: ZKP_CIRCUIT_MATURITY_V2.PENDING,
|
|
857
|
+
createdAt: now,
|
|
858
|
+
updatedAt: now,
|
|
859
|
+
activatedAt: null,
|
|
860
|
+
archivedAt: null,
|
|
861
|
+
lastTouchedAt: now,
|
|
862
|
+
metadata: { ...(metadata || {}) },
|
|
863
|
+
};
|
|
800
864
|
_zkpCircs.set(id, c);
|
|
801
865
|
return { ...c, metadata: { ...c.metadata } };
|
|
802
866
|
}
|
|
803
|
-
function _zkpCheckC(from, to) {
|
|
804
|
-
|
|
867
|
+
function _zkpCheckC(from, to) {
|
|
868
|
+
const a = _zkpCircTrans.get(from);
|
|
869
|
+
if (!a || !a.has(to))
|
|
870
|
+
throw new Error(`invalid zkp circuit transition ${from} → ${to}`);
|
|
871
|
+
}
|
|
872
|
+
function _zkpCountActive(owner) {
|
|
873
|
+
let n = 0;
|
|
874
|
+
for (const c of _zkpCircs.values())
|
|
875
|
+
if (c.owner === owner && c.status === ZKP_CIRCUIT_MATURITY_V2.ACTIVE) n++;
|
|
876
|
+
return n;
|
|
877
|
+
}
|
|
805
878
|
|
|
806
879
|
export function activateZkpCircuitV2(id) {
|
|
807
|
-
const c = _zkpCircs.get(id);
|
|
880
|
+
const c = _zkpCircs.get(id);
|
|
881
|
+
if (!c) throw new Error(`zkp circuit ${id} not found`);
|
|
808
882
|
_zkpCheckC(c.status, ZKP_CIRCUIT_MATURITY_V2.ACTIVE);
|
|
809
883
|
const recovery = c.status === ZKP_CIRCUIT_MATURITY_V2.DEPRECATED;
|
|
810
|
-
if (!recovery) {
|
|
811
|
-
|
|
884
|
+
if (!recovery) {
|
|
885
|
+
const a = _zkpCountActive(c.owner);
|
|
886
|
+
if (a >= _zkpMaxActivePerOwner)
|
|
887
|
+
throw new Error(
|
|
888
|
+
`max active zkp circuits per owner (${_zkpMaxActivePerOwner}) reached for ${c.owner}`,
|
|
889
|
+
);
|
|
890
|
+
}
|
|
891
|
+
const now = Date.now();
|
|
892
|
+
c.status = ZKP_CIRCUIT_MATURITY_V2.ACTIVE;
|
|
893
|
+
c.updatedAt = now;
|
|
894
|
+
c.lastTouchedAt = now;
|
|
895
|
+
if (!c.activatedAt) c.activatedAt = now;
|
|
812
896
|
return { ...c, metadata: { ...c.metadata } };
|
|
813
897
|
}
|
|
814
|
-
export function deprecateZkpCircuitV2(id) {
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
898
|
+
export function deprecateZkpCircuitV2(id) {
|
|
899
|
+
const c = _zkpCircs.get(id);
|
|
900
|
+
if (!c) throw new Error(`zkp circuit ${id} not found`);
|
|
901
|
+
_zkpCheckC(c.status, ZKP_CIRCUIT_MATURITY_V2.DEPRECATED);
|
|
902
|
+
c.status = ZKP_CIRCUIT_MATURITY_V2.DEPRECATED;
|
|
903
|
+
c.updatedAt = Date.now();
|
|
904
|
+
return { ...c, metadata: { ...c.metadata } };
|
|
905
|
+
}
|
|
906
|
+
export function archiveZkpCircuitV2(id) {
|
|
907
|
+
const c = _zkpCircs.get(id);
|
|
908
|
+
if (!c) throw new Error(`zkp circuit ${id} not found`);
|
|
909
|
+
_zkpCheckC(c.status, ZKP_CIRCUIT_MATURITY_V2.ARCHIVED);
|
|
910
|
+
const now = Date.now();
|
|
911
|
+
c.status = ZKP_CIRCUIT_MATURITY_V2.ARCHIVED;
|
|
912
|
+
c.updatedAt = now;
|
|
913
|
+
if (!c.archivedAt) c.archivedAt = now;
|
|
914
|
+
return { ...c, metadata: { ...c.metadata } };
|
|
915
|
+
}
|
|
916
|
+
export function touchZkpCircuitV2(id) {
|
|
917
|
+
const c = _zkpCircs.get(id);
|
|
918
|
+
if (!c) throw new Error(`zkp circuit ${id} not found`);
|
|
919
|
+
if (_zkpCircTerminal.has(c.status))
|
|
920
|
+
throw new Error(`cannot touch terminal zkp circuit ${id}`);
|
|
921
|
+
const now = Date.now();
|
|
922
|
+
c.lastTouchedAt = now;
|
|
923
|
+
c.updatedAt = now;
|
|
924
|
+
return { ...c, metadata: { ...c.metadata } };
|
|
925
|
+
}
|
|
926
|
+
export function getZkpCircuitV2(id) {
|
|
927
|
+
const c = _zkpCircs.get(id);
|
|
928
|
+
if (!c) return null;
|
|
929
|
+
return { ...c, metadata: { ...c.metadata } };
|
|
930
|
+
}
|
|
931
|
+
export function listZkpCircuitsV2() {
|
|
932
|
+
return [..._zkpCircs.values()].map((c) => ({
|
|
933
|
+
...c,
|
|
934
|
+
metadata: { ...c.metadata },
|
|
935
|
+
}));
|
|
936
|
+
}
|
|
819
937
|
|
|
820
|
-
function _zkpCountPending(cid) {
|
|
938
|
+
function _zkpCountPending(cid) {
|
|
939
|
+
let n = 0;
|
|
940
|
+
for (const p of _zkpProofs.values())
|
|
941
|
+
if (
|
|
942
|
+
p.circuitId === cid &&
|
|
943
|
+
(p.status === ZKP_PROOF_LIFECYCLE_V2.QUEUED ||
|
|
944
|
+
p.status === ZKP_PROOF_LIFECYCLE_V2.PROVING)
|
|
945
|
+
)
|
|
946
|
+
n++;
|
|
947
|
+
return n;
|
|
948
|
+
}
|
|
821
949
|
|
|
822
950
|
export function createZkpProofV2({ id, circuitId, inputs, metadata } = {}) {
|
|
823
951
|
if (!id || typeof id !== "string") throw new Error("id is required");
|
|
824
|
-
if (!circuitId || typeof circuitId !== "string")
|
|
952
|
+
if (!circuitId || typeof circuitId !== "string")
|
|
953
|
+
throw new Error("circuitId is required");
|
|
825
954
|
if (_zkpProofs.has(id)) throw new Error(`zkp proof ${id} already exists`);
|
|
826
|
-
if (!_zkpCircs.has(circuitId))
|
|
955
|
+
if (!_zkpCircs.has(circuitId))
|
|
956
|
+
throw new Error(`zkp circuit ${circuitId} not found`);
|
|
827
957
|
const pending = _zkpCountPending(circuitId);
|
|
828
|
-
if (pending >= _zkpMaxPendingPerCircuit)
|
|
958
|
+
if (pending >= _zkpMaxPendingPerCircuit)
|
|
959
|
+
throw new Error(
|
|
960
|
+
`max pending zkp proofs per circuit (${_zkpMaxPendingPerCircuit}) reached for ${circuitId}`,
|
|
961
|
+
);
|
|
829
962
|
const now = Date.now();
|
|
830
|
-
const p = {
|
|
963
|
+
const p = {
|
|
964
|
+
id,
|
|
965
|
+
circuitId,
|
|
966
|
+
inputs: inputs || "",
|
|
967
|
+
status: ZKP_PROOF_LIFECYCLE_V2.QUEUED,
|
|
968
|
+
createdAt: now,
|
|
969
|
+
updatedAt: now,
|
|
970
|
+
startedAt: null,
|
|
971
|
+
settledAt: null,
|
|
972
|
+
metadata: { ...(metadata || {}) },
|
|
973
|
+
};
|
|
831
974
|
_zkpProofs.set(id, p);
|
|
832
975
|
return { ...p, metadata: { ...p.metadata } };
|
|
833
976
|
}
|
|
834
|
-
function _zkpCheckP(from, to) {
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
export function
|
|
840
|
-
|
|
977
|
+
function _zkpCheckP(from, to) {
|
|
978
|
+
const a = _zkpProofTrans.get(from);
|
|
979
|
+
if (!a || !a.has(to))
|
|
980
|
+
throw new Error(`invalid zkp proof transition ${from} → ${to}`);
|
|
981
|
+
}
|
|
982
|
+
export function startZkpProofV2(id) {
|
|
983
|
+
const p = _zkpProofs.get(id);
|
|
984
|
+
if (!p) throw new Error(`zkp proof ${id} not found`);
|
|
985
|
+
_zkpCheckP(p.status, ZKP_PROOF_LIFECYCLE_V2.PROVING);
|
|
986
|
+
const now = Date.now();
|
|
987
|
+
p.status = ZKP_PROOF_LIFECYCLE_V2.PROVING;
|
|
988
|
+
p.updatedAt = now;
|
|
989
|
+
if (!p.startedAt) p.startedAt = now;
|
|
990
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
991
|
+
}
|
|
992
|
+
export function verifyZkpProofV2(id) {
|
|
993
|
+
const p = _zkpProofs.get(id);
|
|
994
|
+
if (!p) throw new Error(`zkp proof ${id} not found`);
|
|
995
|
+
_zkpCheckP(p.status, ZKP_PROOF_LIFECYCLE_V2.VERIFIED);
|
|
996
|
+
const now = Date.now();
|
|
997
|
+
p.status = ZKP_PROOF_LIFECYCLE_V2.VERIFIED;
|
|
998
|
+
p.updatedAt = now;
|
|
999
|
+
if (!p.settledAt) p.settledAt = now;
|
|
1000
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1001
|
+
}
|
|
1002
|
+
export function failZkpProofV2(id, reason) {
|
|
1003
|
+
const p = _zkpProofs.get(id);
|
|
1004
|
+
if (!p) throw new Error(`zkp proof ${id} not found`);
|
|
1005
|
+
_zkpCheckP(p.status, ZKP_PROOF_LIFECYCLE_V2.FAILED);
|
|
1006
|
+
const now = Date.now();
|
|
1007
|
+
p.status = ZKP_PROOF_LIFECYCLE_V2.FAILED;
|
|
1008
|
+
p.updatedAt = now;
|
|
1009
|
+
if (!p.settledAt) p.settledAt = now;
|
|
1010
|
+
if (reason) p.metadata.failReason = String(reason);
|
|
1011
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1012
|
+
}
|
|
1013
|
+
export function cancelZkpProofV2(id, reason) {
|
|
1014
|
+
const p = _zkpProofs.get(id);
|
|
1015
|
+
if (!p) throw new Error(`zkp proof ${id} not found`);
|
|
1016
|
+
_zkpCheckP(p.status, ZKP_PROOF_LIFECYCLE_V2.CANCELLED);
|
|
1017
|
+
const now = Date.now();
|
|
1018
|
+
p.status = ZKP_PROOF_LIFECYCLE_V2.CANCELLED;
|
|
1019
|
+
p.updatedAt = now;
|
|
1020
|
+
if (!p.settledAt) p.settledAt = now;
|
|
1021
|
+
if (reason) p.metadata.cancelReason = String(reason);
|
|
1022
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1023
|
+
}
|
|
1024
|
+
export function getZkpProofV2(id) {
|
|
1025
|
+
const p = _zkpProofs.get(id);
|
|
1026
|
+
if (!p) return null;
|
|
1027
|
+
return { ...p, metadata: { ...p.metadata } };
|
|
1028
|
+
}
|
|
1029
|
+
export function listZkpProofsV2() {
|
|
1030
|
+
return [..._zkpProofs.values()].map((p) => ({
|
|
1031
|
+
...p,
|
|
1032
|
+
metadata: { ...p.metadata },
|
|
1033
|
+
}));
|
|
1034
|
+
}
|
|
841
1035
|
|
|
842
|
-
export function autoDeprecateIdleZkpCircuitsV2({ now } = {}) {
|
|
843
|
-
|
|
1036
|
+
export function autoDeprecateIdleZkpCircuitsV2({ now } = {}) {
|
|
1037
|
+
const t = now ?? Date.now();
|
|
1038
|
+
const flipped = [];
|
|
1039
|
+
for (const c of _zkpCircs.values())
|
|
1040
|
+
if (
|
|
1041
|
+
c.status === ZKP_CIRCUIT_MATURITY_V2.ACTIVE &&
|
|
1042
|
+
t - c.lastTouchedAt >= _zkpCircuitIdleMs
|
|
1043
|
+
) {
|
|
1044
|
+
c.status = ZKP_CIRCUIT_MATURITY_V2.DEPRECATED;
|
|
1045
|
+
c.updatedAt = t;
|
|
1046
|
+
flipped.push(c.id);
|
|
1047
|
+
}
|
|
1048
|
+
return { flipped, count: flipped.length };
|
|
1049
|
+
}
|
|
1050
|
+
export function autoFailStuckZkpProofsV2({ now } = {}) {
|
|
1051
|
+
const t = now ?? Date.now();
|
|
1052
|
+
const flipped = [];
|
|
1053
|
+
for (const p of _zkpProofs.values())
|
|
1054
|
+
if (
|
|
1055
|
+
p.status === ZKP_PROOF_LIFECYCLE_V2.PROVING &&
|
|
1056
|
+
p.startedAt != null &&
|
|
1057
|
+
t - p.startedAt >= _zkpProofStuckMs
|
|
1058
|
+
) {
|
|
1059
|
+
p.status = ZKP_PROOF_LIFECYCLE_V2.FAILED;
|
|
1060
|
+
p.updatedAt = t;
|
|
1061
|
+
if (!p.settledAt) p.settledAt = t;
|
|
1062
|
+
p.metadata.failReason = "auto-fail-stuck";
|
|
1063
|
+
flipped.push(p.id);
|
|
1064
|
+
}
|
|
1065
|
+
return { flipped, count: flipped.length };
|
|
1066
|
+
}
|
|
844
1067
|
|
|
845
1068
|
export function getZkpEngineGovStatsV2() {
|
|
846
|
-
const circuitsByStatus = {};
|
|
847
|
-
|
|
848
|
-
|
|
1069
|
+
const circuitsByStatus = {};
|
|
1070
|
+
for (const s of Object.values(ZKP_CIRCUIT_MATURITY_V2))
|
|
1071
|
+
circuitsByStatus[s] = 0;
|
|
1072
|
+
for (const c of _zkpCircs.values()) circuitsByStatus[c.status]++;
|
|
1073
|
+
const proofsByStatus = {};
|
|
1074
|
+
for (const s of Object.values(ZKP_PROOF_LIFECYCLE_V2)) proofsByStatus[s] = 0;
|
|
1075
|
+
for (const p of _zkpProofs.values()) proofsByStatus[p.status]++;
|
|
1076
|
+
return {
|
|
1077
|
+
totalCircuitsV2: _zkpCircs.size,
|
|
1078
|
+
totalProofsV2: _zkpProofs.size,
|
|
1079
|
+
maxActiveZkpCircuitsPerOwner: _zkpMaxActivePerOwner,
|
|
1080
|
+
maxPendingZkpProofsPerCircuit: _zkpMaxPendingPerCircuit,
|
|
1081
|
+
zkpCircuitIdleMs: _zkpCircuitIdleMs,
|
|
1082
|
+
zkpProofStuckMs: _zkpProofStuckMs,
|
|
1083
|
+
circuitsByStatus,
|
|
1084
|
+
proofsByStatus,
|
|
1085
|
+
};
|
|
849
1086
|
}
|