@usesigil/kit 0.8.1 → 0.11.0

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.
Files changed (109) hide show
  1. package/README.md +350 -164
  2. package/dist/alt-config.d.ts +4 -2
  3. package/dist/alt-config.d.ts.map +1 -1
  4. package/dist/alt-config.js +4 -2
  5. package/dist/alt-config.js.map +1 -1
  6. package/dist/alt-loader.d.ts.map +1 -1
  7. package/dist/alt-loader.js +2 -1
  8. package/dist/alt-loader.js.map +1 -1
  9. package/dist/balance-tracker.d.ts.map +1 -1
  10. package/dist/balance-tracker.js +2 -1
  11. package/dist/balance-tracker.js.map +1 -1
  12. package/dist/create-vault.d.ts +40 -3
  13. package/dist/create-vault.d.ts.map +1 -1
  14. package/dist/create-vault.js +52 -18
  15. package/dist/create-vault.js.map +1 -1
  16. package/dist/dashboard/discover.d.ts.map +1 -1
  17. package/dist/dashboard/discover.js +2 -1
  18. package/dist/dashboard/discover.js.map +1 -1
  19. package/dist/dashboard/from-json.d.ts +1 -0
  20. package/dist/dashboard/from-json.d.ts.map +1 -1
  21. package/dist/dashboard/from-json.js +3 -1
  22. package/dist/dashboard/from-json.js.map +1 -1
  23. package/dist/dashboard/mutations.d.ts.map +1 -1
  24. package/dist/dashboard/mutations.js +2 -1
  25. package/dist/dashboard/mutations.js.map +1 -1
  26. package/dist/dashboard/reads.d.ts.map +1 -1
  27. package/dist/dashboard/reads.js +5 -4
  28. package/dist/dashboard/reads.js.map +1 -1
  29. package/dist/errors/codes.d.ts +8 -2
  30. package/dist/errors/codes.d.ts.map +1 -1
  31. package/dist/errors/codes.js +6 -0
  32. package/dist/errors/codes.js.map +1 -1
  33. package/dist/errors/context.d.ts +17 -1
  34. package/dist/errors/context.d.ts.map +1 -1
  35. package/dist/errors/public.d.ts +24 -0
  36. package/dist/errors/public.d.ts.map +1 -0
  37. package/dist/errors/public.js +30 -0
  38. package/dist/errors/public.js.map +1 -0
  39. package/dist/errors/walk.d.ts.map +1 -1
  40. package/dist/errors/walk.js +2 -1
  41. package/dist/errors/walk.js.map +1 -1
  42. package/dist/helpers/ata.d.ts +73 -0
  43. package/dist/helpers/ata.d.ts.map +1 -0
  44. package/dist/helpers/ata.js +107 -0
  45. package/dist/helpers/ata.js.map +1 -0
  46. package/dist/helpers/parse-usd.d.ts +43 -0
  47. package/dist/helpers/parse-usd.d.ts.map +1 -0
  48. package/dist/helpers/parse-usd.js +81 -0
  49. package/dist/helpers/parse-usd.js.map +1 -0
  50. package/dist/helpers/validate-cap-aggregate.d.ts +41 -0
  51. package/dist/helpers/validate-cap-aggregate.d.ts.map +1 -0
  52. package/dist/helpers/validate-cap-aggregate.js +61 -0
  53. package/dist/helpers/validate-cap-aggregate.js.map +1 -0
  54. package/dist/hooks.d.ts +114 -0
  55. package/dist/hooks.d.ts.map +1 -0
  56. package/dist/hooks.js +118 -0
  57. package/dist/hooks.js.map +1 -0
  58. package/dist/index.d.ts +17 -4
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +42 -17
  61. package/dist/index.js.map +1 -1
  62. package/dist/logger.d.ts +77 -0
  63. package/dist/logger.d.ts.map +1 -0
  64. package/dist/logger.js +153 -0
  65. package/dist/logger.js.map +1 -0
  66. package/dist/plugin.d.ts +110 -0
  67. package/dist/plugin.d.ts.map +1 -0
  68. package/dist/plugin.js +119 -0
  69. package/dist/plugin.js.map +1 -0
  70. package/dist/presets.d.ts +73 -6
  71. package/dist/presets.d.ts.map +1 -1
  72. package/dist/presets.js +75 -6
  73. package/dist/presets.js.map +1 -1
  74. package/dist/priority-fees.d.ts.map +1 -1
  75. package/dist/priority-fees.js +3 -2
  76. package/dist/priority-fees.js.map +1 -1
  77. package/dist/react/index.d.ts +69 -0
  78. package/dist/react/index.d.ts.map +1 -0
  79. package/dist/react/index.js +118 -0
  80. package/dist/react/index.js.map +1 -0
  81. package/dist/seal.d.ts +113 -15
  82. package/dist/seal.d.ts.map +1 -1
  83. package/dist/seal.js +269 -10
  84. package/dist/seal.js.map +1 -1
  85. package/dist/shield.d.ts.map +1 -1
  86. package/dist/shield.js +8 -7
  87. package/dist/shield.js.map +1 -1
  88. package/dist/sigil.d.ts +187 -0
  89. package/dist/sigil.d.ts.map +1 -0
  90. package/dist/sigil.js +194 -0
  91. package/dist/sigil.js.map +1 -0
  92. package/dist/tee/verify.d.ts.map +1 -1
  93. package/dist/tee/verify.js +6 -5
  94. package/dist/tee/verify.js.map +1 -1
  95. package/dist/transaction-executor.d.ts.map +1 -1
  96. package/dist/transaction-executor.js +3 -2
  97. package/dist/transaction-executor.js.map +1 -1
  98. package/dist/types.d.ts +3 -31
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/types.js +45 -106
  101. package/dist/types.js.map +1 -1
  102. package/dist/vault-handle.d.ts +123 -0
  103. package/dist/vault-handle.d.ts.map +1 -0
  104. package/dist/vault-handle.js +136 -0
  105. package/dist/vault-handle.js.map +1 -0
  106. package/dist/x402/shielded-fetch.d.ts.map +1 -1
  107. package/dist/x402/shielded-fetch.js +7 -4
  108. package/dist/x402/shielded-fetch.js.map +1 -1
  109. package/package.json +21 -3
