arkgate 4.8.23 → 4.8.24

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 (131) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +7 -5
  3. package/bin/ark-check-runtime.mjs +24 -77
  4. package/bin/ark-dashboard.mjs +56 -53
  5. package/bin/ark-layer-match.mjs +596 -112
  6. package/bin/ark-mcp-runtime.mjs +412 -138
  7. package/bin/ark-mcp.mjs +68 -4
  8. package/bin/ark-shared.mjs +39 -0
  9. package/bin/ark.mjs +65 -97
  10. package/bin/lib/adapter-contract-types.mjs +5 -0
  11. package/bin/lib/adapter-contract.mjs +15 -0
  12. package/bin/lib/agent-projection-command.mjs +5 -1
  13. package/bin/lib/analysis-engine.mjs +15 -11
  14. package/bin/lib/architecture-scan.mjs +50 -6
  15. package/bin/lib/ark-order-doctor.mjs +1 -1
  16. package/bin/lib/ark-order-facts.mjs +410 -15
  17. package/bin/lib/ark-order-invariants.mjs +51 -9
  18. package/bin/lib/ark-order-sensors.mjs +28 -101
  19. package/bin/lib/ark-order-types.mjs +2 -0
  20. package/bin/lib/ark-run-doctor.mjs +14 -0
  21. package/bin/lib/ark-run-facts.mjs +434 -11
  22. package/bin/lib/ark-run-sensors.mjs +5 -3
  23. package/bin/lib/arkgate-pins.mjs +91 -0
  24. package/bin/lib/arkrules-sensors.mjs +50 -249
  25. package/bin/lib/check-args.mjs +23 -1
  26. package/bin/lib/ci-and-commands.mjs +16 -6
  27. package/bin/lib/class-source-scan.mjs +479 -0
  28. package/bin/lib/codex-home.mjs +4 -2
  29. package/bin/lib/config-contract-slices.mjs +701 -0
  30. package/bin/lib/config-contract.mjs +5 -493
  31. package/bin/lib/config-warnings.mjs +32 -0
  32. package/bin/lib/dashboard-cli.mjs +62 -0
  33. package/bin/lib/design-delta.mjs +1 -1
  34. package/bin/lib/diagnostic-catalog.mjs +16 -9
  35. package/bin/lib/doctor-advisories.mjs +25 -1
  36. package/bin/lib/doctor-next-actions.mjs +17 -2
  37. package/bin/lib/doctor-plan.mjs +6 -8
  38. package/bin/lib/effective-contract-load.mjs +121 -59
  39. package/bin/lib/enforcement-profiles.mjs +40 -4
  40. package/bin/lib/first-run-help.mjs +3 -2
  41. package/bin/lib/flat-parent-importers.mjs +137 -0
  42. package/bin/lib/flat-parent-pilot.mjs +40 -100
  43. package/bin/lib/gate-files.mjs +29 -2
  44. package/bin/lib/git-change-scope.mjs +109 -0
  45. package/bin/lib/github-enforcement.mjs +1 -1
  46. package/bin/lib/hook-templates.mjs +18 -16
  47. package/bin/lib/host-support-matrix.mjs +3 -1
  48. package/bin/lib/import-resolve.mjs +13 -1
  49. package/bin/lib/install-migrate.mjs +50 -73
  50. package/bin/lib/invariant-coverage.mjs +59 -11
  51. package/bin/lib/mcp-adoption.mjs +9 -1
  52. package/bin/lib/mcp-hook-payload.mjs +401 -61
  53. package/bin/lib/package-manager.mjs +59 -1
  54. package/bin/lib/passthrough-commands.mjs +83 -0
  55. package/bin/lib/persistence-write-hint.mjs +81 -0
  56. package/bin/lib/pin-dependent-gates.mjs +117 -0
  57. package/bin/lib/policy-delta-io.mjs +168 -10
  58. package/bin/lib/prepare-change.mjs +120 -6
  59. package/bin/lib/prepare-write.mjs +1 -0
  60. package/bin/lib/presets.mjs +3 -5
  61. package/bin/lib/remediation.mjs +23 -4
  62. package/bin/lib/resolved-candidate-facts.mjs +315 -55
  63. package/bin/lib/rules-inventory.mjs +22 -3
  64. package/bin/lib/rules-under-contract.mjs +179 -5
  65. package/bin/lib/scan-files.mjs +32 -0
  66. package/bin/lib/snippet-analysis.mjs +140 -6
  67. package/bin/lib/source-policy.mjs +34 -0
  68. package/bin/lib/stable-hash.mjs +90 -0
  69. package/bin/lib/start-install-recovery.mjs +71 -1
  70. package/bin/lib/start-preview.mjs +30 -0
  71. package/bin/lib/status-command.mjs +33 -4
  72. package/bin/lib/status-manifest.mjs +32 -4
  73. package/bin/lib/team-parliament-io.mjs +77 -75
  74. package/bin/lib/team-parliament.mjs +6 -1
  75. package/bin/lib/write-path-capabilities.mjs +4 -2
  76. package/dist/chunk-A5EIY3HI.cjs +5 -0
  77. package/dist/chunk-MBXCFLO4.js +16 -0
  78. package/dist/chunk-RNQHRDCQ.cjs +16 -0
  79. package/dist/chunk-SVSQVGFJ.js +5 -0
  80. package/dist/{configTypes-Bbf_MFGe.d.ts → configTypes-BJbaeoj4.d.cts} +18 -3
  81. package/dist/configTypes-BJbaeoj4.d.ts +246 -0
  82. package/dist/eslint/index.cjs +17 -4
  83. package/dist/eslint/index.d.cts +359 -0
  84. package/dist/eslint/index.d.ts +130 -156
  85. package/dist/eslint/index.js +10 -4
  86. package/dist/index.cjs +35 -34
  87. package/dist/index.d.cts +5475 -0
  88. package/dist/index.d.ts +3312 -299
  89. package/dist/index.js +35 -34
  90. package/dist/inspectorListen-6DQVJ4DC.js +1 -0
  91. package/dist/inspectorListen-KGMIQ2TF.cjs +1 -0
  92. package/dist/nestjs/index.cjs +1 -18
  93. package/dist/nestjs/index.d.cts +22 -0
  94. package/dist/nestjs/index.d.ts +1 -3
  95. package/dist/nestjs/index.js +1 -18
  96. package/dist/order/index.cjs +1 -1
  97. package/dist/order/index.d.cts +155 -0
  98. package/dist/order/index.d.ts +15 -3
  99. package/dist/order/index.js +1 -1
  100. package/dist/runtime/index.cjs +13 -30
  101. package/dist/{diagnosticCatalog-35mrwAHe.d.ts → runtime/index.d.cts} +804 -290
  102. package/dist/runtime/index.d.ts +2678 -108
  103. package/dist/runtime/index.js +13 -30
  104. package/dist/{types-Bdj32QwA.d.ts → types-DRinG-vT.d.cts} +576 -140
  105. package/dist/types-DRinG-vT.d.ts +1792 -0
  106. package/docs/README.md +2 -1
  107. package/docs/agent-guide.md +84 -15
  108. package/docs/ai-gates.md +160 -26
  109. package/docs/arkorder.md +32 -15
  110. package/docs/brownfield-adoption.md +5 -1
  111. package/docs/configuration.md +196 -26
  112. package/docs/develop.md +2 -1
  113. package/docs/diagnostics.md +96 -19
  114. package/docs/package-surface.md +31 -8
  115. package/docs/product-voice.md +1 -1
  116. package/package.json +59 -18
  117. package/schemas/ark.analysis-result.schema.json +15 -0
  118. package/schemas/ark.config.schema.json +47 -10
  119. package/schemas/ark.resolved-candidate-facts.schema.json +1 -1
  120. package/schemas/ark.status-manifest.schema.json +22 -0
  121. package/server.json +3 -9
  122. package/templates/agent-skills/README.md +1 -1
  123. package/templates/agent-skills/ark-adopt/SKILL.md +4 -1
  124. package/templates/agent-skills/ark-order/SKILL.md +4 -2
  125. package/templates/agent-skills/ark-runtime/SKILL.md +6 -1
  126. package/templates/arkrules/PersistenceAdapters.json +1 -1
  127. package/templates/arkrules/PresentationAdapters.json +1 -1
  128. package/templates/skills/ark-adopt.md +4 -1
  129. package/templates/skills/ark-order.md +4 -2
  130. package/templates/skills/ark-runtime.md +6 -1
  131. package/dist/types-Ik_OakcI.d.ts +0 -183
