@mcsherrylabs/evolver-mcp 0.10.0 → 0.12.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/deploy/release.json +1 -1
- package/dist/amount.d.ts +3 -0
- package/dist/amount.d.ts.map +1 -1
- package/dist/amount.js +9 -0
- package/dist/amount.js.map +1 -1
- package/dist/channel.d.ts +3 -4
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +27 -28
- package/dist/channel.js.map +1 -1
- package/dist/content.d.ts +49 -19
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +180 -25
- package/dist/content.js.map +1 -1
- package/dist/group-ownership.d.ts +78 -0
- package/dist/group-ownership.d.ts.map +1 -0
- package/dist/group-ownership.js +325 -0
- package/dist/group-ownership.js.map +1 -0
- package/dist/group.d.ts +2 -2
- package/dist/group.js +3 -3
- package/dist/group.js.map +1 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +10 -4
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +1 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +25 -8
- package/dist/mcp.js.map +1 -1
- package/dist/read.d.ts +99 -22
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +134 -33
- package/dist/read.js.map +1 -1
- package/dist/tools.d.ts +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +283 -55
- package/dist/tools.js.map +1 -1
- package/dist/write.d.ts +48 -13
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +88 -25
- package/dist/write.js.map +1 -1
- package/package.json +5 -3
package/deploy/release.json
CHANGED
package/dist/amount.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export type ParsedAmount = {
|
|
|
12
12
|
* Refusing here is the whole point: it happens BEFORE anything is signed, so a malformed amount
|
|
13
13
|
* costs nothing instead of becoming a transaction that does the wrong thing. */
|
|
14
14
|
export declare function parseAmount(input: string): ParsedAmount;
|
|
15
|
+
/** Toll amounts/consent ceilings additionally admit exactly "0". Never use for transfers.
|
|
16
|
+
* Supplied blank/padded values are NOT omission, and non-string values must not be coerced. */
|
|
17
|
+
export declare function parseTollAmount(input: string): ParsedAmount;
|
|
15
18
|
/** Render an amount for a result a model will read.
|
|
16
19
|
*
|
|
17
20
|
* ⚠️ `String(Number(v))` is correct below 2^53 and wrong above it, which is what makes the
|
package/dist/amount.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amount.d.ts","sourceRoot":"","sources":["../src/amount.ts"],"names":[],"mappings":"AAgBA,+FAA+F;AAC/F,eAAO,MAAM,UAAU,QAAmB,CAAC;AAK3C,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD;;;iFAGiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAkBvD;AAED;;;sEAGsE;AACtE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"amount.d.ts","sourceRoot":"","sources":["../src/amount.ts"],"names":[],"mappings":"AAgBA,+FAA+F;AAC/F,eAAO,MAAM,UAAU,QAAmB,CAAC;AAK3C,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD;;;iFAGiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAkBvD;AAED;+FAC+F;AAC/F,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAK3D;AAED;;;sEAGsE;AACtE,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAA4B,CAAC"}
|
package/dist/amount.js
CHANGED
|
@@ -36,6 +36,15 @@ export function parseAmount(input) {
|
|
|
36
36
|
return { ok: false, error: `amount ${input} exceeds the maximum the wire carries (${MAX_AMOUNT})` };
|
|
37
37
|
return { ok: true, value };
|
|
38
38
|
}
|
|
39
|
+
/** Toll amounts/consent ceilings additionally admit exactly "0". Never use for transfers.
|
|
40
|
+
* Supplied blank/padded values are NOT omission, and non-string values must not be coerced. */
|
|
41
|
+
export function parseTollAmount(input) {
|
|
42
|
+
if (typeof input === "string" && input !== input.trim())
|
|
43
|
+
return { ok: false, error: "toll amount must be a canonical nonnegative decimal string with no spaces or padding" };
|
|
44
|
+
if (input === "0")
|
|
45
|
+
return { ok: true, value: 0n };
|
|
46
|
+
return parseAmount(input);
|
|
47
|
+
}
|
|
39
48
|
/** Render an amount for a result a model will read.
|
|
40
49
|
*
|
|
41
50
|
* ⚠️ `String(Number(v))` is correct below 2^53 and wrong above it, which is what makes the
|
package/dist/amount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../src/amount.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,EAAE;AACF,iGAAiG;AACjG,iGAAiG;AACjG,gGAAgG;AAChG,EAAE;AACF,0FAA0F;AAC1F,EAAE;AACF,gGAAgG;AAChG,kGAAkG;AAClG,2BAA2B;AAC3B,0BAA0B;AAC1B,EAAE;AACF,+FAA+F;AAC/F,6FAA6F;AAE7F,+FAA+F;AAC/F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB;AAElE,oGAAoG;AACpG,MAAM,SAAS,GAAG,eAAe,CAAC;AAMlC;;;iFAGiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,OAAO,KAAK,EAAE,EAAE,CAAC;IAEtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,WAAW,KAAK,uEAAuE;gBACvF,sFAAsF;gBACtF,4EAA4E;SAC/E,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,GAAG,UAAU;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,0CAA0C,UAAU,GAAG,EAAE,CAAC;IAEtG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;sEAGsE;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../src/amount.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,EAAE;AACF,iGAAiG;AACjG,iGAAiG;AACjG,gGAAgG;AAChG,EAAE;AACF,0FAA0F;AAC1F,EAAE;AACF,gGAAgG;AAChG,kGAAkG;AAClG,2BAA2B;AAC3B,0BAA0B;AAC1B,EAAE;AACF,+FAA+F;AAC/F,6FAA6F;AAE7F,+FAA+F;AAC/F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB;AAElE,oGAAoG;AACpG,MAAM,SAAS,GAAG,eAAe,CAAC;AAMlC;;;iFAGiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,OAAO,KAAK,EAAE,EAAE,CAAC;IAEtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,WAAW,KAAK,uEAAuE;gBACvF,sFAAsF;gBACtF,4EAA4E;SAC/E,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,GAAG,UAAU;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,0CAA0C,UAAU,GAAG,EAAE,CAAC;IAEtG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;+FAC+F;AAC/F,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sFAAsF,EAAE,CAAC;IACtH,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAClD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;;sEAGsE;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC"}
|
package/dist/channel.d.ts
CHANGED
|
@@ -13,9 +13,8 @@ export interface ChannelOpsDeps {
|
|
|
13
13
|
/** A signed channel-ledger operation, as returned by a signing verb. */
|
|
14
14
|
export type ChannelSignResult = ToolResult<SignedChannel>;
|
|
15
15
|
/**
|
|
16
|
-
* Claim a channel (SIGN-14): become its owner and set its terms. Signed for `deps.identity` on
|
|
17
|
-
*
|
|
18
|
-
* reserved ledger. Does NOT submit.
|
|
16
|
+
* Claim a channel (SIGN-14): become its owner and set its terms. Signed for `deps.identity` on
|
|
17
|
+
* LEDGER.owners, targeting the caller's validated non-core/non-reserved channel. Does NOT submit.
|
|
19
18
|
*/
|
|
20
19
|
export declare function signChannelClaim(deps: ChannelOpsDeps, params: {
|
|
21
20
|
channel: string;
|
|
@@ -39,7 +38,7 @@ export declare function signChannelWrite(deps: ChannelOpsDeps, params: {
|
|
|
39
38
|
}): Promise<ChannelSignResult>;
|
|
40
39
|
/**
|
|
41
40
|
* Unclaim a channel (SIGN-15): `removeOwnerBody(ledgerId)` is the unclaim — it gives up ownership.
|
|
42
|
-
* Signed on the
|
|
41
|
+
* Signed on LEDGER.owners; the inner channel target is refused if core/reserved. Does NOT submit.
|
|
43
42
|
*/
|
|
44
43
|
export declare function signChannelUnclaim(deps: ChannelOpsDeps, params: {
|
|
45
44
|
channel: string;
|
package/dist/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;iGACiG;AACjG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAkC1D;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC,iBAAiB,CAAC,CAkD5B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,iBAAiB,CAAC,CA+C5B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,iBAAiB,CAAC,CAmB5B;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACvE,OAAO,CAAC,iBAAiB,CAAC,CA+B5B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
|
package/dist/channel.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
// identity verbs in `src/identity.ts` and the group verbs in `src/group.ts`, and resolving in the
|
|
4
4
|
// SAME `submitSigned`/`inspectSigned` path.
|
|
5
5
|
//
|
|
6
|
-
// A channel is
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
6
|
+
// A channel is any non-core ledger id outside the reserved `ce.evolver.` namespace. The caller
|
|
7
|
+
// chooses that TARGET, validated by `writableChannelId` (shared with `write.ts`) before signing.
|
|
8
|
+
// Administration uses typed SDK operation bodies on the fixed LEDGER.owners outer envelope; the
|
|
9
|
+
// validated channel stays inside the body. Only payload writes use the channel as the outer ledger.
|
|
10
|
+
// Never let this dedicated admin route bypass validation or enable arbitrary core-ledger bodies.
|
|
11
11
|
//
|
|
12
12
|
// The one new mechanism over the group/identity verbs is toll-consent: `signChannelWrite` threads
|
|
13
13
|
// `maxToll` through `composeAndSign` → `buildSignedTx`/`txIdHex`, so the signed ceiling is folded
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
//
|
|
17
17
|
// ⚠️ KEY MATERIAL NEVER REACHES A RECORD OR A REFUSAL. Records carry the channel id, write policy,
|
|
18
18
|
// toll-as-decimal-string and DA metadata only; refusals name the FIELD/PATH, never the bytes.
|
|
19
|
-
import { claimBody, removeOwnerBody, updateChannelDaBody, updateChannelWritePolicyBody, updateChannelTollBody, channelBody, } from "@mcsherrylabs/evolver-client";
|
|
19
|
+
import { LEDGER, claimBody, removeOwnerBody, updateChannelDaBody, updateChannelWritePolicyBody, updateChannelTollBody, channelBody, } from "@mcsherrylabs/evolver-client";
|
|
20
20
|
import { DEFAULT_TTL_OFFSET, composeAndSign, hexToBytes, writableChannelId } from "./write.js";
|
|
21
|
-
import {
|
|
21
|
+
import { parseTollAmount, formatAmount } from "./amount.js";
|
|
22
22
|
/** Read the chain tip to bound a transaction's life; an unreachable chain is `unreachable`, never a
|
|
23
23
|
* submit. */
|
|
24
24
|
async function tipOrUnreachable(deps) {
|
|
@@ -49,9 +49,8 @@ function policyOrRefusal(raw) {
|
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Claim a channel (SIGN-14): become its owner and set its terms. Signed for `deps.identity` on
|
|
53
|
-
*
|
|
54
|
-
* reserved ledger. Does NOT submit.
|
|
52
|
+
* Claim a channel (SIGN-14): become its owner and set its terms. Signed for `deps.identity` on
|
|
53
|
+
* LEDGER.owners, targeting the caller's validated non-core/non-reserved channel. Does NOT submit.
|
|
55
54
|
*/
|
|
56
55
|
export async function signChannelClaim(deps, params) {
|
|
57
56
|
// 1. the channel — the refusal that pays for the caller-chosen-ledger exemption.
|
|
@@ -70,7 +69,7 @@ export async function signChannelClaim(deps, params) {
|
|
|
70
69
|
// it would encode as a different positive number).
|
|
71
70
|
let tollAmount;
|
|
72
71
|
if (params.tollAmount !== undefined) {
|
|
73
|
-
const a =
|
|
72
|
+
const a = parseTollAmount(params.tollAmount);
|
|
74
73
|
if (!a.ok)
|
|
75
74
|
return { kind: "partial", what: "tollAmount", cause: a.error };
|
|
76
75
|
tollAmount = a.value;
|
|
@@ -90,17 +89,17 @@ export async function signChannelClaim(deps, params) {
|
|
|
90
89
|
fields.daThresholdM = String(params.daThresholdM);
|
|
91
90
|
if (tollAmount !== undefined)
|
|
92
91
|
fields.tollAmount = formatAmount(tollAmount);
|
|
93
|
-
if (params.tollRecipient)
|
|
92
|
+
if (tollAmount !== 0n && params.tollRecipient)
|
|
94
93
|
fields.tollRecipient = String(params.tollRecipient);
|
|
95
94
|
return composeAndSign(deps, {
|
|
96
|
-
ledgerId:
|
|
95
|
+
ledgerId: LEDGER.owners,
|
|
97
96
|
body: claimBody({
|
|
98
97
|
ledgerId: channel,
|
|
99
98
|
groupOwner: params.groupOwner ? String(params.groupOwner) : undefined,
|
|
100
99
|
daGroup: params.daGroup ? String(params.daGroup) : undefined,
|
|
101
100
|
daThresholdM: params.daThresholdM,
|
|
102
|
-
tollAmount,
|
|
103
|
-
tollRecipient: params.tollRecipient ? String(params.tollRecipient) : undefined,
|
|
101
|
+
tollAmount: tollAmount === 0n ? undefined : tollAmount,
|
|
102
|
+
tollRecipient: tollAmount !== 0n && params.tollRecipient ? String(params.tollRecipient) : undefined,
|
|
104
103
|
writePolicy,
|
|
105
104
|
}),
|
|
106
105
|
ttlRound: expiresAtRound,
|
|
@@ -141,10 +140,10 @@ export async function signChannelWrite(deps, params) {
|
|
|
141
140
|
what: "bodyHex",
|
|
142
141
|
cause: `${body.length} bytes is over the ${MAX_BODY_BYTES}-byte limit this verb will sign`,
|
|
143
142
|
};
|
|
144
|
-
// 3.
|
|
143
|
+
// 3. a canonical nonnegative ceiling when supplied; only omission defaults to no consent.
|
|
145
144
|
let maxToll = 0n;
|
|
146
|
-
if (params.maxToll !== undefined
|
|
147
|
-
const m =
|
|
145
|
+
if (params.maxToll !== undefined) {
|
|
146
|
+
const m = parseTollAmount(params.maxToll);
|
|
148
147
|
if (!m.ok)
|
|
149
148
|
return { kind: "partial", what: "maxToll", cause: m.error };
|
|
150
149
|
maxToll = m.value;
|
|
@@ -165,7 +164,7 @@ export async function signChannelWrite(deps, params) {
|
|
|
165
164
|
}
|
|
166
165
|
/**
|
|
167
166
|
* Unclaim a channel (SIGN-15): `removeOwnerBody(ledgerId)` is the unclaim — it gives up ownership.
|
|
168
|
-
* Signed on the
|
|
167
|
+
* Signed on LEDGER.owners; the inner channel target is refused if core/reserved. Does NOT submit.
|
|
169
168
|
*/
|
|
170
169
|
export async function signChannelUnclaim(deps, params) {
|
|
171
170
|
const channel = writableChannelId(params.channel);
|
|
@@ -176,7 +175,7 @@ export async function signChannelUnclaim(deps, params) {
|
|
|
176
175
|
return tip;
|
|
177
176
|
const expiresAtRound = tip + (deps.ttlOffset ?? DEFAULT_TTL_OFFSET);
|
|
178
177
|
return composeAndSign(deps, {
|
|
179
|
-
ledgerId:
|
|
178
|
+
ledgerId: LEDGER.owners,
|
|
180
179
|
body: removeOwnerBody(channel),
|
|
181
180
|
ttlRound: expiresAtRound,
|
|
182
181
|
signedAtRound: tip,
|
|
@@ -201,7 +200,7 @@ export async function signChannelWritePolicy(deps, params) {
|
|
|
201
200
|
return tip;
|
|
202
201
|
const expiresAtRound = tip + (deps.ttlOffset ?? DEFAULT_TTL_OFFSET);
|
|
203
202
|
return composeAndSign(deps, {
|
|
204
|
-
ledgerId:
|
|
203
|
+
ledgerId: LEDGER.owners,
|
|
205
204
|
body: updateChannelWritePolicyBody({ ledgerId: channel, writePolicy }),
|
|
206
205
|
ttlRound: expiresAtRound,
|
|
207
206
|
signedAtRound: tip,
|
|
@@ -220,8 +219,8 @@ export async function signChannelToll(deps, params) {
|
|
|
220
219
|
if (typeof channel !== "string")
|
|
221
220
|
return channel;
|
|
222
221
|
let tollAmount;
|
|
223
|
-
if (params.tollAmount !== undefined
|
|
224
|
-
const a =
|
|
222
|
+
if (params.tollAmount !== undefined) {
|
|
223
|
+
const a = parseTollAmount(params.tollAmount);
|
|
225
224
|
if (!a.ok)
|
|
226
225
|
return { kind: "partial", what: "tollAmount", cause: a.error };
|
|
227
226
|
tollAmount = a.value;
|
|
@@ -233,14 +232,14 @@ export async function signChannelToll(deps, params) {
|
|
|
233
232
|
const fields = { channel };
|
|
234
233
|
if (tollAmount !== undefined)
|
|
235
234
|
fields.tollAmount = formatAmount(tollAmount);
|
|
236
|
-
if (params.tollRecipient)
|
|
235
|
+
if (tollAmount !== 0n && params.tollRecipient)
|
|
237
236
|
fields.tollRecipient = String(params.tollRecipient);
|
|
238
237
|
return composeAndSign(deps, {
|
|
239
|
-
ledgerId:
|
|
238
|
+
ledgerId: LEDGER.owners,
|
|
240
239
|
body: updateChannelTollBody({
|
|
241
240
|
ledgerId: channel,
|
|
242
|
-
tollAmount,
|
|
243
|
-
tollRecipient: params.tollRecipient ? String(params.tollRecipient) : undefined,
|
|
241
|
+
tollAmount: tollAmount === 0n ? undefined : tollAmount,
|
|
242
|
+
tollRecipient: tollAmount !== 0n && params.tollRecipient ? String(params.tollRecipient) : undefined,
|
|
244
243
|
}),
|
|
245
244
|
ttlRound: expiresAtRound,
|
|
246
245
|
signedAtRound: tip,
|
|
@@ -277,7 +276,7 @@ export async function signChannelDa(deps, params) {
|
|
|
277
276
|
if (daThresholdM !== undefined)
|
|
278
277
|
fields.daThresholdM = String(daThresholdM);
|
|
279
278
|
return composeAndSign(deps, {
|
|
280
|
-
ledgerId:
|
|
279
|
+
ledgerId: LEDGER.owners,
|
|
281
280
|
body,
|
|
282
281
|
ttlRound: expiresAtRound,
|
|
283
282
|
signedAtRound: tip,
|
package/dist/channel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,qGAAqG;AACrG,kGAAkG;AAClG,4CAA4C;AAC5C,EAAE;AACF
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/content.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { ToolResult } from "./result.js";
|
|
2
|
+
/** Inline bound on ORIGINAL (decoded) bytes, for both PUT and GET: 256 KiB. */
|
|
3
|
+
export declare const CONTENT_MAX_BYTES = 262144;
|
|
4
|
+
/** Longest canonical base64 accepted/returned for `CONTENT_MAX_BYTES` bytes (349 528 chars). */
|
|
5
|
+
export declare const CONTENT_MAX_BASE64_CHARS: number;
|
|
6
|
+
/** Most principal names one restricted publication may grant. */
|
|
7
|
+
export declare const CONTENT_MAX_PRINCIPALS = 32;
|
|
2
8
|
/** Only what the content verbs need from a client. `NodeClient` satisfies it structurally, which
|
|
3
9
|
* is what lets the rules be exercised against a fake — a rule only checked against a live node
|
|
4
|
-
* is a rule that drifts.
|
|
10
|
+
* is a rule that drifts. The GET goes through the stream so the declared size is checked BEFORE
|
|
11
|
+
* any body is buffered (the SDK's `getContent` buffers an object of any size). */
|
|
5
12
|
export interface ContentClient {
|
|
6
13
|
postContent(bytes: Uint8Array, opts?: {
|
|
7
14
|
authorizedPrincipals?: string[];
|
|
@@ -9,7 +16,10 @@ export interface ContentClient {
|
|
|
9
16
|
key: string;
|
|
10
17
|
size: number;
|
|
11
18
|
}>;
|
|
12
|
-
|
|
19
|
+
getContentStream(key: string): Promise<{
|
|
20
|
+
stream: ReadableStream<Uint8Array>;
|
|
21
|
+
size: number;
|
|
22
|
+
} | null>;
|
|
13
23
|
}
|
|
14
24
|
/** What the content verbs need from the world: the SEPARATE content client (built against
|
|
15
25
|
* `contentBaseUrl`, never the chain client) plus that content endpoint name for refusals.
|
|
@@ -19,33 +29,53 @@ export interface ContentDeps {
|
|
|
19
29
|
readonly client: ContentClient;
|
|
20
30
|
readonly contentUrl: string;
|
|
21
31
|
}
|
|
22
|
-
/** What a
|
|
23
|
-
|
|
32
|
+
/** What a publish is asked to do. Raw tool parameters: every field is validated here, never coerced. */
|
|
33
|
+
export interface PublishRequest {
|
|
34
|
+
readonly access?: unknown;
|
|
35
|
+
readonly authorizedPrincipals?: unknown;
|
|
36
|
+
readonly text?: unknown;
|
|
37
|
+
readonly base64?: unknown;
|
|
38
|
+
}
|
|
39
|
+
/** What a successful publish answers: the node's key, the ORIGINAL byte size, a locally-computed
|
|
40
|
+
* sha256 over those bytes, and the access actually requested. No `txId` — content has nothing to
|
|
41
|
+
* submit later. */
|
|
24
42
|
export interface Published {
|
|
25
43
|
readonly key: string;
|
|
26
44
|
readonly size: number;
|
|
27
45
|
readonly sha256: string;
|
|
46
|
+
readonly encoding: "text" | "base64";
|
|
47
|
+
readonly access: "open" | "restricted";
|
|
48
|
+
readonly authorizedPrincipals?: readonly string[];
|
|
49
|
+
readonly note: string;
|
|
28
50
|
}
|
|
29
|
-
/** What a successful fetch answers: the
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
export
|
|
51
|
+
/** What a successful fetch answers: always the COMPLETE object (`complete: true`), its size and
|
|
52
|
+
* locally-recomputed sha256, and EXACTLY ONE of `text` (strict, lossless UTF-8) or `base64` (the
|
|
53
|
+
* actual fetched bytes). `null` is the DEFINITIVE "no reachable holder" negative (Pitfall 3). */
|
|
54
|
+
export type Fetched = {
|
|
33
55
|
readonly key: string;
|
|
34
56
|
readonly size: number;
|
|
35
57
|
readonly sha256: string;
|
|
58
|
+
readonly complete: true;
|
|
59
|
+
} & ({
|
|
60
|
+
readonly encoding: "text";
|
|
36
61
|
readonly text: string;
|
|
37
|
-
}
|
|
62
|
+
} | {
|
|
63
|
+
readonly encoding: "base64";
|
|
64
|
+
readonly base64: string;
|
|
65
|
+
});
|
|
38
66
|
/** SHA-256 of the given bytes, hex-encoded. Computed locally via Web Crypto — never trusted from
|
|
39
67
|
* the node (T-5-04). */
|
|
40
68
|
export declare function sha256Hex(bytes: Uint8Array): Promise<string>;
|
|
41
|
-
/** Publish
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
|
|
69
|
+
/** Publish text or binary to the content cache (READ-11, #8). `access` must be stated; a
|
|
70
|
+
* restricted publication forwards its grants through the SDK's `authorizedPrincipals`. Every
|
|
71
|
+
* refusal happens BEFORE any call. A node answer that is not 201 (e.g. HTTP 400 for an unknown
|
|
72
|
+
* principal) is `partial publish` naming the node's answer — never `ok`, and never retried open;
|
|
73
|
+
* a transport throw is `unreachable`. */
|
|
74
|
+
export declare function publishBytes(deps: ContentDeps, req: PublishRequest): Promise<ToolResult<Published>>;
|
|
75
|
+
/** Fetch content from the cache by key (READ-10, #8), returning the COMPLETE object as strict
|
|
76
|
+
* UTF-8 `text` (default) or `base64` of the actual bytes. Empty/blank key or unknown encoding is
|
|
77
|
+
* refused locally BEFORE any call. `null` is the DEFINITIVE negative (Pitfall 3); a throw or a
|
|
78
|
+
* short/overlong transfer is `unreachable`. Over `CONTENT_MAX_BYTES`, or not valid UTF-8 in text
|
|
79
|
+
* mode, answers `partial` with NO content — never a preview, never a lossy decode. */
|
|
80
|
+
export declare function fetchBytes(deps: ContentDeps, key: string, encoding?: unknown): Promise<ToolResult<Fetched | null>>;
|
|
51
81
|
//# sourceMappingURL=content.d.ts.map
|
package/dist/content.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,gGAAgG;AAChG,eAAO,MAAM,wBAAwB,QAAuC,CAAC;AAC7E,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;mFAGmF;AACnF,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACrG;AAED;;;0CAG0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wGAAwG;AACxG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;oBAEoB;AACpB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;kGAEkG;AAClG,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;CACzB,GAAG,CAAC;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEtH;yBACyB;AACzB,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlE;AA4ED;;;;0CAI0C;AAC1C,wBAAsB,YAAY,CAChC,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAmChC;AAED;;;;uFAIuF;AACvF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,OAAgB,GACzB,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAiDrC"}
|