arkgate 4.8.22 → 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 (136) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +7 -5
  3. package/bin/ark-check-runtime.mjs +27 -78
  4. package/bin/ark-dashboard.mjs +56 -53
  5. package/bin/ark-layer-match.mjs +1117 -38
  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 -2
  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 +45 -6
  35. package/bin/lib/doctor-advisories.mjs +84 -1
  36. package/bin/lib/doctor-next-actions.mjs +17 -2
  37. package/bin/lib/doctor-plan.mjs +7 -9
  38. package/bin/lib/effective-contract-load.mjs +121 -59
  39. package/bin/lib/enforcement-honesty.mjs +22 -0
  40. package/bin/lib/enforcement-profiles.mjs +40 -4
  41. package/bin/lib/first-run-help.mjs +3 -2
  42. package/bin/lib/flat-parent-importers.mjs +137 -0
  43. package/bin/lib/flat-parent-pilot.mjs +192 -0
  44. package/bin/lib/gate-files.mjs +29 -2
  45. package/bin/lib/git-change-scope.mjs +109 -0
  46. package/bin/lib/github-enforcement.mjs +1 -1
  47. package/bin/lib/hook-templates.mjs +18 -16
  48. package/bin/lib/host-support-matrix.mjs +3 -1
  49. package/bin/lib/html-report-advisories.mjs +2 -0
  50. package/bin/lib/html-report-depth.mjs +3 -1
  51. package/bin/lib/import-resolve.mjs +13 -1
  52. package/bin/lib/install-migrate.mjs +50 -73
  53. package/bin/lib/invariant-coverage.mjs +59 -11
  54. package/bin/lib/mcp-adoption.mjs +9 -1
  55. package/bin/lib/mcp-hook-payload.mjs +401 -61
  56. package/bin/lib/package-manager.mjs +59 -1
  57. package/bin/lib/passthrough-commands.mjs +83 -0
  58. package/bin/lib/persistence-write-hint.mjs +81 -0
  59. package/bin/lib/physical-cohesion.mjs +16 -18
  60. package/bin/lib/pilot-loop.mjs +21 -8
  61. package/bin/lib/pin-dependent-gates.mjs +117 -0
  62. package/bin/lib/policy-delta-io.mjs +168 -10
  63. package/bin/lib/prepare-change.mjs +120 -6
  64. package/bin/lib/prepare-write.mjs +1 -0
  65. package/bin/lib/presets.mjs +3 -5
  66. package/bin/lib/remediation.mjs +23 -4
  67. package/bin/lib/resolved-candidate-facts.mjs +315 -55
  68. package/bin/lib/rules-inventory.mjs +22 -3
  69. package/bin/lib/rules-under-contract.mjs +179 -5
  70. package/bin/lib/scan-files.mjs +32 -0
  71. package/bin/lib/snippet-analysis.mjs +140 -6
  72. package/bin/lib/source-policy.mjs +34 -0
  73. package/bin/lib/stable-hash.mjs +90 -0
  74. package/bin/lib/start-install-recovery.mjs +71 -1
  75. package/bin/lib/start-preview.mjs +30 -0
  76. package/bin/lib/status-command.mjs +33 -4
  77. package/bin/lib/status-manifest.mjs +32 -4
  78. package/bin/lib/team-parliament-io.mjs +79 -75
  79. package/bin/lib/team-parliament.mjs +6 -1
  80. package/bin/lib/write-path-capabilities.mjs +4 -2
  81. package/dist/chunk-A5EIY3HI.cjs +5 -0
  82. package/dist/chunk-MBXCFLO4.js +16 -0
  83. package/dist/chunk-RNQHRDCQ.cjs +16 -0
  84. package/dist/chunk-SVSQVGFJ.js +5 -0
  85. package/dist/{configTypes-CTELo87-.d.ts → configTypes-BJbaeoj4.d.cts} +53 -4
  86. package/dist/configTypes-BJbaeoj4.d.ts +246 -0
  87. package/dist/eslint/index.cjs +17 -4
  88. package/dist/eslint/index.d.cts +359 -0
  89. package/dist/eslint/index.d.ts +178 -158
  90. package/dist/eslint/index.js +10 -4
  91. package/dist/index.cjs +38 -37
  92. package/dist/index.d.cts +5475 -0
  93. package/dist/index.d.ts +3408 -296
  94. package/dist/index.js +38 -37
  95. package/dist/inspectorListen-6DQVJ4DC.js +1 -0
  96. package/dist/inspectorListen-KGMIQ2TF.cjs +1 -0
  97. package/dist/nestjs/index.cjs +1 -18
  98. package/dist/nestjs/index.d.cts +22 -0
  99. package/dist/nestjs/index.d.ts +1 -3
  100. package/dist/nestjs/index.js +1 -18
  101. package/dist/order/index.cjs +1 -1
  102. package/dist/order/index.d.cts +155 -0
  103. package/dist/order/index.d.ts +15 -3
  104. package/dist/order/index.js +1 -1
  105. package/dist/runtime/index.cjs +13 -30
  106. package/dist/{diagnosticCatalog-WD2TPSwZ.d.ts → runtime/index.d.cts} +814 -290
  107. package/dist/runtime/index.d.ts +2678 -108
  108. package/dist/runtime/index.js +13 -30
  109. package/dist/{types-yDNEQ603.d.ts → types-DRinG-vT.d.cts} +576 -140
  110. package/dist/types-DRinG-vT.d.ts +1792 -0
  111. package/docs/README.md +3 -1
  112. package/docs/agent-guide.md +92 -15
  113. package/docs/ai-gates.md +160 -26
  114. package/docs/arkorder.md +32 -15
  115. package/docs/brownfield-adoption.md +5 -1
  116. package/docs/configuration.md +273 -12
  117. package/docs/develop.md +2 -1
  118. package/docs/diagnostics.md +122 -13
  119. package/docs/package-surface.md +31 -8
  120. package/docs/product-voice.md +1 -1
  121. package/package.json +59 -18
  122. package/schemas/ark.analysis-result.schema.json +15 -0
  123. package/schemas/ark.config.schema.json +163 -4
  124. package/schemas/ark.resolved-candidate-facts.schema.json +1 -1
  125. package/schemas/ark.status-manifest.schema.json +22 -0
  126. package/server.json +3 -9
  127. package/templates/agent-skills/README.md +1 -1
  128. package/templates/agent-skills/ark-adopt/SKILL.md +4 -1
  129. package/templates/agent-skills/ark-order/SKILL.md +4 -2
  130. package/templates/agent-skills/ark-runtime/SKILL.md +6 -1
  131. package/templates/arkrules/PersistenceAdapters.json +1 -1
  132. package/templates/arkrules/PresentationAdapters.json +1 -1
  133. package/templates/skills/ark-adopt.md +4 -1
  134. package/templates/skills/ark-order.md +4 -2
  135. package/templates/skills/ark-runtime.md +6 -1
  136. package/dist/types-fQ9-KrBj.d.ts +0 -183
