@aephia/atlas-kit 0.6.0-next.86 → 0.6.0-next.87
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/fleets/actions/dock-bounds.d.ts +3 -1
- package/dist/fleets/actions/dock-bounds.d.ts.map +1 -1
- package/dist/fleets/actions/dock-bounds.js +16 -8
- package/dist/fleets/actions/dock-bounds.js.map +1 -1
- package/dist/fleets/actions/index.js +1 -1
- package/dist/fleets/actions/index.js.map +1 -1
- package/dist/internal/c4/game.d.ts +5 -1
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +68 -7
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/planning/faction-enrollment.d.ts +1 -2
- package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
- package/dist/internal/planning/faction-enrollment.js +1 -13
- package/dist/internal/planning/faction-enrollment.js.map +1 -1
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts +1 -0
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -1
- package/dist/internal/planning/fleet-dock-funding-guard.js +15 -6
- package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -1
- package/dist/internal/planning/fleet-dock-funding.d.ts +0 -1
- package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -1
- package/dist/internal/planning/fleet-dock-funding.js +35 -16
- package/dist/internal/planning/fleet-dock-funding.js.map +1 -1
- package/dist/internal/planning/fleet-respawn.d.ts +1 -1
- package/dist/internal/planning/rent.d.ts +9 -0
- package/dist/internal/planning/rent.d.ts.map +1 -1
- package/dist/internal/planning/rent.js +16 -1
- package/dist/internal/planning/rent.js.map +1 -1
- package/dist/planning/composition.d.ts +8 -0
- package/dist/planning/composition.d.ts.map +1 -1
- package/dist/planning/composition.js +22 -2
- package/dist/planning/composition.js.map +1 -1
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +16 -12
- package/dist/planning/execution.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { validateExclusiveAccountReferences } from '../../planning/composition.js';
|
|
1
2
|
import { isAddress } from '@solana/kit';
|
|
2
3
|
import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
|
|
3
4
|
import { IDLE_TO_DOCKED_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, } from '../c4/runtime-bindings.js';
|
|
4
5
|
import { rentMinimumBalance } from './rent.js';
|
|
6
|
+
export const MAXIMUM_DOCK_GROWTH_BYTES = 40;
|
|
5
7
|
const REASONS = [
|
|
6
8
|
'unsupported-account-layout',
|
|
7
9
|
'unsupported-fleet-state',
|
|
@@ -15,7 +17,7 @@ const REASONS = [
|
|
|
15
17
|
'profile-below-storage-ceiling',
|
|
16
18
|
];
|
|
17
19
|
export function dockGrowthDebit(rate, threshold, length) {
|
|
18
|
-
return (rentMinimumBalance(rate, threshold, length +
|
|
20
|
+
return (rentMinimumBalance(rate, threshold, length + MAXIMUM_DOCK_GROWTH_BYTES) -
|
|
19
21
|
rentMinimumBalance(rate, threshold, length));
|
|
20
22
|
}
|
|
21
23
|
export function normalizeFleetDockFundingGuard(value, wire = false) {
|
|
@@ -143,11 +145,18 @@ export function validateFleetDockFundingGuards(steps, guards) {
|
|
|
143
145
|
for (const address of [g.address, g.character, g.system, g.starbasePlayer])
|
|
144
146
|
if (!guards.some((v) => v.kind === 'account-state' && v.address === address))
|
|
145
147
|
fail();
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
validateExclusiveAccountReferences(steps, steps.indexOf(step), [
|
|
149
|
+
{ address: g.address, label: 'Fleet' },
|
|
150
|
+
{ address: g.starbasePlayer, label: 'StarbasePlayer' },
|
|
151
|
+
...(g.status === 'unavailable'
|
|
152
|
+
? [
|
|
153
|
+
{
|
|
154
|
+
address: g.profile,
|
|
155
|
+
label: 'Profile while docking storage bounds are unavailable',
|
|
156
|
+
},
|
|
157
|
+
]
|
|
158
|
+
: []),
|
|
159
|
+
]);
|
|
151
160
|
}
|
|
152
161
|
}
|
|
153
162
|
//# sourceMappingURL=fleet-dock-funding-guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-dock-funding-guard.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,MAAM,OAAO,GAAG;IACd,4BAA4B;IAC5B,yBAAyB;IACzB,+BAA+B;IAC/B,4BAA4B;IAC5B,yBAAyB;IACzB,kBAAkB;IAClB,mBAAmB;IACnB,2BAA2B;IAC3B,6BAA6B;IAC7B,+BAA+B;CACvB,CAAC;AAkCX,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,SAAiB,EACjB,MAAc;IAEd,OAAO,CACL,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"fleet-dock-funding-guard.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Address, RawAccount, SageContext } from '../../client/contracts.js';
|
|
2
2
|
import { type DockingSequences } from '../../registry/docking.js';
|
|
3
3
|
import { type DockFundingAmounts, type DockFundingIntent, type FleetDockFundingGuard } from './fleet-dock-funding-guard.js';
|
|
4
|
-
export declare function calculateDockFunding(intent: DockFundingIntent, accounts: ReadonlyMap<Address, RawAccount | undefined>, sequences?: DockingSequences): DockFundingAmounts;
|
|
5
4
|
export declare function resolveDockFunding(ctx: SageContext, intent: DockFundingIntent, raw: readonly RawAccount[]): Promise<DockFundingAmounts>;
|
|
6
5
|
export declare function revalidateDockFunding(guard: FleetDockFundingGuard, accounts: ReadonlyMap<Address, RawAccount | undefined>, sequences: DockingSequences | undefined): {
|
|
7
6
|
profileDebit: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-dock-funding.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"fleet-dock-funding.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AAyGvC,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,SAAS,UAAU,EAAE,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA+B7B;AACD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,EACtD,SAAS,EAAE,gBAAgB,GAAG,SAAS,GACtC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAoB9D"}
|
|
@@ -11,7 +11,7 @@ import { dockGrowthDebit, } from './fleet-dock-funding-guard.js';
|
|
|
11
11
|
function unavailable(reason) {
|
|
12
12
|
return { status: 'unavailable', reason };
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
function qualifyDockAccounts(intent, accounts) {
|
|
15
15
|
const fleetRaw = accounts.get(intent.address), playerRaw = accounts.get(intent.starbasePlayer), systemRaw = accounts.get(intent.system);
|
|
16
16
|
if (!fleetRaw || !playerRaw || !systemRaw)
|
|
17
17
|
return unavailable('funding-state-unavailable');
|
|
@@ -48,10 +48,14 @@ export function calculateDockFunding(intent, accounts, sequences) {
|
|
|
48
48
|
return unavailable('pending-recovery');
|
|
49
49
|
if (!system.starbase || player.sequenceId !== system.sequenceId)
|
|
50
50
|
return unavailable('stale-starbase-sequence');
|
|
51
|
+
return { status: 'qualified', fleetRaw, playerRaw, fleet, player };
|
|
52
|
+
}
|
|
53
|
+
function calculateDockFunding(intent, accounts, sequences, qualified = qualifyDockAccounts(intent, accounts)) {
|
|
54
|
+
if (qualified.status === 'unavailable')
|
|
55
|
+
return qualified;
|
|
56
|
+
const { fleetRaw, playerRaw, fleet, player } = qualified;
|
|
51
57
|
if (!sequences)
|
|
52
58
|
return unavailable('funding-state-unavailable');
|
|
53
|
-
if (sequences.version !== 2)
|
|
54
|
-
return unavailable('unsupported-account-layout');
|
|
55
59
|
if (fleet.shipDefinitionsSeqId !== sequences.shipSequenceId ||
|
|
56
60
|
[
|
|
57
61
|
fleet.cargoHold.seqId,
|
|
@@ -68,13 +72,14 @@ export function calculateDockFunding(intent, accounts, sequences) {
|
|
|
68
72
|
const rent = readRent(rentRaw);
|
|
69
73
|
if ([fleetRaw, playerRaw].some((a) => a.lamports < rent(a.data.length)))
|
|
70
74
|
return unavailable('accounts-below-rent-reserve');
|
|
71
|
-
const
|
|
72
|
-
const rentLamportsPerByteYear = view.getBigUint64(0, true), rentExemptionThreshold = view.getFloat64(8, true);
|
|
75
|
+
const { rentLamportsPerByteYear, rentExemptionThreshold } = rent;
|
|
73
76
|
const maximumProfileDebit = dockGrowthDebit(rentLamportsPerByteYear, rentExemptionThreshold, fleetRaw.data.length);
|
|
74
|
-
|
|
77
|
+
const profileReserve = rent(profile.data.length);
|
|
78
|
+
if (profile.lamports < profileReserve + maximumProfileDebit)
|
|
75
79
|
return unavailable('profile-below-storage-ceiling');
|
|
76
80
|
return {
|
|
77
81
|
status: 'available',
|
|
82
|
+
profileReserve,
|
|
78
83
|
maximumProfileDebit,
|
|
79
84
|
fleetDataLengthBytes: fleetRaw.data.length,
|
|
80
85
|
rentLamportsPerByteYear,
|
|
@@ -86,15 +91,29 @@ export function calculateDockFunding(intent, accounts, sequences) {
|
|
|
86
91
|
}
|
|
87
92
|
export async function resolveDockFunding(ctx, intent, raw) {
|
|
88
93
|
const accounts = new Map(raw.map((a) => [a.address, a]));
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
// Core account decoding remains strict; only optional estimate inputs below
|
|
95
|
+
// may turn an otherwise supported dock into an unavailable quote.
|
|
96
|
+
const qualified = qualifyDockAccounts(intent, accounts);
|
|
97
|
+
if (qualified.status === 'unavailable')
|
|
98
|
+
return qualified;
|
|
99
|
+
try {
|
|
100
|
+
const addresses = [intent.profile, RENT_ADDRESS];
|
|
101
|
+
const [sequences, rows] = await Promise.all([
|
|
102
|
+
readFreshGameDockingSequences(ctx),
|
|
103
|
+
readContextRawAccounts(ctx, addresses),
|
|
104
|
+
]);
|
|
105
|
+
addresses.forEach((a, n) => accounts.set(a, rows[n]));
|
|
106
|
+
const current = calculateDockFunding(intent, accounts, sequences, qualified);
|
|
107
|
+
if (current.status === 'unavailable')
|
|
108
|
+
return current;
|
|
109
|
+
const { profileReserve: _profileReserve, ...amounts } = current;
|
|
110
|
+
return amounts;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return unavailable(error instanceof SageSdkError && error.code === 'ACCOUNT_DECODE_FAILED'
|
|
114
|
+
? 'unsupported-account-layout'
|
|
115
|
+
: 'funding-state-unavailable');
|
|
116
|
+
}
|
|
98
117
|
}
|
|
99
118
|
export function revalidateDockFunding(guard, accounts, sequences) {
|
|
100
119
|
if (guard.status === 'unavailable')
|
|
@@ -109,7 +128,7 @@ export function revalidateDockFunding(guard, accounts, sequences) {
|
|
|
109
128
|
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Docking no longer has qualified storage funding within its approved Profile ceiling. Refresh the Fleet, Starbase Player, definitions and Rent; fund the Profile explicitly if needed, then recreate and inspect the Plan before signing.', { address: guard.profile });
|
|
110
129
|
return {
|
|
111
130
|
profileDebit: guard.maximumProfileDebit,
|
|
112
|
-
profileReserve:
|
|
131
|
+
profileReserve: current.profileReserve,
|
|
113
132
|
};
|
|
114
133
|
}
|
|
115
134
|
//# sourceMappingURL=fleet-dock-funding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-dock-funding.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EACL,6BAA6B,GAE9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,eAAe,GAIhB,MAAM,+BAA+B,CAAC;AAEvC,SAAS,WAAW,CAClB,MAAwE;IAExE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AAC3C,CAAC;AACD,
|
|
1
|
+
{"version":3,"file":"fleet-dock-funding.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export declare function resolveFleetRespawn(ctx: SageContext, input: FleetRespaw
|
|
|
15
15
|
readonly maximumRecoveryFee: bigint;
|
|
16
16
|
readonly maximumProfileDebit: bigint;
|
|
17
17
|
}, commitment?: Commitment): Promise<{
|
|
18
|
-
instruction: import("@solana/kit").Instruction<string, readonly (import("@solana/kit").
|
|
18
|
+
instruction: import("@solana/kit").Instruction<string, readonly (import("@solana/kit").AccountMeta<string> | import("@solana/kit").AccountLookupMeta<string, string>)[]>;
|
|
19
19
|
recoveryFee: bigint;
|
|
20
20
|
profileDebit: bigint;
|
|
21
21
|
fleetHash: string;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { RawAccount } from '../../client/contracts.js';
|
|
2
3
|
/** Shared exact-range Rent calculation, including the account overhead. */
|
|
3
4
|
export declare function rentMinimumBalance(rate: bigint, threshold: number, length: number, address?: Address): bigint;
|
|
5
|
+
export declare const RENT_ADDRESS: Address;
|
|
6
|
+
/** Validated Rent inputs and the existing minimum-balance callable. */
|
|
7
|
+
export interface RentCalculation {
|
|
8
|
+
(length: number): bigint;
|
|
9
|
+
readonly rentLamportsPerByteYear: bigint;
|
|
10
|
+
readonly rentExemptionThreshold: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function readRent(account: RawAccount): RentCalculation;
|
|
4
13
|
//# sourceMappingURL=rent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rent.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/rent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"rent.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/rent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAsB,GAC9B,MAAM,CAeR;AAED,eAAO,MAAM,YAAY,EAC0B,OAAO,CAAC;AAE3D,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,eAAe,CA6B7D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SageSdkError } from '../../client/errors.js';
|
|
2
2
|
/** Shared exact-range Rent calculation, including the account overhead. */
|
|
3
|
-
export function rentMinimumBalance(rate, threshold, length, address =
|
|
3
|
+
export function rentMinimumBalance(rate, threshold, length, address = RENT_ADDRESS) {
|
|
4
4
|
const base = (BigInt(length) + 128n) * rate;
|
|
5
5
|
const result = Number(base) * threshold;
|
|
6
6
|
if (base > BigInt(Number.MAX_SAFE_INTEGER) ||
|
|
@@ -10,4 +10,19 @@ export function rentMinimumBalance(rate, threshold, length, address = 'SysvarRen
|
|
|
10
10
|
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Profile storage funding exceeds the supported exact calculation range. Use a supported Rent configuration before planning this action.', { address });
|
|
11
11
|
return BigInt(Math.trunc(result));
|
|
12
12
|
}
|
|
13
|
+
export const RENT_ADDRESS = 'SysvarRent111111111111111111111111111111111';
|
|
14
|
+
export function readRent(account) {
|
|
15
|
+
if (account.owner !== 'Sysvar1111111111111111111111111111111111111' ||
|
|
16
|
+
account.executable ||
|
|
17
|
+
account.data.length !== 17)
|
|
18
|
+
rentFailure('The Rent sysvar has an unexpected owner or layout. Refresh the configured deployment before calculating Profile funding.', account.address);
|
|
19
|
+
const view = new DataView(account.data.buffer, account.data.byteOffset, account.data.byteLength);
|
|
20
|
+
const rate = view.getBigUint64(0, true), threshold = view.getFloat64(8, true);
|
|
21
|
+
if (!Number.isFinite(threshold) || threshold < 0 || view.getUint8(16) > 100)
|
|
22
|
+
rentFailure('The Rent sysvar contains unsupported values. Refresh the deployment or use a supported configuration before planning this action.', account.address);
|
|
23
|
+
return Object.freeze(Object.assign((length) => rentMinimumBalance(rate, threshold, length, account.address), { rentLamportsPerByteYear: rate, rentExemptionThreshold: threshold }));
|
|
24
|
+
}
|
|
25
|
+
function rentFailure(message, address) {
|
|
26
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
|
|
27
|
+
}
|
|
13
28
|
//# sourceMappingURL=rent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rent.js","sourceRoot":"","sources":["../../../src/internal/planning/rent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rent.js","sourceRoot":"","sources":["../../../src/internal/planning/rent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,SAAiB,EACjB,MAAc,EACd,UAAmB,YAAY;IAE/B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACxC,IACE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACtC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxB,MAAM,GAAG,CAAC;QACV,MAAM,GAAG,MAAM,CAAC,gBAAgB;QAEhC,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,wIAAwI,EACxI,EAAE,OAAO,EAAE,CACZ,CAAC;IACJ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GACvB,6CAAwD,CAAC;AAS3D,MAAM,UAAU,QAAQ,CAAC,OAAmB;IAC1C,IACE,OAAO,CAAC,KAAK,KAAK,6CAA6C;QAC/D,OAAO,CAAC,UAAU;QAClB,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE;QAE1B,WAAW,CACT,0HAA0H,EAC1H,OAAO,CAAC,OAAO,CAChB,CAAC;IACJ,MAAM,IAAI,GAAG,IAAI,QAAQ,CACvB,OAAO,CAAC,IAAI,CAAC,MAAM,EACnB,OAAO,CAAC,IAAI,CAAC,UAAU,EACvB,OAAO,CAAC,IAAI,CAAC,UAAU,CACxB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,EACrC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG;QACzE,WAAW,CACT,mIAAmI,EACnI,OAAO,CAAC,OAAO,CAChB,CAAC;IACJ,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,MAAM,CACX,CAAC,MAAc,EAAE,EAAE,CACjB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAC9D,EAAE,uBAAuB,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,CACrE,CACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,OAAgB;IACpD,MAAM,IAAI,YAAY,CAAC,4BAA4B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import type { Address } from '../client/contracts.js';
|
|
1
2
|
import type { PlanStep } from './index.js';
|
|
2
3
|
/** Validates the exact opaque semantic facts on one flattened Plan step list. */
|
|
3
4
|
export declare function validatePlanComposition(steps: readonly PlanStep[]): void;
|
|
5
|
+
/** Protects qualification inputs from transaction-wide privilege merging.
|
|
6
|
+
* Callers derive protected resources from mandatory instruction-bound guards.
|
|
7
|
+
*/
|
|
8
|
+
export declare function validateExclusiveAccountReferences(steps: readonly PlanStep[], requiringStepIndex: number, resources: readonly {
|
|
9
|
+
address: Address;
|
|
10
|
+
label: string;
|
|
11
|
+
}[]): void;
|
|
4
12
|
//# sourceMappingURL=composition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/planning/composition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/planning/composition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAoB,QAAQ,EAAE,MAAM,YAAY,CAAC;AA0G7D,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAsDxE;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,SAAS;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GACxD,IAAI,CAuBN"}
|
|
@@ -28,8 +28,9 @@ class IncompatiblePlanCompositionError extends SageSdkError {
|
|
|
28
28
|
requiringStepDescription;
|
|
29
29
|
requiringStepIndex;
|
|
30
30
|
resource;
|
|
31
|
-
constructor(requirement, requiringStep, requiringStepIndex, conflict) {
|
|
32
|
-
super('INCOMPATIBLE_PLAN_COMPOSITION',
|
|
31
|
+
constructor(requirement, requiringStep, requiringStepIndex, conflict, reason) {
|
|
32
|
+
super('INCOMPATIBLE_PLAN_COMPOSITION', reason ??
|
|
33
|
+
`Plan step ${String(requiringStepIndex)} ("${requiringStep.describes}") requires "${requirement.fact}" for resource "${requirement.resource}", but step ${String(conflict.stepIndex)} ("${conflict.stepDescription}") made it unavailable with its ${describeEffect(conflict.fact)}. ${REMEDY}`);
|
|
33
34
|
this.conflictingFact = Object.freeze({ ...conflict.fact });
|
|
34
35
|
this.conflictingStepDescription = conflict.stepDescription;
|
|
35
36
|
this.conflictingStepIndex = conflict.stepIndex;
|
|
@@ -92,4 +93,23 @@ export function validatePlanComposition(steps) {
|
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
}
|
|
96
|
+
/** Protects qualification inputs from transaction-wide privilege merging.
|
|
97
|
+
* Callers derive protected resources from mandatory instruction-bound guards.
|
|
98
|
+
*/
|
|
99
|
+
export function validateExclusiveAccountReferences(steps, requiringStepIndex, resources) {
|
|
100
|
+
const requiringStep = steps[requiringStepIndex];
|
|
101
|
+
for (const { address, label } of resources) {
|
|
102
|
+
const conflictingStepIndex = steps.findIndex((step, index) => index !== requiringStepIndex &&
|
|
103
|
+
step.instruction.accounts?.some((meta) => meta.address === address));
|
|
104
|
+
if (conflictingStepIndex < 0)
|
|
105
|
+
continue;
|
|
106
|
+
const conflictingStep = steps[conflictingStepIndex];
|
|
107
|
+
const fact = `exclusive transaction access to ${label}`;
|
|
108
|
+
throw new IncompatiblePlanCompositionError({ kind: 'requires', resource: address, fact }, requiringStep, requiringStepIndex, {
|
|
109
|
+
fact: { kind: 'invalidates', resource: address, fact },
|
|
110
|
+
stepDescription: conflictingStep.describes,
|
|
111
|
+
stepIndex: conflictingStepIndex,
|
|
112
|
+
}, `Plan step ${String(requiringStepIndex)} cannot share a transaction with step ${String(conflictingStepIndex)} referencing the same ${label} (${address}). ${REMEDY}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
95
115
|
//# sourceMappingURL=composition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/planning/composition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/planning/composition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/planning/execution.ts"],"names":[],"mappings":"AAqEA,OAAO,EAcL,KAAK,UAAU,EACf,KAAK,SAAS,EAOd,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAEV,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAMhC,OAAO,KAAK,EAAE,IAAI,EAAoB,MAAM,YAAY,CAAC;AAgBzD;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,YAAY,GAAG,kBAAkB,GAAG,cAAc,CAAC;IAC9D,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC,CAAC;AAEP;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAYhF,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,UAAU,EAAE,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/planning/execution.ts"],"names":[],"mappings":"AAqEA,OAAO,EAcL,KAAK,UAAU,EACf,KAAK,SAAS,EAOd,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAEV,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAMhC,OAAO,KAAK,EAAE,IAAI,EAAoB,MAAM,YAAY,CAAC;AAgBzD;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,YAAY,GAAG,kBAAkB,GAAG,cAAc,CAAC;IAC9D,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC,CAAC;AAEP;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAYhF,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,UAAU,EAAE,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAy4CD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,mFAAmF;AACnF,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,kBAAkB,EAC3B,SAAS,CAAC,EAAE,sBAAsB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CA2G9B"}
|
|
@@ -584,22 +584,26 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
584
584
|
return new ActionPreconditionFailedError(guard, byAddress.get(error.address)?.slot, error.message, error.address);
|
|
585
585
|
return new ActionPreconditionFailedError(guard, undefined, 'Fleet prerequisites could not be validated. Refresh the related accounts and replan with a supported binding version.');
|
|
586
586
|
};
|
|
587
|
-
const dockingGuard = preconditions.find((g) => g.kind === 'fleet-dock-funding' && g.status === 'available');
|
|
588
587
|
let dockingSequences;
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
588
|
+
let dockingSequencesRead = false;
|
|
589
|
+
// Exact account-state diagnostics must win over dependent funding estimates,
|
|
590
|
+
// including hydrated Plans whose guard order differs from the planner's.
|
|
591
|
+
const ordered = preconditions.some((g) => g.kind === 'fleet-dock-funding')
|
|
592
|
+
? [
|
|
593
|
+
...preconditions.filter((g) => g.kind === 'account-state'),
|
|
594
|
+
...preconditions.filter((g) => g.kind !== 'account-state'),
|
|
595
|
+
]
|
|
596
|
+
: preconditions;
|
|
597
|
+
for (const precondition of ordered) {
|
|
598
598
|
const account = byAddress.get(precondition.address);
|
|
599
599
|
if (precondition.kind === 'fleet-dock-funding') {
|
|
600
600
|
try {
|
|
601
601
|
if (precondition.game !== requireGameAddress(context))
|
|
602
|
-
throw new SageSdkError('ACTION_PRECONDITION_FAILED',
|
|
602
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `The docking Plan belongs to Game ${precondition.game}, but the context uses Game ${requireGameAddress(context)}. Recreate it with the intended Game context.`, { address: precondition.address });
|
|
603
|
+
if (precondition.status === 'available' && !dockingSequencesRead) {
|
|
604
|
+
dockingSequences = decodeDockingSequences(byAddress.get(precondition.game));
|
|
605
|
+
dockingSequencesRead = true;
|
|
606
|
+
}
|
|
603
607
|
const funding = revalidateDockFunding(precondition, byAddress, dockingSequences);
|
|
604
608
|
if (funding)
|
|
605
609
|
recordFunding(precondition, funding);
|
|
@@ -794,7 +798,7 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
794
798
|
// Validation above guarantees a fresh Profile from the same finite batch.
|
|
795
799
|
const account = byAddress.get(profile);
|
|
796
800
|
if (account.lamports < funding.reserve + funding.debit)
|
|
797
|
-
throw new ActionPreconditionFailedError(funding.guard, account.slot, 'The Profile cannot cover the combined Profile storage debits while preserving its rent reserve. Fund the Profile
|
|
801
|
+
throw new ActionPreconditionFailedError(funding.guard, account.slot, 'The Profile cannot cover the combined Profile storage debits while preserving its rent reserve. Fund the Profile explicitly, then recreate and inspect the Plans.', profile);
|
|
798
802
|
}
|
|
799
803
|
return registrationFunding;
|
|
800
804
|
}
|