@@ -1,32 +1,4 @@
1
- import { A as ArkConfig } from '../configTypes-Bbf_MFGe.js';
2
-
3
- type RuleContext$1 = {
4
- report(descriptor: Record<string, unknown>): void;
5
- filename?: string;
6
- physicalFilename?: string;
7
- getFilename?: () => string;
8
- options?: unknown[];
9
- };
10
- type AstNode$1 = {
11
- type?: string;
12
- name?: string;
13
- value?: unknown;
14
- source?: AstNode$1;
15
- callee?: AstNode$1;
16
- object?: AstNode$1;
17
- property?: AstNode$1;
18
- arguments?: AstNode$1[];
19
- importKind?: string;
20
- exportKind?: string;
21
- specifiers?: AstNode$1[];
22
- loc?: {
23
- start?: {
24
- line?: number;
25
- column?: number;
26
- };
27
- };
28
- computed?: boolean;
29
- };
1
+ import { A as ArkConfig } from '../configTypes-BJbaeoj4.js';
30
2
 
31
3
  /**
32
4
  * Pure layer-glob matching for ark.config.json.
@@ -48,7 +20,8 @@ type LayerConfig = {
48
20
  * - `path` (default, also the absent value): every literal and every star
49
21
  * binding. `lib/features` plus two stars → `lib/features/projects/rfi`.
50
22
  * Byte-identical to the ids baselines and `allowedCrossSlice` already use.
51
- * - `stars`: last literal segment plus the star bindings.
23
+ * - `stars`: last literal segment plus every star binding (a star before the
24
+ * last literal is kept too: `modules` / `*` / `api` / `*` → `orders/api/v1`).
52
25
  * `lib/features` plus two stars, and `lib/repositories/features` plus two
53
26
  * stars, both → `features/projects/rfi`.
54
27
  * Prefix stripping stays inside `bindAnchoredSlice`. Bare names are unchanged.
@@ -83,15 +56,16 @@ type EdgeRule = {
83
56
  * also when the key is absent) the slice id includes the literal prefix
84
57
  * plus the directories the stars bind (`lib/features/projects/rfi`), so
85
58
  * parallel trees get different ids. With `"stars"` it is the last literal
86
- * plus the star bindings, so the same feature has one id across parallel
59
+ * plus every star binding, so the same feature has one id across parallel
87
60
  * trees.
88
61
  * When omitted, inferred from the layer's glob patterns (segment before a wildcard).
89
62
  */
