inamprotocol 0.8.0 → 0.9.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/dist/core/disputeLifecycle.d.ts +18 -0
- package/dist/core/disputeLifecycle.js +19 -0
- package/dist/core/disputeLifecycle.js.map +1 -1
- package/dist/core/receiptContent.js +1 -1
- package/dist/core/receiptContent.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/package.json +1 -1
|
@@ -29,3 +29,21 @@ export interface DisputeCheckable {
|
|
|
29
29
|
}
|
|
30
30
|
export declare function hasUsedDisputeRight(receipt: DisputeCheckable, callerDid: string): boolean;
|
|
31
31
|
export declare function isDisputeActive(receipt: DisputeCheckable, now?: number): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* SPEC.md §4.3 (v0.31): `dispute.windowClosesAt` is null until a receipt is
|
|
34
|
+
* countersigned. Read it through this helper instead of `new Date(...)`:
|
|
35
|
+
* `new Date(null)` is 1970-01-01, which a caller could mistake for a real,
|
|
36
|
+
* long-closed window. Returns null for null, missing, or unparseable values
|
|
37
|
+
* (including the "" that pre-v0.31 registries returned for drafts).
|
|
38
|
+
*/
|
|
39
|
+
export declare function disputeWindowClosesAt(receipt: {
|
|
40
|
+
dispute: {
|
|
41
|
+
windowClosesAt?: string | null;
|
|
42
|
+
};
|
|
43
|
+
}): Date | null;
|
|
44
|
+
/** True only while a dispute window exists and hasn't closed yet. A draft has no window, so it's false. */
|
|
45
|
+
export declare function isDisputeWindowOpen(receipt: {
|
|
46
|
+
dispute: {
|
|
47
|
+
windowClosesAt?: string | null;
|
|
48
|
+
};
|
|
49
|
+
}, now?: number): boolean;
|
|
@@ -29,4 +29,23 @@ export function isDisputeActive(receipt, now = Date.now()) {
|
|
|
29
29
|
return true;
|
|
30
30
|
return now < new Date(receipt.dispute.resolutionDeadline).getTime();
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* SPEC.md §4.3 (v0.31): `dispute.windowClosesAt` is null until a receipt is
|
|
34
|
+
* countersigned. Read it through this helper instead of `new Date(...)`:
|
|
35
|
+
* `new Date(null)` is 1970-01-01, which a caller could mistake for a real,
|
|
36
|
+
* long-closed window. Returns null for null, missing, or unparseable values
|
|
37
|
+
* (including the "" that pre-v0.31 registries returned for drafts).
|
|
38
|
+
*/
|
|
39
|
+
export function disputeWindowClosesAt(receipt) {
|
|
40
|
+
const raw = receipt.dispute.windowClosesAt;
|
|
41
|
+
if (!raw)
|
|
42
|
+
return null;
|
|
43
|
+
const date = new Date(raw);
|
|
44
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
45
|
+
}
|
|
46
|
+
/** True only while a dispute window exists and hasn't closed yet. A draft has no window, so it's false. */
|
|
47
|
+
export function isDisputeWindowOpen(receipt, now = Date.now()) {
|
|
48
|
+
const closesAt = disputeWindowClosesAt(receipt);
|
|
49
|
+
return closesAt !== null && now < closesAt.getTime();
|
|
50
|
+
}
|
|
32
51
|
//# sourceMappingURL=disputeLifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disputeLifecycle.js","sourceRoot":"","sources":["../../src/core/disputeLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,MAAM,UAAU,mBAAmB,CAAC,OAAyB,EAAE,SAAiB;IAC9E,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAyB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACjF,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;AACtE,CAAC"}
|
|
1
|
+
{"version":3,"file":"disputeLifecycle.js","sourceRoot":"","sources":["../../src/core/disputeLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH,MAAM,UAAU,mBAAmB,CAAC,OAAyB,EAAE,SAAiB;IAC9E,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAyB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACjF,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAwD;IAC5F,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,mBAAmB,CAAC,OAAwD,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACpH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,QAAQ,KAAK,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -33,7 +33,7 @@ export function buildSignableContent(agentAId, agentBId, input) {
|
|
|
33
33
|
result: input.result,
|
|
34
34
|
settlement: input.settlement,
|
|
35
35
|
verification: input.verification,
|
|
36
|
-
dispute: { status: "none", windowClosesAt:
|
|
36
|
+
dispute: { status: "none", windowClosesAt: null }, // placeholder; every signer and verifier strips `dispute` before signing
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
//# sourceMappingURL=receiptContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiptContent.js","sourceRoot":"","sources":["../../src/core/receiptContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkB9C;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAA0B;IAC7F,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC;IACF,OAAO,UAAU,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAAgB,EAChB,KAA0B;IAE1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO;QACL,cAAc,EAAE,KAAK;QACrB,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"receiptContent.js","sourceRoot":"","sources":["../../src/core/receiptContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkB9C;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAA0B;IAC7F,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC;IACF,OAAO,UAAU,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAAgB,EAChB,KAA0B;IAE1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO;QACL,cAAc,EAAE,KAAK;QACrB,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,yEAAyE;KAC7H,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { generateP256Keypair, p256Sign, p256Verify, type P256Keypair } from "./c
|
|
|
4
4
|
export { generateSecp256k1Keypair, secp256k1Sign, secp256k1Verify, ethAddressFromUncompressedPublicKey, ethPersonalSignDigest, type Secp256k1Keypair, } from "./crypto/secp256k1.js";
|
|
5
5
|
export { canonicalize } from "./crypto/canonical.js";
|
|
6
6
|
export { computeReceiptId, buildSignableContent, type ReceiptContentInput } from "./core/receiptContent.js";
|
|
7
|
+
export { disputeWindowClosesAt, isDisputeWindowOpen } from "./core/disputeLifecycle.js";
|
|
7
8
|
export { computeVerificationId, buildSignableVerificationContent, type VerificationContentInput } from "./core/verificationContent.js";
|
|
8
9
|
export { verifyInclusion, verifyConsistency } from "./core/merkleLog.js";
|
|
9
10
|
export { type TransparencyEntryType } from "./core/transparencyLog.js";
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,9 @@ export { generateP256Keypair, p256Sign, p256Verify } from "./crypto/p256.js";
|
|
|
4
4
|
export { generateSecp256k1Keypair, secp256k1Sign, secp256k1Verify, ethAddressFromUncompressedPublicKey, ethPersonalSignDigest, } from "./crypto/secp256k1.js";
|
|
5
5
|
export { canonicalize } from "./crypto/canonical.js";
|
|
6
6
|
export { computeReceiptId, buildSignableContent } from "./core/receiptContent.js";
|
|
7
|
+
// Dispute-window helpers (SPEC.md §4.3, v0.31). Use these instead of
|
|
8
|
+
// new Date(receipt.dispute.windowClosesAt): the field is null on drafts.
|
|
9
|
+
export { disputeWindowClosesAt, isDisputeWindowOpen } from "./core/disputeLifecycle.js";
|
|
7
10
|
export { computeVerificationId, buildSignableVerificationContent } from "./core/verificationContent.js";
|
|
8
11
|
// Transparency log (audit round-2 item 6, RFC 6962-style Merkle log): pure
|
|
9
12
|
// verification functions, so a caller can verify an inclusion/consistency
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,GAER,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,mCAAmC,EACnC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAE5G,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAEvI,2EAA2E;AAC3E,0EAA0E;AAC1E,sEAAsE;AACtE,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,GAER,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,mCAAmC,EACnC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAE5G,qEAAqE;AACrE,yEAAyE;AACzE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAEvI,2EAA2E;AAC3E,0EAA0E;AAC1E,sEAAsE;AACtE,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -113,7 +113,8 @@ export interface ExecutionReceipt {
|
|
|
113
113
|
dispute: {
|
|
114
114
|
status: DisputeStatus;
|
|
115
115
|
reason?: string;
|
|
116
|
-
|
|
116
|
+
/** null while the receipt is a draft; set when it is countersigned (SPEC §4.3). */
|
|
117
|
+
windowClosesAt: string | null;
|
|
117
118
|
openedBy?: string;
|
|
118
119
|
resolvedAt?: string;
|
|
119
120
|
resolution?: string;
|
|
@@ -141,7 +142,7 @@ export interface ExecutionReceipt {
|
|
|
141
142
|
export type SignableReceiptContent = Omit<ExecutionReceipt, "signatures" | "status" | "dispute"> & {
|
|
142
143
|
dispute: {
|
|
143
144
|
status: "none";
|
|
144
|
-
windowClosesAt:
|
|
145
|
+
windowClosesAt: null;
|
|
145
146
|
};
|
|
146
147
|
};
|
|
147
148
|
/** Weighted receipt count/success-rate/volume for one side of an agent's
|
package/package.json
CHANGED