@agenticprimitives/delegation 1.0.0-alpha.25 → 1.0.0-alpha.27
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/README.md +2 -0
- package/dist/caveats.d.ts +39 -6
- package/dist/caveats.d.ts.map +1 -1
- package/dist/caveats.js +94 -9
- package/dist/caveats.js.map +1 -1
- package/dist/evaluator.d.ts.map +1 -1
- package/dist/evaluator.js +51 -3
- package/dist/evaluator.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/lineage.d.ts +70 -0
- package/dist/lineage.d.ts.map +1 -0
- package/dist/lineage.js +65 -0
- package/dist/lineage.js.map +1 -0
- package/dist/mandate-handlers.d.ts.map +1 -1
- package/dist/mandate-handlers.js +12 -1
- package/dist/mandate-handlers.js.map +1 -1
- package/dist/mandate.d.ts +55 -3
- package/dist/mandate.d.ts.map +1 -1
- package/dist/mandate.js +65 -12
- package/dist/mandate.js.map +1 -1
- package/dist/session-delegation.d.ts +5 -1
- package/dist/session-delegation.d.ts.map +1 -1
- package/dist/session-delegation.js +3 -2
- package/dist/session-delegation.js.map +1 -1
- package/dist/standing.d.ts +93 -0
- package/dist/standing.d.ts.map +1 -0
- package/dist/standing.js +122 -0
- package/dist/standing.js.map +1 -0
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +99 -83
- package/dist/token.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +20 -11
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Address, Hex } from './types.js';
|
|
2
|
+
/** The JSON-safe wire (salt as a string), as it travels and as a vault record holds it. */
|
|
3
|
+
export interface LineageWire {
|
|
4
|
+
delegator: Address;
|
|
5
|
+
delegate: Address;
|
|
6
|
+
authority: Hex;
|
|
7
|
+
caveats: Array<{
|
|
8
|
+
enforcer: Address;
|
|
9
|
+
terms: Hex;
|
|
10
|
+
args?: Hex;
|
|
11
|
+
}>;
|
|
12
|
+
salt: string;
|
|
13
|
+
signature: Hex;
|
|
14
|
+
}
|
|
15
|
+
/** The account-level approved-digest sentinel (spec 253): the delegator's account has `approveDigest`ed the
|
|
16
|
+
* wire's hash under its current custody epoch, and `isValidSignature` honours it. */
|
|
17
|
+
export declare const APPROVED_DIGEST_SENTINEL: Hex;
|
|
18
|
+
export interface DelegationLineageV1 {
|
|
19
|
+
type: 'ap.delegation-lineage.v1';
|
|
20
|
+
/** The re-issued wire's delegation hash — the record key's suffix. */
|
|
21
|
+
hash: Hex;
|
|
22
|
+
/** The hash this wire replaces; receipts citing it remain readable through this record. */
|
|
23
|
+
supersedes: Hex;
|
|
24
|
+
/** The re-issued wire itself: same terms, same salt, `0x03` signature. Returned to its delegate only. */
|
|
25
|
+
wire: LineageWire;
|
|
26
|
+
issuedAt: string;
|
|
27
|
+
/** Why it was re-issued. A rotation is the only reason today; a recovery re-issues NOTHING (spec 410 §1.2 step 6) —
|
|
28
|
+
* the person issues NEW grants from a reviewed list, with new salts and no lineage, because a recovery is the
|
|
29
|
+
* moment a planted grant would otherwise ride through. */
|
|
30
|
+
reason: 'rotation';
|
|
31
|
+
}
|
|
32
|
+
export declare const LINEAGE_RECORD_PREFIX: "delegation.lineage:";
|
|
33
|
+
export declare const lineageRecordType: (hash: Hex) => string;
|
|
34
|
+
/** Is this wire signed by the account's approved-digest sentinel (re-approved as-is on rotation) or by a key
|
|
35
|
+
* (re-issued on rotation)? */
|
|
36
|
+
export declare const wireSigning: (w: {
|
|
37
|
+
signature: string;
|
|
38
|
+
}) => "approved-digest" | "key";
|
|
39
|
+
/**
|
|
40
|
+
* Re-issue a KEY-SIGNED wire as an approved-digest wire for a rotation: identical terms, identical salt, the
|
|
41
|
+
* `0x03` sentinel as signature. The digest returned is what the rotation batch `approveDigest`s; the lineage
|
|
42
|
+
* record is what the delegator's vault keeps so the delegate can fetch the head. Refuses a wire that is
|
|
43
|
+
* already approved-digest (it needs re-approval, not re-issue) and one whose `supersedes` would be itself.
|
|
44
|
+
*/
|
|
45
|
+
export declare function reissueForRotation(old: LineageWire, chainId: number, delegationManager: Address, now?: () => Date): {
|
|
46
|
+
wire: LineageWire;
|
|
47
|
+
digest: Hex;
|
|
48
|
+
lineage: DelegationLineageV1;
|
|
49
|
+
};
|
|
50
|
+
export type WireLineageAnswer = {
|
|
51
|
+
status: 'current';
|
|
52
|
+
hash: Hex;
|
|
53
|
+
wire: LineageWire | null;
|
|
54
|
+
} | {
|
|
55
|
+
status: 'superseded';
|
|
56
|
+
hash: Hex;
|
|
57
|
+
wire: LineageWire;
|
|
58
|
+
supersededFrom: Hex;
|
|
59
|
+
} | {
|
|
60
|
+
status: 'unknown';
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* The HEAD of a wire's lineage, from the delegator's lineage records: follow `supersedes` links from `hash`
|
|
64
|
+
* forward until no record supersedes the current head. Pure; the caller supplies the records (a vault list) and
|
|
65
|
+
* the delegate asking, and a record whose wire names another delegate is never followed — a wire is returned to
|
|
66
|
+
* its delegate only. `unknown` when nothing in the records mentions the hash: the caller then decides whether
|
|
67
|
+
* the ORIGINAL is still current (it holds it) or was revoked (the chain says).
|
|
68
|
+
*/
|
|
69
|
+
export declare function currentWireOf(records: readonly DelegationLineageV1[], hash: Hex, delegate: Address): WireLineageAnswer;
|
|
70
|
+
//# sourceMappingURL=lineage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../src/lineage.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAI/C,2FAA2F;AAC3F,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,GAAG,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,GAAG,CAAC;CAChB;AAED;sFACsF;AACtF,eAAO,MAAM,wBAAwB,EAAE,GAAY,CAAC;AAEpD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,0BAA0B,CAAC;IACjC,sEAAsE;IACtE,IAAI,EAAE,GAAG,CAAC;IACV,2FAA2F;IAC3F,UAAU,EAAE,GAAG,CAAC;IAChB,yGAAyG;IACzG,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;;+DAE2D;IAC3D,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,eAAO,MAAM,qBAAqB,EAAG,qBAA8B,CAAC;AACpE,eAAO,MAAM,iBAAiB,SAAU,GAAG,KAAG,MAAyD,CAAC;AAQxG;+BAC+B;AAC/B,eAAO,MAAM,WAAW,MAAO;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,KAAG,iBAAiB,GAAG,KACS,CAAC;AAErF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,IAAuB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAUtM;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,cAAc,EAAE,GAAG,CAAA;CAAE,GAC3E;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAG,iBAAiB,CAqBtH"}
|
package/dist/lineage.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { hashDelegation } from './hash.js';
|
|
2
|
+
/** The account-level approved-digest sentinel (spec 253): the delegator's account has `approveDigest`ed the
|
|
3
|
+
* wire's hash under its current custody epoch, and `isValidSignature` honours it. */
|
|
4
|
+
export const APPROVED_DIGEST_SENTINEL = '0x03';
|
|
5
|
+
export const LINEAGE_RECORD_PREFIX = 'delegation.lineage:';
|
|
6
|
+
export const lineageRecordType = (hash) => `${LINEAGE_RECORD_PREFIX}${hash.toLowerCase()}`;
|
|
7
|
+
const toDelegation = (w) => ({
|
|
8
|
+
delegator: w.delegator, delegate: w.delegate, authority: w.authority,
|
|
9
|
+
caveats: w.caveats.map((c) => ({ enforcer: c.enforcer, terms: c.terms, args: (c.args ?? '0x') })),
|
|
10
|
+
salt: BigInt(w.salt), signature: w.signature,
|
|
11
|
+
});
|
|
12
|
+
/** Is this wire signed by the account's approved-digest sentinel (re-approved as-is on rotation) or by a key
|
|
13
|
+
* (re-issued on rotation)? */
|
|
14
|
+
export const wireSigning = (w) => w.signature.toLowerCase() === APPROVED_DIGEST_SENTINEL ? 'approved-digest' : 'key';
|
|
15
|
+
/**
|
|
16
|
+
* Re-issue a KEY-SIGNED wire as an approved-digest wire for a rotation: identical terms, identical salt, the
|
|
17
|
+
* `0x03` sentinel as signature. The digest returned is what the rotation batch `approveDigest`s; the lineage
|
|
18
|
+
* record is what the delegator's vault keeps so the delegate can fetch the head. Refuses a wire that is
|
|
19
|
+
* already approved-digest (it needs re-approval, not re-issue) and one whose `supersedes` would be itself.
|
|
20
|
+
*/
|
|
21
|
+
export function reissueForRotation(old, chainId, delegationManager, now = () => new Date()) {
|
|
22
|
+
if (wireSigning(old) === 'approved-digest')
|
|
23
|
+
throw new Error('reissueForRotation: an approved-digest wire is re-approved as-is on rotation, never re-issued');
|
|
24
|
+
const oldHash = hashDelegation(toDelegation(old), chainId, delegationManager);
|
|
25
|
+
const wire = { ...old, caveats: old.caveats.map((c) => ({ ...c })), signature: APPROVED_DIGEST_SENTINEL };
|
|
26
|
+
const digest = hashDelegation(toDelegation(wire), chainId, delegationManager);
|
|
27
|
+
// The EIP-712 hash excludes the signature, so the re-issued object HAS THE SAME DELEGATION HASH as the old one:
|
|
28
|
+
// what changes is how it validates (the sentinel, under the new epoch), not what it grants. The lineage still
|
|
29
|
+
// records the supersession so the delegate learns the object it holds is stale and which one to hold now.
|
|
30
|
+
const lineage = { type: 'ap.delegation-lineage.v1', hash: digest, supersedes: oldHash, wire, issuedAt: now().toISOString(), reason: 'rotation' };
|
|
31
|
+
return { wire, digest, lineage };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The HEAD of a wire's lineage, from the delegator's lineage records: follow `supersedes` links from `hash`
|
|
35
|
+
* forward until no record supersedes the current head. Pure; the caller supplies the records (a vault list) and
|
|
36
|
+
* the delegate asking, and a record whose wire names another delegate is never followed — a wire is returned to
|
|
37
|
+
* its delegate only. `unknown` when nothing in the records mentions the hash: the caller then decides whether
|
|
38
|
+
* the ORIGINAL is still current (it holds it) or was revoked (the chain says).
|
|
39
|
+
*/
|
|
40
|
+
export function currentWireOf(records, hash, delegate) {
|
|
41
|
+
const byPrev = new Map();
|
|
42
|
+
for (const r of records) {
|
|
43
|
+
if (r.type !== 'ap.delegation-lineage.v1')
|
|
44
|
+
continue;
|
|
45
|
+
if (r.wire.delegate.toLowerCase() !== delegate.toLowerCase())
|
|
46
|
+
continue;
|
|
47
|
+
byPrev.set(r.supersedes.toLowerCase(), r);
|
|
48
|
+
}
|
|
49
|
+
let head = hash.toLowerCase();
|
|
50
|
+
let last = null;
|
|
51
|
+
const seen = new Set();
|
|
52
|
+
while (byPrev.has(head)) {
|
|
53
|
+
if (seen.has(head))
|
|
54
|
+
break; // a cycle is a corrupt record set; stop at the last sound link
|
|
55
|
+
seen.add(head);
|
|
56
|
+
last = byPrev.get(head);
|
|
57
|
+
head = last.hash.toLowerCase();
|
|
58
|
+
}
|
|
59
|
+
if (!last) {
|
|
60
|
+
const known = records.some((r) => r.hash.toLowerCase() === hash.toLowerCase() && r.wire.delegate.toLowerCase() === delegate.toLowerCase());
|
|
61
|
+
return known ? { status: 'current', hash, wire: records.find((r) => r.hash.toLowerCase() === hash.toLowerCase()).wire } : { status: 'unknown' };
|
|
62
|
+
}
|
|
63
|
+
return { status: 'superseded', hash: last.hash, wire: last.wire, supersededFrom: hash };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=lineage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.js","sourceRoot":"","sources":["../src/lineage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mandate-handlers.d.ts","sourceRoot":"","sources":["../src/mandate-handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mandate-handlers.d.ts","sourceRoot":"","sources":["../src/mandate-handlers.ts"],"names":[],"mappings":"AAWA,OAAO,EAA0F,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAYjJ,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D,eAAO,MAAM,iBAAiB,EAAE,oBAwC/B,CAAC;AAsBF,eAAO,MAAM,gBAAgB,wCAAwC,CAAC;AActE,eAAO,MAAM,cAAc,EAAE,oBAkE5B,CAAC;AAQF;2FAC2F;AAC3F,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAG5E,CAAC;AAIH,wBAAgB,6BAA6B,IAAI,IAAI,CAKpD;AACD,qDAAqD;AACrD,wBAAgB,yBAAyB,IAAI,IAAI,CAAwB"}
|
package/dist/mandate-handlers.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// spec-272 `PaymentEnforcer` caveats so a treasury mandate is bounded on chain by the same terms the
|
|
5
5
|
// off-chain verifier reads.
|
|
6
6
|
import { decodeAbiParameters } from 'viem';
|
|
7
|
-
import { buildCaveat, encodeTimestampTerms, decodeTimestampTerms, encodeAllowedMethodsTerms, decodeAllowedMethodsTerms, encodeAllowedTargetsTerms, decodeAllowedTargetsTerms, encodeValueTerms, encodePaymentTerms, PAYMENT_TRANSFER_SELECTOR, } from './caveats.js';
|
|
7
|
+
import { buildCaveat, encodeTimestampTerms, decodeTimestampTerms, encodeAllowedMethodsTerms, decodeAllowedMethodsTerms, encodeAllowedTargetsTerms, decodeAllowedTargetsTerms, encodeValueTerms, encodePaymentTerms, PAYMENT_TRANSFER_SELECTOR, buildPayloadClassesCaveat, decodePayloadClassesTerms } from './caveats.js';
|
|
8
8
|
import { methodSelector } from './method-authorization.js';
|
|
9
9
|
import { baseIsSubset, registerSubsetHandler } from './mandate.js';
|
|
10
10
|
const lc = (s) => s.toLowerCase();
|
|
@@ -31,6 +31,12 @@ export const capabilityHandler = {
|
|
|
31
31
|
];
|
|
32
32
|
if (req.locations?.length)
|
|
33
33
|
caveats.push(buildCaveat(e.allowedTargets, encodeAllowedTargetsTerms(req.locations.map(asAddress))));
|
|
34
|
+
// Spec 410 §7 — what a write under this mandate may carry, pinned into the signed wire.
|
|
35
|
+
if (req.payloadClasses?.length) {
|
|
36
|
+
if (!e.payloadClasses)
|
|
37
|
+
throw new Error('capability mandate: payloadClasses named but this estate has no PayloadClassesEnforcer');
|
|
38
|
+
caveats.push(buildPayloadClassesCaveat(e.payloadClasses, req.payloadClasses));
|
|
39
|
+
}
|
|
34
40
|
return caveats;
|
|
35
41
|
},
|
|
36
42
|
fromCaveats(caveats, e) {
|
|
@@ -38,6 +44,7 @@ export const capabilityHandler = {
|
|
|
38
44
|
const methods = findCaveat(caveats, e.allowedMethods);
|
|
39
45
|
if (!ts || !methods)
|
|
40
46
|
return null;
|
|
47
|
+
const payload = e.payloadClasses ? findCaveat(caveats, e.payloadClasses) : undefined;
|
|
41
48
|
const { validAfter, validUntil } = decodeTimestampTerms(ts.terms);
|
|
42
49
|
const selectors = decodeAllowedMethodsTerms(methods.terms);
|
|
43
50
|
// Selectors are one-way; the reader keeps them as `sel:<hex>` unless it can name them. A verifier
|
|
@@ -47,6 +54,7 @@ export const capabilityHandler = {
|
|
|
47
54
|
type: CAPABILITY_RAR_TYPE,
|
|
48
55
|
actions: selectors.map((s) => `sel:${s}`),
|
|
49
56
|
...(targets ? { locations: [...decodeAllowedTargetsTerms(targets.terms)] } : {}),
|
|
57
|
+
...(payload ? { payloadClasses: decodePayloadClassesTerms(payload.terms) } : {}),
|
|
50
58
|
validAfter: Number(validAfter),
|
|
51
59
|
validUntil: Number(validUntil),
|
|
52
60
|
};
|
|
@@ -78,6 +86,9 @@ function paymentLimits(req) {
|
|
|
78
86
|
};
|
|
79
87
|
}
|
|
80
88
|
export const paymentHandler = {
|
|
89
|
+
// Spec 408 §2.2 — the PaymentEnforcer's terms (payee, asset, per-charge and aggregate ceilings, window) are
|
|
90
|
+
// what `isSubset` below compares against the step; off chain there is no other judge of them.
|
|
91
|
+
judgesEnforcers: (e) => (e.payment ? [e.payment] : []),
|
|
81
92
|
type: PAYMENT_RAR_TYPE,
|
|
82
93
|
// The narrowest grant that covers this payment: THIS payee, THIS asset, THIS amount, once, within the
|
|
83
94
|
// hour. A person asked to authorize a payment is being asked for an amount — a requirement that omits
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mandate-handlers.js","sourceRoot":"","sources":["../src/mandate-handlers.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,8FAA8F;AAC9F,+FAA+F;AAC/F,qGAAqG;AACrG,4BAA4B;AAC5B,OAAO,EAAE,mBAAmB,EAAY,MAAM,MAAM,CAAC;AAErD,OAAO,EACL,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB,EAC7G,yBAAyB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"mandate-handlers.js","sourceRoot":"","sources":["../src/mandate-handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/mandate.d.ts
CHANGED
|
@@ -22,6 +22,14 @@ export interface MandateRequirementV1 {
|
|
|
22
22
|
projectionDigest?: Hex;
|
|
23
23
|
/** The accepted offer (spec 336 §5), when the mandate followed an engagement. */
|
|
24
24
|
offerDigest?: Hex;
|
|
25
|
+
/** Spec 408 §2.3 — THE ADMITTED PLAN (`orchestration.planDigest`): the steps as written, tool ids and
|
|
26
|
+
* arguments with `$ref`s unresolved. Bound so a session holder cannot present a signed mandate for the
|
|
27
|
+
* same goal with a different plan, and so every step's arguments are a function of the plan the person
|
|
28
|
+
* saw and the results before it. Set whenever a requirement is raised from a parked run. */
|
|
29
|
+
planDigest?: Hex;
|
|
30
|
+
/** Spec 410 §7 — the information-flow caveat: what a write under this mandate may carry, as ontology classes.
|
|
31
|
+
* Raised from the tool contract's `carries` over the arguments the step presents; pinned into the signed wire. */
|
|
32
|
+
payloadClasses?: string[];
|
|
25
33
|
/** Unix seconds. */
|
|
26
34
|
validAfter?: number;
|
|
27
35
|
validUntil: number;
|
|
@@ -44,6 +52,26 @@ export interface MandateRequirementV1 {
|
|
|
44
52
|
/** RFC 8785 JCS → keccak256. The ONE way an intent digest is computed, so grantor, verifier and receipt
|
|
45
53
|
* cannot disagree about which bytes were bound. */
|
|
46
54
|
export declare function intentDigest(intent: unknown): Hex;
|
|
55
|
+
/** The versions an intent was approved under. `ontologyManifestDigest` = `ONTOLOGY_MANIFEST_DIGEST` from
|
|
56
|
+
* `@agenticprimitives/ontology` (the T-box manifest, spec 410 §5); `semanticsDigest` = the `definitionDigest`
|
|
57
|
+
* of the compiled `AgentHarnessDefinitionV1` the act runs under (spec 354), which pins every tool contract
|
|
58
|
+
* and adapter declaration — or `NO_SEMANTICS_DIGEST` for the bare harness, which has no compiled definition. */
|
|
59
|
+
export interface VersionBindingV1 {
|
|
60
|
+
ontologyManifestDigest: Hex;
|
|
61
|
+
semanticsDigest: Hex;
|
|
62
|
+
/** Spec 410 §10 — the LOCAL MEANINGS the acting organization declared for common terms this intent uses
|
|
63
|
+
* (`ontology.meaningRef`: `meaning:<org>:<termIri>`), so a third party reading the receipt sees which meaning the
|
|
64
|
+
* grant used. Stated by the intent, bound by the digest; a verifier never substitutes them. */
|
|
65
|
+
meaningRefs?: string[];
|
|
66
|
+
}
|
|
67
|
+
/** The bare harness: no compiled definition to bind. Stated, never omitted, so the preimage shape is one. */
|
|
68
|
+
export declare const NO_SEMANTICS_DIGEST: Hex;
|
|
69
|
+
/** The intent with its versions folded in — what a Home mints a mandate over and what a verifier recomputes. */
|
|
70
|
+
export declare function withVersions<T extends object>(intent: T, versions: VersionBindingV1): T & {
|
|
71
|
+
versions: VersionBindingV1;
|
|
72
|
+
};
|
|
73
|
+
/** The versions an intent states, or null when it states none (a pre-spec-410 intent). */
|
|
74
|
+
export declare function versionsOf(intent: unknown): VersionBindingV1 | null;
|
|
47
75
|
/** The enforcer addresses a handler may encode caveats against. */
|
|
48
76
|
export type EnforcerAddresses = EnforcerAddressMap & {
|
|
49
77
|
digestBinding: Address;
|
|
@@ -70,6 +98,12 @@ export interface MandateSubsetHandler {
|
|
|
70
98
|
* type's convention — the generic capability type grants capability IDS, the payment type grants the
|
|
71
99
|
* verb `execute`. Default: the verb. A type that grants ids overrides. */
|
|
72
100
|
stepActions?(step: MandateStep): string[];
|
|
101
|
+
/** Spec 408 §2.2 (R917-P-1) — THE ENFORCERS THIS HANDLER JUDGES ITSELF. `verifyMandateForStep` runs the
|
|
102
|
+
* caveat evaluator STRICTLY for a step that does not redeem on chain, so a caveat with no off-chain judge
|
|
103
|
+
* denies (`context-required`) — unless the handler declares that it compares that caveat's terms in
|
|
104
|
+
* `isSubset` (the payment handler bounds the PaymentEnforcer's payee/asset/amount itself). Those are
|
|
105
|
+
* recorded `judged-by-handler`, never `enforced-on-chain`. Default: none. */
|
|
106
|
+
judgesEnforcers?(enforcers: EnforcerAddresses): Address[];
|
|
73
107
|
}
|
|
74
108
|
/** The handlers a verification consults. Passed EXPLICITLY (`SubsetHandlers`) wherever possible: the
|
|
75
109
|
* ambient registry below is module-level state, and a bundle that ends up with two copies of this
|
|
@@ -130,10 +164,20 @@ export interface MandateStep {
|
|
|
130
164
|
/** Optional: the projection / offer digests when the run followed an engagement. */
|
|
131
165
|
projectionDigest?: Hex;
|
|
132
166
|
offerDigest?: Hex;
|
|
167
|
+
/** Spec 408 §2.3 — the digest of the plan THIS RUN is executing (`orchestration.planDigest`). A mandate
|
|
168
|
+
* that binds a plan is refused for a step that presents none or another. */
|
|
169
|
+
planDigest?: Hex;
|
|
170
|
+
/** Spec 410 §7 — the ontology classes this step's write carries (the tool's `carries` over the args present). */
|
|
171
|
+
payloadClasses?: readonly string[];
|
|
133
172
|
/** Type-specific arguments the handler may bound (amount, payee…). */
|
|
134
173
|
args?: Record<string, unknown>;
|
|
135
|
-
/** For the `value` caveat.
|
|
174
|
+
/** For the `value` caveat. The ETH value this step sends; a step that sends none is judged at 0 — a known
|
|
175
|
+
* fact about the step, not an assumption about the caveat. */
|
|
136
176
|
value?: bigint;
|
|
177
|
+
/** Spec 408 §2.2 (R917-P-1) — does this step REDEEM the mandate on chain, where every enforcer fires?
|
|
178
|
+
* Only then may a caveat with no off-chain judge be recorded `enforced-on-chain`; every other step is
|
|
179
|
+
* judged strictly. Declared by the tool (`ToolSpec.capability.redeemsOnChain`), never by the planner. */
|
|
180
|
+
redeemsOnChain?: boolean;
|
|
137
181
|
}
|
|
138
182
|
export interface VerifyMandateInput {
|
|
139
183
|
/** The wire the caller presented. */
|
|
@@ -149,6 +193,11 @@ export interface VerifyMandateInput {
|
|
|
149
193
|
now: number;
|
|
150
194
|
/** The handler set to consult. Defaults to the ambient registry — pass it explicitly in a bundle. */
|
|
151
195
|
handlers?: SubsetHandlers;
|
|
196
|
+
/** Spec 410 §5 — the versions THIS verifier runs with. When given, the intent digest is recomputed with
|
|
197
|
+
* these substituted for whatever the intent states, so a mandate approved under a moved T-box or a moved
|
|
198
|
+
* compiled definition is refused (`version-moved`, naming which). Absent ⇒ the intent is digested as
|
|
199
|
+
* presented (a runtime that has not adopted version binding). */
|
|
200
|
+
currentVersions?: VersionBindingV1;
|
|
152
201
|
}
|
|
153
202
|
export interface DecisionReason {
|
|
154
203
|
code: string;
|
|
@@ -199,8 +248,11 @@ export type MandateDecision = {
|
|
|
199
248
|
* 1. the actor is the delegate;
|
|
200
249
|
* 2. the delegation is live: signed by its delegator, unrevoked, in window (verifyLiveDelegation);
|
|
201
250
|
* 3. it IS a mandate: it carries an intent binding, and that binding equals the digest computed from
|
|
202
|
-
* the step's intent — the reason check (evaluateCaveats with `digests`, strict);
|
|
203
|
-
*
|
|
251
|
+
* the step's intent — the reason check (evaluateCaveats with `digests`, strict); a plan binding, when
|
|
252
|
+
* the mandate carries one, must equal the plan this run is executing (spec 408 §2.3);
|
|
253
|
+
* 4. the step's capability selector satisfies allowedMethods, and its value the value cap — STRICTLY
|
|
254
|
+
* (spec 408 §2.2): a caveat no off-chain judge can answer denies, unless the step redeems on chain
|
|
255
|
+
* (`redeemsOnChain`, where the enforcer fires) or the type handler declares it judges that caveat;
|
|
204
256
|
* 5. the handler's type-specific limits admit the step's args.
|
|
205
257
|
*
|
|
206
258
|
* Obligations are NOT decided here — they come from policy (spec 350 §3.4) and are attached by the
|
package/dist/mandate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mandate.d.ts","sourceRoot":"","sources":["../src/mandate.ts"],"names":[],"mappings":"AAoBA,OAAO,EAA4B,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAwC,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEjH,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,oGAAoG;IACpG,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,+GAA+G;IAC/G,YAAY,EAAE,GAAG,CAAC;IAClB,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,iFAAiF;IACjF,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,oBAAoB;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED;oDACoD;AACpD,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAEjD;AAID,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAC7E,+GAA+G;IAC/G,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAAC;IAC7E,kGAAkG;IAClG,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,kBAAkB,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC;IAC9J;;;sGAGkG;IAClG,UAAU,CAAC,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAChE;;;+EAG2E;IAC3E,WAAW,CAAC,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mandate.d.ts","sourceRoot":"","sources":["../src/mandate.ts"],"names":[],"mappings":"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"}
|
package/dist/mandate.js
CHANGED
|
@@ -30,6 +30,22 @@ import { ROOT_AUTHORITY } from './types.js';
|
|
|
30
30
|
export function intentDigest(intent) {
|
|
31
31
|
return keccak256(stringToBytes(jcsCanonicalize(intent)));
|
|
32
32
|
}
|
|
33
|
+
/** The bare harness: no compiled definition to bind. Stated, never omitted, so the preimage shape is one. */
|
|
34
|
+
export const NO_SEMANTICS_DIGEST = `0x${'00'.repeat(32)}`;
|
|
35
|
+
/** The intent with its versions folded in — what a Home mints a mandate over and what a verifier recomputes. */
|
|
36
|
+
export function withVersions(intent, versions) {
|
|
37
|
+
const prior = intent.versions?.meaningRefs;
|
|
38
|
+
const meaningRefs = versions.meaningRefs ?? prior;
|
|
39
|
+
return { ...intent, versions: { ontologyManifestDigest: versions.ontologyManifestDigest, semanticsDigest: versions.semanticsDigest, ...(meaningRefs?.length ? { meaningRefs: [...meaningRefs].sort() } : {}) } };
|
|
40
|
+
}
|
|
41
|
+
/** The versions an intent states, or null when it states none (a pre-spec-410 intent). */
|
|
42
|
+
export function versionsOf(intent) {
|
|
43
|
+
const v = intent?.versions;
|
|
44
|
+
if (!v || typeof v !== 'object')
|
|
45
|
+
return null;
|
|
46
|
+
const ok = (x) => typeof x === 'string' && /^0x[0-9a-fA-F]{64}$/.test(x);
|
|
47
|
+
return ok(v.ontologyManifestDigest) && ok(v.semanticsDigest) ? { ontologyManifestDigest: v.ontologyManifestDigest, semanticsDigest: v.semanticsDigest, ...(Array.isArray(v.meaningRefs) && v.meaningRefs.length ? { meaningRefs: [...v.meaningRefs] } : {}) } : null;
|
|
48
|
+
}
|
|
33
49
|
const handlers = new Map();
|
|
34
50
|
export function registerSubsetHandler(h) {
|
|
35
51
|
if (handlers.has(h.type))
|
|
@@ -82,9 +98,10 @@ export function deriveMandate(input) {
|
|
|
82
98
|
}
|
|
83
99
|
const caveats = [
|
|
84
100
|
...h.toCaveats(input.requirement, input.enforcers),
|
|
85
|
-
buildDigestBindingCaveat(input.enforcers.digestBinding, 'intent', input.requirement.intentDigest
|
|
86
|
-
...(input.requirement.projectionDigest ? [buildDigestBindingCaveat(input.enforcers.digestBinding, 'projection', input.requirement.projectionDigest
|
|
87
|
-
...(input.requirement.offerDigest ? [buildDigestBindingCaveat(input.enforcers.digestBinding, 'offer', input.requirement.offerDigest
|
|
101
|
+
buildDigestBindingCaveat(input.enforcers.digestBinding, 'intent', input.requirement.intentDigest),
|
|
102
|
+
...(input.requirement.projectionDigest ? [buildDigestBindingCaveat(input.enforcers.digestBinding, 'projection', input.requirement.projectionDigest)] : []),
|
|
103
|
+
...(input.requirement.offerDigest ? [buildDigestBindingCaveat(input.enforcers.digestBinding, 'offer', input.requirement.offerDigest)] : []),
|
|
104
|
+
...(input.requirement.planDigest ? [buildDigestBindingCaveat(input.enforcers.digestBinding, 'plan', input.requirement.planDigest)] : []),
|
|
88
105
|
];
|
|
89
106
|
const delegation = {
|
|
90
107
|
delegator: input.parent.delegate, // the party attenuating ITS authority onward
|
|
@@ -108,7 +125,7 @@ export function readMandate(d, type, enforcers, from) {
|
|
|
108
125
|
const base = h.fromCaveats(d.caveats, enforcers);
|
|
109
126
|
if (!base)
|
|
110
127
|
return null;
|
|
111
|
-
return { ...base, intentDigest: bindings.intent, ...(bindings.projection ? { projectionDigest: bindings.projection } : {}), ...(bindings.offer ? { offerDigest: bindings.offer } : {}) };
|
|
128
|
+
return { ...base, intentDigest: bindings.intent, ...(bindings.projection ? { projectionDigest: bindings.projection } : {}), ...(bindings.offer ? { offerDigest: bindings.offer } : {}), ...(bindings.plan ? { planDigest: bindings.plan } : {}) };
|
|
112
129
|
}
|
|
113
130
|
const lc = (s) => s.toLowerCase();
|
|
114
131
|
/**
|
|
@@ -118,8 +135,11 @@ const lc = (s) => s.toLowerCase();
|
|
|
118
135
|
* 1. the actor is the delegate;
|
|
119
136
|
* 2. the delegation is live: signed by its delegator, unrevoked, in window (verifyLiveDelegation);
|
|
120
137
|
* 3. it IS a mandate: it carries an intent binding, and that binding equals the digest computed from
|
|
121
|
-
* the step's intent — the reason check (evaluateCaveats with `digests`, strict);
|
|
122
|
-
*
|
|
138
|
+
* the step's intent — the reason check (evaluateCaveats with `digests`, strict); a plan binding, when
|
|
139
|
+
* the mandate carries one, must equal the plan this run is executing (spec 408 §2.3);
|
|
140
|
+
* 4. the step's capability selector satisfies allowedMethods, and its value the value cap — STRICTLY
|
|
141
|
+
* (spec 408 §2.2): a caveat no off-chain judge can answer denies, unless the step redeems on chain
|
|
142
|
+
* (`redeemsOnChain`, where the enforcer fires) or the type handler declares it judges that caveat;
|
|
123
143
|
* 5. the handler's type-specific limits admit the step's args.
|
|
124
144
|
*
|
|
125
145
|
* Obligations are NOT decided here — they come from policy (spec 350 §3.4) and are attached by the
|
|
@@ -128,7 +148,9 @@ const lc = (s) => s.toLowerCase();
|
|
|
128
148
|
*/
|
|
129
149
|
export async function verifyMandateForStep(input) {
|
|
130
150
|
const d = input.presented;
|
|
131
|
-
|
|
151
|
+
// Spec 410 §5 — recompute under the versions this verifier RUNS WITH, never the ones the intent states.
|
|
152
|
+
const cur = input.currentVersions;
|
|
153
|
+
const digestOfIntent = intentDigest(cur && input.step.intent && typeof input.step.intent === 'object' ? withVersions(input.step.intent, cur) : input.step.intent);
|
|
132
154
|
const evidence = {
|
|
133
155
|
mandateRef: input.checks.delegationDigest(d),
|
|
134
156
|
intentDigest: digestOfIntent,
|
|
@@ -147,6 +169,21 @@ export async function verifyMandateForStep(input) {
|
|
|
147
169
|
const bindings = readDigestBindings(d.caveats, input.enforcers.digestBinding);
|
|
148
170
|
if (!bindings.intent)
|
|
149
171
|
return deny('not-a-mandate', 'the presented delegation carries no intent binding — it is a standing capability, and a step needs a mandate');
|
|
172
|
+
// Spec 410 §5 — A MOVED VERSION IS NAMED, not left as a bare digest mismatch. The intent states the versions it
|
|
173
|
+
// was approved under; if they differ from the ones this verifier runs with, the recomputed digest cannot
|
|
174
|
+
// match the binding, and the person is told which world moved so the re-approval is an informed one.
|
|
175
|
+
if (cur) {
|
|
176
|
+
const stated = versionsOf(input.step.intent);
|
|
177
|
+
const moved = [];
|
|
178
|
+
if (stated && lc(stated.ontologyManifestDigest) !== lc(cur.ontologyManifestDigest))
|
|
179
|
+
moved.push(`the ontology manifest (approved under ${stated.ontologyManifestDigest.slice(0, 12)}…, this runtime binds ${cur.ontologyManifestDigest.slice(0, 12)}…)`);
|
|
180
|
+
if (stated && lc(stated.semanticsDigest) !== lc(cur.semanticsDigest))
|
|
181
|
+
moved.push(`the compiled definition (approved under ${stated.semanticsDigest.slice(0, 12)}…, this runtime runs ${cur.semanticsDigest.slice(0, 12)}…)`);
|
|
182
|
+
if (moved.length)
|
|
183
|
+
return deny('version-moved', `the intent was approved under a version that has since moved: ${moved.join('; ')} — re-approve the same intent under the current versions`);
|
|
184
|
+
if (!stated)
|
|
185
|
+
return deny('version-unbound', 'this runtime binds the ontology and definition versions into every mandate, and the presented intent states none — re-approve the intent under the current versions');
|
|
186
|
+
}
|
|
150
187
|
// Spec 384 (336 §3.8) — A STEP THAT FULFILS AN ACCEPTED OFFER runs only under a mandate that NAMES that offer.
|
|
151
188
|
// The digest-binding caveat compares an `offer` binding when the mandate carries one; a mandate that
|
|
152
189
|
// carries none would pass the comparison by default, and that is exactly how an offer would become a
|
|
@@ -155,6 +192,15 @@ export async function verifyMandateForStep(input) {
|
|
|
155
192
|
return deny('offer-not-bound', 'this step fulfils an accepted offer, and the presented mandate names no offer — an offer becomes a commitment only under the mandate that binds it');
|
|
156
193
|
if (input.step.projectionDigest && bindings.projection && lc(bindings.projection) !== lc(input.step.projectionDigest))
|
|
157
194
|
return deny('projection-mismatch', 'the mandate was granted over another projection of the intent');
|
|
195
|
+
// Spec 408 §2.3 — THE PLAN. A mandate that binds one was signed over THAT plan; a step from another plan
|
|
196
|
+
// (or from no plan the verifier was told of) is not what the person authorized, whatever its goal says.
|
|
197
|
+
if (bindings.plan && (!input.step.planDigest || lc(bindings.plan) !== lc(input.step.planDigest))) {
|
|
198
|
+
return deny('plan-mismatch', input.step.planDigest ? 'the mandate was granted over a different plan for this intent' : 'the mandate binds a plan and this step presents none');
|
|
199
|
+
}
|
|
200
|
+
// The handler first: it decides the type-specific limits (5) AND which caveats it judges itself (4).
|
|
201
|
+
const h = subsetHandlerFor(input.requirementType, input.handlers);
|
|
202
|
+
if (!h)
|
|
203
|
+
return deny('no-handler', `no subset handler for ${input.requirementType} — an authority nobody can bound is not verified`);
|
|
158
204
|
const selector = methodSelector(input.step.capability);
|
|
159
205
|
const verdicts = evaluateCaveats(d.caveats, {
|
|
160
206
|
timestamp: input.now,
|
|
@@ -162,13 +208,23 @@ export async function verifyMandateForStep(input) {
|
|
|
162
208
|
// or the asset contract (a payment). Both are what `allowedTargets` was encoded against.
|
|
163
209
|
target: (input.step.resource ?? d.delegator),
|
|
164
210
|
selector,
|
|
165
|
-
|
|
211
|
+
// The ETH value the step sends — 0 when it sends none. A fact about the step (spec 408 §2.2).
|
|
212
|
+
value: input.step.value ?? 0n,
|
|
166
213
|
digests: {
|
|
167
214
|
intent: digestOfIntent,
|
|
168
215
|
...(input.step.projectionDigest ? { projection: input.step.projectionDigest } : {}),
|
|
169
216
|
...(input.step.offerDigest ? { offer: input.step.offerDigest } : {}),
|
|
217
|
+
...(input.step.planDigest ? { plan: input.step.planDigest } : {}),
|
|
170
218
|
},
|
|
171
|
-
|
|
219
|
+
...(input.step.payloadClasses ? { payloadClasses: input.step.payloadClasses } : {}),
|
|
220
|
+
}, input.enforcers, {
|
|
221
|
+
// R917-P-1 (spec 408 §2.2): STRICT unless this step redeems on chain, where every enforcer fires. The
|
|
222
|
+
// previous `enforceOnChain: true` on every step let a caveat nobody judged off chain pass as
|
|
223
|
+
// "enforced-on-chain" for steps that never reached the chain — the evaluator's own contract forbids
|
|
224
|
+
// that for an off-chain gate, and this IS one.
|
|
225
|
+
enforceOnChain: input.step.redeemsOnChain === true,
|
|
226
|
+
judgedElsewhere: new Set((h.judgesEnforcers?.(input.enforcers) ?? []).map(lc)),
|
|
227
|
+
});
|
|
172
228
|
evidence.verdicts = verdicts.map((v) => ({ enforcer: v.enforcer, allowed: v.allowed, ...(v.reason ? { reason: v.reason } : {}) }));
|
|
173
229
|
const denied = verdicts.find((v) => !v.allowed);
|
|
174
230
|
if (denied) {
|
|
@@ -176,9 +232,6 @@ export async function verifyMandateForStep(input) {
|
|
|
176
232
|
return deny(isReason ? 'intent-mismatch' : 'caveat-denied', denied.reason ?? 'caveat denied');
|
|
177
233
|
}
|
|
178
234
|
// 5. type-specific limits
|
|
179
|
-
const h = subsetHandlerFor(input.requirementType, input.handlers);
|
|
180
|
-
if (!h)
|
|
181
|
-
return deny('no-handler', `no subset handler for ${input.requirementType} — an authority nobody can bound is not verified`);
|
|
182
235
|
const req = readMandate(d, input.requirementType, input.enforcers, input.handlers);
|
|
183
236
|
if (!req)
|
|
184
237
|
return deny('not-a-mandate', `the presented delegation does not decode as a ${input.requirementType} mandate`);
|
package/dist/mandate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../src/mandate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../src/mandate.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,oGAAoG;AACpG,qGAAqG;AACrG,wGAAwG;AACxG,yGAAyG;AACzG,qGAAqG;AACrG,EAAE;AACF,uDAAuD;AACvD,uGAAuG;AACvG,iFAAiF;AACjF,yGAAyG;AACzG,6GAA6G;AAC7G,wGAAwG;AACxG,yGAAyG;AACzG,wGAAwG;AACxG,mFAAmF;AACnF,0GAA0G;AAC1G,yGAAyG;AACzG,iEAAiE;AACjE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAY,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAkC,MAAM,2BAA2B,CAAC;AACjH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAA0B,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmD5C;oDACoD;AACpD,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,OAAO,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAyBD,6GAA6G;AAC7G,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAS,CAAC;AAEjE,gHAAgH;AAChH,MAAM,UAAU,YAAY,CAAmB,MAAS,EAAE,QAA0B;IAClF,MAAM,KAAK,GAAI,MAAoD,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC1F,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;IAClD,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACnN,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,UAAU,CAAC,MAAe;IACxC,MAAM,CAAC,GAAI,MAAoD,EAAE,QAAiD,CAAC;IACnH,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,EAAE,GAAG,CAAC,CAAU,EAAY,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvQ,CAAC;AA2CD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEzD,MAAM,UAAU,qBAAqB,CAAC,CAAuB;IAC3D,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC;IAClH,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAuB,QAAQ;IAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,CAAC;AACD,iBAAiB;AACjB,MAAM,UAAU,oBAAoB,KAAW,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAA2B,EAAE,MAA4B;IACpF,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;QAAE,OAAO,KAAK,CAAC;IACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAC7B,gGAAgG;QAChG,wBAAwB;QACxB,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AA0BD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,KAAK,CAAC,WAAW,CAAC,IAAI,qDAAqD,EAAE,CAAC;IACtJ,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,iBAAiB,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC;IACvI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wDAAwD,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IAClG,CAAC;IACD,MAAM,OAAO,GAAa;QACxB,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;QAClD,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;QACjG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1J,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3I,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzI,CAAC;IACF,MAAM,UAAU,GAAe;QAC7B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAW,6CAA6C;QACxF,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAG,iBAAiB;QACnG,OAAO;QACP,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,IAAI;KAChB,CAAC;IACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC9G,CAAC;AAED;gEACgE;AAChE,MAAM,UAAU,WAAW,CAAC,CAAa,EAAE,IAAY,EAAE,SAA4B,EAAE,IAAqB;IAC1G,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACxE,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACpP,CAAC;AA+ED,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAE1C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAyB;IAClE,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1B,wGAAwG;IACxG,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC;IAClC,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5K,MAAM,QAAQ,GAAqB;QACjC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,KAAK,CAAC,GAAG;QACtB,QAAQ,EAAE,EAAE;KACb,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,OAAe,EAAmB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEhI,WAAW;IACX,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,oBAAoB,EAAE,iDAAiD,CAAC,CAAC;IAE7H,UAAU;IACV,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5J,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEnD,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC9E,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,eAAe,EAAE,8GAA8G,CAAC,CAAC;IACnK,gHAAgH;IAChH,yGAAyG;IACzG,qGAAqG;IACrG,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,yCAAyC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACxP,IAAI,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,2CAA2C,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7N,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,eAAe,EAAE,iEAAiE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAC5L,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,iBAAiB,EAAE,qKAAqK,CAAC,CAAC;IACrN,CAAC;IACD,+GAA+G;IAC/G,qGAAqG;IACrG,qGAAqG;IACrG,iGAAiG;IACjG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC,iBAAiB,EAAE,oJAAoJ,CAAC,CAAC;IACpO,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC,qBAAqB,EAAE,+DAA+D,CAAC,CAAC;IAC3N,yGAAyG;IACzG,wGAAwG;IACxG,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACjG,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC;IACjL,CAAC;IAED,qGAAqG;IACrG,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,YAAY,EAAE,yBAAyB,KAAK,CAAC,eAAe,kDAAkD,CAAC,CAAC;IAEpI,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,eAAe,CAC9B,CAAC,CAAC,OAAmB,EACrB;QACE,SAAS,EAAE,KAAK,CAAC,GAAG;QACpB,kGAAkG;QAClG,yFAAyF;QACzF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAY;QACvD,QAAQ;QACR,8FAA8F;QAC9F,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QAC7B,OAAO,EAAE;YACP,MAAM,EAAE,cAAc;YACtB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;QACD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpF,EACD,KAAK,CAAC,SAAS,EACf;QACE,sGAAsG;QACtG,6FAA6F;QAC7F,oGAAoG;QACpG,+CAA+C;QAC/C,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI;QAClD,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC/E,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnI,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;IAChG,CAAC;IAED,0BAA0B;IAC1B,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,eAAe,EAAE,iDAAiD,KAAK,CAAC,eAAe,UAAU,CAAC,CAAC;IACzH,gGAAgG;IAChG,mGAAmG;IACnG,qGAAqG;IACrG,6FAA6F;IAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC,oBAAoB,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC5H,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC,sBAAsB,EAAE,YAAY,KAAK,CAAC,IAAI,CAAC,QAAQ,uCAAuC,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAED,0FAA0F;AAC1F,SAAS,iBAAiB,CAAC,GAAyB,EAAE,IAAiB,EAAE,CAAuB;IAC9F,OAAO;QACL,GAAG,GAAG;QACN,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,SAAS,UAAU,CAAC,IAAiB;IACnC,MAAM,GAAG,GAAoC,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC1D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -5,6 +5,10 @@ export interface SessionDelegationParams {
|
|
|
5
5
|
delegator: Address;
|
|
6
6
|
/** The freshly-generated session key the token will be signed by. */
|
|
7
7
|
sessionKeyAddress: Address;
|
|
8
|
+
/** Spec 408 §2.1 (R917-P-2) — THE DELEGATES this session key may present the principal's delegations to:
|
|
9
|
+
* the relying app's SA at a connect, the Home's service agents at the Home's own session, the agent
|
|
10
|
+
* itself for a runtime key. Required and non-empty: a leaf that names nobody is refused by the verifier. */
|
|
11
|
+
presentsTo: readonly Address[];
|
|
8
12
|
/** Unix seconds the session-key authorization is valid until (bound by a timestamp caveat). */
|
|
9
13
|
validUntil: number;
|
|
10
14
|
/** Deployed enforcer addresses (timestamp + value). */
|
|
@@ -19,7 +23,7 @@ export interface SessionDelegationParams {
|
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* Build the session-delegation leaf `delegator (principal SA) → sessionKey`, with a timestamp (TTL) +
|
|
22
|
-
* value-0 caveat, UNSIGNED. Returns `{ leaf, digest }`; the caller signs `digest` with the member's live
|
|
26
|
+
* value-0 + session-audience caveat (spec 408 §2.1), UNSIGNED. Returns `{ leaf, digest }`; the caller signs `digest` with the member's live
|
|
23
27
|
* credential and sets `leaf.signature`. v4 binds to the DELEGATOR (the principal's canonical identity), so
|
|
24
28
|
* the same credential that signs the `member→relying` delegation at connect also authorizes the session key.
|
|
25
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-delegation.d.ts","sourceRoot":"","sources":["../src/session-delegation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,MAAM,WAAW,uBAAuB;IACtC,2GAA2G;IAC3G,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,+FAA+F;IAC/F,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,uBAAuB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"session-delegation.d.ts","sourceRoot":"","sources":["../src/session-delegation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,MAAM,WAAW,uBAAuB;IACtC,2GAA2G;IAC3G,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;iHAE6G;IAC7G,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;IAC/B,+FAA+F;IAC/F,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,uBAAuB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,CAcpG"}
|