90
63
  sliceFolders?: string[];
91
64
  /**
92
65
  * How a starred `sliceFolders` prefix is named. Absent and `"path"` keep
93
- * today's ids. `"stars"` is the last literal plus the star bindings, so the
94
- * same feature has one id across parallel trees.
66
+ * today's ids. `"stars"` is the last literal plus every star binding, in
67
+ * path order (`modules` / `*` / `api` / `*` binds `orders/api/v1`), so the same feature
68
+ * has one id across parallel trees.
95
69
  */
96
70
  sliceIdentity?: SliceIdentity;
97
71
  /**
@@ -125,9 +99,12 @@ type EdgeRule = {
125
99
  * `"deny"`: a shared root may not import a slice. `"deny-cross-parent"` leaves
126
100
  * that hop allowed; a whole-graph pass then reports a slice that reaches
127
101
  * another universe only through shared. Absent keeps the hop allowed.
128
- * `allowedCrossSlice` does not excuse `"deny"`.
102
+ * `allowedCrossSlice` does not excuse `"deny"`. The object form
103
+ * `{ mode: "deny-cross-parent", stopAt }` names composition roots the walk
104
+ * never starts at or passes through. Read it through
105
+ * {@link sharedImportsSliceMode} / {@link sharedImportsSliceStopAt}.
129
106
  */
130
- sharedImportsSlice?: 'deny' | 'deny-cross-parent';
107
+ sharedImportsSlice?: SharedImportsSliceSetting;
131
108
  /**
132
109
  * Optional inner wall under this rule's universe wall. Absent: the universe
133
110
  * wall is the whole decision and check output stays byte-identical.
@@ -159,6 +136,8 @@ type ChildSlices = {
159
136
  commonFolders?: string[];
160
137
  siblings?: ChildSliceSiblings;
161
138
  parentMayImportChild?: boolean;
139
+ /** Text for inner-wall findings (sibling, common → child). Absent: ArkGate default, never the rule message. */
140
+ message?: string;
162
141
  /** Directed child allowances. `*` matches one whole segment. Never a universe excuse. */
163
142
  allowedCrossSlice?: CrossSliceEdge[];
164
143
  /** Unclassified files governed as this child. Debt, not a destination. */
