@substrat-run/kernel 0.139.0 → 0.140.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 (140) hide show
  1. package/dist/admin-log-ddl.d.ts +21 -0
  2. package/dist/admin-log-ddl.d.ts.map +1 -0
  3. package/dist/admin-log-ddl.js +32 -0
  4. package/dist/admin-log-ddl.js.map +1 -0
  5. package/dist/attachment-extractor.d.ts +12 -1
  6. package/dist/attachment-extractor.d.ts.map +1 -1
  7. package/dist/attachment-extractor.js +10 -5
  8. package/dist/attachment-extractor.js.map +1 -1
  9. package/dist/audit-outcome.d.ts +149 -0
  10. package/dist/audit-outcome.d.ts.map +1 -0
  11. package/dist/audit-outcome.js +233 -0
  12. package/dist/audit-outcome.js.map +1 -0
  13. package/dist/connect-links.d.ts +91 -0
  14. package/dist/connect-links.d.ts.map +1 -0
  15. package/dist/connect-links.js +189 -0
  16. package/dist/connect-links.js.map +1 -0
  17. package/dist/connect-state.d.ts +12 -3
  18. package/dist/connect-state.d.ts.map +1 -1
  19. package/dist/connect-state.js +8 -3
  20. package/dist/connect-state.js.map +1 -1
  21. package/dist/derived-object.d.ts +14 -0
  22. package/dist/derived-object.d.ts.map +1 -0
  23. package/dist/derived-object.js +2 -0
  24. package/dist/derived-object.js.map +1 -0
  25. package/dist/derived-objects.d.ts +108 -0
  26. package/dist/derived-objects.d.ts.map +1 -0
  27. package/dist/derived-objects.js +199 -0
  28. package/dist/derived-objects.js.map +1 -0
  29. package/dist/email-intent.d.ts +56 -0
  30. package/dist/email-intent.d.ts.map +1 -0
  31. package/dist/email-intent.js +71 -0
  32. package/dist/email-intent.js.map +1 -0
  33. package/dist/entity-edges.d.ts +6 -1
  34. package/dist/entity-edges.d.ts.map +1 -1
  35. package/dist/entity-edges.js +13 -0
  36. package/dist/entity-edges.js.map +1 -1
  37. package/dist/entity-grant-shape.d.ts +94 -0
  38. package/dist/entity-grant-shape.d.ts.map +1 -0
  39. package/dist/entity-grant-shape.js +329 -0
  40. package/dist/entity-grant-shape.js.map +1 -0
  41. package/dist/entity-grant.d.ts +45 -0
  42. package/dist/entity-grant.d.ts.map +1 -0
  43. package/dist/entity-grant.js +71 -0
  44. package/dist/entity-grant.js.map +1 -0
  45. package/dist/entity-state-reads.d.ts +4 -7
  46. package/dist/entity-state-reads.d.ts.map +1 -1
  47. package/dist/entity-state-reads.js +13 -57
  48. package/dist/entity-state-reads.js.map +1 -1
  49. package/dist/entity-state.d.ts +37 -10
  50. package/dist/entity-state.d.ts.map +1 -1
  51. package/dist/entity-state.js +80 -69
  52. package/dist/entity-state.js.map +1 -1
  53. package/dist/entity-trash.d.ts +245 -0
  54. package/dist/entity-trash.d.ts.map +1 -0
  55. package/dist/entity-trash.js +380 -0
  56. package/dist/entity-trash.js.map +1 -0
  57. package/dist/grant-scoped-read.d.ts +41 -0
  58. package/dist/grant-scoped-read.d.ts.map +1 -0
  59. package/dist/grant-scoped-read.js +100 -0
  60. package/dist/grant-scoped-read.js.map +1 -0
  61. package/dist/index.d.ts +31 -5
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +20 -4
  64. package/dist/index.js.map +1 -1
  65. package/dist/kernel-outbox.d.ts +14 -0
  66. package/dist/kernel-outbox.d.ts.map +1 -0
  67. package/dist/kernel-outbox.js +37 -0
  68. package/dist/kernel-outbox.js.map +1 -0
  69. package/dist/list-index.d.ts +11 -2
  70. package/dist/list-index.d.ts.map +1 -1
  71. package/dist/list-index.js +29 -21
  72. package/dist/list-index.js.map +1 -1
  73. package/dist/mail-sender.d.ts +78 -0
  74. package/dist/mail-sender.d.ts.map +1 -0
  75. package/dist/mail-sender.js +2 -0
  76. package/dist/mail-sender.js.map +1 -0
  77. package/dist/membership-executor.d.ts +0 -52
  78. package/dist/membership-executor.d.ts.map +1 -1
  79. package/dist/membership-executor.js +19 -59
  80. package/dist/membership-executor.js.map +1 -1
  81. package/dist/migration-digest.d.ts +161 -0
  82. package/dist/migration-digest.d.ts.map +1 -0
  83. package/dist/migration-digest.js +237 -0
  84. package/dist/migration-digest.js.map +1 -0
  85. package/dist/module-erasure.d.ts +156 -0
  86. package/dist/module-erasure.d.ts.map +1 -0
  87. package/dist/module-erasure.js +440 -0
  88. package/dist/module-erasure.js.map +1 -0
  89. package/dist/peer.d.ts +9 -1
  90. package/dist/peer.d.ts.map +1 -1
  91. package/dist/peer.js +29 -0
  92. package/dist/peer.js.map +1 -1
  93. package/dist/permission-checker.d.ts +6 -0
  94. package/dist/permission-checker.d.ts.map +1 -1
  95. package/dist/permission-checker.js.map +1 -1
  96. package/dist/permission-eval.d.ts +10 -1
  97. package/dist/permission-eval.d.ts.map +1 -1
  98. package/dist/permission-eval.js +51 -2
  99. package/dist/permission-eval.js.map +1 -1
  100. package/dist/platform-sweep.d.ts +1 -1
  101. package/dist/platform-sweep.d.ts.map +1 -1
  102. package/dist/platform-sweep.js +5 -0
  103. package/dist/platform-sweep.js.map +1 -1
  104. package/dist/scope-host.d.ts +301 -22
  105. package/dist/scope-host.d.ts.map +1 -1
  106. package/dist/scope-host.js +72 -5
  107. package/dist/scope-host.js.map +1 -1
  108. package/dist/search-index.d.ts +8 -0
  109. package/dist/search-index.d.ts.map +1 -1
  110. package/dist/search-index.js +51 -21
  111. package/dist/search-index.js.map +1 -1
  112. package/dist/spine-guard.d.ts +7 -0
  113. package/dist/spine-guard.d.ts.map +1 -1
  114. package/dist/spine-guard.js +54 -6
  115. package/dist/spine-guard.js.map +1 -1
  116. package/dist/spine-restore.d.ts.map +1 -1
  117. package/dist/spine-restore.js +5 -0
  118. package/dist/spine-restore.js.map +1 -1
  119. package/dist/sql-statements.d.ts +71 -0
  120. package/dist/sql-statements.d.ts.map +1 -0
  121. package/dist/sql-statements.js +191 -0
  122. package/dist/sql-statements.js.map +1 -0
  123. package/dist/subject-redaction.d.ts +9 -1
  124. package/dist/subject-redaction.d.ts.map +1 -1
  125. package/dist/subject-redaction.js.map +1 -1
  126. package/dist/system-switch-record.d.ts +3 -0
  127. package/dist/system-switch-record.d.ts.map +1 -1
  128. package/dist/system-switch-record.js +2 -0
  129. package/dist/system-switch-record.js.map +1 -1
  130. package/dist/table-ownership.d.ts +103 -0
  131. package/dist/table-ownership.d.ts.map +1 -0
  132. package/dist/table-ownership.js +285 -0
  133. package/dist/table-ownership.js.map +1 -0
  134. package/dist/timeline.d.ts +4 -4
  135. package/dist/timeline.js +4 -4
  136. package/dist/visible-continuation.d.ts +38 -0
  137. package/dist/visible-continuation.d.ts.map +1 -0
  138. package/dist/visible-continuation.js +162 -0
  139. package/dist/visible-continuation.js.map +1 -0
  140. package/package.json +2 -2
