@aephia/atlas-kit 0.6.0-next.60 → 0.6.0-next.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/internal/c4/scan-detection-codecs.d.ts +1 -1
- package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -1
- package/dist/internal/c4/scan-detection-codecs.js +1 -1
- package/dist/internal/c4/scan-detection-codecs.js.map +1 -1
- package/dist/internal/planning/fleet-respawn.d.ts +1 -1
- package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
- package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion-guard.js +94 -0
- package/dist/internal/planning/scan-completion-guard.js.map +1 -0
- package/dist/internal/planning/scan-completion.d.ts +20 -0
- package/dist/internal/planning/scan-completion.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion.js +220 -0
- package/dist/internal/planning/scan-completion.js.map +1 -0
- package/dist/internal/planning/xp-runtime.d.ts +1 -1
- package/dist/internal/planning/xp-runtime.d.ts.map +1 -1
- package/dist/internal/planning/xp-runtime.js +5 -3
- package/dist/internal/planning/xp-runtime.js.map +1 -1
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +4 -0
- 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 +61 -5
- package/dist/planning/index.js.map +1 -1
- package/dist/scanning/actions/index.d.ts +64 -0
- package/dist/scanning/actions/index.d.ts.map +1 -1
- package/dist/scanning/actions/index.js +92 -0
- package/dist/scanning/actions/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -85,7 +85,7 @@ const systems = await getStarSystems(ctx);
|
|
|
85
85
|
| `@aephia/atlas-kit/mining/actions` | Address-only Fleet mining-start planning for selected Asteroid resources |
|
|
86
86
|
| `@aephia/atlas-kit/planning` | Plans/PlanSequences, assembly, signer-free simulation, and execution |
|
|
87
87
|
| `@aephia/atlas-kit/scanning` | Scan patterns, cooldowns, stats, and Character state |
|
|
88
|
-
| `@aephia/atlas-kit/scanning/actions` | Explicit signal setup
|
|
88
|
+
| `@aephia/atlas-kit/scanning/actions` | Explicit signal setup, detection, reveal, recovery and result handling |
|
|
89
89
|
| `@aephia/atlas-kit/rewards` | ATLAS reward configuration, treasuries, and commitments |
|
|
90
90
|
| `@aephia/atlas-kit/starbases` | Player-local Starbase state, facilities, and upgrades |
|
|
91
91
|
| `@aephia/atlas-kit/starbases/actions` | Address-only StarbasePlayer registration planning |
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/** Narrow generated codecs for already-validated detection inputs and instruction data. */
|
|
2
|
-
export { getDetectSignalInstructionDataEncoder, getFleetDecoder, getScanPatternPolicyDecoder, getScanSignalDecoder, getRegionTrackerDecoder, } from '@staratlas/dev-sage';
|
|
2
|
+
export { getDetectSignalInstructionDataEncoder, getFleetDecoder, getScanPatternPolicyDecoder, getScanSignalDecoder, getScanLootProfileDecoder, getRegionTrackerDecoder, } from '@staratlas/dev-sage';
|
|
3
3
|
//# sourceMappingURL=scan-detection-codecs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-detection-codecs.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/scan-detection-codecs.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EACL,qCAAqC,EACrC,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"scan-detection-codecs.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/scan-detection-codecs.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EACL,qCAAqC,EACrC,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/** Narrow generated codecs for already-validated detection inputs and instruction data. */
|
|
2
|
-
export { getDetectSignalInstructionDataEncoder, getFleetDecoder, getScanPatternPolicyDecoder, getScanSignalDecoder, getRegionTrackerDecoder, } from '@staratlas/dev-sage';
|
|
2
|
+
export { getDetectSignalInstructionDataEncoder, getFleetDecoder, getScanPatternPolicyDecoder, getScanSignalDecoder, getScanLootProfileDecoder, getRegionTrackerDecoder, } from '@staratlas/dev-sage';
|
|
3
3
|
//# sourceMappingURL=scan-detection-codecs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-detection-codecs.js","sourceRoot":"","sources":["../../../src/internal/c4/scan-detection-codecs.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EACL,qCAAqC,EACrC,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"scan-detection-codecs.js","sourceRoot":"","sources":["../../../src/internal/c4/scan-detection-codecs.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EACL,qCAAqC,EACrC,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
@@ -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;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AccountRole, type Address } from '@solana/kit';
|
|
2
|
+
import type { PlanPrecondition, PlanStep } from '../../planning/index.js';
|
|
3
|
+
export declare const scanCompletionDiscriminators: {
|
|
4
|
+
readonly resolve: readonly [96, 45, 125, 49, 46, 46, 76, 14];
|
|
5
|
+
readonly recover: readonly [130, 65, 225, 34, 252, 152, 114, 233];
|
|
6
|
+
readonly acknowledge: readonly [33, 250, 139, 239, 15, 76, 52, 246];
|
|
7
|
+
readonly abandon: readonly [59, 182, 211, 220, 65, 149, 43, 65];
|
|
8
|
+
readonly expire: readonly [14, 229, 95, 115, 71, 40, 175, 76];
|
|
9
|
+
readonly 'forfeit-entropy': readonly [69, 106, 188, 174, 25, 63, 240, 48];
|
|
10
|
+
};
|
|
11
|
+
export type ScanCompletionOperation = keyof typeof scanCompletionDiscriminators;
|
|
12
|
+
export interface ScanCompletionGuard {
|
|
13
|
+
readonly kind: 'scan-completion';
|
|
14
|
+
readonly operation: ScanCompletionOperation;
|
|
15
|
+
readonly address: Address;
|
|
16
|
+
readonly game: Address;
|
|
17
|
+
readonly signal: Address;
|
|
18
|
+
readonly profile: Address;
|
|
19
|
+
readonly character: Address;
|
|
20
|
+
readonly authority: Address;
|
|
21
|
+
readonly policy: Address;
|
|
22
|
+
readonly loot: Address;
|
|
23
|
+
readonly xpBudget: Address;
|
|
24
|
+
readonly xpConfig: Address;
|
|
25
|
+
readonly keyIndex: number;
|
|
26
|
+
readonly status: number;
|
|
27
|
+
readonly expectedSequence: bigint;
|
|
28
|
+
readonly configHash: string;
|
|
29
|
+
readonly describes: string;
|
|
30
|
+
readonly dataHash?: never;
|
|
31
|
+
}
|
|
32
|
+
export declare const SLOT_HASHES_ADDRESS: Address;
|
|
33
|
+
export declare function completionAuthorized(operation: ScanCompletionOperation): operation is "recover" | "acknowledge" | "abandon";
|
|
34
|
+
export declare function completionInstruction(g: ScanCompletionGuard): {
|
|
35
|
+
programAddress: Address<"C4SAgeKLgb3pTLWhVr6NRwWyYFuTR7ZeSXFrzoLwfMzF">;
|
|
36
|
+
accounts: {
|
|
37
|
+
address: Address;
|
|
38
|
+
role: AccountRole;
|
|
39
|
+
}[];
|
|
40
|
+
data: Uint8Array<ArrayBuffer>;
|
|
41
|
+
};
|
|
42
|
+
export declare function validateCompletionInstructions(steps: readonly PlanStep[], guards: readonly PlanPrecondition[]): void;
|
|
43
|
+
//# sourceMappingURL=scan-completion-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-completion-guard.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/scan-completion-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAK1E,eAAO,MAAM,4BAA4B;;;;;;;CAO/B,CAAC;AACX,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,4BAA4B,CAAC;AAChF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,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;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B;AACD,eAAO,MAAM,mBAAmB,EACmB,OAAO,CAAC;AAC3D,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,uBAAuB,sDAMtE;AACD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,mBAAmB;;;;;;;EA0D3D;AACD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,SAAS,gBAAgB,EAAE,QAsCpC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { AccountRole } from '@solana/kit';
|
|
2
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
3
|
+
import { SAGE_PROGRAM_ADDRESS, PLAYER_PROFILE_PROGRAM_ADDRESS, } from '../c4/runtime-bindings.js';
|
|
4
|
+
export const scanCompletionDiscriminators = {
|
|
5
|
+
resolve: [96, 45, 125, 49, 46, 46, 76, 14],
|
|
6
|
+
recover: [130, 65, 225, 34, 252, 152, 114, 233],
|
|
7
|
+
acknowledge: [33, 250, 139, 239, 15, 76, 52, 246],
|
|
8
|
+
abandon: [59, 182, 211, 220, 65, 149, 43, 65],
|
|
9
|
+
expire: [14, 229, 95, 115, 71, 40, 175, 76],
|
|
10
|
+
'forfeit-entropy': [69, 106, 188, 174, 25, 63, 240, 48],
|
|
11
|
+
};
|
|
12
|
+
export const SLOT_HASHES_ADDRESS = 'SysvarS1otHashes111111111111111111111111111';
|
|
13
|
+
export function completionAuthorized(operation) {
|
|
14
|
+
return (operation === 'recover' ||
|
|
15
|
+
operation === 'abandon' ||
|
|
16
|
+
operation === 'acknowledge');
|
|
17
|
+
}
|
|
18
|
+
export function completionInstruction(g) {
|
|
19
|
+
const r = AccountRole.READONLY, w = AccountRole.WRITABLE;
|
|
20
|
+
const validation = [
|
|
21
|
+
[g.authority, AccountRole.READONLY_SIGNER],
|
|
22
|
+
[g.profile, w],
|
|
23
|
+
[SAGE_PROGRAM_ADDRESS, r],
|
|
24
|
+
[PLAYER_PROFILE_PROGRAM_ADDRESS, r],
|
|
25
|
+
];
|
|
26
|
+
const pairs = g.operation === 'resolve'
|
|
27
|
+
? [
|
|
28
|
+
[g.game, r],
|
|
29
|
+
[g.signal, w],
|
|
30
|
+
[g.character, w],
|
|
31
|
+
[g.policy, r],
|
|
32
|
+
[g.loot, r],
|
|
33
|
+
[SLOT_HASHES_ADDRESS, r],
|
|
34
|
+
[g.address, r],
|
|
35
|
+
[g.xpBudget, w],
|
|
36
|
+
[g.xpConfig, r],
|
|
37
|
+
]
|
|
38
|
+
: g.operation === 'recover'
|
|
39
|
+
? [
|
|
40
|
+
...validation,
|
|
41
|
+
[g.game, r],
|
|
42
|
+
[g.address, w],
|
|
43
|
+
[g.profile, r],
|
|
44
|
+
[g.character, r],
|
|
45
|
+
[g.character, w],
|
|
46
|
+
[g.signal, w],
|
|
47
|
+
[g.xpBudget, w],
|
|
48
|
+
[g.xpConfig, r],
|
|
49
|
+
]
|
|
50
|
+
: completionAuthorized(g.operation)
|
|
51
|
+
? [
|
|
52
|
+
...validation,
|
|
53
|
+
[g.game, r],
|
|
54
|
+
[g.signal, w],
|
|
55
|
+
...(g.operation === 'acknowledge'
|
|
56
|
+
? [[g.address, w]]
|
|
57
|
+
: []),
|
|
58
|
+
]
|
|
59
|
+
: [
|
|
60
|
+
[g.game, r],
|
|
61
|
+
[g.signal, w],
|
|
62
|
+
];
|
|
63
|
+
const authorized = completionAuthorized(g.operation);
|
|
64
|
+
const data = new Uint8Array(authorized ? 18 : 16);
|
|
65
|
+
data.set(scanCompletionDiscriminators[g.operation]);
|
|
66
|
+
const view = new DataView(data.buffer);
|
|
67
|
+
if (authorized)
|
|
68
|
+
view.setUint16(8, g.keyIndex, true);
|
|
69
|
+
view.setBigUint64(authorized ? 10 : 8, g.expectedSequence, true);
|
|
70
|
+
return {
|
|
71
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
72
|
+
accounts: pairs.map(([address, role]) => ({ address, role })),
|
|
73
|
+
data,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function validateCompletionInstructions(steps, guards) {
|
|
77
|
+
const selected = guards.filter((g) => g.kind === 'scan-completion');
|
|
78
|
+
const matching = steps.filter((s) => s.instruction.programAddress === SAGE_PROGRAM_ADDRESS &&
|
|
79
|
+
Object.values(scanCompletionDiscriminators).some((d) => d.every((b, i) => s.instruction.data?.[i] === b)));
|
|
80
|
+
if (!selected.length && !matching.length)
|
|
81
|
+
return;
|
|
82
|
+
if (steps.length !== 1 || selected.length !== 1 || matching.length !== 1)
|
|
83
|
+
throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', 'Signal completion requires one explicit lifecycle instruction and its current intent guard. Confirm each action separately, refresh the signal and recreate the next Plan.');
|
|
84
|
+
const g = selected[0], step = matching[0], ix = step.instruction, expected = completionInstruction(g);
|
|
85
|
+
if (ix.data?.length !== expected.data.length ||
|
|
86
|
+
expected.data.some((b, i) => ix.data?.[i] !== b) ||
|
|
87
|
+
ix.accounts?.length !== expected.accounts.length ||
|
|
88
|
+
expected.accounts.some((a, i) => ix.accounts?.[i]?.address !== a.address ||
|
|
89
|
+
ix.accounts?.[i]?.role !== a.role) ||
|
|
90
|
+
step.signers.length !== (completionAuthorized(g.operation) ? 1 : 0) ||
|
|
91
|
+
(completionAuthorized(g.operation) && step.signers[0] !== g.authority))
|
|
92
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Signal completion does not match its persisted action, sequence or account intent. Refetch the signal and recreate the capability Plan before signing.');
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=scan-completion-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-completion-guard.js","sourceRoot":"","sources":["../../../src/internal/planning/scan-completion-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/C,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjD,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IAC3C,iBAAiB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;CAC/C,CAAC;AAsBX,MAAM,CAAC,MAAM,mBAAmB,GAC9B,6CAAwD,CAAC;AAC3D,MAAM,UAAU,oBAAoB,CAAC,SAAkC;IACrE,OAAO,CACL,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,aAAa,CAC5B,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,CAAsB;IAC1D,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,EAC5B,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC;IAC3B,MAAM,UAAU,GAAG;QACjB,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,eAAe,CAAC;QAC1C,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACd,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACzB,CAAC,8BAA8B,EAAE,CAAC,CAAC;KAC3B,CAAC;IACX,MAAM,KAAK,GACT,CAAC,CAAC,SAAS,KAAK,SAAS;QACvB,CAAC,CAAC;YACE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACX,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACb,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACb,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACX,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACd,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACf,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChB;QACH,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC;gBACE,GAAG,UAAU;gBACb,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACf,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;aAChB;YACH,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjC,CAAC,CAAC;oBACE,GAAG,UAAU;oBACb,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACX,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBACb,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa;wBAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAU,CAAC;wBAC3B,CAAC,CAAC,EAAE,CAAC;iBACR;gBACH,CAAC,CAAC;oBACE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACX,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;iBACd,CAAC;IACZ,MAAM,UAAU,GAAG,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,UAAU;QAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACjE,OAAO;QACL,cAAc,EAAE,oBAAoB;QACpC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI;KACL,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,8BAA8B,CAC5C,KAA0B,EAC1B,MAAmC;IAEnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,CAAC,EAA4B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAC9D,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,CAAC,cAAc,KAAK,oBAAoB;QACrD,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACjD,CACJ,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACtE,MAAM,IAAI,YAAY,CACpB,+BAA+B,EAC/B,4KAA4K,CAC7K,CAAC;IACJ,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,EACpB,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,EACnB,EAAE,GAAG,IAAI,CAAC,WAAW,EACrB,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACtC,IACE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM;QACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChD,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAChD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CACpB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,OAAO;YACvC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,CACpC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;QAEtE,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,wJAAwJ,CACzJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Address } from '@solana/kit';
|
|
2
|
+
import type { SageContext, Commitment } from '../../client/contracts.js';
|
|
3
|
+
import type { PlanAuthorization } from './authorization-adapter.js';
|
|
4
|
+
import { type ScanCompletionGuard, type ScanCompletionOperation } from './scan-completion-guard.js';
|
|
5
|
+
export interface ScanCompletionOptions {
|
|
6
|
+
readonly authorization: PlanAuthorization;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveScanCompletion(ctx: SageContext, address: Address, operation: ScanCompletionOperation, options?: ScanCompletionOptions, commitment?: Commitment): Promise<{
|
|
9
|
+
guard: ScanCompletionGuard;
|
|
10
|
+
instruction: {
|
|
11
|
+
programAddress: Address<"C4SAgeKLgb3pTLWhVr6NRwWyYFuTR7ZeSXFrzoLwfMzF">;
|
|
12
|
+
accounts: {
|
|
13
|
+
address: Address;
|
|
14
|
+
role: import("@solana/kit").AccountRole;
|
|
15
|
+
}[];
|
|
16
|
+
data: Uint8Array<ArrayBuffer>;
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
export declare function revalidateScanCompletion(ctx: SageContext, guard: ScanCompletionGuard, commitment: Commitment): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=scan-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-completion.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/scan-completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAOtD,OAAO,KAAK,EACV,WAAW,EAEX,UAAU,EACX,MAAM,2BAA2B,CAAC;AAsBnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,4BAA4B,CAAC;AACpC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;CAC3C;AAoBD,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,uBAAuB,EAClC,OAAO,CAAC,EAAE,qBAAqB,EAC/B,UAAU,CAAC,EAAE,UAAU;;;;;;;;;;GAsPxB;AACD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,UAAU,iBAyBvB"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { isAddress } from '@solana/kit';
|
|
2
|
+
import { getFleetDecoder, getScanSignalDecoder, getScanPatternPolicyDecoder, getScanLootProfileDecoder, } from '../c4/scan-detection-codecs.js';
|
|
3
|
+
import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
|
|
4
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
5
|
+
import { fleetAccountDefinition, deriveFleetAddress } from '../c4/fleet.js';
|
|
6
|
+
import { characterAccountDefinition, profileAccountDefinition, findCharacterPda, } from '../c4/identity.js';
|
|
7
|
+
import { scanSignalAccountDefinition, scanPatternPolicyAccountDefinition, scanLootProfileAccountDefinition, deriveScanLifecycleAddress, } from '../c4/scan-lifecycle.js';
|
|
8
|
+
import { PROFILE_SCOPE, SAGE_SCOPE } from '../c4/profile-permissions.js';
|
|
9
|
+
import { SAGE_PROGRAM_ADDRESS } from '../c4/runtime-bindings.js';
|
|
10
|
+
import { requireGameAddress } from '../game-context.js';
|
|
11
|
+
import { readFreshGameRuntimeVersion } from '../../registry/xp-runtime.js';
|
|
12
|
+
import { CLOCK_ADDRESS, readClock } from './faction-enrollment.js';
|
|
13
|
+
import { hashAccountState } from './account-state.js';
|
|
14
|
+
import { resolveXpRuntime } from './xp-runtime.js';
|
|
15
|
+
import { completionAuthorized, completionInstruction, } from './scan-completion-guard.js';
|
|
16
|
+
function fail(reason) {
|
|
17
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Signal completion ${reason}. Refresh the Fleet and signal, resolve prerequisites through the supported game client, and recreate this explicit Plan. Simulate before signing; no repair or movement is automatic.`);
|
|
18
|
+
}
|
|
19
|
+
function invalid() {
|
|
20
|
+
throw new InvalidActionInputError('options', undefined, 'one Fleet address and explicit direct Profile authorization only for owner actions', 'Pass the documented arguments without certificate, signer, replacement accounts or additional options.');
|
|
21
|
+
}
|
|
22
|
+
function required(raw, address) {
|
|
23
|
+
if (!raw || raw.address !== address || raw.executable)
|
|
24
|
+
fail(`requires existing non-executable account ${address}`);
|
|
25
|
+
return raw;
|
|
26
|
+
}
|
|
27
|
+
export async function resolveScanCompletion(ctx, address, operation, options, commitment) {
|
|
28
|
+
if (typeof address !== 'string' || !isAddress(address))
|
|
29
|
+
invalid();
|
|
30
|
+
const authorized = completionAuthorized(operation);
|
|
31
|
+
const a = options?.authorization;
|
|
32
|
+
if (authorized) {
|
|
33
|
+
if (!options ||
|
|
34
|
+
typeof options !== 'object' ||
|
|
35
|
+
Object.keys(options).length !== 1 ||
|
|
36
|
+
!Object.hasOwn(options, 'authorization') ||
|
|
37
|
+
!a ||
|
|
38
|
+
typeof a !== 'object' ||
|
|
39
|
+
Object.keys(a).length !== 3 ||
|
|
40
|
+
!Object.hasOwn(a, 'profile') ||
|
|
41
|
+
!Object.hasOwn(a, 'authority') ||
|
|
42
|
+
!Object.hasOwn(a, 'keyIndex') ||
|
|
43
|
+
typeof a.profile !== 'string' ||
|
|
44
|
+
!isAddress(a.profile) ||
|
|
45
|
+
typeof a.authority !== 'string' ||
|
|
46
|
+
!isAddress(a.authority) ||
|
|
47
|
+
!Number.isInteger(a.keyIndex) ||
|
|
48
|
+
a.keyIndex < 0 ||
|
|
49
|
+
a.keyIndex > 65535)
|
|
50
|
+
invalid();
|
|
51
|
+
}
|
|
52
|
+
const game = requireGameAddress(ctx);
|
|
53
|
+
const readOptions = commitment === undefined ? undefined : { commitment };
|
|
54
|
+
const read = (keys) => readContextRawAccounts(ctx, keys, readOptions);
|
|
55
|
+
const [signal, signalBump] = await deriveScanLifecycleAddress('scanSignal', game, address);
|
|
56
|
+
const [fleetAccount, signalAccount, clockAccount] = await read([
|
|
57
|
+
address,
|
|
58
|
+
signal,
|
|
59
|
+
CLOCK_ADDRESS,
|
|
60
|
+
]);
|
|
61
|
+
const fleetRaw = required(fleetAccount, address), signalRaw = required(signalAccount, signal), clockRaw = required(clockAccount, CLOCK_ADDRESS);
|
|
62
|
+
const fleet = fleetAccountDefinition.decode(fleetRaw), translated = scanSignalAccountDefinition.decode(signalRaw);
|
|
63
|
+
const exactFleet = getFleetDecoder().decode(fleetRaw.data), s = getScanSignalDecoder().decode(signalRaw.data);
|
|
64
|
+
const profile = fleet.ownerProfile, character = await findCharacterPda(profile, game);
|
|
65
|
+
if (fleet.game !== game ||
|
|
66
|
+
(await deriveFleetAddress(fleet)) !== address ||
|
|
67
|
+
fleet.subProfile !== '11111111111111111111111111111111' ||
|
|
68
|
+
translated.game !== game ||
|
|
69
|
+
translated.fleet !== address ||
|
|
70
|
+
translated.bump !== signalBump ||
|
|
71
|
+
s.ownerProfile !== profile ||
|
|
72
|
+
s.controllerProfile !== profile ||
|
|
73
|
+
s.ownerCharacter !== character ||
|
|
74
|
+
s.controllerCharacter !== character ||
|
|
75
|
+
(authorized && a.profile !== profile))
|
|
76
|
+
fail('requires canonical direct owner and controller witnesses');
|
|
77
|
+
const accepted = operation === 'resolve' || operation === 'forfeit-entropy'
|
|
78
|
+
? [1]
|
|
79
|
+
: operation === 'acknowledge'
|
|
80
|
+
? [3, 4, 5, 6]
|
|
81
|
+
: [2];
|
|
82
|
+
if (!accepted.includes(s.status))
|
|
83
|
+
fail(`cannot ${operation} a signal in ${translated.status} state`);
|
|
84
|
+
const now = readClock(clockRaw);
|
|
85
|
+
const slot = new DataView(clockRaw.data.buffer, clockRaw.data.byteOffset, clockRaw.data.byteLength).getBigUint64(0, true);
|
|
86
|
+
// These are the supported client's explicit reveal projection, not a promise of entropy availability.
|
|
87
|
+
if (operation === 'resolve' &&
|
|
88
|
+
(slot < s.commitSlot + 10n || slot >= s.commitSlot + 266n))
|
|
89
|
+
fail('is outside the supported entropy reveal window; wait for reveal or explicitly forfeit after expiry');
|
|
90
|
+
if (operation === 'forfeit-entropy' && slot < s.commitSlot + 266n)
|
|
91
|
+
fail('cannot forfeit before the entropy deadline');
|
|
92
|
+
if (operation === 'expire' && now < s.expiresAt)
|
|
93
|
+
fail('cannot expire a Contact before its deadline');
|
|
94
|
+
if (operation === 'abandon' && now >= s.expiresAt)
|
|
95
|
+
fail('cannot abandon an expired Contact; explicitly expire it instead');
|
|
96
|
+
if (operation === 'recover') {
|
|
97
|
+
if (now >= s.expiresAt)
|
|
98
|
+
fail('cannot recover an expired Contact');
|
|
99
|
+
if (exactFleet.state.__kind !== 'Idle')
|
|
100
|
+
fail('requires an Idle Fleet for recovery; settle movement separately');
|
|
101
|
+
const x = exactFleet.location[0].raw - s.target[0], y = exactFleet.location[1].raw - s.target[1];
|
|
102
|
+
if (s.targetRadius < 0n || x * x + y * y > s.targetRadius * s.targetRadius)
|
|
103
|
+
fail('requires the Fleet inside the stored recovery radius');
|
|
104
|
+
}
|
|
105
|
+
const [characterAccount, ...profileAccounts] = await read([
|
|
106
|
+
character,
|
|
107
|
+
...(authorized ? [profile] : []),
|
|
108
|
+
]);
|
|
109
|
+
const owner = characterAccountDefinition.decode(required(characterAccount, character));
|
|
110
|
+
if (owner.game !== game || owner.playerProfile !== profile)
|
|
111
|
+
fail('requires the canonical owning Character');
|
|
112
|
+
let authorityState = null;
|
|
113
|
+
if (authorized) {
|
|
114
|
+
const p = profileAccountDefinition.decode(required(profileAccounts[0], profile)), key = p.keys[a.keyIndex];
|
|
115
|
+
if (!key ||
|
|
116
|
+
key.address !== a.authority ||
|
|
117
|
+
(key.expiresAtRaw >= 0n && key.expiresAtRaw < now) ||
|
|
118
|
+
![PROFILE_SCOPE, SAGE_SCOPE].includes(key.scope))
|
|
119
|
+
fail('requires a current unexpired direct Profile key; permission acceptance remains chain-authoritative');
|
|
120
|
+
authorityState = {
|
|
121
|
+
version: p.version,
|
|
122
|
+
scope: key.scope,
|
|
123
|
+
permissions: key.permissionsRaw,
|
|
124
|
+
expires: key.expiresAtRaw,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
let policy = SAGE_PROGRAM_ADDRESS, loot = SAGE_PROGRAM_ADDRESS, xpBudget = SAGE_PROGRAM_ADDRESS, xpConfig = SAGE_PROGRAM_ADDRESS;
|
|
128
|
+
let configuration = null;
|
|
129
|
+
if (operation === 'resolve') {
|
|
130
|
+
const [pa, pb] = await deriveScanLifecycleAddress('scanPatternPolicy', game, s.scanPatternId), [la, lb] = await deriveScanLifecycleAddress('scanLootProfile', game, s.regionId);
|
|
131
|
+
policy = pa;
|
|
132
|
+
loot = la;
|
|
133
|
+
const [pr, lr] = await read([policy, loot]);
|
|
134
|
+
const pRaw = required(pr, policy), lRaw = required(lr, loot);
|
|
135
|
+
const p = scanPatternPolicyAccountDefinition.decode(pRaw), l = scanLootProfileAccountDefinition.decode(lRaw);
|
|
136
|
+
const pe = getScanPatternPolicyDecoder().decode(pRaw.data), le = getScanLootProfileDecoder().decode(lRaw.data);
|
|
137
|
+
if (p.game !== game ||
|
|
138
|
+
p.bump !== pb ||
|
|
139
|
+
p.patternId !== s.scanPatternId ||
|
|
140
|
+
l.game !== game ||
|
|
141
|
+
l.bump !== lb ||
|
|
142
|
+
l.regionId !== s.regionId ||
|
|
143
|
+
p.revision !== s.policyRevision ||
|
|
144
|
+
l.revision !== s.profileRevision ||
|
|
145
|
+
pe.contentHash.some((b, i) => b !== s.policyHash[i]) ||
|
|
146
|
+
le.contentHash.some((b, i) => b !== s.profileHash[i]))
|
|
147
|
+
fail('requires the committed canonical policy and regional loot revisions and hashes');
|
|
148
|
+
configuration = {
|
|
149
|
+
policyRevision: p.revision,
|
|
150
|
+
lootRevision: l.revision,
|
|
151
|
+
policyHash: pe.contentHash,
|
|
152
|
+
lootHash: le.contentHash,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
if (operation === 'resolve' || operation === 'recover') {
|
|
156
|
+
const gameVersion = await readFreshGameRuntimeVersion(ctx, game, readOptions);
|
|
157
|
+
const xp = await resolveXpRuntime(ctx, { game, character, profile }, new Map([[game, gameVersion]]), readOptions);
|
|
158
|
+
xpBudget = xp.accounts.xpBudget;
|
|
159
|
+
xpConfig = xp.accounts.xpBudgetConfig;
|
|
160
|
+
}
|
|
161
|
+
const intent = {
|
|
162
|
+
signalVersion: s.version,
|
|
163
|
+
owner: s.ownerProfile,
|
|
164
|
+
controller: s.controllerProfile,
|
|
165
|
+
ownerCharacter: s.ownerCharacter,
|
|
166
|
+
controllerCharacter: s.controllerCharacter,
|
|
167
|
+
commitSlot: s.commitSlot,
|
|
168
|
+
revealSlots: s.revealSlots,
|
|
169
|
+
region: s.regionId,
|
|
170
|
+
pattern: s.scanPatternId,
|
|
171
|
+
policyRevision: s.policyRevision,
|
|
172
|
+
profileRevision: s.profileRevision,
|
|
173
|
+
policyHash: s.policyHash,
|
|
174
|
+
profileHash: s.profileHash,
|
|
175
|
+
target: s.target,
|
|
176
|
+
radius: s.targetRadius,
|
|
177
|
+
expires: s.expiresAt,
|
|
178
|
+
cargo: s.cargoId,
|
|
179
|
+
nominal: s.nominalQuantity,
|
|
180
|
+
reward: s.rewardXp,
|
|
181
|
+
authorityState,
|
|
182
|
+
configuration,
|
|
183
|
+
};
|
|
184
|
+
const configHash = await hashAccountState(game, new TextEncoder().encode(JSON.stringify(intent, (_, v) => typeof v === 'bigint' ? String(v) : v)));
|
|
185
|
+
const guard = {
|
|
186
|
+
kind: 'scan-completion',
|
|
187
|
+
operation,
|
|
188
|
+
address,
|
|
189
|
+
game,
|
|
190
|
+
signal,
|
|
191
|
+
profile,
|
|
192
|
+
character,
|
|
193
|
+
authority: a?.authority ?? SAGE_PROGRAM_ADDRESS,
|
|
194
|
+
keyIndex: a?.keyIndex ?? 0,
|
|
195
|
+
policy,
|
|
196
|
+
loot,
|
|
197
|
+
xpBudget,
|
|
198
|
+
xpConfig,
|
|
199
|
+
status: s.status,
|
|
200
|
+
expectedSequence: s.sequence,
|
|
201
|
+
configHash,
|
|
202
|
+
describes: 'Current signal sequence, state, ownership witnesses, selected contact/configuration and direct authority remain valid; refresh and recreate after any lifecycle transition.',
|
|
203
|
+
};
|
|
204
|
+
return { guard, instruction: completionInstruction(guard) };
|
|
205
|
+
}
|
|
206
|
+
export async function revalidateScanCompletion(ctx, guard, commitment) {
|
|
207
|
+
const current = await resolveScanCompletion(ctx, guard.address, guard.operation, completionAuthorized(guard.operation)
|
|
208
|
+
? {
|
|
209
|
+
authorization: {
|
|
210
|
+
profile: guard.profile,
|
|
211
|
+
authority: guard.authority,
|
|
212
|
+
keyIndex: guard.keyIndex,
|
|
213
|
+
},
|
|
214
|
+
}
|
|
215
|
+
: undefined, commitment);
|
|
216
|
+
if (Object.entries(guard).some(([k, v]) => k !== 'describes' &&
|
|
217
|
+
current.guard[k] !== v))
|
|
218
|
+
fail('intent changed since planning');
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=scan-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-completion.js","sourceRoot":"","sources":["../../../src/internal/planning/scan-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ export declare function resolveCharacterRegistrationXpRuntime(ctx: SageContext,
|
|
|
28
28
|
/** Resolve existing canonical XP accounts without migrating or creating anything.
|
|
29
29
|
* A supplied Game-version map belongs to one fresh validation pass, never a context.
|
|
30
30
|
*/
|
|
31
|
-
export declare function resolveXpRuntime(ctx: SageContext, input: Omit<XpRuntimeIntent, 'gameVersion'>, freshGameVersions?: Map<Address, number>): Promise<{
|
|
31
|
+
export declare function resolveXpRuntime(ctx: SageContext, input: Omit<XpRuntimeIntent, 'gameVersion'>, freshGameVersions?: Map<Address, number>, options?: Parameters<typeof readContextRawAccounts>[2]): Promise<{
|
|
32
32
|
readonly gameVersion: 2;
|
|
33
33
|
readonly intent: XpRuntimeIntent;
|
|
34
34
|
readonly accounts: XpRuntimeAccounts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xp-runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/xp-runtime.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,8EAA8E;AAC9E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAoED,kGAAkG;AAClG,wBAAsB,qCAAqC,CACzD,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAC9D,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,GACrD,OAAO,CAAC,8BAA8B,CAAC,CAiCzC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,EAC3C,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"xp-runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/xp-runtime.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,8EAA8E;AAC9E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAoED,kGAAkG;AAClG,wBAAsB,qCAAqC,CACzD,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAC9D,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,GACrD,OAAO,CAAC,8BAA8B,CAAC,CAiCzC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,EAC3C,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EACxC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,GACrD,OAAO,CAAC;IACT,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC,CAAC,CAgGD"}
|
|
@@ -60,13 +60,13 @@ export async function resolveCharacterRegistrationXpRuntime(ctx, input, options)
|
|
|
60
60
|
/** Resolve existing canonical XP accounts without migrating or creating anything.
|
|
61
61
|
* A supplied Game-version map belongs to one fresh validation pass, never a context.
|
|
62
62
|
*/
|
|
63
|
-
export async function resolveXpRuntime(ctx, input, freshGameVersions) {
|
|
63
|
+
export async function resolveXpRuntime(ctx, input, freshGameVersions, options) {
|
|
64
64
|
const { game, character, structure, profile } = input;
|
|
65
65
|
if (profile !== undefined &&
|
|
66
66
|
character !== (await findCharacterPda(profile, game)))
|
|
67
67
|
fail(game, 'does not identify the canonical Character for the authorized Profile');
|
|
68
68
|
const gameVersion = freshGameVersions?.get(game) ??
|
|
69
|
-
(await readFreshGameRuntimeVersion(ctx, game));
|
|
69
|
+
(await readFreshGameRuntimeVersion(ctx, game, options));
|
|
70
70
|
freshGameVersions?.set(game, gameVersion);
|
|
71
71
|
if (gameVersion !== 2)
|
|
72
72
|
fail(game, gameVersion === 1
|
|
@@ -93,7 +93,9 @@ export async function resolveXpRuntime(ctx, input, freshGameVersions) {
|
|
|
93
93
|
...(budget ? [budget[0]] : []),
|
|
94
94
|
...(accrual ? [accrual[0]] : []),
|
|
95
95
|
];
|
|
96
|
-
const raw = addresses.length === 0
|
|
96
|
+
const raw = addresses.length === 0
|
|
97
|
+
? []
|
|
98
|
+
: await readContextRawAccounts(ctx, addresses, options);
|
|
97
99
|
const byAddress = new Map(addresses.map((address, index) => [address, raw[index]]));
|
|
98
100
|
if (config) {
|
|
99
101
|
const configValue = decode(byAddress.get(config[0]), config[0], getXpBudgetConfigDecoder(), XP_BUDGET_CONFIG_DISCRIMINATOR);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xp-runtime.js","sourceRoot":"","sources":["../../../src/internal/planning/xp-runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"xp-runtime.js","sourceRoot":"","sources":["../../../src/internal/planning/xp-runtime.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":"AA6DA,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;AA2vCD;;;;;;;;;;;;;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,4 @@
|
|
|
1
|
+
import { revalidateScanCompletion } from '../internal/planning/scan-completion.js';
|
|
1
2
|
import { openSignalAddresses, validateOpenSignal, } from '../internal/planning/open-signal.js';
|
|
2
3
|
import { revalidateDetect } from '../internal/planning/scan-detect.js';
|
|
3
4
|
import { resolveFleetRespawn } from '../internal/planning/fleet-respawn.js';
|
|
@@ -336,6 +337,8 @@ function checkRegistrationFunding(registrations, fee) {
|
|
|
336
337
|
}
|
|
337
338
|
async function checkPreconditions(context, allPreconditions, steps, commitment) {
|
|
338
339
|
for (const guard of allPreconditions) {
|
|
340
|
+
if (guard.kind === 'scan-completion')
|
|
341
|
+
await revalidateScanCompletion(context, guard, commitment);
|
|
339
342
|
if (guard.kind === 'scan-detect')
|
|
340
343
|
await revalidateDetect(context, guard, commitment);
|
|
341
344
|
if (guard.kind === 'fleet-attack')
|
|
@@ -407,6 +410,7 @@ async function checkPreconditions(context, allPreconditions, steps, commitment)
|
|
|
407
410
|
guard.kind !== 'fleet-arrival' &&
|
|
408
411
|
guard.kind !== 'character-registration' &&
|
|
409
412
|
guard.kind !== 'scan-detect' &&
|
|
413
|
+
guard.kind !== 'scan-completion' &&
|
|
410
414
|
guard.kind !== 'fleet-respawn');
|
|
411
415
|
const fleetCreationAccounts = new Map();
|
|
412
416
|
const fleetAssemblyAccounts = new Map();
|