package/dist/index.js CHANGED
@@ -1,20 +1,24 @@
1
1
  // @usesigil/kit — Kit-native SDK for Sigil
2
2
  // ESM-only, zero web3.js dependency
3
3
  // ─── Generated Client ─────────────────────────────────────────────────────────
4
- export * from "./generated/index.js";
5
- // ─── Type Constants + Permissions ─────────────────────────────────────────────
6
4
  //
7
- // The legacy 21-bit permission bitmasks (`SWAP_ONLY`, `PERPS_ONLY`,
8
- // `TRANSFER_ONLY`, `ESCROW_ONLY`, `PERPS_FULL`), the `ACTION_PERMISSION_MAP`
9
- // table, and the permission helpers built on top of them (`hasPermission`,
10
- // `permissionsToStrings`, `stringsToPermissions`, `PermissionBuilder`) are no
11
- // longer re-exported here. They encode a pre-v6 permission model that the
12
- // on-chain program replaced with a 2-bit capability enum (`0 = Disabled`,
13
- // `1 = Observer`, `2 = Operator`), and the presets that previously used those
14
- // bitmasks now register agents with invalid capability values (either
15
- // silently Observer or rejected with `InvalidArgument`). Use
16
- // {@link FULL_CAPABILITY} / {@link FULL_PERMISSIONS} (both equal `2n`) for
17
- // any preset or vault-creation flow that needs spending authority.
5
+ // v0.9.0 barrel surgery (A12): was `export * from "./generated/index.js"`
6
+ // which pulled ~500 Codama exports (37 instruction builders + 60+ event/
7
+ // struct types + 82 hex error constants) into the root barrel. Consumers
8
+ // should go through `seal()` / `createSigilClient()` / `createVault()` for
9
+ // instruction building, and `SIGIL_PROGRAM_ADDRESS` (re-exported from
10
+ // `types.js` below) for the program ID. Account decoders stay public
11
+ // they're the supported way to parse vault state fetched from an RPC.
12
+ export * from "./generated/accounts/index.js";
13
+ // ─── Type Constants + Capability ──────────────────────────────────────────────
14
+ //
15
+ // Legacy 21-bit permission bitmasks and their helpers (`SWAP_ONLY`,
16
+ // `PERPS_ONLY`, `TRANSFER_ONLY`, `ESCROW_ONLY`, `PERPS_FULL`,
17
+ // `ACTION_PERMISSION_MAP`, `hasPermission`, `permissionsToStrings`,
18
+ // `stringsToPermissions`, `PermissionBuilder`) were DELETED in the A11
19
+ // cleanup — they encoded a pre-v6 permission model the on-chain program no
20
+ // longer supports. Use {@link FULL_CAPABILITY} (2n) for operator agents and
21
+ // put granular per-action restrictions in `InstructionConstraints`.
18
22
  export {
19
23
  // Program
20
24
  SIGIL_PROGRAM_ADDRESS,
@@ -102,9 +106,28 @@ export { seal, createSigilClient,
102
106
  /** @deprecated Use createSigilClient(). Removed at v1.0. */
103
107
  SigilClient, replaceAgentAtas, } from "./seal.js";
104
108
  // ─── Create Vault ──────────────────────────────────────────────────────────
109
+ // ─── Sprint 2: Sigil Facade + SigilVault + Hooks + Plugins ──────────────────
110
+ export { Sigil } from "./sigil.js";
111
+ export { SigilVault } from "./vault-handle.js";
112
+ export { composeHooks, invokeHook, newCorrelationId } from "./hooks.js";
113
+ export { runPlugins, validatePluginList } from "./plugin.js";
105
114
  export { createVault, createAndSendVault } from "./create-vault.js";
106
115
  // ─── Vault Presets ───────────────────────────────────────────────────────────
107
- export { VAULT_PRESETS, getPreset, listPresets, presetToCreateVaultFields, } from "./presets.js";
116
+ export { VAULT_PRESETS, getPreset, listPresets, presetToCreateVaultFields,
117
+ // v0.9.0 A10: orthogonal SAFETY_PRESETS for timelock + cap defaults.
118
+ SAFETY_PRESETS, applySafetyPreset, requireResolvedSafetyPreset, } from "./presets.js";
119
+ // ─── v0.9.0 helpers (A3, A4, A9) ────────────────────────────────────────────
120
+ // Strict USD parser, policy-gated ATA builder, aggregate cap validator.
121
+ export { parseUsd } from "./helpers/parse-usd.js";
122
+ export { initializeVaultAtas, } from "./helpers/ata.js";
123
+ export { validateAgentCapAggregate, } from "./helpers/validate-cap-aggregate.js";
124
+ // ─── v0.9.0 logger (A5) ─────────────────────────────────────────────────────
125
+ // SigilLogger interface + NOOP_LOGGER default + createConsoleLogger opt-in.
126
+ // setSigilModuleLogger / getSigilModuleLogger are for SDK internals; the
127
+ // consumer-facing install point is SigilClient.create(config.logger).
128
+ export { NOOP_LOGGER, createConsoleLogger, resolveLogger, setSigilModuleLogger, getSigilModuleLogger, } from "./logger.js";
129
+ // ─── v0.9.0 genesis hash constants (A7) ─────────────────────────────────────
130
+ export { SOLANA_DEVNET_GENESIS_HASH, SOLANA_MAINNET_GENESIS_HASH, } from "./seal.js";
108
131
  // ─── Owner Transaction ───────────────────────────────────────────────────────
109
132
  export { buildOwnerTransaction } from "./owner-transaction.js";
110
133
  // ─── Inscribe / withVault ─────────────────────────────────────────────────────
@@ -143,9 +166,11 @@ export { KNOWN_PROTOCOLS, KNOWN_TOKENS, SYSTEM_PROGRAMS, getTokenInfo, getProtoc
143
166
  // Internally the class is still called `SigilError`; the rename happens at
144
167
  // the public export boundary. Internal code in sdk/kit/src/ continues to
145
168
  // use `SigilError`. Targeted full rename for a follow-up cleanup PR.
146
- export { SigilError as SigilKitError, SigilShieldError, SigilTeeError, SigilX402Error, SigilComposeError, SigilSdkDomainError, SigilRpcError, SIGIL_KIT_VERSION, walk as walkSigilCause,
147
- // Code constantsall 47.
148
- SIGIL_ERROR__SHIELD__POLICY_DENIED, SIGIL_ERROR__SHIELD__CONFIG_INVALID, SIGIL_ERROR__SHIELD__RATE_LIMIT_EXCEEDED, SIGIL_ERROR__SHIELD__SESSION_BINDING, SIGIL_ERROR__TEE__ATTESTATION_FAILED, SIGIL_ERROR__TEE__CERT_CHAIN_INVALID, SIGIL_ERROR__TEE__PCR_MISMATCH, SIGIL_ERROR__COMPOSE__MISSING_PARAM, SIGIL_ERROR__COMPOSE__INVALID_BIGINT, SIGIL_ERROR__COMPOSE__UNSUPPORTED_ACTION, SIGIL_ERROR__X402__HEADER_MALFORMED, SIGIL_ERROR__X402__PAYMENT_FAILED, SIGIL_ERROR__X402__UNSUPPORTED, SIGIL_ERROR__X402__DESTINATION_BLOCKED, SIGIL_ERROR__X402__REPLAY, SIGIL_ERROR__SDK__INVALID_CONFIG, SIGIL_ERROR__SDK__INVALID_PARAMS, SIGIL_ERROR__SDK__INVALID_NETWORK, SIGIL_ERROR__SDK__INVALID_AMOUNT, SIGIL_ERROR__SDK__INVALID_CAPABILITY, SIGIL_ERROR__SDK__INVALID_ACTION_TYPE, SIGIL_ERROR__SDK__OWNER_AGENT_COLLISION, SIGIL_ERROR__SDK__VAULT_NOT_FOUND, SIGIL_ERROR__SDK__VAULT_INACTIVE, SIGIL_ERROR__SDK__VAULT_SLOTS_EXHAUSTED, SIGIL_ERROR__SDK__POLICY_NOT_FOUND, SIGIL_ERROR__SDK__AGENT_NOT_REGISTERED, SIGIL_ERROR__SDK__AGENT_PAUSED, SIGIL_ERROR__SDK__AGENT_ZERO_CAPABILITY, SIGIL_ERROR__SDK__SIGNER_INVALID, SIGIL_ERROR__SDK__SIGNATURE_INVALID, SIGIL_ERROR__SDK__SPL_TOKEN_OP_BLOCKED, SIGIL_ERROR__SDK__PROTOCOL_NOT_ALLOWED, SIGIL_ERROR__SDK__PROTOCOL_NOT_TARGETED, SIGIL_ERROR__SDK__INSTRUCTION_COUNT, SIGIL_ERROR__SDK__CAP_EXCEEDED, SIGIL_ERROR__SDK__ATA_NON_CANONICAL, SIGIL_ERROR__SDK__ALT_INTEGRITY, SIGIL_ERROR__SDK__ALT_NOT_DEPLOYED, SIGIL_ERROR__SDK__SEAL_FAILED, SIGIL_ERROR__SDK__UNKNOWN, SIGIL_ERROR__RPC__TX_FAILED, SIGIL_ERROR__RPC__CONFIRMATION_TIMEOUT, SIGIL_ERROR__RPC__SIMULATION_FAILED, SIGIL_ERROR__RPC__DRAIN_DETECTED, SIGIL_ERROR__RPC__TX_TOO_LARGE, SIGIL_ERROR__RPC__RATE_LIMITED, SIGIL_ERROR__RPC__INSTRUCTION_REQUIRED, SIGIL_ERROR__PROGRAM__GENERIC, } from "./errors/index.js";
169
+ // v0.9.0 A12: the 49 `SIGIL_ERROR__*` code constants are no longer
170
+ // re-exported from the root barrel import them from the `./errors`
171
+ // subpath: `import { SIGIL_ERROR__SDK__CAP_EXCEEDED } from "@usesigil/kit/errors"`.
172
+ // Error classes + domain-union types stay at root for catch-block narrowing.
173
+ export { SigilError as SigilKitError, SigilShieldError, SigilTeeError, SigilX402Error, SigilComposeError, SigilSdkDomainError, SigilRpcError, SIGIL_KIT_VERSION, walk as walkSigilCause, } from "./errors/index.js";
149
174
  // ─── Dashboard / Owner Client ────────────────────────────────────────────────
150
175
  // Re-exported from the dashboard subpath for convenience. Consumers preferring
151
176
  // a single import path can use these; the dashboard subpath remains the
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * SigilLogger — pluggable structured logger for `@usesigil/kit`.
3
+ *
4
+ * Every internal `console.warn` / `console.error` / `console.debug` in the
5
+ * SDK routes through an injected `SigilLogger`. Consumers embedding the
6
+ * SDK into their own application decide where that output goes — a
7
+ * Pino/Bunyan/Winston instance, an OpenTelemetry span, a custom appender,
8
+ * or the bundled `NOOP_LOGGER` that discards everything.
9
+ *
10
+ * Default behavior: `NOOP_LOGGER`. No output is emitted unless the
11
+ * consumer explicitly opts in. This matters because the SDK is embedded
12
+ * in TEE-signed agent workflows where stray stdout/stderr can leak
13
+ * sensitive fields (vault addresses, mint addresses, cap values) to
14
+ * unintended destinations.
15
+ *
16
+ * For local development and test suites, `createConsoleLogger()` returns
17
+ * a drop-in forwarder that emits to `console.*`.
18
+ *
19
+ * Rationale: see the plan in
20
+ * `.claude/worktrees/<wt>/Plans/recursive-snuggling-reddy.md` step A5.
21
+ * This replaces raw `console.*` calls scattered across 13 files.
22
+ */
23
+ /** Structured logger interface. All methods are side-effect-only. */
24
+ export interface SigilLogger {
25
+ /** Diagnostic messages — verbose, disabled by default. */
26
+ debug(message: string, context?: Record<string, unknown>): void;
27
+ /** Informational messages — nominal operational events. */
28
+ info(message: string, context?: Record<string, unknown>): void;
29
+ /** Warnings — unexpected but recoverable conditions. */
30
+ warn(message: string, context?: Record<string, unknown>): void;
31
+ /**
32
+ * Errors — failures the caller should know about. The `err` parameter
33
+ * is the originating exception, if any; it is logged separately from
34
+ * `context` to encourage structured-field reporting.
35
+ */
36
+ error(message: string, err?: unknown, context?: Record<string, unknown>): void;
37
+ }
38
+ /**
39
+ * `NOOP_LOGGER` — discards every log call. Exported as a `const` so
40
+ * consumers may pass it explicitly; also used internally as the fallback
41
+ * when a `SigilClient` / `OwnerClient` is constructed without a logger.
42
+ */
43
+ export declare const NOOP_LOGGER: SigilLogger;
44
+ /**
45
+ * `createConsoleLogger` — opt-in logger that forwards to `console.*`.
46
+ *
47
+ * Use in test suites and development when you want SDK output on stderr/
48
+ * stdout. Not the default, because production consumers should inject
49
+ * their own structured logger (pino, bunyan, otel, etc.) rather than
50
+ * rely on `console`.
51
+ */
52
+ export declare function createConsoleLogger(): SigilLogger;
53
+ /**
54
+ * Internal helper: if the caller supplied a logger, use it; otherwise
55
+ * return the no-op default. All public SDK entry points (SigilClient,
56
+ * OwnerClient, seal, shielded-fetch, etc.) should call this once during
57
+ * construction so the rest of the module can assume a non-null logger.
58
+ *
59
+ * Marked public so subpackages (dashboard, custody) can reuse the same
60
+ * resolution rule.
61
+ */
62
+ export declare function resolveLogger(logger: SigilLogger | undefined): SigilLogger;
63
+ /**
64
+ * Set the module-level logger used by leaf SDK utilities that don't
65
+ * accept a per-call logger parameter.
66
+ *
67
+ * Called by `SigilClient.create()` / `new SigilClient()` / `OwnerClient`
68
+ * constructors when `config.logger` is provided, so an application's
69
+ * chosen logger reaches every corner of the SDK.
70
+ */
71
+ export declare function setSigilModuleLogger(logger: SigilLogger): void;
72
+ /**
73
+ * Read the current module-level logger. Internal SDK sites that cannot
74
+ * thread a per-call logger should call this to emit warnings/errors.
75
+ */
76
+ export declare function getSigilModuleLogger(): SigilLogger;
77
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,2DAA2D;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,wDAAwD;IACxD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D;;;;OAIG;IACH,KAAK,CACH,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAAC;CACT;AAQD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,WAKxB,CAAC;AAMH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CA6CjD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAE1E;AAuBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAE9D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CAElD"}
package/dist/logger.js ADDED
@@ -0,0 +1,153 @@
1
+ /**
2
+ * SigilLogger — pluggable structured logger for `@usesigil/kit`.
3
+ *
4
+ * Every internal `console.warn` / `console.error` / `console.debug` in the
5
+ * SDK routes through an injected `SigilLogger`. Consumers embedding the
6
+ * SDK into their own application decide where that output goes — a
7
+ * Pino/Bunyan/Winston instance, an OpenTelemetry span, a custom appender,
8
+ * or the bundled `NOOP_LOGGER` that discards everything.
9
+ *
10
+ * Default behavior: `NOOP_LOGGER`. No output is emitted unless the
11
+ * consumer explicitly opts in. This matters because the SDK is embedded
12
+ * in TEE-signed agent workflows where stray stdout/stderr can leak
13
+ * sensitive fields (vault addresses, mint addresses, cap values) to
14
+ * unintended destinations.
15
+ *
16
+ * For local development and test suites, `createConsoleLogger()` returns
17
+ * a drop-in forwarder that emits to `console.*`.
18
+ *
19
+ * Rationale: see the plan in
20
+ * `.claude/worktrees/<wt>/Plans/recursive-snuggling-reddy.md` step A5.
21
+ * This replaces raw `console.*` calls scattered across 13 files.
22
+ */
23
+ // ---------------------------------------------------------------------------
24
+ // NOOP logger — zero-output default
25
+ // ---------------------------------------------------------------------------
26
+ const noop = () => undefined;
27
+ /**
28
+ * `NOOP_LOGGER` — discards every log call. Exported as a `const` so
29
+ * consumers may pass it explicitly; also used internally as the fallback
30
+ * when a `SigilClient` / `OwnerClient` is constructed without a logger.
31
+ */
32
+ export const NOOP_LOGGER = Object.freeze({
33
+ debug: noop,
34
+ info: noop,
35
+ warn: noop,
36
+ error: noop,
37
+ });
38
+ // ---------------------------------------------------------------------------
39
+ // Console logger — opt-in forwarder to `console.*`
40
+ // ---------------------------------------------------------------------------
41
+ /**
42
+ * `createConsoleLogger` — opt-in logger that forwards to `console.*`.
43
+ *
44
+ * Use in test suites and development when you want SDK output on stderr/
45
+ * stdout. Not the default, because production consumers should inject
46
+ * their own structured logger (pino, bunyan, otel, etc.) rather than
47
+ * rely on `console`.
48
+ */
49
+ export function createConsoleLogger() {
50
+ return {
51
+ debug: (message, context) => {
52
+ if (context !== undefined) {
53
+ // eslint-disable-next-line no-console
54
+ console.debug(message, context);
55
+ }
56
+ else {
57
+ // eslint-disable-next-line no-console
58
+ console.debug(message);
59
+ }
60
+ },
61
+ info: (message, context) => {
62
+ if (context !== undefined) {
63
+ // eslint-disable-next-line no-console
64
+ console.info(message, context);
65
+ }
66
+ else {
67
+ // eslint-disable-next-line no-console
68
+ console.info(message);
69
+ }
70
+ },
71
+ warn: (message, context) => {
72
+ if (context !== undefined) {
73
+ // eslint-disable-next-line no-console
74
+ console.warn(message, context);
75
+ }
76
+ else {
77
+ // eslint-disable-next-line no-console
78
+ console.warn(message);
79
+ }
80
+ },
81
+ error: (message, err, context) => {
82
+ if (err !== undefined && context !== undefined) {
83
+ // eslint-disable-next-line no-console
84
+ console.error(message, err, context);
85
+ }
86
+ else if (err !== undefined) {
87
+ // eslint-disable-next-line no-console
88
+ console.error(message, err);
89
+ }
90
+ else if (context !== undefined) {
91
+ // eslint-disable-next-line no-console
92
+ console.error(message, context);
93
+ }
94
+ else {
95
+ // eslint-disable-next-line no-console
96
+ console.error(message);
97
+ }
98
+ },
99
+ };
100
+ }
101
+ // ---------------------------------------------------------------------------
102
+ // resolveLogger — internal helper for SDK entry points
103
+ // ---------------------------------------------------------------------------
104
+ /**
105
+ * Internal helper: if the caller supplied a logger, use it; otherwise
106
+ * return the no-op default. All public SDK entry points (SigilClient,
107
+ * OwnerClient, seal, shielded-fetch, etc.) should call this once during
108
+ * construction so the rest of the module can assume a non-null logger.
109
+ *
110
+ * Marked public so subpackages (dashboard, custody) can reuse the same
111
+ * resolution rule.
112
+ */
113
+ export function resolveLogger(logger) {
114
+ return logger ?? NOOP_LOGGER;
115
+ }
116
+ // ---------------------------------------------------------------------------
117
+ // Module-level logger — leaf-utility fallback
118
+ // ---------------------------------------------------------------------------
119
+ //
120
+ // Some SDK internals (walk(), alt-loader, balance-tracker, dashboard
121
+ // reads, etc.) are called from deep in the stack where threading a
122
+ // per-call `logger` argument would require signature changes across
123
+ // many consumers. For these sites, the SDK uses a module-level logger
124
+ // that SigilClient / OwnerClient constructors set from config.logger
125
+ // during initialization.
126
+ //
127
+ // Default: NOOP_LOGGER — nothing is emitted until a consumer opts in.
128
+ //
129
+ // Trade-off: this is module-local mutable state. Tests that want to
130
+ // observe warnings should call `setSigilModuleLogger` in `beforeEach`
131
+ // and reset with `setSigilModuleLogger(NOOP_LOGGER)` in `afterEach`.
132
+ // The state is process-wide, so parallel test suites must NOT share a
133
+ // worker unless all cooperate on the reset.
134
+ let _sigilModuleLogger = NOOP_LOGGER;
135
+ /**
136
+ * Set the module-level logger used by leaf SDK utilities that don't
137
+ * accept a per-call logger parameter.
138
+ *
139
+ * Called by `SigilClient.create()` / `new SigilClient()` / `OwnerClient`
140
+ * constructors when `config.logger` is provided, so an application's
141
+ * chosen logger reaches every corner of the SDK.
142
+ */
143
+ export function setSigilModuleLogger(logger) {
144
+ _sigilModuleLogger = logger;
145
+ }
146
+ /**
147
+ * Read the current module-level logger. Internal SDK sites that cannot
148
+ * thread a per-call logger should call this to emit warnings/errors.
149
+ */
150
+ export function getSigilModuleLogger() {
151
+ return _sigilModuleLogger;
152
+ }
153
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * SigilPolicyPlugin — consumer-supplied policy checks that run inside
3
+ * the `seal()` pre-flight.
4
+ *
5
+ * Plugins are the **rejection surface** of the SDK — distinct from
6
+ * `SealHooks`, which are observe-only. A plugin's `check()` returns
7
+ * either `{ allow: true }` or `{ allow: false, reason, code? }`; the
8
+ * first rejection short-circuits and `seal()` throws
9
+ * `SigilSdkDomainError(SIGIL_ERROR__SDK__PLUGIN_REJECTED)`.
10
+ *
11
+ * Run order inside `seal()`:
12
+ * 1. Parameter validation (basic shape checks)
13
+ * 2. `hooks.onBeforeBuild` — may abort cleanly via `{ skipSeal: true }`
14
+ * 3. **Plugin checks** — first `{ allow: false }` throws
15
+ * 4. `resolveVaultState` + capability check + constraint check
16
+ * 5. Transaction assembly
17
+ *
18
+ * Plugins see the vault's resolved on-chain state if they need it, but
19
+ * they MUST NOT perform their own RPC calls — they receive the
20
+ * pre-resolved state as context. Async plugin `check()` is supported
21
+ * for cases where the plugin delegates to an external service
22
+ * (feature-flag servers, compliance APIs) but the plugin runner will
23
+ * log a warning if any plugin takes >1s.
24
+ *
25
+ * Consumer-supplied logger + hooks still fire around plugin execution
26
+ * (a rejecting plugin triggers `onError` before the throw propagates).
27
+ */
28
+ import type { Address, Instruction } from "./kit-adapter.js";
29
+ import type { SigilSdkErrorCode } from "./errors/codes.js";
30
+ /**
31
+ * Read-only data surface passed to every plugin `check()` call. The
32
+ * plugin runner populates this once per `seal()` invocation and shares
33
+ * it across all plugins; plugins must treat everything as immutable.
34
+ */
35
+ export interface PluginContext {
36
+ readonly vault: Address;
37
+ readonly agent: Address;
38
+ readonly tokenMint: Address;
39
+ readonly amount: bigint;
40
+ readonly network: "devnet" | "mainnet";
41
+ readonly instructions: readonly Instruction[];
42
+ /** Stable ID for this `seal()` invocation — matches `SealHookContext.correlationId`. */
43
+ readonly correlationId: string;
44
+ }
45
+ /**
46
+ * Successful plugin check. May carry advisory metadata that downstream
47
+ * plugins or hooks can observe via `SealHooks.onBeforeSign`.
48
+ */
49
+ export interface PluginAllow {
50
+ readonly allow: true;
51
+ /** Optional metadata (flag names, rule IDs, etc.) for downstream visibility. */
52
+ readonly metadata?: Readonly<Record<string, unknown>>;
53
+ }
54
+ /**
55
+ * Rejection result. `reason` must be a human-readable string; `code`
56
+ * is optional but recommended for machine-readable catch blocks.
57
+ */
58
+ export interface PluginReject {
59
+ readonly allow: false;
60
+ readonly reason: string;
61
+ readonly code?: SigilSdkErrorCode;
62
+ readonly metadata?: Readonly<Record<string, unknown>>;
63
+ }
64
+ export type PluginResult = PluginAllow | PluginReject;
65
+ export interface SigilPolicyPlugin {
66
+ /**
67
+ * Display name used in logs + the rejection error's context. Must be
68
+ * unique per plugin instance — the runner enforces this via config
69
+ * validation.
70
+ */
71
+ readonly name: string;
72
+ /**
73
+ * Observe-only lifecycle: called once when the plugin is registered
74
+ * on a `SigilClient` / `Sigil` facade. Use for opening connections,
75
+ * prewarming caches, etc. Throws during init fail the client
76
+ * construction with `SIGIL_ERROR__SDK__INVALID_CONFIG`.
77
+ */
78
+ readonly init?: () => void | Promise<void>;
79
+ /**
80
+ * Policy check. Returns `{ allow: true }` to continue or
81
+ * `{ allow: false, reason, code? }` to reject. Must not throw under
82
+ * normal operation — the plugin runner treats a throw as a hard
83
+ * rejection with the error message as the reason.
84
+ */
85
+ check(ctx: PluginContext): PluginResult | Promise<PluginResult>;
86
+ }
87
+ /**
88
+ * Run every plugin's `check()` in registration order. Returns on the
89
+ * first rejection with a `SigilSdkDomainError`; otherwise returns
90
+ * successfully. Plugins that take >1 second log a warning via the
91
+ * module logger.
92
+ *
93
+ * Throws:
94
+ * - `SigilSdkDomainError(SIGIL_ERROR__SDK__PLUGIN_REJECTED)` on first
95
+ * plugin that returns `{ allow: false }` OR throws.
96
+ *
97
+ * @internal — consumers invoke this via `seal()` / `SigilClient`.
98
+ */
99
+ export declare function runPlugins(plugins: readonly SigilPolicyPlugin[] | undefined, ctx: PluginContext): Promise<void>;
100
+ /**
101
+ * Validate a plugin list at client-construction time. Rejects:
102
+ * - Non-array input
103
+ * - Duplicate plugin names
104
+ * - Plugins without `name` or `check`
105
+ *
106
+ * Called by `createSigilClient` / `Sigil.quickstart` / `Sigil.fromVault`
107
+ * when `config.plugins` is present.
108
+ */
109
+ export declare function validatePluginList(plugins: unknown): asserts plugins is readonly SigilPolicyPlugin[];
110
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAU3D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,wFAAwF;IACxF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAID;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;AAItD,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACjE;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,EACjD,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,IAAI,CAAC,CAiDf;AAID;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,IAAI,SAAS,iBAAiB,EAAE,CA+CjD"}
package/dist/plugin.js ADDED
@@ -0,0 +1,119 @@
1
+ /**
2
+ * SigilPolicyPlugin — consumer-supplied policy checks that run inside
3
+ * the `seal()` pre-flight.
4
+ *
5
+ * Plugins are the **rejection surface** of the SDK — distinct from
6
+ * `SealHooks`, which are observe-only. A plugin's `check()` returns
7
+ * either `{ allow: true }` or `{ allow: false, reason, code? }`; the
8
+ * first rejection short-circuits and `seal()` throws
9
+ * `SigilSdkDomainError(SIGIL_ERROR__SDK__PLUGIN_REJECTED)`.
10
+ *
11
+ * Run order inside `seal()`:
12
+ * 1. Parameter validation (basic shape checks)
13
+ * 2. `hooks.onBeforeBuild` — may abort cleanly via `{ skipSeal: true }`
14
+ * 3. **Plugin checks** — first `{ allow: false }` throws
15
+ * 4. `resolveVaultState` + capability check + constraint check
16
+ * 5. Transaction assembly
17
+ *
18
+ * Plugins see the vault's resolved on-chain state if they need it, but
19
+ * they MUST NOT perform their own RPC calls — they receive the
20
+ * pre-resolved state as context. Async plugin `check()` is supported
21
+ * for cases where the plugin delegates to an external service
22
+ * (feature-flag servers, compliance APIs) but the plugin runner will
23
+ * log a warning if any plugin takes >1s.
24
+ *
25
+ * Consumer-supplied logger + hooks still fire around plugin execution
26
+ * (a rejecting plugin triggers `onError` before the throw propagates).
27
+ */
28
+ import { SigilSdkDomainError } from "./errors/sdk.js";
29
+ import { SIGIL_ERROR__SDK__PLUGIN_REJECTED, SIGIL_ERROR__SDK__INVALID_CONFIG, } from "./errors/codes.js";
30
+ import { getSigilModuleLogger } from "./logger.js";
31
+ // ─── Plugin runner ──────────────────────────────────────────────────────────
32
+ /**
33
+ * Run every plugin's `check()` in registration order. Returns on the
34
+ * first rejection with a `SigilSdkDomainError`; otherwise returns
35
+ * successfully. Plugins that take >1 second log a warning via the
36
+ * module logger.
37
+ *
38
+ * Throws:
39
+ * - `SigilSdkDomainError(SIGIL_ERROR__SDK__PLUGIN_REJECTED)` on first
40
+ * plugin that returns `{ allow: false }` OR throws.
41
+ *
42
+ * @internal — consumers invoke this via `seal()` / `SigilClient`.
43
+ */
44
+ export async function runPlugins(plugins, ctx) {
45
+ if (!plugins || plugins.length === 0)
46
+ return;
47
+ for (const plugin of plugins) {
48
+ const start = Date.now();
49
+ let result;
50
+ try {
51
+ result = await plugin.check(ctx);
52
+ }
53
+ catch (err) {
54
+ const message = err instanceof Error ? err.message : String(err ?? "unknown");
55
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__PLUGIN_REJECTED, `Plugin "${plugin.name}" threw during check(): ${message}`, {
56
+ cause: err,
57
+ context: {
58
+ plugin: plugin.name,
59
+ reason: message,
60
+ correlationId: ctx.correlationId,
61
+ },
62
+ });
63
+ }
64
+ const elapsedMs = Date.now() - start;
65
+ if (elapsedMs > 1000) {
66
+ getSigilModuleLogger().warn(`[SigilPolicyPlugin] "${plugin.name}" took ${elapsedMs}ms — plugin checks should be fast`, { plugin: plugin.name, elapsedMs });
67
+ }
68
+ if (!result.allow) {
69
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__PLUGIN_REJECTED, `Plugin "${plugin.name}" rejected the operation: ${result.reason}`, {
70
+ context: {
71
+ plugin: plugin.name,
72
+ reason: result.reason,
73
+ code: result.code,
74
+ metadata: result.metadata,
75
+ correlationId: ctx.correlationId,
76
+ },
77
+ });
78
+ }
79
+ }
80
+ }
81
+ // ─── Plugin list validation ─────────────────────────────────────────────────
82
+ /**
83
+ * Validate a plugin list at client-construction time. Rejects:
84
+ * - Non-array input
85
+ * - Duplicate plugin names
86
+ * - Plugins without `name` or `check`
87
+ *
88
+ * Called by `createSigilClient` / `Sigil.quickstart` / `Sigil.fromVault`
89
+ * when `config.plugins` is present.
90
+ */
91
+ export function validatePluginList(plugins) {
92
+ if (!Array.isArray(plugins)) {
93
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, `SigilClientConfig.plugins must be an array of SigilPolicyPlugin (received ${typeof plugins})`, { context: { field: "plugins", expected: "SigilPolicyPlugin[]" } });
94
+ }
95
+ const names = new Set();
96
+ for (let i = 0; i < plugins.length; i++) {
97
+ const p = plugins[i];
98
+ if (!p || typeof p !== "object") {
99
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, `Plugin at index ${i} is not an object (received ${typeof p})`, { context: { field: `plugins[${i}]`, expected: "object" } });
100
+ }
101
+ const pluginObj = p;
102
+ if (typeof pluginObj.name !== "string" || pluginObj.name.length === 0) {
103
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, `Plugin at index ${i} is missing a non-empty string "name"`, { context: { field: `plugins[${i}].name`, expected: "string" } });
104
+ }
105
+ if (typeof pluginObj.check !== "function") {
106
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, `Plugin "${pluginObj.name}" is missing a check() function`, {
107
+ context: {
108
+ field: `plugins[${pluginObj.name}].check`,
109
+ expected: "function",
110
+ },
111
+ });
112
+ }
113
+ if (names.has(pluginObj.name)) {
114
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, `Duplicate plugin name "${pluginObj.name}" — plugin names must be unique per client`, { context: { field: "plugins[].name", expected: "unique" } });
115
+ }
116
+ names.add(pluginObj.name);
117
+ }
118
+ }
119
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}