@@ -0,0 +1,162 @@
1
+ /** Private, short-lived positions for a per-row-filtered walk (#2074). */
2
+ import { PAGE_CURSOR_RESTART, substratError } from '@substrat-run/contracts';
3
+ import { fromBase64, toBase64, webCryptoSecretBox } from './secret-box.js';
4
+ import { isPlainPageCursor } from './list-index.js';
5
+ const TOKEN_PREFIX = 'sc1';
6
+ const TOKEN_PLAINTEXT_LENGTH = 192;
7
+ const LIFETIME_MS = 15 * 60_000;
8
+ const ROTATION_MS = 24 * 60 * 60_000;
9
+ export const CONTINUATION_POSITION_CAP = 256;
10
+ /** Remove this migration window at the next cursor-breaking release. */
11
+ const ACCEPT_LEGACY_VISIBLE_CURSORS = true;
12
+ const restart = () => substratError('validation_failed', 'list: this cursor cannot continue this walk — restart paging from the first page, without a cursor', { reason: PAGE_CURSOR_RESTART });
13
+ const random = (size) => crypto.getRandomValues(new Uint8Array(size));
14
+ const base64url = (bytes) => toBase64(bytes).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
15
+ const unbase64url = (text) => fromBase64(text.replace(/-/g, '+').replace(/_/g, '/'));
16
+ const key = (now) => ({ id: base64url(random(9)), material: toBase64(random(32)), createdAt: now });
17
+ function canonical(value) {
18
+ if (value === null || typeof value !== 'object')
19
+ return JSON.stringify(value) ?? 'null';
20
+ if (Array.isArray(value))
21
+ return `[${value.map(canonical).join(',')}]`;
22
+ if (value instanceof Set)
23
+ return `[${[...value].map(canonical).sort().join(',')}]`;
24
+ if (value instanceof Map)
25
+ return `{${[...value].map(([k, v]) => [canonical(k), canonical(v)])
26
+ .sort(([a], [b]) => a.localeCompare(b)).map(([k, v]) => `${k}:${v}`).join(',')}}`;
27
+ return `{${Object.entries(value).filter(([, v]) => v !== undefined).sort(([a], [b]) => a.localeCompare(b))
28
+ .map(([k, v]) => `${JSON.stringify(k)}:${canonical(v)}`).join(',')}}`;
29
+ }
30
+ /** SQL IN filters are sets; request order and duplicates must not change a walk's identity. */
31
+ function normalizeFilter(value) {
32
+ if (Array.isArray(value)) {
33
+ const members = new Map(value.map((item) => {
34
+ const normalized = normalizeFilter(item);
35
+ return [canonical(normalized), normalized];
36
+ }));
37
+ return [...members.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([, item]) => item);
38
+ }
39
+ if (value && typeof value === 'object' && !(value instanceof Set) && !(value instanceof Map)) {
40
+ return Object.fromEntries(Object.entries(value).map(([name, item]) => [name, normalizeFilter(item)]));
41
+ }
42
+ return value;
43
+ }
44
+ async function bindingHash(binding) {
45
+ const bytes = new TextEncoder().encode(canonical(binding));
46
+ return base64url(new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)));
47
+ }
48
+ function box(material) {
49
+ const bytes = fromBase64(material.material);
50
+ if (bytes.length !== 32)
51
+ throw restart();
52
+ return webCryptoSecretBox(material.id, bytes);
53
+ }
54
+ /** Full visible pages are stateless; only a hidden budget stop needs a private locator. */
55
+ export function visibleContinuation(store, binding, now = Date.now, legacyUsed, writable = true) {
56
+ // Pagination mechanics do not change the rows in the walk. Every other input,
57
+ // including a grant constraint, does; bind it without retaining its raw value.
58
+ const query = binding.query && typeof binding.query === 'object' && !Array.isArray(binding.query)
59
+ ? Object.fromEntries(Object.entries(binding.query).filter(([name]) => !['cursor', 'limit', 'rowCursors', 'total'].includes(name)))
60
+ : binding.query ?? {};
61
+ if (query && typeof query === 'object' && !Array.isArray(query) && 'filters' in query) {
62
+ query.filters = normalizeFilter(query.filters);
63
+ }
64
+ let fingerprint;
65
+ const hash = () => (fingerprint ??= bindingHash({ ...binding, query }));
66
+ const readKeys = async () => {
67
+ try {
68
+ return await store.keys();
69
+ }
70
+ catch {
71
+ throw restart();
72
+ }
73
+ };
74
+ return {
75
+ writable,
76
+ async seal(position, hidden = true) {
77
+ // A read-only invocation (including a copy) cannot persist a hidden
78
+ // position. It keeps the former bounded-walk result at this budget stop.
79
+ if (hidden && !writable)
80
+ return null;
81
+ try {
82
+ const at = now();
83
+ let keys = await readKeys();
84
+ if (!writable && !keys)
85
+ return null;
86
+ if (writable && (!keys || at - keys.active.createdAt >= ROTATION_MS)) {
87
+ keys = { active: key(at), ...(keys ? { previous: keys.active } : {}) };
88
+ await store.setKeys(keys);
89
+ }
90
+ if (!keys)
91
+ return null;
92
+ const expiresAt = at + LIFETIME_MS;
93
+ let payload;
94
+ if (hidden) {
95
+ const id = base64url(random(16));
96
+ const sealed = await box(keys.active).seal(JSON.stringify({ id, position }));
97
+ await store.setPosition(id, { sealed, expiresAt });
98
+ payload = JSON.stringify({ i: id, e: expiresAt, b: await hash() });
99
+ if (payload.length > TOKEN_PLAINTEXT_LENGTH)
100
+ throw restart();
101
+ payload = payload.padEnd(TOKEN_PLAINTEXT_LENGTH, ' ');
102
+ }
103
+ else {
104
+ payload = JSON.stringify({ p: position, e: expiresAt, b: await hash() });
105
+ }
106
+ const token = await box(keys.active).seal(payload);
107
+ return `${TOKEN_PREFIX}.${keys.active.id}.${base64url(fromBase64(token.ciphertext))}`;
108
+ }
109
+ catch {
110
+ if (!writable)
111
+ return null;
112
+ throw restart();
113
+ }
114
+ },
115
+ async open(cursor) {
116
+ if (!cursor.startsWith(`${TOKEN_PREFIX}.`)) {
117
+ try {
118
+ if (ACCEPT_LEGACY_VISIBLE_CURSORS && isPlainPageCursor(cursor)) {
119
+ legacyUsed?.();
120
+ return cursor;
121
+ }
122
+ }
123
+ catch { /* All invalid legacy cursors have the same restart response. */ }
124
+ throw restart();
125
+ }
126
+ try {
127
+ const parts = cursor.split('.');
128
+ if (parts.length !== 3 || !/^[A-Za-z0-9_-]{12}$/.test(parts[1]) ||
129
+ !/^[A-Za-z0-9_-]+$/.test(parts[2]))
130
+ throw restart();
131
+ const keys = await readKeys();
132
+ const selected = [keys?.active, keys?.previous].find((candidate) => candidate?.id === parts[1]);
133
+ if (!selected)
134
+ throw restart();
135
+ const decoded = await box(selected).open({ keyId: selected.id, ciphertext: toBase64(unbase64url(parts[2])) });
136
+ const payload = JSON.parse(decoded.trimEnd());
137
+ if (typeof payload.e !== 'number' || payload.e <= now() || payload.b !== await hash())
138
+ throw restart();
139
+ if ('p' in payload) {
140
+ if (typeof payload.p !== 'string')
141
+ throw restart();
142
+ return payload.p;
143
+ }
144
+ if (decoded.length !== TOKEN_PLAINTEXT_LENGTH ||
145
+ typeof payload.i !== 'string' || !/^[A-Za-z0-9_-]{22}$/.test(payload.i))
146
+ throw restart();
147
+ const record = await store.position(payload.i, payload.e);
148
+ if (!record || record.expiresAt !== payload.e || record.expiresAt <= now())
149
+ throw restart();
150
+ const opened = JSON.parse(await box(selected).open(record.sealed));
151
+ if (opened.id !== payload.i || typeof opened.position !== 'string')
152
+ throw restart();
153
+ return opened.position;
154
+ }
155
+ catch {
156
+ // No parsing, key, authentication, expiry or binding detail reaches a caller.
157
+ throw restart();
158
+ }
159
+ },
160
+ };
161
+ }
162
+ //# sourceMappingURL=visible-continuation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visible-continuation.js","sourceRoot":"","sources":["../src/visible-continuation.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAqB,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAQpD,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC;AAChC,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,wEAAwE;AACxE,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAoC3C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,aAAa,CACjC,mBAAmB,EACnB,oGAAoG,EACpG,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAChC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,MAAM,SAAS,GAAG,CAAC,KAAiB,EAAU,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7H,MAAM,WAAW,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACzG,MAAM,GAAG,GAAG,CAAC,GAAW,EAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AAE7H,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACxF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACvE,IAAI,KAAK,YAAY,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACnF,IAAI,KAAK,YAAY,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAU,CAAC;aACnG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACpF,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACvG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1E,CAAC;AAED,+FAA+F;AAC/F,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAU,CAAC;QACtD,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE,CAAC;QAC7F,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAA4B;IACrD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,OAAO,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,GAAG,CAAC,QAAyB;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;QAAE,MAAM,OAAO,EAAE,CAAC;IACzC,OAAO,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CACjC,KAAwB,EACxB,OAA4B,EAC5B,GAAG,GAAiB,IAAI,CAAC,GAAG,EAC5B,UAAuB,EACvB,QAAQ,GAAG,IAAI;IAEf,8EAA8E;IAC9E,+EAA+E;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/F,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CACjE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACxB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACtF,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,WAAwC,CAAC;IAC7C,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,KAAK,IAAsC,EAAE;QAC5D,IAAI,CAAC;YAAC,OAAO,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,OAAO,EAAE,CAAC;QAAC,CAAC;IAC/D,CAAC,CAAC;IACF,OAAO;QACL,QAAQ;QACR,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,MAAM,GAAG,IAAI;YACxC,oEAAoE;YACpE,yEAAyE;YACzE,IAAI,MAAM,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;gBACjB,IAAI,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACpC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,CAAC;oBACrE,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACvE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;gBACD,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACvB,MAAM,SAAS,GAAG,EAAE,GAAG,WAAW,CAAC;gBACnC,IAAI,OAAe,CAAC;gBACpB,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAC7E,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACnD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnE,IAAI,OAAO,CAAC,MAAM,GAAG,sBAAsB;wBAAE,MAAM,OAAO,EAAE,CAAC;oBAC7D,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnD,OAAO,GAAG,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACxF,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAC3B,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAc;YACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,IAAI,6BAA6B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC/D,UAAU,EAAE,EAAE,CAAC;wBACf,OAAO,MAAM,CAAC;oBAChB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,gEAAgE,CAAC,CAAC;gBAC5E,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;oBAC5D,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;oBAAE,MAAM,OAAO,EAAE,CAAC;gBACzD,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChG,IAAI,CAAC,QAAQ;oBAAE,MAAM,OAAO,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/G,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAA2D,CAAC;gBACxG,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,OAAO,CAAC,CAAC,KAAK,MAAM,IAAI,EAAE;oBAAE,MAAM,OAAO,EAAE,CAAC;gBACvG,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;oBACnB,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ;wBAAE,MAAM,OAAO,EAAE,CAAC;oBACnD,OAAO,OAAO,CAAC,CAAC,CAAC;gBACnB,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,sBAAsB;oBACzC,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,MAAM,OAAO,EAAE,CAAC;gBAC7F,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE;oBAAE,MAAM,OAAO,EAAE,CAAC;gBAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAyC,CAAC;gBAC3G,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;oBAAE,MAAM,OAAO,EAAE,CAAC;gBACpF,OAAO,MAAM,CAAC,QAAQ,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,8EAA8E;gBAC9E,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@substrat-run/kernel",
3
- "version": "0.139.0",
3
+ "version": "0.140.0",
4
4
  "description": "Substrat kernel contracts and services — pure TypeScript, no platform imports (D-14)",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -22,7 +22,7 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@substrat-run/contracts": "^0.139.0"
25
+ "@substrat-run/contracts": "^0.140.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.20.5",