@capxul/sdk 4.2.0-rc.9 → 4.20.0-beta.1

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.
@@ -284,7 +284,7 @@ interface TelemetryPort {
284
284
  }
285
285
  //#endregion
286
286
  //#region ../observability/src/index.d.ts
287
- declare const TELEMETRY_EVENT_NAMES: readonly ["auth_otp_requested", "auth_otp_delivered", "auth_otp_expired", "auth_verified", "auth_failed", "identity_refused", "auth_signed_out", "onboarding_intent_selected", "onboarding_profile_submitted", "onboarding_organization_submitted", "onboarding_dashboard_reached", "provisioning_safe_created", "provisioning_safe_confirmed", "bootstrap_resolved", "bootstrap_failed", "member_activation_started", "member_activation_ready", "member_activation_failed", "organization_creation_started", "organization_creation_ready", "organization_creation_failed", "chain_upstream_fallback", "bundler_error", "receipt_pending", "operation_retried", "account_balance_read", "account_balance_failed", "faucet_requested", "faucet_confirmed", "faucet_failed", "org_create_started", "org_safe_created", "org_safe_confirmed", "org_roles_seeded", "org_created", "org_create_failed", "org_invite_sent", "org_invite_accepted", "org_invite_expired", "payment_initiated", "payment_settled", "payment_failed", "payment_verification_retry", "payment_lifecycle_transition", "quick_pay_external_address_acknowledged", "deposit_initiated", "deposit_settled", "permission_mirror_verification", "movement_scan_window", "movement_scan_checkpoint", "movement_scan_incident", "activity_annotation_saved", "ui_activity_action_completed", "contact_relationship_changed", "ui_contact_action_completed", "access_recovery_completed", "ui_access_step_completed", "org_invite_progressed", "invoice_issued", "invoice_request_transitioned", "ui_invoice_step_completed", "ui_treasury_step_completed", "ui_receive_step_completed", "payroll_group_changed", "payroll_run_transitioned", "ui_payroll_action_completed"];
287
+ declare const TELEMETRY_EVENT_NAMES: readonly ["auth_otp_requested", "auth_otp_delivered", "auth_otp_expired", "auth_verified", "auth_failed", "identity_refused", "auth_signed_out", "onboarding_intent_selected", "onboarding_profile_submitted", "onboarding_organization_submitted", "onboarding_dashboard_reached", "provisioning_safe_created", "provisioning_safe_confirmed", "bootstrap_resolved", "bootstrap_failed", "member_activation_started", "member_activation_ready", "member_activation_failed", "organization_creation_started", "organization_creation_ready", "organization_creation_failed", "chain_upstream_fallback", "bundler_error", "receipt_pending", "operation_retried", "account_balance_read", "account_balance_failed", "faucet_requested", "faucet_confirmed", "faucet_failed", "org_create_started", "org_safe_created", "org_safe_confirmed", "org_roles_seeded", "org_created", "org_create_failed", "org_invite_sent", "org_invite_accepted", "org_invite_expired", "payment_initiated", "payment_settled", "payment_failed", "payment_verification_retry", "payment_lifecycle_transition", "quick_pay_external_address_acknowledged", "deposit_initiated", "deposit_settled", "permission_mirror_verification", "movement_scan_window", "movement_scan_checkpoint", "movement_scan_incident", "indexer_drift_corrected", "activity_annotation_saved", "ui_activity_action_completed", "contact_relationship_changed", "ui_contact_action_completed", "access_recovery_completed", "ui_access_step_completed", "org_invite_progressed", "invoice_issued", "invoice_request_transitioned", "ui_invoice_step_completed", "ui_treasury_step_completed", "ui_receive_step_completed", "payroll_group_changed", "payroll_run_transitioned", "ui_payroll_action_completed", "cli_diagnostic_completed"];
288
288
  type TelemetryEventName = (typeof TELEMETRY_EVENT_NAMES)[number];
289
289
  type TelemetryProps = Record<string, unknown>;