@@ -1,32 +1,4 @@
1
- import { A as ArkConfig } from '../configTypes-CTELo87-.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
  /**
@@ -118,17 +92,81 @@ type EdgeRule = {
118
92
  * (`features/auth`) or by bare slice name (`auth`), case-insensitively — a bare
119
93
  * name matches that name under *any* slice folder, so write the full id in a repo
120
94
  * with several slice parents. Everything not declared still denies.
95
+ * `*` is a literal character on this list, not a wildcard.
121
96
  */
122
97
  allowedCrossSlice?: CrossSliceEdge[];
123
98
  /**
124
- * When `"deny"`, a declared shared root may not import a slice. Default
125
- * (absent) keeps that hop allowed. Slice → shared stays allowed either way.
126
- * `allowedCrossSlice` does not excuse this hop.
99
+ * `"deny"`: a shared root may not import a slice. `"deny-cross-parent"` leaves
100
+ * that hop allowed; a whole-graph pass then reports a slice that reaches
101
+ * another universe only through shared. Absent keeps the hop allowed.
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}.
106
+ */
107
+ sharedImportsSlice?: SharedImportsSliceSetting;
108
+ /**
109
+ * Optional inner wall under this rule's universe wall. Absent: the universe
110
+ * wall is the whole decision and check output stays byte-identical.
111
+ * Present: a universe cross-slice deny is `CROSS_PARENT_SLICE`. An edge the
112
+ * universe wall allows may still deny on the child wall.
127
113
  */
128
- sharedImportsSlice?: 'deny';
114
+ childSlices?: ChildSlices;
129
115
  /** Optional override message for scanners / write-gate. */
130
116
  message?: string;
131
117
  };
