@cat-factory/kernel 0.323.1 → 0.324.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domain/foundational-services.d.ts +107 -4
- package/dist/domain/foundational-services.d.ts.map +1 -1
- package/dist/domain/foundational-services.js +395 -25
- package/dist/domain/foundational-services.js.map +1 -1
- package/dist/domain/models.d.ts.map +1 -1
- package/dist/domain/models.js +6 -4
- package/dist/domain/models.js.map +1 -1
- package/dist/domain/workspace-cascade.d.ts +1 -1
- package/dist/domain/workspace-cascade.d.ts.map +1 -1
- package/dist/domain/workspace-cascade.js +1 -0
- package/dist/domain/workspace-cascade.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/ports/foundational-service-repositories.d.ts +52 -1
- package/dist/ports/foundational-service-repositories.d.ts.map +1 -1
- package/dist/ports/index.d.ts +2 -0
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/llm-metrics.d.ts +33 -0
- package/dist/ports/llm-metrics.d.ts.map +1 -1
- package/dist/ports/llm-metrics.js.map +1 -1
- package/dist/ports/secret-delegation.d.ts +12 -1
- package/dist/ports/secret-delegation.d.ts.map +1 -1
- package/dist/ports/secret-delegation.js +11 -0
- package/dist/ports/secret-delegation.js.map +1 -1
- package/dist/ports/service-catalog-repositories.d.ts +56 -0
- package/dist/ports/service-catalog-repositories.d.ts.map +1 -0
- package/dist/ports/service-catalog-repositories.js +2 -0
- package/dist/ports/service-catalog-repositories.js.map +1 -0
- package/dist/ports/service-catalog.d.ts +102 -0
- package/dist/ports/service-catalog.d.ts.map +1 -0
- package/dist/ports/service-catalog.js +2 -0
- package/dist/ports/service-catalog.js.map +1 -0
- package/package.json +3 -3
- package/dist/domain/cache-policy.d.ts +0 -6
- package/dist/domain/cache-policy.d.ts.map +0 -1
- package/dist/domain/cache-policy.js +0 -33
- package/dist/domain/cache-policy.js.map +0 -1
|
@@ -16,6 +16,29 @@ export declare const MAX_CATALOG_OPERATIONS = 40;
|
|
|
16
16
|
* API that happens to stop at `/f`.
|
|
17
17
|
*/
|
|
18
18
|
export declare const MAX_CONTRACT_BODY_CHARS = 120000;
|
|
19
|
+
/**
|
|
20
|
+
* How many characters the rendered CATALOG (or estate) block may run to.
|
|
21
|
+
*
|
|
22
|
+
* A total, where {@link MAX_CATALOG_OPERATIONS} is a per-contract cap, because the two bound
|
|
23
|
+
* different growth. The per-contract cap keeps one verbose spec from dominating; this one keeps
|
|
24
|
+
* the block proportional to nothing at all, which is what an imported estate demands: a portal
|
|
25
|
+
* import admits up to a thousand services, each carrying a description as long as the stored
|
|
26
|
+
* field allows, so an organisation's size would otherwise decide how much of every dispatch's
|
|
27
|
+
* context the catalog eats.
|
|
28
|
+
*
|
|
29
|
+
* What is dropped is STATED as a prefix (see {@link renderFoundationalCatalog}), because a
|
|
30
|
+
* silently shortened catalog reads as an organisation that runs fewer services than it does.
|
|
31
|
+
*/
|
|
32
|
+
export declare const MAX_CATALOG_RENDER_CHARS = 40000;
|
|
33
|
+
/**
|
|
34
|
+
* How much of ONE service's description rides the rendered block.
|
|
35
|
+
*
|
|
36
|
+
* Its own cap beside the total, so a single service with a 20,000-character description cannot
|
|
37
|
+
* consume the whole budget and push every service after it out of the list. The description is
|
|
38
|
+
* the field an author writes for this purpose, so it keeps a generous share; the truncation is
|
|
39
|
+
* stated on the line itself.
|
|
40
|
+
*/
|
|
41
|
+
export declare const MAX_CATALOG_DESCRIPTION_CHARS = 1500;
|
|
19
42
|
/** The `.cat-context/` directory the resolved contract documents are injected under. */
|
|
20
43
|
export declare const FOUNDATIONAL_CONTEXT_DIR = "foundational-services";
|
|
21
44
|
/** The index file listing what was injected (and what was asked for but could not be). */
|
|
@@ -28,6 +51,18 @@ export declare const FOUNDATIONAL_INDEX_FILE = "foundational-services/index.md";
|
|
|
28
51
|
* to agree on a rendering.
|
|
29
52
|
*/
|
|
30
53
|
export declare const FOUNDATIONAL_CATALOG_FILE = "foundational-services/catalog.md";
|
|
54
|
+
/**
|
|
55
|
+
* The file an ORIENTATION-time kind reads: a triage or investigation agent that has to work out
|
|
56
|
+
* WHICH of the organisation's services a piece of work belongs to.
|
|
57
|
+
*
|
|
58
|
+
* A separate path from {@link FOUNDATIONAL_CATALOG_FILE} carrying a separate rendering of the
|
|
59
|
+
* same rows, because the two readers need opposite framings of them. The catalog file tells a
|
|
60
|
+
* designer "prefer consuming one of these over building your own", which is the wrong sentence
|
|
61
|
+
* to put in front of an agent whose job is to locate a fault: it invites a triage report that
|
|
62
|
+
* recommends adopting a shared service. The estate file states ownership and interface surface
|
|
63
|
+
* and asks for neither a preference nor a declaration.
|
|
64
|
+
*/
|
|
65
|
+
export declare const FOUNDATIONAL_ESTATE_FILE = "foundational-services/estate.md";
|
|
31
66
|
/**
|
|
32
67
|
* The fenced block the Architect writes its declaration in. Parsed back by
|
|
33
68
|
* {@link parseFoundationalDeclaration}; named in the trait guidance so the two cannot drift.
|
|
@@ -51,10 +86,10 @@ export declare function detectContractFormat(path: string, content: string): Api
|
|
|
51
86
|
* contract. This keeps a scan's file reads proportional to the CANDIDATES rather than to the
|
|
52
87
|
* folder's size.
|
|
53
88
|
*
|
|
54
|
-
* The extension half is derived from the same
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
89
|
+
* The extension half is derived from the same lists `detectContractFormat` branches on, so the
|
|
90
|
+
* two cannot drift. The basename half ({@link NON_CONTRACT_BASENAMES}) is definitional rather
|
|
91
|
+
* than derived: a candidate may still be rejected on its content, and a non-candidate is never a
|
|
92
|
+
* contract we serve.
|
|
58
93
|
*/
|
|
59
94
|
export declare function isContractCandidatePath(path: string): boolean;
|
|
60
95
|
/**
|
|
@@ -69,6 +104,53 @@ export declare function isContractCandidatePath(path: string): boolean;
|
|
|
69
104
|
export declare function isContractModulePath(path: string): boolean;
|
|
70
105
|
/** Whether `content` parses as an OpenAPI **3.x** document (JSON or YAML). */
|
|
71
106
|
export declare function isOpenApiDocument(content: string): boolean;
|
|
107
|
+
/** Whether `content` parses as an AsyncAPI **2.x/3.x** document (JSON or YAML). */
|
|
108
|
+
export declare function isAsyncApiDocument(content: string): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Whether `content` is a GraphQL SDL **schema** rather than an operation document.
|
|
111
|
+
*
|
|
112
|
+
* The distinction is the whole reason this exists. A `.graphql` / `.gql` file in a repository is
|
|
113
|
+
* far more often a client's `query`/`mutation`/`fragment` text than the schema a service
|
|
114
|
+
* publishes, and a scan that registered one would tell an Architect the service exposes a surface
|
|
115
|
+
* it does not. What separates the two is a TYPE-SYSTEM definition, which an operation document by
|
|
116
|
+
* construction never carries.
|
|
117
|
+
*
|
|
118
|
+
* Recognition rather than validation, deliberately: the platform indexes no GraphQL operations
|
|
119
|
+
* ({@link operationsAreIndexable}), so the verdict this needs to reach is only "is this file the
|
|
120
|
+
* service's published interface", and a real parser would buy nothing for the extra dependency.
|
|
121
|
+
*/
|
|
122
|
+
export declare function isGraphqlSchemaDocument(content: string): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Whether `content` declares a gRPC **service** rather than only message shapes.
|
|
125
|
+
*
|
|
126
|
+
* A `.proto` file is routinely vendored, generated, or purely structural (shared `message`
|
|
127
|
+
* definitions with no RPCs at all), and none of those is an interface the owning service
|
|
128
|
+
* publishes. What makes a protobuf file a gRPC contract is a `service` block, so that is what is
|
|
129
|
+
* required rather than the extension alone.
|
|
130
|
+
*/
|
|
131
|
+
export declare function isGrpcServiceDocument(content: string): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* The operations an AsyncAPI document declares, as `PUBLISH orders/created` strings, capped at
|
|
134
|
+
* {@link MAX_CATALOG_OPERATIONS}.
|
|
135
|
+
*
|
|
136
|
+
* Both major versions are read, because an org's portal will hold documents of each and the two
|
|
137
|
+
* state the same fact in different places:
|
|
138
|
+
*
|
|
139
|
+
* - **2.x** puts the verb under the channel (`channels['orders/created'].subscribe`), so the
|
|
140
|
+
* operation is the channel name plus which side of it the document declares.
|
|
141
|
+
* - **3.x** hoists them into a top-level `operations` map whose entries carry an `action`
|
|
142
|
+
* (`send`/`receive`) and a `$ref` to the channel, so the operation is the action plus the
|
|
143
|
+
* channel the ref names, falling back to the operation's own key when the ref is not a local
|
|
144
|
+
* `#/channels/<name>` pointer. That fallback is the honest half: following an external ref
|
|
145
|
+
* would need a fetch this parser will not make, and the key is the document's own name for
|
|
146
|
+
* the operation rather than an invented one.
|
|
147
|
+
*
|
|
148
|
+
* A document whose version is neither indexes to nothing rather than being guessed at.
|
|
149
|
+
*/
|
|
150
|
+
export declare function indexAsyncApiOperations(content: string): {
|
|
151
|
+
operations: string[];
|
|
152
|
+
omitted: number;
|
|
153
|
+
};
|
|
72
154
|
/**
|
|
73
155
|
* The operations an OpenAPI document declares, as `GET /files/{id}` strings, capped at
|
|
74
156
|
* {@link MAX_CATALOG_OPERATIONS}. Returns `omitted` so the caller can STATE that the list is
|
|
@@ -121,6 +203,9 @@ export type FoundationalDefinitionProblem = {
|
|
|
121
203
|
} | {
|
|
122
204
|
reason: 'invalid_openapi_document';
|
|
123
205
|
contractId: string;
|
|
206
|
+
} | {
|
|
207
|
+
reason: 'invalid_asyncapi_document';
|
|
208
|
+
contractId: string;
|
|
124
209
|
} | {
|
|
125
210
|
reason: 'contract_library_not_referenced';
|
|
126
211
|
format: ApiContractFormat;
|
|
@@ -239,6 +324,24 @@ export type FoundationalCatalogRead = {
|
|
|
239
324
|
* by building the capability itself, and an outage is not that fact.
|
|
240
325
|
*/
|
|
241
326
|
export declare function renderFoundationalCatalog(read: FoundationalCatalogRead): string;
|
|
327
|
+
/**
|
|
328
|
+
* Render the ESTATE block an orientation-time kind reads: which services the organisation runs,
|
|
329
|
+
* who owns each, and what interface each publishes.
|
|
330
|
+
*
|
|
331
|
+
* The same rows as {@link renderFoundationalCatalog} and a different document, because the reader
|
|
332
|
+
* is doing a different job. A triage agent is not choosing a shared capability to build against;
|
|
333
|
+
* it is trying to work out which service a report belongs to and who to route it to, and the
|
|
334
|
+
* design framing ("prefer consuming one of these") would push it towards recommending an
|
|
335
|
+
* adoption instead of naming a fault. So this states ownership first, asks for no declaration,
|
|
336
|
+
* and says plainly what it does NOT carry: the full interface documents, which stay behind a
|
|
337
|
+
* design's declaration because folding every one of them into every dispatch is the cost the
|
|
338
|
+
* catalog/contracts split exists to avoid.
|
|
339
|
+
*
|
|
340
|
+
* The three-state input is the same one the catalog renderer takes, and for the same reason: an
|
|
341
|
+
* estate that could not be READ must not render as an organisation that runs nothing, which is
|
|
342
|
+
* exactly the substitution that would have a triage agent conclude a service does not exist.
|
|
343
|
+
*/
|
|
344
|
+
export declare function renderServiceEstate(read: FoundationalCatalogRead): string;
|
|
242
345
|
/** One contract document as the lazy read hands it downstream. */
|
|
243
346
|
export interface FoundationalContractBundle {
|
|
244
347
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundational-services.d.ts","sourceRoot":"","sources":["../../src/domain/foundational-services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAmB/B;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,SAAU,CAAA;AAE9C,wFAAwF;AACxF,eAAO,MAAM,wBAAwB,0BAA0B,CAAA;AAE/D,0FAA0F;AAC1F,eAAO,MAAM,uBAAuB,mCAAyC,CAAA;AAE7E;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,qCAA2C,CAAA;AAEjF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,0BAA0B,CAAA;AAInE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"foundational-services.d.ts","sourceRoot":"","sources":["../../src/domain/foundational-services.ts"],"names":[],"mappings":"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"}
|