@aephia/atlas-kit 0.6.0-next.83 → 0.6.0-next.85
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 +36 -0
- package/dist/fleets/actions/dock-bounds.d.ts.map +1 -0
- package/dist/fleets/actions/dock-bounds.js +38 -0
- package/dist/fleets/actions/dock-bounds.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +1 -0
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +27 -0
- package/dist/fleets/actions/index.js.map +1 -1
- package/dist/internal/c4/docking-funding.d.ts +4 -0
- package/dist/internal/c4/docking-funding.d.ts.map +1 -0
- package/dist/internal/c4/docking-funding.js +11 -0
- package/dist/internal/c4/docking-funding.js.map +1 -0
- package/dist/internal/c4/game.d.ts +6 -0
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +10 -0
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
- package/dist/internal/planning/faction-enrollment.js +2 -10
- package/dist/internal/planning/faction-enrollment.js.map +1 -1
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts +41 -0
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-dock-funding-guard.js +153 -0
- package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
- package/dist/internal/planning/fleet-dock-funding.d.ts +10 -0
- package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
- package/dist/internal/planning/fleet-dock-funding.js +115 -0
- package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
- package/dist/internal/planning/fleet-docking.d.ts.map +1 -1
- package/dist/internal/planning/fleet-docking.js +32 -18
- package/dist/internal/planning/fleet-docking.js.map +1 -1
- package/dist/internal/planning/rent.d.ts +4 -0
- package/dist/internal/planning/rent.d.ts.map +1 -0
- package/dist/internal/planning/rent.js +13 -0
- package/dist/internal/planning/rent.js.map +1 -0
- package/dist/planning/assembly.d.ts.map +1 -1
- package/dist/planning/assembly.js +2 -0
- package/dist/planning/assembly.js.map +1 -1
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +48 -8
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +3 -2
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +13 -3
- package/dist/planning/index.js.map +1 -1
- package/dist/registry/docking.d.ts +15 -0
- package/dist/registry/docking.d.ts.map +1 -0
- package/dist/registry/docking.js +16 -0
- package/dist/registry/docking.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-dock-funding-guard.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAMtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,QAAA,MAAM,OAAO,oSAWH,CAAC;AACX,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAC1B;IACE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;CAC9C,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC,CAAC;AACN,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AACD,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GACnD,kBAAkB,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B,CAAC;AACJ,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AACD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,UAAQ,GACX,qBAAqB,CA4GvB;AACD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,WAAW,CAAC,qBAAqB,CAAC,CAOpC;AACD,iFAAiF;AACjF,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,IAAI,CAyDN"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { isAddress } from '@solana/kit';
|
|
2
|
+
import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
|
|
3
|
+
import { IDLE_TO_DOCKED_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, } from '../c4/runtime-bindings.js';
|
|
4
|
+
import { rentMinimumBalance } from './rent.js';
|
|
5
|
+
const REASONS = [
|
|
6
|
+
'unsupported-account-layout',
|
|
7
|
+
'unsupported-fleet-state',
|
|
8
|
+
'noncanonical-account-encoding',
|
|
9
|
+
'stale-definition-sequences',
|
|
10
|
+
'stale-starbase-sequence',
|
|
11
|
+
'pending-recovery',
|
|
12
|
+
'active-stimulants',
|
|
13
|
+
'funding-state-unavailable',
|
|
14
|
+
'accounts-below-rent-reserve',
|
|
15
|
+
'profile-below-storage-ceiling',
|
|
16
|
+
];
|
|
17
|
+
export function dockGrowthDebit(rate, threshold, length) {
|
|
18
|
+
return (rentMinimumBalance(rate, threshold, length + 40) -
|
|
19
|
+
rentMinimumBalance(rate, threshold, length));
|
|
20
|
+
}
|
|
21
|
+
export function normalizeFleetDockFundingGuard(value, wire = false) {
|
|
22
|
+
const bad = () => {
|
|
23
|
+
throw new InvalidActionInputError('fleet-dock-funding', value, 'the exact current docking intent, Rent quote and gross storage ceiling', 'Recreate the docking Plan; do not alter its saved qualification or debit fields.');
|
|
24
|
+
};
|
|
25
|
+
const row = { ...value };
|
|
26
|
+
const addresses = [
|
|
27
|
+
'address',
|
|
28
|
+
'game',
|
|
29
|
+
'profile',
|
|
30
|
+
'authority',
|
|
31
|
+
'certificate',
|
|
32
|
+
'character',
|
|
33
|
+
'system',
|
|
34
|
+
'starbasePlayer',
|
|
35
|
+
];
|
|
36
|
+
const quote = [
|
|
37
|
+
'maximumProfileDebit',
|
|
38
|
+
'fleetDataLengthBytes',
|
|
39
|
+
'rentLamportsPerByteYear',
|
|
40
|
+
'rentExemptionThreshold',
|
|
41
|
+
'shipSequenceId',
|
|
42
|
+
'cargoSequenceId',
|
|
43
|
+
'starbaseSequenceId',
|
|
44
|
+
];
|
|
45
|
+
const keys = [
|
|
46
|
+
'kind',
|
|
47
|
+
...addresses,
|
|
48
|
+
'keyIndex',
|
|
49
|
+
'status',
|
|
50
|
+
'describes',
|
|
51
|
+
...(row.status === 'available' ? quote : ['reason']),
|
|
52
|
+
];
|
|
53
|
+
if (keys.some((k) => !Object.hasOwn(row, k)) ||
|
|
54
|
+
Object.keys(row).some((k) => !keys.includes(k)))
|
|
55
|
+
bad();
|
|
56
|
+
for (const k of addresses)
|
|
57
|
+
if (typeof row[k] !== 'string' || !isAddress(row[k]))
|
|
58
|
+
bad();
|
|
59
|
+
if (row.kind !== 'fleet-dock-funding' ||
|
|
60
|
+
typeof row.describes !== 'string' ||
|
|
61
|
+
!row.describes.trim() ||
|
|
62
|
+
!Number.isInteger(row.keyIndex) ||
|
|
63
|
+
row.keyIndex < 0 ||
|
|
64
|
+
row.keyIndex > 65535)
|
|
65
|
+
bad();
|
|
66
|
+
if (row.status === 'available') {
|
|
67
|
+
for (const k of [
|
|
68
|
+
'maximumProfileDebit',
|
|
69
|
+
'rentLamportsPerByteYear',
|
|
70
|
+
'starbaseSequenceId',
|
|
71
|
+
]) {
|
|
72
|
+
if (wire) {
|
|
73
|
+
if (typeof row[k] !== 'string' || !/^(0|[1-9][0-9]*)$/.test(row[k]))
|
|
74
|
+
bad();
|
|
75
|
+
row[k] = BigInt(row[k]);
|
|
76
|
+
}
|
|
77
|
+
if (typeof row[k] !== 'bigint' ||
|
|
78
|
+
row[k] < 0n ||
|
|
79
|
+
row[k] > 0xffffffffffffffffn)
|
|
80
|
+
bad();
|
|
81
|
+
}
|
|
82
|
+
for (const k of [
|
|
83
|
+
'fleetDataLengthBytes',
|
|
84
|
+
'shipSequenceId',
|
|
85
|
+
'cargoSequenceId',
|
|
86
|
+
])
|
|
87
|
+
if (!Number.isInteger(row[k]) ||
|
|
88
|
+
row[k] < 0 ||
|
|
89
|
+
row[k] > 0xffffffff)
|
|
90
|
+
bad();
|
|
91
|
+
if (row.fleetDataLengthBytes < 685 ||
|
|
92
|
+
typeof row.rentExemptionThreshold !== 'number' ||
|
|
93
|
+
!Number.isFinite(row.rentExemptionThreshold) ||
|
|
94
|
+
row.rentExemptionThreshold < 0)
|
|
95
|
+
bad();
|
|
96
|
+
try {
|
|
97
|
+
if (row.maximumProfileDebit !==
|
|
98
|
+
dockGrowthDebit(row.rentLamportsPerByteYear, row.rentExemptionThreshold, row.fleetDataLengthBytes))
|
|
99
|
+
bad();
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
bad();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (row.status !== 'unavailable' ||
|
|
106
|
+
!REASONS.includes(row.reason))
|
|
107
|
+
bad();
|
|
108
|
+
return Object.freeze(row);
|
|
109
|
+
}
|
|
110
|
+
export function dockFundingGuardToJSON(guard) {
|
|
111
|
+
return Object.fromEntries(Object.entries(guard).map(([key, value]) => [
|
|
112
|
+
key,
|
|
113
|
+
typeof value === 'bigint' ? String(value) : value,
|
|
114
|
+
]));
|
|
115
|
+
}
|
|
116
|
+
/** Requires one exact funding assertion for each current docking instruction. */
|
|
117
|
+
export function validateFleetDockFundingGuards(steps, guards) {
|
|
118
|
+
const selected = guards.filter((g) => g.kind === 'fleet-dock-funding');
|
|
119
|
+
const docks = steps.filter((s) => s.instruction.programAddress === SAGE_PROGRAM_ADDRESS &&
|
|
120
|
+
IDLE_TO_DOCKED_DISCRIMINATOR.every((v, n) => s.instruction.data?.[n] === v));
|
|
121
|
+
const fail = () => {
|
|
122
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Docking requires its exact instruction-bound Profile storage safeguard. Refresh the Fleet and recreate the docking Plan before signing.');
|
|
123
|
+
};
|
|
124
|
+
if (selected.length !== docks.length)
|
|
125
|
+
fail();
|
|
126
|
+
for (const step of docks) {
|
|
127
|
+
const a = step.instruction.accounts;
|
|
128
|
+
const matches = selected.filter((g) => g.address === a[4].address);
|
|
129
|
+
if (matches.length !== 1)
|
|
130
|
+
fail();
|
|
131
|
+
const g = matches[0];
|
|
132
|
+
const data = step.instruction.data;
|
|
133
|
+
if (g.profile !== a[1].address ||
|
|
134
|
+
g.authority !== a[0].address ||
|
|
135
|
+
g.certificate !== a[2].address ||
|
|
136
|
+
g.system !== a[5].address ||
|
|
137
|
+
g.starbasePlayer !== a[6].address ||
|
|
138
|
+
g.game !== a[7].address ||
|
|
139
|
+
g.keyIndex !== (data[8] | (data[9] << 8)) ||
|
|
140
|
+
step.signers.length !== 1 ||
|
|
141
|
+
step.signers[0] !== g.authority)
|
|
142
|
+
fail();
|
|
143
|
+
for (const address of [g.address, g.character, g.system, g.starbasePlayer])
|
|
144
|
+
if (!guards.some((v) => v.kind === 'account-state' && v.address === address))
|
|
145
|
+
fail();
|
|
146
|
+
// Transaction compilation unions privileges: a locally readonly reference
|
|
147
|
+
// also becomes writable because this docking instruction writes the Fleet.
|
|
148
|
+
if (steps.some((other) => other !== step &&
|
|
149
|
+
other.instruction.accounts?.some((meta) => meta.address === g.address)))
|
|
150
|
+
throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', 'Docking cannot share a transaction with another instruction referencing the same Fleet. Confirm the first action, refresh the Fleet and prepare the next Plan separately.');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=fleet-dock-funding-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Address, RawAccount, SageContext } from '../../client/contracts.js';
|
|
2
|
+
import { type DockingSequences } from '../../registry/docking.js';
|
|
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
|
+
export declare function resolveDockFunding(ctx: SageContext, intent: DockFundingIntent, raw: readonly RawAccount[]): Promise<DockFundingAmounts>;
|
|
6
|
+
export declare function revalidateDockFunding(guard: FleetDockFundingGuard, accounts: ReadonlyMap<Address, RawAccount | undefined>, sequences: DockingSequences | undefined): {
|
|
7
|
+
profileDebit: bigint;
|
|
8
|
+
profileReserve: bigint;
|
|
9
|
+
} | undefined;
|
|
10
|
+
//# sourceMappingURL=fleet-dock-funding.d.ts.map
|
|
@@ -0,0 +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;AAOvC,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,EACtD,SAAS,CAAC,EAAE,gBAAgB,GAC3B,kBAAkB,CAyFpB;AACD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,SAAS,UAAU,EAAE,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAe7B;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,CAsB9D"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
2
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
3
|
+
import { fleetAccountDefinition } from '../c4/fleet.js';
|
|
4
|
+
import { starbasePlayerAccountDefinition } from '../c4/starbase.js';
|
|
5
|
+
import { starSystemAccountDefinition } from '../c4/world.js';
|
|
6
|
+
import { validateProfileAccountShape } from '../c4/identity.js';
|
|
7
|
+
import { hasCanonicalDockingEncoding } from '../c4/docking-funding.js';
|
|
8
|
+
import { readFreshGameDockingSequences, } from '../../registry/docking.js';
|
|
9
|
+
import { RENT_ADDRESS, readRent } from './faction-enrollment.js';
|
|
10
|
+
import { dockGrowthDebit, } from './fleet-dock-funding-guard.js';
|
|
11
|
+
function unavailable(reason) {
|
|
12
|
+
return { status: 'unavailable', reason };
|
|
13
|
+
}
|
|
14
|
+
export function calculateDockFunding(intent, accounts, sequences) {
|
|
15
|
+
const fleetRaw = accounts.get(intent.address), playerRaw = accounts.get(intent.starbasePlayer), systemRaw = accounts.get(intent.system);
|
|
16
|
+
if (!fleetRaw || !playerRaw || !systemRaw)
|
|
17
|
+
return unavailable('funding-state-unavailable');
|
|
18
|
+
const fleet = fleetAccountDefinition.decode(fleetRaw), player = starbasePlayerAccountDefinition.decode(playerRaw), system = starSystemAccountDefinition.decode(systemRaw);
|
|
19
|
+
if (fleetRaw.executable ||
|
|
20
|
+
playerRaw.executable ||
|
|
21
|
+
systemRaw.executable ||
|
|
22
|
+
fleet.game !== intent.game ||
|
|
23
|
+
fleet.ownerProfile !== intent.profile ||
|
|
24
|
+
player.playerProfile !== intent.profile ||
|
|
25
|
+
player.character !== intent.character ||
|
|
26
|
+
player.system !== intent.system ||
|
|
27
|
+
system.game !== intent.game)
|
|
28
|
+
return unavailable('funding-state-unavailable');
|
|
29
|
+
if (fleet.version !== 0 || player.version !== 0)
|
|
30
|
+
return unavailable('unsupported-account-layout');
|
|
31
|
+
if (fleet.state.kind !== 'idle')
|
|
32
|
+
return unavailable('unsupported-fleet-state');
|
|
33
|
+
if (!hasCanonicalDockingEncoding(fleetRaw, playerRaw))
|
|
34
|
+
return unavailable('noncanonical-account-encoding');
|
|
35
|
+
if (fleet.activeStimulants.length)
|
|
36
|
+
return unavailable('active-stimulants');
|
|
37
|
+
if (fleet.pendingHp !== 0 ||
|
|
38
|
+
fleet.respawningCargo.amounts.length ||
|
|
39
|
+
fleet.respawningCargo.storageCost !== 0n ||
|
|
40
|
+
player.respawning.cargo.amounts.length ||
|
|
41
|
+
player.respawning.cargo.usedStorageUnitsRaw !== 0n ||
|
|
42
|
+
player.respawning.ships.length ||
|
|
43
|
+
player.respawning.claimStakes.length ||
|
|
44
|
+
player.respawning.craftingHabs.length ||
|
|
45
|
+
player.respawning.crew.quantityRaw !== 0n ||
|
|
46
|
+
player.respawning.crew.completesAtUnixSeconds !== 0n ||
|
|
47
|
+
player.cargoRespawnEndsAtUnixSeconds !== 0n)
|
|
48
|
+
return unavailable('pending-recovery');
|
|
49
|
+
if (!system.starbase || player.sequenceId !== system.sequenceId)
|
|
50
|
+
return unavailable('stale-starbase-sequence');
|
|
51
|
+
if (!sequences)
|
|
52
|
+
return unavailable('funding-state-unavailable');
|
|
53
|
+
if (sequences.version !== 2)
|
|
54
|
+
return unavailable('unsupported-account-layout');
|
|
55
|
+
if (fleet.shipDefinitionsSeqId !== sequences.shipSequenceId ||
|
|
56
|
+
[
|
|
57
|
+
fleet.cargoHold.seqId,
|
|
58
|
+
fleet.components.seqId,
|
|
59
|
+
fleet.respawningCargo.seqId,
|
|
60
|
+
player.cargo.sequenceId,
|
|
61
|
+
player.respawning.cargo.sequenceId,
|
|
62
|
+
].some((seq) => seq !== sequences.cargoSequenceId))
|
|
63
|
+
return unavailable('stale-definition-sequences');
|
|
64
|
+
const profile = accounts.get(intent.profile), rentRaw = accounts.get(RENT_ADDRESS);
|
|
65
|
+
if (!profile || !rentRaw || profile.executable)
|
|
66
|
+
return unavailable('funding-state-unavailable');
|
|
67
|
+
validateProfileAccountShape(profile);
|
|
68
|
+
const rent = readRent(rentRaw);
|
|
69
|
+
if ([fleetRaw, playerRaw].some((a) => a.lamports < rent(a.data.length)))
|
|
70
|
+
return unavailable('accounts-below-rent-reserve');
|
|
71
|
+
const view = new DataView(rentRaw.data.buffer, rentRaw.data.byteOffset, rentRaw.data.byteLength);
|
|
72
|
+
const rentLamportsPerByteYear = view.getBigUint64(0, true), rentExemptionThreshold = view.getFloat64(8, true);
|
|
73
|
+
const maximumProfileDebit = dockGrowthDebit(rentLamportsPerByteYear, rentExemptionThreshold, fleetRaw.data.length);
|
|
74
|
+
if (profile.lamports < rent(profile.data.length) + maximumProfileDebit)
|
|
75
|
+
return unavailable('profile-below-storage-ceiling');
|
|
76
|
+
return {
|
|
77
|
+
status: 'available',
|
|
78
|
+
maximumProfileDebit,
|
|
79
|
+
fleetDataLengthBytes: fleetRaw.data.length,
|
|
80
|
+
rentLamportsPerByteYear,
|
|
81
|
+
rentExemptionThreshold,
|
|
82
|
+
shipSequenceId: sequences.shipSequenceId,
|
|
83
|
+
cargoSequenceId: sequences.cargoSequenceId,
|
|
84
|
+
starbaseSequenceId: player.sequenceId,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export async function resolveDockFunding(ctx, intent, raw) {
|
|
88
|
+
const accounts = new Map(raw.map((a) => [a.address, a]));
|
|
89
|
+
const initial = calculateDockFunding(intent, accounts);
|
|
90
|
+
if (initial.status === 'unavailable' &&
|
|
91
|
+
initial.reason !== 'funding-state-unavailable')
|
|
92
|
+
return initial;
|
|
93
|
+
const sequences = await readFreshGameDockingSequences(ctx);
|
|
94
|
+
const addresses = [intent.profile, RENT_ADDRESS];
|
|
95
|
+
const rows = await readContextRawAccounts(ctx, addresses);
|
|
96
|
+
addresses.forEach((a, n) => accounts.set(a, rows[n]));
|
|
97
|
+
return calculateDockFunding(intent, accounts, sequences);
|
|
98
|
+
}
|
|
99
|
+
export function revalidateDockFunding(guard, accounts, sequences) {
|
|
100
|
+
if (guard.status === 'unavailable')
|
|
101
|
+
return undefined;
|
|
102
|
+
const current = calculateDockFunding(guard, accounts, sequences);
|
|
103
|
+
if (current.status !== 'available' ||
|
|
104
|
+
current.maximumProfileDebit > guard.maximumProfileDebit ||
|
|
105
|
+
current.shipSequenceId !== guard.shipSequenceId ||
|
|
106
|
+
current.cargoSequenceId !== guard.cargoSequenceId ||
|
|
107
|
+
current.starbaseSequenceId !== guard.starbaseSequenceId ||
|
|
108
|
+
current.fleetDataLengthBytes !== guard.fleetDataLengthBytes)
|
|
109
|
+
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
|
+
return {
|
|
111
|
+
profileDebit: guard.maximumProfileDebit,
|
|
112
|
+
profileReserve: readRent(accounts.get(RENT_ADDRESS))(accounts.get(guard.profile).data.length),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=fleet-dock-funding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-dock-funding.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-dock-funding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-docking.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-docking.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAoB5D,kFAAkF;AAClF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,UAAU,GAAG,SAAS,EAC/B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,KAAK,EAAE;IACL,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,GACA,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"fleet-docking.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-docking.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAoB5D,kFAAkF;AAClF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,UAAU,GAAG,SAAS,EAC/B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,KAAK,EAAE;IACL,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,GACA,OAAO,CAAC,IAAI,CAAC,CAuGf"}
|
|
@@ -21,16 +21,21 @@ const ownershipDefinition = /* @__PURE__ */ adapter({
|
|
|
21
21
|
});
|
|
22
22
|
/** Validates only the measured legacy-controller/default-gating docking route. */
|
|
23
23
|
export async function validateFleetDockingPolicy(tracker, ownership, scope) {
|
|
24
|
-
const
|
|
25
|
-
throw new SageSdkError('ACTION_PRECONDITION_FAILED',
|
|
24
|
+
const invalid = (address, cause) => {
|
|
25
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Docking at Star System ${scope.system}: ${cause}. Refresh the indicated faction account for the configured Game and System, verify its current binding version, and recreate the docking Plan.`, { address });
|
|
26
26
|
};
|
|
27
|
-
if (!tracker
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
ownership.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
if (!tracker)
|
|
28
|
+
invalid(scope.address, `missing Game faction relation tracker ${scope.address}`);
|
|
29
|
+
if (!ownership)
|
|
30
|
+
invalid(scope.ownership, `missing System ownership ${scope.ownership}`);
|
|
31
|
+
if (tracker.executable)
|
|
32
|
+
invalid(scope.address, `Game faction relation tracker ${scope.address} is executable`);
|
|
33
|
+
if (ownership.executable)
|
|
34
|
+
invalid(scope.ownership, `System ownership ${scope.ownership} is executable`);
|
|
35
|
+
if (tracker.address !== scope.address)
|
|
36
|
+
invalid(scope.address, `Game faction relation tracker ${scope.address} returned account ${tracker.address}`);
|
|
37
|
+
if (ownership.address !== scope.ownership)
|
|
38
|
+
invalid(scope.ownership, `System ownership ${scope.ownership} returned account ${ownership.address}`);
|
|
34
39
|
const [trackerPda, ownershipPda] = await Promise.all([
|
|
35
40
|
getProgramDerivedAddress({
|
|
36
41
|
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
@@ -51,21 +56,30 @@ export async function validateFleetDockingPolicy(tracker, ownership, scope) {
|
|
|
51
56
|
]);
|
|
52
57
|
const relation = trackerDefinition.decode(tracker);
|
|
53
58
|
const owner = ownershipDefinition.decode(ownership);
|
|
59
|
+
if (relation.version !== 0)
|
|
60
|
+
invalid(scope.address, `Game faction relation tracker ${scope.address} has unsupported account version ${String(relation.version)}`);
|
|
61
|
+
if (owner.version !== 0)
|
|
62
|
+
invalid(scope.ownership, `System ownership ${scope.ownership} has unsupported account version ${String(owner.version)}`);
|
|
54
63
|
if (trackerPda[0] !== scope.address ||
|
|
55
|
-
ownershipPda[0] !== scope.ownership ||
|
|
56
|
-
relation.version !== 0 ||
|
|
57
|
-
owner.version !== 0 ||
|
|
58
64
|
relation.bump !== trackerPda[1] ||
|
|
65
|
+
relation.gameId !== scope.game)
|
|
66
|
+
invalid(scope.address, `Game faction relation tracker ${scope.address} does not match its canonical Game identity or PDA`);
|
|
67
|
+
if (ownershipPda[0] !== scope.ownership ||
|
|
59
68
|
owner.bump !== ownershipPda[1] ||
|
|
60
|
-
relation.gameId !== scope.game ||
|
|
61
69
|
owner.gameId !== scope.game ||
|
|
62
70
|
owner.assetKind !== 0 ||
|
|
63
71
|
!getAddressEncoder()
|
|
64
72
|
.encode(scope.system)
|
|
65
|
-
.every((byte, index) => owner.assetKey[index] === byte)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
.every((byte, index) => owner.assetKey[index] === byte))
|
|
74
|
+
invalid(scope.ownership, `System ownership ${scope.ownership} does not match its canonical Game/System identity or PDA`);
|
|
75
|
+
const unsupported = (address, cause) => {
|
|
76
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Docking at Star System ${scope.system}: ${cause}; this policy is unsupported by the qualified docking route. Choose a System with controller 0–3 and disabled territory/economic gates, or use independently qualified SDK support for this policy. Refresh the faction accounts and recreate the Plan after the policy changes.`, { address });
|
|
77
|
+
};
|
|
78
|
+
if (relation.territoryAccessEnabled !== 0)
|
|
79
|
+
unsupported(scope.address, 'territory access gating is enabled');
|
|
80
|
+
if (relation.crossFactionEconomicsEnabled !== 0)
|
|
81
|
+
unsupported(scope.address, 'cross-faction economic gating is enabled');
|
|
82
|
+
if (owner.controllingFaction > 3)
|
|
83
|
+
unsupported(scope.ownership, `controller ${String(owner.controllingFaction)} governs this System`);
|
|
70
84
|
}
|
|
71
85
|
//# sourceMappingURL=fleet-docking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-docking.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-docking.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GAEzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,+BAA+B,EAC/B,sCAAsC,EACtC,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,6EAA6E;AAC7E,kFAAkF;AAClF,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC;IAChD,IAAI,EAAE,wBAAwB;IAC9B,aAAa,EAAE,sCAAsC;IACrD,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,eAAe,CAAC,gCAAgC,EAAE;IAC3D,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CAC5B,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,eAAe,CAAC,OAAO,CAAC;IAClD,IAAI,EAAE,kBAAkB;IACxB,aAAa,EAAE,+BAA+B;IAC9C,iBAAiB,EAAE,GAAG;IACtB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,eAAe,CAAC,0BAA0B,EAAE;IACrD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CAC5B,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA+B,EAC/B,SAAiC,EACjC,KAKC;IAED,MAAM,
|
|
1
|
+
{"version":3,"file":"fleet-docking.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-docking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
/** Shared exact-range Rent calculation, including the account overhead. */
|
|
3
|
+
export declare function rentMinimumBalance(rate: bigint, threshold: number, length: number, address?: Address): bigint;
|
|
4
|
+
//# sourceMappingURL=rent.d.ts.map
|
|
@@ -0,0 +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;AAG3C,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAkE,GAC1E,MAAM,CAeR"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
2
|
+
/** Shared exact-range Rent calculation, including the account overhead. */
|
|
3
|
+
export function rentMinimumBalance(rate, threshold, length, address = 'SysvarRent111111111111111111111111111111111') {
|
|
4
|
+
const base = (BigInt(length) + 128n) * rate;
|
|
5
|
+
const result = Number(base) * threshold;
|
|
6
|
+
if (base > BigInt(Number.MAX_SAFE_INTEGER) ||
|
|
7
|
+
!Number.isFinite(result) ||
|
|
8
|
+
result < 0 ||
|
|
9
|
+
result > Number.MAX_SAFE_INTEGER)
|
|
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
|
+
return BigInt(Math.trunc(result));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=rent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rent.js","sourceRoot":"","sources":["../../../src/internal/planning/rent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,SAAiB,EACjB,MAAc,EACd,UAAmB,6CAAwD;IAE3E,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../src/planning/assembly.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../src/planning/assembly.ts"],"names":[],"mappings":"AAYA,OAAO,EAgBL,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gCAAgC,EACtC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAevC;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAgCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY,CAIlE;AAaD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,eAAe,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAA4B,GAChE,uBAAuB,CAmFzB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CA4DhE;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,IAAI,CACV,uBAAuB,EACvB,kBAAkB,GAAG,0BAA0B,CAChD,GACA,IAAI,CAqBN;AASD;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,WAAW,GAAG,gCAAgC,CAAC,CAKzD;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,uBAAuB,GACvC,OAAO,CAAC,WAAW,GAAG,gCAAgC,CAAC,CAqCzD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { validateFleetDockFundingGuards } from '../internal/planning/fleet-dock-funding-guard.js';
|
|
1
2
|
import { validateLocalMarketOrderInstructions } from '../internal/planning/local-market-order.js';
|
|
2
3
|
import { validateOpenSignalInstructions } from '../internal/planning/open-signal-guard.js';
|
|
3
4
|
import { validateRespawnInstructions } from '../internal/planning/respawn-guards.js';
|
|
@@ -100,6 +101,7 @@ export function validatePlan(plan) {
|
|
|
100
101
|
validatePlanComposition(validatedPlan.steps);
|
|
101
102
|
validateOpenSignalInstructions(validatedPlan.steps, validatedPlan.preconditions);
|
|
102
103
|
validateFleetDockingGuards(validatedPlan.steps, validatedPlan.preconditions);
|
|
104
|
+
validateFleetDockFundingGuards(validatedPlan.steps, validatedPlan.preconditions);
|
|
103
105
|
validateStarbaseSystemInstructions(validatedPlan.steps, validatedPlan.preconditions);
|
|
104
106
|
validateCharacterRegistrationInstructions(validatedPlan.steps, validatedPlan.preconditions);
|
|
105
107
|
validateRuntimeInstructions(validatedPlan.steps, validatedPlan.preconditions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assembly.js","sourceRoot":"","sources":["../../src/planning/assembly.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assembly.js","sourceRoot":"","sources":["../../src/planning/assembly.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/planning/execution.ts"],"names":[],"mappings":"
|
|
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;AAq4CD;;;;;;;;;;;;;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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { revalidateDockFunding } from '../internal/planning/fleet-dock-funding.js';
|
|
2
|
+
import { decodeDockingSequences } from '../registry/docking.js';
|
|
1
3
|
import { revalidateMarketOrder, marketOrderFundingAddresses, } from '../internal/planning/local-market-order-funding.js';
|
|
2
4
|
import { resolveFleetCrewTransfer } from '../internal/planning/fleet-crew-transfer.js';
|
|
3
5
|
import { revalidateScanCompletion } from '../internal/planning/scan-completion.js';
|
|
@@ -451,6 +453,16 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
451
453
|
const assemblyCatalogs = new Map();
|
|
452
454
|
const requiredAddresses = new Set(preconditions.map(({ address }) => address));
|
|
453
455
|
for (const guard of preconditions) {
|
|
456
|
+
if (guard.kind === 'fleet-dock-funding' && guard.status === 'available') {
|
|
457
|
+
for (const address of [
|
|
458
|
+
guard.profile,
|
|
459
|
+
guard.starbasePlayer,
|
|
460
|
+
guard.system,
|
|
461
|
+
guard.game,
|
|
462
|
+
RENT_ADDRESS,
|
|
463
|
+
])
|
|
464
|
+
requiredAddresses.add(address);
|
|
465
|
+
}
|
|
454
466
|
if (guard.kind === 'fleet-docking-policy')
|
|
455
467
|
requiredAddresses.add(guard.ownership);
|
|
456
468
|
if (guard.kind === 'local-market-order' && guard.status === 'available') {
|
|
@@ -572,8 +584,31 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
572
584
|
return new ActionPreconditionFailedError(guard, byAddress.get(error.address)?.slot, error.message, error.address);
|
|
573
585
|
return new ActionPreconditionFailedError(guard, undefined, 'Fleet prerequisites could not be validated. Refresh the related accounts and replan with a supported binding version.');
|
|
574
586
|
};
|
|
587
|
+
const dockingGuard = preconditions.find((g) => g.kind === 'fleet-dock-funding' && g.status === 'available');
|
|
588
|
+
let dockingSequences;
|
|
589
|
+
if (dockingGuard) {
|
|
590
|
+
try {
|
|
591
|
+
dockingSequences = decodeDockingSequences(byAddress.get(requireGameAddress(context)));
|
|
592
|
+
}
|
|
593
|
+
catch (error) {
|
|
594
|
+
throw fleetFailure(dockingGuard, error);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
575
597
|
for (const precondition of preconditions) {
|
|
576
598
|
const account = byAddress.get(precondition.address);
|
|
599
|
+
if (precondition.kind === 'fleet-dock-funding') {
|
|
600
|
+
try {
|
|
601
|
+
if (precondition.game !== requireGameAddress(context))
|
|
602
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'The docking Plan belongs to another Game. Recreate it with the intended Game context.');
|
|
603
|
+
const funding = revalidateDockFunding(precondition, byAddress, dockingSequences);
|
|
604
|
+
if (funding)
|
|
605
|
+
recordFunding(precondition, funding);
|
|
606
|
+
}
|
|
607
|
+
catch (error) {
|
|
608
|
+
throw fleetFailure(precondition, error);
|
|
609
|
+
}
|
|
610
|
+
continue;
|
|
611
|
+
}
|
|
577
612
|
if (precondition.kind === 'local-market-order') {
|
|
578
613
|
try {
|
|
579
614
|
if (precondition.game !== requireGameAddress(context))
|
|
@@ -635,13 +670,23 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
635
670
|
}
|
|
636
671
|
continue;
|
|
637
672
|
}
|
|
673
|
+
if (precondition.kind === 'fleet-docking-policy') {
|
|
674
|
+
try {
|
|
675
|
+
if (precondition.game !== requireGameAddress(context))
|
|
676
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'The docking faction policy belongs to another Game. Recreate the Plan with the intended Game context.', { address: precondition.address });
|
|
677
|
+
await validateFleetDockingPolicy(account, byAddress.get(precondition.ownership), precondition);
|
|
678
|
+
}
|
|
679
|
+
catch (error) {
|
|
680
|
+
throw fleetFailure(precondition, error);
|
|
681
|
+
}
|
|
682
|
+
continue;
|
|
683
|
+
}
|
|
638
684
|
let narrowed = true;
|
|
639
685
|
let cause;
|
|
640
686
|
if (precondition.kind === 'token-account')
|
|
641
687
|
narrowed =
|
|
642
688
|
account !== undefined && matchesTokenAccount(account, precondition);
|
|
643
|
-
if (precondition.kind === '
|
|
644
|
-
precondition.kind === 'movement-character' ||
|
|
689
|
+
if (precondition.kind === 'movement-character' ||
|
|
645
690
|
precondition.kind === 'starbase-system' ||
|
|
646
691
|
precondition.kind === 'fleet-mining' ||
|
|
647
692
|
isFactionTradeGuard(precondition) ||
|
|
@@ -653,11 +698,6 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
653
698
|
try {
|
|
654
699
|
if (!account)
|
|
655
700
|
narrowed = false;
|
|
656
|
-
else if (precondition.kind === 'fleet-docking-policy') {
|
|
657
|
-
narrowed = precondition.game === requireGameAddress(context);
|
|
658
|
-
if (narrowed)
|
|
659
|
-
await validateFleetDockingPolicy(account, byAddress.get(precondition.ownership), precondition);
|
|
660
|
-
}
|
|
661
701
|
else if (precondition.kind === 'movement-character') {
|
|
662
702
|
narrowed =
|
|
663
703
|
precondition.game === requireGameAddress(context) &&
|
|
@@ -754,7 +794,7 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
754
794
|
// Validation above guarantees a fresh Profile from the same finite batch.
|
|
755
795
|
const account = byAddress.get(profile);
|
|
756
796
|
if (account.lamports < funding.reserve + funding.debit)
|
|
757
|
-
throw new ActionPreconditionFailedError(funding.guard, account.slot, 'The Profile cannot cover the combined
|
|
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 or the Fleet/StarbasePlayer targets explicitly, then replan.', profile);
|
|
758
798
|
}
|
|
759
799
|
return registrationFunding;
|
|
760
800
|
}
|