118
+ /**
119
+ * Inner slice wall. `sliceFolders` names children under the universe.
120
+ * A side with no child id (a flat file, or a `commonFolders` directory) is
121
+ * universe common. `siblings` is `deny`, `advisory`, or `{ default, enforce }`.
122
+ * Cross-parent has no knob. `parentMayImportChild` defaults to false.
123
+ * `allowedCrossSlice` here may use a whole-segment `*`. It clears only a
124
+ * sibling crossing, and only after the universe wall has allowed the edge.
125
+ */
126
+ /** A folder outside the slice trees, borrowed onto a child id until it moves. */
127
+ type SliceAlias = {
128
+ /** Source path glob. Only files the slice folders do not already classify. */
129
+ from: string;
130
+ /** Child slice id: the universe id plus one child segment. */
131
+ to: string;
132
+ };
133
+ type ChildSlices = {
134
+ sliceFolders: string[];
135
+ sliceIdentity?: SliceIdentity;
136
+ commonFolders?: string[];
137
+ siblings?: ChildSliceSiblings;
138
+ parentMayImportChild?: boolean;
139
+ /** Text for inner-wall findings (sibling, common → child). Absent: ArkGate default, never the rule message. */
140
+ message?: string;
141
+ /** Directed child allowances. `*` matches one whole segment. Never a universe excuse. */
142
+ allowedCrossSlice?: CrossSliceEdge[];
143
+ /** Unclassified files governed as this child. Debt, not a destination. */
144
+ sliceAliases?: SliceAlias[];
145
+ };
146
+ /** How the child wall treats a sibling crossing. Absent means `deny`. */
147
+ type ChildSliceSiblingsMode = 'deny' | 'advisory';
148
+ /**
149
+ * Per-subtree sibling enforcement. `default` is everyone not listed.
150
+ * `enforce` names child slice ids or subtree paths. The list never loosens deny.
151
+ */
152
+ type ChildSliceSiblingsEnforce = {
153
+ default: ChildSliceSiblingsMode;
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;
161
+ };
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
+ };
132
170
  /** A directed slice-to-slice edge the repo declares on purpose (peerIsolation). */
