@wairon/cli 5.1.1-dev.109 → 5.1.1-dev.110
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.
- package/README.md +1 -0
- package/dist/cli/index.js +1983 -897
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +1704 -1517
- package/dist/index.js +2254 -796
- package/dist/index.js.map +1 -1
- package/dist/webapp.html +2 -2
- package/docs/cli.md +92 -12
- package/docs/design/pack-scoping.md +9 -9
- package/package.json +1 -1
- package/schemas/design-export-2.json +6 -0
package/dist/index.d.ts
CHANGED
|
@@ -155,6 +155,13 @@ type NamingRuleConfig = z.infer<typeof NamingRuleConfigSchema>;
|
|
|
155
155
|
* and rename accept the same names. Pure.
|
|
156
156
|
*/
|
|
157
157
|
declare function methodCasingFor(naming: Pick<NamingRuleConfig, 'methods'> | undefined, targetLanguage?: string): string;
|
|
158
|
+
/**
|
|
159
|
+
* Whether a method name fits a casing (methodCasingFor's answer): a known
|
|
160
|
+
* style, or a configured regular expression on top of the identifier grammar.
|
|
161
|
+
* An unreadable expression refuses nothing here (the naming rule reports it as
|
|
162
|
+
* INVALID_NAMING_PATTERN). Pure.
|
|
163
|
+
*/
|
|
164
|
+
declare function fitsMethodCasing(name: string, casing: string): boolean;
|
|
158
165
|
declare const DocumentationRuleConfigSchema: z.ZodObject<{
|
|
159
166
|
/** Minimum character length for description fields */
|
|
160
167
|
minDescriptionLength: z.ZodOptional<z.ZodNumber>;
|
|
@@ -2931,7 +2938,7 @@ declare function projectIdentity(config: Pick<ProjectConfig, 'id' | 'name' | 'pr
|
|
|
2931
2938
|
* (`.wai/externals/<alias>.yaml`), which no Windows checkout could hold.
|
|
2932
2939
|
*/
|
|
2933
2940
|
declare const EXTERNAL_ALIAS_RE: RegExp;
|
|
2934
|
-
/** Why an alias breaks EXTERNAL_ALIAS_RE, in words: the grammar,
|
|
2941
|
+
/** Why an alias breaks EXTERNAL_ALIAS_RE, in words (identifier.problemAs alias): the grammar, a device name, the length, ... */
|
|
2935
2942
|
declare function aliasGrammarProblem(alias: string): string;
|
|
2936
2943
|
/**
|
|
2937
2944
|
* declared_external — one external as the configuration declares it,
|
|
@@ -5742,7 +5749,7 @@ declare const PackAssertionSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<
|
|
|
5742
5749
|
profile?: string[] | undefined;
|
|
5743
5750
|
componentType?: string[] | undefined;
|
|
5744
5751
|
};
|
|
5745
|
-
level: "
|
|
5752
|
+
level: "interface" | "implementation" | "component";
|
|
5746
5753
|
values?: string[] | undefined;
|
|
5747
5754
|
}, {
|
|
5748
5755
|
code: string;
|
|
@@ -5756,7 +5763,7 @@ declare const PackAssertionSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<
|
|
|
5756
5763
|
};
|
|
5757
5764
|
values?: string[] | undefined;
|
|
5758
5765
|
severity?: "error" | "warning" | undefined;
|
|
5759
|
-
level?: "
|
|
5766
|
+
level?: "interface" | "implementation" | "component" | undefined;
|
|
5760
5767
|
}>, z.ZodObject<{
|
|
5761
5768
|
on: z.ZodObject<{
|
|
5762
5769
|
componentType: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -6508,7 +6515,7 @@ declare const DeclarativePackSchema: z.ZodObject<{
|
|
|
6508
6515
|
profile?: string[] | undefined;
|
|
6509
6516
|
componentType?: string[] | undefined;
|
|
6510
6517
|
};
|
|
6511
|
-
level: "
|
|
6518
|
+
level: "interface" | "implementation" | "component";
|
|
6512
6519
|
values?: string[] | undefined;
|
|
6513
6520
|
}, {
|
|
6514
6521
|
code: string;
|
|
@@ -6522,7 +6529,7 @@ declare const DeclarativePackSchema: z.ZodObject<{
|
|
|
6522
6529
|
};
|
|
6523
6530
|
values?: string[] | undefined;
|
|
6524
6531
|
severity?: "error" | "warning" | undefined;
|
|
6525
|
-
level?: "
|
|
6532
|
+
level?: "interface" | "implementation" | "component" | undefined;
|
|
6526
6533
|
}>, z.ZodObject<{
|
|
6527
6534
|
on: z.ZodObject<{
|
|
6528
6535
|
componentType: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -6727,7 +6734,7 @@ declare const DeclarativePackSchema: z.ZodObject<{
|
|
|
6727
6734
|
profile?: string[] | undefined;
|
|
6728
6735
|
componentType?: string[] | undefined;
|
|
6729
6736
|
};
|
|
6730
|
-
level: "
|
|
6737
|
+
level: "interface" | "implementation" | "component";
|
|
6731
6738
|
values?: string[] | undefined;
|
|
6732
6739
|
} | {
|
|
6733
6740
|
code: string;
|
|
@@ -6873,7 +6880,7 @@ declare const DeclarativePackSchema: z.ZodObject<{
|
|
|
6873
6880
|
};
|
|
6874
6881
|
values?: string[] | undefined;
|
|
6875
6882
|
severity?: "error" | "warning" | undefined;
|
|
6876
|
-
level?: "
|
|
6883
|
+
level?: "interface" | "implementation" | "component" | undefined;
|
|
6877
6884
|
} | {
|
|
6878
6885
|
code: string;
|
|
6879
6886
|
kind: "endpoint-shape";
|
|
@@ -7108,12 +7115,6 @@ interface PackDiagnosis {
|
|
|
7108
7115
|
declare function defaultPackSelections(): PackSelection[];
|
|
7109
7116
|
/** Diagnose this project's pack situation for `wairon doctor`. Never throws. */
|
|
7110
7117
|
declare function diagnoseProjectPacks(): PackDiagnosis;
|
|
7111
|
-
/**
|
|
7112
|
-
* Convert the implicitly-applied global packs into EXPLICIT selections and turn
|
|
7113
|
-
* global auto-load off, so this project's doctrine survives a change of default
|
|
7114
|
-
* and is visible in a diff. Returns the names recorded.
|
|
7115
|
-
*/
|
|
7116
|
-
declare function pinInstalledPacksAsSelections(): string[];
|
|
7117
7118
|
/**
|
|
7118
7119
|
* A stable human label for a config pack entry — the path for a legacy ref, or
|
|
7119
7120
|
* `name[@version]` for a selection. For messages and listings, never for loading.
|
|
@@ -7388,407 +7389,1204 @@ interface CandidateOptions {
|
|
|
7388
7389
|
*/
|
|
7389
7390
|
declare function validateComponentCandidate(candidate: ComponentSpec, opts?: CandidateOptions): CandidateVerdict;
|
|
7390
7391
|
|
|
7392
|
+
/** type_dialect — one language's reading and writing of the neutral grammar. */
|
|
7393
|
+
interface TypeDialect {
|
|
7394
|
+
/** The language this dialect reads and writes, as the code analyzer names it. */
|
|
7395
|
+
language: string;
|
|
7396
|
+
/** The canonical expression a code annotation spells, or null when it has no canonical reading. */
|
|
7397
|
+
read(annotation: string): TypeExpression | null;
|
|
7398
|
+
/** Whether a code annotation and a canonical spec expression describe the same type. */
|
|
7399
|
+
agrees(annotation: string, expression: TypeExpression, codeNames: Map<string, string>): boolean;
|
|
7400
|
+
/** This language's idiomatic spelling of a canonical expression. */
|
|
7401
|
+
write(expression: TypeExpression): string;
|
|
7402
|
+
/** The write table as lines an implementer brief carries. */
|
|
7403
|
+
mappingLines(): string[];
|
|
7404
|
+
}
|
|
7405
|
+
/** type_dialect.forLanguage — the dialect shipped for a language, or null when none reads it yet. */
|
|
7406
|
+
declare function typeDialectFor(language: string): TypeDialect | null;
|
|
7407
|
+
/**
|
|
7408
|
+
* type_dialect.mappingFor — the write table an implementer brief carries for
|
|
7409
|
+
* a language: a shipped dialect's mappingLines, else a MAPPING-ONLY table for
|
|
7410
|
+
* a language no analyzer reads yet (Rust, Python), whose last line says that
|
|
7411
|
+
* code conformance does not compare its types. Null for a language with
|
|
7412
|
+
* neither.
|
|
7413
|
+
*/
|
|
7414
|
+
declare function typeMappingFor(language: string): string[] | null;
|
|
7415
|
+
|
|
7416
|
+
type AnalysisGrade = 'exact' | 'pattern' | 'generic';
|
|
7417
|
+
type SourceFileStatus = 'analyzed' | 'missing' | 'escaped' | 'unreadable';
|
|
7391
7418
|
/**
|
|
7392
|
-
*
|
|
7393
|
-
*
|
|
7419
|
+
* One runtime (value) import binding a file makes: the module specifier a
|
|
7420
|
+
* local name came from, and whether it was bound as a whole NAMESPACE.
|
|
7394
7421
|
*
|
|
7395
|
-
*
|
|
7396
|
-
*
|
|
7397
|
-
*
|
|
7422
|
+
* The namespace flag separates the two readings of `x.save()`. For a namespace
|
|
7423
|
+
* import (`import * as specs from './specs.js'`), `specs.save` IS that
|
|
7424
|
+
* module's own export, so the call site resolves to the module. For a named or
|
|
7425
|
+
* default binding, `db.save` is a property of a VALUE that module handed over,
|
|
7426
|
+
* and where that property's function was written is beyond a pure model — so
|
|
7427
|
+
* it resolves to nothing rather than to the module.
|
|
7428
|
+
*
|
|
7429
|
+
* Type-only imports are never recorded: a type binding cannot be a call origin.
|
|
7398
7430
|
*/
|
|
7399
|
-
|
|
7400
|
-
|
|
7401
|
-
|
|
7402
|
-
|
|
7403
|
-
|
|
7431
|
+
/**
|
|
7432
|
+
* One name a file republishes from another module (source_file_facts
|
|
7433
|
+
* reexportBindings): `export { local as exported } from 'from'`, or a star
|
|
7434
|
+
* re-export, which republishes every name its module exports under that same
|
|
7435
|
+
* name and is written with `*` on both sides.
|
|
7436
|
+
*/
|
|
7437
|
+
interface ReexportBindingFact {
|
|
7438
|
+
/** The name this file publishes it under; `*` for a star re-export. */
|
|
7439
|
+
exported: string;
|
|
7440
|
+
/** The name the module it comes from publishes it under; `*` for a star re-export. */
|
|
7441
|
+
local: string;
|
|
7442
|
+
/** The module specifier, exactly as written. */
|
|
7443
|
+
from: string;
|
|
7444
|
+
}
|
|
7445
|
+
/**
|
|
7446
|
+
* One name a file publishes BOUND to another name of its own scope, with no
|
|
7447
|
+
* module specifier of its own (source_file_facts exportAliases): an export
|
|
7448
|
+
* specifier `export { local as exported }`, renamed or not, or an
|
|
7449
|
+
* identifier-valued property of an exported top-level object literal —
|
|
7450
|
+
* `{ exported: local }` or the shorthand `{ exported }` — which then carries
|
|
7451
|
+
* the object's binding name as its `container`. The local name is this file's
|
|
7452
|
+
* own declaration, or an import binding that leads on to the module it came
|
|
7453
|
+
* from: either way the forwarding is written down, one hop away.
|
|
7454
|
+
*/
|
|
7455
|
+
interface ExportAliasFact {
|
|
7456
|
+
/** The name this file publishes: the export specifier's exported name, or the object property's key. */
|
|
7457
|
+
exported: string;
|
|
7458
|
+
/** The name of this file's own scope it is bound to: a local declaration, or an import binding. */
|
|
7459
|
+
local: string;
|
|
7460
|
+
/** The exported object literal's binding name, set only for a property alias — what an `exportedVia` handle names. */
|
|
7461
|
+
container?: string;
|
|
7462
|
+
}
|
|
7463
|
+
interface ImportBindingFact {
|
|
7464
|
+
/** The module specifier the binding came from, exactly as written. */
|
|
7465
|
+
from: string;
|
|
7466
|
+
/** True for `import * as name from …` — the only binding whose property calls are that module's own exports. */
|
|
7467
|
+
namespace?: boolean;
|
|
7468
|
+
/** The name the module publishes it under, set only when the import renamed it (`import { save as store }`). */
|
|
7469
|
+
imported?: string;
|
|
7470
|
+
}
|
|
7471
|
+
/**
|
|
7472
|
+
* One call SITE SHAPE inside a named function-like: the invoked name together
|
|
7473
|
+
* with how the call was written. Shape is what a pure model can honestly say
|
|
7474
|
+
* about a call's ORIGIN — with no type checker, `save(x)`, `ledger.save(x)`,
|
|
7475
|
+
* `this.store.save(x)` and `new Ledger(db).save(x)` are four different
|
|
7476
|
+
* questions, and collapsing them onto the name "save" is what let a call into
|
|
7477
|
+
* an unrelated module count as realizing a narrative step.
|
|
7478
|
+
*
|
|
7479
|
+
* Sites are deduplicated per shape, never counted: the checks that read them
|
|
7480
|
+
* ask where a call could land, never how often it was written.
|
|
7481
|
+
*/
|
|
7482
|
+
interface CallSiteFact {
|
|
7483
|
+
/** The invoked name: the identifier of a bare call, the property name of a member call. */
|
|
7484
|
+
name: string;
|
|
7485
|
+
/** True when the call was written as a member access (`receiver.name(…)`). */
|
|
7486
|
+
member: boolean;
|
|
7404
7487
|
/**
|
|
7405
|
-
*
|
|
7406
|
-
*
|
|
7407
|
-
*
|
|
7488
|
+
* The receiver identifier — set only when the receiver is a plain identifier
|
|
7489
|
+
* (`specs.save()` → "specs"). The one receiver that can be PROVEN, when the
|
|
7490
|
+
* name is a namespace import binding and its properties are that module's
|
|
7491
|
+
* own exports — and otherwise a receiver to follow past the value it holds,
|
|
7492
|
+
* through the type the file ANNOTATES the name with.
|
|
7408
7493
|
*/
|
|
7409
|
-
|
|
7494
|
+
via?: string;
|
|
7410
7495
|
/**
|
|
7411
|
-
*
|
|
7412
|
-
*
|
|
7413
|
-
*
|
|
7414
|
-
*
|
|
7496
|
+
* The instance FIELD the receiver is — set only when the call was written
|
|
7497
|
+
* `this.<field>.name(…)` (`this.store.save()` → "store"), and never together
|
|
7498
|
+
* with `via`. A receiver a pure model can follow past the value it holds,
|
|
7499
|
+
* because the class DECLARES what the field is; what that type resolves to
|
|
7500
|
+
* is a POSSIBLE origin, never a proven one, since the declared type says
|
|
7501
|
+
* what a collaborator is and not which class ships the body.
|
|
7415
7502
|
*/
|
|
7416
|
-
|
|
7503
|
+
field?: string;
|
|
7417
7504
|
/**
|
|
7418
|
-
*
|
|
7419
|
-
*
|
|
7505
|
+
* The CLASS the receiver was constructed from — set only when the call was
|
|
7506
|
+
* written `new Class(…).name(…)` (`new ApprovalRegistry(store).create()` →
|
|
7507
|
+
* "ApprovalRegistry"), and never together with `via` or `field`. Another
|
|
7508
|
+
* receiver a pure model can follow, because the code NAMES the class it
|
|
7509
|
+
* built. Like a declared field type it is a POSSIBLE origin and never a
|
|
7510
|
+
* proven one: a method the class INHERITS is written in its base's module,
|
|
7511
|
+
* not in the constructed class's.
|
|
7420
7512
|
*/
|
|
7421
|
-
|
|
7513
|
+
constructed?: string;
|
|
7514
|
+
/**
|
|
7515
|
+
* The function whose RESULT the receiver is — set only when the call was
|
|
7516
|
+
* written `fn(…).name(…)` with `fn` a plain identifier
|
|
7517
|
+
* (`current().updateSpec()` → "current"), and never together with `via`,
|
|
7518
|
+
* `field` or `constructed`. Followed through what the code writes down
|
|
7519
|
+
* about fn's result (SourceFileFacts.returnTypes): a POSSIBLE origin and
|
|
7520
|
+
* never a proven one, and only where the module that type leads to holds a
|
|
7521
|
+
* body under the invoked name.
|
|
7522
|
+
*/
|
|
7523
|
+
returnedBy?: string;
|
|
7524
|
+
/**
|
|
7525
|
+
* The top-level named class whose own method the call sits in — set only
|
|
7526
|
+
* when the call was written `this.name(…)` directly inside a method,
|
|
7527
|
+
* accessor or constructor of that class (an arrow function keeps `this`; a
|
|
7528
|
+
* nested function expression rebinds it and records nothing). A POSSIBLE
|
|
7529
|
+
* origin and never a proven one, since a subclass may override the method,
|
|
7530
|
+
* and only where the class holds a body under the invoked name.
|
|
7531
|
+
*/
|
|
7532
|
+
enclosingClass?: string;
|
|
7533
|
+
/**
|
|
7534
|
+
* The receiver written as a CHAIN of property accesses — set only when the
|
|
7535
|
+
* call was written `this.<field>.<property>….name(…)`
|
|
7536
|
+
* (`this.c.tracker.checkIn()` → ["this", "c", "tracker"]) or
|
|
7537
|
+
* `<name>.<property>….name(…)` (`deps.tracker.checkIn()` → ["deps",
|
|
7538
|
+
* "tracker"]), and never together with `via`, `field`, `constructed`,
|
|
7539
|
+
* `returnedBy` or `enclosingClass`. The shape constructor-injected
|
|
7540
|
+
* collaborators take when they arrive as ONE bag object. Followed link by
|
|
7541
|
+
* link through what the code DECLARES each link to be — the root's field
|
|
7542
|
+
* or annotated type, then each property's declared type on the shape that
|
|
7543
|
+
* declares it — and, like every receiver past an import binding, a
|
|
7544
|
+
* POSSIBLE origin and never a proven one.
|
|
7545
|
+
*/
|
|
7546
|
+
receiverPath?: string[];
|
|
7547
|
+
/**
|
|
7548
|
+
* The file this site was READ in, set only when it is not the file these
|
|
7549
|
+
* facts describe — a pure re-export barrel carries the sites of the function
|
|
7550
|
+
* it publishes. A carried site's bare names and receivers resolve in that
|
|
7551
|
+
* file's scope, never in the barrel's.
|
|
7552
|
+
*/
|
|
7553
|
+
from?: string;
|
|
7422
7554
|
}
|
|
7423
|
-
|
|
7424
7555
|
/**
|
|
7425
|
-
*
|
|
7426
|
-
*
|
|
7427
|
-
* say which tests it just invalidated.
|
|
7556
|
+
* One function-like BODY under its name, with where it is bound — the
|
|
7557
|
+
* identity that tells same-named functions in one file apart.
|
|
7428
7558
|
*
|
|
7429
|
-
*
|
|
7430
|
-
*
|
|
7431
|
-
*
|
|
7432
|
-
*
|
|
7559
|
+
* module (no `container`, no `nested`) a top-level function declaration,
|
|
7560
|
+
* or a function/arrow initializer of a top-level variable: what
|
|
7561
|
+
* the bare name means anywhere in the module's scope.
|
|
7562
|
+
* member `container` set: a member of a top-level named class, or a
|
|
7563
|
+
* property of an object literal a top-level variable is bound to
|
|
7564
|
+
* (`const store = { save() {} }` → container "store"). Reachable
|
|
7565
|
+
* only through that container, never by the bare name.
|
|
7566
|
+
* nested `nested` set: any other binding — a function inside a
|
|
7567
|
+
* function, a member of a class or object literal the model
|
|
7568
|
+
* cannot name. A nested body can shadow the bare name in the
|
|
7569
|
+
* scope it sits in, so where one exists the name stays ambiguous.
|
|
7433
7570
|
*/
|
|
7434
|
-
|
|
7435
|
-
|
|
7571
|
+
interface FunctionBodyFact {
|
|
7572
|
+
/** The named class or top-level object literal the body is a member of. */
|
|
7573
|
+
container?: string;
|
|
7574
|
+
/** True when the body is bound somewhere the model cannot name. */
|
|
7575
|
+
nested?: boolean;
|
|
7576
|
+
/** The call sites written inside this body alone. */
|
|
7577
|
+
sites: CallSiteFact[];
|
|
7578
|
+
}
|
|
7579
|
+
/**
|
|
7580
|
+
* One data member of a shape a file declares: its name, and whether the code
|
|
7581
|
+
* lets it be ABSENT.
|
|
7582
|
+
*
|
|
7583
|
+
* Absent-able is the only optionality worth recording, because it is the only
|
|
7584
|
+
* one a spec can be wrong about in a way a reader would notice — a field the
|
|
7585
|
+
* spec calls required that the code lets you omit is a promise the data does
|
|
7586
|
+
* not keep. A wrapper that FILLS a missing key is not absent-able: the value
|
|
7587
|
+
* the type finally holds always has it, which is the shape the spec describes.
|
|
7588
|
+
*/
|
|
7589
|
+
interface ShapeMemberFact {
|
|
7590
|
+
/** The member's name, as the code spells it. */
|
|
7591
|
+
name: string;
|
|
7592
|
+
/** Whether the code lets the member be absent from a value of this shape. */
|
|
7593
|
+
optional: boolean;
|
|
7594
|
+
}
|
|
7595
|
+
/**
|
|
7596
|
+
* One parameter of a function as the code declares it: what it is called, what
|
|
7597
|
+
* it is annotated with, and whether a caller may leave it out.
|
|
7598
|
+
*
|
|
7599
|
+
* The TYPE is what makes a RENAME tellable from a dropped parameter —
|
|
7600
|
+
* `seed(config: HostConfig)` realized as `bootstrapInstance(cfg: HostConfig)`
|
|
7601
|
+
* is one parameter under two names, and matching on names alone reads it as a
|
|
7602
|
+
* parameter the code lost. A parameter bound by destructuring has no name to
|
|
7603
|
+
* compare, so it records none rather than inventing one: a guess about
|
|
7604
|
+
* somebody's signature is worse than silence, exactly as it is for a field.
|
|
7605
|
+
*/
|
|
7606
|
+
interface ParameterFact {
|
|
7607
|
+
/** The parameter's name, absent when it is bound by a destructuring pattern instead. */
|
|
7608
|
+
name?: string;
|
|
7609
|
+
/** The type it is annotated with, exactly as written and whitespace-normalized; absent when the code annotates nothing. */
|
|
7610
|
+
type?: string;
|
|
7611
|
+
/** Whether a caller may leave it out — marked optional, given a default, or a rest parameter. */
|
|
7612
|
+
optional: boolean;
|
|
7613
|
+
}
|
|
7614
|
+
/**
|
|
7615
|
+
* One route a router function handles, rebuilt from the conditions that guard
|
|
7616
|
+
* the branch serving it — the branch's own AND every enclosing one on the path
|
|
7617
|
+
* taken, because routers nest: an outer check on the first segment, an inner
|
|
7618
|
+
* one on the rest. Reading only the innermost guard would turn every route
|
|
7619
|
+
* into `/*` followed by whatever the inner branch happened to check.
|
|
7620
|
+
*
|
|
7621
|
+
* A segment is the literal the code compares it to, or `*` where nothing
|
|
7622
|
+
* constrains it. A leading `*` is usually the segment the listener's mount
|
|
7623
|
+
* already guarantees, which the router never re-checks — so it is left open
|
|
7624
|
+
* here and completed by whoever knows the mount.
|
|
7625
|
+
*
|
|
7626
|
+
* Only one idiom is read: a method comparison together with comparisons on the
|
|
7627
|
+
* path's split segments and their count. A router written another way yields
|
|
7628
|
+
* nothing, and the reader reports that as unread rather than passing it — a
|
|
7629
|
+
* check that cannot see a router must say so rather than stay quiet.
|
|
7630
|
+
*/
|
|
7631
|
+
interface RouteFact {
|
|
7632
|
+
/** The HTTP method the branch requires. */
|
|
7633
|
+
verb: string;
|
|
7634
|
+
/** The path's segments in order: the literal compared against, or `*` where nothing constrains it. */
|
|
7635
|
+
segments: string[];
|
|
7436
7636
|
/**
|
|
7437
|
-
*
|
|
7438
|
-
*
|
|
7439
|
-
*
|
|
7637
|
+
* Whether the branch pins the number of segments. When it does not, the path
|
|
7638
|
+
* may continue past the last one read, so the route covers any longer path
|
|
7639
|
+
* with the same leading segments.
|
|
7440
7640
|
*/
|
|
7441
|
-
|
|
7442
|
-
|
|
7443
|
-
|
|
7444
|
-
|
|
7445
|
-
|
|
7446
|
-
|
|
7641
|
+
exactLength: boolean;
|
|
7642
|
+
}
|
|
7643
|
+
/** How a type shape's members were read: listed by the shape itself, or followed one hop from an alias to the value its shape comes from. */
|
|
7644
|
+
type ShapeOrigin = 'declared' | 'derived';
|
|
7645
|
+
/**
|
|
7646
|
+
* The members of one named shape a file declares — what a data type IS, read
|
|
7647
|
+
* off the code so a type spec's claim about it can be checked.
|
|
7648
|
+
*
|
|
7649
|
+
* Two origins answer, and the difference is recorded rather than smoothed
|
|
7650
|
+
* away. A DECLARED shape lists its own members, so the file is the whole
|
|
7651
|
+
* answer. A DERIVED one names a VALUE instead — an alias resolved one hop to
|
|
7652
|
+
* the object literal its schema is built from, where the keys are the members
|
|
7653
|
+
* — so the answer is as good as that hop and no better, and a hop that lands
|
|
7654
|
+
* on nothing readable records no shape at all. Silence, not a guess: a wrong
|
|
7655
|
+
* member list is worse than none, because nothing downstream would correct it.
|
|
7656
|
+
*
|
|
7657
|
+
* Methods are kept apart from fields because a spec models them on a different
|
|
7658
|
+
* axis — the one `typeRealization` already judges. Counting a behavioural
|
|
7659
|
+
* interface's method signatures as data would accuse every one of them of
|
|
7660
|
+
* carrying undeclared state.
|
|
7661
|
+
*/
|
|
7662
|
+
interface TypeShapeFact {
|
|
7663
|
+
/** How the members were read. */
|
|
7664
|
+
origin: ShapeOrigin;
|
|
7665
|
+
/** The data members, each with whether the code lets it be absent. */
|
|
7666
|
+
fields: ShapeMemberFact[];
|
|
7667
|
+
/** The method-style members, kept on the axis a spec models them on. */
|
|
7668
|
+
methods: string[];
|
|
7447
7669
|
/**
|
|
7448
|
-
* True when
|
|
7449
|
-
*
|
|
7450
|
-
*
|
|
7451
|
-
*
|
|
7452
|
-
* that merely reflect declared, unfinished work without silencing the rule.
|
|
7670
|
+
* True when the shape EXTENDS another, so members it does not list exist
|
|
7671
|
+
* but are not in this file to count. Presence and absence are therefore
|
|
7672
|
+
* different questions for it: what it shows can be judged, what it omits
|
|
7673
|
+
* cannot.
|
|
7453
7674
|
*/
|
|
7454
|
-
|
|
7675
|
+
inherited?: boolean;
|
|
7676
|
+
}
|
|
7677
|
+
interface SourceFileFacts {
|
|
7678
|
+
/** Project-relative resolved source path (many implementations may share it, N:1). */
|
|
7679
|
+
path: string;
|
|
7680
|
+
status: SourceFileStatus;
|
|
7681
|
+
/** Effective language the file was analyzed as. */
|
|
7682
|
+
language?: string;
|
|
7683
|
+
analysisGrade?: AnalysisGrade;
|
|
7455
7684
|
/**
|
|
7456
|
-
*
|
|
7457
|
-
*
|
|
7458
|
-
*
|
|
7685
|
+
* Declaration-tier anchors: named declarations at any nesting depth,
|
|
7686
|
+
* destructuring bindings, object-literal keys, import bindings, and export
|
|
7687
|
+
* specifiers (export-* barrels chased through relative specifiers).
|
|
7459
7688
|
*/
|
|
7460
|
-
|
|
7689
|
+
declaredNames: string[];
|
|
7690
|
+
/** Weaker anchors: exact string-literal occurrences (tool/route registrations). */
|
|
7691
|
+
anchoredNames: string[];
|
|
7692
|
+
/** Exported bindings (Level 2 dependency-conformance and UNDECLARED_EXPORT fuel). */
|
|
7693
|
+
exportedNames: string[];
|
|
7461
7694
|
/**
|
|
7462
|
-
*
|
|
7463
|
-
*
|
|
7464
|
-
*
|
|
7695
|
+
* Runtime import/require module specifiers (dependency-conformance fuel).
|
|
7696
|
+
* Type-only imports and export-from specifiers are excluded — type coupling
|
|
7697
|
+
* is allowed by default, and re-exporting is surface republication, not
|
|
7698
|
+
* collaboration.
|
|
7465
7699
|
*/
|
|
7466
|
-
|
|
7700
|
+
imports: string[];
|
|
7701
|
+
/** Module specifiers of export-from declarations (surface republication). */
|
|
7702
|
+
reexports: string[];
|
|
7467
7703
|
/**
|
|
7468
|
-
*
|
|
7469
|
-
*
|
|
7470
|
-
*
|
|
7471
|
-
*
|
|
7472
|
-
*
|
|
7704
|
+
* What each export-from declaration republishes, name by name: a named one
|
|
7705
|
+
* with both sides of its rename (`export { a as b } from 'm'` publishes `b`
|
|
7706
|
+
* as m's `a`), a star with `*` on both sides. Runtime re-exports only — a
|
|
7707
|
+
* type-only one republishes no function. EXACT grade only: it is what lets a
|
|
7708
|
+
* reader follow a republished name to the module that wrote it, and a
|
|
7709
|
+
* weaker grade leaves it unset rather than guess.
|
|
7473
7710
|
*/
|
|
7474
|
-
|
|
7475
|
-
}
|
|
7476
|
-
interface ValidationResult {
|
|
7477
|
-
valid: boolean;
|
|
7478
|
-
issues: ValidationIssue[];
|
|
7711
|
+
reexportBindings?: ReexportBindingFact[];
|
|
7479
7712
|
/**
|
|
7480
|
-
*
|
|
7481
|
-
*
|
|
7482
|
-
*
|
|
7483
|
-
*
|
|
7713
|
+
* The forwarding bindings the file publishes with no module specifier of
|
|
7714
|
+
* its own (see ExportAliasFact): each runtime `export { local as exported }`
|
|
7715
|
+
* specifier, renamed or not, and each identifier-valued property of an
|
|
7716
|
+
* exported top-level object literal, under that object's binding name.
|
|
7717
|
+
* EXACT grade only. The analyzer carries the local name's body onto the
|
|
7718
|
+
* published one when the local name settles on exactly one — a module-scope
|
|
7719
|
+
* body of this file with no nested same-named one, or an import binding
|
|
7720
|
+
* whose module holds one — and leaves the published name bodiless otherwise.
|
|
7484
7721
|
*/
|
|
7485
|
-
|
|
7722
|
+
exportAliases?: ExportAliasFact[];
|
|
7486
7723
|
/**
|
|
7487
|
-
*
|
|
7488
|
-
*
|
|
7489
|
-
*
|
|
7724
|
+
* The type name each named function-like RETURNS, by function name,
|
|
7725
|
+
* recorded only where the code settles it: a return annotation naming a
|
|
7726
|
+
* type outright (`Promise<T>` unwrapped), else, unannotated, a body whose
|
|
7727
|
+
* ONE return statement constructs a plainly named class. Same-named
|
|
7728
|
+
* functions that disagree, a generic, union or literal annotation, and
|
|
7729
|
+
* several returns record nothing. EXACT grade only. What a `fn().method()`
|
|
7730
|
+
* receiver is followed through.
|
|
7490
7731
|
*/
|
|
7491
|
-
|
|
7732
|
+
returnTypes?: Record<string, string>;
|
|
7492
7733
|
/**
|
|
7493
|
-
*
|
|
7494
|
-
*
|
|
7495
|
-
*
|
|
7734
|
+
* Cyclomatic complexity per named function-like (function/method/accessor
|
|
7735
|
+
* declarations, and function/arrow initializers of named slots). EXACT grade
|
|
7736
|
+
* only — lower grades omit the map rather than guess. Same-named functions
|
|
7737
|
+
* in one file record their maximum. Fuel for the detail-sufficiency lint.
|
|
7496
7738
|
*/
|
|
7497
|
-
|
|
7739
|
+
functionComplexity?: Record<string, number>;
|
|
7498
7740
|
/**
|
|
7499
|
-
*
|
|
7500
|
-
*
|
|
7501
|
-
*
|
|
7741
|
+
* Direct call sites per named function-like: every call written inside the
|
|
7742
|
+
* function body, with its shape (see CallSiteFact) — nested NAMED functions
|
|
7743
|
+
* excluded (they carry their own entries), anonymous callbacks included.
|
|
7744
|
+
* EXACT grade only. Same-named functions union their sites.
|
|
7745
|
+
*
|
|
7746
|
+
* A function-like WITH A BODY always gets an entry, empty when it calls
|
|
7747
|
+
* nothing; a name with NO entry has no body in this file to read — a bare
|
|
7748
|
+
* declaration, an overload signature, an ambient declaration, an interface
|
|
7749
|
+
* member, a plain value binding or an imported name. That difference is the
|
|
7750
|
+
* whole of hasFunctionBody, which is why an empty entry is never dropped.
|
|
7751
|
+
*
|
|
7752
|
+
* Fuel for the call-step realization checks (Level 3).
|
|
7502
7753
|
*/
|
|
7503
|
-
|
|
7504
|
-
}
|
|
7505
|
-
/**
|
|
7506
|
-
* project_verdict — one project's line in a family run: which project it is,
|
|
7507
|
-
* where it lives, and the totals of its own gate's verdict, which the family
|
|
7508
|
-
* run carries verbatim under the project's key.
|
|
7509
|
-
*/
|
|
7510
|
-
interface ProjectVerdict {
|
|
7511
|
-
/** The project's key in the family root's scan ('' for the root itself). */
|
|
7512
|
-
key: string;
|
|
7513
|
-
/** The project's effective id. */
|
|
7514
|
-
id?: string;
|
|
7515
|
-
/** The project's root directory. */
|
|
7516
|
-
directory: string;
|
|
7517
|
-
/** Whether its own gate found no error. */
|
|
7518
|
-
valid: boolean;
|
|
7519
|
-
errors: number;
|
|
7520
|
-
warnings: number;
|
|
7521
|
-
notices: number;
|
|
7522
|
-
}
|
|
7523
|
-
declare function validateRegistry(registry: Registry, rules: RulesConfig): ValidationResult;
|
|
7524
|
-
declare function validateProjectConfig(config: ProjectConfig): ValidationResult;
|
|
7525
|
-
interface ValidationOptions {
|
|
7526
|
-
rules?: RulesConfig;
|
|
7527
|
-
projectType?: string;
|
|
7528
|
-
scopeSubsystem?: string;
|
|
7754
|
+
functionCallSites?: Record<string, CallSiteFact[]>;
|
|
7529
7755
|
/**
|
|
7530
|
-
*
|
|
7531
|
-
*
|
|
7532
|
-
*
|
|
7756
|
+
* The same call sites, BODY by body, under each function-like's name: one
|
|
7757
|
+
* entry per body, carrying WHERE that body is bound (see FunctionBodyFact).
|
|
7758
|
+
* EXACT grade only. Where functionCallSites unions every same-named body,
|
|
7759
|
+
* this keeps them apart, so an exported facade `save` and the class member
|
|
7760
|
+
* `Workspace.save` it forwards to are read as the two functions they are.
|
|
7761
|
+
* Which body a NAME means is bodySitesOf's question, and it answers only
|
|
7762
|
+
* where the code itself settles it.
|
|
7533
7763
|
*/
|
|
7534
|
-
|
|
7764
|
+
functionBodies?: Record<string, FunctionBodyFact[]>;
|
|
7535
7765
|
/**
|
|
7536
|
-
*
|
|
7537
|
-
*
|
|
7538
|
-
*
|
|
7766
|
+
* Runtime (value) import bindings by local name (see ImportBindingFact).
|
|
7767
|
+
* EXACT grade only — a weaker grade sees module specifiers but never which
|
|
7768
|
+
* local name they bound.
|
|
7539
7769
|
*/
|
|
7540
|
-
|
|
7770
|
+
importBindings?: Record<string, ImportBindingFact>;
|
|
7541
7771
|
/**
|
|
7542
|
-
*
|
|
7543
|
-
*
|
|
7544
|
-
*
|
|
7545
|
-
*
|
|
7546
|
-
*
|
|
7547
|
-
*
|
|
7548
|
-
*
|
|
7772
|
+
* The type names an instance FIELD is DECLARED with, by field name — read
|
|
7773
|
+
* off class property declarations and constructor parameter properties,
|
|
7774
|
+
* which is where a constructor-injected collaborator says what it is.
|
|
7775
|
+
* EXACT grade only.
|
|
7776
|
+
*
|
|
7777
|
+
* Same-named fields of different classes in one file keep EVERY declared
|
|
7778
|
+
* type: the file cannot say which class a call site's `this` was, and a
|
|
7779
|
+
* wider answer only ever widens what a call may have reached. A field with
|
|
7780
|
+
* no annotation records nothing — what an initializer INFERS is not what
|
|
7781
|
+
* the code declares, and a guess is not a fact.
|
|
7549
7782
|
*/
|
|
7550
|
-
|
|
7783
|
+
fieldTypes?: Record<string, string[]>;
|
|
7551
7784
|
/**
|
|
7552
|
-
*
|
|
7553
|
-
*
|
|
7554
|
-
*
|
|
7785
|
+
* The type names a LOCALLY BOUND name is DECLARED with, by name — read off
|
|
7786
|
+
* function and method parameters and off variable declarations that carry
|
|
7787
|
+
* an annotation, which is where a module that wires its collaborators as
|
|
7788
|
+
* closures writes down what each one is. EXACT grade only.
|
|
7789
|
+
*
|
|
7790
|
+
* Keyed by name across the WHOLE file, as `fieldTypes` is: the facts cannot
|
|
7791
|
+
* say which function a call site sits in, and a receiver is as often a
|
|
7792
|
+
* parameter of an ENCLOSING function as of the one that calls it — a
|
|
7793
|
+
* closure captures it, which is the shape this records at all. Same-named
|
|
7794
|
+
* bindings therefore keep EVERY declared type, and a wider answer only ever
|
|
7795
|
+
* widens what a call may have reached. A binding the file annotates with
|
|
7796
|
+
* nothing records nothing, and so does one annotated with anything but a
|
|
7797
|
+
* plain type reference or a member-preserving utility (`Pick`, `Omit`,
|
|
7798
|
+
* `Partial`, `Required`, `Readonly`) around one, which names the type it
|
|
7799
|
+
* wraps: what an initializer INFERS is not what the code
|
|
7800
|
+
* declares, and a guess is not a fact.
|
|
7555
7801
|
*/
|
|
7556
|
-
|
|
7802
|
+
localTypes?: Record<string, string[]>;
|
|
7557
7803
|
/**
|
|
7558
|
-
* The
|
|
7559
|
-
*
|
|
7560
|
-
*
|
|
7561
|
-
*
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7804
|
+
* The module specifier each TYPE-ONLY import binding came from, by local
|
|
7805
|
+
* name. EXACT grade only.
|
|
7806
|
+
*
|
|
7807
|
+
* The half of the import list `importBindings` deliberately leaves out,
|
|
7808
|
+
* because a type binding can never be a call ORIGIN — and exactly what a
|
|
7809
|
+
* declared field type is resolved through, which is why it is kept apart
|
|
7810
|
+
* rather than folded in.
|
|
7811
|
+
*/
|
|
7812
|
+
typeOnlyBindings?: Record<string, string>;
|
|
7813
|
+
/**
|
|
7814
|
+
* The type names each PROPERTY of a named shape the file declares is
|
|
7815
|
+
* DECLARED with, keyed `<shape>.<property>` — an interface's or a type
|
|
7816
|
+
* literal alias's property signatures, and a class's property declarations
|
|
7817
|
+
* and constructor parameter properties. EXACT grade only.
|
|
7818
|
+
*
|
|
7819
|
+
* What a receiver CHAIN (`CallSiteFact.receiverPath`) is followed through:
|
|
7820
|
+
* a bag of collaborators handed to a constructor names each one's type
|
|
7821
|
+
* exactly here. Read the way `fieldTypes` is, and a property annotated with
|
|
7822
|
+
* anything else records nothing.
|
|
7823
|
+
*/
|
|
7824
|
+
memberTypes?: Record<string, string[]>;
|
|
7825
|
+
/**
|
|
7826
|
+
* The ONE type each type alias NAMES outright, by alias name —
|
|
7827
|
+
* `type Contract = Pick<HabitRepository, 'find'>` names HabitRepository,
|
|
7828
|
+
* `type Store = SpecStore` names SpecStore. EXACT grade only. Read the way
|
|
7829
|
+
* `fieldTypes` is, so a union, an intersection, a literal or any other
|
|
7830
|
+
* generic names nothing. The one hop a declared type is followed through
|
|
7831
|
+
* when it is an alias of this file.
|
|
7832
|
+
*/
|
|
7833
|
+
aliasTargets?: Record<string, string>;
|
|
7834
|
+
/**
|
|
7835
|
+
* The interface names each named class's `implements` clause writes, by
|
|
7836
|
+
* class name; exact grade only. What lets a receiver whose declared type is
|
|
7837
|
+
* an interface written in a shared contracts file be followed to the class
|
|
7838
|
+
* that implements it, wherever that class lives — a possible origin, never
|
|
7839
|
+
* a proven one, like every declared type.
|
|
7840
|
+
*/
|
|
7841
|
+
implementsClauses?: Record<string, string[]>;
|
|
7842
|
+
/**
|
|
7843
|
+
* The members of each named shape the file declares, by declaration name
|
|
7844
|
+
* (see TypeShapeFact). EXACT grade only — below it a member list cannot be
|
|
7845
|
+
* told from a mention, and a guess about somebody's data model is worse
|
|
7846
|
+
* than silence.
|
|
7847
|
+
*
|
|
7848
|
+
* What lets a type spec's `fields` be CHECKED rather than read as truth by
|
|
7849
|
+
* the ERD, the briefs and every implementer. A wrong method signature
|
|
7850
|
+
* eventually breaks at a call site; a type spec that lies about its data is
|
|
7851
|
+
* only ever read by humans and agents, so nothing corrects it until
|
|
7852
|
+
* somebody measures it against the code.
|
|
7853
|
+
*/
|
|
7854
|
+
typeShapes?: Record<string, TypeShapeFact>;
|
|
7855
|
+
/**
|
|
7856
|
+
* The parameter lists of each named function-like in the file, by name (see
|
|
7857
|
+
* ParameterFact) — what lets a contract's declared `params` be checked
|
|
7858
|
+
* against the signature that realizes them, the last of the three
|
|
7859
|
+
* code-to-spec readings nothing had ever made. EXACT grade only: below it a
|
|
7860
|
+
* parameter list cannot be told from a call.
|
|
7861
|
+
*
|
|
7862
|
+
* EVERY body under a name is kept, not the first: a file routinely holds a
|
|
7863
|
+
* class member and the module-level facade that forwards to it under one
|
|
7864
|
+
* name, with different parameters, and picking one silently drops the
|
|
7865
|
+
* other's leading argument from view. Same-named bodies therefore keep every
|
|
7866
|
+
* candidate, exactly as the field-type facts do, and a reader accuses only
|
|
7867
|
+
* what all of them agree on.
|
|
7868
|
+
*
|
|
7869
|
+
* Overloads record the IMPLEMENTATION signature, the one with a body,
|
|
7870
|
+
* because that is the one a caller actually reaches — and a name with no
|
|
7871
|
+
* entry at all has no signature here to read, which is the silence a
|
|
7872
|
+
* forwarding file owes: that the body is not here is already
|
|
7873
|
+
* `methodRealization`'s finding.
|
|
7874
|
+
*/
|
|
7875
|
+
functionParams?: Record<string, ParameterFact[][]>;
|
|
7876
|
+
/**
|
|
7877
|
+
* The routes each named function-like in the file handles, by name (see
|
|
7878
|
+
* RouteFact) — what lets a listener's mount be read against the contract
|
|
7879
|
+
* endpoints of the portal it serves, so a route the router answers that no
|
|
7880
|
+
* contract declares cannot go unnoticed again. EXACT grade only: reading a
|
|
7881
|
+
* guard as a route needs the conditions as expressions, not as text.
|
|
7882
|
+
*
|
|
7883
|
+
* A function with no recognisable route records NO entry rather than an
|
|
7884
|
+
* empty one — an empty guess would read as "a router with no routes", and
|
|
7885
|
+
* the reader needs to tell a router it could not read from one it read.
|
|
7886
|
+
* Same-named bodies union their routes; nested NAMED functions carry their
|
|
7887
|
+
* own entries, while anonymous callbacks count into the enclosing one.
|
|
7888
|
+
*/
|
|
7889
|
+
functionRoutes?: Record<string, RouteFact[]>;
|
|
7890
|
+
/**
|
|
7891
|
+
* The named function-likes in the file that complete LATER — declared
|
|
7892
|
+
* `async`, or annotated to return a Promise — listed once per such BODY, in
|
|
7893
|
+
* the order the bodies are met, exactly as `functionParams` keeps one
|
|
7894
|
+
* signature per body. A name with several bodies (a class member and the
|
|
7895
|
+
* module-level facade forwarding to it) is therefore judged on what they ALL
|
|
7896
|
+
* say: as many entries as signatures is every body, none is no body. What
|
|
7897
|
+
* ASYNC_MISMATCH compares a contract method's `async` returns with. EXACT
|
|
7898
|
+
* grade only: below it a body cannot be told from a call.
|
|
7899
|
+
*/
|
|
7900
|
+
asyncFunctions?: string[];
|
|
7901
|
+
/**
|
|
7902
|
+
* The values of each ENUM-LIKE declaration in the file, by declaration name,
|
|
7903
|
+
* in declared order: a string-literal union alias (`type E = 'a' | 'b'`),
|
|
7904
|
+
* the string array a `z.enum([...])` constant holds — an alias
|
|
7905
|
+
* `z.infer<typeof X>` followed one hop, as a derived shape is — or a string
|
|
7906
|
+
* enum's member values. What UNREALIZED_ENUM_VALUE and UNDECLARED_ENUM_VALUE
|
|
7907
|
+
* read. EXACT grade only; a union mixing in anything but string literals is
|
|
7908
|
+
* not enum-like and is left out.
|
|
7909
|
+
*/
|
|
7910
|
+
enumValues?: Record<string, string[]>;
|
|
7911
|
+
/**
|
|
7912
|
+
* The right side of each TYPE ALIAS the file declares, as written, by alias
|
|
7913
|
+
* name — every alias whose right side is not an object shape
|
|
7914
|
+
* (`type PackPath = string`). What a named scalar's holds is compared with
|
|
7915
|
+
* through the file's dialect (TYPE_HOLDS_MISMATCH). EXACT grade only.
|
|
7916
|
+
*/
|
|
7917
|
+
aliasTypes?: Record<string, string>;
|
|
7918
|
+
/**
|
|
7919
|
+
* Module-scope mutable bindings (`let`/`var` at the top level of the file).
|
|
7920
|
+
* EXACT grade only. The static approximation of held state a logic
|
|
7921
|
+
* component may be hiding — fuel for the HIDDEN_STATE lint. (Mutation of
|
|
7922
|
+
* const-bound containers is invisible to this collection; the lint says so.)
|
|
7923
|
+
*/
|
|
7924
|
+
topLevelMutableBindings?: string[];
|
|
7925
|
+
/**
|
|
7926
|
+
* True when the file declared nothing of its own and only re-exported —
|
|
7927
|
+
* a pure re-export barrel, which has no code to claim. Measured BEFORE the
|
|
7928
|
+
* barrel chase folds the republished names into `declaredNames`, since
|
|
7929
|
+
* after it a barrel is indistinguishable from the files it publishes.
|
|
7930
|
+
* EXACT grade only: a weaker grade cannot tell a barrel from a file it
|
|
7931
|
+
* failed to parse, so it leaves this unset rather than guess.
|
|
7932
|
+
*/
|
|
7933
|
+
reexportOnly?: boolean;
|
|
7934
|
+
/**
|
|
7935
|
+
* Every call expression of the file as the TypeScript type checker resolved
|
|
7936
|
+
* it (see ResolvedCallFact), in source order. EXACT grade only, and only
|
|
7937
|
+
* where a compiler with a type checker was loaded. What the Portal
|
|
7938
|
+
* write-shortcut twin and the unnarrated-write check read first: the
|
|
7939
|
+
* checker follows every spelling of a receiver to the declaration, where
|
|
7940
|
+
* the shape facts follow the spellings they know.
|
|
7941
|
+
*/
|
|
7942
|
+
resolvedCalls?: ResolvedCallFact[];
|
|
7943
|
+
}
|
|
7944
|
+
/**
|
|
7945
|
+
* One place a call the type checker resolved can land in THIS project's code:
|
|
7946
|
+
* the file holding the declaration (or an implementor of it), the class,
|
|
7947
|
+
* interface or shape it is a member of, and the member's name. A declaration
|
|
7948
|
+
* in a dependency's typings or the language's own library is no target — it
|
|
7949
|
+
* is nobody's component.
|
|
7569
7950
|
*/
|
|
7570
|
-
|
|
7951
|
+
interface CallTargetFact {
|
|
7952
|
+
/** Canonical project-relative path of the file holding the declaration or implementor. */
|
|
7953
|
+
path: string;
|
|
7954
|
+
/** The class, interface or named shape the member belongs to; absent for a module-level function. */
|
|
7955
|
+
container?: string;
|
|
7956
|
+
/** The declared name of the method or function the call reaches. */
|
|
7957
|
+
member: string;
|
|
7958
|
+
/**
|
|
7959
|
+
* `declaration` when the checker named this declaration itself;
|
|
7960
|
+
* `implementor` when the declaration sits in an interface or type shape and
|
|
7961
|
+
* this is a class of the project that realizes it.
|
|
7962
|
+
*/
|
|
7963
|
+
via: 'declaration' | 'implementor';
|
|
7964
|
+
}
|
|
7571
7965
|
/**
|
|
7572
|
-
*
|
|
7573
|
-
*
|
|
7574
|
-
*
|
|
7575
|
-
*
|
|
7576
|
-
*
|
|
7577
|
-
*
|
|
7578
|
-
*
|
|
7579
|
-
* are never judged here: its gate judges them under its own configuration.
|
|
7966
|
+
* One call expression of a file as the TypeScript type checker resolved it:
|
|
7967
|
+
* what was invoked, how it was written, which body it sits in, and every
|
|
7968
|
+
* place in this project it can land. Where CallSiteFact records the SHAPE a
|
|
7969
|
+
* pure model can follow, this records the checker's answer — so a receiver
|
|
7970
|
+
* reached through an alias, a field chain, an element access, a destructured
|
|
7971
|
+
* method, a factory's result, a barrel or a port interface lands where the
|
|
7972
|
+
* checker says it lands, whatever its spelling.
|
|
7580
7973
|
*/
|
|
7581
|
-
|
|
7974
|
+
interface ResolvedCallFact {
|
|
7975
|
+
/** The invoked name: the declared member a target names, else the name as written. */
|
|
7976
|
+
name: string;
|
|
7977
|
+
/** The callee as written, whitespace-collapsed and shortened — what a finding quotes. */
|
|
7978
|
+
written: string;
|
|
7979
|
+
/** The innermost named function-like the call sits in; absent at module scope. */
|
|
7980
|
+
enclosing?: string;
|
|
7981
|
+
/** The top-level class or object literal whose member that function-like is, when it is one. */
|
|
7982
|
+
enclosingContainer?: string;
|
|
7983
|
+
/** Every place in this project's own code the call can land; empty for a call into a dependency or the language library. */
|
|
7984
|
+
targets: CallTargetFact[];
|
|
7985
|
+
/**
|
|
7986
|
+
* True when the call lands nowhere this analysis can name and the CODE made
|
|
7987
|
+
* it so: the checker resolved the callee to no declaration because its
|
|
7988
|
+
* receiver (or the callee itself) is typed any, unknown or not at all; or
|
|
7989
|
+
* the call reaches no declaration of this project because its member is
|
|
7990
|
+
* chosen by a computed key that names no single member, or its receiver is
|
|
7991
|
+
* cast to an index-signature type — neither a landing nor its absence means
|
|
7992
|
+
* anything.
|
|
7993
|
+
*/
|
|
7994
|
+
unresolved?: boolean;
|
|
7995
|
+
/**
|
|
7996
|
+
* For an unresolved call, where its receiver's ORIGINAL type lands — the
|
|
7997
|
+
* expression with every cast, assertion, non-null mark and parenthesis
|
|
7998
|
+
* taken off: each project class that type is, or that realizes the
|
|
7999
|
+
* interface or shape it is, as a target whose member is the call's name
|
|
8000
|
+
* (empty when a computed key names none). What tells a cast that hid a data
|
|
8001
|
+
* component from a receiver that never was one.
|
|
8002
|
+
*/
|
|
8003
|
+
receivers?: CallTargetFact[];
|
|
8004
|
+
/**
|
|
8005
|
+
* True when this is no call but a REFERENCE to a function or method of this
|
|
8006
|
+
* project the code takes as a value at this site — passes as an argument,
|
|
8007
|
+
* assigns, returns, binds, or hands to Reflect.apply — rather than invoking
|
|
8008
|
+
* it where it is written. A use all the same: what the reference lands on
|
|
8009
|
+
* can be invoked anywhere the value travels.
|
|
8010
|
+
*/
|
|
8011
|
+
reference?: boolean;
|
|
8012
|
+
}
|
|
8013
|
+
interface CodeModel {
|
|
8014
|
+
/** One facts entry per distinct resolved sourcePath (missing/escaped/unreadable included). */
|
|
8015
|
+
files: SourceFileFacts[];
|
|
8016
|
+
/** The root every sourcePath was resolved and containment-checked against. */
|
|
8017
|
+
projectRoot: string;
|
|
8018
|
+
/**
|
|
8019
|
+
* Every source file the declared source-root walk found, as canonical keys
|
|
8020
|
+
* in walk order — the domain the unclaimed-source rule judges. Empty when
|
|
8021
|
+
* the project declares no source roots, which is what keeps that rule
|
|
8022
|
+
* opt-in. Facts for these files live in `files`, like any other path.
|
|
8023
|
+
*/
|
|
8024
|
+
rootFiles: string[];
|
|
8025
|
+
/**
|
|
8026
|
+
* The package specifiers that name a package of THIS repository, each
|
|
8027
|
+
* mapped to the canonical source file it resolves to: the root package and
|
|
8028
|
+
* every workspace package the root package.json declares (never
|
|
8029
|
+
* node_modules), `name` for the main entry and `name/sub` for each plain
|
|
8030
|
+
* subpath export, build entries mapped back to their source through the
|
|
8031
|
+
* package's tsconfig outDir/rootDir. What lets a package import resolve like
|
|
8032
|
+
* a relative one; a third-party specifier is in no entry and resolves to
|
|
8033
|
+
* nothing. Absent or empty when the repository declares no packages.
|
|
8034
|
+
*/
|
|
8035
|
+
packages?: Record<string, string>;
|
|
8036
|
+
/**
|
|
8037
|
+
* The resolved calls of the project's own source files that no facts entry
|
|
8038
|
+
* holds but a resolved call or reference of the run reaches — a helper
|
|
8039
|
+
* module no spec names and no source-root walk found — keyed by canonical
|
|
8040
|
+
* path. What lets a rule read unowned code as part of whoever calls it.
|
|
8041
|
+
* Absent where no type checker was loaded.
|
|
8042
|
+
*/
|
|
8043
|
+
reachedCalls?: Record<string, ResolvedCallFact[]>;
|
|
8044
|
+
}
|
|
7582
8045
|
/**
|
|
7583
|
-
*
|
|
7584
|
-
*
|
|
7585
|
-
*
|
|
7586
|
-
* `wairon lock` and the hosting lock require: a draft tree can "pass" a normal
|
|
7587
|
-
* validate yet break the moment it is frozen, so lock must gate on this.
|
|
7588
|
-
*
|
|
7589
|
-
* The status flip lives inside validateProject (treatAllAsComplete) because
|
|
7590
|
-
* validation begins by invalidating the spec cache (clearLoaderIssues), which
|
|
7591
|
-
* would discard any objects mutated out here before the rules ever saw them —
|
|
7592
|
-
* exactly the silent degradation this wrapper previously suffered from.
|
|
8046
|
+
* code_model.pathKey — the canonical key form of a source path in the model:
|
|
8047
|
+
* forward slashes, no leading `./`. Every facts entry is stored under it, and
|
|
8048
|
+
* every lookup or path comparison uses it.
|
|
7593
8049
|
*/
|
|
7594
|
-
declare function
|
|
8050
|
+
declare function pathKey(sourcePath: string): string;
|
|
7595
8051
|
/**
|
|
7596
|
-
*
|
|
7597
|
-
*
|
|
7598
|
-
*
|
|
7599
|
-
*
|
|
7600
|
-
* this; the owner's gate is validateProject. It forwards to the family
|
|
7601
|
-
* validator, which keeps the owner's gate a pure function of one project.
|
|
8052
|
+
* code_model.factsFor — the facts entry for a source path, looked up by its
|
|
8053
|
+
* canonical key; undefined when the run analyzed no such path. The model holds
|
|
8054
|
+
* one entry per key; were it to hold two, the later one answers, as it does in
|
|
8055
|
+
* the keyed indexes the rules build over the same files.
|
|
7602
8056
|
*/
|
|
7603
|
-
declare function
|
|
8057
|
+
declare function factsFor(model: CodeModel, sourcePath: string): SourceFileFacts | undefined;
|
|
7604
8058
|
/**
|
|
7605
|
-
*
|
|
7606
|
-
*
|
|
7607
|
-
*
|
|
7608
|
-
* findings that differ between the current and the candidate configuration.
|
|
7609
|
-
* Writes nothing. Forwarded to the pack impact workflow.
|
|
8059
|
+
* source_file_facts.importBindingOf — the runtime import binding a file makes
|
|
8060
|
+
* under a local name, or undefined when the name is not an import of this
|
|
8061
|
+
* file (it is local, global, or bound type-only).
|
|
7610
8062
|
*/
|
|
7611
|
-
declare function
|
|
8063
|
+
declare function importBindingOf(facts: SourceFileFacts, name: string): ImportBindingFact | undefined;
|
|
7612
8064
|
/**
|
|
7613
|
-
*
|
|
7614
|
-
*
|
|
7615
|
-
*
|
|
8065
|
+
* source_file_facts.fieldTypesOf — the type names an instance field is
|
|
8066
|
+
* DECLARED with, or EMPTY when the file declares no such field, annotates it
|
|
8067
|
+
* with nothing, or was analyzed below exact grade. The empty answer is what
|
|
8068
|
+
* keeps an unresolvable field from becoming a guess.
|
|
7616
8069
|
*/
|
|
7617
|
-
declare function
|
|
8070
|
+
declare function fieldTypesOf(facts: SourceFileFacts, field: string): string[];
|
|
7618
8071
|
/**
|
|
7619
|
-
*
|
|
7620
|
-
*
|
|
7621
|
-
*
|
|
7622
|
-
*
|
|
8072
|
+
* source_file_facts.localTypesOf — the type names a locally bound name is
|
|
8073
|
+
* DECLARED with, or EMPTY when the file binds no such name, annotates it with
|
|
8074
|
+
* nothing, or was analyzed below exact grade. The empty answer is what keeps
|
|
8075
|
+
* an unannotated receiver from becoming a guess, exactly as it does for a
|
|
8076
|
+
* field.
|
|
7623
8077
|
*/
|
|
7624
|
-
declare function
|
|
8078
|
+
declare function localTypesOf(facts: SourceFileFacts, name: string): string[];
|
|
7625
8079
|
/**
|
|
7626
|
-
*
|
|
7627
|
-
*
|
|
7628
|
-
*
|
|
8080
|
+
* source_file_facts.memberTypesOf — the type names a property of a named
|
|
8081
|
+
* shape this file declares is DECLARED with, or EMPTY when the file declares
|
|
8082
|
+
* no such shape or property, annotates it with nothing, or was analyzed below
|
|
8083
|
+
* exact grade. The empty answer keeps an unresolvable link of a receiver
|
|
8084
|
+
* chain from becoming a guess.
|
|
7629
8085
|
*/
|
|
7630
|
-
declare function
|
|
8086
|
+
declare function memberTypesOf(facts: SourceFileFacts, shape: string, property: string): string[];
|
|
7631
8087
|
/**
|
|
7632
|
-
*
|
|
7633
|
-
*
|
|
7634
|
-
*
|
|
7635
|
-
* `composition`, and each direct member's composition subject — read from the
|
|
7636
|
-
* member's own lock record, never recomputed and never its specs. So a
|
|
7637
|
-
* parent's identity costs its own tree plus one lock file per direct member,
|
|
7638
|
-
* and a lock taken at a member's own root and one taken inside its family
|
|
7639
|
-
* record the same identity. The validator computes it because the doctrine it
|
|
7640
|
-
* covers is the validator's own rule set; core only compares a lock against
|
|
7641
|
-
* the identity its caller passes (readLockState).
|
|
8088
|
+
* source_file_facts.aliasTargetOf — the type a type alias this file declares
|
|
8089
|
+
* names outright, or undefined when the name is no such alias or its right
|
|
8090
|
+
* side names no single type.
|
|
7642
8091
|
*/
|
|
7643
|
-
declare function
|
|
8092
|
+
declare function aliasTargetOf(facts: SourceFileFacts, name: string): string | undefined;
|
|
7644
8093
|
/**
|
|
7645
|
-
*
|
|
7646
|
-
*
|
|
7647
|
-
*
|
|
7648
|
-
*
|
|
7649
|
-
* so they cannot disagree. Writes nothing; a hosted caller gates on reach
|
|
7650
|
-
* itself before asking about a family.
|
|
8094
|
+
* source_file_facts.typeBindingOf — the module specifier a NAME was imported
|
|
8095
|
+
* from, whether the import was type-only or a runtime one, since a declared
|
|
8096
|
+
* type may be spelled either way. Undefined when the file imports no such
|
|
8097
|
+
* name, which leaves the name local, global or ambient.
|
|
7651
8098
|
*/
|
|
7652
|
-
declare function
|
|
8099
|
+
declare function typeBindingOf(facts: SourceFileFacts, name: string): string | undefined;
|
|
7653
8100
|
/**
|
|
7654
|
-
*
|
|
7655
|
-
*
|
|
7656
|
-
*
|
|
7657
|
-
*
|
|
8101
|
+
* source_file_facts.callSitesOf — the call sites written inside one named
|
|
8102
|
+
* function-like, or undefined when the file holds no BODY under that name.
|
|
8103
|
+
* The two answers are different findings and must never be collapsed: an
|
|
8104
|
+
* empty array is a body that calls nothing, undefined is nothing to read.
|
|
7658
8105
|
*/
|
|
7659
|
-
declare function
|
|
7660
|
-
|
|
7661
|
-
|
|
7662
|
-
|
|
8106
|
+
declare function callSitesOf(facts: SourceFileFacts, fn: string): CallSiteFact[] | undefined;
|
|
8107
|
+
/** The bodies one name resolved to, and an identity a walk can de-duplicate on. */
|
|
8108
|
+
interface ResolvedBody {
|
|
8109
|
+
/** `<container>.<name>` for a member, `<name>` for the module binding, `*<name>` for the union. */
|
|
8110
|
+
key: string;
|
|
8111
|
+
sites: CallSiteFact[];
|
|
8112
|
+
}
|
|
7663
8113
|
/**
|
|
7664
|
-
*
|
|
7665
|
-
*
|
|
7666
|
-
*
|
|
7667
|
-
* the machine's own config. Recording the source keeps the record honest about
|
|
7668
|
-
* how much it proves instead of leaving a bare name to imply more than it can.
|
|
8114
|
+
* source_file_facts.bodySitesOf — the call sites of the ONE body a name
|
|
8115
|
+
* means, told apart from its same-named neighbours by where each is bound;
|
|
8116
|
+
* undefined when the file holds no body under the name.
|
|
7669
8117
|
*
|
|
7670
|
-
*
|
|
7671
|
-
*
|
|
7672
|
-
*
|
|
8118
|
+
* `container` and `member` are what the reference says about its owner:
|
|
8119
|
+
* `container` is an anchor's `exportedVia` handle or a call's plain-identifier
|
|
8120
|
+
* receiver, and `member` says the reference was written through a receiver at
|
|
8121
|
+
* all. Only the code
|
|
8122
|
+
* settles which body a name means, and where it does not this answers what
|
|
8123
|
+
* the name-keyed union always answered — never a guess:
|
|
8124
|
+
*
|
|
8125
|
+
* - with a container the file binds bodies of this name under, those bodies;
|
|
8126
|
+
* - else a BARE reference (an anchor's symbol, a bare call) means the
|
|
8127
|
+
* module-scope bodies, when the name has some and NO nested one: a bare
|
|
8128
|
+
* name in the module's scope binds the top-level declaration, a member is
|
|
8129
|
+
* reachable only through its container, and a nested body could shadow
|
|
8130
|
+
* the name where it sits;
|
|
8131
|
+
* - else every body under the name, unioned, as callSitesOf answers — a
|
|
8132
|
+
* receiver the file binds no container to holds a value the model cannot
|
|
8133
|
+
* follow, so which body it reaches is not this model's to say.
|
|
7673
8134
|
*/
|
|
7674
|
-
|
|
7675
|
-
/** Git author line, hosted subject id, or OS username — per `source`. */
|
|
7676
|
-
id: string;
|
|
7677
|
-
/** Display name when the source carries one separately from the id. */
|
|
7678
|
-
name?: string;
|
|
7679
|
-
/** 'legacy' is a record written before this field existed: an opaque string. */
|
|
7680
|
-
source: ApproverSource;
|
|
7681
|
-
}
|
|
7682
|
-
/** Weakest-first order of the analysis grades; `none` when no file was analyzed. */
|
|
7683
|
-
type AnalysisGradeLabel = 'exact' | 'pattern' | 'generic' | 'none';
|
|
8135
|
+
declare function bodySitesOf(facts: SourceFileFacts, fn: string, container?: string, member?: boolean): ResolvedBody | undefined;
|
|
7684
8136
|
/**
|
|
7685
|
-
*
|
|
7686
|
-
*
|
|
7687
|
-
*
|
|
8137
|
+
* source_file_facts.hasFunctionBody — whether the file holds a function-like
|
|
8138
|
+
* BODY under a name, as the model measured it: a function, method or accessor
|
|
8139
|
+
* declaration, or a function/arrow initializer bound to a named slot. A name
|
|
8140
|
+
* the file declares WITHOUT one — an overload signature, an ambient
|
|
8141
|
+
* declaration, an interface or type member, a plain value binding, an import
|
|
8142
|
+
* binding, a re-export specifier — answers false, because there is no body
|
|
8143
|
+
* there to read.
|
|
8144
|
+
*
|
|
8145
|
+
* Only exact grade measures bodies at all, so a file analyzed below it always
|
|
8146
|
+
* answers false; a caller that would ACCUSE on the answer must check the grade
|
|
8147
|
+
* itself rather than read "no body" into "not measured".
|
|
7688
8148
|
*/
|
|
7689
|
-
|
|
7690
|
-
/** The wairon version that ran the analysis. */
|
|
7691
|
-
validatorVersion: string;
|
|
7692
|
-
/** sha256 (hex) of the code-conformance doctrine (gate_identity.analyzer). */
|
|
7693
|
-
doctrineDigest: string;
|
|
7694
|
-
/** The weakest analysis grade applied to any analyzed file, or `none`. */
|
|
7695
|
-
grade: AnalysisGradeLabel;
|
|
7696
|
-
}
|
|
8149
|
+
declare function hasFunctionBody(facts: SourceFileFacts, symbol: string): boolean;
|
|
7697
8150
|
/**
|
|
7698
|
-
*
|
|
7699
|
-
*
|
|
7700
|
-
*
|
|
8151
|
+
* The language a source file is analyzed as, read from its extension; undefined
|
|
8152
|
+
* for a file no analyzer reads. The one table the analyzer and the implementer
|
|
8153
|
+
* briefs share, so a brief's type mapping is the dialect its code is judged by.
|
|
7701
8154
|
*/
|
|
7702
|
-
|
|
7703
|
-
analyzer: AnalyzerIdentity;
|
|
7704
|
-
/** Every code a code-judging rule declares, sorted. Absent on a lock record. */
|
|
7705
|
-
codes?: string[];
|
|
7706
|
-
errors: number;
|
|
7707
|
-
warnings: number;
|
|
7708
|
-
notices: number;
|
|
7709
|
-
}
|
|
8155
|
+
declare function languageOfSourcePath(sourcePath: string): string | undefined;
|
|
7710
8156
|
/**
|
|
7711
|
-
*
|
|
7712
|
-
*
|
|
7713
|
-
*
|
|
7714
|
-
*
|
|
7715
|
-
*
|
|
7716
|
-
* moves it.
|
|
8157
|
+
* source_file_facts.dialect — the type dialect shipped for the language this
|
|
8158
|
+
* file was analyzed as (type_dialect.forLanguage of its effective language),
|
|
8159
|
+
* or null when the file has no language or no dialect reads it yet. What a
|
|
8160
|
+
* conformance rule reads this file's type annotations through; a null answer
|
|
8161
|
+
* is silence, never a finding.
|
|
7717
8162
|
*/
|
|
7718
|
-
|
|
8163
|
+
declare function dialectOf(facts: SourceFileFacts): TypeDialect | null;
|
|
7719
8164
|
/**
|
|
7720
|
-
*
|
|
7721
|
-
*
|
|
7722
|
-
*
|
|
7723
|
-
* human re-approving it. Who approved and when stay the human's.
|
|
8165
|
+
* The type name a named function-like returns, where the code settles it
|
|
8166
|
+
* (SourceFileFacts.returnTypes); undefined otherwise — the silence a
|
|
8167
|
+
* `fn().method()` receiver keeps when the code does not say what fn returns.
|
|
7724
8168
|
*/
|
|
7725
|
-
|
|
7726
|
-
/** ISO-8601 time of the re-expression. */
|
|
7727
|
-
at: string;
|
|
7728
|
-
/** The gate algorithm the record carried before. */
|
|
7729
|
-
fromAlgorithm: string;
|
|
7730
|
-
/** The per-spec digest reading the record carried before. */
|
|
7731
|
-
fromReading: SpecDigestReading;
|
|
7732
|
-
/** The command that re-expressed it (e.g. `wairon doctor --fix`), never a person. */
|
|
7733
|
-
by: string;
|
|
7734
|
-
}
|
|
7735
|
-
/** A project's approval state as seen from its own root. */
|
|
7736
|
-
type ProjectApprovalState = 'approved' | 'drifted' | 'never';
|
|
7737
|
-
/** How a parent's lock pinned a member. */
|
|
7738
|
-
type PinState = 'matches' | 'moved' | 'unpinned';
|
|
8169
|
+
declare function returnTypeOf(facts: SourceFileFacts, fn: string): string | undefined;
|
|
7739
8170
|
/**
|
|
7740
|
-
*
|
|
7741
|
-
*
|
|
7742
|
-
*
|
|
8171
|
+
* source_file_facts.resolveImport — resolve one of a file's import specifiers
|
|
8172
|
+
* against a set of known source paths, purely (no I/O). A relative one: join
|
|
8173
|
+
* it with the importing file's directory, then try the joined path, `.js`
|
|
8174
|
+
* swapped for `.ts` or `.tsx`, the `.ts`, `.tsx` and `.js` extensions, and an
|
|
8175
|
+
* index file. A package specifier: the source file `packages` (the code
|
|
8176
|
+
* model's local-package map) names for it, when that file is known.
|
|
8177
|
+
* Undefined for a package the map does not name — a third-party one — or
|
|
8178
|
+
* when nothing matches.
|
|
7743
8179
|
*/
|
|
7744
|
-
|
|
7745
|
-
/** '' for the root the question was asked at, else the member's key. */
|
|
7746
|
-
key: string;
|
|
7747
|
-
/** The alias the parent declares this member under; absent on the root. */
|
|
7748
|
-
alias?: string;
|
|
7749
|
-
/** The key of the declaring project; absent on the root. */
|
|
7750
|
-
parent?: string;
|
|
7751
|
-
/** The project's effective id, when it has a usable one. */
|
|
7752
|
-
projectId?: string;
|
|
7753
|
-
state: ProjectApprovalState;
|
|
7754
|
-
/** Its composition subject: its own record's stateId, `<algorithm>:<digest>`. Absent when never. */
|
|
7755
|
-
subject?: string;
|
|
7756
|
-
/** Drifted only because the lock predates the stage-5 gate identity. */
|
|
7757
|
-
upgraded?: boolean;
|
|
7758
|
-
/**
|
|
7759
|
-
* Why the approval on record does not cover the project although its gate
|
|
7760
|
-
* identity may match: its id moved since the approval, or a declared
|
|
7761
|
-
* external was never pinned or is used beyond its pin. Set only on a
|
|
7762
|
-
* drifted entry; status, lock-check and lock read the same entry.
|
|
7763
|
-
*/
|
|
7764
|
-
owed?: string;
|
|
7765
|
-
/** How the parent's lock pinned it; absent on the root. */
|
|
7766
|
-
pinned?: PinState;
|
|
7767
|
-
/** part | project (stage 8). A part's state is its declaring project's, and it has no subject of its own. */
|
|
7768
|
-
as?: MemberKind;
|
|
7769
|
-
/** A part's content digest (ScannedPart.contentDigest), recorded by the lock as its MemberPin. */
|
|
7770
|
-
contentDigest?: string;
|
|
7771
|
-
/** The commit a part or a referenced project member was read at, when known — provenance the lock records. */
|
|
7772
|
-
commit?: string;
|
|
7773
|
-
}
|
|
8180
|
+
declare function resolveImport(fromFile: string, specifier: string, knownPaths: Set<string>, packages?: Readonly<Record<string, string>>): string | undefined;
|
|
7774
8181
|
|
|
7775
8182
|
/**
|
|
7776
|
-
*
|
|
7777
|
-
*
|
|
7778
|
-
*
|
|
7779
|
-
*
|
|
8183
|
+
* The tests that encode one method a write just changed or deleted
|
|
8184
|
+
* (tests_to_revisit).
|
|
8185
|
+
*
|
|
8186
|
+
* Two lists rather than one because the two ways of finding them fail in
|
|
8187
|
+
* OPPOSITE directions, and merging them would hide which is which — see the
|
|
8188
|
+
* measurement above.
|
|
7780
8189
|
*/
|
|
7781
|
-
interface
|
|
7782
|
-
/** The
|
|
7783
|
-
|
|
7784
|
-
/** The
|
|
7785
|
-
|
|
7786
|
-
/**
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
8190
|
+
interface TestsToRevisit {
|
|
8191
|
+
/** The contract method the write changed or deleted. */
|
|
8192
|
+
method: string;
|
|
8193
|
+
/** The code-level name searched for: the method's `symbol` when it declares one, else its name. */
|
|
8194
|
+
symbol: string;
|
|
8195
|
+
/**
|
|
8196
|
+
* Test files that IMPORT that symbol — from the method's own source file, or
|
|
8197
|
+
* from a module re-exporting it from there, when that file is known. The
|
|
8198
|
+
* high-confidence list.
|
|
8199
|
+
*/
|
|
8200
|
+
imported: string[];
|
|
8201
|
+
/**
|
|
8202
|
+
* Test files that name the symbol without importing it — usually a test
|
|
8203
|
+
* driving the method through a portal or a helper. A file that binds the
|
|
8204
|
+
* name to ANOTHER module is not here: the name in it is that module's.
|
|
8205
|
+
* Empty when `indiscriminate` is true.
|
|
8206
|
+
*/
|
|
8207
|
+
mentioned: string[];
|
|
8208
|
+
/**
|
|
8209
|
+
* True when the bare name matched more than a tenth of the walked test files,
|
|
8210
|
+
* so mentioning it carries no signal and `mentioned` was withheld.
|
|
8211
|
+
*/
|
|
8212
|
+
indiscriminate: boolean;
|
|
8213
|
+
}
|
|
8214
|
+
|
|
8215
|
+
/**
|
|
8216
|
+
* ispec_validator/ivalidator_portal.findTestsReferencing — the tests that
|
|
8217
|
+
* encode a given set of methods, so a write that changes or deletes one can
|
|
8218
|
+
* say which tests it just invalidated.
|
|
8219
|
+
*
|
|
8220
|
+
* The walk itself belongs to the source analyzer, which already owns this
|
|
8221
|
+
* subsystem's only source-code I/O and the containment rules a root is held
|
|
8222
|
+
* to. A project that declares no test roots answers empty rather than
|
|
8223
|
+
* throwing: naming the tests must never be the thing that fails a write.
|
|
8224
|
+
*/
|
|
8225
|
+
declare function findTestsReferencing(methods: ReadonlyArray<Pick<MethodImplementation, 'name' | 'symbol'>>, projectRoot: string, testRoots: readonly string[]): TestsToRevisit[];
|
|
8226
|
+
interface ValidationIssue {
|
|
8227
|
+
/**
|
|
8228
|
+
* After project and profile overrides. A `notice` is reported like any other
|
|
8229
|
+
* finding but never makes a result invalid (`valid` counts errors only) and
|
|
8230
|
+
* never fails `--ci`.
|
|
8231
|
+
*/
|
|
8232
|
+
severity: IssueSeverity;
|
|
8233
|
+
code: string;
|
|
8234
|
+
message: string;
|
|
8235
|
+
/** Optional: agent id related to the issue */
|
|
8236
|
+
agentId?: string;
|
|
8237
|
+
specId?: string;
|
|
8238
|
+
/**
|
|
8239
|
+
* True when this issue was raised in a draft/design context — i.e. the spec
|
|
8240
|
+
* it concerns (or an ancestor) is not yet complete. Rules that already know
|
|
8241
|
+
* this (e.g. DRAFT_COMPONENT_WARNING, UNUSED_COMPONENT on a draft component)
|
|
8242
|
+
* surface it so downstream policy — like the --ci gate — can waive warnings
|
|
8243
|
+
* that merely reflect declared, unfinished work without silencing the rule.
|
|
8244
|
+
*/
|
|
8245
|
+
draftContext?: boolean;
|
|
8246
|
+
/**
|
|
8247
|
+
* On a finding about a cross-project reference: how the owner's gate
|
|
8248
|
+
* resolved it (outcome, owner, call site, canonical target, input digest,
|
|
8249
|
+
* reason), decided before the severity.
|
|
8250
|
+
*/
|
|
8251
|
+
resolution?: ReferenceResolution;
|
|
8252
|
+
/**
|
|
8253
|
+
* In a family run: the key of the project whose gate (or whose external,
|
|
8254
|
+
* for a composition finding) the finding belongs to — '' for the family
|
|
8255
|
+
* root. Absent on the owner's own run.
|
|
8256
|
+
*/
|
|
8257
|
+
project?: string;
|
|
8258
|
+
/**
|
|
8259
|
+
* True on a finding reported beside a gate rather than by it — the live
|
|
8260
|
+
* comparison of an external with its producer (family_validator.advise).
|
|
8261
|
+
* Printed and counted with its severity, but never part of a failure
|
|
8262
|
+
* decision: `valid` and `validate --ci` both ignore it, because the pin is
|
|
8263
|
+
* the reproducible gate and a live producer is not.
|
|
8264
|
+
*/
|
|
8265
|
+
advisory?: boolean;
|
|
8266
|
+
}
|
|
8267
|
+
interface ValidationResult {
|
|
8268
|
+
valid: boolean;
|
|
8269
|
+
issues: ValidationIssue[];
|
|
8270
|
+
/**
|
|
8271
|
+
* One line, never a finding. The owner's gate: present when the project
|
|
8272
|
+
* declares externals, saying they were judged against their pins and the
|
|
8273
|
+
* advisory live comparison reads their live producers. A family run: present when externals were left out
|
|
8274
|
+
* because their producers lie outside the run's reach.
|
|
8275
|
+
*/
|
|
8276
|
+
hint?: string;
|
|
8277
|
+
/**
|
|
8278
|
+
* A family run only: one line per selected project (the root first, then its
|
|
8279
|
+
* members in scan order) with its own gate's totals. Absent on the owner's
|
|
8280
|
+
* gate.
|
|
8281
|
+
*/
|
|
8282
|
+
projects?: ProjectVerdict[];
|
|
8283
|
+
/**
|
|
8284
|
+
* The as-complete run only (validateAsComplete): the code-conformance half
|
|
8285
|
+
* summarized with the analyzer that produced it. Absent on the owner's gate
|
|
8286
|
+
* and on a family run.
|
|
8287
|
+
*/
|
|
8288
|
+
analysis?: CodeAnalysis;
|
|
8289
|
+
/**
|
|
8290
|
+
* One line, never a finding: how the owner's gate read the code — the
|
|
8291
|
+
* weakest grade any file was read at and, at exact grade, the compiler and
|
|
8292
|
+
* whose copy it is; or that no source file the design names exists yet.
|
|
8293
|
+
* `wairon validate` prints it; sdd_validate_tree carries it in its hint.
|
|
8294
|
+
*/
|
|
8295
|
+
codeReading?: string;
|
|
8296
|
+
/**
|
|
8297
|
+
* A family run only: the aliases of the bound project's externals the run
|
|
8298
|
+
* composed as part of its gate (their producers in reach) — the advisory
|
|
8299
|
+
* live comparison skips them, so they get no second word.
|
|
8300
|
+
*/
|
|
8301
|
+
composed?: string[];
|
|
8302
|
+
}
|
|
8303
|
+
/**
|
|
8304
|
+
* project_verdict — one project's line in a family run: which project it is,
|
|
8305
|
+
* where it lives, and the totals of its own gate's verdict, which the family
|
|
8306
|
+
* run carries verbatim under the project's key.
|
|
8307
|
+
*/
|
|
8308
|
+
interface ProjectVerdict {
|
|
8309
|
+
/** The project's key in the family root's scan ('' for the root itself). */
|
|
8310
|
+
key: string;
|
|
8311
|
+
/** The project's effective id. */
|
|
8312
|
+
id?: string;
|
|
8313
|
+
/** The project's root directory. */
|
|
8314
|
+
directory: string;
|
|
8315
|
+
/** Whether its own gate found no error. */
|
|
8316
|
+
valid: boolean;
|
|
8317
|
+
errors: number;
|
|
8318
|
+
warnings: number;
|
|
8319
|
+
notices: number;
|
|
8320
|
+
}
|
|
8321
|
+
declare function validateRegistry(registry: Registry, rules: RulesConfig): ValidationResult;
|
|
8322
|
+
declare function validateProjectConfig(config: ProjectConfig): ValidationResult;
|
|
8323
|
+
interface ValidationOptions {
|
|
8324
|
+
rules?: RulesConfig;
|
|
8325
|
+
projectType?: string;
|
|
8326
|
+
scopeSubsystem?: string;
|
|
8327
|
+
/**
|
|
8328
|
+
* At a project that declares members: how many member levels the run
|
|
8329
|
+
* reaches. Absent, every level (the family run); 0, the owner's gate alone;
|
|
8330
|
+
* n, the family run selecting that many levels.
|
|
8331
|
+
*/
|
|
8332
|
+
memberDepth?: number;
|
|
8333
|
+
/**
|
|
8334
|
+
* Pre-loaded extension packs (the programmatic-wrapper path). When omitted,
|
|
8335
|
+
* the packs declared in the project's own config are loaded — so CLI and
|
|
8336
|
+
* MCP callers get pack rules/profiles/languages without passing anything.
|
|
8337
|
+
*/
|
|
8338
|
+
extensions?: LoadedExtensions;
|
|
8339
|
+
/**
|
|
8340
|
+
* Validate at FULL strictness: treat every spec as `complete`, so the
|
|
8341
|
+
* completeness rules that relax to warnings while draft/design apply as
|
|
8342
|
+
* errors. This is the as-complete gate behind `wairon lock`. The flip must
|
|
8343
|
+
* happen INSIDE the validation run — clearLoaderIssues() invalidates the
|
|
8344
|
+
* spec cache, so any status mutation done before calling in is lost to the
|
|
8345
|
+
* rescan (statuses are restored before returning, so the flip is never
|
|
8346
|
+
* observable to later callers).
|
|
8347
|
+
*/
|
|
8348
|
+
treatAllAsComplete?: boolean;
|
|
8349
|
+
/**
|
|
8350
|
+
* Ask for the family run explicitly (`validate --family`, MCP `family:
|
|
8351
|
+
* true`). Omitted, a project that declares members runs its family and any
|
|
8352
|
+
* other project runs its owner's gate (validation_options.selectsFamily).
|
|
8353
|
+
*/
|
|
8354
|
+
family?: boolean;
|
|
8355
|
+
/**
|
|
8356
|
+
* The by-name pack selections the pack rules judge. Omitted, the project's
|
|
8357
|
+
* own stored selections are read. Given only by a dry run that judges a
|
|
8358
|
+
* candidate configuration it has not written (pack_impact.measure), together
|
|
8359
|
+
* with that candidate's rules, projectType and loaded extensions.
|
|
8360
|
+
*/
|
|
8361
|
+
packSelections?: PackSelection[];
|
|
8362
|
+
}
|
|
8363
|
+
/**
|
|
8364
|
+
* The active conformance rule set — the built-in rules plus the loaded
|
|
8365
|
+
* programmatic pack rules, in run order — for `wairon rules list`. Loads and
|
|
8366
|
+
* registers the governing packs, then reads the composed sequence.
|
|
8367
|
+
*/
|
|
8368
|
+
declare function listRules(): SddRule[];
|
|
8369
|
+
/**
|
|
8370
|
+
* ispec_validator/ivalidator_portal.validateProject — the owner's gate (stage
|
|
8371
|
+
* 4): judge the bound project from its own files alone — its specs, its
|
|
8372
|
+
* configuration and doctrine, its code, its lock, its externals lock and
|
|
8373
|
+
* pinned snapshots, and the export tables of the members it contains — and
|
|
8374
|
+
* nothing else. It never walks up to a parent, never reads a sibling's live
|
|
8375
|
+
* tree and discovers nothing, so a project's verdict is the same from every
|
|
8376
|
+
* root and with or without its family on disk. A contained member's own specs
|
|
8377
|
+
* are never judged here: its gate judges them under its own configuration.
|
|
8378
|
+
*/
|
|
8379
|
+
declare function validateProject(rulesOrOptions?: RulesConfig | ValidationOptions, projectType?: string): ValidationResult;
|
|
8380
|
+
/**
|
|
8381
|
+
* Validate the tree at FULL strictness — treating every spec as `complete`, so
|
|
8382
|
+
* the completeness rules that relax to warnings while draft/design apply as
|
|
8383
|
+
* errors — WITHOUT mutating anything on disk. This is the as-complete gate that
|
|
8384
|
+
* `wairon lock` and the hosting lock require: a draft tree can "pass" a normal
|
|
8385
|
+
* validate yet break the moment it is frozen, so lock must gate on this.
|
|
8386
|
+
*
|
|
8387
|
+
* The status flip lives inside validateProject (treatAllAsComplete) because
|
|
8388
|
+
* validation begins by invalidating the spec cache (clearLoaderIssues), which
|
|
8389
|
+
* would discard any objects mutated out here before the rules ever saw them —
|
|
8390
|
+
* exactly the silent degradation this wrapper previously suffered from.
|
|
8391
|
+
*/
|
|
8392
|
+
declare function validateAsComplete(options?: ValidationOptions): ValidationResult;
|
|
8393
|
+
/**
|
|
8394
|
+
* ivalidator_portal.validateFamily — the family run: every selected project's
|
|
8395
|
+
* own gate verbatim under its project key, the composition of each project's
|
|
8396
|
+
* externals against their live producers, and the family checks. `wairon
|
|
8397
|
+
* validate` at a project that declares members, and `--family` anywhere, call
|
|
8398
|
+
* this; the owner's gate is validateProject. It forwards to the family
|
|
8399
|
+
* validator, which keeps the owner's gate a pure function of one project.
|
|
8400
|
+
*/
|
|
8401
|
+
declare function validateFamily(options: ValidationOptions): ValidationResult;
|
|
8402
|
+
/**
|
|
8403
|
+
* ivalidator_portal.measurePackImpact — what one pack write would change on
|
|
8404
|
+
* the bound project, measured before it happens: the pack's doctrine against
|
|
8405
|
+
* wairon's defaults, the profiles of it that would govern, and the owner's-gate
|
|
8406
|
+
* findings that differ between the current and the candidate configuration.
|
|
8407
|
+
* Writes nothing. Forwarded to the pack impact workflow.
|
|
8408
|
+
*/
|
|
8409
|
+
declare function measurePackImpact(candidate: PackCandidate): PackImpact;
|
|
8410
|
+
/**
|
|
8411
|
+
* ivalidator_portal.measurePackDoctrine — what one pack changes against
|
|
8412
|
+
* wairon's defaults, with no project to validate. Writes nothing. Forwarded to
|
|
8413
|
+
* the pack impact workflow.
|
|
8414
|
+
*/
|
|
8415
|
+
declare function measurePackDoctrine(manifest: ExtensionPack): PackDoctrine;
|
|
8416
|
+
/**
|
|
8417
|
+
* ispec_validator/ivalidator_portal.builtinProfileIds — the ids of wairon's
|
|
8418
|
+
* built-in architectural profiles: the built-in half of the profiles a
|
|
8419
|
+
* projectType may name. A copy of the rule set's own constant, so a caller can
|
|
8420
|
+
* never mutate it.
|
|
8421
|
+
*/
|
|
8422
|
+
declare function builtinProfileIds(): string[];
|
|
8423
|
+
/**
|
|
8424
|
+
* ispec_validator/ivalidator_portal.builtinProjectKinds — the built-in
|
|
8425
|
+
* composite project kinds: legal projectType values that are not
|
|
8426
|
+
* architectural profiles and carry no doctrine of their own.
|
|
8427
|
+
*/
|
|
8428
|
+
declare function builtinProjectKinds(): string[];
|
|
8429
|
+
/**
|
|
8430
|
+
* The gate identity a lock records and every staleness check compares
|
|
8431
|
+
* (ispec_validator/ivalidator_portal.computeGateStateId): the project's OWN
|
|
8432
|
+
* DESIGN identity (code linkage and timestamps out), the design doctrine, its own consumed contract inputs, its
|
|
8433
|
+
* `composition`, and each direct member's composition subject — read from the
|
|
8434
|
+
* member's own lock record, never recomputed and never its specs. So a
|
|
8435
|
+
* parent's identity costs its own tree plus one lock file per direct member,
|
|
8436
|
+
* and a lock taken at a member's own root and one taken inside its family
|
|
8437
|
+
* record the same identity. The validator computes it because the doctrine it
|
|
8438
|
+
* covers is the validator's own rule set; core only compares a lock against
|
|
8439
|
+
* the identity its caller passes (readLockState).
|
|
8440
|
+
*/
|
|
8441
|
+
declare function computeGateStateId(): StateId;
|
|
8442
|
+
/**
|
|
8443
|
+
* ivalidator_portal.familyApprovals — the bound project's pin tree: its own
|
|
8444
|
+
* approval state and each member's within `depth` levels, each computed at the
|
|
8445
|
+
* member's own root, with each member's subject and how its parent pinned it.
|
|
8446
|
+
* The one source the lock workflow, `wairon status` and sdd_get_status read,
|
|
8447
|
+
* so they cannot disagree. Writes nothing; a hosted caller gates on reach
|
|
8448
|
+
* itself before asking about a family.
|
|
8449
|
+
*/
|
|
8450
|
+
declare function familyApprovals(depth?: number): ProjectApproval[];
|
|
8451
|
+
/**
|
|
8452
|
+
* ivalidator_portal.familyRelations — the bound family's relation health: each
|
|
8453
|
+
* project's externals status read at its own root, stamped with when, a project
|
|
8454
|
+
* that could not be opened answered with its reason. What the canvas colours
|
|
8455
|
+
* its consumption edges from. Writes nothing; callers grant the reach first.
|
|
8456
|
+
*/
|
|
8457
|
+
declare function familyRelations(): ProjectRelations[];
|
|
8458
|
+
|
|
8459
|
+
/** How an approver's identity was established. */
|
|
8460
|
+
type ApproverSource = 'git' | 'hosted' | 'os' | 'legacy';
|
|
8461
|
+
/**
|
|
8462
|
+
* Who approved, and HOW that identity was established — because the two are
|
|
8463
|
+
* different claims. A `hosted` identity was authenticated by the instance that
|
|
8464
|
+
* issued the caller's credential; `git` and `os` are self-declared, read from
|
|
8465
|
+
* the machine's own config. Recording the source keeps the record honest about
|
|
8466
|
+
* how much it proves instead of leaving a bare name to imply more than it can.
|
|
8467
|
+
*
|
|
8468
|
+
* The actual proof is the commit that introduces the lock record — signed
|
|
8469
|
+
* commits or a protected branch establish it; no field inside the file ever
|
|
8470
|
+
* can.
|
|
8471
|
+
*/
|
|
8472
|
+
interface ApproverIdentity {
|
|
8473
|
+
/** Git author line, hosted subject id, or OS username — per `source`. */
|
|
8474
|
+
id: string;
|
|
8475
|
+
/** Display name when the source carries one separately from the id. */
|
|
8476
|
+
name?: string;
|
|
8477
|
+
/** 'legacy' is a record written before this field existed: an opaque string. */
|
|
8478
|
+
source: ApproverSource;
|
|
8479
|
+
}
|
|
8480
|
+
/** Weakest-first order of the analysis grades; `none` when no file was analyzed. */
|
|
8481
|
+
type AnalysisGradeLabel = 'exact' | 'pattern' | 'generic' | 'none';
|
|
8482
|
+
/**
|
|
8483
|
+
* analyzer_identity — which code analyzer produced a set of code-conformance
|
|
8484
|
+
* results. Deliberately NOT an input of the gate identity: an analyzer upgrade
|
|
8485
|
+
* changes this and never stales a lock.
|
|
8486
|
+
*/
|
|
8487
|
+
interface AnalyzerIdentity {
|
|
8488
|
+
/** The wairon version that ran the analysis. */
|
|
8489
|
+
validatorVersion: string;
|
|
8490
|
+
/** sha256 (hex) of the code-conformance doctrine (gate_identity.analyzer). */
|
|
8491
|
+
doctrineDigest: string;
|
|
8492
|
+
/** The weakest analysis grade applied to any analyzed file, or `none`. */
|
|
8493
|
+
grade: AnalysisGradeLabel;
|
|
8494
|
+
}
|
|
8495
|
+
/**
|
|
8496
|
+
* code_analysis — the code-conformance half of a validation run, summarized
|
|
8497
|
+
* apart from the design half. A lock records it as `code`, beside the claim
|
|
8498
|
+
* and never inside it; its `codes` list is left out there.
|
|
8499
|
+
*/
|
|
8500
|
+
interface CodeAnalysis {
|
|
8501
|
+
analyzer: AnalyzerIdentity;
|
|
8502
|
+
/** Every code a code-judging rule declares, sorted. Absent on a lock record. */
|
|
8503
|
+
codes?: string[];
|
|
8504
|
+
errors: number;
|
|
8505
|
+
warnings: number;
|
|
8506
|
+
notices: number;
|
|
8507
|
+
}
|
|
8508
|
+
/**
|
|
8509
|
+
* spec_digest_reading — which reading of a spec file a lock record's per-spec
|
|
8510
|
+
* digests were taken in. `content`: the raw text, line endings normalized —
|
|
8511
|
+
* what every record written before format 3 carries (the field absent).
|
|
8512
|
+
* `design`: the spec's design view (code linkage and timestamps out) in
|
|
8513
|
+
* canonical form, so a sourcePath, a whitespace edit or a no-op re-save never
|
|
8514
|
+
* moves it.
|
|
8515
|
+
*/
|
|
8516
|
+
type SpecDigestReading = 'content' | 'design';
|
|
8517
|
+
/**
|
|
8518
|
+
* lock_reexpression — provenance on a lock record a tool carried into a newer
|
|
8519
|
+
* reading after PROVING the design is the one approved (its own earlier
|
|
8520
|
+
* identity, recomputed over the tree as it stands, matched), rather than a
|
|
8521
|
+
* human re-approving it. Who approved and when stay the human's.
|
|
8522
|
+
*/
|
|
8523
|
+
interface LockReexpression {
|
|
8524
|
+
/** ISO-8601 time of the re-expression. */
|
|
8525
|
+
at: string;
|
|
8526
|
+
/** The gate algorithm the record carried before. */
|
|
8527
|
+
fromAlgorithm: string;
|
|
8528
|
+
/** The per-spec digest reading the record carried before. */
|
|
8529
|
+
fromReading: SpecDigestReading;
|
|
8530
|
+
/** The command that re-expressed it (e.g. `wairon doctor --fix`), never a person. */
|
|
8531
|
+
by: string;
|
|
8532
|
+
}
|
|
8533
|
+
/** A project's approval state as seen from its own root. */
|
|
8534
|
+
type ProjectApprovalState = 'approved' | 'drifted' | 'never';
|
|
8535
|
+
/** How a parent's lock pinned a member. */
|
|
8536
|
+
type PinState = 'matches' | 'moved' | 'unpinned';
|
|
8537
|
+
/**
|
|
8538
|
+
* project_approval — one project's approval state, computed at that project's
|
|
8539
|
+
* OWN root, so the answer is the same whichever root asked (status-agrees).
|
|
8540
|
+
* The family's pin tree is a list of these, the root's own entry first.
|
|
8541
|
+
*/
|
|
8542
|
+
interface ProjectApproval {
|
|
8543
|
+
/** '' for the root the question was asked at, else the member's key. */
|
|
8544
|
+
key: string;
|
|
8545
|
+
/** The alias the parent declares this member under; absent on the root. */
|
|
8546
|
+
alias?: string;
|
|
8547
|
+
/** The key of the declaring project; absent on the root. */
|
|
8548
|
+
parent?: string;
|
|
8549
|
+
/** The project's effective id, when it has a usable one. */
|
|
8550
|
+
projectId?: string;
|
|
8551
|
+
state: ProjectApprovalState;
|
|
8552
|
+
/** Its composition subject: its own record's stateId, `<algorithm>:<digest>`. Absent when never. */
|
|
8553
|
+
subject?: string;
|
|
8554
|
+
/** Drifted only because the lock predates the stage-5 gate identity. */
|
|
8555
|
+
upgraded?: boolean;
|
|
8556
|
+
/**
|
|
8557
|
+
* Why the approval on record does not cover the project although its gate
|
|
8558
|
+
* identity may match: its id moved since the approval, or a declared
|
|
8559
|
+
* external was never pinned or is used beyond its pin. Set only on a
|
|
8560
|
+
* drifted entry; status, lock-check and lock read the same entry.
|
|
8561
|
+
*/
|
|
8562
|
+
owed?: string;
|
|
8563
|
+
/** How the parent's lock pinned it; absent on the root. */
|
|
8564
|
+
pinned?: PinState;
|
|
8565
|
+
/** part | project (stage 8). A part's state is its declaring project's, and it has no subject of its own. */
|
|
8566
|
+
as?: MemberKind;
|
|
8567
|
+
/** A part's content digest (ScannedPart.contentDigest), recorded by the lock as its MemberPin. */
|
|
8568
|
+
contentDigest?: string;
|
|
8569
|
+
/** The commit a part or a referenced project member was read at, when known — provenance the lock records. */
|
|
8570
|
+
commit?: string;
|
|
8571
|
+
}
|
|
8572
|
+
|
|
8573
|
+
/**
|
|
8574
|
+
* member_pin — one direct member as a parent's lock recorded it: the member's
|
|
8575
|
+
* composition subject (the stateId its OWN lock record carries) and its
|
|
8576
|
+
* approval state when the parent locked. A record of the member owner's
|
|
8577
|
+
* decision, never of the member's specs; the parent never writes below itself.
|
|
8578
|
+
*/
|
|
8579
|
+
interface MemberPin {
|
|
8580
|
+
/** The member's effective project id when the parent locked. */
|
|
8581
|
+
project?: string;
|
|
8582
|
+
/** The member's recorded gate identity, `<algorithm>:<digest>`; absent when it had no lock. */
|
|
8583
|
+
subject?: string;
|
|
8584
|
+
/** approved | drifted | never, as it stood when the parent locked (a part records approved). Recorded, never hashed. */
|
|
8585
|
+
state: ProjectApprovalState;
|
|
8586
|
+
/** part | project, as the member's content made it when the parent locked; absent in a record written before stage 8. */
|
|
8587
|
+
as?: MemberKind;
|
|
8588
|
+
/** The commit the member was read at when the parent locked. Provenance only: never read by a verdict. */
|
|
8589
|
+
commit?: string;
|
|
7792
8590
|
/** Part only: its content digest (ScannedPart.contentDigest) when the parent locked. */
|
|
7793
8591
|
contentDigest?: string;
|
|
7794
8592
|
}
|
|
@@ -7880,7 +8678,7 @@ interface LockRecord {
|
|
|
7880
8678
|
/** For git-backed projects: the compare/PR URL a human opens to merge. */
|
|
7881
8679
|
compareUrl?: string;
|
|
7882
8680
|
}
|
|
7883
|
-
/** Read the current project's lock record
|
|
8681
|
+
/** Read the current project's lock record: null when ABSENT, LockRecordUnreadableError when present but unreadable. */
|
|
7884
8682
|
declare function readLockRecord(): LockRecord | null;
|
|
7885
8683
|
|
|
7886
8684
|
declare class WaironError extends Error {
|
|
@@ -7899,6 +8697,20 @@ declare class YamlSyntaxError extends WaironError {
|
|
|
7899
8697
|
readonly key: string | undefined;
|
|
7900
8698
|
constructor(file: string | undefined, line: number | undefined, reason: string, key: string | undefined);
|
|
7901
8699
|
}
|
|
8700
|
+
/**
|
|
8701
|
+
* Thrown when a lock record EXISTS but cannot be read as one: it does not
|
|
8702
|
+
* parse, it is empty, it is JSON that is not a lock record, or it names a
|
|
8703
|
+
* format this release does not read. An approval that cannot be read is
|
|
8704
|
+
* never read as no approval — that turned a truncated merge into "nothing is
|
|
8705
|
+
* gated" — so every reader fails closed on it, with one line naming the file,
|
|
8706
|
+
* what is wrong, and the two ways out. A WaironError: every command prints it
|
|
8707
|
+
* as one `✖` line and exits non-zero.
|
|
8708
|
+
*/
|
|
8709
|
+
declare class LockRecordUnreadableError extends WaironError {
|
|
8710
|
+
readonly file: string;
|
|
8711
|
+
readonly reason: string;
|
|
8712
|
+
constructor(file: string, reason: string);
|
|
8713
|
+
}
|
|
7902
8714
|
/**
|
|
7903
8715
|
* Thrown when the project has not been initialized (.wai/ directory missing).
|
|
7904
8716
|
*/
|
|
@@ -8803,6 +9615,12 @@ declare function typeSpellingFacts(): TypeSpellingFacts;
|
|
|
8803
9615
|
/** ispec_loader.retiredReachFacts — forwarded 1:1 to the index read face. */
|
|
8804
9616
|
declare function retiredReachFacts(): RetiredReachFact[];
|
|
8805
9617
|
declare function findLegacySpecFiles(): LegacySpecFile[];
|
|
9618
|
+
/**
|
|
9619
|
+
* core_orchestrator.findOrphanedSpecFiles — the bound tree's spec files left
|
|
9620
|
+
* standing while its specs folder holds no L0: what `validate` and
|
|
9621
|
+
* `lock-check` report as an error instead of reading the tree as empty.
|
|
9622
|
+
*/
|
|
9623
|
+
declare function findOrphanedSpecFiles(): string[];
|
|
8806
9624
|
/**
|
|
8807
9625
|
* spec_loader.loadSpec / icore_orchestrator.loadSpec — one stored spec of the
|
|
8808
9626
|
* named kind in the bound tree, or null: for a caller that holds the kind as
|
|
@@ -9076,6 +9894,13 @@ interface ExternalConsumer {
|
|
|
9076
9894
|
* that renaming that method breaks this consumer. Pure.
|
|
9077
9895
|
*/
|
|
9078
9896
|
declare function consumerReaches(consumer: ExternalConsumer, publicNames: readonly string[], member: string): boolean;
|
|
9897
|
+
/**
|
|
9898
|
+
* external_consumer.narrowedTo — a consumer as a rename of `member` on one of
|
|
9899
|
+
* `publicNames` breaks it: only those public names, each with that one member,
|
|
9900
|
+
* so a dry run names what breaks rather than the consumer's whole use of the
|
|
9901
|
+
* producer. Its specs stay those that reach the public name. Pure.
|
|
9902
|
+
*/
|
|
9903
|
+
declare function narrowedToMember(consumer: ExternalConsumer, publicNames: readonly string[], member: string): ExternalConsumer;
|
|
9079
9904
|
/**
|
|
9080
9905
|
* project_family.bindExternal — one external declaration bound to its
|
|
9081
9906
|
* producer the way the graph binds every declared external: its own problem,
|
|
@@ -9194,6 +10019,15 @@ declare function isWindowsReservedName(name: string): boolean;
|
|
|
9194
10019
|
*/
|
|
9195
10020
|
declare const MAX_SPEC_ID_LENGTH = 64;
|
|
9196
10021
|
declare const SpecIdSchema: z.ZodString;
|
|
10022
|
+
declare const MethodNameSchema: z.ZodString;
|
|
10023
|
+
declare const ParamNameSchema: z.ZodString;
|
|
10024
|
+
declare const FieldNameSchema: z.ZodString;
|
|
10025
|
+
/**
|
|
10026
|
+
* A spec's human-readable `name`: display_name.problem — never empty or blank,
|
|
10027
|
+
* and no control, NUL or zero-width character (invisible in every view, cut
|
|
10028
|
+
* short by some tools, and a diagram holding one is a binary file).
|
|
10029
|
+
*/
|
|
10030
|
+
declare const DisplayNameSchema: z.ZodString;
|
|
9197
10031
|
/**
|
|
9198
10032
|
* Split a qualified id at its last `::` into the namespace prefix and the local
|
|
9199
10033
|
* id. An unqualified id has an empty prefix and is its own local id.
|
|
@@ -9396,9 +10230,9 @@ declare const SystemPublicInterfaceSchema: z.ZodObject<{
|
|
|
9396
10230
|
name?: string | undefined;
|
|
9397
10231
|
as?: string | undefined;
|
|
9398
10232
|
version?: string | undefined;
|
|
10233
|
+
interface?: string | undefined;
|
|
9399
10234
|
component?: string | undefined;
|
|
9400
10235
|
subsystem?: string | undefined;
|
|
9401
|
-
interface?: string | undefined;
|
|
9402
10236
|
typeDef?: string | undefined;
|
|
9403
10237
|
details?: string | undefined;
|
|
9404
10238
|
audience?: string | undefined;
|
|
@@ -9412,9 +10246,9 @@ declare const SystemPublicInterfaceSchema: z.ZodObject<{
|
|
|
9412
10246
|
name?: string | undefined;
|
|
9413
10247
|
as?: string | undefined;
|
|
9414
10248
|
version?: string | undefined;
|
|
10249
|
+
interface?: string | undefined;
|
|
9415
10250
|
component?: string | undefined;
|
|
9416
10251
|
subsystem?: string | undefined;
|
|
9417
|
-
interface?: string | undefined;
|
|
9418
10252
|
typeDef?: string | undefined;
|
|
9419
10253
|
details?: string | undefined;
|
|
9420
10254
|
audience?: string | undefined;
|
|
@@ -9486,9 +10320,9 @@ declare const SystemSpecSchema: z.ZodObject<{
|
|
|
9486
10320
|
name?: string | undefined;
|
|
9487
10321
|
as?: string | undefined;
|
|
9488
10322
|
version?: string | undefined;
|
|
10323
|
+
interface?: string | undefined;
|
|
9489
10324
|
component?: string | undefined;
|
|
9490
10325
|
subsystem?: string | undefined;
|
|
9491
|
-
interface?: string | undefined;
|
|
9492
10326
|
typeDef?: string | undefined;
|
|
9493
10327
|
details?: string | undefined;
|
|
9494
10328
|
audience?: string | undefined;
|
|
@@ -9502,9 +10336,9 @@ declare const SystemSpecSchema: z.ZodObject<{
|
|
|
9502
10336
|
name?: string | undefined;
|
|
9503
10337
|
as?: string | undefined;
|
|
9504
10338
|
version?: string | undefined;
|
|
10339
|
+
interface?: string | undefined;
|
|
9505
10340
|
component?: string | undefined;
|
|
9506
10341
|
subsystem?: string | undefined;
|
|
9507
|
-
interface?: string | undefined;
|
|
9508
10342
|
typeDef?: string | undefined;
|
|
9509
10343
|
details?: string | undefined;
|
|
9510
10344
|
audience?: string | undefined;
|
|
@@ -9585,9 +10419,9 @@ declare const SystemSpecSchema: z.ZodObject<{
|
|
|
9585
10419
|
name?: string | undefined;
|
|
9586
10420
|
as?: string | undefined;
|
|
9587
10421
|
version?: string | undefined;
|
|
10422
|
+
interface?: string | undefined;
|
|
9588
10423
|
component?: string | undefined;
|
|
9589
10424
|
subsystem?: string | undefined;
|
|
9590
|
-
interface?: string | undefined;
|
|
9591
10425
|
typeDef?: string | undefined;
|
|
9592
10426
|
details?: string | undefined;
|
|
9593
10427
|
audience?: string | undefined;
|
|
@@ -9614,9 +10448,9 @@ declare const SystemSpecSchema: z.ZodObject<{
|
|
|
9614
10448
|
name?: string | undefined;
|
|
9615
10449
|
as?: string | undefined;
|
|
9616
10450
|
version?: string | undefined;
|
|
10451
|
+
interface?: string | undefined;
|
|
9617
10452
|
component?: string | undefined;
|
|
9618
10453
|
subsystem?: string | undefined;
|
|
9619
|
-
interface?: string | undefined;
|
|
9620
10454
|
typeDef?: string | undefined;
|
|
9621
10455
|
details?: string | undefined;
|
|
9622
10456
|
audience?: string | undefined;
|
|
@@ -9686,8 +10520,8 @@ declare const PublicInterfaceSchema: z.ZodEffects<z.ZodObject<{
|
|
|
9686
10520
|
}, "strip", z.ZodTypeAny, {
|
|
9687
10521
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9688
10522
|
as?: string | undefined;
|
|
9689
|
-
component?: string | undefined;
|
|
9690
10523
|
interface?: string | undefined;
|
|
10524
|
+
component?: string | undefined;
|
|
9691
10525
|
typeDef?: string | undefined;
|
|
9692
10526
|
details?: string | undefined;
|
|
9693
10527
|
role?: "implement" | "call" | undefined;
|
|
@@ -9696,8 +10530,8 @@ declare const PublicInterfaceSchema: z.ZodEffects<z.ZodObject<{
|
|
|
9696
10530
|
}, {
|
|
9697
10531
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9698
10532
|
as?: string | undefined;
|
|
9699
|
-
component?: string | undefined;
|
|
9700
10533
|
interface?: string | undefined;
|
|
10534
|
+
component?: string | undefined;
|
|
9701
10535
|
typeDef?: string | undefined;
|
|
9702
10536
|
details?: string | undefined;
|
|
9703
10537
|
role?: "implement" | "call" | undefined;
|
|
@@ -9706,8 +10540,8 @@ declare const PublicInterfaceSchema: z.ZodEffects<z.ZodObject<{
|
|
|
9706
10540
|
}>, {
|
|
9707
10541
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9708
10542
|
as?: string | undefined;
|
|
9709
|
-
component?: string | undefined;
|
|
9710
10543
|
interface?: string | undefined;
|
|
10544
|
+
component?: string | undefined;
|
|
9711
10545
|
typeDef?: string | undefined;
|
|
9712
10546
|
details?: string | undefined;
|
|
9713
10547
|
role?: "implement" | "call" | undefined;
|
|
@@ -9716,8 +10550,8 @@ declare const PublicInterfaceSchema: z.ZodEffects<z.ZodObject<{
|
|
|
9716
10550
|
}, {
|
|
9717
10551
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9718
10552
|
as?: string | undefined;
|
|
9719
|
-
component?: string | undefined;
|
|
9720
10553
|
interface?: string | undefined;
|
|
10554
|
+
component?: string | undefined;
|
|
9721
10555
|
typeDef?: string | undefined;
|
|
9722
10556
|
details?: string | undefined;
|
|
9723
10557
|
role?: "implement" | "call" | undefined;
|
|
@@ -9907,13 +10741,13 @@ declare const LifecycleEntrypointSchema: z.ZodObject<{
|
|
|
9907
10741
|
/** What this lifecycle flow establishes or tears down. */
|
|
9908
10742
|
description: z.ZodOptional<z.ZodString>;
|
|
9909
10743
|
}, "strip", z.ZodTypeAny, {
|
|
9910
|
-
component: string;
|
|
9911
10744
|
method: string;
|
|
10745
|
+
component: string;
|
|
9912
10746
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
9913
10747
|
description?: string | undefined;
|
|
9914
10748
|
}, {
|
|
9915
|
-
component: string;
|
|
9916
10749
|
method: string;
|
|
10750
|
+
component: string;
|
|
9917
10751
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
9918
10752
|
description?: string | undefined;
|
|
9919
10753
|
}>;
|
|
@@ -9953,8 +10787,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
9953
10787
|
}, "strip", z.ZodTypeAny, {
|
|
9954
10788
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9955
10789
|
as?: string | undefined;
|
|
9956
|
-
component?: string | undefined;
|
|
9957
10790
|
interface?: string | undefined;
|
|
10791
|
+
component?: string | undefined;
|
|
9958
10792
|
typeDef?: string | undefined;
|
|
9959
10793
|
details?: string | undefined;
|
|
9960
10794
|
role?: "implement" | "call" | undefined;
|
|
@@ -9963,8 +10797,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
9963
10797
|
}, {
|
|
9964
10798
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9965
10799
|
as?: string | undefined;
|
|
9966
|
-
component?: string | undefined;
|
|
9967
10800
|
interface?: string | undefined;
|
|
10801
|
+
component?: string | undefined;
|
|
9968
10802
|
typeDef?: string | undefined;
|
|
9969
10803
|
details?: string | undefined;
|
|
9970
10804
|
role?: "implement" | "call" | undefined;
|
|
@@ -9973,8 +10807,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
9973
10807
|
}>, {
|
|
9974
10808
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9975
10809
|
as?: string | undefined;
|
|
9976
|
-
component?: string | undefined;
|
|
9977
10810
|
interface?: string | undefined;
|
|
10811
|
+
component?: string | undefined;
|
|
9978
10812
|
typeDef?: string | undefined;
|
|
9979
10813
|
details?: string | undefined;
|
|
9980
10814
|
role?: "implement" | "call" | undefined;
|
|
@@ -9983,8 +10817,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
9983
10817
|
}, {
|
|
9984
10818
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
9985
10819
|
as?: string | undefined;
|
|
9986
|
-
component?: string | undefined;
|
|
9987
10820
|
interface?: string | undefined;
|
|
10821
|
+
component?: string | undefined;
|
|
9988
10822
|
typeDef?: string | undefined;
|
|
9989
10823
|
details?: string | undefined;
|
|
9990
10824
|
role?: "implement" | "call" | undefined;
|
|
@@ -10002,13 +10836,13 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
10002
10836
|
/** What this lifecycle flow establishes or tears down. */
|
|
10003
10837
|
description: z.ZodOptional<z.ZodString>;
|
|
10004
10838
|
}, "strip", z.ZodTypeAny, {
|
|
10005
|
-
component: string;
|
|
10006
10839
|
method: string;
|
|
10840
|
+
component: string;
|
|
10007
10841
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
10008
10842
|
description?: string | undefined;
|
|
10009
10843
|
}, {
|
|
10010
|
-
component: string;
|
|
10011
10844
|
method: string;
|
|
10845
|
+
component: string;
|
|
10012
10846
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
10013
10847
|
description?: string | undefined;
|
|
10014
10848
|
}>, "many">>;
|
|
@@ -10121,8 +10955,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
10121
10955
|
publicInterfaces: {
|
|
10122
10956
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
10123
10957
|
as?: string | undefined;
|
|
10124
|
-
component?: string | undefined;
|
|
10125
10958
|
interface?: string | undefined;
|
|
10959
|
+
component?: string | undefined;
|
|
10126
10960
|
typeDef?: string | undefined;
|
|
10127
10961
|
details?: string | undefined;
|
|
10128
10962
|
role?: "implement" | "call" | undefined;
|
|
@@ -10136,8 +10970,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
10136
10970
|
profile?: string | undefined;
|
|
10137
10971
|
designDepth?: "components" | "interfaces" | "implementations" | "narratives" | undefined;
|
|
10138
10972
|
lifecycle?: {
|
|
10139
|
-
component: string;
|
|
10140
10973
|
method: string;
|
|
10974
|
+
component: string;
|
|
10141
10975
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
10142
10976
|
description?: string | undefined;
|
|
10143
10977
|
}[] | undefined;
|
|
@@ -10165,8 +10999,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
10165
10999
|
publicInterfaces?: {
|
|
10166
11000
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
10167
11001
|
as?: string | undefined;
|
|
10168
|
-
component?: string | undefined;
|
|
10169
11002
|
interface?: string | undefined;
|
|
11003
|
+
component?: string | undefined;
|
|
10170
11004
|
typeDef?: string | undefined;
|
|
10171
11005
|
details?: string | undefined;
|
|
10172
11006
|
role?: "implement" | "call" | undefined;
|
|
@@ -10174,8 +11008,8 @@ declare const SubsystemSpecSchema: z.ZodObject<{
|
|
|
10174
11008
|
consumers?: string[] | undefined;
|
|
10175
11009
|
}[] | undefined;
|
|
10176
11010
|
lifecycle?: {
|
|
10177
|
-
component: string;
|
|
10178
11011
|
method: string;
|
|
11012
|
+
component: string;
|
|
10179
11013
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
10180
11014
|
description?: string | undefined;
|
|
10181
11015
|
}[] | undefined;
|
|
@@ -10223,14 +11057,14 @@ declare const DispatchBindingSchema: z.ZodObject<{
|
|
|
10223
11057
|
/** What this capability does. */
|
|
10224
11058
|
description: z.ZodOptional<z.ZodString>;
|
|
10225
11059
|
}, "strip", z.ZodTypeAny, {
|
|
10226
|
-
component: string;
|
|
10227
11060
|
method: string;
|
|
10228
11061
|
capability: string;
|
|
11062
|
+
component: string;
|
|
10229
11063
|
description?: string | undefined;
|
|
10230
11064
|
}, {
|
|
10231
|
-
component: string;
|
|
10232
11065
|
method: string;
|
|
10233
11066
|
capability: string;
|
|
11067
|
+
component: string;
|
|
10234
11068
|
description?: string | undefined;
|
|
10235
11069
|
}>;
|
|
10236
11070
|
type DispatchBinding = z.infer<typeof DispatchBindingSchema>;
|
|
@@ -10560,14 +11394,14 @@ declare const ComponentSpecSchema: z.ZodObject<{
|
|
|
10560
11394
|
/** What this capability does. */
|
|
10561
11395
|
description: z.ZodOptional<z.ZodString>;
|
|
10562
11396
|
}, "strip", z.ZodTypeAny, {
|
|
10563
|
-
component: string;
|
|
10564
11397
|
method: string;
|
|
10565
11398
|
capability: string;
|
|
11399
|
+
component: string;
|
|
10566
11400
|
description?: string | undefined;
|
|
10567
11401
|
}, {
|
|
10568
|
-
component: string;
|
|
10569
11402
|
method: string;
|
|
10570
11403
|
capability: string;
|
|
11404
|
+
component: string;
|
|
10571
11405
|
description?: string | undefined;
|
|
10572
11406
|
}>, "many">>;
|
|
10573
11407
|
/** Store-only: whether held state survives restart (see DurabilitySchema). */
|
|
@@ -10751,9 +11585,9 @@ declare const ComponentSpecSchema: z.ZodObject<{
|
|
|
10751
11585
|
example?: string | undefined;
|
|
10752
11586
|
} | undefined;
|
|
10753
11587
|
dispatch?: {
|
|
10754
|
-
component: string;
|
|
10755
11588
|
method: string;
|
|
10756
11589
|
capability: string;
|
|
11590
|
+
component: string;
|
|
10757
11591
|
description?: string | undefined;
|
|
10758
11592
|
}[] | undefined;
|
|
10759
11593
|
durability?: "ram-projection" | "durable" | "read-through" | "cache" | undefined;
|
|
@@ -10825,9 +11659,9 @@ declare const ComponentSpecSchema: z.ZodObject<{
|
|
|
10825
11659
|
example?: string | undefined;
|
|
10826
11660
|
} | undefined;
|
|
10827
11661
|
dispatch?: {
|
|
10828
|
-
component: string;
|
|
10829
11662
|
method: string;
|
|
10830
11663
|
capability: string;
|
|
11664
|
+
component: string;
|
|
10831
11665
|
description?: string | undefined;
|
|
10832
11666
|
}[] | undefined;
|
|
10833
11667
|
durability?: "ram-projection" | "durable" | "read-through" | "cache" | undefined;
|
|
@@ -13650,7 +14484,7 @@ declare const NarrativeStepSchema: z.ZodObject<{
|
|
|
13650
14484
|
outcome: z.ZodOptional<z.ZodString>;
|
|
13651
14485
|
error: z.ZodOptional<z.ZodString>;
|
|
13652
14486
|
}, "strip", z.ZodTypeAny, {
|
|
13653
|
-
type: "
|
|
14487
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
13654
14488
|
description: string;
|
|
13655
14489
|
stepNumber: number;
|
|
13656
14490
|
label?: string | undefined;
|
|
@@ -13689,7 +14523,7 @@ declare const NarrativeStepSchema: z.ZodObject<{
|
|
|
13689
14523
|
detach?: boolean | undefined;
|
|
13690
14524
|
outcome?: string | undefined;
|
|
13691
14525
|
}, {
|
|
13692
|
-
type: "
|
|
14526
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
13693
14527
|
description: string;
|
|
13694
14528
|
stepNumber: number;
|
|
13695
14529
|
label?: string | undefined;
|
|
@@ -13851,7 +14685,7 @@ declare const MethodImplementationSchema: z.ZodObject<{
|
|
|
13851
14685
|
outcome: z.ZodOptional<z.ZodString>;
|
|
13852
14686
|
error: z.ZodOptional<z.ZodString>;
|
|
13853
14687
|
}, "strip", z.ZodTypeAny, {
|
|
13854
|
-
type: "
|
|
14688
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
13855
14689
|
description: string;
|
|
13856
14690
|
stepNumber: number;
|
|
13857
14691
|
label?: string | undefined;
|
|
@@ -13890,7 +14724,7 @@ declare const MethodImplementationSchema: z.ZodObject<{
|
|
|
13890
14724
|
detach?: boolean | undefined;
|
|
13891
14725
|
outcome?: string | undefined;
|
|
13892
14726
|
}, {
|
|
13893
|
-
type: "
|
|
14727
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
13894
14728
|
description: string;
|
|
13895
14729
|
stepNumber: number;
|
|
13896
14730
|
label?: string | undefined;
|
|
@@ -13996,7 +14830,7 @@ declare const MethodImplementationSchema: z.ZodObject<{
|
|
|
13996
14830
|
}, "strip", z.ZodTypeAny, {
|
|
13997
14831
|
name: string;
|
|
13998
14832
|
narrative: {
|
|
13999
|
-
type: "
|
|
14833
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14000
14834
|
description: string;
|
|
14001
14835
|
stepNumber: number;
|
|
14002
14836
|
label?: string | undefined;
|
|
@@ -14051,7 +14885,7 @@ declare const MethodImplementationSchema: z.ZodObject<{
|
|
|
14051
14885
|
ext?: Record<string, unknown> | undefined;
|
|
14052
14886
|
intent?: string | undefined;
|
|
14053
14887
|
narrative?: {
|
|
14054
|
-
type: "
|
|
14888
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14055
14889
|
description: string;
|
|
14056
14890
|
stepNumber: number;
|
|
14057
14891
|
label?: string | undefined;
|
|
@@ -14299,7 +15133,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14299
15133
|
outcome: z.ZodOptional<z.ZodString>;
|
|
14300
15134
|
error: z.ZodOptional<z.ZodString>;
|
|
14301
15135
|
}, "strip", z.ZodTypeAny, {
|
|
14302
|
-
type: "
|
|
15136
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14303
15137
|
description: string;
|
|
14304
15138
|
stepNumber: number;
|
|
14305
15139
|
label?: string | undefined;
|
|
@@ -14338,7 +15172,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14338
15172
|
detach?: boolean | undefined;
|
|
14339
15173
|
outcome?: string | undefined;
|
|
14340
15174
|
}, {
|
|
14341
|
-
type: "
|
|
15175
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14342
15176
|
description: string;
|
|
14343
15177
|
stepNumber: number;
|
|
14344
15178
|
label?: string | undefined;
|
|
@@ -14444,7 +15278,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14444
15278
|
}, "strip", z.ZodTypeAny, {
|
|
14445
15279
|
name: string;
|
|
14446
15280
|
narrative: {
|
|
14447
|
-
type: "
|
|
15281
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14448
15282
|
description: string;
|
|
14449
15283
|
stepNumber: number;
|
|
14450
15284
|
label?: string | undefined;
|
|
@@ -14499,7 +15333,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14499
15333
|
ext?: Record<string, unknown> | undefined;
|
|
14500
15334
|
intent?: string | undefined;
|
|
14501
15335
|
narrative?: {
|
|
14502
|
-
type: "
|
|
15336
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14503
15337
|
description: string;
|
|
14504
15338
|
stepNumber: number;
|
|
14505
15339
|
label?: string | undefined;
|
|
@@ -14544,7 +15378,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14544
15378
|
}>, "many">>, {
|
|
14545
15379
|
name: string;
|
|
14546
15380
|
narrative: {
|
|
14547
|
-
type: "
|
|
15381
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14548
15382
|
description: string;
|
|
14549
15383
|
stepNumber: number;
|
|
14550
15384
|
label?: string | undefined;
|
|
@@ -14599,7 +15433,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14599
15433
|
ext?: Record<string, unknown> | undefined;
|
|
14600
15434
|
intent?: string | undefined;
|
|
14601
15435
|
narrative?: {
|
|
14602
|
-
type: "
|
|
15436
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14603
15437
|
description: string;
|
|
14604
15438
|
stepNumber: number;
|
|
14605
15439
|
label?: string | undefined;
|
|
@@ -14721,7 +15555,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14721
15555
|
methods: {
|
|
14722
15556
|
name: string;
|
|
14723
15557
|
narrative: {
|
|
14724
|
-
type: "
|
|
15558
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14725
15559
|
description: string;
|
|
14726
15560
|
stepNumber: number;
|
|
14727
15561
|
label?: string | undefined;
|
|
@@ -14809,7 +15643,7 @@ declare const ImplementationSpecSchema: z.ZodObject<{
|
|
|
14809
15643
|
ext?: Record<string, unknown> | undefined;
|
|
14810
15644
|
intent?: string | undefined;
|
|
14811
15645
|
narrative?: {
|
|
14812
|
-
type: "
|
|
15646
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
14813
15647
|
description: string;
|
|
14814
15648
|
stepNumber: number;
|
|
14815
15649
|
label?: string | undefined;
|
|
@@ -15631,7 +16465,7 @@ declare const TypeSpecSchema: z.ZodObject<{
|
|
|
15631
16465
|
previousNames?: string[] | undefined;
|
|
15632
16466
|
references?: string | undefined;
|
|
15633
16467
|
}[];
|
|
15634
|
-
kind: "signature" | "entity" | "value-object"
|
|
16468
|
+
kind: "enum" | "signature" | "entity" | "value-object";
|
|
15635
16469
|
createdAt: string;
|
|
15636
16470
|
updatedAt: string;
|
|
15637
16471
|
symbol?: string | undefined;
|
|
@@ -15673,7 +16507,7 @@ declare const TypeSpecSchema: z.ZodObject<{
|
|
|
15673
16507
|
}, {
|
|
15674
16508
|
id: string;
|
|
15675
16509
|
name: string;
|
|
15676
|
-
kind: "signature" | "entity" | "value-object"
|
|
16510
|
+
kind: "enum" | "signature" | "entity" | "value-object";
|
|
15677
16511
|
createdAt: string;
|
|
15678
16512
|
updatedAt: string;
|
|
15679
16513
|
symbol?: string | undefined;
|
|
@@ -16003,7 +16837,7 @@ declare const ResolvedTypeSpecSchema: z.ZodObject<{
|
|
|
16003
16837
|
previousNames?: string[] | undefined;
|
|
16004
16838
|
references?: string | undefined;
|
|
16005
16839
|
}[];
|
|
16006
|
-
kind: "signature" | "entity" | "value-object"
|
|
16840
|
+
kind: "enum" | "signature" | "entity" | "value-object";
|
|
16007
16841
|
createdAt: string;
|
|
16008
16842
|
updatedAt: string;
|
|
16009
16843
|
symbol?: string | undefined;
|
|
@@ -16045,7 +16879,7 @@ declare const ResolvedTypeSpecSchema: z.ZodObject<{
|
|
|
16045
16879
|
}, {
|
|
16046
16880
|
id: string;
|
|
16047
16881
|
name: string;
|
|
16048
|
-
kind: "signature" | "entity" | "value-object"
|
|
16882
|
+
kind: "enum" | "signature" | "entity" | "value-object";
|
|
16049
16883
|
createdAt: string;
|
|
16050
16884
|
updatedAt: string;
|
|
16051
16885
|
symbol?: string | undefined;
|
|
@@ -16373,7 +17207,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16373
17207
|
outcome: z.ZodOptional<z.ZodString>;
|
|
16374
17208
|
error: z.ZodOptional<z.ZodString>;
|
|
16375
17209
|
}, "strip", z.ZodTypeAny, {
|
|
16376
|
-
type: "
|
|
17210
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16377
17211
|
description: string;
|
|
16378
17212
|
stepNumber: number;
|
|
16379
17213
|
label?: string | undefined;
|
|
@@ -16412,7 +17246,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16412
17246
|
detach?: boolean | undefined;
|
|
16413
17247
|
outcome?: string | undefined;
|
|
16414
17248
|
}, {
|
|
16415
|
-
type: "
|
|
17249
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16416
17250
|
description: string;
|
|
16417
17251
|
stepNumber: number;
|
|
16418
17252
|
label?: string | undefined;
|
|
@@ -16518,7 +17352,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16518
17352
|
}, "strip", z.ZodTypeAny, {
|
|
16519
17353
|
name: string;
|
|
16520
17354
|
narrative: {
|
|
16521
|
-
type: "
|
|
17355
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16522
17356
|
description: string;
|
|
16523
17357
|
stepNumber: number;
|
|
16524
17358
|
label?: string | undefined;
|
|
@@ -16573,7 +17407,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16573
17407
|
ext?: Record<string, unknown> | undefined;
|
|
16574
17408
|
intent?: string | undefined;
|
|
16575
17409
|
narrative?: {
|
|
16576
|
-
type: "
|
|
17410
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16577
17411
|
description: string;
|
|
16578
17412
|
stepNumber: number;
|
|
16579
17413
|
label?: string | undefined;
|
|
@@ -16618,7 +17452,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16618
17452
|
}>, "many">>, {
|
|
16619
17453
|
name: string;
|
|
16620
17454
|
narrative: {
|
|
16621
|
-
type: "
|
|
17455
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16622
17456
|
description: string;
|
|
16623
17457
|
stepNumber: number;
|
|
16624
17458
|
label?: string | undefined;
|
|
@@ -16673,7 +17507,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16673
17507
|
ext?: Record<string, unknown> | undefined;
|
|
16674
17508
|
intent?: string | undefined;
|
|
16675
17509
|
narrative?: {
|
|
16676
|
-
type: "
|
|
17510
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16677
17511
|
description: string;
|
|
16678
17512
|
stepNumber: number;
|
|
16679
17513
|
label?: string | undefined;
|
|
@@ -16795,7 +17629,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16795
17629
|
methods: {
|
|
16796
17630
|
name: string;
|
|
16797
17631
|
narrative: {
|
|
16798
|
-
type: "
|
|
17632
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16799
17633
|
description: string;
|
|
16800
17634
|
stepNumber: number;
|
|
16801
17635
|
label?: string | undefined;
|
|
@@ -16883,7 +17717,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
16883
17717
|
ext?: Record<string, unknown> | undefined;
|
|
16884
17718
|
intent?: string | undefined;
|
|
16885
17719
|
narrative?: {
|
|
16886
|
-
type: "
|
|
17720
|
+
type: "loop" | "return" | "call" | "local" | "dispatch" | "register" | "branch" | "switch" | "try" | "parallel" | "jump" | "throw";
|
|
16887
17721
|
description: string;
|
|
16888
17722
|
stepNumber: number;
|
|
16889
17723
|
label?: string | undefined;
|
|
@@ -17306,7 +18140,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17306
18140
|
previousNames?: string[] | undefined;
|
|
17307
18141
|
references?: string | undefined;
|
|
17308
18142
|
}[];
|
|
17309
|
-
kind: "signature" | "entity" | "value-object"
|
|
18143
|
+
kind: "enum" | "signature" | "entity" | "value-object";
|
|
17310
18144
|
createdAt: string;
|
|
17311
18145
|
updatedAt: string;
|
|
17312
18146
|
symbol?: string | undefined;
|
|
@@ -17348,7 +18182,7 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17348
18182
|
}, {
|
|
17349
18183
|
id: string;
|
|
17350
18184
|
name: string;
|
|
17351
|
-
kind: "signature" | "entity" | "value-object"
|
|
18185
|
+
kind: "enum" | "signature" | "entity" | "value-object";
|
|
17352
18186
|
createdAt: string;
|
|
17353
18187
|
updatedAt: string;
|
|
17354
18188
|
symbol?: string | undefined;
|
|
@@ -17528,14 +18362,14 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17528
18362
|
/** What this capability does. */
|
|
17529
18363
|
description: z.ZodOptional<z.ZodString>;
|
|
17530
18364
|
}, "strip", z.ZodTypeAny, {
|
|
17531
|
-
component: string;
|
|
17532
18365
|
method: string;
|
|
17533
18366
|
capability: string;
|
|
18367
|
+
component: string;
|
|
17534
18368
|
description?: string | undefined;
|
|
17535
18369
|
}, {
|
|
17536
|
-
component: string;
|
|
17537
18370
|
method: string;
|
|
17538
18371
|
capability: string;
|
|
18372
|
+
component: string;
|
|
17539
18373
|
description?: string | undefined;
|
|
17540
18374
|
}>, "many">>;
|
|
17541
18375
|
/** Store-only: whether held state survives restart (see DurabilitySchema). */
|
|
@@ -17719,9 +18553,9 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17719
18553
|
example?: string | undefined;
|
|
17720
18554
|
} | undefined;
|
|
17721
18555
|
dispatch?: {
|
|
17722
|
-
component: string;
|
|
17723
18556
|
method: string;
|
|
17724
18557
|
capability: string;
|
|
18558
|
+
component: string;
|
|
17725
18559
|
description?: string | undefined;
|
|
17726
18560
|
}[] | undefined;
|
|
17727
18561
|
durability?: "ram-projection" | "durable" | "read-through" | "cache" | undefined;
|
|
@@ -17793,9 +18627,9 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17793
18627
|
example?: string | undefined;
|
|
17794
18628
|
} | undefined;
|
|
17795
18629
|
dispatch?: {
|
|
17796
|
-
component: string;
|
|
17797
18630
|
method: string;
|
|
17798
18631
|
capability: string;
|
|
18632
|
+
component: string;
|
|
17799
18633
|
description?: string | undefined;
|
|
17800
18634
|
}[] | undefined;
|
|
17801
18635
|
durability?: "ram-projection" | "durable" | "read-through" | "cache" | undefined;
|
|
@@ -17856,8 +18690,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17856
18690
|
}, "strip", z.ZodTypeAny, {
|
|
17857
18691
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
17858
18692
|
as?: string | undefined;
|
|
17859
|
-
component?: string | undefined;
|
|
17860
18693
|
interface?: string | undefined;
|
|
18694
|
+
component?: string | undefined;
|
|
17861
18695
|
typeDef?: string | undefined;
|
|
17862
18696
|
details?: string | undefined;
|
|
17863
18697
|
role?: "implement" | "call" | undefined;
|
|
@@ -17866,8 +18700,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17866
18700
|
}, {
|
|
17867
18701
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
17868
18702
|
as?: string | undefined;
|
|
17869
|
-
component?: string | undefined;
|
|
17870
18703
|
interface?: string | undefined;
|
|
18704
|
+
component?: string | undefined;
|
|
17871
18705
|
typeDef?: string | undefined;
|
|
17872
18706
|
details?: string | undefined;
|
|
17873
18707
|
role?: "implement" | "call" | undefined;
|
|
@@ -17876,8 +18710,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17876
18710
|
}>, {
|
|
17877
18711
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
17878
18712
|
as?: string | undefined;
|
|
17879
|
-
component?: string | undefined;
|
|
17880
18713
|
interface?: string | undefined;
|
|
18714
|
+
component?: string | undefined;
|
|
17881
18715
|
typeDef?: string | undefined;
|
|
17882
18716
|
details?: string | undefined;
|
|
17883
18717
|
role?: "implement" | "call" | undefined;
|
|
@@ -17886,8 +18720,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17886
18720
|
}, {
|
|
17887
18721
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
17888
18722
|
as?: string | undefined;
|
|
17889
|
-
component?: string | undefined;
|
|
17890
18723
|
interface?: string | undefined;
|
|
18724
|
+
component?: string | undefined;
|
|
17891
18725
|
typeDef?: string | undefined;
|
|
17892
18726
|
details?: string | undefined;
|
|
17893
18727
|
role?: "implement" | "call" | undefined;
|
|
@@ -17905,13 +18739,13 @@ declare const SCHEMA_OF_KIND: {
|
|
|
17905
18739
|
/** What this lifecycle flow establishes or tears down. */
|
|
17906
18740
|
description: z.ZodOptional<z.ZodString>;
|
|
17907
18741
|
}, "strip", z.ZodTypeAny, {
|
|
17908
|
-
component: string;
|
|
17909
18742
|
method: string;
|
|
18743
|
+
component: string;
|
|
17910
18744
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
17911
18745
|
description?: string | undefined;
|
|
17912
18746
|
}, {
|
|
17913
|
-
component: string;
|
|
17914
18747
|
method: string;
|
|
18748
|
+
component: string;
|
|
17915
18749
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
17916
18750
|
description?: string | undefined;
|
|
17917
18751
|
}>, "many">>;
|
|
@@ -18024,8 +18858,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
18024
18858
|
publicInterfaces: {
|
|
18025
18859
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
18026
18860
|
as?: string | undefined;
|
|
18027
|
-
component?: string | undefined;
|
|
18028
18861
|
interface?: string | undefined;
|
|
18862
|
+
component?: string | undefined;
|
|
18029
18863
|
typeDef?: string | undefined;
|
|
18030
18864
|
details?: string | undefined;
|
|
18031
18865
|
role?: "implement" | "call" | undefined;
|
|
@@ -18039,8 +18873,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
18039
18873
|
profile?: string | undefined;
|
|
18040
18874
|
designDepth?: "components" | "interfaces" | "implementations" | "narratives" | undefined;
|
|
18041
18875
|
lifecycle?: {
|
|
18042
|
-
component: string;
|
|
18043
18876
|
method: string;
|
|
18877
|
+
component: string;
|
|
18044
18878
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
18045
18879
|
description?: string | undefined;
|
|
18046
18880
|
}[] | undefined;
|
|
@@ -18068,8 +18902,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
18068
18902
|
publicInterfaces?: {
|
|
18069
18903
|
type?: "REST" | "GraphQL" | "MessageBus" | "RPC" | "Custom" | undefined;
|
|
18070
18904
|
as?: string | undefined;
|
|
18071
|
-
component?: string | undefined;
|
|
18072
18905
|
interface?: string | undefined;
|
|
18906
|
+
component?: string | undefined;
|
|
18073
18907
|
typeDef?: string | undefined;
|
|
18074
18908
|
details?: string | undefined;
|
|
18075
18909
|
role?: "implement" | "call" | undefined;
|
|
@@ -18077,8 +18911,8 @@ declare const SCHEMA_OF_KIND: {
|
|
|
18077
18911
|
consumers?: string[] | undefined;
|
|
18078
18912
|
}[] | undefined;
|
|
18079
18913
|
lifecycle?: {
|
|
18080
|
-
component: string;
|
|
18081
18914
|
method: string;
|
|
18915
|
+
component: string;
|
|
18082
18916
|
phase: "init" | "shutdown" | "cyclic" | "interrupt" | "scheduled";
|
|
18083
18917
|
description?: string | undefined;
|
|
18084
18918
|
}[] | undefined;
|
|
@@ -18947,33 +19781,44 @@ declare const SurfaceTypeDefSchema: z.ZodObject<{
|
|
|
18947
19781
|
type: z.ZodString;
|
|
18948
19782
|
description: z.ZodOptional<z.ZodString>;
|
|
18949
19783
|
optional: z.ZodOptional<z.ZodBoolean>;
|
|
19784
|
+
/**
|
|
19785
|
+
* The field's rename trace as the producer recorded it (previousNames), so
|
|
19786
|
+
* a consumer pinned to a former field name reads a rename, never an
|
|
19787
|
+
* anonymous shape change. Provenance: it enters no digest.
|
|
19788
|
+
*/
|
|
19789
|
+
formerly: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
18950
19790
|
}, "strip", z.ZodTypeAny, {
|
|
18951
19791
|
type: string;
|
|
18952
19792
|
name: string;
|
|
18953
19793
|
description?: string | undefined;
|
|
18954
19794
|
optional?: boolean | undefined;
|
|
19795
|
+
formerly?: string[] | undefined;
|
|
18955
19796
|
}, {
|
|
18956
19797
|
type: string;
|
|
18957
19798
|
name: string;
|
|
18958
19799
|
description?: string | undefined;
|
|
18959
19800
|
optional?: boolean | undefined;
|
|
19801
|
+
formerly?: string[] | undefined;
|
|
18960
19802
|
}>, "many">>;
|
|
18961
|
-
/** A signature's parameters (name, type, optional, description) in declared order; only on kind signature. */
|
|
19803
|
+
/** A signature's parameters (name, type, optional, description, rename trace) in declared order; only on kind signature. */
|
|
18962
19804
|
params: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
18963
19805
|
name: z.ZodString;
|
|
18964
19806
|
type: z.ZodString;
|
|
18965
19807
|
description: z.ZodOptional<z.ZodString>;
|
|
18966
19808
|
optional: z.ZodOptional<z.ZodBoolean>;
|
|
19809
|
+
formerly: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
18967
19810
|
}, "strip", z.ZodTypeAny, {
|
|
18968
19811
|
type: string;
|
|
18969
19812
|
name: string;
|
|
18970
19813
|
description?: string | undefined;
|
|
18971
19814
|
optional?: boolean | undefined;
|
|
19815
|
+
formerly?: string[] | undefined;
|
|
18972
19816
|
}, {
|
|
18973
19817
|
type: string;
|
|
18974
19818
|
name: string;
|
|
18975
19819
|
description?: string | undefined;
|
|
18976
19820
|
optional?: boolean | undefined;
|
|
19821
|
+
formerly?: string[] | undefined;
|
|
18977
19822
|
}>, "many">>;
|
|
18978
19823
|
/** A signature's one output type; only on kind signature. */
|
|
18979
19824
|
returns: z.ZodOptional<z.ZodString>;
|
|
@@ -19054,6 +19899,7 @@ declare const SurfaceTypeDefSchema: z.ZodObject<{
|
|
|
19054
19899
|
name: string;
|
|
19055
19900
|
description?: string | undefined;
|
|
19056
19901
|
optional?: boolean | undefined;
|
|
19902
|
+
formerly?: string[] | undefined;
|
|
19057
19903
|
}[];
|
|
19058
19904
|
kind: string;
|
|
19059
19905
|
values?: {
|
|
@@ -19065,6 +19911,7 @@ declare const SurfaceTypeDefSchema: z.ZodObject<{
|
|
|
19065
19911
|
name: string;
|
|
19066
19912
|
description?: string | undefined;
|
|
19067
19913
|
optional?: boolean | undefined;
|
|
19914
|
+
formerly?: string[] | undefined;
|
|
19068
19915
|
}[] | undefined;
|
|
19069
19916
|
methods?: {
|
|
19070
19917
|
name: string;
|
|
@@ -19093,6 +19940,7 @@ declare const SurfaceTypeDefSchema: z.ZodObject<{
|
|
|
19093
19940
|
name: string;
|
|
19094
19941
|
description?: string | undefined;
|
|
19095
19942
|
optional?: boolean | undefined;
|
|
19943
|
+
formerly?: string[] | undefined;
|
|
19096
19944
|
}[] | undefined;
|
|
19097
19945
|
methods?: {
|
|
19098
19946
|
name: string;
|
|
@@ -19111,6 +19959,7 @@ declare const SurfaceTypeDefSchema: z.ZodObject<{
|
|
|
19111
19959
|
name: string;
|
|
19112
19960
|
description?: string | undefined;
|
|
19113
19961
|
optional?: boolean | undefined;
|
|
19962
|
+
formerly?: string[] | undefined;
|
|
19114
19963
|
}[] | undefined;
|
|
19115
19964
|
kind?: string | undefined;
|
|
19116
19965
|
returns?: string | undefined;
|
|
@@ -19467,14 +20316,14 @@ declare const SurfaceContractEntrySchema: z.ZodObject<{
|
|
|
19467
20316
|
/** What this capability does. */
|
|
19468
20317
|
description: z.ZodOptional<z.ZodString>;
|
|
19469
20318
|
}, "strip", z.ZodTypeAny, {
|
|
19470
|
-
component: string;
|
|
19471
20319
|
method: string;
|
|
19472
20320
|
capability: string;
|
|
20321
|
+
component: string;
|
|
19473
20322
|
description?: string | undefined;
|
|
19474
20323
|
}, {
|
|
19475
|
-
component: string;
|
|
19476
20324
|
method: string;
|
|
19477
20325
|
capability: string;
|
|
20326
|
+
component: string;
|
|
19478
20327
|
description?: string | undefined;
|
|
19479
20328
|
}>, "many">>;
|
|
19480
20329
|
details: z.ZodDefault<z.ZodString>;
|
|
@@ -19537,7 +20386,7 @@ declare const SurfaceContractEntrySchema: z.ZodObject<{
|
|
|
19537
20386
|
openIdConnectUrl?: string | undefined;
|
|
19538
20387
|
example?: string | undefined;
|
|
19539
20388
|
}>>;
|
|
19540
|
-
/** The backing Portal's basePath —
|
|
20389
|
+
/** The backing Portal's basePath — joined before every endpoint path of the per-portal OpenAPI document. */
|
|
19541
20390
|
basePath: z.ZodOptional<z.ZodString>;
|
|
19542
20391
|
/** Stereotype of the backing component; absent on snapshots written before exports carried it. */
|
|
19543
20392
|
componentType: z.ZodOptional<z.ZodString>;
|
|
@@ -19658,9 +20507,9 @@ declare const SurfaceContractEntrySchema: z.ZodObject<{
|
|
|
19658
20507
|
example?: string | undefined;
|
|
19659
20508
|
} | undefined;
|
|
19660
20509
|
dispatch?: {
|
|
19661
|
-
component: string;
|
|
19662
20510
|
method: string;
|
|
19663
20511
|
capability: string;
|
|
20512
|
+
component: string;
|
|
19664
20513
|
description?: string | undefined;
|
|
19665
20514
|
}[] | undefined;
|
|
19666
20515
|
formerly?: string[] | undefined;
|
|
@@ -19760,9 +20609,9 @@ declare const SurfaceContractEntrySchema: z.ZodObject<{
|
|
|
19760
20609
|
example?: string | undefined;
|
|
19761
20610
|
} | undefined;
|
|
19762
20611
|
dispatch?: {
|
|
19763
|
-
component: string;
|
|
19764
20612
|
method: string;
|
|
19765
20613
|
capability: string;
|
|
20614
|
+
component: string;
|
|
19766
20615
|
description?: string | undefined;
|
|
19767
20616
|
}[] | undefined;
|
|
19768
20617
|
formerly?: string[] | undefined;
|
|
@@ -20129,14 +20978,14 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20129
20978
|
/** What this capability does. */
|
|
20130
20979
|
description: z.ZodOptional<z.ZodString>;
|
|
20131
20980
|
}, "strip", z.ZodTypeAny, {
|
|
20132
|
-
component: string;
|
|
20133
20981
|
method: string;
|
|
20134
20982
|
capability: string;
|
|
20983
|
+
component: string;
|
|
20135
20984
|
description?: string | undefined;
|
|
20136
20985
|
}, {
|
|
20137
|
-
component: string;
|
|
20138
20986
|
method: string;
|
|
20139
20987
|
capability: string;
|
|
20988
|
+
component: string;
|
|
20140
20989
|
description?: string | undefined;
|
|
20141
20990
|
}>, "many">>;
|
|
20142
20991
|
details: z.ZodDefault<z.ZodString>;
|
|
@@ -20199,7 +21048,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20199
21048
|
openIdConnectUrl?: string | undefined;
|
|
20200
21049
|
example?: string | undefined;
|
|
20201
21050
|
}>>;
|
|
20202
|
-
/** The backing Portal's basePath —
|
|
21051
|
+
/** The backing Portal's basePath — joined before every endpoint path of the per-portal OpenAPI document. */
|
|
20203
21052
|
basePath: z.ZodOptional<z.ZodString>;
|
|
20204
21053
|
/** Stereotype of the backing component; absent on snapshots written before exports carried it. */
|
|
20205
21054
|
componentType: z.ZodOptional<z.ZodString>;
|
|
@@ -20320,9 +21169,9 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20320
21169
|
example?: string | undefined;
|
|
20321
21170
|
} | undefined;
|
|
20322
21171
|
dispatch?: {
|
|
20323
|
-
component: string;
|
|
20324
21172
|
method: string;
|
|
20325
21173
|
capability: string;
|
|
21174
|
+
component: string;
|
|
20326
21175
|
description?: string | undefined;
|
|
20327
21176
|
}[] | undefined;
|
|
20328
21177
|
formerly?: string[] | undefined;
|
|
@@ -20422,9 +21271,9 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20422
21271
|
example?: string | undefined;
|
|
20423
21272
|
} | undefined;
|
|
20424
21273
|
dispatch?: {
|
|
20425
|
-
component: string;
|
|
20426
21274
|
method: string;
|
|
20427
21275
|
capability: string;
|
|
21276
|
+
component: string;
|
|
20428
21277
|
description?: string | undefined;
|
|
20429
21278
|
}[] | undefined;
|
|
20430
21279
|
formerly?: string[] | undefined;
|
|
@@ -20439,33 +21288,44 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20439
21288
|
type: z.ZodString;
|
|
20440
21289
|
description: z.ZodOptional<z.ZodString>;
|
|
20441
21290
|
optional: z.ZodOptional<z.ZodBoolean>;
|
|
21291
|
+
/**
|
|
21292
|
+
* The field's rename trace as the producer recorded it (previousNames), so
|
|
21293
|
+
* a consumer pinned to a former field name reads a rename, never an
|
|
21294
|
+
* anonymous shape change. Provenance: it enters no digest.
|
|
21295
|
+
*/
|
|
21296
|
+
formerly: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
20442
21297
|
}, "strip", z.ZodTypeAny, {
|
|
20443
21298
|
type: string;
|
|
20444
21299
|
name: string;
|
|
20445
21300
|
description?: string | undefined;
|
|
20446
21301
|
optional?: boolean | undefined;
|
|
21302
|
+
formerly?: string[] | undefined;
|
|
20447
21303
|
}, {
|
|
20448
21304
|
type: string;
|
|
20449
21305
|
name: string;
|
|
20450
21306
|
description?: string | undefined;
|
|
20451
21307
|
optional?: boolean | undefined;
|
|
21308
|
+
formerly?: string[] | undefined;
|
|
20452
21309
|
}>, "many">>;
|
|
20453
|
-
/** A signature's parameters (name, type, optional, description) in declared order; only on kind signature. */
|
|
21310
|
+
/** A signature's parameters (name, type, optional, description, rename trace) in declared order; only on kind signature. */
|
|
20454
21311
|
params: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
20455
21312
|
name: z.ZodString;
|
|
20456
21313
|
type: z.ZodString;
|
|
20457
21314
|
description: z.ZodOptional<z.ZodString>;
|
|
20458
21315
|
optional: z.ZodOptional<z.ZodBoolean>;
|
|
21316
|
+
formerly: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
20459
21317
|
}, "strip", z.ZodTypeAny, {
|
|
20460
21318
|
type: string;
|
|
20461
21319
|
name: string;
|
|
20462
21320
|
description?: string | undefined;
|
|
20463
21321
|
optional?: boolean | undefined;
|
|
21322
|
+
formerly?: string[] | undefined;
|
|
20464
21323
|
}, {
|
|
20465
21324
|
type: string;
|
|
20466
21325
|
name: string;
|
|
20467
21326
|
description?: string | undefined;
|
|
20468
21327
|
optional?: boolean | undefined;
|
|
21328
|
+
formerly?: string[] | undefined;
|
|
20469
21329
|
}>, "many">>;
|
|
20470
21330
|
/** A signature's one output type; only on kind signature. */
|
|
20471
21331
|
returns: z.ZodOptional<z.ZodString>;
|
|
@@ -20546,6 +21406,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20546
21406
|
name: string;
|
|
20547
21407
|
description?: string | undefined;
|
|
20548
21408
|
optional?: boolean | undefined;
|
|
21409
|
+
formerly?: string[] | undefined;
|
|
20549
21410
|
}[];
|
|
20550
21411
|
kind: string;
|
|
20551
21412
|
values?: {
|
|
@@ -20557,6 +21418,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20557
21418
|
name: string;
|
|
20558
21419
|
description?: string | undefined;
|
|
20559
21420
|
optional?: boolean | undefined;
|
|
21421
|
+
formerly?: string[] | undefined;
|
|
20560
21422
|
}[] | undefined;
|
|
20561
21423
|
methods?: {
|
|
20562
21424
|
name: string;
|
|
@@ -20585,6 +21447,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20585
21447
|
name: string;
|
|
20586
21448
|
description?: string | undefined;
|
|
20587
21449
|
optional?: boolean | undefined;
|
|
21450
|
+
formerly?: string[] | undefined;
|
|
20588
21451
|
}[] | undefined;
|
|
20589
21452
|
methods?: {
|
|
20590
21453
|
name: string;
|
|
@@ -20603,6 +21466,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20603
21466
|
name: string;
|
|
20604
21467
|
description?: string | undefined;
|
|
20605
21468
|
optional?: boolean | undefined;
|
|
21469
|
+
formerly?: string[] | undefined;
|
|
20606
21470
|
}[] | undefined;
|
|
20607
21471
|
kind?: string | undefined;
|
|
20608
21472
|
returns?: string | undefined;
|
|
@@ -20759,9 +21623,9 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20759
21623
|
example?: string | undefined;
|
|
20760
21624
|
} | undefined;
|
|
20761
21625
|
dispatch?: {
|
|
20762
|
-
component: string;
|
|
20763
21626
|
method: string;
|
|
20764
21627
|
capability: string;
|
|
21628
|
+
component: string;
|
|
20765
21629
|
description?: string | undefined;
|
|
20766
21630
|
}[] | undefined;
|
|
20767
21631
|
formerly?: string[] | undefined;
|
|
@@ -20774,6 +21638,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20774
21638
|
name: string;
|
|
20775
21639
|
description?: string | undefined;
|
|
20776
21640
|
optional?: boolean | undefined;
|
|
21641
|
+
formerly?: string[] | undefined;
|
|
20777
21642
|
}[];
|
|
20778
21643
|
kind: string;
|
|
20779
21644
|
values?: {
|
|
@@ -20785,6 +21650,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20785
21650
|
name: string;
|
|
20786
21651
|
description?: string | undefined;
|
|
20787
21652
|
optional?: boolean | undefined;
|
|
21653
|
+
formerly?: string[] | undefined;
|
|
20788
21654
|
}[] | undefined;
|
|
20789
21655
|
methods?: {
|
|
20790
21656
|
name: string;
|
|
@@ -20921,9 +21787,9 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20921
21787
|
example?: string | undefined;
|
|
20922
21788
|
} | undefined;
|
|
20923
21789
|
dispatch?: {
|
|
20924
|
-
component: string;
|
|
20925
21790
|
method: string;
|
|
20926
21791
|
capability: string;
|
|
21792
|
+
component: string;
|
|
20927
21793
|
description?: string | undefined;
|
|
20928
21794
|
}[] | undefined;
|
|
20929
21795
|
formerly?: string[] | undefined;
|
|
@@ -20940,6 +21806,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20940
21806
|
name: string;
|
|
20941
21807
|
description?: string | undefined;
|
|
20942
21808
|
optional?: boolean | undefined;
|
|
21809
|
+
formerly?: string[] | undefined;
|
|
20943
21810
|
}[] | undefined;
|
|
20944
21811
|
methods?: {
|
|
20945
21812
|
name: string;
|
|
@@ -20958,6 +21825,7 @@ declare const SurfaceSnapshotSchema: z.ZodObject<{
|
|
|
20958
21825
|
name: string;
|
|
20959
21826
|
description?: string | undefined;
|
|
20960
21827
|
optional?: boolean | undefined;
|
|
21828
|
+
formerly?: string[] | undefined;
|
|
20961
21829
|
}[] | undefined;
|
|
20962
21830
|
kind?: string | undefined;
|
|
20963
21831
|
returns?: string | undefined;
|
|
@@ -21239,1146 +22107,430 @@ interface ExternalAddition {
|
|
|
21239
22107
|
* declaration and its pin (lock entry and snapshot) went, or why nothing was
|
|
21240
22108
|
* removed, in one sentence.
|
|
21241
22109
|
*/
|
|
21242
|
-
|
|
21243
|
-
|
|
21244
|
-
/** Whether
|
|
21245
|
-
|
|
21246
|
-
/** Whether the
|
|
21247
|
-
|
|
21248
|
-
/** Why nothing was removed: the alias is neither declared nor pinned. */
|
|
21249
|
-
refusal?: string;
|
|
21250
|
-
}
|
|
21251
|
-
/**
|
|
21252
|
-
* external_use_request — what `wairon externals use` and sdd_update_external
|
|
21253
|
-
* ask for: names to add to and remove from one declared external's `use`.
|
|
21254
|
-
*/
|
|
21255
|
-
interface ExternalUseRequest {
|
|
21256
|
-
alias: string;
|
|
21257
|
-
/** Public names to import bare (`*` for all). */
|
|
21258
|
-
add?: string[];
|
|
21259
|
-
/** Names to stop importing. */
|
|
21260
|
-
remove?: string[];
|
|
21261
|
-
/** Answer what the `use` would become, writing nothing. */
|
|
21262
|
-
dryRun?: boolean;
|
|
21263
|
-
}
|
|
21264
|
-
/**
|
|
21265
|
-
* external_use_change — the answer to changing one external's `use`: the
|
|
21266
|
-
* list after the change, what was added and removed, or the refusal.
|
|
21267
|
-
*/
|
|
21268
|
-
interface ExternalUseChange {
|
|
21269
|
-
alias: string;
|
|
21270
|
-
/** Whether `.wai/project.yaml` now carries the changed `use` (false on a refusal, a dry run and when nothing changed). */
|
|
21271
|
-
written: boolean;
|
|
21272
|
-
/** The `use` list after the change, in order. */
|
|
21273
|
-
use: string[];
|
|
21274
|
-
/** The names this change imports that were not imported before. */
|
|
21275
|
-
added: string[];
|
|
21276
|
-
/** The names this change stops importing. */
|
|
21277
|
-
removed: string[];
|
|
21278
|
-
/** Why nothing was written, in one sentence. */
|
|
21279
|
-
refusal?: string;
|
|
21280
|
-
}
|
|
21281
|
-
/** The verdict on one used member of a pinned external. */
|
|
21282
|
-
type ExternalUseState = 'unchanged' | 'changed' | 'removed' | 'unlocked' | 'unavailable' | 'renamed';
|
|
21283
|
-
/** external_use_status — the verdict on one used member of one pinned external. */
|
|
21284
|
-
interface ExternalUseStatus {
|
|
21285
|
-
publicName?: string;
|
|
21286
|
-
member?: string;
|
|
21287
|
-
state: ExternalUseState;
|
|
21288
|
-
/** EXTERNAL_CHECK_UNAVAILABLE on an unavailable entry — never a pass. */
|
|
21289
|
-
code?: string;
|
|
21290
|
-
detail?: string;
|
|
21291
|
-
/**
|
|
21292
|
-
* On a renamed use: the public name (and member, as `name.member`) the live
|
|
21293
|
-
* producer's rename trace carries the used name forward to — what the
|
|
21294
|
-
* consumer's references should now name.
|
|
21295
|
-
*/
|
|
21296
|
-
renamedTo?: string;
|
|
21297
|
-
}
|
|
21298
|
-
/** external_status — the status of one declared external. */
|
|
21299
|
-
interface ExternalStatus {
|
|
21300
|
-
alias: string;
|
|
21301
|
-
project: string;
|
|
21302
|
-
sourceKind: ExternalSourceKind;
|
|
21303
|
-
pinned: boolean;
|
|
21304
|
-
reachable: boolean;
|
|
21305
|
-
stale: boolean;
|
|
21306
|
-
drifted?: boolean;
|
|
21307
|
-
uses: ExternalUseStatus[];
|
|
21308
|
-
detail?: string;
|
|
21309
|
-
/**
|
|
21310
|
-
* True when the producer's root lies outside the request's reach and was
|
|
21311
|
-
* therefore not read: a family run that narrowed the reach to its selection
|
|
21312
|
-
* counts it in its hint rather than as a comparison that failed.
|
|
21313
|
-
*/
|
|
21314
|
-
outOfReach?: boolean;
|
|
21315
|
-
/** The content digest the lock recorded for this producer; provenance only, never compared here. */
|
|
21316
|
-
pinnedDigest?: string;
|
|
21317
|
-
/** The producer's commit as the lock recorded it (another repository only); provenance only. */
|
|
21318
|
-
pinnedCommit?: string;
|
|
21319
|
-
/**
|
|
21320
|
-
* The carried facts the pinned snapshot no longer matches in the live
|
|
21321
|
-
* producer (an abi, a transport, a role, the targetLanguage, a rename
|
|
21322
|
-
* trace): the snapshot is stale and a re-pin refreshes it. Absent when the
|
|
21323
|
-
* producer was not read or nothing carried moved.
|
|
21324
|
-
*/
|
|
21325
|
-
staleFacts?: string[];
|
|
21326
|
-
}
|
|
21327
|
-
/** ok | drifted | incompatible | unavailable — a relation's health in one word. */
|
|
21328
|
-
type RelationHealth = 'ok' | 'drifted' | 'incompatible' | 'unavailable';
|
|
21329
|
-
/**
|
|
21330
|
-
* external_status.health — the relation's health in one word, the same on the
|
|
21331
|
-
* canvas's edges and on the hosted Relations tab. A known break outranks the
|
|
21332
|
-
* unknown, and the unknown outranks a benign change, so nothing that could not
|
|
21333
|
-
* be checked ever reads as ok. Pure: over the status's own fields.
|
|
21334
|
-
*/
|
|
21335
|
-
declare function relationHealth(status: ExternalStatus): RelationHealth;
|
|
21336
|
-
/**
|
|
21337
|
-
* project_relations — one project of a family with its externals status, read
|
|
21338
|
-
* at its own root: what the canvas colours its consumption edges from.
|
|
21339
|
-
*/
|
|
21340
|
-
interface ProjectRelations {
|
|
21341
|
-
/** The consuming project's key in the bound family ('' for the bound root). */
|
|
21342
|
-
project: string;
|
|
21343
|
-
/** Its externals status, per use — and one per contained project member it references. */
|
|
21344
|
-
externals: ExternalStatus[];
|
|
21345
|
-
/** ISO-8601 time the statuses were read. */
|
|
21346
|
-
comparedAt: string;
|
|
21347
|
-
/** Why the project's statuses could not be read at all; then externals is empty. */
|
|
21348
|
-
detail?: string;
|
|
21349
|
-
}
|
|
21350
|
-
/** external_listing — one row of `wairon externals list`. */
|
|
21351
|
-
interface ExternalListing {
|
|
21352
|
-
alias: string;
|
|
21353
|
-
project: string;
|
|
21354
|
-
sourceKind: ExternalSourceKind;
|
|
21355
|
-
relation?: ExternalRelation;
|
|
21356
|
-
directory?: string;
|
|
21357
|
-
audience: string;
|
|
21358
|
-
lock?: ExternalLockEntry;
|
|
21359
|
-
problem?: string;
|
|
21360
|
-
}
|
|
21361
|
-
/** One rendered per-portal OpenAPI document (see the codec's toOpenApiSet). */
|
|
21362
|
-
declare const NamedOpenApiSpecSchema: z.ZodObject<{
|
|
21363
|
-
portalId: z.ZodString;
|
|
21364
|
-
name: z.ZodString;
|
|
21365
|
-
document: z.ZodString;
|
|
21366
|
-
}, "strip", z.ZodTypeAny, {
|
|
21367
|
-
name: string;
|
|
21368
|
-
document: string;
|
|
21369
|
-
portalId: string;
|
|
21370
|
-
}, {
|
|
21371
|
-
name: string;
|
|
21372
|
-
document: string;
|
|
21373
|
-
portalId: string;
|
|
21374
|
-
}>;
|
|
21375
|
-
type NamedOpenApiSpec = z.infer<typeof NamedOpenApiSpecSchema>;
|
|
21376
|
-
declare const GroupSpecSchema: z.ZodObject<{
|
|
21377
|
-
kind: z.ZodLiteral<"group">;
|
|
21378
|
-
id: z.ZodString;
|
|
21379
|
-
name: z.ZodString;
|
|
21380
|
-
description: z.ZodOptional<z.ZodString>;
|
|
21381
|
-
createdAt: z.ZodString;
|
|
21382
|
-
updatedAt: z.ZodString;
|
|
21383
|
-
}, "strip", z.ZodTypeAny, {
|
|
21384
|
-
id: string;
|
|
21385
|
-
name: string;
|
|
21386
|
-
kind: "group";
|
|
21387
|
-
createdAt: string;
|
|
21388
|
-
updatedAt: string;
|
|
21389
|
-
description?: string | undefined;
|
|
21390
|
-
}, {
|
|
21391
|
-
id: string;
|
|
21392
|
-
name: string;
|
|
21393
|
-
kind: "group";
|
|
21394
|
-
createdAt: string;
|
|
21395
|
-
updatedAt: string;
|
|
21396
|
-
description?: string | undefined;
|
|
21397
|
-
}>;
|
|
21398
|
-
type GroupSpec = z.infer<typeof GroupSpecSchema>;
|
|
21399
|
-
|
|
21400
|
-
/**
|
|
21401
|
-
* technology.packages — the package names the code twin of the leakage rule
|
|
21402
|
-
* (TECH_LEAKAGE_IN_CODE) compares an import's package name with.
|
|
21403
|
-
*
|
|
21404
|
-
* A design names a technology the way people say it (`postgres`), while the
|
|
21405
|
-
* code imports its driver (`pg`). Comparing only the declared tokens left the
|
|
21406
|
-
* code fence inert on an ordinary design, so this module carries a CURATED,
|
|
21407
|
-
* DOCUMENTED table of the common packages each technology is known by, keyed by
|
|
21408
|
-
* the technology's usual spellings. It is deliberately short: a package belongs
|
|
21409
|
-
* here only when importing it can mean nothing BUT that technology. An HTTP
|
|
21410
|
-
* client (fetch, axios, got, undici) is never a technology — it is how an
|
|
21411
|
-
* Adapter reaches anything — so no entry names one.
|
|
21412
|
-
*
|
|
21413
|
-
* Extending it takes no code change: a technology written `{ name, matches }`
|
|
21414
|
-
* adds its own tokens, and a loaded pack contributes packages per technology
|
|
21415
|
-
* name (an extension pack's `technologyPackages`).
|
|
21416
|
-
*/
|
|
21417
|
-
|
|
21418
|
-
/** The common packages of one technology. */
|
|
21419
|
-
interface TechnologyPackageEntry {
|
|
21420
|
-
/** The names a design writes the technology under, lower-case. */
|
|
21421
|
-
names: readonly string[];
|
|
21422
|
-
/** The packages importing which means that technology. */
|
|
21423
|
-
packages: readonly string[];
|
|
21424
|
-
}
|
|
21425
|
-
/**
|
|
21426
|
-
* The built-in table. Documented in docs/cli.md ("Technologies and their
|
|
21427
|
-
* packages"); keep the two in step.
|
|
21428
|
-
*/
|
|
21429
|
-
declare const TECHNOLOGY_PACKAGES: readonly TechnologyPackageEntry[];
|
|
21430
|
-
/**
|
|
21431
|
-
* technology.packages — the entry's tokens, then the built-in table's packages
|
|
21432
|
-
* for its name, then the packages `contributed` lists under its name (what
|
|
21433
|
-
* loaded packs contribute, keyed by technology name), lower-cased and
|
|
21434
|
-
* de-duplicated in that order. Pure: the contributions are handed in.
|
|
21435
|
-
*/
|
|
21436
|
-
declare function technologyPackages(tech: Technology, contributed?: Readonly<Record<string, readonly string[]>>): string[];
|
|
21437
|
-
|
|
21438
|
-
/**
|
|
21439
|
-
* The type identifiers a type string names, with comments, trailing prose and
|
|
21440
|
-
* string literals stripped. Duplicates are kept, in order of appearance.
|
|
21441
|
-
*/
|
|
21442
|
-
declare function extractTypeIdentifiers(typeStr: string): string[];
|
|
21443
|
-
/**
|
|
21444
|
-
* The method shape the type references are read from: a contract method or a
|
|
21445
|
-
* type method (whose params feed its references exactly as a contract
|
|
21446
|
-
* method's do). The text and returns may be absent while a method is still in
|
|
21447
|
-
* its stored form — a sourced method states neither, and a params-bearing one
|
|
21448
|
-
* need not store its text — and an absent one names nothing.
|
|
21449
|
-
*/
|
|
21450
|
-
interface MethodLike {
|
|
21451
|
-
signature?: string;
|
|
21452
|
-
returns?: string;
|
|
21453
|
-
params?: {
|
|
21454
|
-
name: string;
|
|
21455
|
-
type: string;
|
|
21456
|
-
}[];
|
|
21457
|
-
}
|
|
21458
|
-
/**
|
|
21459
|
-
* method_signature.typeRefs — the named types a method references. Structured
|
|
21460
|
-
* `params` are authoritative when present (no prose parsing): the named
|
|
21461
|
-
* references of every param type and of the returns, each parsed under the
|
|
21462
|
-
* grammar. Otherwise the prose signature and the returns are tokenized
|
|
21463
|
-
* leniently, as the unstructured form always was.
|
|
21464
|
-
*/
|
|
21465
|
-
declare function methodTypeRefs(m: MethodLike): string[];
|
|
21466
|
-
/**
|
|
21467
|
-
* type_spec.signatureTypeRefs — the named types a signature type references:
|
|
21468
|
-
* every param type, then its returns, each parsed under the grammar — the
|
|
21469
|
-
* references a signature carries in place of fields. None for any other kind,
|
|
21470
|
-
* whose references are its fields'.
|
|
21471
|
-
*/
|
|
21472
|
-
declare function signatureTypeRefs(type: Pick<TypeSpec, 'kind' | 'params' | 'returns'>): string[];
|
|
21473
|
-
/**
|
|
21474
|
-
* method_signature.genericParameters — the generic parameters declared before
|
|
21475
|
-
* the parameter list of the method's prose signature (find<T>(id: string)
|
|
21476
|
-
* gives T).
|
|
21477
|
-
*/
|
|
21478
|
-
declare function methodGenericParameters(method: {
|
|
21479
|
-
signature?: string;
|
|
21480
|
-
}): Set<string>;
|
|
21481
|
-
/**
|
|
21482
|
-
* reference_resolution.nameKey — the one key a bare name is compared by,
|
|
21483
|
-
* locally and through imports alike: lower-cased, every character outside
|
|
21484
|
-
* [a-z0-9] removed, so `SharedError`, `shared-error` and `shared_error` are
|
|
21485
|
-
* one name. It is normalizePart, the per-segment normalization
|
|
21486
|
-
* type_spec.matchesRef already applies.
|
|
21487
|
-
*/
|
|
21488
|
-
declare function nameKey(name: string): string;
|
|
21489
|
-
/**
|
|
21490
|
-
* Whether a written type reference names a type id: the reference's `::` or
|
|
21491
|
-
* `.` segments are a suffix of the id's, compared ignoring case and
|
|
21492
|
-
* punctuation.
|
|
21493
|
-
*/
|
|
21494
|
-
declare function matchTypeRef(ref: string, typeId: string): boolean;
|
|
21495
|
-
/**
|
|
21496
|
-
* type_spec.qualifiedId — the type's id qualified by its owning subsystem, when
|
|
21497
|
-
* the id is not already qualified.
|
|
21498
|
-
*/
|
|
21499
|
-
declare function qualifiedTypeId(type: Pick<TypeSpec, 'id' | 'subsystem'>): string;
|
|
21500
|
-
/**
|
|
21501
|
-
* type_spec.matchesRef — whether a written type reference names this type: the
|
|
21502
|
-
* reference's `::` or `.` segments are a suffix of the qualified id, compared
|
|
21503
|
-
* ignoring case and punctuation.
|
|
21504
|
-
*/
|
|
21505
|
-
declare function typeMatchesRef(type: Pick<TypeSpec, 'id' | 'subsystem'>, ref: string): boolean;
|
|
21506
|
-
/** type_spec.genericParameters — the generic parameters declared in the type's name (Page<T> gives T). */
|
|
21507
|
-
declare function typeGenericParameters(type: Pick<TypeSpec, 'name'>): Set<string>;
|
|
21508
|
-
/**
|
|
21509
|
-
* type_spec.fieldTypeRefs — the named types one of this type's field types
|
|
21510
|
-
* references (type_expression.namedRefs of the field's parsed type), with the
|
|
21511
|
-
* type's own generic parameters left out (compared ignoring case). A field
|
|
21512
|
-
* type that does not parse names nothing: its problem is
|
|
21513
|
-
* TYPE_EXPRESSION_INVALID's to report. It takes the field's type rather than
|
|
21514
|
-
* its name, because nothing makes field names unique within a type.
|
|
21515
|
-
*/
|
|
21516
|
-
declare function fieldTypeRefs(type: Pick<TypeSpec, 'name'>, fieldType: string): string[];
|
|
21517
|
-
/** interface_spec.genericParameters — the generic parameters declared in the interface's name. */
|
|
21518
|
-
declare function interfaceGenericParameters(intf: Pick<InterfaceSpec, 'name'>): Set<string>;
|
|
21519
|
-
|
|
21520
|
-
/** type_dialect — one language's reading and writing of the neutral grammar. */
|
|
21521
|
-
interface TypeDialect {
|
|
21522
|
-
/** The language this dialect reads and writes, as the code analyzer names it. */
|
|
21523
|
-
language: string;
|
|
21524
|
-
/** The canonical expression a code annotation spells, or null when it has no canonical reading. */
|
|
21525
|
-
read(annotation: string): TypeExpression | null;
|
|
21526
|
-
/** Whether a code annotation and a canonical spec expression describe the same type. */
|
|
21527
|
-
agrees(annotation: string, expression: TypeExpression, codeNames: Map<string, string>): boolean;
|
|
21528
|
-
/** This language's idiomatic spelling of a canonical expression. */
|
|
21529
|
-
write(expression: TypeExpression): string;
|
|
21530
|
-
/** The write table as lines an implementer brief carries. */
|
|
21531
|
-
mappingLines(): string[];
|
|
21532
|
-
}
|
|
21533
|
-
/** type_dialect.forLanguage — the dialect shipped for a language, or null when none reads it yet. */
|
|
21534
|
-
declare function typeDialectFor(language: string): TypeDialect | null;
|
|
21535
|
-
/**
|
|
21536
|
-
* type_dialect.mappingFor — the write table an implementer brief carries for
|
|
21537
|
-
* a language: a shipped dialect's mappingLines, else a MAPPING-ONLY table for
|
|
21538
|
-
* a language no analyzer reads yet (Rust, Python), whose last line says that
|
|
21539
|
-
* code conformance does not compare its types. Null for a language with
|
|
21540
|
-
* neither.
|
|
21541
|
-
*/
|
|
21542
|
-
declare function typeMappingFor(language: string): string[] | null;
|
|
21543
|
-
|
|
21544
|
-
/**
|
|
21545
|
-
* The step graph of one narrative (step_graph): the SINGLE source of truth for
|
|
21546
|
-
* successor semantics (fall-through + jumps; loop and try headers carry both
|
|
21547
|
-
* their body edge and their after-region exit edge; return/throw terminate).
|
|
21548
|
-
* The narrative-reachability check and the antipattern analysis both read
|
|
21549
|
-
* it, so the two never disagree about what "next" means.
|
|
21550
|
-
*/
|
|
21551
|
-
interface StepGraph {
|
|
21552
|
-
/** The narrative's step numbers in ascending order. */
|
|
21553
|
-
stepNumbers: number[];
|
|
21554
|
-
/** The step with this number, if there is one. */
|
|
21555
|
-
stepAt(stepNumber: number): NarrativeStep | undefined;
|
|
21556
|
-
/** The next step number in ascending order, ignoring jumps and parallel joins. */
|
|
21557
|
-
nextOf(stepNumber: number): number | undefined;
|
|
21558
|
-
/** The distinct existing step numbers flow can continue at from this step. */
|
|
21559
|
-
successorsOf(stepNumber: number): number[];
|
|
21560
|
-
}
|
|
21561
|
-
/**
|
|
21562
|
-
* method_implementation.stepGraph — the step graph of the method's narrative.
|
|
21563
|
-
* Simple steps fall through; a branch continues at its true and false steps, a
|
|
21564
|
-
* switch at its cases and default; a loop at its body and the step after its
|
|
21565
|
-
* region; a try at its body, catch steps, finally step and the step after its
|
|
21566
|
-
* region; a parallel fans out to its arms, whose last steps continue at the
|
|
21567
|
-
* join; a jump at its target; return and throw end the path.
|
|
21568
|
-
*/
|
|
21569
|
-
declare function stepGraph(method: Pick<MethodImplementation, 'narrative'>): StepGraph;
|
|
21570
|
-
|
|
21571
|
-
/** The finding codes a narrative step-configuration problem maps to. */
|
|
21572
|
-
type StepConfigCode = 'DUPLICATE_STEP_LABEL' | 'MALFORMED_FLOW_STEP' | 'INVALID_STEP_JUMP' | 'FOREIGN_STEP_FIELD';
|
|
21573
|
-
/**
|
|
21574
|
-
* One thing wrong with a narrative's step configuration (step_config_problem):
|
|
21575
|
-
* the step it sits on, the finding code it maps to, and the detail a rule
|
|
21576
|
-
* appends to its own "Method X in implementation Y" prefix. Duplicate labels,
|
|
21577
|
-
* missing or misplaced flow config, and jumps that land nowhere are all
|
|
21578
|
-
* reported through this one shape.
|
|
21579
|
-
*/
|
|
21580
|
-
interface StepConfigProblem {
|
|
21581
|
-
/** The step the problem sits on; a duplicate label names the earlier step in its detail. */
|
|
21582
|
-
stepNumber: number;
|
|
21583
|
-
/** The finding code this problem maps to. */
|
|
21584
|
-
code: StepConfigCode;
|
|
21585
|
-
/** The problem stated in full, ready to follow a rule's own location prefix. */
|
|
21586
|
-
detail: string;
|
|
21587
|
-
}
|
|
21588
|
-
/**
|
|
21589
|
-
* What a narrative's step configuration says about itself (step_config_verdict):
|
|
21590
|
-
* the problems it carries, in step order, and whether its control flow is
|
|
21591
|
-
* SOUND — no duplicate step number, no missing or misplaced flow config, and
|
|
21592
|
-
* no jump that lands outside the narrative. A duplicate label is a problem but
|
|
21593
|
-
* not an unsoundness: labels name steps, they do not route flow.
|
|
21594
|
-
*
|
|
21595
|
-
* Soundness is the gate every later phase runs behind. Reachability, region
|
|
21596
|
-
* nesting and jump-edge judgement all read the step graph, and a graph built
|
|
21597
|
-
* over jumps that target nothing reports steps as dead that are merely
|
|
21598
|
-
* mis-numbered — wrong findings, not just noisier ones.
|
|
21599
|
-
*/
|
|
21600
|
-
interface StepConfigVerdict {
|
|
21601
|
-
/** The step-config problems, in step order: labels first, then numbering, then per-step config and jump targets. */
|
|
21602
|
-
problems: StepConfigProblem[];
|
|
21603
|
-
/** True when nothing found makes the control flow unreadable — the precondition for judging structure. */
|
|
21604
|
-
sound: boolean;
|
|
22110
|
+
/** external_removal_plan — what removing one external takes out: its declaration, its pin, or both. */
|
|
22111
|
+
interface ExternalRemovalPlan {
|
|
22112
|
+
/** Whether the declaration in `.wai/project.yaml` goes. */
|
|
22113
|
+
declaration: boolean;
|
|
22114
|
+
/** Whether the lock entry and pinned snapshot go. */
|
|
22115
|
+
pin: boolean;
|
|
21605
22116
|
}
|
|
21606
|
-
|
|
21607
|
-
|
|
21608
|
-
|
|
21609
|
-
|
|
21610
|
-
|
|
21611
|
-
|
|
21612
|
-
|
|
21613
|
-
|
|
21614
|
-
|
|
21615
|
-
|
|
21616
|
-
|
|
21617
|
-
|
|
21618
|
-
declare const STEP_TYPE_FIELDS: Readonly<Record<string, readonly string[]>>;
|
|
21619
|
-
/**
|
|
21620
|
-
* What a step carries whatever its type — the human's own content. A retype
|
|
21621
|
-
* keeps these: the author is changing HOW the step works, not what it is for,
|
|
21622
|
-
* and re-typing a step should never cost them the sentence they wrote or the
|
|
21623
|
-
* anchor other steps address it by.
|
|
21624
|
-
*/
|
|
21625
|
-
declare const STEP_COMMON_FIELDS: readonly string[];
|
|
21626
|
-
/** The transient `*Label` twin of each jump-by-number field, resolved and dropped at write time. */
|
|
21627
|
-
declare const STEP_LABEL_TWINS: Readonly<Record<string, string>>;
|
|
21628
|
-
/** Every field a step of this type may carry, including the transient label twins. */
|
|
21629
|
-
declare function stepFieldsFor(type: string): Set<string>;
|
|
21630
|
-
/**
|
|
21631
|
-
* narrative_step.foreignFields — the fields this step carries that its own
|
|
21632
|
-
* `type` cannot: everything set on it beyond the common fields and the ones
|
|
21633
|
-
* its type adds. An unknown step type has no table, so nothing is foreign to
|
|
21634
|
-
* it — the schema is what names that.
|
|
21635
|
-
*/
|
|
21636
|
-
declare function narrativeStepForeignFields(step: NarrativeStep): string[];
|
|
21637
|
-
/**
|
|
21638
|
-
* method_implementation.stepConfigVerdict — the step-config problems of this
|
|
21639
|
-
* method's narrative and whether its control flow is sound. The schema keeps
|
|
21640
|
-
* every flow field optional, so this derivation is what holds each step type
|
|
21641
|
-
* to the config it needs, each label to one step, each step number to one
|
|
21642
|
-
* step, and every jump field to a step number the narrative actually has.
|
|
21643
|
-
*/
|
|
21644
|
-
declare function stepConfigVerdict(method: Pick<MethodImplementation, 'narrative'>): StepConfigVerdict;
|
|
21645
|
-
|
|
21646
|
-
type AnalysisGrade = 'exact' | 'pattern' | 'generic';
|
|
21647
|
-
type SourceFileStatus = 'analyzed' | 'missing' | 'escaped' | 'unreadable';
|
|
21648
|
-
/**
|
|
21649
|
-
* One runtime (value) import binding a file makes: the module specifier a
|
|
21650
|
-
* local name came from, and whether it was bound as a whole NAMESPACE.
|
|
21651
|
-
*
|
|
21652
|
-
* The namespace flag separates the two readings of `x.save()`. For a namespace
|
|
21653
|
-
* import (`import * as specs from './specs.js'`), `specs.save` IS that
|
|
21654
|
-
* module's own export, so the call site resolves to the module. For a named or
|
|
21655
|
-
* default binding, `db.save` is a property of a VALUE that module handed over,
|
|
21656
|
-
* and where that property's function was written is beyond a pure model — so
|
|
21657
|
-
* it resolves to nothing rather than to the module.
|
|
21658
|
-
*
|
|
21659
|
-
* Type-only imports are never recorded: a type binding cannot be a call origin.
|
|
21660
|
-
*/
|
|
21661
|
-
/**
|
|
21662
|
-
* One name a file republishes from another module (source_file_facts
|
|
21663
|
-
* reexportBindings): `export { local as exported } from 'from'`, or a star
|
|
21664
|
-
* re-export, which republishes every name its module exports under that same
|
|
21665
|
-
* name and is written with `*` on both sides.
|
|
21666
|
-
*/
|
|
21667
|
-
interface ReexportBindingFact {
|
|
21668
|
-
/** The name this file publishes it under; `*` for a star re-export. */
|
|
21669
|
-
exported: string;
|
|
21670
|
-
/** The name the module it comes from publishes it under; `*` for a star re-export. */
|
|
21671
|
-
local: string;
|
|
21672
|
-
/** The module specifier, exactly as written. */
|
|
21673
|
-
from: string;
|
|
21674
|
-
}
|
|
21675
|
-
/**
|
|
21676
|
-
* One name a file publishes BOUND to another name of its own scope, with no
|
|
21677
|
-
* module specifier of its own (source_file_facts exportAliases): an export
|
|
21678
|
-
* specifier `export { local as exported }`, renamed or not, or an
|
|
21679
|
-
* identifier-valued property of an exported top-level object literal —
|
|
21680
|
-
* `{ exported: local }` or the shorthand `{ exported }` — which then carries
|
|
21681
|
-
* the object's binding name as its `container`. The local name is this file's
|
|
21682
|
-
* own declaration, or an import binding that leads on to the module it came
|
|
21683
|
-
* from: either way the forwarding is written down, one hop away.
|
|
21684
|
-
*/
|
|
21685
|
-
interface ExportAliasFact {
|
|
21686
|
-
/** The name this file publishes: the export specifier's exported name, or the object property's key. */
|
|
21687
|
-
exported: string;
|
|
21688
|
-
/** The name of this file's own scope it is bound to: a local declaration, or an import binding. */
|
|
21689
|
-
local: string;
|
|
21690
|
-
/** The exported object literal's binding name, set only for a property alias — what an `exportedVia` handle names. */
|
|
21691
|
-
container?: string;
|
|
21692
|
-
}
|
|
21693
|
-
interface ImportBindingFact {
|
|
21694
|
-
/** The module specifier the binding came from, exactly as written. */
|
|
21695
|
-
from: string;
|
|
21696
|
-
/** True for `import * as name from …` — the only binding whose property calls are that module's own exports. */
|
|
21697
|
-
namespace?: boolean;
|
|
21698
|
-
/** The name the module publishes it under, set only when the import renamed it (`import { save as store }`). */
|
|
21699
|
-
imported?: string;
|
|
21700
|
-
}
|
|
21701
|
-
/**
|
|
21702
|
-
* One call SITE SHAPE inside a named function-like: the invoked name together
|
|
21703
|
-
* with how the call was written. Shape is what a pure model can honestly say
|
|
21704
|
-
* about a call's ORIGIN — with no type checker, `save(x)`, `ledger.save(x)`,
|
|
21705
|
-
* `this.store.save(x)` and `new Ledger(db).save(x)` are four different
|
|
21706
|
-
* questions, and collapsing them onto the name "save" is what let a call into
|
|
21707
|
-
* an unrelated module count as realizing a narrative step.
|
|
21708
|
-
*
|
|
21709
|
-
* Sites are deduplicated per shape, never counted: the checks that read them
|
|
21710
|
-
* ask where a call could land, never how often it was written.
|
|
21711
|
-
*/
|
|
21712
|
-
interface CallSiteFact {
|
|
21713
|
-
/** The invoked name: the identifier of a bare call, the property name of a member call. */
|
|
21714
|
-
name: string;
|
|
21715
|
-
/** True when the call was written as a member access (`receiver.name(…)`). */
|
|
21716
|
-
member: boolean;
|
|
21717
|
-
/**
|
|
21718
|
-
* The receiver identifier — set only when the receiver is a plain identifier
|
|
21719
|
-
* (`specs.save()` → "specs"). The one receiver that can be PROVEN, when the
|
|
21720
|
-
* name is a namespace import binding and its properties are that module's
|
|
21721
|
-
* own exports — and otherwise a receiver to follow past the value it holds,
|
|
21722
|
-
* through the type the file ANNOTATES the name with.
|
|
21723
|
-
*/
|
|
21724
|
-
via?: string;
|
|
21725
|
-
/**
|
|
21726
|
-
* The instance FIELD the receiver is — set only when the call was written
|
|
21727
|
-
* `this.<field>.name(…)` (`this.store.save()` → "store"), and never together
|
|
21728
|
-
* with `via`. A receiver a pure model can follow past the value it holds,
|
|
21729
|
-
* because the class DECLARES what the field is; what that type resolves to
|
|
21730
|
-
* is a POSSIBLE origin, never a proven one, since the declared type says
|
|
21731
|
-
* what a collaborator is and not which class ships the body.
|
|
21732
|
-
*/
|
|
21733
|
-
field?: string;
|
|
21734
|
-
/**
|
|
21735
|
-
* The CLASS the receiver was constructed from — set only when the call was
|
|
21736
|
-
* written `new Class(…).name(…)` (`new ApprovalRegistry(store).create()` →
|
|
21737
|
-
* "ApprovalRegistry"), and never together with `via` or `field`. Another
|
|
21738
|
-
* receiver a pure model can follow, because the code NAMES the class it
|
|
21739
|
-
* built. Like a declared field type it is a POSSIBLE origin and never a
|
|
21740
|
-
* proven one: a method the class INHERITS is written in its base's module,
|
|
21741
|
-
* not in the constructed class's.
|
|
21742
|
-
*/
|
|
21743
|
-
constructed?: string;
|
|
21744
|
-
/**
|
|
21745
|
-
* The function whose RESULT the receiver is — set only when the call was
|
|
21746
|
-
* written `fn(…).name(…)` with `fn` a plain identifier
|
|
21747
|
-
* (`current().updateSpec()` → "current"), and never together with `via`,
|
|
21748
|
-
* `field` or `constructed`. Followed through what the code writes down
|
|
21749
|
-
* about fn's result (SourceFileFacts.returnTypes): a POSSIBLE origin and
|
|
21750
|
-
* never a proven one, and only where the module that type leads to holds a
|
|
21751
|
-
* body under the invoked name.
|
|
21752
|
-
*/
|
|
21753
|
-
returnedBy?: string;
|
|
21754
|
-
/**
|
|
21755
|
-
* The top-level named class whose own method the call sits in — set only
|
|
21756
|
-
* when the call was written `this.name(…)` directly inside a method,
|
|
21757
|
-
* accessor or constructor of that class (an arrow function keeps `this`; a
|
|
21758
|
-
* nested function expression rebinds it and records nothing). A POSSIBLE
|
|
21759
|
-
* origin and never a proven one, since a subclass may override the method,
|
|
21760
|
-
* and only where the class holds a body under the invoked name.
|
|
21761
|
-
*/
|
|
21762
|
-
enclosingClass?: string;
|
|
21763
|
-
/**
|
|
21764
|
-
* The receiver written as a CHAIN of property accesses — set only when the
|
|
21765
|
-
* call was written `this.<field>.<property>….name(…)`
|
|
21766
|
-
* (`this.c.tracker.checkIn()` → ["this", "c", "tracker"]) or
|
|
21767
|
-
* `<name>.<property>….name(…)` (`deps.tracker.checkIn()` → ["deps",
|
|
21768
|
-
* "tracker"]), and never together with `via`, `field`, `constructed`,
|
|
21769
|
-
* `returnedBy` or `enclosingClass`. The shape constructor-injected
|
|
21770
|
-
* collaborators take when they arrive as ONE bag object. Followed link by
|
|
21771
|
-
* link through what the code DECLARES each link to be — the root's field
|
|
21772
|
-
* or annotated type, then each property's declared type on the shape that
|
|
21773
|
-
* declares it — and, like every receiver past an import binding, a
|
|
21774
|
-
* POSSIBLE origin and never a proven one.
|
|
21775
|
-
*/
|
|
21776
|
-
receiverPath?: string[];
|
|
21777
|
-
/**
|
|
21778
|
-
* The file this site was READ in, set only when it is not the file these
|
|
21779
|
-
* facts describe — a pure re-export barrel carries the sites of the function
|
|
21780
|
-
* it publishes. A carried site's bare names and receivers resolve in that
|
|
21781
|
-
* file's scope, never in the barrel's.
|
|
21782
|
-
*/
|
|
21783
|
-
from?: string;
|
|
21784
|
-
}
|
|
21785
|
-
/**
|
|
21786
|
-
* One function-like BODY under its name, with where it is bound — the
|
|
21787
|
-
* identity that tells same-named functions in one file apart.
|
|
21788
|
-
*
|
|
21789
|
-
* module (no `container`, no `nested`) a top-level function declaration,
|
|
21790
|
-
* or a function/arrow initializer of a top-level variable: what
|
|
21791
|
-
* the bare name means anywhere in the module's scope.
|
|
21792
|
-
* member `container` set: a member of a top-level named class, or a
|
|
21793
|
-
* property of an object literal a top-level variable is bound to
|
|
21794
|
-
* (`const store = { save() {} }` → container "store"). Reachable
|
|
21795
|
-
* only through that container, never by the bare name.
|
|
21796
|
-
* nested `nested` set: any other binding — a function inside a
|
|
21797
|
-
* function, a member of a class or object literal the model
|
|
21798
|
-
* cannot name. A nested body can shadow the bare name in the
|
|
21799
|
-
* scope it sits in, so where one exists the name stays ambiguous.
|
|
21800
|
-
*/
|
|
21801
|
-
interface FunctionBodyFact {
|
|
21802
|
-
/** The named class or top-level object literal the body is a member of. */
|
|
21803
|
-
container?: string;
|
|
21804
|
-
/** True when the body is bound somewhere the model cannot name. */
|
|
21805
|
-
nested?: boolean;
|
|
21806
|
-
/** The call sites written inside this body alone. */
|
|
21807
|
-
sites: CallSiteFact[];
|
|
21808
|
-
}
|
|
21809
|
-
/**
|
|
21810
|
-
* One data member of a shape a file declares: its name, and whether the code
|
|
21811
|
-
* lets it be ABSENT.
|
|
21812
|
-
*
|
|
21813
|
-
* Absent-able is the only optionality worth recording, because it is the only
|
|
21814
|
-
* one a spec can be wrong about in a way a reader would notice — a field the
|
|
21815
|
-
* spec calls required that the code lets you omit is a promise the data does
|
|
21816
|
-
* not keep. A wrapper that FILLS a missing key is not absent-able: the value
|
|
21817
|
-
* the type finally holds always has it, which is the shape the spec describes.
|
|
21818
|
-
*/
|
|
21819
|
-
interface ShapeMemberFact {
|
|
21820
|
-
/** The member's name, as the code spells it. */
|
|
21821
|
-
name: string;
|
|
21822
|
-
/** Whether the code lets the member be absent from a value of this shape. */
|
|
21823
|
-
optional: boolean;
|
|
21824
|
-
}
|
|
21825
|
-
/**
|
|
21826
|
-
* One parameter of a function as the code declares it: what it is called, what
|
|
21827
|
-
* it is annotated with, and whether a caller may leave it out.
|
|
21828
|
-
*
|
|
21829
|
-
* The TYPE is what makes a RENAME tellable from a dropped parameter —
|
|
21830
|
-
* `seed(config: HostConfig)` realized as `bootstrapInstance(cfg: HostConfig)`
|
|
21831
|
-
* is one parameter under two names, and matching on names alone reads it as a
|
|
21832
|
-
* parameter the code lost. A parameter bound by destructuring has no name to
|
|
21833
|
-
* compare, so it records none rather than inventing one: a guess about
|
|
21834
|
-
* somebody's signature is worse than silence, exactly as it is for a field.
|
|
21835
|
-
*/
|
|
21836
|
-
interface ParameterFact {
|
|
21837
|
-
/** The parameter's name, absent when it is bound by a destructuring pattern instead. */
|
|
21838
|
-
name?: string;
|
|
21839
|
-
/** The type it is annotated with, exactly as written and whitespace-normalized; absent when the code annotates nothing. */
|
|
21840
|
-
type?: string;
|
|
21841
|
-
/** Whether a caller may leave it out — marked optional, given a default, or a rest parameter. */
|
|
21842
|
-
optional: boolean;
|
|
21843
|
-
}
|
|
21844
|
-
/**
|
|
21845
|
-
* One route a router function handles, rebuilt from the conditions that guard
|
|
21846
|
-
* the branch serving it — the branch's own AND every enclosing one on the path
|
|
21847
|
-
* taken, because routers nest: an outer check on the first segment, an inner
|
|
21848
|
-
* one on the rest. Reading only the innermost guard would turn every route
|
|
21849
|
-
* into `/*` followed by whatever the inner branch happened to check.
|
|
21850
|
-
*
|
|
21851
|
-
* A segment is the literal the code compares it to, or `*` where nothing
|
|
21852
|
-
* constrains it. A leading `*` is usually the segment the listener's mount
|
|
21853
|
-
* already guarantees, which the router never re-checks — so it is left open
|
|
21854
|
-
* here and completed by whoever knows the mount.
|
|
21855
|
-
*
|
|
21856
|
-
* Only one idiom is read: a method comparison together with comparisons on the
|
|
21857
|
-
* path's split segments and their count. A router written another way yields
|
|
21858
|
-
* nothing, and the reader reports that as unread rather than passing it — a
|
|
21859
|
-
* check that cannot see a router must say so rather than stay quiet.
|
|
21860
|
-
*/
|
|
21861
|
-
interface RouteFact {
|
|
21862
|
-
/** The HTTP method the branch requires. */
|
|
21863
|
-
verb: string;
|
|
21864
|
-
/** The path's segments in order: the literal compared against, or `*` where nothing constrains it. */
|
|
21865
|
-
segments: string[];
|
|
21866
|
-
/**
|
|
21867
|
-
* Whether the branch pins the number of segments. When it does not, the path
|
|
21868
|
-
* may continue past the last one read, so the route covers any longer path
|
|
21869
|
-
* with the same leading segments.
|
|
21870
|
-
*/
|
|
21871
|
-
exactLength: boolean;
|
|
21872
|
-
}
|
|
21873
|
-
/** How a type shape's members were read: listed by the shape itself, or followed one hop from an alias to the value its shape comes from. */
|
|
21874
|
-
type ShapeOrigin = 'declared' | 'derived';
|
|
21875
|
-
/**
|
|
21876
|
-
* The members of one named shape a file declares — what a data type IS, read
|
|
21877
|
-
* off the code so a type spec's claim about it can be checked.
|
|
21878
|
-
*
|
|
21879
|
-
* Two origins answer, and the difference is recorded rather than smoothed
|
|
21880
|
-
* away. A DECLARED shape lists its own members, so the file is the whole
|
|
21881
|
-
* answer. A DERIVED one names a VALUE instead — an alias resolved one hop to
|
|
21882
|
-
* the object literal its schema is built from, where the keys are the members
|
|
21883
|
-
* — so the answer is as good as that hop and no better, and a hop that lands
|
|
21884
|
-
* on nothing readable records no shape at all. Silence, not a guess: a wrong
|
|
21885
|
-
* member list is worse than none, because nothing downstream would correct it.
|
|
21886
|
-
*
|
|
21887
|
-
* Methods are kept apart from fields because a spec models them on a different
|
|
21888
|
-
* axis — the one `typeRealization` already judges. Counting a behavioural
|
|
21889
|
-
* interface's method signatures as data would accuse every one of them of
|
|
21890
|
-
* carrying undeclared state.
|
|
21891
|
-
*/
|
|
21892
|
-
interface TypeShapeFact {
|
|
21893
|
-
/** How the members were read. */
|
|
21894
|
-
origin: ShapeOrigin;
|
|
21895
|
-
/** The data members, each with whether the code lets it be absent. */
|
|
21896
|
-
fields: ShapeMemberFact[];
|
|
21897
|
-
/** The method-style members, kept on the axis a spec models them on. */
|
|
21898
|
-
methods: string[];
|
|
21899
|
-
/**
|
|
21900
|
-
* True when the shape EXTENDS another, so members it does not list exist
|
|
21901
|
-
* but are not in this file to count. Presence and absence are therefore
|
|
21902
|
-
* different questions for it: what it shows can be judged, what it omits
|
|
21903
|
-
* cannot.
|
|
21904
|
-
*/
|
|
21905
|
-
inherited?: boolean;
|
|
21906
|
-
}
|
|
21907
|
-
interface SourceFileFacts {
|
|
21908
|
-
/** Project-relative resolved source path (many implementations may share it, N:1). */
|
|
21909
|
-
path: string;
|
|
21910
|
-
status: SourceFileStatus;
|
|
21911
|
-
/** Effective language the file was analyzed as. */
|
|
21912
|
-
language?: string;
|
|
21913
|
-
analysisGrade?: AnalysisGrade;
|
|
21914
|
-
/**
|
|
21915
|
-
* Declaration-tier anchors: named declarations at any nesting depth,
|
|
21916
|
-
* destructuring bindings, object-literal keys, import bindings, and export
|
|
21917
|
-
* specifiers (export-* barrels chased through relative specifiers).
|
|
21918
|
-
*/
|
|
21919
|
-
declaredNames: string[];
|
|
21920
|
-
/** Weaker anchors: exact string-literal occurrences (tool/route registrations). */
|
|
21921
|
-
anchoredNames: string[];
|
|
21922
|
-
/** Exported bindings (Level 2 dependency-conformance and UNDECLARED_EXPORT fuel). */
|
|
21923
|
-
exportedNames: string[];
|
|
21924
|
-
/**
|
|
21925
|
-
* Runtime import/require module specifiers (dependency-conformance fuel).
|
|
21926
|
-
* Type-only imports and export-from specifiers are excluded — type coupling
|
|
21927
|
-
* is allowed by default, and re-exporting is surface republication, not
|
|
21928
|
-
* collaboration.
|
|
21929
|
-
*/
|
|
21930
|
-
imports: string[];
|
|
21931
|
-
/** Module specifiers of export-from declarations (surface republication). */
|
|
21932
|
-
reexports: string[];
|
|
21933
|
-
/**
|
|
21934
|
-
* What each export-from declaration republishes, name by name: a named one
|
|
21935
|
-
* with both sides of its rename (`export { a as b } from 'm'` publishes `b`
|
|
21936
|
-
* as m's `a`), a star with `*` on both sides. Runtime re-exports only — a
|
|
21937
|
-
* type-only one republishes no function. EXACT grade only: it is what lets a
|
|
21938
|
-
* reader follow a republished name to the module that wrote it, and a
|
|
21939
|
-
* weaker grade leaves it unset rather than guess.
|
|
21940
|
-
*/
|
|
21941
|
-
reexportBindings?: ReexportBindingFact[];
|
|
21942
|
-
/**
|
|
21943
|
-
* The forwarding bindings the file publishes with no module specifier of
|
|
21944
|
-
* its own (see ExportAliasFact): each runtime `export { local as exported }`
|
|
21945
|
-
* specifier, renamed or not, and each identifier-valued property of an
|
|
21946
|
-
* exported top-level object literal, under that object's binding name.
|
|
21947
|
-
* EXACT grade only. The analyzer carries the local name's body onto the
|
|
21948
|
-
* published one when the local name settles on exactly one — a module-scope
|
|
21949
|
-
* body of this file with no nested same-named one, or an import binding
|
|
21950
|
-
* whose module holds one — and leaves the published name bodiless otherwise.
|
|
21951
|
-
*/
|
|
21952
|
-
exportAliases?: ExportAliasFact[];
|
|
21953
|
-
/**
|
|
21954
|
-
* The type name each named function-like RETURNS, by function name,
|
|
21955
|
-
* recorded only where the code settles it: a return annotation naming a
|
|
21956
|
-
* type outright (`Promise<T>` unwrapped), else, unannotated, a body whose
|
|
21957
|
-
* ONE return statement constructs a plainly named class. Same-named
|
|
21958
|
-
* functions that disagree, a generic, union or literal annotation, and
|
|
21959
|
-
* several returns record nothing. EXACT grade only. What a `fn().method()`
|
|
21960
|
-
* receiver is followed through.
|
|
21961
|
-
*/
|
|
21962
|
-
returnTypes?: Record<string, string>;
|
|
21963
|
-
/**
|
|
21964
|
-
* Cyclomatic complexity per named function-like (function/method/accessor
|
|
21965
|
-
* declarations, and function/arrow initializers of named slots). EXACT grade
|
|
21966
|
-
* only — lower grades omit the map rather than guess. Same-named functions
|
|
21967
|
-
* in one file record their maximum. Fuel for the detail-sufficiency lint.
|
|
21968
|
-
*/
|
|
21969
|
-
functionComplexity?: Record<string, number>;
|
|
21970
|
-
/**
|
|
21971
|
-
* Direct call sites per named function-like: every call written inside the
|
|
21972
|
-
* function body, with its shape (see CallSiteFact) — nested NAMED functions
|
|
21973
|
-
* excluded (they carry their own entries), anonymous callbacks included.
|
|
21974
|
-
* EXACT grade only. Same-named functions union their sites.
|
|
21975
|
-
*
|
|
21976
|
-
* A function-like WITH A BODY always gets an entry, empty when it calls
|
|
21977
|
-
* nothing; a name with NO entry has no body in this file to read — a bare
|
|
21978
|
-
* declaration, an overload signature, an ambient declaration, an interface
|
|
21979
|
-
* member, a plain value binding or an imported name. That difference is the
|
|
21980
|
-
* whole of hasFunctionBody, which is why an empty entry is never dropped.
|
|
21981
|
-
*
|
|
21982
|
-
* Fuel for the call-step realization checks (Level 3).
|
|
21983
|
-
*/
|
|
21984
|
-
functionCallSites?: Record<string, CallSiteFact[]>;
|
|
21985
|
-
/**
|
|
21986
|
-
* The same call sites, BODY by body, under each function-like's name: one
|
|
21987
|
-
* entry per body, carrying WHERE that body is bound (see FunctionBodyFact).
|
|
21988
|
-
* EXACT grade only. Where functionCallSites unions every same-named body,
|
|
21989
|
-
* this keeps them apart, so an exported facade `save` and the class member
|
|
21990
|
-
* `Workspace.save` it forwards to are read as the two functions they are.
|
|
21991
|
-
* Which body a NAME means is bodySitesOf's question, and it answers only
|
|
21992
|
-
* where the code itself settles it.
|
|
21993
|
-
*/
|
|
21994
|
-
functionBodies?: Record<string, FunctionBodyFact[]>;
|
|
21995
|
-
/**
|
|
21996
|
-
* Runtime (value) import bindings by local name (see ImportBindingFact).
|
|
21997
|
-
* EXACT grade only — a weaker grade sees module specifiers but never which
|
|
21998
|
-
* local name they bound.
|
|
21999
|
-
*/
|
|
22000
|
-
importBindings?: Record<string, ImportBindingFact>;
|
|
22001
|
-
/**
|
|
22002
|
-
* The type names an instance FIELD is DECLARED with, by field name — read
|
|
22003
|
-
* off class property declarations and constructor parameter properties,
|
|
22004
|
-
* which is where a constructor-injected collaborator says what it is.
|
|
22005
|
-
* EXACT grade only.
|
|
22006
|
-
*
|
|
22007
|
-
* Same-named fields of different classes in one file keep EVERY declared
|
|
22008
|
-
* type: the file cannot say which class a call site's `this` was, and a
|
|
22009
|
-
* wider answer only ever widens what a call may have reached. A field with
|
|
22010
|
-
* no annotation records nothing — what an initializer INFERS is not what
|
|
22011
|
-
* the code declares, and a guess is not a fact.
|
|
22012
|
-
*/
|
|
22013
|
-
fieldTypes?: Record<string, string[]>;
|
|
22014
|
-
/**
|
|
22015
|
-
* The type names a LOCALLY BOUND name is DECLARED with, by name — read off
|
|
22016
|
-
* function and method parameters and off variable declarations that carry
|
|
22017
|
-
* an annotation, which is where a module that wires its collaborators as
|
|
22018
|
-
* closures writes down what each one is. EXACT grade only.
|
|
22019
|
-
*
|
|
22020
|
-
* Keyed by name across the WHOLE file, as `fieldTypes` is: the facts cannot
|
|
22021
|
-
* say which function a call site sits in, and a receiver is as often a
|
|
22022
|
-
* parameter of an ENCLOSING function as of the one that calls it — a
|
|
22023
|
-
* closure captures it, which is the shape this records at all. Same-named
|
|
22024
|
-
* bindings therefore keep EVERY declared type, and a wider answer only ever
|
|
22025
|
-
* widens what a call may have reached. A binding the file annotates with
|
|
22026
|
-
* nothing records nothing, and so does one annotated with anything but a
|
|
22027
|
-
* plain type reference or a member-preserving utility (`Pick`, `Omit`,
|
|
22028
|
-
* `Partial`, `Required`, `Readonly`) around one, which names the type it
|
|
22029
|
-
* wraps: what an initializer INFERS is not what the code
|
|
22030
|
-
* declares, and a guess is not a fact.
|
|
22031
|
-
*/
|
|
22032
|
-
localTypes?: Record<string, string[]>;
|
|
22033
|
-
/**
|
|
22034
|
-
* The module specifier each TYPE-ONLY import binding came from, by local
|
|
22035
|
-
* name. EXACT grade only.
|
|
22036
|
-
*
|
|
22037
|
-
* The half of the import list `importBindings` deliberately leaves out,
|
|
22038
|
-
* because a type binding can never be a call ORIGIN — and exactly what a
|
|
22039
|
-
* declared field type is resolved through, which is why it is kept apart
|
|
22040
|
-
* rather than folded in.
|
|
22041
|
-
*/
|
|
22042
|
-
typeOnlyBindings?: Record<string, string>;
|
|
22043
|
-
/**
|
|
22044
|
-
* The type names each PROPERTY of a named shape the file declares is
|
|
22045
|
-
* DECLARED with, keyed `<shape>.<property>` — an interface's or a type
|
|
22046
|
-
* literal alias's property signatures, and a class's property declarations
|
|
22047
|
-
* and constructor parameter properties. EXACT grade only.
|
|
22048
|
-
*
|
|
22049
|
-
* What a receiver CHAIN (`CallSiteFact.receiverPath`) is followed through:
|
|
22050
|
-
* a bag of collaborators handed to a constructor names each one's type
|
|
22051
|
-
* exactly here. Read the way `fieldTypes` is, and a property annotated with
|
|
22052
|
-
* anything else records nothing.
|
|
22053
|
-
*/
|
|
22054
|
-
memberTypes?: Record<string, string[]>;
|
|
22055
|
-
/**
|
|
22056
|
-
* The ONE type each type alias NAMES outright, by alias name —
|
|
22057
|
-
* `type Contract = Pick<HabitRepository, 'find'>` names HabitRepository,
|
|
22058
|
-
* `type Store = SpecStore` names SpecStore. EXACT grade only. Read the way
|
|
22059
|
-
* `fieldTypes` is, so a union, an intersection, a literal or any other
|
|
22060
|
-
* generic names nothing. The one hop a declared type is followed through
|
|
22061
|
-
* when it is an alias of this file.
|
|
22062
|
-
*/
|
|
22063
|
-
aliasTargets?: Record<string, string>;
|
|
22064
|
-
/**
|
|
22065
|
-
* The interface names each named class's `implements` clause writes, by
|
|
22066
|
-
* class name; exact grade only. What lets a receiver whose declared type is
|
|
22067
|
-
* an interface written in a shared contracts file be followed to the class
|
|
22068
|
-
* that implements it, wherever that class lives — a possible origin, never
|
|
22069
|
-
* a proven one, like every declared type.
|
|
22070
|
-
*/
|
|
22071
|
-
implementsClauses?: Record<string, string[]>;
|
|
22072
|
-
/**
|
|
22073
|
-
* The members of each named shape the file declares, by declaration name
|
|
22074
|
-
* (see TypeShapeFact). EXACT grade only — below it a member list cannot be
|
|
22075
|
-
* told from a mention, and a guess about somebody's data model is worse
|
|
22076
|
-
* than silence.
|
|
22077
|
-
*
|
|
22078
|
-
* What lets a type spec's `fields` be CHECKED rather than read as truth by
|
|
22079
|
-
* the ERD, the briefs and every implementer. A wrong method signature
|
|
22080
|
-
* eventually breaks at a call site; a type spec that lies about its data is
|
|
22081
|
-
* only ever read by humans and agents, so nothing corrects it until
|
|
22082
|
-
* somebody measures it against the code.
|
|
22083
|
-
*/
|
|
22084
|
-
typeShapes?: Record<string, TypeShapeFact>;
|
|
22085
|
-
/**
|
|
22086
|
-
* The parameter lists of each named function-like in the file, by name (see
|
|
22087
|
-
* ParameterFact) — what lets a contract's declared `params` be checked
|
|
22088
|
-
* against the signature that realizes them, the last of the three
|
|
22089
|
-
* code-to-spec readings nothing had ever made. EXACT grade only: below it a
|
|
22090
|
-
* parameter list cannot be told from a call.
|
|
22091
|
-
*
|
|
22092
|
-
* EVERY body under a name is kept, not the first: a file routinely holds a
|
|
22093
|
-
* class member and the module-level facade that forwards to it under one
|
|
22094
|
-
* name, with different parameters, and picking one silently drops the
|
|
22095
|
-
* other's leading argument from view. Same-named bodies therefore keep every
|
|
22096
|
-
* candidate, exactly as the field-type facts do, and a reader accuses only
|
|
22097
|
-
* what all of them agree on.
|
|
22098
|
-
*
|
|
22099
|
-
* Overloads record the IMPLEMENTATION signature, the one with a body,
|
|
22100
|
-
* because that is the one a caller actually reaches — and a name with no
|
|
22101
|
-
* entry at all has no signature here to read, which is the silence a
|
|
22102
|
-
* forwarding file owes: that the body is not here is already
|
|
22103
|
-
* `methodRealization`'s finding.
|
|
22104
|
-
*/
|
|
22105
|
-
functionParams?: Record<string, ParameterFact[][]>;
|
|
22106
|
-
/**
|
|
22107
|
-
* The routes each named function-like in the file handles, by name (see
|
|
22108
|
-
* RouteFact) — what lets a listener's mount be read against the contract
|
|
22109
|
-
* endpoints of the portal it serves, so a route the router answers that no
|
|
22110
|
-
* contract declares cannot go unnoticed again. EXACT grade only: reading a
|
|
22111
|
-
* guard as a route needs the conditions as expressions, not as text.
|
|
22112
|
-
*
|
|
22113
|
-
* A function with no recognisable route records NO entry rather than an
|
|
22114
|
-
* empty one — an empty guess would read as "a router with no routes", and
|
|
22115
|
-
* the reader needs to tell a router it could not read from one it read.
|
|
22116
|
-
* Same-named bodies union their routes; nested NAMED functions carry their
|
|
22117
|
-
* own entries, while anonymous callbacks count into the enclosing one.
|
|
22118
|
-
*/
|
|
22119
|
-
functionRoutes?: Record<string, RouteFact[]>;
|
|
22120
|
-
/**
|
|
22121
|
-
* The named function-likes in the file that complete LATER — declared
|
|
22122
|
-
* `async`, or annotated to return a Promise — listed once per such BODY, in
|
|
22123
|
-
* the order the bodies are met, exactly as `functionParams` keeps one
|
|
22124
|
-
* signature per body. A name with several bodies (a class member and the
|
|
22125
|
-
* module-level facade forwarding to it) is therefore judged on what they ALL
|
|
22126
|
-
* say: as many entries as signatures is every body, none is no body. What
|
|
22127
|
-
* ASYNC_MISMATCH compares a contract method's `async` returns with. EXACT
|
|
22128
|
-
* grade only: below it a body cannot be told from a call.
|
|
22129
|
-
*/
|
|
22130
|
-
asyncFunctions?: string[];
|
|
22131
|
-
/**
|
|
22132
|
-
* The values of each ENUM-LIKE declaration in the file, by declaration name,
|
|
22133
|
-
* in declared order: a string-literal union alias (`type E = 'a' | 'b'`),
|
|
22134
|
-
* the string array a `z.enum([...])` constant holds — an alias
|
|
22135
|
-
* `z.infer<typeof X>` followed one hop, as a derived shape is — or a string
|
|
22136
|
-
* enum's member values. What UNREALIZED_ENUM_VALUE and UNDECLARED_ENUM_VALUE
|
|
22137
|
-
* read. EXACT grade only; a union mixing in anything but string literals is
|
|
22138
|
-
* not enum-like and is left out.
|
|
22139
|
-
*/
|
|
22140
|
-
enumValues?: Record<string, string[]>;
|
|
22141
|
-
/**
|
|
22142
|
-
* The right side of each TYPE ALIAS the file declares, as written, by alias
|
|
22143
|
-
* name — every alias whose right side is not an object shape
|
|
22144
|
-
* (`type PackPath = string`). What a named scalar's holds is compared with
|
|
22145
|
-
* through the file's dialect (TYPE_HOLDS_MISMATCH). EXACT grade only.
|
|
22146
|
-
*/
|
|
22147
|
-
aliasTypes?: Record<string, string>;
|
|
22148
|
-
/**
|
|
22149
|
-
* Module-scope mutable bindings (`let`/`var` at the top level of the file).
|
|
22150
|
-
* EXACT grade only. The static approximation of held state a logic
|
|
22151
|
-
* component may be hiding — fuel for the HIDDEN_STATE lint. (Mutation of
|
|
22152
|
-
* const-bound containers is invisible to this collection; the lint says so.)
|
|
22153
|
-
*/
|
|
22154
|
-
topLevelMutableBindings?: string[];
|
|
22155
|
-
/**
|
|
22156
|
-
* True when the file declared nothing of its own and only re-exported —
|
|
22157
|
-
* a pure re-export barrel, which has no code to claim. Measured BEFORE the
|
|
22158
|
-
* barrel chase folds the republished names into `declaredNames`, since
|
|
22159
|
-
* after it a barrel is indistinguishable from the files it publishes.
|
|
22160
|
-
* EXACT grade only: a weaker grade cannot tell a barrel from a file it
|
|
22161
|
-
* failed to parse, so it leaves this unset rather than guess.
|
|
22162
|
-
*/
|
|
22163
|
-
reexportOnly?: boolean;
|
|
22164
|
-
/**
|
|
22165
|
-
* Every call expression of the file as the TypeScript type checker resolved
|
|
22166
|
-
* it (see ResolvedCallFact), in source order. EXACT grade only, and only
|
|
22167
|
-
* where a compiler with a type checker was loaded. What the Portal
|
|
22168
|
-
* write-shortcut twin and the unnarrated-write check read first: the
|
|
22169
|
-
* checker follows every spelling of a receiver to the declaration, where
|
|
22170
|
-
* the shape facts follow the spellings they know.
|
|
22171
|
-
*/
|
|
22172
|
-
resolvedCalls?: ResolvedCallFact[];
|
|
22117
|
+
interface ExternalRemoval {
|
|
22118
|
+
alias: string;
|
|
22119
|
+
/** Whether this call took the declaration out of `.wai/project.yaml` (false on a refusal, a dry run, and an orphaned pin). */
|
|
22120
|
+
removed: boolean;
|
|
22121
|
+
/** Whether this call removed the alias's lock entry and pinned snapshot (false on a refusal and a dry run). */
|
|
22122
|
+
unpinned: boolean;
|
|
22123
|
+
/** Present, true, on a dry run: nothing was written, and `wouldRemove` says what the real run removes. */
|
|
22124
|
+
dryRun?: boolean;
|
|
22125
|
+
/** On a dry run: what the real run would take out — the declaration, the pin, or both. */
|
|
22126
|
+
wouldRemove?: ExternalRemovalPlan;
|
|
22127
|
+
/** Why nothing was removed: the alias is neither declared nor pinned. */
|
|
22128
|
+
refusal?: string;
|
|
22173
22129
|
}
|
|
22174
22130
|
/**
|
|
22175
|
-
*
|
|
22176
|
-
*
|
|
22177
|
-
* interface or shape it is a member of, and the member's name. A declaration
|
|
22178
|
-
* in a dependency's typings or the language's own library is no target — it
|
|
22179
|
-
* is nobody's component.
|
|
22131
|
+
* external_use_request — what `wairon externals use` and sdd_update_external
|
|
22132
|
+
* ask for: names to add to and remove from one declared external's `use`.
|
|
22180
22133
|
*/
|
|
22181
|
-
interface
|
|
22182
|
-
|
|
22183
|
-
|
|
22184
|
-
|
|
22185
|
-
|
|
22186
|
-
|
|
22187
|
-
|
|
22188
|
-
|
|
22189
|
-
* `declaration` when the checker named this declaration itself;
|
|
22190
|
-
* `implementor` when the declaration sits in an interface or type shape and
|
|
22191
|
-
* this is a class of the project that realizes it.
|
|
22192
|
-
*/
|
|
22193
|
-
via: 'declaration' | 'implementor';
|
|
22134
|
+
interface ExternalUseRequest {
|
|
22135
|
+
alias: string;
|
|
22136
|
+
/** Public names to import bare (`*` for all). */
|
|
22137
|
+
add?: string[];
|
|
22138
|
+
/** Names to stop importing. */
|
|
22139
|
+
remove?: string[];
|
|
22140
|
+
/** Answer what the `use` would become, writing nothing. */
|
|
22141
|
+
dryRun?: boolean;
|
|
22194
22142
|
}
|
|
22195
22143
|
/**
|
|
22196
|
-
*
|
|
22197
|
-
*
|
|
22198
|
-
* place in this project it can land. Where CallSiteFact records the SHAPE a
|
|
22199
|
-
* pure model can follow, this records the checker's answer — so a receiver
|
|
22200
|
-
* reached through an alias, a field chain, an element access, a destructured
|
|
22201
|
-
* method, a factory's result, a barrel or a port interface lands where the
|
|
22202
|
-
* checker says it lands, whatever its spelling.
|
|
22144
|
+
* external_use_change — the answer to changing one external's `use`: the
|
|
22145
|
+
* list after the change, what was added and removed, or the refusal.
|
|
22203
22146
|
*/
|
|
22204
|
-
interface
|
|
22205
|
-
|
|
22206
|
-
|
|
22207
|
-
|
|
22208
|
-
|
|
22209
|
-
|
|
22210
|
-
|
|
22211
|
-
|
|
22212
|
-
|
|
22213
|
-
|
|
22214
|
-
|
|
22147
|
+
interface ExternalUseChange {
|
|
22148
|
+
alias: string;
|
|
22149
|
+
/** Whether `.wai/project.yaml` now carries the changed `use` (false on a refusal, a dry run and when nothing changed). */
|
|
22150
|
+
written: boolean;
|
|
22151
|
+
/** The `use` list after the change, in order. */
|
|
22152
|
+
use: string[];
|
|
22153
|
+
/** The names this change imports that were not imported before. */
|
|
22154
|
+
added: string[];
|
|
22155
|
+
/** The names this change stops importing. */
|
|
22156
|
+
removed: string[];
|
|
22157
|
+
/** Why nothing was written, in one sentence. */
|
|
22158
|
+
refusal?: string;
|
|
22159
|
+
}
|
|
22160
|
+
/** The verdict on one used member of a pinned external. */
|
|
22161
|
+
type ExternalUseState = 'unchanged' | 'changed' | 'removed' | 'unlocked' | 'unavailable' | 'renamed';
|
|
22162
|
+
/** external_use_status — the verdict on one used member of one pinned external. */
|
|
22163
|
+
interface ExternalUseStatus {
|
|
22164
|
+
publicName?: string;
|
|
22165
|
+
member?: string;
|
|
22166
|
+
state: ExternalUseState;
|
|
22167
|
+
/** EXTERNAL_CHECK_UNAVAILABLE on an unavailable entry — never a pass. */
|
|
22168
|
+
code?: string;
|
|
22169
|
+
detail?: string;
|
|
22215
22170
|
/**
|
|
22216
|
-
*
|
|
22217
|
-
*
|
|
22218
|
-
*
|
|
22171
|
+
* On a renamed use: the public name (and member, as `name.member`) the live
|
|
22172
|
+
* producer's rename trace carries the used name forward to — what the
|
|
22173
|
+
* consumer's references should now name.
|
|
22219
22174
|
*/
|
|
22220
|
-
|
|
22175
|
+
renamedTo?: string;
|
|
22221
22176
|
}
|
|
22222
|
-
|
|
22223
|
-
|
|
22224
|
-
|
|
22225
|
-
|
|
22226
|
-
|
|
22177
|
+
/** external_status — the status of one declared external. */
|
|
22178
|
+
interface ExternalStatus {
|
|
22179
|
+
alias: string;
|
|
22180
|
+
project: string;
|
|
22181
|
+
sourceKind: ExternalSourceKind;
|
|
22182
|
+
pinned: boolean;
|
|
22183
|
+
reachable: boolean;
|
|
22184
|
+
stale: boolean;
|
|
22185
|
+
drifted?: boolean;
|
|
22186
|
+
uses: ExternalUseStatus[];
|
|
22187
|
+
detail?: string;
|
|
22227
22188
|
/**
|
|
22228
|
-
*
|
|
22229
|
-
*
|
|
22230
|
-
*
|
|
22231
|
-
* opt-in. Facts for these files live in `files`, like any other path.
|
|
22189
|
+
* True when the producer's root lies outside the request's reach and was
|
|
22190
|
+
* therefore not read: a family run that narrowed the reach to its selection
|
|
22191
|
+
* counts it in its hint rather than as a comparison that failed.
|
|
22232
22192
|
*/
|
|
22233
|
-
|
|
22193
|
+
outOfReach?: boolean;
|
|
22194
|
+
/** The content digest the lock recorded for this producer; provenance only, never compared here. */
|
|
22195
|
+
pinnedDigest?: string;
|
|
22196
|
+
/** The producer's commit as the lock recorded it (another repository only); provenance only. */
|
|
22197
|
+
pinnedCommit?: string;
|
|
22234
22198
|
/**
|
|
22235
|
-
* The
|
|
22236
|
-
*
|
|
22237
|
-
*
|
|
22238
|
-
*
|
|
22239
|
-
* subpath export, build entries mapped back to their source through the
|
|
22240
|
-
* package's tsconfig outDir/rootDir. What lets a package import resolve like
|
|
22241
|
-
* a relative one; a third-party specifier is in no entry and resolves to
|
|
22242
|
-
* nothing. Absent or empty when the repository declares no packages.
|
|
22199
|
+
* The carried facts the pinned snapshot no longer matches in the live
|
|
22200
|
+
* producer (an abi, a transport, a role, the targetLanguage, a rename
|
|
22201
|
+
* trace): the snapshot is stale and a re-pin refreshes it. Absent when the
|
|
22202
|
+
* producer was not read or nothing carried moved.
|
|
22243
22203
|
*/
|
|
22244
|
-
|
|
22204
|
+
staleFacts?: string[];
|
|
22245
22205
|
}
|
|
22206
|
+
/** ok | drifted | incompatible | unavailable — a relation's health in one word. */
|
|
22207
|
+
type RelationHealth = 'ok' | 'drifted' | 'incompatible' | 'unavailable';
|
|
22246
22208
|
/**
|
|
22247
|
-
*
|
|
22248
|
-
*
|
|
22249
|
-
*
|
|
22209
|
+
* external_status.health — the relation's health in one word, the same on the
|
|
22210
|
+
* canvas's edges and on the hosted Relations tab. A known break outranks the
|
|
22211
|
+
* unknown, and the unknown outranks a benign change, so nothing that could not
|
|
22212
|
+
* be checked ever reads as ok. Pure: over the status's own fields.
|
|
22250
22213
|
*/
|
|
22251
|
-
declare function
|
|
22214
|
+
declare function relationHealth(status: ExternalStatus): RelationHealth;
|
|
22252
22215
|
/**
|
|
22253
|
-
*
|
|
22254
|
-
*
|
|
22255
|
-
* one entry per key; were it to hold two, the later one answers, as it does in
|
|
22256
|
-
* the keyed indexes the rules build over the same files.
|
|
22216
|
+
* project_relations — one project of a family with its externals status, read
|
|
22217
|
+
* at its own root: what the canvas colours its consumption edges from.
|
|
22257
22218
|
*/
|
|
22258
|
-
|
|
22219
|
+
interface ProjectRelations {
|
|
22220
|
+
/** The consuming project's key in the bound family ('' for the bound root). */
|
|
22221
|
+
project: string;
|
|
22222
|
+
/** Its externals status, per use — and one per contained project member it references. */
|
|
22223
|
+
externals: ExternalStatus[];
|
|
22224
|
+
/** ISO-8601 time the statuses were read. */
|
|
22225
|
+
comparedAt: string;
|
|
22226
|
+
/** Why the project's statuses could not be read at all; then externals is empty. */
|
|
22227
|
+
detail?: string;
|
|
22228
|
+
}
|
|
22229
|
+
/** external_listing — one row of `wairon externals list`. */
|
|
22230
|
+
interface ExternalListing {
|
|
22231
|
+
alias: string;
|
|
22232
|
+
project: string;
|
|
22233
|
+
sourceKind: ExternalSourceKind;
|
|
22234
|
+
relation?: ExternalRelation;
|
|
22235
|
+
directory?: string;
|
|
22236
|
+
audience: string;
|
|
22237
|
+
lock?: ExternalLockEntry;
|
|
22238
|
+
problem?: string;
|
|
22239
|
+
}
|
|
22240
|
+
/** One rendered per-portal OpenAPI document (see the codec's toOpenApiSet). */
|
|
22241
|
+
declare const NamedOpenApiSpecSchema: z.ZodObject<{
|
|
22242
|
+
portalId: z.ZodString;
|
|
22243
|
+
name: z.ZodString;
|
|
22244
|
+
document: z.ZodString;
|
|
22245
|
+
}, "strip", z.ZodTypeAny, {
|
|
22246
|
+
name: string;
|
|
22247
|
+
document: string;
|
|
22248
|
+
portalId: string;
|
|
22249
|
+
}, {
|
|
22250
|
+
name: string;
|
|
22251
|
+
document: string;
|
|
22252
|
+
portalId: string;
|
|
22253
|
+
}>;
|
|
22254
|
+
type NamedOpenApiSpec = z.infer<typeof NamedOpenApiSpecSchema>;
|
|
22255
|
+
declare const GroupSpecSchema: z.ZodObject<{
|
|
22256
|
+
kind: z.ZodLiteral<"group">;
|
|
22257
|
+
id: z.ZodString;
|
|
22258
|
+
name: z.ZodString;
|
|
22259
|
+
description: z.ZodOptional<z.ZodString>;
|
|
22260
|
+
createdAt: z.ZodString;
|
|
22261
|
+
updatedAt: z.ZodString;
|
|
22262
|
+
}, "strip", z.ZodTypeAny, {
|
|
22263
|
+
id: string;
|
|
22264
|
+
name: string;
|
|
22265
|
+
kind: "group";
|
|
22266
|
+
createdAt: string;
|
|
22267
|
+
updatedAt: string;
|
|
22268
|
+
description?: string | undefined;
|
|
22269
|
+
}, {
|
|
22270
|
+
id: string;
|
|
22271
|
+
name: string;
|
|
22272
|
+
kind: "group";
|
|
22273
|
+
createdAt: string;
|
|
22274
|
+
updatedAt: string;
|
|
22275
|
+
description?: string | undefined;
|
|
22276
|
+
}>;
|
|
22277
|
+
type GroupSpec = z.infer<typeof GroupSpecSchema>;
|
|
22278
|
+
|
|
22279
|
+
/** identifier — one identifier as written: a spec id, a project id, an alias, or a method, parameter or field name. */
|
|
22280
|
+
type Identifier = string;
|
|
22281
|
+
/** display_name — a spec's human-readable `name`: free text, never blank, no invisible character. */
|
|
22282
|
+
type DisplayName = string;
|
|
22283
|
+
/** identifier_kind — what an identifier names, which decides the grammar it is judged by. */
|
|
22284
|
+
type IdentifierKind = 'spec-id' | 'project-id' | 'alias' | 'method' | 'param' | 'field';
|
|
22259
22285
|
/**
|
|
22260
|
-
*
|
|
22261
|
-
* under
|
|
22262
|
-
*
|
|
22286
|
+
* The longest identifier of any kind. A spec id is a folder and a file name
|
|
22287
|
+
* under `.wai/specs/`, and git for Windows refuses paths over 260 characters
|
|
22288
|
+
* by default; 64 keeps two nested ids plus a file name near 150. The same cap
|
|
22289
|
+
* holds for every kind (a DNS label stops at 63, a Postgres identifier at 63).
|
|
22263
22290
|
*/
|
|
22264
|
-
declare
|
|
22291
|
+
declare const MAX_IDENTIFIER_LENGTH = 64;
|
|
22292
|
+
/** The invisible characters (a control character — C0, DEL, C1 — a soft hyphen, a zero-width or bidi-control character, or a BOM) as a regular-expression character-class body (for a schema's negated class). */
|
|
22293
|
+
declare const INVISIBLE_CHARACTERS = "\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u180e\\u200b-\\u200f\\u2028-\\u202e\\u2060-\\u206f\\ufeff";
|
|
22265
22294
|
/**
|
|
22266
|
-
*
|
|
22267
|
-
*
|
|
22268
|
-
*
|
|
22269
|
-
* keeps an unresolvable field from becoming a guess.
|
|
22295
|
+
* identifier.problemAs — why `text` is no identifier of this kind, as one
|
|
22296
|
+
* sentence a refusal can carry (it starts with the quoted text), or null when
|
|
22297
|
+
* it is one. Pure.
|
|
22270
22298
|
*/
|
|
22271
|
-
declare function
|
|
22299
|
+
declare function identifierProblem(text: string, kind: IdentifierKind): string | null;
|
|
22272
22300
|
/**
|
|
22273
|
-
*
|
|
22274
|
-
*
|
|
22275
|
-
* nothing, or was analyzed below exact grade. The empty answer is what keeps
|
|
22276
|
-
* an unannotated receiver from becoming a guess, exactly as it does for a
|
|
22277
|
-
* field.
|
|
22301
|
+
* display_name.problem — why `text` is no display name: empty or blank, or
|
|
22302
|
+
* holding an invisible character. Null when it is one. Pure.
|
|
22278
22303
|
*/
|
|
22279
|
-
declare function
|
|
22304
|
+
declare function displayNameProblem(text: string): string | null;
|
|
22280
22305
|
/**
|
|
22281
|
-
*
|
|
22282
|
-
*
|
|
22283
|
-
*
|
|
22284
|
-
*
|
|
22285
|
-
* chain from becoming a guess.
|
|
22306
|
+
* identifier.reservedIn — why the target language cannot use `text` as this
|
|
22307
|
+
* kind of identifier, naming the language and offering an alternative that
|
|
22308
|
+
* fits the casing; null when it can, when the kind is not a member name, or
|
|
22309
|
+
* when the language has no table. Pure.
|
|
22286
22310
|
*/
|
|
22287
|
-
declare function
|
|
22311
|
+
declare function reservedWordProblem(text: string, kind: IdentifierKind, targetLanguage?: string, casing?: string): string | null;
|
|
22312
|
+
|
|
22288
22313
|
/**
|
|
22289
|
-
*
|
|
22290
|
-
*
|
|
22291
|
-
*
|
|
22314
|
+
* technology.packages — the package names the code twin of the leakage rule
|
|
22315
|
+
* (TECH_LEAKAGE_IN_CODE) compares an import's package name with.
|
|
22316
|
+
*
|
|
22317
|
+
* A design names a technology the way people say it (`postgres`), while the
|
|
22318
|
+
* code imports its driver (`pg`). Comparing only the declared tokens left the
|
|
22319
|
+
* code fence inert on an ordinary design, so this module carries a CURATED,
|
|
22320
|
+
* DOCUMENTED table of the common packages each technology is known by, keyed by
|
|
22321
|
+
* the technology's usual spellings. It is deliberately short: a package belongs
|
|
22322
|
+
* here only when importing it can mean nothing BUT that technology. An HTTP
|
|
22323
|
+
* client (fetch, axios, got, undici) is never a technology — it is how an
|
|
22324
|
+
* Adapter reaches anything — so no entry names one.
|
|
22325
|
+
*
|
|
22326
|
+
* Extending it takes no code change: a technology written `{ name, matches }`
|
|
22327
|
+
* adds its own tokens, and a loaded pack contributes packages per technology
|
|
22328
|
+
* name (an extension pack's `technologyPackages`).
|
|
22292
22329
|
*/
|
|
22293
|
-
|
|
22330
|
+
|
|
22331
|
+
/** The common packages of one technology. */
|
|
22332
|
+
interface TechnologyPackageEntry {
|
|
22333
|
+
/** The names a design writes the technology under, lower-case. */
|
|
22334
|
+
names: readonly string[];
|
|
22335
|
+
/** The packages importing which means that technology. */
|
|
22336
|
+
packages: readonly string[];
|
|
22337
|
+
}
|
|
22294
22338
|
/**
|
|
22295
|
-
*
|
|
22296
|
-
*
|
|
22297
|
-
* type may be spelled either way. Undefined when the file imports no such
|
|
22298
|
-
* name, which leaves the name local, global or ambient.
|
|
22339
|
+
* The built-in table. Documented in docs/cli.md ("Technologies and their
|
|
22340
|
+
* packages"); keep the two in step.
|
|
22299
22341
|
*/
|
|
22300
|
-
declare
|
|
22342
|
+
declare const TECHNOLOGY_PACKAGES: readonly TechnologyPackageEntry[];
|
|
22301
22343
|
/**
|
|
22302
|
-
*
|
|
22303
|
-
*
|
|
22304
|
-
*
|
|
22305
|
-
*
|
|
22344
|
+
* technology.packages — the entry's tokens, then the built-in table's packages
|
|
22345
|
+
* for its name, then the packages `contributed` lists under its name (what
|
|
22346
|
+
* loaded packs contribute, keyed by technology name), lower-cased and
|
|
22347
|
+
* de-duplicated in that order. Pure: the contributions are handed in.
|
|
22306
22348
|
*/
|
|
22307
|
-
declare function
|
|
22308
|
-
|
|
22309
|
-
|
|
22310
|
-
|
|
22311
|
-
|
|
22312
|
-
|
|
22349
|
+
declare function technologyPackages(tech: Technology, contributed?: Readonly<Record<string, readonly string[]>>): string[];
|
|
22350
|
+
|
|
22351
|
+
/**
|
|
22352
|
+
* The type identifiers a type string names, with comments, trailing prose and
|
|
22353
|
+
* string literals stripped. Duplicates are kept, in order of appearance.
|
|
22354
|
+
*/
|
|
22355
|
+
declare function extractTypeIdentifiers(typeStr: string): string[];
|
|
22356
|
+
/**
|
|
22357
|
+
* The method shape the type references are read from: a contract method or a
|
|
22358
|
+
* type method (whose params feed its references exactly as a contract
|
|
22359
|
+
* method's do). The text and returns may be absent while a method is still in
|
|
22360
|
+
* its stored form — a sourced method states neither, and a params-bearing one
|
|
22361
|
+
* need not store its text — and an absent one names nothing.
|
|
22362
|
+
*/
|
|
22363
|
+
interface MethodLike {
|
|
22364
|
+
signature?: string;
|
|
22365
|
+
returns?: string;
|
|
22366
|
+
params?: {
|
|
22367
|
+
name: string;
|
|
22368
|
+
type: string;
|
|
22369
|
+
}[];
|
|
22313
22370
|
}
|
|
22314
22371
|
/**
|
|
22315
|
-
*
|
|
22316
|
-
*
|
|
22317
|
-
*
|
|
22318
|
-
*
|
|
22319
|
-
*
|
|
22320
|
-
* `container` is an anchor's `exportedVia` handle or a call's plain-identifier
|
|
22321
|
-
* receiver, and `member` says the reference was written through a receiver at
|
|
22322
|
-
* all. Only the code
|
|
22323
|
-
* settles which body a name means, and where it does not this answers what
|
|
22324
|
-
* the name-keyed union always answered — never a guess:
|
|
22325
|
-
*
|
|
22326
|
-
* - with a container the file binds bodies of this name under, those bodies;
|
|
22327
|
-
* - else a BARE reference (an anchor's symbol, a bare call) means the
|
|
22328
|
-
* module-scope bodies, when the name has some and NO nested one: a bare
|
|
22329
|
-
* name in the module's scope binds the top-level declaration, a member is
|
|
22330
|
-
* reachable only through its container, and a nested body could shadow
|
|
22331
|
-
* the name where it sits;
|
|
22332
|
-
* - else every body under the name, unioned, as callSitesOf answers — a
|
|
22333
|
-
* receiver the file binds no container to holds a value the model cannot
|
|
22334
|
-
* follow, so which body it reaches is not this model's to say.
|
|
22372
|
+
* method_signature.typeRefs — the named types a method references. Structured
|
|
22373
|
+
* `params` are authoritative when present (no prose parsing): the named
|
|
22374
|
+
* references of every param type and of the returns, each parsed under the
|
|
22375
|
+
* grammar. Otherwise the prose signature and the returns are tokenized
|
|
22376
|
+
* leniently, as the unstructured form always was.
|
|
22335
22377
|
*/
|
|
22336
|
-
declare function
|
|
22378
|
+
declare function methodTypeRefs(m: MethodLike): string[];
|
|
22337
22379
|
/**
|
|
22338
|
-
*
|
|
22339
|
-
*
|
|
22340
|
-
*
|
|
22341
|
-
*
|
|
22342
|
-
|
|
22343
|
-
|
|
22344
|
-
|
|
22380
|
+
* type_spec.signatureTypeRefs — the named types a signature type references:
|
|
22381
|
+
* every param type, then its returns, each parsed under the grammar — the
|
|
22382
|
+
* references a signature carries in place of fields. None for any other kind,
|
|
22383
|
+
* whose references are its fields'.
|
|
22384
|
+
*/
|
|
22385
|
+
declare function signatureTypeRefs(type: Pick<TypeSpec, 'kind' | 'params' | 'returns'>): string[];
|
|
22386
|
+
/**
|
|
22387
|
+
* method_signature.genericParameters — the generic parameters declared before
|
|
22388
|
+
* the parameter list of the method's prose signature (find<T>(id: string)
|
|
22389
|
+
* gives T).
|
|
22390
|
+
*/
|
|
22391
|
+
declare function methodGenericParameters(method: {
|
|
22392
|
+
signature?: string;
|
|
22393
|
+
}): Set<string>;
|
|
22394
|
+
/**
|
|
22395
|
+
* reference_resolution.nameKey — the one key a bare name is compared by,
|
|
22396
|
+
* locally and through imports alike: lower-cased, every character outside
|
|
22397
|
+
* [a-z0-9] removed, so `SharedError`, `shared-error` and `shared_error` are
|
|
22398
|
+
* one name. It is normalizePart, the per-segment normalization
|
|
22399
|
+
* type_spec.matchesRef already applies.
|
|
22400
|
+
*/
|
|
22401
|
+
declare function nameKey(name: string): string;
|
|
22402
|
+
/**
|
|
22403
|
+
* Whether a written type reference names a type id: the reference's `::` or
|
|
22404
|
+
* `.` segments are a suffix of the id's, compared ignoring case and
|
|
22405
|
+
* punctuation.
|
|
22406
|
+
*/
|
|
22407
|
+
declare function matchTypeRef(ref: string, typeId: string): boolean;
|
|
22408
|
+
/**
|
|
22409
|
+
* type_spec.qualifiedId — the type's id qualified by its owning subsystem, when
|
|
22410
|
+
* the id is not already qualified.
|
|
22411
|
+
*/
|
|
22412
|
+
declare function qualifiedTypeId(type: Pick<TypeSpec, 'id' | 'subsystem'>): string;
|
|
22413
|
+
/**
|
|
22414
|
+
* type_spec.matchesRef — whether a written type reference names this type: the
|
|
22415
|
+
* reference's `::` or `.` segments are a suffix of the qualified id, compared
|
|
22416
|
+
* ignoring case and punctuation.
|
|
22417
|
+
*/
|
|
22418
|
+
declare function typeMatchesRef(type: Pick<TypeSpec, 'id' | 'subsystem'>, ref: string): boolean;
|
|
22419
|
+
/** type_spec.genericParameters — the generic parameters declared in the type's name (Page<T> gives T). */
|
|
22420
|
+
declare function typeGenericParameters(type: Pick<TypeSpec, 'name'>): Set<string>;
|
|
22421
|
+
/**
|
|
22422
|
+
* type_spec.fieldTypeRefs — the named types one of this type's field types
|
|
22423
|
+
* references (type_expression.namedRefs of the field's parsed type), with the
|
|
22424
|
+
* type's own generic parameters left out (compared ignoring case). A field
|
|
22425
|
+
* type that does not parse names nothing: its problem is
|
|
22426
|
+
* TYPE_EXPRESSION_INVALID's to report. It takes the field's type rather than
|
|
22427
|
+
* its name, because nothing makes field names unique within a type.
|
|
22428
|
+
*/
|
|
22429
|
+
declare function fieldTypeRefs(type: Pick<TypeSpec, 'name'>, fieldType: string): string[];
|
|
22430
|
+
/** interface_spec.genericParameters — the generic parameters declared in the interface's name. */
|
|
22431
|
+
declare function interfaceGenericParameters(intf: Pick<InterfaceSpec, 'name'>): Set<string>;
|
|
22432
|
+
|
|
22433
|
+
/**
|
|
22434
|
+
* The step graph of one narrative (step_graph): the SINGLE source of truth for
|
|
22435
|
+
* successor semantics (fall-through + jumps; loop and try headers carry both
|
|
22436
|
+
* their body edge and their after-region exit edge; return/throw terminate).
|
|
22437
|
+
* The narrative-reachability check and the antipattern analysis both read
|
|
22438
|
+
* it, so the two never disagree about what "next" means.
|
|
22439
|
+
*/
|
|
22440
|
+
interface StepGraph {
|
|
22441
|
+
/** The narrative's step numbers in ascending order. */
|
|
22442
|
+
stepNumbers: number[];
|
|
22443
|
+
/** The step with this number, if there is one. */
|
|
22444
|
+
stepAt(stepNumber: number): NarrativeStep | undefined;
|
|
22445
|
+
/** The next step number in ascending order, ignoring jumps and parallel joins. */
|
|
22446
|
+
nextOf(stepNumber: number): number | undefined;
|
|
22447
|
+
/** The distinct existing step numbers flow can continue at from this step. */
|
|
22448
|
+
successorsOf(stepNumber: number): number[];
|
|
22449
|
+
}
|
|
22450
|
+
/**
|
|
22451
|
+
* method_implementation.stepGraph — the step graph of the method's narrative.
|
|
22452
|
+
* Simple steps fall through; a branch continues at its true and false steps, a
|
|
22453
|
+
* switch at its cases and default; a loop at its body and the step after its
|
|
22454
|
+
* region; a try at its body, catch steps, finally step and the step after its
|
|
22455
|
+
* region; a parallel fans out to its arms, whose last steps continue at the
|
|
22456
|
+
* join; a jump at its target; return and throw end the path.
|
|
22457
|
+
*/
|
|
22458
|
+
declare function stepGraph(method: Pick<MethodImplementation, 'narrative'>): StepGraph;
|
|
22459
|
+
|
|
22460
|
+
/** The finding codes a narrative step-configuration problem maps to. */
|
|
22461
|
+
type StepConfigCode = 'DUPLICATE_STEP_LABEL' | 'MALFORMED_FLOW_STEP' | 'INVALID_STEP_JUMP' | 'FOREIGN_STEP_FIELD';
|
|
22462
|
+
/**
|
|
22463
|
+
* One thing wrong with a narrative's step configuration (step_config_problem):
|
|
22464
|
+
* the step it sits on, the finding code it maps to, and the detail a rule
|
|
22465
|
+
* appends to its own "Method X in implementation Y" prefix. Duplicate labels,
|
|
22466
|
+
* missing or misplaced flow config, and jumps that land nowhere are all
|
|
22467
|
+
* reported through this one shape.
|
|
22468
|
+
*/
|
|
22469
|
+
interface StepConfigProblem {
|
|
22470
|
+
/** The step the problem sits on; a duplicate label names the earlier step in its detail. */
|
|
22471
|
+
stepNumber: number;
|
|
22472
|
+
/** The finding code this problem maps to. */
|
|
22473
|
+
code: StepConfigCode;
|
|
22474
|
+
/** The problem stated in full, ready to follow a rule's own location prefix. */
|
|
22475
|
+
detail: string;
|
|
22476
|
+
}
|
|
22477
|
+
/**
|
|
22478
|
+
* What a narrative's step configuration says about itself (step_config_verdict):
|
|
22479
|
+
* the problems it carries, in step order, and whether its control flow is
|
|
22480
|
+
* SOUND — no duplicate step number, no missing or misplaced flow config, and
|
|
22481
|
+
* no jump that lands outside the narrative. A duplicate label is a problem but
|
|
22482
|
+
* not an unsoundness: labels name steps, they do not route flow.
|
|
22345
22483
|
*
|
|
22346
|
-
*
|
|
22347
|
-
*
|
|
22348
|
-
*
|
|
22484
|
+
* Soundness is the gate every later phase runs behind. Reachability, region
|
|
22485
|
+
* nesting and jump-edge judgement all read the step graph, and a graph built
|
|
22486
|
+
* over jumps that target nothing reports steps as dead that are merely
|
|
22487
|
+
* mis-numbered — wrong findings, not just noisier ones.
|
|
22349
22488
|
*/
|
|
22350
|
-
|
|
22489
|
+
interface StepConfigVerdict {
|
|
22490
|
+
/** The step-config problems, in step order: labels first, then numbering, then per-step config and jump targets. */
|
|
22491
|
+
problems: StepConfigProblem[];
|
|
22492
|
+
/** True when nothing found makes the control flow unreadable — the precondition for judging structure. */
|
|
22493
|
+
sound: boolean;
|
|
22494
|
+
}
|
|
22351
22495
|
/**
|
|
22352
|
-
* The
|
|
22353
|
-
*
|
|
22354
|
-
*
|
|
22496
|
+
* The configuration each narrative step TYPE may carry, beyond what every step
|
|
22497
|
+
* carries. This is the field set a retype rebuilds against, and the field set
|
|
22498
|
+
* a stored step is judged against.
|
|
22499
|
+
*
|
|
22500
|
+
* Changing a step's `type` used to merge the new type's fields over the old
|
|
22501
|
+
* step's and leave the rest standing, so a `branch` that became a `call` kept
|
|
22502
|
+
* its `condition` and `onFalseStep`: a step the schema accepts, a write that
|
|
22503
|
+
* reports success, and a MALFORMED_FLOW_STEP at the next validate, blamed on
|
|
22504
|
+
* the narrative rather than on the edit that made it. The writer no longer
|
|
22505
|
+
* leaves those behind; FOREIGN_STEP_FIELD reports the ones already written.
|
|
22355
22506
|
*/
|
|
22356
|
-
declare
|
|
22507
|
+
declare const STEP_TYPE_FIELDS: Readonly<Record<string, readonly string[]>>;
|
|
22357
22508
|
/**
|
|
22358
|
-
*
|
|
22359
|
-
*
|
|
22360
|
-
*
|
|
22361
|
-
*
|
|
22362
|
-
* is silence, never a finding.
|
|
22509
|
+
* What a step carries whatever its type — the human's own content. A retype
|
|
22510
|
+
* keeps these: the author is changing HOW the step works, not what it is for,
|
|
22511
|
+
* and re-typing a step should never cost them the sentence they wrote or the
|
|
22512
|
+
* anchor other steps address it by.
|
|
22363
22513
|
*/
|
|
22364
|
-
declare
|
|
22514
|
+
declare const STEP_COMMON_FIELDS: readonly string[];
|
|
22515
|
+
/** The transient `*Label` twin of each jump-by-number field, resolved and dropped at write time. */
|
|
22516
|
+
declare const STEP_LABEL_TWINS: Readonly<Record<string, string>>;
|
|
22517
|
+
/** Every field a step of this type may carry, including the transient label twins. */
|
|
22518
|
+
declare function stepFieldsFor(type: string): Set<string>;
|
|
22365
22519
|
/**
|
|
22366
|
-
*
|
|
22367
|
-
*
|
|
22368
|
-
*
|
|
22520
|
+
* narrative_step.foreignFields — the fields this step carries that its own
|
|
22521
|
+
* `type` cannot: everything set on it beyond the common fields and the ones
|
|
22522
|
+
* its type adds. An unknown step type has no table, so nothing is foreign to
|
|
22523
|
+
* it — the schema is what names that.
|
|
22369
22524
|
*/
|
|
22370
|
-
declare function
|
|
22525
|
+
declare function narrativeStepForeignFields(step: NarrativeStep): string[];
|
|
22371
22526
|
/**
|
|
22372
|
-
*
|
|
22373
|
-
*
|
|
22374
|
-
*
|
|
22375
|
-
*
|
|
22376
|
-
*
|
|
22377
|
-
* model's local-package map) names for it, when that file is known.
|
|
22378
|
-
* Undefined for a package the map does not name — a third-party one — or
|
|
22379
|
-
* when nothing matches.
|
|
22527
|
+
* method_implementation.stepConfigVerdict — the step-config problems of this
|
|
22528
|
+
* method's narrative and whether its control flow is sound. The schema keeps
|
|
22529
|
+
* every flow field optional, so this derivation is what holds each step type
|
|
22530
|
+
* to the config it needs, each label to one step, each step number to one
|
|
22531
|
+
* step, and every jump field to a step number the narrative actually has.
|
|
22380
22532
|
*/
|
|
22381
|
-
declare function
|
|
22533
|
+
declare function stepConfigVerdict(method: Pick<MethodImplementation, 'narrative'>): StepConfigVerdict;
|
|
22382
22534
|
|
|
22383
22535
|
/**
|
|
22384
22536
|
* How a cross-tree reference fared against the stored surface snapshots
|
|
@@ -22486,6 +22638,33 @@ interface SurfaceChange {
|
|
|
22486
22638
|
/** What changed, said in one line. */
|
|
22487
22639
|
detail: string;
|
|
22488
22640
|
}
|
|
22641
|
+
/** One name a rename trace carries forward: the former name and the current one. */
|
|
22642
|
+
interface TracedRename {
|
|
22643
|
+
from: string;
|
|
22644
|
+
to: string;
|
|
22645
|
+
}
|
|
22646
|
+
/**
|
|
22647
|
+
* surface_snapshot.fieldRenames — the fields of one type renamed between an
|
|
22648
|
+
* older and a newer definition of it, per the newer one's rename trace
|
|
22649
|
+
* (`formerly`): a field the older definition had that the newer lacks, which a
|
|
22650
|
+
* newer field's trace names. Pure.
|
|
22651
|
+
*/
|
|
22652
|
+
declare function fieldRenames(was: SurfaceTypeDef, now: SurfaceTypeDef): TracedRename[];
|
|
22653
|
+
/** field_rename_reading — the field renames inside a used member's closure, and whether they are its whole change. */
|
|
22654
|
+
interface FieldRenameReading {
|
|
22655
|
+
/** Each rename, read `field "<type>.<old>" renamed to "<new>"`. */
|
|
22656
|
+
renames: string[];
|
|
22657
|
+
/** Whether undoing the renames gives back the pinned member digest exactly. */
|
|
22658
|
+
renameOnly: boolean;
|
|
22659
|
+
}
|
|
22660
|
+
/**
|
|
22661
|
+
* surface_snapshot.fieldRenamesSince — every field rename inside the closure
|
|
22662
|
+
* of one used member between a pinned snapshot and the live one, as
|
|
22663
|
+
* `<type>.<old> → <new>` readings, and whether undoing them leaves the
|
|
22664
|
+
* member's digest exactly as pinned (a rename and nothing else). Empty
|
|
22665
|
+
* when no field of its closure was renamed. Pure.
|
|
22666
|
+
*/
|
|
22667
|
+
declare function fieldRenamesSince(pinned: SurfaceSnapshot, live: SurfaceSnapshot, publicName: string, member: string, pinnedDigest: string): FieldRenameReading;
|
|
22489
22668
|
/**
|
|
22490
22669
|
* surface_snapshot.changesSince — what one producer's public surface changed
|
|
22491
22670
|
* from an older snapshot of it to this one: each public name (contract entry
|
|
@@ -41954,7 +42133,7 @@ type DesignExport = z.infer<typeof DesignExportSchema>;
|
|
|
41954
42133
|
|
|
41955
42134
|
declare const DEFAULT_TARGET_DIRS: Record<string, string>;
|
|
41956
42135
|
declare function defaultTargetConfig(type: 'claude' | 'gemini' | 'agy' | 'cursor' | 'copilot' | 'codex'): BuiltinTargetConfig;
|
|
41957
|
-
declare const WAIRON_VERSION = "5.1.1-dev.
|
|
42136
|
+
declare const WAIRON_VERSION = "5.1.1-dev.110";
|
|
41958
42137
|
declare const GITHUB_REPO = "SYW-Apps/Waffle-AIron";
|
|
41959
42138
|
declare const ARCHITECT_AGENT_ID = "agent-architect";
|
|
41960
42139
|
declare const ARCHITECT_TEMPLATE_ID = "architect";
|
|
@@ -42713,6 +42892,14 @@ declare function exportSpecTree(includeDerived?: boolean, allowPartial?: boolean
|
|
|
42713
42892
|
*/
|
|
42714
42893
|
declare function importSpecTree(archive: Uint8Array, options: TreeImportOptions): TreeImportResult;
|
|
42715
42894
|
|
|
42895
|
+
/**
|
|
42896
|
+
* Author the ShopFlow example spec tree at the currently-bound project root.
|
|
42897
|
+
* Overwrites the L0 system spec the provisioner wrote with a richer one, then
|
|
42898
|
+
* lays down the three subsystems and their layered component/interface/
|
|
42899
|
+
* implementation/type slices. Invalidates the spec cache at the end.
|
|
42900
|
+
*/
|
|
42901
|
+
declare function seedDemoTree(): void;
|
|
42902
|
+
|
|
42716
42903
|
/** One retired Specialist and the Orchestrator it becomes (specialist_retype). */
|
|
42717
42904
|
interface SpecialistRetype {
|
|
42718
42905
|
/** The component id. */
|
|
@@ -43481,4 +43668,4 @@ declare function schemaFingerprint(): string;
|
|
|
43481
43668
|
*/
|
|
43482
43669
|
declare function loadProjectConfig(): ProjectConfig;
|
|
43483
43670
|
|
|
43484
|
-
export { AI_PATHS, ARCHITECT_AGENT_ID, ARCHITECT_TEMPLATE_ID, type AgentBrief, AgentBriefSchema, type AgentRecord, AgentRecordSchema, type AgentStatus, AgentStatusSchema, type AgentTemplate, AgentTemplateSchema, type AnalysisGrade, type ApiKeyLocation, ApiKeyLocationSchema, type ApprovalDiff, type ApprovalVerdict, type ApprovedRevision, type ArchProfile, type AuthoredReference, BACKEND_COMMANDS, BUILTIN_PROFILES, type BoundaryItem, BoundaryItemSchema, type BuildContextOptions, type BuiltinTarget, type BuiltinTargetConfig, BuiltinTargetConfigSchema, BuiltinTargetSchema, BundleNotFoundError, type CallSiteFact, type CallTargetFact, type CarriedDebt, type CarriedDebtKind, CarriedDebtKindSchema, CarriedDebtSchema, type CarriedFinding, type CarriedFindingEntry, CarriedFindingSchema, type CatchClause, CatchClauseSchema, ChainingMigrationRefusedError, ClaudeExporter, type ClaudeExporterOptions, type CodeIndex, type CodeModel, type ComplexityRuleConfig, ComplexityRuleConfigSchema, type ComponentPlacement, type ComponentRename, type ComponentSpec, ComponentSpecSchema, type ComponentType, ComponentTypeSchema, type CompositionConfig, CompositionConfigSchema, ConfigValidationError, type ConformanceRuleConfig, ConformanceRuleConfigSchema, type ConformanceTier, ConformanceTierSchema, type CrossProjectReference, CustomExporter, type CustomTarget, type CustomTargetConfig, CustomTargetConfigSchema, CustomTargetSchema, DEFAULT_TARGET_DIRS, DESIGN_APPROVALS, DESIGN_DEPENDENCY_ROLES, DESIGN_FORMAT, DESIGN_FORMAT_VERSION, DESIGN_VIEW_FIELDS, type DatabaseSpec, DatabaseSpecSchema, type DeclarativePack, type DeclaredCall, type DeclaredExternal, type DeclaredInvocation, DeclaredInvocationSchema, type DeclaredMember, type DependencyClass, DependencyClassSchema, type DependencyEdge, type DependencyEdges, type DesignApproval, DesignApprovalSchema, type DesignComponent, DesignComponentSchema, type DesignDependency, type DesignDependencyRole, DesignDependencyRoleSchema, DesignDependencySchema, type DesignDepth, DesignDepthSchema, type DesignExport, type DesignExportEntry, DesignExportEntrySchema, DesignExportSchema, type DesignField, DesignFieldSchema, type DesignImplementation, DesignImplementationSchema, type DesignInterface, DesignInterfaceSchema, type DesignMethod, type DesignMethodBody, DesignMethodBodySchema, DesignMethodSchema, type DesignParam, DesignParamSchema, type DesignProject, DesignProjectSchema, type DesignSource, DesignSourceSchema, type DesignSubsystem, DesignSubsystemSchema, type DesignType, type DesignTypeRef, DesignTypeRefSchema, DesignTypeSchema, type DetectedDomainCandidate, type DiagramConfig, DiagramConfigSchema, type DiagramLineStyle, DiagramLineStyleSchema, type DiagramView, DiagramViewSchema, type DispatchBinding, DispatchBindingSchema, DoctorOptionsError, type DocumentationRuleConfig, DocumentationRuleConfigSchema, type Domain, DomainSchema, type DomainType, DomainTypeSchema, type Durability, DurabilitySchema, EXTERNAL_ALIAS_RE, EXTERNAL_SOURCE_FORMS, type EdgeReach, type Endpoint, EndpointSchema, type EndpointTransport, type EntryScope, EntryScopeSchema, type EnumValue, EnumValueSchema, type EventBinding, EventBindingSchema, type ExportAliasFact, type ExportContext, type ExportKind, type ExportProblem, type ExportProblemKind, type ExportResult, type ExportRole, ExportRoleSchema, type ExportTableLevel, type ExportUsage, type ExportUse, type Exporter, type ExtData, ExtDataSchema, type ExtensionPack, type ExternalAddition, type ExternalBinding, type ExternalConsumer, type ExternalDeclaration, ExternalDeclarationSchema, type ExternalLink, ExternalLinkSchema, type ExternalLinkType, ExternalLinkTypeSchema, type ExternalListing, type ExternalLockEntry, ExternalLockEntrySchema, type ExternalPin, type ExternalPinOutcome, type ExternalRelation, type ExternalRemoval, type ExternalRequest, type ExternalRole, type ExternalSource, type ExternalSourceKind, ExternalSourceSchema, type ExternalStatus, type ExternalUseChange, type ExternalUseRequest, type ExternalUseState, type ExternalUseStatus, type ExternalsLock, ExternalsLockSchema, FULL_COMMIT_RE, type FamilyProblemKind, type FamilySwitches, type FieldRename, type FindingDeclaration, FindingDeclarationSchema, type FindingParts, type ForeignFieldRepair, type ForwardedName, type FunctionBodyFact, GITHUB_REPO, GeminiExporter, type GenerateOptions, type GenerateSummary, type GroupSpec, GroupSpecSchema, type Guarantee, GuaranteeSchema, HOLDABLE_PRIMITIVES, type HostedRecordLookup, type HttpMethod, HttpMethodSchema, type ImplementationSpec, ImplementationSpecSchema, type ImportBindingFact, type ImportGraph, type ImportSection, type InstalledPack, type InterfaceSpec, InterfaceSpecSchema, type InternalizeDestination, type InternalizeResult, type Invariant, InvariantSchema, type InvocationKind, InvocationKindSchema, type IssueSeverity, type LegacySpecFile, type LifecycleEntrypoint, LifecycleEntrypointSchema, type LifecyclePhase, LifecyclePhaseSchema, type LintAllow, LintAllowSchema, type LintConfig, LintConfigSchema, type LoadedExtensions, type LoadedPackSkill, type LockRecord, type LockStatus, type LogLevel, type LoopKind, LoopKindSchema, MAX_SPEC_ID_LENGTH, type MemberAdvance, type MemberCreation, type MemberDeclaration, MemberDeclarationSchema, type MemberKind, type MemberPin, type MemberSource, type MemberStorage, type MethodEffect, MethodEffectSchema, type MethodImplementation, MethodImplementationSchema, type MethodLike, type MethodParam, MethodParamSchema, type MethodRename, type MethodSignature, MethodSignatureSchema, type ModelledCall, type MountForm, type NamedOpenApiSpec, NamedOpenApiSpecSchema, type NamingRuleConfig, NamingRuleConfigSchema, type NarrativeDetail, NarrativeDetailSchema, type NarrativeStep, NarrativeStepSchema, type NarrativeStepType, NarrativeStepTypeSchema, type NetworkBoundary, type NetworkDeclaration, NetworkDeclarationSchema, NetworkOptionsError, type OAuthFlow, OAuthFlowSchema, type OutputTarget, OutputTargetSchema, type OwnershipIndex, PATTERN_TYPES, PRIMITIVE_TYPES, PROJECT_ID_RE, PROJECT_KINDS, PUBLIC_NAME_RE, type PackDiagnosis, type PackEntry, type PackPath, type PackRef, type PackRequirement, PackRequirementSchema, type PackScope, type PackSelection, PackSelectionSchema, type ParallelBranch, ParallelBranchSchema, type ParamRename, type ParameterFact, type ParentExcerpt, ParentExcerptSchema, type ParsedMemberSource, type PartOf, PartOfSchema, type PathsConfig, PathsConfigSchema, type PatternRef, PatternRefSchema, type PinnedExternal, type PinnedParent, type PortalAuth, PortalAuthSchema, type PortalAuthScheme, PortalAuthSchemeSchema, PreviousIdsSchema, PreviousNamesSchema, ProfileSelectionSubjectSchema, type ProjectBinding, type ProjectBindingVia, type ProjectConfig, ProjectConfigSchema, type ProjectFamily, type ProjectFamilyProblem, type ProjectIdOrigin, type ProjectIdSource, type ProjectIdentity, type ProjectIdentityProblem, type ProjectImport, type ProjectNode, ProjectNotInitializedError, type ProjectProfileSelection, ProjectProfileSelectionSchema, type ProjectRelations, type PromoteResult, type PublicInterface, PublicInterfaceSchema, type PublicInterfaceType, PublicInterfaceTypeSchema, RETIRED_INVOCATION_KINDS, RETIRED_PORTAL_TYPE_SPELLINGS, RETIRED_STEREOTYPES, type ReachFinding, type ReachModel, type ReachRewrite, type ReachabilityMigrationPlan, type ReadExternalSource, type ReadableProject, type RealizationIndex, type ReexportBindingFact, type ReferenceBinding, type ReferenceEdit, type ReferenceForm, type ReferenceLanding, type ReferenceResolution, type Registry, RegistrySchema, type RelationHealth, type RenameTraceHolders, type RequirementItem, RequirementItemSchema, type ResolutionOutcome, type ResolvedBody, type ResolvedCallFact, type ResolvedDetail, type ResolvedExport, type ResolvedExportTable, type ResolvedExternal, ResolvedInterfaceSpecSchema, type ResolvedMethod, ResolvedMethodSignatureSchema, ResolvedTypeMethodSchema, ResolvedTypeSpecSchema, type RetiredMount, type RetiredReachFact, type RetiredReachForm, RetiredReachFormSchema, type RetiredReachHolder, type RouteFact, type RuleCode, type RuleContext, type RuleJudgement, type RuleScope, type RulesConfig, RulesConfigSchema, SCAN_EXCLUDE_DIRS, SDD_RULES, SEMANTIC_GUARANTEES, STEP_COMMON_FIELDS, STEP_LABEL_TWINS, STEP_TYPE_FIELDS, SUPPORTED_ALIASES, SURFACE_AUDIENCES, type ScopeFilterOptions, type SddRule, type Severity, type ShapeMemberFact, type ShapeOrigin, type SignatureFacts, type SignatureResolution, type SignatureSourceFact, type SignatureTextRepair, type SourceFileFacts, type SourceFileStatus, type SpecId, type SpecIdKind, SpecIdSchema, type SpecIndex, type SpecScanOptions, type SpecStatus, SpecStatusSchema, type SpecialistRetirement, type SpecialistRetype, type StaleSignatureText, type StateId, type StatusDecor, type StatusOptions, type StatusReport, type StepConfigCode, type StepConfigProblem, type StepConfigVerdict, type StepGraph, type StoredInterfaceSpec, type StoredMethodSignature, StoredMethodSignatureSchema, type StoredTypeMethod, StoredTypeMethodSchema, type StoredTypeSpec, type SubsystemSpec, SubsystemSpecSchema, type SubsystemWriteRule, type SupportedAlias, type SurfaceAudience, SurfaceAudienceSchema, type SurfaceChange, type SurfaceChangeKind, type SurfaceContractEntry, SurfaceContractEntrySchema, type SurfaceOrigin, SurfaceOriginSchema, type SurfaceRefResolution, type SurfaceSnapshot, SurfaceSnapshotSchema, type SurfaceTypeDef, SurfaceTypeDefSchema, type SurfaceTypeExport, SurfaceTypeExportSchema, type SurfaceUnresolvedExport, SurfaceUnresolvedExportSchema, type SwitchCase, SwitchCaseSchema, type SyncResult, type SystemPublicInterface, SystemPublicInterfaceSchema, type SystemSpec, SystemSpecSchema, TECHNOLOGY_PACKAGES, type TargetConfig, TargetConfigSchema, type Technology, TechnologySchema, type Template, TemplateNotFoundError, TemplateSchema, type TopicEnd, type TopologyConfig, TopologyConfigSchema, type Transport, type TransportKind, TransportKindSchema, TransportSchema, type TreeExportResult, type TreeImportOptions, type TreeImportResult, type TrustedLink, TrustedLinkSchema, type TypeCanonicalization, type TypeDialect, type TypeEnumProposal, type TypeExpression, type TypeExpressionProblem, TypeExpressionSchema, type TypeField, TypeFieldSchema, type TypeForm, type TypeKind, TypeKindSchema, type TypeMethod, TypeMethodSchema, type TypeParse, type TypePosition, type TypeProblemCode, type TypeRename, type TypeRespelling, type TypeShapeFact, type TypeSpec, TypeSpecSchema, type TypeSpellingFacts, type TypeSpellingRepair, type TypedSpecKind, USE_ENTRY_RE, type VerbReach, WAIRON_MANAGED_BANNER, WAIRON_MANAGED_MARKER, WAIRON_VERSION, WINDOWS_RESERVED_NAME_RE, type WaiPaths, WaironError, type WriteReach, YamlSyntaxError, activeTargetTypes, addDomain, admits, advanceMember, aiDir, aiDirAt, aiPathsAt, aliasGrammarProblem, aliasTargetOf, ambiguityMessage, approvalKeyIn, approvalRecord, approvalVerdict, approvedRevision, approvedStatuses, asSchemaReads, assertContainedProjectPath, assertProjectInitialized, attachRetiredMounts, backendCommand, backfillChainedSubprojectConfigs, backupBeside, bindDeclaredExternal, bodySitesOf, buildCanvasDataModel, buildProjectGraph, buildRuleContext, builtinProfileIds, builtinProjectKinds, callSitesOf, callersOf, canonicalTypeRef, canonicalTypeText, captureApprovedSpecs, carriedFactChanges, carryRetiredReachForms, checkDeclarativePack, clearLoaderIssues, cognitiveScore, complexityLevel, componentDesignView, componentEntryFor, composeAgentBrief, composeRuleSequence, computeGateStateId, computeOwnDesignStateId as computeOwnDesignId, computeOwnDesignStateIdAsRecorded as computeOwnDesignIdAsRecorded, computeOwnStateId, computeStateId, computeStateIdAt, conceptNoun, consumedContractInputs, consumerReaches, containedPathOf, contentDigest, createAgentRecord, createEmptyRegistry, createEmptyTopologyConfig, createMember, createProjectConfig, currentRootBinding, declareExternal, declareMember, declaredExternals, declaredMembers, declaredPackNames, declaredProfileIds, declares, declaresGlobalPacks, defaultConformanceTier, defaultNarrativeDetail, defaultPackSelections, defaultTargetConfig, deleteSpec, demoteMember, dependencyCycles, deregisterPackRef, deriveExecutionProfile, deriveMethodSignature, deriveTypeSignature, derivedDocPaths, describeProject, detectDomainCandidates, diagnoseProjectPacks, diagramSetIndex, dialectOf, diffAgainstApproval, diffSize, discoverPacks, dryRunSerializeSpecs, effectiveDetail, effectiveProjectId, emptyExtensions, emptyTypeSpellingFacts, enclosing, ensureDir, ensureProjectInitialized, excerpt as excerptParent, exportDesign, exportSpecTree, exportSurface, exportTargetKey, exportUsage, externalizeSubsystem, extractTypeIdentifiers, factsFor, familyApprovals, familyNode, familyRelations, fieldTypeRefs, fieldTypesOf, findChainingParent, findChainingSubprojectsMissingConfig, findLegacySpecFiles, findProjectRoot, findSystemRoot, findTestsReferencing, fromProjectRoot, generateAgent, generateAll, generateComponentDiagram, generateDiagramSet, generateSequenceDiagram, getExporter, getExternalsStatus, getHostedLookup, getLoaderIssues, getProjectRoot, getProjectRootOverride, getRequestParentReach, getRequestProjectRoot, getSnapshot, getStatusReport, getWriteReach, globalGuideFilePath, globalPacksDir, globalPacksEnabled, globalTemplatesDir, hasContext, hasFunctionBody, headNoun, holdsState, implementationDesignView, implementationSourceFiles, importBindingOf, importNames, importSpecTree, importSurface, injectGuide, installPackFromDirectory, interfaceCanonicalTypes, interfaceDesignView, interfaceGenericParameters, internalizeMember, isDraftSubsystem, isInProcessAddress, isLogic, isOutsideRoot, isOwnComponentEntry, isPart, isPattern, isProjectInitialized, isProvidedBy, isRetired, isSilent, isTypeVocabulary, isWindowsReservedName, judgesCode, keyIn, landReference, languageOfSourcePath, lineEndingFor, listDirectChainedSubprojects, listConsumers as listExternalConsumers, listExternals, listFiles, listFilesRecursive, listInstalledPacks, listPinnedExternals, listRules, listSnapshots, loadComponentSpec, loadComponentSpecs, loadExtensionPacks, loadExtensions, loadFor as loadExtensionsFor, loadImplementationSpec, loadImplementationSpecs, loadInterfaceSpec, loadInterfaceSpecs, loadProjectConfig, loadProjectExtensions, loadProjectVariants, loadRegistry, loadSpec, loadSpecGraph, loadSubsystemSpec, loadSubsystemSpecs, loadSystemSpec, loadTopologyConfig, loadTypeSpec, loadTypeSpecs, localApprover, localGuideFilePath, localTypesOf, logger, makeScopeFilter, markSelectionsBundled, matchTypeRef, measurePackDoctrine, measurePackImpact, memberDeclarationOf, memberDigest, memberLocationOf, memberTypesOf, methodCasingFor, methodGenericParameters, methodSourceFile, methodTypeRefs, migrate as migrateReachability, moveMember, moveMethods, moveMountToMembers, nameKey, namesAnInteger, narrativeStepForeignFields, normalizeReferences, ownerOf, packDirEntry, packEntryLabel, packEntryRef, manifestOf as packManifest, packStoreDir, parseDeclarativePack, parseDeclaredCall, parseMemberSource, parseTypeExpression, parseTypePosition, parseYaml, passesIntentFloor, pathExists, pathKey, pinExternals, pinInstalledPacksAsSelections, pinnedParent, producerOf, projectConfigExists, graph as projectFamily, projectIdentity, promoteMember, provisionProject, qualifiedTypeId, rangeProblem, readCodeAnnotation, readExternalSource, readFileOrNull, readJsonFile, readLockRecord, readLockState, readRetiredReachForms, readStampVersion, readYamlFile, recordProfileSelection, reexpress, registerExporter, registerPackRef, registerProjectServer, reinjectLocalGuides, relationHealth, removeDomain, removeExternal, removeMember, removePackSelection, removeSnapshot, renameAlias, renameComponent, renameField, renameProjectId as renameId, renameMethod, renameParam, renameType, renderDiagram, repairForeignStepFields, repairSignatures, repairTypeSpellings, repointExternal, requiredPolicies, resolveAgentTopology, resolveBudget, resolveChainingParent, resolveDomains, resolveExpectedOutputPaths, resolveCandidate as resolveExternalCandidate, resolveDeclared as resolveExternals, resolveImport, resolveInstalledPack, resolveProjectBinding, resolveProjectExports, resolveSignatures, resolveSubprojectForNamespace, resolveSubsystemExports, resolveVariantGuidance, retireSpecialists, retiredInvocationReadAs, retiredMountsOf, retiredReachFacts, returnTypeOf, rewriteReferences, runWithHostedLookup, runWithProjectBinding, runWithProjectRoot, sameContract, saveSpec, saveTopologyConfig, scanAllSpecs, schemaFingerprint, selectsFamily, serializeYaml, setExecutionTier, setProjectId as setId, setLogLevel, setNetwork, setProjectRoot, setProjectType, settledSpecPaths, signatureFacts, signatureTypeRefs, specIndexRetiredBy, specPathsInScope, splitNamespace, stepConfigVerdict, stepFieldsFor, stepGraph, storedMethodSignature, storedTypeMethod, subsystemDesignView, surfaceChanges, syncContextFiles, technologyName, technologyPackages, technologyTokens, toMarkdown, transportExportKind, transportKind, transportRequiresEndpoint, typeBindingOf, typeCanonicalTypes, typeDesignView, typeDialectFor, typeGenericParameters, typeIsMany, typeMappingFor, typeMatchesRef, typeNamedRefs, typeProblemEnumProposal, typeProblemIntProposal, typeSourceFiles, typeSpellingFacts, uninstallPack, updateMember, updateSpec, upsertPackSelection, validateAsComplete, validateComponentCandidate, validateFamily, validateProject, validateProjectConfig, validateRegistry, withLineEndings, withPack, writeFile, writeFileIfChanged, writeJsonFile, writeLockRecord, writeReachDenials, writeReachPermits, writeRootGuideDelegator, writeYamlFile, writtenTypeRefs };
|
|
43671
|
+
export { AI_PATHS, ARCHITECT_AGENT_ID, ARCHITECT_TEMPLATE_ID, type AgentBrief, AgentBriefSchema, type AgentRecord, AgentRecordSchema, type AgentStatus, AgentStatusSchema, type AgentTemplate, AgentTemplateSchema, type AnalysisGrade, type ApiKeyLocation, ApiKeyLocationSchema, type ApprovalDiff, type ApprovalVerdict, type ApprovedRevision, type ArchProfile, type AuthoredReference, BACKEND_COMMANDS, BUILTIN_PROFILES, type BoundaryItem, BoundaryItemSchema, type BuildContextOptions, type BuiltinTarget, type BuiltinTargetConfig, BuiltinTargetConfigSchema, BuiltinTargetSchema, BundleNotFoundError, type CallSiteFact, type CallTargetFact, type CarriedDebt, type CarriedDebtKind, CarriedDebtKindSchema, CarriedDebtSchema, type CarriedFinding, type CarriedFindingEntry, CarriedFindingSchema, type CatchClause, CatchClauseSchema, ChainingMigrationRefusedError, ClaudeExporter, type ClaudeExporterOptions, type CodeIndex, type CodeModel, type ComplexityRuleConfig, ComplexityRuleConfigSchema, type ComponentPlacement, type ComponentRename, type ComponentSpec, ComponentSpecSchema, type ComponentType, ComponentTypeSchema, type CompositionConfig, CompositionConfigSchema, ConfigValidationError, type ConformanceRuleConfig, ConformanceRuleConfigSchema, type ConformanceTier, ConformanceTierSchema, type CrossProjectReference, CustomExporter, type CustomTarget, type CustomTargetConfig, CustomTargetConfigSchema, CustomTargetSchema, DEFAULT_TARGET_DIRS, DESIGN_APPROVALS, DESIGN_DEPENDENCY_ROLES, DESIGN_FORMAT, DESIGN_FORMAT_VERSION, DESIGN_VIEW_FIELDS, type DatabaseSpec, DatabaseSpecSchema, type DeclarativePack, type DeclaredCall, type DeclaredExternal, type DeclaredInvocation, DeclaredInvocationSchema, type DeclaredMember, type DependencyClass, DependencyClassSchema, type DependencyEdge, type DependencyEdges, type DesignApproval, DesignApprovalSchema, type DesignComponent, DesignComponentSchema, type DesignDependency, type DesignDependencyRole, DesignDependencyRoleSchema, DesignDependencySchema, type DesignDepth, DesignDepthSchema, type DesignExport, type DesignExportEntry, DesignExportEntrySchema, DesignExportSchema, type DesignField, DesignFieldSchema, type DesignImplementation, DesignImplementationSchema, type DesignInterface, DesignInterfaceSchema, type DesignMethod, type DesignMethodBody, DesignMethodBodySchema, DesignMethodSchema, type DesignParam, DesignParamSchema, type DesignProject, DesignProjectSchema, type DesignSource, DesignSourceSchema, type DesignSubsystem, DesignSubsystemSchema, type DesignType, type DesignTypeRef, DesignTypeRefSchema, DesignTypeSchema, type DetectedDomainCandidate, type DiagramConfig, DiagramConfigSchema, type DiagramLineStyle, DiagramLineStyleSchema, type DiagramView, DiagramViewSchema, type DispatchBinding, DispatchBindingSchema, type DisplayName, DisplayNameSchema, DoctorOptionsError, type DocumentationRuleConfig, DocumentationRuleConfigSchema, type Domain, DomainSchema, type DomainType, DomainTypeSchema, type Durability, DurabilitySchema, EXTERNAL_ALIAS_RE, EXTERNAL_SOURCE_FORMS, type EdgeReach, type Endpoint, EndpointSchema, type EndpointTransport, type EntryScope, EntryScopeSchema, type EnumValue, EnumValueSchema, type EventBinding, EventBindingSchema, type ExportAliasFact, type ExportContext, type ExportKind, type ExportProblem, type ExportProblemKind, type ExportResult, type ExportRole, ExportRoleSchema, type ExportTableLevel, type ExportUsage, type ExportUse, type Exporter, type ExtData, ExtDataSchema, type ExtensionPack, type ExternalAddition, type ExternalBinding, type ExternalConsumer, type ExternalDeclaration, ExternalDeclarationSchema, type ExternalLink, ExternalLinkSchema, type ExternalLinkType, ExternalLinkTypeSchema, type ExternalListing, type ExternalLockEntry, ExternalLockEntrySchema, type ExternalPin, type ExternalPinOutcome, type ExternalRelation, type ExternalRemoval, type ExternalRemovalPlan, type ExternalRequest, type ExternalRole, type ExternalSource, type ExternalSourceKind, ExternalSourceSchema, type ExternalStatus, type ExternalUseChange, type ExternalUseRequest, type ExternalUseState, type ExternalUseStatus, type ExternalsLock, ExternalsLockSchema, FULL_COMMIT_RE, type FamilyProblemKind, type FamilySwitches, FieldNameSchema, type FieldRename, type FieldRenameReading, type FindingDeclaration, FindingDeclarationSchema, type FindingParts, type ForeignFieldRepair, type ForwardedName, type FunctionBodyFact, GITHUB_REPO, GeminiExporter, type GenerateOptions, type GenerateSummary, type GroupSpec, GroupSpecSchema, type Guarantee, GuaranteeSchema, HOLDABLE_PRIMITIVES, type HostedRecordLookup, type HttpMethod, HttpMethodSchema, INVISIBLE_CHARACTERS, type Identifier, type IdentifierKind, type ImplementationSpec, ImplementationSpecSchema, type ImportBindingFact, type ImportGraph, type ImportSection, type InstalledPack, type InterfaceSpec, InterfaceSpecSchema, type InternalizeDestination, type InternalizeResult, type Invariant, InvariantSchema, type InvocationKind, InvocationKindSchema, type IssueSeverity, type LegacySpecFile, type LifecycleEntrypoint, LifecycleEntrypointSchema, type LifecyclePhase, LifecyclePhaseSchema, type LintAllow, LintAllowSchema, type LintConfig, LintConfigSchema, type LoadedExtensions, type LoadedPackSkill, type LockRecord, LockRecordUnreadableError, type LockStatus, type LogLevel, type LoopKind, LoopKindSchema, MAX_IDENTIFIER_LENGTH, MAX_SPEC_ID_LENGTH, type MemberAdvance, type MemberCreation, type MemberDeclaration, MemberDeclarationSchema, type MemberKind, type MemberPin, type MemberSource, type MemberStorage, type MethodEffect, MethodEffectSchema, type MethodImplementation, MethodImplementationSchema, type MethodLike, MethodNameSchema, type MethodParam, MethodParamSchema, type MethodRename, type MethodSignature, MethodSignatureSchema, type ModelledCall, type MountForm, type NamedOpenApiSpec, NamedOpenApiSpecSchema, type NamingRuleConfig, NamingRuleConfigSchema, type NarrativeDetail, NarrativeDetailSchema, type NarrativeStep, NarrativeStepSchema, type NarrativeStepType, NarrativeStepTypeSchema, type NetworkBoundary, type NetworkDeclaration, NetworkDeclarationSchema, NetworkOptionsError, type OAuthFlow, OAuthFlowSchema, type OutputTarget, OutputTargetSchema, type OwnershipIndex, PATTERN_TYPES, PRIMITIVE_TYPES, PROJECT_ID_RE, PROJECT_KINDS, PUBLIC_NAME_RE, type PackDiagnosis, type PackEntry, type PackPath, type PackRef, type PackRequirement, PackRequirementSchema, type PackScope, type PackSelection, PackSelectionSchema, type ParallelBranch, ParallelBranchSchema, ParamNameSchema, type ParamRename, type ParameterFact, type ParentExcerpt, ParentExcerptSchema, type ParsedMemberSource, type PartOf, PartOfSchema, type PathsConfig, PathsConfigSchema, type PatternRef, PatternRefSchema, type PinnedExternal, type PinnedParent, type PortalAuth, PortalAuthSchema, type PortalAuthScheme, PortalAuthSchemeSchema, PreviousIdsSchema, PreviousNamesSchema, ProfileSelectionSubjectSchema, type ProjectBinding, type ProjectBindingVia, type ProjectConfig, ProjectConfigSchema, type ProjectFamily, type ProjectFamilyProblem, type ProjectIdOrigin, type ProjectIdSource, type ProjectIdentity, type ProjectIdentityProblem, type ProjectImport, type ProjectNode, ProjectNotInitializedError, type ProjectProfileSelection, ProjectProfileSelectionSchema, type ProjectRelations, type PromoteResult, type PublicInterface, PublicInterfaceSchema, type PublicInterfaceType, PublicInterfaceTypeSchema, RETIRED_INVOCATION_KINDS, RETIRED_PORTAL_TYPE_SPELLINGS, RETIRED_STEREOTYPES, type ReachFinding, type ReachModel, type ReachRewrite, type ReachabilityMigrationPlan, type ReadExternalSource, type ReadableProject, type RealizationIndex, type ReexportBindingFact, type ReferenceBinding, type ReferenceEdit, type ReferenceForm, type ReferenceLanding, type ReferenceResolution, type Registry, RegistrySchema, type RelationHealth, type RenameTraceHolders, type RequirementItem, RequirementItemSchema, type ResolutionOutcome, type ResolvedBody, type ResolvedCallFact, type ResolvedDetail, type ResolvedExport, type ResolvedExportTable, type ResolvedExternal, ResolvedInterfaceSpecSchema, type ResolvedMethod, ResolvedMethodSignatureSchema, ResolvedTypeMethodSchema, ResolvedTypeSpecSchema, type RetiredMount, type RetiredReachFact, type RetiredReachForm, RetiredReachFormSchema, type RetiredReachHolder, type RouteFact, type RuleCode, type RuleContext, type RuleJudgement, type RuleScope, type RulesConfig, RulesConfigSchema, SCAN_EXCLUDE_DIRS, SDD_RULES, SEMANTIC_GUARANTEES, STEP_COMMON_FIELDS, STEP_LABEL_TWINS, STEP_TYPE_FIELDS, SUPPORTED_ALIASES, SURFACE_AUDIENCES, type ScopeFilterOptions, type SddRule, type Severity, type ShapeMemberFact, type ShapeOrigin, type SignatureFacts, type SignatureResolution, type SignatureSourceFact, type SignatureTextRepair, type SourceFileFacts, type SourceFileStatus, type SpecId, type SpecIdKind, SpecIdSchema, type SpecIndex, type SpecScanOptions, type SpecStatus, SpecStatusSchema, type SpecialistRetirement, type SpecialistRetype, type StaleSignatureText, type StateId, type StatusDecor, type StatusOptions, type StatusReport, type StepConfigCode, type StepConfigProblem, type StepConfigVerdict, type StepGraph, type StoredInterfaceSpec, type StoredMethodSignature, StoredMethodSignatureSchema, type StoredTypeMethod, StoredTypeMethodSchema, type StoredTypeSpec, type SubsystemSpec, SubsystemSpecSchema, type SubsystemWriteRule, type SupportedAlias, type SurfaceAudience, SurfaceAudienceSchema, type SurfaceChange, type SurfaceChangeKind, type SurfaceContractEntry, SurfaceContractEntrySchema, type SurfaceOrigin, SurfaceOriginSchema, type SurfaceRefResolution, type SurfaceSnapshot, SurfaceSnapshotSchema, type SurfaceTypeDef, SurfaceTypeDefSchema, type SurfaceTypeExport, SurfaceTypeExportSchema, type SurfaceUnresolvedExport, SurfaceUnresolvedExportSchema, type SwitchCase, SwitchCaseSchema, type SyncResult, type SystemPublicInterface, SystemPublicInterfaceSchema, type SystemSpec, SystemSpecSchema, TECHNOLOGY_PACKAGES, type TargetConfig, TargetConfigSchema, type Technology, TechnologySchema, type Template, TemplateNotFoundError, TemplateSchema, type TopicEnd, type TopologyConfig, TopologyConfigSchema, type TracedRename, type Transport, type TransportKind, TransportKindSchema, TransportSchema, type TreeExportResult, type TreeImportOptions, type TreeImportResult, type TrustedLink, TrustedLinkSchema, type TypeCanonicalization, type TypeDialect, type TypeEnumProposal, type TypeExpression, type TypeExpressionProblem, TypeExpressionSchema, type TypeField, TypeFieldSchema, type TypeForm, type TypeKind, TypeKindSchema, type TypeMethod, TypeMethodSchema, type TypeParse, type TypePosition, type TypeProblemCode, type TypeRename, type TypeRespelling, type TypeShapeFact, type TypeSpec, TypeSpecSchema, type TypeSpellingFacts, type TypeSpellingRepair, type TypedSpecKind, USE_ENTRY_RE, type VerbReach, WAIRON_MANAGED_BANNER, WAIRON_MANAGED_MARKER, WAIRON_VERSION, WINDOWS_RESERVED_NAME_RE, type WaiPaths, WaironError, type WriteReach, YamlSyntaxError, activeTargetTypes, addDomain, admits, advanceMember, aiDir, aiDirAt, aiPathsAt, aliasGrammarProblem, aliasTargetOf, ambiguityMessage, approvalKeyIn, approvalRecord, approvalVerdict, approvedRevision, approvedStatuses, asSchemaReads, assertContainedProjectPath, assertProjectInitialized, attachRetiredMounts, backendCommand, backfillChainedSubprojectConfigs, backupBeside, bindDeclaredExternal, bodySitesOf, buildCanvasDataModel, buildProjectGraph, buildRuleContext, builtinProfileIds, builtinProjectKinds, callSitesOf, callersOf, canonicalTypeRef, canonicalTypeText, captureApprovedSpecs, carriedFactChanges, carryRetiredReachForms, checkDeclarativePack, clearLoaderIssues, cognitiveScore, complexityLevel, componentDesignView, componentEntryFor, composeAgentBrief, composeRuleSequence, computeGateStateId, computeOwnDesignStateId as computeOwnDesignId, computeOwnDesignStateIdAsRecorded as computeOwnDesignIdAsRecorded, computeOwnStateId, computeStateId, computeStateIdAt, conceptNoun, consumedContractInputs, consumerReaches, containedPathOf, contentDigest, createAgentRecord, createEmptyRegistry, createEmptyTopologyConfig, createMember, createProjectConfig, currentRootBinding, declareExternal, declareMember, declaredExternals, declaredMembers, declaredPackNames, declaredProfileIds, declares, declaresGlobalPacks, defaultConformanceTier, defaultNarrativeDetail, defaultPackSelections, defaultTargetConfig, deleteSpec, demoteMember, dependencyCycles, deregisterPackRef, deriveExecutionProfile, deriveMethodSignature, deriveTypeSignature, derivedDocPaths, describeProject, detectDomainCandidates, diagnoseProjectPacks, diagramSetIndex, dialectOf, diffAgainstApproval, diffSize, discoverPacks, displayNameProblem, dryRunSerializeSpecs, effectiveDetail, effectiveProjectId, emptyExtensions, emptyTypeSpellingFacts, enclosing, ensureDir, ensureProjectInitialized, excerpt as excerptParent, exportDesign, exportSpecTree, exportSurface, exportTargetKey, exportUsage, externalizeSubsystem, extractTypeIdentifiers, factsFor, familyApprovals, familyNode, familyRelations, fieldRenames, fieldRenamesSince, fieldTypeRefs, fieldTypesOf, findChainingParent, findChainingSubprojectsMissingConfig, findLegacySpecFiles, findOrphanedSpecFiles, findProjectRoot, findSystemRoot, findTestsReferencing, fitsMethodCasing, fromProjectRoot, generateAgent, generateAll, generateComponentDiagram, generateDiagramSet, generateSequenceDiagram, getExporter, getExternalsStatus, getHostedLookup, getLoaderIssues, getProjectRoot, getProjectRootOverride, getRequestParentReach, getRequestProjectRoot, getSnapshot, getStatusReport, getWriteReach, globalGuideFilePath, globalPacksDir, globalPacksEnabled, globalTemplatesDir, hasContext, hasFunctionBody, headNoun, holdsState, identifierProblem, implementationDesignView, implementationSourceFiles, importBindingOf, importNames, importSpecTree, importSurface, injectGuide, installPackFromDirectory, interfaceCanonicalTypes, interfaceDesignView, interfaceGenericParameters, internalizeMember, isDraftSubsystem, isInProcessAddress, isLogic, isOutsideRoot, isOwnComponentEntry, isPart, isPattern, isProjectInitialized, isProvidedBy, isRetired, isSilent, isTypeVocabulary, isWindowsReservedName, judgesCode, keyIn, landReference, languageOfSourcePath, lineEndingFor, listDirectChainedSubprojects, listConsumers as listExternalConsumers, listExternals, listFiles, listFilesRecursive, listInstalledPacks, listPinnedExternals, listRules, listSnapshots, loadComponentSpec, loadComponentSpecs, loadExtensionPacks, loadExtensions, loadFor as loadExtensionsFor, loadImplementationSpec, loadImplementationSpecs, loadInterfaceSpec, loadInterfaceSpecs, loadProjectConfig, loadProjectExtensions, loadProjectVariants, loadRegistry, loadSpec, loadSpecGraph, loadSubsystemSpec, loadSubsystemSpecs, loadSystemSpec, loadTopologyConfig, loadTypeSpec, loadTypeSpecs, localApprover, localGuideFilePath, localTypesOf, logger, makeScopeFilter, markSelectionsBundled, matchTypeRef, measurePackDoctrine, measurePackImpact, memberDeclarationOf, memberDigest, memberLocationOf, memberTypesOf, methodCasingFor, methodGenericParameters, methodSourceFile, methodTypeRefs, migrate as migrateReachability, moveMember, moveMethods, moveMountToMembers, nameKey, namesAnInteger, narrativeStepForeignFields, narrowedToMember, normalizeReferences, ownerOf, packDirEntry, packEntryLabel, packEntryRef, manifestOf as packManifest, packStoreDir, parseDeclarativePack, parseDeclaredCall, parseMemberSource, parseTypeExpression, parseTypePosition, parseYaml, passesIntentFloor, pathExists, pathKey, pinExternals, pinnedParent, producerOf, projectConfigExists, graph as projectFamily, projectIdentity, promoteMember, provisionProject, qualifiedTypeId, rangeProblem, readCodeAnnotation, readExternalSource, readFileOrNull, readJsonFile, readLockRecord, readLockState, readRetiredReachForms, readStampVersion, readYamlFile, recordProfileSelection, reexpress, registerExporter, registerPackRef, registerProjectServer, reinjectLocalGuides, relationHealth, removeDomain, removeExternal, removeMember, removePackSelection, removeSnapshot, renameAlias, renameComponent, renameField, renameProjectId as renameId, renameMethod, renameParam, renameType, renderDiagram, repairForeignStepFields, repairSignatures, repairTypeSpellings, repointExternal, requiredPolicies, reservedWordProblem, resolveAgentTopology, resolveBudget, resolveChainingParent, resolveDomains, resolveExpectedOutputPaths, resolveCandidate as resolveExternalCandidate, resolveDeclared as resolveExternals, resolveImport, resolveInstalledPack, resolveProjectBinding, resolveProjectExports, resolveSignatures, resolveSubprojectForNamespace, resolveSubsystemExports, resolveVariantGuidance, retireSpecialists, retiredInvocationReadAs, retiredMountsOf, retiredReachFacts, returnTypeOf, rewriteReferences, runWithHostedLookup, runWithProjectBinding, runWithProjectRoot, sameContract, saveSpec, saveTopologyConfig, scanAllSpecs, schemaFingerprint, seedDemoTree, selectsFamily, serializeYaml, setExecutionTier, setProjectId as setId, setLogLevel, setNetwork, setProjectRoot, setProjectType, settledSpecPaths, signatureFacts, signatureTypeRefs, specIndexRetiredBy, specPathsInScope, splitNamespace, stepConfigVerdict, stepFieldsFor, stepGraph, storedMethodSignature, storedTypeMethod, subsystemDesignView, surfaceChanges, syncContextFiles, technologyName, technologyPackages, technologyTokens, toMarkdown, transportExportKind, transportKind, transportRequiresEndpoint, typeBindingOf, typeCanonicalTypes, typeDesignView, typeDialectFor, typeGenericParameters, typeIsMany, typeMappingFor, typeMatchesRef, typeNamedRefs, typeProblemEnumProposal, typeProblemIntProposal, typeSourceFiles, typeSpellingFacts, uninstallPack, updateMember, updateSpec, upsertPackSelection, validateAsComplete, validateComponentCandidate, validateFamily, validateProject, validateProjectConfig, validateRegistry, withLineEndings, withPack, writeFile, writeFileIfChanged, writeJsonFile, writeLockRecord, writeReachDenials, writeReachPermits, writeRootGuideDelegator, writeYamlFile, writtenTypeRefs };
|