@@ -173,8 +152,21 @@ type ChildSliceSiblingsMode = 'deny' | 'advisory';
173
152
  type ChildSliceSiblingsEnforce = {
174
153
  default: ChildSliceSiblingsMode;
175
154
  enforce?: string[];
155
+ /**
156
+ * Anti-growth for advisory crossings against a baseline. Absent: on only when
157
+ * the baseline already records an advisory crossing of this rule. `true`:
158
+ * always when a baseline is in use. `false`: measure only.
159
+ */
160
+ ratchet?: boolean;
176
161
  };
177
162
  type ChildSliceSiblings = ChildSliceSiblingsMode | ChildSliceSiblingsEnforce;
163
+ /** `sharedImportsSlice` string modes. */
164
+ type SharedImportsSliceMode = 'deny' | 'deny-cross-parent';
165
+ /** String mode, or the object form that carries composition-root stops. */
166
+ type SharedImportsSliceSetting = SharedImportsSliceMode | {
167
+ mode: 'deny-cross-parent';
168
+ stopAt: string[];
169
+ };
178
170
  /** A directed slice-to-slice edge the repo declares on purpose (peerIsolation). */
179
171
  type CrossSliceEdge = {
180
172
  /** Importing slice id (`features/checkout`) or bare slice name (`checkout`). */
@@ -204,37 +196,11 @@ declare function patternSpecificity(pattern: string, relPath?: string): number;
204
196
  declare function layerForRelativePath(relPath: string, layers: LayerConfig[] | undefined): string | undefined;
205
197
  declare function isEdgeDenied(rules: EdgeRule[] | undefined, from: string, to: string, options?: EdgeCheckOptions): boolean;
206
198
 
207
- type RuleContext = {
208
- report(descriptor: Record<string, unknown>): void;
209
- /** ESLint 9+ / 10: preferred path on the context object. */
210
- filename?: string;
211
- /** ESLint 8-style physical path when linting with processors / virtual files. */
212
- physicalFilename?: string;
213
- /** ESLint ≤8 API — still present on some hosts; removed in ESLint 10. */
214
- getFilename?: () => string;
215
- /** ESLint 9+ source/scope API. */
216
- sourceCode?: SourceCode;
217
- /** ESLint ≤8 source/scope API. */
218
- getSourceCode?: () => SourceCode;
219
- options?: unknown[];
220
- };
221
- type ScopeVariable = {
222
- defs?: unknown[];
223
- };
224
- type ScopeReference = {
225
- identifier?: AstNode;
226
- resolved?: ScopeVariable | null;
227
- isValueReference?: boolean;
228
- };
229
- type Scope = {
230
- set?: Map<string, ScopeVariable>;
231
- references?: ScopeReference[];
232
- upper?: Scope | null;
233
- };
234
- type SourceCode = {
235
- getScope?: (node: AstNode) => Scope;
236
- };
237
- type RuleListener = Record<string, (node: AstNode) => void>;
199
+ /**
200
+ * Shared ESLint adapter plumbing: context shapes, filename / source helpers, and the
201
+ * adapter-diagnostic report path. Channel routing lives in reportChannels.ts.
202
+ */
203
+
238
204
  type AstNode = {
239
205
  type?: string;
240
206
  name?: string;
@@ -253,14 +219,62 @@ type AstNode = {
253
219
  specifiers?: AstNode[];
254
220
  parent?: AstNode;
255
221
  init?: AstNode;
222
+ id?: AstNode;
223
+ left?: AstNode;
224
+ argument?: AstNode;
225
+ expression?: AstNode;
226
+ quasis?: Array<{
227
+ value?: {
228
+ cooked?: string | null;
229
+ };
230
+ }>;
231
+ expressions?: unknown[];
256
232
  computed?: boolean;
233
+ optional?: boolean;
257
234
  loc?: {
258
235
  start?: {
259
236
  line?: number;
260
237
  column?: number;
261
238
  };
239
+ end?: {
240
+ line?: number;
241
+ column?: number;
242
+ };
262
243
  };
263
244
  };
245
+ type ScopeVariable = {
246
+ defs?: unknown[];
247
+ };
248
+ type ScopeReference = {
249
+ identifier?: AstNode;
250
+ resolved?: ScopeVariable | null;
251
+ isValueReference?: boolean;
252
+ };
253
+ type Scope = {
254
+ set?: Map<string, ScopeVariable>;
255
+ references?: ScopeReference[];
256
+ upper?: Scope | null;
257
+ };
258
+ type SourceCode = {
259
+ getScope?: (node: AstNode) => Scope;
260
+ getText?: () => string;
261
+ text?: string;
262
+ };
263
+ type RuleContext = {
264
+ report(descriptor: Record<string, unknown>): void;
265
+ /** ESLint 9+ / 10: preferred path on the context object. */
266
+ filename?: string;
267
+ /** ESLint 8-style physical path when linting with processors / virtual files. */
268
+ physicalFilename?: string;
269
+ /** ESLint ≤8 API — still present on some hosts; removed in ESLint 10. */
270
+ getFilename?: () => string;
271
+ /** ESLint 9+ source/scope API. */
272
+ sourceCode?: SourceCode;
273
+ /** ESLint ≤8 source/scope API. */
274
+ getSourceCode?: () => SourceCode;
275
+ options?: unknown[];
276
+ };
277
+ type RuleListener = Record<string, (node: AstNode) => void>;
264
278
  type ArkRule = {
265
279
  meta: {
266
280
  type: 'problem';
@@ -272,112 +286,72 @@ type ArkRule = {
272
286
  };
273
287
  create(context: RuleContext): RuleListener;
274
288
  };
275
- type ArkEslintPlugin = {
276
- rules: Record<string, ArkRule>;
277
- configs?: Record<string, unknown>;
278
- };
289
+
290
+ /** Nearest `ark.config.json` at or above the linted file (memoized per directory). */
279
291
  declare function findConfigPath(startFile: string): string | null;
292
+ /**
293
+ * Parse the root config (public helper; throws ArkConfigValidationError on invalid config).
294
+ * Rules use `loadArkContract`, which never throws.
295
+ */
280
296
  declare function loadArkConfig(configPath: string): ArkConfig | null;
281
297
  /**
282
- * Read tsconfig paths/baseUrl for ESLint alias parity (P0-C).
283
- * JSONC-tolerant strip of // and /* comments; supports simple extends of a relative JSON.
284
- * Does not claim full TypeScript resolution (project refs, complex multi-target, wildcards beyond trailing *).
298
+ * Fingerprint of the Ark contract that applies under `startDir` (default: cwd). ESLint
299
+ * hashes `settings`, so a recommended config carrying this value invalidates `--cache`
300
+ * results when ark.config.json or a referenced ArkRules file changes.
285
301
  */
286
- declare function readTsconfigPathAliases(startDir: string): {
302
+ declare function contractFingerprint(startDir?: string): string | null;
303
+
304
+ type TsconfigAlias = {
305
+ /** Pattern text before `*` (whole pattern when it has no `*`). */
306
+ from: string;
307
+ /** First target with the trailing `*` removed (legacy shape). */
308
+ to: string;
309
+ /** Text after `*` in the pattern ('' for trailing-star patterns). */
310
+ suffix: string;
311
+ wildcard: boolean;
312
+ /** All substitution targets, in declaration order. */
313
+ targets: string[];
314
+ };
315
+ type TsconfigAliasSet = {
287
316
  baseUrl: string;
288
- aliases: Array<{
289
- from: string;
290
- to: string;
291
- }>;
317
+ aliases: TsconfigAlias[];
292
318
  };
319
+ /**
320
+ * Read tsconfig paths/baseUrl for ESLint alias parity (P0-C) from the nearest tsconfig.json
321
+ * at or above `startDir`.
322
+ */
323
+ declare function readTsconfigPathAliases(startDir: string): TsconfigAliasSet;
293
324
  /** Resolve relative import specifier to an absolute path candidate (TS-oriented). */
294
325
  declare function resolveRelativeImport(fromFile: string, specifier: string): string | null;
295
326
  /**
296
327
  * Resolve relative or tsconfig path-alias import to an on-disk file.
297
- * Bare packages (no matching alias) return null — CI/TS remain source of truth there.
328
+ * The tsconfig is the one nearest to `fromFile` (same as the CLI). `projectRoot` is only a
329
+ * fallback start directory when `fromFile` is empty. Bare packages return null.
298
330
  */
299
331
  declare function resolveImportSpecifier(fromFile: string, specifier: string, projectRoot?: string | null): string | null;
300
- /**
301
- * Config-driven layer import boundary (primary editor gate).
302
- * Replaces path-token domain/infra heuristics when ark.config.json is present.
303
- * Rule id kept as `no-domain-infra-imports` for recommended-config / upgrade stability.
304
- */
332
+
333
+ type ArkEslintPlugin = {
334
+ meta: {
335
+ name: string;
336
+ version: string;
337
+ };
338
+ rules: Record<string, ArkRule>;
339
+ configs?: Record<string, unknown>;
340
+ };
305
341
  declare const noDomainInfraImports: ArkRule;
306
342
  declare const noRawEventPublish: ArkRule;
307
343
  declare const requirePublishSource: ArkRule;
308
344
  declare const noForbiddenGlobals: ArkRule;
309
345
  declare const noDeniedCapabilities: ArkRule;
310
- declare const noArkRunKernelInDomain: {
311
- meta: {
312
- type: "problem";
313
- docs: {
314
- description: string;
315
- };
316
- messages: Record<string, string>;
317
- schema: unknown[];
318
- };
319
- create(context: RuleContext$1): {
320
- [x: string]: (node: AstNode$1) => void;
321
- };
322
- };
323
- declare const noArkRunDirectNew: {
324
- meta: {
325
- type: "problem";
326
- docs: {
327
- description: string;
328
- };
329
- messages: Record<string, string>;
330
- schema: unknown[];
331
- };
332
- create(context: RuleContext$1): {
333
- [x: string]: (node: AstNode$1) => void;
334
- };
335
- };
336
- declare const noArkRunTransportBypass: {
337
- meta: {
338
- type: "problem";
339
- docs: {
340
- description: string;
341
- };
342
- messages: Record<string, string>;
343
- schema: unknown[];
344
- };
345
- create(context: RuleContext$1): {
346
- [x: string]: (node: AstNode$1) => void;
347
- };
348
- };
349
-
350
- declare const noArkOrderKernelInDomain: {
351
- meta: {
352
- type: "problem";
353
- docs: {
354
- description: "ARKORDER_KERNEL_IN_DOMAIN" | "ARKORDER_GENERIC_UPDATE";
355
- };
356
- messages: {
357
- denied: string;
358
- };
359
- schema: never[];
360
- };
361
- create(context: RuleContext$1): {
362
- [x: string]: (node: AstNode$1) => void;
363
- };
364
- };
365
- declare const noArkOrderGenericUpdate: {
366
- meta: {
367
- type: "problem";
368
- docs: {
369
- description: "ARKORDER_KERNEL_IN_DOMAIN" | "ARKORDER_GENERIC_UPDATE";
370
- };
371
- messages: {
372
- denied: string;
373
- };
374
- schema: never[];
375
- };
376
- create(context: RuleContext$1): {
377
- [x: string]: (node: AstNode$1) => void;
378
- };
379
- };
380
-
346
+ declare const noArkRunKernelInDomain: ArkRule;
347
+ declare const noArkRunDirectNew: ArkRule;
348
+ declare const noArkRunTransportBypass: ArkRule;
349
+ declare const noArkOrderKernelInDomain: ArkRule;
350
+ declare const noArkOrderGenericUpdate: ArkRule;
351
+ declare const arkRulesStructureRule: ArkRule;
352
+ declare const architectureAdvisory: ArkRule;
353
+ declare const rules: Record<string, ArkRule>;
381
354
  declare const plugin: ArkEslintPlugin;
355
+ declare const configs: Record<string, unknown>;
382
356
 
383
- export { plugin as default, findConfigPath, globToRegExp, isEdgeDenied, layerForRelativePath, loadArkConfig, noArkOrderGenericUpdate, noArkOrderKernelInDomain, noArkRunDirectNew, noArkRunKernelInDomain, noArkRunTransportBypass, noDeniedCapabilities, noDomainInfraImports, noForbiddenGlobals, noRawEventPublish, patternSpecificity, plugin, readTsconfigPathAliases, requirePublishSource, resolveImportSpecifier, resolveRelativeImport };
357
+ export { architectureAdvisory, arkRulesStructureRule, configs, contractFingerprint, plugin as default, findConfigPath, globToRegExp, isEdgeDenied, layerForRelativePath, loadArkConfig, noArkOrderGenericUpdate, noArkOrderKernelInDomain, noArkRunDirectNew, noArkRunKernelInDomain, noArkRunTransportBypass, noDeniedCapabilities, noDomainInfraImports, noForbiddenGlobals, noRawEventPublish, patternSpecificity, plugin, readTsconfigPathAliases, requirePublishSource, resolveImportSpecifier, resolveRelativeImport, rules };