133
171
  type CrossSliceEdge = {
134
172
  /** Importing slice id (`features/checkout`) or bare slice name (`checkout`). */
@@ -158,37 +196,11 @@ declare function patternSpecificity(pattern: string, relPath?: string): number;
158
196
  declare function layerForRelativePath(relPath: string, layers: LayerConfig[] | undefined): string | undefined;
159
197
  declare function isEdgeDenied(rules: EdgeRule[] | undefined, from: string, to: string, options?: EdgeCheckOptions): boolean;
160
198
 
161
- type RuleContext = {
162
- report(descriptor: Record<string, unknown>): void;
163
- /** ESLint 9+ / 10: preferred path on the context object. */
164
- filename?: string;
165
- /** ESLint 8-style physical path when linting with processors / virtual files. */
166
- physicalFilename?: string;
167
- /** ESLint ≤8 API — still present on some hosts; removed in ESLint 10. */
168
- getFilename?: () => string;
169
- /** ESLint 9+ source/scope API. */
170
- sourceCode?: SourceCode;
171
- /** ESLint ≤8 source/scope API. */
172
- getSourceCode?: () => SourceCode;
173
- options?: unknown[];
174
- };
175
- type ScopeVariable = {
176
- defs?: unknown[];
177
- };
178
- type ScopeReference = {
179
- identifier?: AstNode;
180
- resolved?: ScopeVariable | null;
181
- isValueReference?: boolean;
182
- };
183
- type Scope = {
184
- set?: Map<string, ScopeVariable>;
185
- references?: ScopeReference[];
186
- upper?: Scope | null;
187
- };
188
- type SourceCode = {
189
- getScope?: (node: AstNode) => Scope;
190
- };
191
- 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
+
192
204
  type AstNode = {
193
205
  type?: string;
194
206
  name?: string;
@@ -207,14 +219,62 @@ type AstNode = {
207
219
  specifiers?: AstNode[];
208
220
  parent?: AstNode;
209
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[];
210
232
  computed?: boolean;
233
+ optional?: boolean;
211
234
  loc?: {
212
235
  start?: {
213
236
  line?: number;
214
237
  column?: number;
215
238
  };
239
+ end?: {
240
+ line?: number;
241
+ column?: number;
242
+ };
216
243
  };
217
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>;
218
278
  type ArkRule = {
219
279
  meta: {
220
280
  type: 'problem';
@@ -226,112 +286,72 @@ type ArkRule = {
226
286
  };
227
287
  create(context: RuleContext): RuleListener;
228
288
  };
229
- type ArkEslintPlugin = {
230
- rules: Record<string, ArkRule>;
231
- configs?: Record<string, unknown>;
232
- };
289
+
290
+ /** Nearest `ark.config.json` at or above the linted file (memoized per directory). */
233
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
+ */
234
296
  declare function loadArkConfig(configPath: string): ArkConfig | null;
235
297
  /**
236
- * Read tsconfig paths/baseUrl for ESLint alias parity (P0-C).
237
- * JSONC-tolerant strip of // and /* comments; supports simple extends of a relative JSON.
238
- * 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.
239
301
  */
240
- 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 = {
241
316
  baseUrl: string;
242
- aliases: Array<{
243
- from: string;
244
- to: string;
245
- }>;
317
+ aliases: TsconfigAlias[];
246
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;
247
324
  /** Resolve relative import specifier to an absolute path candidate (TS-oriented). */
248
325
  declare function resolveRelativeImport(fromFile: string, specifier: string): string | null;
249
326
  /**
250
327
  * Resolve relative or tsconfig path-alias import to an on-disk file.
251
- * 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.
252
330
  */
253
331
  declare function resolveImportSpecifier(fromFile: string, specifier: string, projectRoot?: string | null): string | null;
254
- /**
255
- * Config-driven layer import boundary (primary editor gate).
256
- * Replaces path-token domain/infra heuristics when ark.config.json is present.
257
- * Rule id kept as `no-domain-infra-imports` for recommended-config / upgrade stability.
258
- */
332
+
333
+ type ArkEslintPlugin = {
334
+ meta: {
335
+ name: string;
336
+ version: string;
337
+ };
338
+ rules: Record<string, ArkRule>;
339
+ configs?: Record<string, unknown>;
340
+ };
259
341
  declare const noDomainInfraImports: ArkRule;
260
342
  declare const noRawEventPublish: ArkRule;
261
343
  declare const requirePublishSource: ArkRule;
262
344
  declare const noForbiddenGlobals: ArkRule;
263
345
  declare const noDeniedCapabilities: ArkRule;
264
- declare const noArkRunKernelInDomain: {
265
- meta: {
266
- type: "problem";
267
- docs: {
268
- description: string;
269
- };
270
- messages: Record<string, string>;
271
- schema: unknown[];
272
- };
273
- create(context: RuleContext$1): {
274
- [x: string]: (node: AstNode$1) => void;
275
- };
276
- };
277
- declare const noArkRunDirectNew: {
278
- meta: {
279
- type: "problem";
280
- docs: {
281
- description: string;
282
- };
283
- messages: Record<string, string>;
284
- schema: unknown[];
285
- };
286
- create(context: RuleContext$1): {
287
- [x: string]: (node: AstNode$1) => void;
288
- };
289
- };
290
- declare const noArkRunTransportBypass: {
291
- meta: {
292
- type: "problem";
293
- docs: {
294
- description: string;
295
- };
296
- messages: Record<string, string>;
297
- schema: unknown[];
298
- };
299
- create(context: RuleContext$1): {
300
- [x: string]: (node: AstNode$1) => void;
301
- };
302
- };
303
-
304
- declare const noArkOrderKernelInDomain: {
305
- meta: {
306
- type: "problem";
307
- docs: {
308
- description: "ARKORDER_KERNEL_IN_DOMAIN" | "ARKORDER_GENERIC_UPDATE";
309
- };
310
- messages: {
311
- denied: string;
312
- };
313
- schema: never[];
314
- };
315
- create(context: RuleContext$1): {
316
- [x: string]: (node: AstNode$1) => void;
317
- };
318
- };
319
- declare const noArkOrderGenericUpdate: {
320
- meta: {
321
- type: "problem";
322
- docs: {
323
- description: "ARKORDER_KERNEL_IN_DOMAIN" | "ARKORDER_GENERIC_UPDATE";
324
- };
325
- messages: {
326
- denied: string;
327
- };
328
- schema: never[];
329
- };
330
- create(context: RuleContext$1): {
331
- [x: string]: (node: AstNode$1) => void;
332
- };
333
- };
334
-
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>;
335
354
  declare const plugin: ArkEslintPlugin;
355
+ declare const configs: Record<string, unknown>;
336
356
 
337
- 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 };