290
290
  type TelemetryEvent = {
@@ -938,6 +938,12 @@ interface IndexerEventIdentity {
938
938
  readonly chainId: ChainId;
939
939
  readonly txHash: TxHash;
940
940
  readonly transactionLogOrdinal: number;
941
+ /**
942
+ * The block-global log index of the same log, as the transaction receipt
943
+ * reports it. The ordinal above is the identity; this is the key Convex
944
+ * settles a Payment on (P12).
945
+ */
946
+ readonly logIndex: number;
941
947
  readonly blockNumber: bigint;
942
948
  readonly blockHash: string;
943
949
  /** Block timestamp in epoch seconds. */
@@ -1274,10 +1280,17 @@ interface ResolvedTarget {
1274
1280
  readonly canPayout: boolean;
1275
1281
  };
1276
1282
  }
1283
+ /**
1284
+ * R09 (#1967): the declared option type is the `InvocationControls` the money
1285
+ * surface already forwards to `deps.invocationControls`, named here exactly as
1286
+ * R02 named it on the address book and R13 on payroll. A caller that captured
1287
+ * one user attempt can hand the same `correlation_id`/`journey_id` to the read
1288
+ * it starts, so the read joins that attempt instead of standing alone.
1289
+ * `{ signal }` callers are unaffected.
1290
+ */
1291
+ type PaymentReadOptions = InvocationControls;
1277
1292
  interface TargetsMethods {
1278
- resolve(reference: TargetReference, options?: {
1279
- readonly signal?: AbortSignal;
1280
- }): Promise<CapxulResult<ResolvedTarget>>;
1293
+ resolve(reference: TargetReference, options?: PaymentReadOptions): Promise<CapxulResult<ResolvedTarget>>;
1281
1294
  }
1282
1295
  type Ref$1 = {
1283
1296
  readonly kind: "handle";
@@ -1324,9 +1337,8 @@ interface MeMethods {
1324
1337
  get(options?: {
1325
1338
  readonly signal?: AbortSignal;
1326
1339
  }): Promise<CapxulResult<MeProfile>>;
1327
- depositInstructions(options?: {
1328
- readonly signal?: AbortSignal;
1329
- }): Promise<CapxulResult<DepositInstructions>>;
1340
+ /** R08 (#1966): accepts a captured attempt, exactly as the treasury read does. */
1341
+ depositInstructions(options?: InvocationControls): Promise<CapxulResult<DepositInstructions>>;
1330
1342
  }
1331
1343
  interface PaymentMoney {
1332
1344
  readonly currency: string;
@@ -1561,6 +1573,8 @@ type ActivityItem = {
1561
1573
  readonly updatedAt: number;
1562
1574
  };
1563
1575
  interface ActivityPage {
1576
+ /** Usable fallback data omits indexed movements; never present it as complete. */
1577
+ readonly readWarning?: "indexer-unavailable";
1564
1578
  readonly items: readonly ActivityItem[];
1565
1579
  readonly cursor: string | null;
1566
1580
  readonly checkpoint: number;
@@ -1582,6 +1596,7 @@ interface ActivitySummaryTotal {
1582
1596
  readonly pendingIn: string;
1583
1597
  }
1584
1598
  interface ActivitySummary {
1599
+ readonly readWarning?: ActivityPage["readWarning"];
1585
1600
  readonly window: {
1586
1601
  readonly from: number | null;
1587
1602
  readonly to: number | null;
@@ -1679,6 +1694,17 @@ interface ActivityAnnotationInput {
1679
1694
  * are unaffected.
1680
1695
  */
1681
1696
  interface ActivityMethods {
1697
+ /**
1698
+ * Tell the caller when the indexed page for this actor's Safe changed, over
1699
+ * the indexer's one live connection. The callback carries no rows: it is the
1700
+ * signal to re-read `list` or `summary`. Without an indexer this resolves a
1701
+ * no-op teardown, so a caller needs no branch.
1702
+ *
1703
+ * @internal-use — substrate reactive transport, like `ConvexCallPort.subscribe`.
1704
+ */
1705
+ subscribe(onChange: () => void, params?: {
1706
+ readonly actor?: ActorReference;
1707
+ }, options?: InvocationControls): Promise<CapxulResult<() => void>>;
1682
1708
  list(params?: ActivityListParams, options?: InvocationControls): Promise<CapxulResult<ActivityPage>>;
1683
1709
  summary(params?: ActivitySummaryParams, options?: InvocationControls): Promise<CapxulResult<ActivitySummary>>;
1684
1710
  get(reference: ActivityReference, options?: InvocationControls & {
@@ -1752,12 +1778,8 @@ interface PaymentsMethods {
1752
1778
  claim(paymentId: string, options?: {
1753
1779
  readonly signal?: AbortSignal;
1754
1780
  }): Promise<CapxulResult<Payment>>;
1755
- list(options?: {
1756
- readonly signal?: AbortSignal;
1757
- }): Promise<CapxulResult<readonly Payment[]>>;
1758
- get(paymentId: string, options?: {
1759
- readonly signal?: AbortSignal;
1760
- }): Promise<CapxulResult<Payment | null>>;
1781
+ list(options?: PaymentReadOptions): Promise<CapxulResult<readonly Payment[]>>;
1782
+ get(paymentId: string, options?: PaymentReadOptions): Promise<CapxulResult<Payment | null>>;
1761
1783
  cancel(paymentId: string, options?: {
1762
1784
  readonly signal?: AbortSignal;
1763
1785
  }): Promise<CapxulResult<Payment>>;
@@ -1867,19 +1889,17 @@ interface ActorRequestIssueInput {
1867
1889
  readonly memo?: string;
1868
1890
  readonly expiresAt?: number;
1869
1891
  }
1892
+ /**
1893
+ * The issuer's own requests. The options are the address book's
1894
+ * `InvocationControls` (R07 #1965), so a caller that captured one browser
1895
+ * attempt hands it to the operation that attempt started; `{ signal }` callers
1896
+ * are unaffected.
1897
+ */
1870
1898
  interface ActorRequestsMethods {
1871
- issue(input: ActorRequestIssueInput, options?: {
1872
- readonly signal?: AbortSignal;
1873
- }): Promise<CapxulResult<ActorRequest>>;
1874
- list(options?: {
1875
- readonly signal?: AbortSignal;
1876
- }): Promise<CapxulResult<readonly ActorRequest[]>>;
1877
- get(requestId: string, options?: {
1878
- readonly signal?: AbortSignal;
1879
- }): Promise<CapxulResult<ActorRequest | null>>;
1880
- cancel(requestId: string, options?: {
1881
- readonly signal?: AbortSignal;
1882
- }): Promise<CapxulResult<ActorRequest>>;
1899
+ issue(input: ActorRequestIssueInput, options?: InvocationControls): Promise<CapxulResult<ActorRequest>>;
1900
+ list(options?: InvocationControls): Promise<CapxulResult<readonly ActorRequest[]>>;
1901
+ get(requestId: string, options?: InvocationControls): Promise<CapxulResult<ActorRequest | null>>;
1902
+ cancel(requestId: string, options?: InvocationControls): Promise<CapxulResult<ActorRequest>>;
1883
1903
  }
1884
1904
  interface InboxItem {
1885
1905
  readonly id: string;
@@ -1893,24 +1913,18 @@ interface InboxApproveInput {
1893
1913
  readonly timing?: PaymentTiming;
1894
1914
  readonly permissionId?: string;
1895
1915
  }
1916
+ /** The payer's own inbox. Its scope is the payer's, never the issuer's. */
1896
1917
  interface InboxMethods {
1897
- list(options?: {
1898
- readonly signal?: AbortSignal;
1899
- }): Promise<CapxulResult<readonly InboxItem[]>>;
1900
- approve(input: InboxApproveInput, options?: {
1901
- readonly signal?: AbortSignal;
1902
- }): Promise<CapxulResult<Payment>>;
1903
- decline(requestId: string, options?: {
1904
- readonly signal?: AbortSignal;
1905
- }): Promise<CapxulResult<InboxItem>>;
1918
+ list(options?: InvocationControls): Promise<CapxulResult<readonly InboxItem[]>>;
1919
+ approve(input: InboxApproveInput, options?: InvocationControls): Promise<CapxulResult<Payment>>;
1920
+ decline(requestId: string, options?: InvocationControls): Promise<CapxulResult<InboxItem>>;
1906
1921
  }
1907
1922
  interface ActorProfileMethods {
1908
1923
  get(options?: {
1909
1924
  readonly signal?: AbortSignal;
1910
1925
  }): Promise<CapxulResult<ActorProfile>>;
1911
- depositInstructions(options?: {
1912
- readonly signal?: AbortSignal;
1913
- }): Promise<CapxulResult<DepositInstructions>>;
1926
+ /** R08 (#1966): accepts a captured attempt, exactly as the treasury read does. */
1927
+ depositInstructions(options?: InvocationControls): Promise<CapxulResult<DepositInstructions>>;
1914
1928
  }
1915
1929
  interface ActorRelationshipMethods {
1916
1930
  readonly addressBook: AddressBookMethods;
@@ -2071,6 +2085,12 @@ type ListOrgRolesInput = {
2071
2085
  type ListOrgMembersInput = {
2072
2086
  readonly orgId: OrgId;
2073
2087
  };
2088
+ /**
2089
+ * R06 (#1964): the program attaches the caller's captured attempt to this
2090
+ * record through `copyInvocationObservation`, so the adapter forwards one
2091
+ * observation context to the backend action that owns `org_invite_sent`. The
2092
+ * carrier is a non-enumerable symbol and never becomes a wire field.
2093
+ */
2074
2094
  type InviteOrgMemberInput = {
2075
2095
  readonly orgId: OrgId;
2076
2096
  readonly input: InviteMemberInput;
@@ -2332,9 +2352,15 @@ interface AuthorizeRunInput {
2332
2352
  */
2333
2353
  readonly requestKey?: string;
2334
2354
  }
2335
- type PayrollOptions = {
2336
- readonly signal?: AbortSignal;
2337
- };
2355
+ /**
2356
+ * R13 (#1968): the declared option type is the `InvocationControls` these
2357
+ * methods have always forwarded to `deps.invocationControls` — the same naming
2358
+ * R02 gave the address book. It lets a caller that captured one browser attempt
2359
+ * hand that attempt's `correlation_id`/`journey_id` to the payroll operation it
2360
+ * starts, so `ui_payroll_action_completed` and the durable group and run events
2361
+ * share a correlation. `{ signal }` callers are unaffected.
2362
+ */
2363
+ type PayrollOptions = InvocationControls;
2338
2364
  type AuthorizeRunOptions = PayrollOptions & {
2339
2365
  /** Persist this SDK-allocated key before the first backend write. Reject to prevent execution. */
2340
2366
  readonly onRequestKey?: (key: string) => void | Promise<void>;
@@ -2484,14 +2510,15 @@ interface OrgScopedMethods extends ActorRelationshipMethods {
2484
2510
  retrySetup(options?: {
2485
2511
  readonly signal?: AbortSignal;
2486
2512
  }): Promise<CapxulResult<OrgLifecycle>>;
2487
- /** The Organization treasury Account. */
2488
- treasury(options?: {
2489
- readonly signal?: AbortSignal;
2490
- }): Promise<CapxulResult<Account$1>>;
2513
+ /**
2514
+ * The Organization treasury Account. R08 (#1966): the declared option type is
2515
+ * the `InvocationControls` this surface already forwards, so a screen that
2516
+ * captured one user attempt can hand the same `correlation_id`/`journey_id`
2517
+ * to the read it starts. `{ signal }` callers are unaffected.
2518
+ */
2519
+ treasury(options?: InvocationControls): Promise<CapxulResult<Account$1>>;
2491
2520
  readonly account: {
2492
- get(options?: {
2493
- readonly signal?: AbortSignal;
2494
- }): Promise<CapxulResult<OrganizationAccount>>;
2521
+ get(options?: InvocationControls): Promise<CapxulResult<OrganizationAccount>>;
2495
2522
  };
2496
2523
  members(options?: {
2497
2524
  readonly signal?: AbortSignal;
@@ -2499,9 +2526,14 @@ interface OrgScopedMethods extends ActorRelationshipMethods {
2499
2526
  roles(options?: {
2500
2527
  readonly signal?: AbortSignal;
2501
2528
  }): Promise<CapxulResult<readonly RoleView[]>>;
2502
- invite(input: InviteMemberInput, options?: {
2503
- readonly signal?: AbortSignal;
2504
- }): Promise<CapxulResult<MemberView>>;
2529
+ /**
2530
+ * Invite a member by email. `options` is the browser attempt the caller
2531
+ * captured before the person pressed the button (R06 #1964); it reaches the
2532
+ * backend action unchanged, so the durable `org_invite_sent` and the later
2533
+ * `org_invite_progressed` share the attempt's correlation. `{ signal }`
2534
+ * callers are unaffected.
2535
+ */
2536
+ invite(input: InviteMemberInput, options?: InvocationControls): Promise<CapxulResult<MemberView>>;
2505
2537
  /**
2506
2538
  * Leak-safe Organization payment: execute through the payments engine with
2507
2539
  * the selected receipt-verified Budget Permission
@@ -2600,11 +2632,11 @@ interface MediaMethods {
2600
2632
  }
2601
2633
  //#endregion
2602
2634
  //#region src/contract/system.d.ts
2603
- /** What `system:health` answers. */
2635
+ /** What `system:healthObserved` answers. */
2604
2636
  interface SystemHealth {
2605
2637
  /** The nonce the caller sent, as the backend saw it. */
2606
2638
  readonly nonce: string;
2607
- /** Deployment that answered, e.g. `little-sandpiper-974`. */
2639
+ /** Deployment that answered, e.g. `api` for the Railway staging host. */
2608
2640
  readonly deployment: string;
2609
2641
  /** Backend clock at execution (epoch ms). */
2610
2642
  readonly at: number;
@@ -2716,6 +2748,8 @@ interface IdentityRuntime {
2716
2748
  readonly runFacade?: <T>(verb: IdentityFacadeVerb, controls: InvocationControls | undefined, run: (controls: InvocationControls) => Promise<T>) => Promise<T>;
2717
2749
  }
2718
2750
  interface CapxulClient {
2751
+ /** Stop this client's resources. Repeated calls share the same cleanup. */
2752
+ close(): Promise<CapxulResult<void>>;
2719
2753
  readonly auth: AuthMethods;
2720
2754
  readonly smartAccount: SmartAccountMethods;
2721
2755
  readonly identity: IdentityMethods;
@@ -2892,6 +2926,10 @@ interface PostHogObservabilityClient {
2892
2926
  interface PostHogObservabilityOptions {
2893
2927
  /** Consent / kill-switch seam. Defaults to enabled. */
2894
2928
  readonly enabled?: boolean | (() => boolean);
2929
+ /** Omission preserves bootstrap engineering. False/throw closes the acquired runtime's collection. */
2930
+ readonly engineeringEnabled?: boolean | (() => boolean);
2931
+ /** Opt in to code/timing/correlation-only engineering exports. Omission preserves full safe diagnostics. */
2932
+ readonly engineeringPrivacy?: "minimal";
2895
2933
  /** Host environment stamped on every SDK-owned product event. */
2896
2934
  readonly capxulEnv?: CapxulEnv;
2897
2935
  /** Host-owned correlation context shared by product and failure delivery. */
@@ -3017,6 +3055,8 @@ interface OpenfortBrowserSignerOptions {
3017
3055
  */
3018
3056
  interface CapxulClientInput {
3019
3057
  readonly publishableKey: string;
3058
+ /** Public Capxul bootstrap origin; defaults remain unchanged when omitted. */
3059
+ readonly bootstrapBaseUrl?: string;
3020
3060
  /**
3021
3061
  * One host-owned product/failure observability module around the host's
3022
3062
  * existing analytics client. Omit for zero host observation work.
@@ -1,5 +1,5 @@
1
1
  import { h as CapxulResult } from "../OAuthBearerAuthClient-C-ip-z8M.mjs";
2
- import { er as TelemetryEvent, f as CapxulClient, i as ObservationAdapter, n as ProductionSignerControls, nr as TelemetryIdentifyInput, pr as IdentityTransition, t as CapxulClientInput, tr as TelemetryGroupInput } from "../production-Du4Vc7YD.mjs";
2
+ import { er as TelemetryEvent, f as CapxulClient, i as ObservationAdapter, n as ProductionSignerControls, nr as TelemetryIdentifyInput, pr as IdentityTransition, t as CapxulClientInput, tr as TelemetryGroupInput } from "../production-DvGDNIwu.mjs";
3
3
  import { Effect, Layer } from "effect";
4
4
  //#region src/testing/production-client.d.ts
5
5
  /** Create the one production client with per-client controls at its signing boundaries. */
@@ -1,5 +1,5 @@
1
- import { D as fromWei, P as redactTelemetryEvent, a as smartAccountErrorFromCapxul, c as identityErrorFromCapxul, i as assembleCapxulClient, l as convexCallErrorFromCapxul, n as createCapxulClientWithSignerControls, o as accountReadErrorFromCapxul, s as wireChainId, u as bootstrapErrorFromCapxul, v as toWei } from "../production-216hsAKc.mjs";
2
- import { G as toHandle, H as toEmail, I as toAuthUserId, K as toJwtToken, M as toAddress, N as toAllowedOrigin, P as toAppId, Q as toPublishableKey, R as toChainId, U as toEpochMs, V as toDurationMs, W as toEpochSeconds, d as authClientPortFromPromiseAdapter, et as toSessionToken, j as toAccountId, lt as Errors, n as readClockNow, q as toKycTier, r as InMemoryAuthCacheAdapter, rt as validateHandle, st as CapxulError, y as deriveCapxulSafeAddress, z as toCountryCode } from "../OAuthBearerAuthClient-IB2W1Fzj.mjs";
1
+ import { D as fromWei, P as redactTelemetryEvent, a as smartAccountErrorFromCapxul, c as identityErrorFromCapxul, i as assembleCapxulClient, l as convexCallErrorFromCapxul, n as createCapxulClientWithSignerControls, o as accountReadErrorFromCapxul, s as wireChainId, u as bootstrapErrorFromCapxul, v as toWei } from "../production-BmsFhDUr.mjs";
2
+ import { G as toHandle, H as toEmail, I as toAuthUserId, K as toJwtToken, M as toAddress, N as toAllowedOrigin, P as toAppId, Q as toPublishableKey, R as toChainId, U as toEpochMs, V as toDurationMs, W as toEpochSeconds, ct as CapxulError, d as authClientPortFromPromiseAdapter, et as toSessionToken, it as validateHandle, j as toAccountId, n as readClockNow, q as toKycTier, r as InMemoryAuthCacheAdapter, ut as Errors, y as deriveCapxulSafeAddress, z as toCountryCode } from "../OAuthBearerAuthClient-DDD0JlaI.mjs";
3
3
  import { keccak256 } from "viem";
4
4
  import { Effect, Result, Semaphore } from "effect";
5
5
  import { getFunctionName } from "convex/server";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capxul/sdk",
3
- "version": "4.2.0-rc.9",
3
+ "version": "4.20.0-beta.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Xelmar-tech/infrastructure.git",
@@ -30,14 +30,14 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@effect/platform-node": "4.0.0-beta.105",
33
+ "@effect/platform-node": "4.0.0-rc.112",
34
34
  "@openfort/openfort-js": "^1.3.6",
35
35
  "convex": "^1.39.1",
36
- "effect": "4.0.0-beta.105",
36
+ "effect": "4.0.0-rc.112",
37
37
  "viem": "^2.53.1"
38
38
  },
39
39
  "devDependencies": {
40
- "@effect/vitest": "4.0.0-beta.105",
40
+ "@effect/vitest": "4.0.0-rc.112",
41
41
  "@typescript/native": "npm:typescript@7.0.2",
42
42
  "@vitest/coverage-v8": "4.1.11",
43
43
  "fast-check": "^3.23.2",
@@ -48,11 +48,11 @@
48
48
  "vite-plus": "0.3.0",
49
49
  "vitest": "4.1.11",
50
50
  "@capxul/config": "0.3.0",
51
- "@capxul/observability": "4.2.0-rc.9",
52
- "@capxul/errors": "0.3.0",
53
- "@capxul/wire": "0.7.0",
51
+ "@capxul/typescript-config": "0.0.0",
54
52
  "@capxul/types": "0.3.0",
55
- "@capxul/typescript-config": "0.0.0"
53
+ "@capxul/errors": "0.3.0",
54
+ "@capxul/wire": "0.8.0-beta.0",
55
+ "@capxul/observability": "4.20.0-beta.1"
56
56
  },
57
57
  "_permissionlessPinReason": "permissionless.toSafeSmartAccount is pinned to 0.3.4 for live Safe deployment E2E. Counterfactual address fixtures captured 2026-05-17 in packages/backend/convex/_shared/__tests__/counterfactual.test.ts and packages/config/tests/safe.test.ts must be re-verified before upgrading.",
58
58
  "scripts": {
@@ -1,11 +0,0 @@
1
- {
2
- "source": {
3
- "commit": "1c96a26356e8f36402e47eb4ac60bb89d6aeed7f",
4
- "tree": "375f49f76377eeec331fd44ce17238d4a6f02ad4",
5
- "branch": "codex/programme-rc",
6
- "repository": "https://github.com/Xelmar-tech/infrastructure",
7
- "lockfileSha256": "5870f53b72706d103220c1bcf733cb4fb71196aea32a9cfbdc277d73cc959264"
8
- },
9
- "name": "@capxul/sdk",
10
- "version": "4.2.0-rc.9"
11
- }