@aephia/atlas-kit 0.6.0-next.37 → 0.6.0-next.38
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/index.d.ts +24 -15
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +90 -49
- package/dist/fleets/actions/index.js.map +1 -1
- package/dist/internal/c4/fleet-arrival.d.ts +27 -0
- package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
- package/dist/internal/c4/fleet-arrival.js +39 -0
- package/dist/internal/c4/fleet-arrival.js.map +1 -0
- package/dist/internal/c4/runtime-bindings.d.ts +2 -1
- package/dist/internal/c4/runtime-bindings.d.ts.map +1 -1
- package/dist/internal/c4/runtime-bindings.js +2 -1
- package/dist/internal/c4/runtime-bindings.js.map +1 -1
- package/dist/internal/planning/arrival-guards.d.ts +20 -0
- package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
- package/dist/internal/planning/arrival-guards.js +231 -0
- package/dist/internal/planning/arrival-guards.js.map +1 -0
- package/dist/internal/planning/fleet-arrival.d.ts +49 -0
- package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
- package/dist/internal/planning/fleet-arrival.js +134 -0
- package/dist/internal/planning/fleet-arrival.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 +32 -2
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +16 -4
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +28 -14
- package/dist/planning/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { AccountRole, isAddress } from '@solana/kit';
|
|
2
|
+
import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
|
|
3
|
+
import { deepFreeze } from '../immutable-tree.js';
|
|
4
|
+
import { SAGE_PROGRAM_ADDRESS, PLAYER_PROFILE_PROGRAM_ADDRESS, STOP_SUBWARP_DISCRIMINATOR, THE_ONE_FLEET_STATE_HANDLER_DISCRIMINATOR, } from '../c4/runtime-bindings.js';
|
|
5
|
+
function invalid(field, value) {
|
|
6
|
+
throw new InvalidActionInputError(field, value, 'the exact supported Fleet arrival safeguard', 'Refresh the Fleet and recreate its arrival Plan with this SDK version.');
|
|
7
|
+
}
|
|
8
|
+
function record(value, field, keys) {
|
|
9
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
10
|
+
invalid(field, value);
|
|
11
|
+
const row = value;
|
|
12
|
+
if (keys.some((key) => !Object.hasOwn(row, key)) ||
|
|
13
|
+
Object.keys(row).some((key) => !keys.includes(key)))
|
|
14
|
+
invalid(field, value);
|
|
15
|
+
return row;
|
|
16
|
+
}
|
|
17
|
+
function address(value, field) {
|
|
18
|
+
if (typeof value !== 'string' || !isAddress(value))
|
|
19
|
+
invalid(field, value);
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
function integer(value, field, wire, bits = 64) {
|
|
23
|
+
if (wire) {
|
|
24
|
+
if (typeof value !== 'string' ||
|
|
25
|
+
!/^(0|[1-9][0-9]*|-[1-9][0-9]*)$/.test(value))
|
|
26
|
+
invalid(field, value);
|
|
27
|
+
value = BigInt(value);
|
|
28
|
+
}
|
|
29
|
+
const bound = 1n << BigInt(bits - 1);
|
|
30
|
+
if (typeof value !== 'bigint' || value < -bound || value >= bound)
|
|
31
|
+
invalid(field, value);
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
function coordinates(value, field, wire) {
|
|
35
|
+
const row = record(value, field, ['x', 'y']);
|
|
36
|
+
return { x: integer(row.x, field, wire), y: integer(row.y, field, wire) };
|
|
37
|
+
}
|
|
38
|
+
export function normalizeArrivalGuard(value, field, wire = false) {
|
|
39
|
+
const route = value?.intent
|
|
40
|
+
?.route;
|
|
41
|
+
if (route !== 'legacy' && route !== 'authorized')
|
|
42
|
+
invalid(field, value);
|
|
43
|
+
const row = record(value, field, [
|
|
44
|
+
'kind',
|
|
45
|
+
'address',
|
|
46
|
+
'describes',
|
|
47
|
+
'intent',
|
|
48
|
+
'character',
|
|
49
|
+
...(route === 'authorized' ? ['regionTracker'] : []),
|
|
50
|
+
]);
|
|
51
|
+
if (row.kind !== 'fleet-arrival' || typeof row.describes !== 'string')
|
|
52
|
+
invalid(field, value);
|
|
53
|
+
const intent = record(row.intent, field, [
|
|
54
|
+
'fleet',
|
|
55
|
+
'game',
|
|
56
|
+
'profile',
|
|
57
|
+
'route',
|
|
58
|
+
'journey',
|
|
59
|
+
route === 'legacy' ? 'funder' : 'authorization',
|
|
60
|
+
]);
|
|
61
|
+
const kind = intent.journey?.kind;
|
|
62
|
+
if (kind !== 'subwarp' && kind !== 'warp')
|
|
63
|
+
invalid(field, intent.journey);
|
|
64
|
+
if (route === 'authorized' && kind !== 'subwarp')
|
|
65
|
+
invalid(field, intent.journey);
|
|
66
|
+
const journey = record(intent.journey, field, [
|
|
67
|
+
'kind',
|
|
68
|
+
'from',
|
|
69
|
+
'to',
|
|
70
|
+
'departure',
|
|
71
|
+
kind === 'subwarp' ? 'duration' : 'arrival',
|
|
72
|
+
]);
|
|
73
|
+
const departure = integer(journey.departure, field, wire);
|
|
74
|
+
const base = {
|
|
75
|
+
from: coordinates(journey.from, field, wire),
|
|
76
|
+
to: coordinates(journey.to, field, wire),
|
|
77
|
+
departure,
|
|
78
|
+
};
|
|
79
|
+
const duration = kind === 'subwarp'
|
|
80
|
+
? integer(journey.duration, field, wire, 128)
|
|
81
|
+
: undefined;
|
|
82
|
+
const arrival = kind === 'warp' ? integer(journey.arrival, field, wire) : undefined;
|
|
83
|
+
if ((duration !== undefined && duration < 0n) ||
|
|
84
|
+
(arrival !== undefined && arrival < departure))
|
|
85
|
+
invalid(field, journey);
|
|
86
|
+
const profile = address(intent.profile, field);
|
|
87
|
+
const shared = {
|
|
88
|
+
fleet: address(intent.fleet, field),
|
|
89
|
+
game: address(intent.game, field),
|
|
90
|
+
profile,
|
|
91
|
+
journey: kind === 'subwarp'
|
|
92
|
+
? { ...base, kind: 'subwarp', duration: duration }
|
|
93
|
+
: { ...base, kind: 'warp', arrival: arrival },
|
|
94
|
+
};
|
|
95
|
+
let normalized;
|
|
96
|
+
if (route === 'legacy')
|
|
97
|
+
normalized = { ...shared, route, funder: address(intent.funder, field) };
|
|
98
|
+
else {
|
|
99
|
+
const auth = record(intent.authorization, field, [
|
|
100
|
+
'authority',
|
|
101
|
+
'profile',
|
|
102
|
+
'keyIndex',
|
|
103
|
+
]);
|
|
104
|
+
if (auth.profile !== profile ||
|
|
105
|
+
typeof auth.keyIndex !== 'number' ||
|
|
106
|
+
!Number.isInteger(auth.keyIndex) ||
|
|
107
|
+
auth.keyIndex < 0 ||
|
|
108
|
+
auth.keyIndex > 65535)
|
|
109
|
+
invalid(field, auth);
|
|
110
|
+
normalized = {
|
|
111
|
+
...shared,
|
|
112
|
+
route,
|
|
113
|
+
authorization: {
|
|
114
|
+
authority: address(auth.authority, field),
|
|
115
|
+
profile,
|
|
116
|
+
keyIndex: auth.keyIndex,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (row.address !== normalized.fleet)
|
|
121
|
+
invalid(field, row.address);
|
|
122
|
+
return deepFreeze({
|
|
123
|
+
kind: 'fleet-arrival',
|
|
124
|
+
address: normalized.fleet,
|
|
125
|
+
describes: row.describes,
|
|
126
|
+
intent: normalized,
|
|
127
|
+
character: address(row.character, field),
|
|
128
|
+
...(route === 'authorized'
|
|
129
|
+
? { regionTracker: address(row.regionTracker, field) }
|
|
130
|
+
: {}),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
export function arrivalGuardToJSON(guard) {
|
|
134
|
+
const j = guard.intent.journey;
|
|
135
|
+
return {
|
|
136
|
+
...guard,
|
|
137
|
+
intent: {
|
|
138
|
+
...guard.intent,
|
|
139
|
+
journey: {
|
|
140
|
+
...j,
|
|
141
|
+
from: { x: String(j.from.x), y: String(j.from.y) },
|
|
142
|
+
to: { x: String(j.to.x), y: String(j.to.y) },
|
|
143
|
+
departure: String(j.departure),
|
|
144
|
+
...(j.kind === 'subwarp'
|
|
145
|
+
? { duration: String(j.duration) }
|
|
146
|
+
: { arrival: String(j.arrival) }),
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function fail() {
|
|
152
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'This arrival instruction has no matching journey, authority and XP safeguards or has an unsupported layout. Refresh the Fleet and recreate the Plan with planFleetSettleArrival before signing.');
|
|
153
|
+
}
|
|
154
|
+
/** Preserve old instructions as data, but never execute unguarded historical settlement. */
|
|
155
|
+
export function validateArrivalInstructions(steps, guards) {
|
|
156
|
+
const arrivals = guards.filter((guard) => guard.kind === 'fleet-arrival');
|
|
157
|
+
const matched = new Set();
|
|
158
|
+
for (let index = 0; index < steps.length; index += 1) {
|
|
159
|
+
const step = steps[index];
|
|
160
|
+
const ix = step.instruction;
|
|
161
|
+
if (ix.programAddress !== SAGE_PROGRAM_ADDRESS)
|
|
162
|
+
continue;
|
|
163
|
+
const is = (disc) => disc.every((byte, offset) => ix.data?.[offset] === byte);
|
|
164
|
+
const generic = is(THE_ONE_FLEET_STATE_HANDLER_DISCRIMINATOR);
|
|
165
|
+
const stop = is(STOP_SUBWARP_DISCRIMINATOR);
|
|
166
|
+
if (!generic && !stop)
|
|
167
|
+
continue;
|
|
168
|
+
const metas = ix.accounts ?? [];
|
|
169
|
+
const fleet = metas[generic ? 1 : 5]?.address;
|
|
170
|
+
const candidates = arrivals.filter((g) => g.address === fleet &&
|
|
171
|
+
g.intent.route === (generic ? 'legacy' : 'authorized'));
|
|
172
|
+
if (!generic && candidates.length === 0)
|
|
173
|
+
continue; // Explicit raw early-stop has no arrival intent.
|
|
174
|
+
if (steps
|
|
175
|
+
.slice(0, index)
|
|
176
|
+
.some((prior) => prior.instruction.accounts?.some((meta) => meta.address === fleet)))
|
|
177
|
+
throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', `An earlier instruction references Fleet ${fleet} before its guarded arrival. Account write privileges are transaction-wide. Confirm that transaction separately, then refresh the Fleet and recreate its arrival Plan.`);
|
|
178
|
+
if (candidates.length > 1)
|
|
179
|
+
throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', `Arrival Plans repeat Fleet ${fleet}. Settle this journey once, then refresh before preparing another arrival.`);
|
|
180
|
+
if (candidates.length === 0)
|
|
181
|
+
fail();
|
|
182
|
+
const guard = candidates[0];
|
|
183
|
+
const intent = guard.intent;
|
|
184
|
+
const xp = guards.find((g) => g.kind === 'xp-runtime' &&
|
|
185
|
+
g.intent.game === intent.game &&
|
|
186
|
+
g.intent.character === (generic ? undefined : guard.character) &&
|
|
187
|
+
g.intent.structure === undefined);
|
|
188
|
+
if (!xp ||
|
|
189
|
+
xp.kind !== 'xp-runtime' ||
|
|
190
|
+
xp.intent.gameVersion !== (generic ? 0 : 2))
|
|
191
|
+
fail();
|
|
192
|
+
const r = AccountRole.READONLY, w = AccountRole.WRITABLE;
|
|
193
|
+
const expected = intent.route === 'legacy'
|
|
194
|
+
? [
|
|
195
|
+
[intent.funder, AccountRole.WRITABLE_SIGNER],
|
|
196
|
+
[intent.fleet, w],
|
|
197
|
+
[intent.game, r],
|
|
198
|
+
[SAGE_PROGRAM_ADDRESS, r],
|
|
199
|
+
[SAGE_PROGRAM_ADDRESS, r],
|
|
200
|
+
[guard.character, w],
|
|
201
|
+
]
|
|
202
|
+
: [
|
|
203
|
+
[intent.authorization.authority, AccountRole.READONLY_SIGNER],
|
|
204
|
+
[intent.profile, w],
|
|
205
|
+
[SAGE_PROGRAM_ADDRESS, r],
|
|
206
|
+
[PLAYER_PROFILE_PROGRAM_ADDRESS, r],
|
|
207
|
+
[guard.character, w],
|
|
208
|
+
[intent.fleet, w],
|
|
209
|
+
[intent.game, r],
|
|
210
|
+
[guard.regionTracker, r],
|
|
211
|
+
[xp.accounts.xpBudget, w],
|
|
212
|
+
[xp.accounts.xpBudgetConfig, r],
|
|
213
|
+
];
|
|
214
|
+
const signer = intent.route === 'legacy'
|
|
215
|
+
? intent.funder
|
|
216
|
+
: intent.authorization.authority;
|
|
217
|
+
if (ix.data?.length !== (generic ? 8 : 10) ||
|
|
218
|
+
metas.length !== expected.length ||
|
|
219
|
+
expected.some(([address, role], i) => !address || metas[i]?.address !== address || metas[i]?.role !== role) ||
|
|
220
|
+
step.signers.length !== 1 ||
|
|
221
|
+
step.signers[0] !== signer)
|
|
222
|
+
fail();
|
|
223
|
+
if (intent.route === 'authorized' &&
|
|
224
|
+
ix.data[8] + 256 * ix.data[9] !== intent.authorization.keyIndex)
|
|
225
|
+
fail();
|
|
226
|
+
matched.add(guard);
|
|
227
|
+
}
|
|
228
|
+
if (arrivals.some((guard) => !matched.has(guard)))
|
|
229
|
+
fail();
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=arrival-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrival-guards.js","sourceRoot":"","sources":["../../../src/internal/planning/arrival-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Address, SageContext } from '../../client/contracts.js';
|
|
2
|
+
import { type FleetArrivalJourney } from '../c4/fleet-arrival.js';
|
|
3
|
+
import type { PlanAuthorization } from './authorization-adapter.js';
|
|
4
|
+
export type FleetArrivalOptions = {
|
|
5
|
+
readonly funder: Address;
|
|
6
|
+
readonly authorization?: never;
|
|
7
|
+
} | {
|
|
8
|
+
readonly authorization: PlanAuthorization;
|
|
9
|
+
readonly funder?: never;
|
|
10
|
+
};
|
|
11
|
+
type ArrivalBase = {
|
|
12
|
+
readonly fleet: Address;
|
|
13
|
+
readonly game: Address;
|
|
14
|
+
readonly profile: Address;
|
|
15
|
+
readonly journey: FleetArrivalJourney;
|
|
16
|
+
};
|
|
17
|
+
export type FleetArrivalIntent = ArrivalBase & ({
|
|
18
|
+
readonly route: 'legacy';
|
|
19
|
+
readonly funder: Address;
|
|
20
|
+
readonly authorization?: never;
|
|
21
|
+
} | {
|
|
22
|
+
readonly route: 'authorized';
|
|
23
|
+
readonly authorization: Omit<PlanAuthorization, 'certificate'>;
|
|
24
|
+
readonly funder?: never;
|
|
25
|
+
});
|
|
26
|
+
/** Read fresh movement, chain time and direct authority without retaining signer data. */
|
|
27
|
+
export declare function resolveFleetArrival(ctx: SageContext, fleetAddress: Address, options: FleetArrivalOptions): Promise<{
|
|
28
|
+
intent: FleetArrivalIntent;
|
|
29
|
+
character: Address;
|
|
30
|
+
regionTracker: Address | undefined;
|
|
31
|
+
xp: {
|
|
32
|
+
readonly gameVersion: 0 | 2;
|
|
33
|
+
readonly intent: import("./xp-runtime.js").XpRuntimeIntent;
|
|
34
|
+
readonly accounts: import("./xp-runtime.js").XpRuntimeAccounts;
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
/** Recheck only the selected journey/authority, permitting unrelated Fleet and XP changes. */
|
|
38
|
+
export declare function validateFleetArrivalIntent(ctx: SageContext, intent: FleetArrivalIntent): Promise<{
|
|
39
|
+
intent: FleetArrivalIntent;
|
|
40
|
+
character: Address;
|
|
41
|
+
regionTracker: Address | undefined;
|
|
42
|
+
xp: {
|
|
43
|
+
readonly gameVersion: 0 | 2;
|
|
44
|
+
readonly intent: import("./xp-runtime.js").XpRuntimeIntent;
|
|
45
|
+
readonly accounts: import("./xp-runtime.js").XpRuntimeAccounts;
|
|
46
|
+
};
|
|
47
|
+
}>;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=fleet-arrival.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-arrival.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-arrival.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAahC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAC3E,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAC1C,CACI;IACE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;CAChC,GACD;IACE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;CACzB,CACJ,CAAC;AAaJ,0FAA0F;AAC1F,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,mBAAmB;;;;;;;;;GAgJ7B;AACD,8FAA8F;AAC9F,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,kBAAkB;;;;;;;;;GA2B3B"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
2
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
3
|
+
import { decodeFleetArrival, } from '../c4/fleet-arrival.js';
|
|
4
|
+
import { findCharacterPda, characterAccountDefinition, profileAccountDefinition, } from '../c4/identity.js';
|
|
5
|
+
import { deriveRegionTrackerAddress, regionTrackerAccountDefinition, } from '../c4/factions.js';
|
|
6
|
+
import { PROFILE_SCOPE, SAGE_SCOPE } from '../c4/profile-permissions.js';
|
|
7
|
+
import { requireGameAddress } from '../game-context.js';
|
|
8
|
+
import { CLOCK_ADDRESS, readClock } from './faction-enrollment.js';
|
|
9
|
+
import { resolveXpRuntime } from './xp-runtime.js';
|
|
10
|
+
function fail(address, reason) {
|
|
11
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Arrival settlement ${reason}. Refresh the Fleet and prepare a new arrival Plan after completed travel.`, { address });
|
|
12
|
+
}
|
|
13
|
+
function required(raw, address) {
|
|
14
|
+
if (!raw || raw.address !== address || raw.executable)
|
|
15
|
+
fail(address, `requires the existing non-executable account ${address}`);
|
|
16
|
+
return raw;
|
|
17
|
+
}
|
|
18
|
+
/** Read fresh movement, chain time and direct authority without retaining signer data. */
|
|
19
|
+
export async function resolveFleetArrival(ctx, fleetAddress, options) {
|
|
20
|
+
const game = requireGameAddress(ctx);
|
|
21
|
+
const [fleetRaw, clockRaw] = await readContextRawAccounts(ctx, [
|
|
22
|
+
fleetAddress,
|
|
23
|
+
CLOCK_ADDRESS,
|
|
24
|
+
]);
|
|
25
|
+
const fleet = await decodeFleetArrival(required(fleetRaw, fleetAddress));
|
|
26
|
+
if (fleet.game !== game || fleet.canonical !== fleetAddress)
|
|
27
|
+
fail(fleetAddress, 'requires the canonical Fleet for the configured Game');
|
|
28
|
+
const journey = fleet.journey;
|
|
29
|
+
if (!journey)
|
|
30
|
+
fail(fleetAddress, 'requires a travelling Fleet; Idle and other non-travel states have no arrival to settle');
|
|
31
|
+
const now = readClock(required(clockRaw, CLOCK_ADDRESS));
|
|
32
|
+
if (journey.kind === 'subwarp'
|
|
33
|
+
? journey.duration < 0n
|
|
34
|
+
: journey.arrival < journey.departure)
|
|
35
|
+
fail(fleetAddress, 'found invalid journey timing');
|
|
36
|
+
if (now < journey.departure ||
|
|
37
|
+
(journey.kind === 'subwarp'
|
|
38
|
+
? (now - journey.departure) * (1n << 56n) < journey.duration
|
|
39
|
+
: now < journey.arrival))
|
|
40
|
+
fail(fleetAddress, 'cannot stop an unfinished journey that has not yet arrived; wait for chain time to reach the destination or choose the separate intentional early-stop action');
|
|
41
|
+
const character = await findCharacterPda(fleet.profile, game);
|
|
42
|
+
// Only the authorized route consumes Character XP. Legacy funders must receive
|
|
43
|
+
// an authorization remedy even when the XP budget is missing.
|
|
44
|
+
const xp = await resolveXpRuntime(ctx, {
|
|
45
|
+
game,
|
|
46
|
+
...(options.authorization ? { character } : {}),
|
|
47
|
+
});
|
|
48
|
+
if (xp.gameVersion === 2 && journey.kind === 'warp')
|
|
49
|
+
fail(fleetAddress, 'for Game version 2 warp is unsupported; wait for a separately supported warp settlement route');
|
|
50
|
+
if (xp.gameVersion === 2 && !options.authorization)
|
|
51
|
+
fail(fleetAddress, 'for this XP-era subwarp requires explicit Profile authorization; supply { authorization } rather than a funder');
|
|
52
|
+
if (xp.gameVersion === 0 && options.authorization)
|
|
53
|
+
fail(fleetAddress, 'on legacy Game version 0 requires an explicit funder; use the legacy { funder } route');
|
|
54
|
+
const regionTracker = options.authorization
|
|
55
|
+
? await deriveRegionTrackerAddress(game)
|
|
56
|
+
: undefined;
|
|
57
|
+
const addresses = [
|
|
58
|
+
character,
|
|
59
|
+
...(options.authorization ? [fleet.profile, regionTracker] : []),
|
|
60
|
+
];
|
|
61
|
+
const accounts = await readContextRawAccounts(ctx, addresses);
|
|
62
|
+
const characterData = characterAccountDefinition.decode(required(accounts[0], character));
|
|
63
|
+
if (characterData.game !== game ||
|
|
64
|
+
characterData.playerProfile !== fleet.profile)
|
|
65
|
+
fail(character, 'requires the canonical Character for this Game and owning Profile');
|
|
66
|
+
let intent;
|
|
67
|
+
if (options.authorization) {
|
|
68
|
+
const authorization = options.authorization;
|
|
69
|
+
if (authorization.certificate !== undefined ||
|
|
70
|
+
authorization.profile !== fleet.profile ||
|
|
71
|
+
fleet.subProfile !== SAGE_SCOPE)
|
|
72
|
+
fail(fleetAddress, 'supports only the owning Profile and its direct key, without a certificate or delegated sub-Profile');
|
|
73
|
+
if (!Number.isInteger(authorization.keyIndex) ||
|
|
74
|
+
authorization.keyIndex < 0 ||
|
|
75
|
+
authorization.keyIndex > 65535)
|
|
76
|
+
fail(fleet.profile, 'requires a valid direct Profile key index');
|
|
77
|
+
const profile = profileAccountDefinition.decode(required(accounts[1], fleet.profile));
|
|
78
|
+
const key = profile.keys[authorization.keyIndex];
|
|
79
|
+
if (!key || key.address !== authorization.authority)
|
|
80
|
+
fail(fleet.profile, 'requires the current direct key index for the selected authority');
|
|
81
|
+
if (key.expiresAtRaw >= 0n && key.expiresAtRaw < now)
|
|
82
|
+
fail(fleet.profile, 'cannot use an expired Profile key; renew it or select an unexpired direct key');
|
|
83
|
+
if (!((key.scope === PROFILE_SCOPE && (key.permissionsRaw & 1n) !== 0n) ||
|
|
84
|
+
(key.scope === SAGE_SCOPE && (key.permissionsRaw & (1n << 10n)) !== 0n)))
|
|
85
|
+
fail(fleet.profile, 'requires direct Profile AUTH or SAGE moveFleet permission; select an appropriately scoped key');
|
|
86
|
+
const tracker = regionTrackerAccountDefinition.decode(required(accounts[2], regionTracker));
|
|
87
|
+
if (tracker.game !== game)
|
|
88
|
+
fail(regionTracker, 'requires the canonical RegionTracker bound to this Game');
|
|
89
|
+
intent = {
|
|
90
|
+
fleet: fleetAddress,
|
|
91
|
+
game,
|
|
92
|
+
profile: fleet.profile,
|
|
93
|
+
journey,
|
|
94
|
+
route: 'authorized',
|
|
95
|
+
authorization: {
|
|
96
|
+
profile: authorization.profile,
|
|
97
|
+
authority: authorization.authority,
|
|
98
|
+
keyIndex: authorization.keyIndex,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
else
|
|
103
|
+
intent = {
|
|
104
|
+
fleet: fleetAddress,
|
|
105
|
+
game,
|
|
106
|
+
profile: fleet.profile,
|
|
107
|
+
journey,
|
|
108
|
+
route: 'legacy',
|
|
109
|
+
funder: options.funder,
|
|
110
|
+
};
|
|
111
|
+
return { intent, character, regionTracker, xp };
|
|
112
|
+
}
|
|
113
|
+
/** Recheck only the selected journey/authority, permitting unrelated Fleet and XP changes. */
|
|
114
|
+
export async function validateFleetArrivalIntent(ctx, intent) {
|
|
115
|
+
const current = await resolveFleetArrival(ctx, intent.fleet, intent.route === 'authorized'
|
|
116
|
+
? { authorization: intent.authorization }
|
|
117
|
+
: { funder: intent.funder });
|
|
118
|
+
const a = intent.journey, b = current.intent.journey;
|
|
119
|
+
if (current.intent.game !== intent.game ||
|
|
120
|
+
current.intent.profile !== intent.profile ||
|
|
121
|
+
a.kind !== b.kind ||
|
|
122
|
+
a.departure !== b.departure ||
|
|
123
|
+
a.from.x !== b.from.x ||
|
|
124
|
+
a.from.y !== b.from.y ||
|
|
125
|
+
a.to.x !== b.to.x ||
|
|
126
|
+
a.to.y !== b.to.y ||
|
|
127
|
+
(a.kind === 'subwarp' &&
|
|
128
|
+
b.kind === 'subwarp' &&
|
|
129
|
+
a.duration !== b.duration) ||
|
|
130
|
+
(a.kind === 'warp' && b.kind === 'warp' && a.arrival !== b.arrival))
|
|
131
|
+
fail(intent.fleet, 'journey or ownership changed after planning');
|
|
132
|
+
return current;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=fleet-arrival.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-arrival.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-arrival.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAGA,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,CA8BhE;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 { validateArrivalInstructions } from '../internal/planning/arrival-guards.js';
|
|
1
2
|
import { validateRuntimeInstructions } from '../internal/planning/runtime-guards.js';
|
|
2
3
|
import { validateMiningStopInstructions } from '../internal/planning/mining-stop.js';
|
|
3
4
|
import { appendTransactionMessageInstructions, compileTransaction, createTransactionMessage, getTransactionSize, getTransactionSizeLimit, isAddress, isSolanaError, setTransactionMessageComputeUnitLimit, setTransactionMessageComputeUnitPrice, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNT_ADDRESSES, SOLANA_ERROR__TRANSACTION__TOO_MANY_ACCOUNTS_IN_INSTRUCTION, SOLANA_ERROR__TRANSACTION__TOO_MANY_INSTRUCTIONS, SOLANA_ERROR__TRANSACTION__TOO_MANY_SIGNER_ADDRESSES, } from '@solana/kit';
|
|
@@ -89,6 +90,7 @@ export function validatePlan(plan) {
|
|
|
89
90
|
const validatedPlan = plan;
|
|
90
91
|
validatePlanComposition(validatedPlan.steps);
|
|
91
92
|
validateRuntimeInstructions(validatedPlan.steps, validatedPlan.preconditions);
|
|
93
|
+
validateArrivalInstructions(validatedPlan.steps, validatedPlan.preconditions);
|
|
92
94
|
validateMiningStopInstructions(validatedPlan.steps, validatedPlan.preconditions);
|
|
93
95
|
for (let index = 0; index < validatedPlan.steps.length; index += 1) {
|
|
94
96
|
if (validatedPlan.steps[index]?.instruction.programAddress ===
|
|
@@ -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":"AAoCA,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;AAgnCD;;;;;;;;;;;;;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,CAiD9B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { validateFleetArrivalIntent } from '../internal/planning/fleet-arrival.js';
|
|
1
2
|
import { isRuntimeGuard, revalidateRuntimeGuards, } from '../internal/planning/runtime-guards.js';
|
|
2
3
|
import { isFactionTradeGuard } from '../internal/planning/faction-trade-guards.js';
|
|
3
4
|
import { resolveShipImportFunding, validateShipImportFunding, } from '../internal/planning/ship-import-funding.js';
|
|
@@ -303,8 +304,37 @@ function matchesTokenAccount(account, expected) {
|
|
|
303
304
|
decoder.decode(account.data.subarray(32, 64)) === expected.owner);
|
|
304
305
|
}
|
|
305
306
|
async function checkPreconditions(context, allPreconditions, commitment) {
|
|
306
|
-
|
|
307
|
-
const
|
|
307
|
+
const checkedXp = new Set();
|
|
308
|
+
for (const guard of allPreconditions) {
|
|
309
|
+
if (guard.kind !== 'fleet-arrival')
|
|
310
|
+
continue;
|
|
311
|
+
try {
|
|
312
|
+
const current = await validateFleetArrivalIntent(context, guard.intent);
|
|
313
|
+
for (const xp of allPreconditions) {
|
|
314
|
+
if (xp.kind !== 'xp-runtime' ||
|
|
315
|
+
xp.intent.game !== current.xp.intent.game ||
|
|
316
|
+
xp.intent.character !== current.xp.intent.character ||
|
|
317
|
+
xp.intent.structure !== current.xp.intent.structure)
|
|
318
|
+
continue;
|
|
319
|
+
if (xp.intent.gameVersion !== current.xp.gameVersion ||
|
|
320
|
+
['xpBudget', 'xpBudgetConfig', 'xpAccrual'].some((key) => xp.accounts[key] !== current.xp.accounts[key]))
|
|
321
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Arrival XP runtime changed. Refresh the Fleet and recreate the Plan.');
|
|
322
|
+
checkedXp.add(xp);
|
|
323
|
+
}
|
|
324
|
+
if (current.character !== guard.character ||
|
|
325
|
+
current.regionTracker !== guard.regionTracker)
|
|
326
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Arrival account links changed. Refresh the Fleet and recreate the Plan.');
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
throw new ActionPreconditionFailedError(guard, undefined, error instanceof SageSdkError
|
|
330
|
+
? error.message
|
|
331
|
+
: 'Arrival prerequisites could not be validated. Refresh the Fleet and recreate the Plan.');
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
await revalidateRuntimeGuards(context, allPreconditions
|
|
335
|
+
.filter(isRuntimeGuard)
|
|
336
|
+
.filter((guard) => !checkedXp.has(guard)));
|
|
337
|
+
const preconditions = allPreconditions.filter((guard) => !isRuntimeGuard(guard) && guard.kind !== 'fleet-arrival');
|
|
308
338
|
const fleetCreationAccounts = new Map();
|
|
309
339
|
const fleetAssemblyAccounts = new Map();
|
|
310
340
|
const importFundingAccounts = new Map();
|