@cat-factory/kernel 0.323.2 → 0.325.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/domain/environment-readiness.logic.d.ts +22 -0
  2. package/dist/domain/environment-readiness.logic.d.ts.map +1 -1
  3. package/dist/domain/environment-readiness.logic.js +35 -10
  4. package/dist/domain/environment-readiness.logic.js.map +1 -1
  5. package/dist/domain/foundational-services.d.ts +107 -4
  6. package/dist/domain/foundational-services.d.ts.map +1 -1
  7. package/dist/domain/foundational-services.js +395 -25
  8. package/dist/domain/foundational-services.js.map +1 -1
  9. package/dist/domain/models.d.ts.map +1 -1
  10. package/dist/domain/models.js +6 -4
  11. package/dist/domain/models.js.map +1 -1
  12. package/dist/domain/workspace-cascade.d.ts +1 -1
  13. package/dist/domain/workspace-cascade.d.ts.map +1 -1
  14. package/dist/domain/workspace-cascade.js +1 -0
  15. package/dist/domain/workspace-cascade.js.map +1 -1
  16. package/dist/index.d.ts +4 -4
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +6 -4
  19. package/dist/index.js.map +1 -1
  20. package/dist/ports/environment-diagnostics.d.ts +119 -0
  21. package/dist/ports/environment-diagnostics.d.ts.map +1 -0
  22. package/dist/ports/environment-diagnostics.js +2 -0
  23. package/dist/ports/environment-diagnostics.js.map +1 -0
  24. package/dist/ports/environment-investigation.d.ts +132 -0
  25. package/dist/ports/environment-investigation.d.ts.map +1 -0
  26. package/dist/ports/environment-investigation.js +2 -0
  27. package/dist/ports/environment-investigation.js.map +1 -0
  28. package/dist/ports/environment-provider.d.ts +32 -0
  29. package/dist/ports/environment-provider.d.ts.map +1 -1
  30. package/dist/ports/environment-repositories.d.ts +10 -1
  31. package/dist/ports/environment-repositories.d.ts.map +1 -1
  32. package/dist/ports/foundational-service-repositories.d.ts +52 -1
  33. package/dist/ports/foundational-service-repositories.d.ts.map +1 -1
  34. package/dist/ports/index.d.ts +4 -0
  35. package/dist/ports/index.d.ts.map +1 -1
  36. package/dist/ports/index.js.map +1 -1
  37. package/dist/ports/llm-metrics.d.ts +33 -0
  38. package/dist/ports/llm-metrics.d.ts.map +1 -1
  39. package/dist/ports/llm-metrics.js.map +1 -1
  40. package/dist/ports/secret-delegation.d.ts +12 -1
  41. package/dist/ports/secret-delegation.d.ts.map +1 -1
  42. package/dist/ports/secret-delegation.js +11 -0
  43. package/dist/ports/secret-delegation.js.map +1 -1
  44. package/dist/ports/service-catalog-repositories.d.ts +56 -0
  45. package/dist/ports/service-catalog-repositories.d.ts.map +1 -0
  46. package/dist/ports/service-catalog-repositories.js +2 -0
  47. package/dist/ports/service-catalog-repositories.js.map +1 -0
  48. package/dist/ports/service-catalog.d.ts +102 -0
  49. package/dist/ports/service-catalog.d.ts.map +1 -0
  50. package/dist/ports/service-catalog.js +2 -0
  51. package/dist/ports/service-catalog.js.map +1 -0
  52. package/dist/shared/redact-secrets.logic.d.ts +20 -0
  53. package/dist/shared/redact-secrets.logic.d.ts.map +1 -1
  54. package/dist/shared/redact-secrets.logic.js +46 -0
  55. package/dist/shared/redact-secrets.logic.js.map +1 -1
  56. package/package.json +2 -2
  57. package/dist/domain/cache-policy.d.ts +0 -6
  58. package/dist/domain/cache-policy.d.ts.map +0 -1
  59. package/dist/domain/cache-policy.js +0 -33
  60. package/dist/domain/cache-policy.js.map +0 -1
@@ -37,6 +37,13 @@ export interface EnvironmentReadinessInput {
37
37
  status: EnvironmentStatus;
38
38
  /** The provider's own last error, when it recorded one; used verbatim in a `failed` verdict. */
39
39
  lastError?: string | null;
40
+ /**
41
+ * The provider's own account of a state it has not left yet, when it gave one. It is the only
42
+ * channel that survives a `provisioning` poll, because `lastError` is persisted on `failed`
43
+ * alone (see `ProvisionedEnvironment.statusNote`). It is what lets a `timed_out` verdict name
44
+ * the state the environment was stuck in rather than only how long it was stuck.
45
+ */
46
+ statusNote?: string | null;
40
47
  }
41
48
  /**
42
49
  * Human-readable elapsed time for a readiness verdict's message, in the coarsest unit that
@@ -44,6 +51,21 @@ export interface EnvironmentReadinessInput {
44
51
  * operator is quoted a duration rather than a millisecond count.
45
52
  */
46
53
  export declare function describeWaitedFor(ms: number): string;
54
+ /**
55
+ * How an environment that has stopped at a status it will never leave for `ready` is explained to
56
+ * a person: `failed` / `expired` / `tearing_down` / `torn_down`. Shared, because every reader that
57
+ * has to give up on such an environment owes the same account, and the two that stated it
58
+ * separately disagreed about it.
59
+ *
60
+ * The provider's own error is the whole message where it recorded one, because on these statuses
61
+ * that error IS the verdict. With none, the state is NAMED and the last note is APPENDED rather
62
+ * than substituted, and both halves of that matter. Naming the state is what separates "the
63
+ * provider refused it" from "something tore it down under the run", which send an operator to
64
+ * different places. Appending rather than substituting is because a bare note reads as the reason
65
+ * the environment ended up here, which nothing here knows: a `torn_down` row's note describes the
66
+ * spin-up it was in the middle of, not who tore it down.
67
+ */
68
+ export declare function describeTerminalEnvironment(env: EnvironmentReadinessInput): string;
47
69
  /**
48
70
  * Judge one readiness poll: the environment as the provider just reported it, against how long
49
71
  * the step has been waiting.
@@ -1 +1 @@
1
- {"version":3,"file":"environment-readiness.logic.d.ts","sourceRoot":"","sources":["../../src/domain/environment-readiness.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAkBnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,QAAiB,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAExC,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,iBAAiB,CAAA;IACzB,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,yBAAyB,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAqC,GAC/C,oBAAoB,CAwBtB"}
1
+ {"version":3,"file":"environment-readiness.logic.d.ts","sourceRoot":"","sources":["../../src/domain/environment-readiness.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAkBnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,QAAiB,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAExC,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,iBAAiB,CAAA;IACzB,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,yBAAyB,GAAG,MAAM,CAQlF;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,yBAAyB,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAqC,GAC/C,oBAAoB,CA0BtB"}
@@ -41,6 +41,28 @@ export function describeWaitedFor(ms) {
41
41
  const seconds = Math.max(1, Math.round(ms / 1000));
42
42
  return `${seconds} second${seconds === 1 ? '' : 's'}`;
43
43
  }
44
+ /**
45
+ * How an environment that has stopped at a status it will never leave for `ready` is explained to
46
+ * a person: `failed` / `expired` / `tearing_down` / `torn_down`. Shared, because every reader that
47
+ * has to give up on such an environment owes the same account, and the two that stated it
48
+ * separately disagreed about it.
49
+ *
50
+ * The provider's own error is the whole message where it recorded one, because on these statuses
51
+ * that error IS the verdict. With none, the state is NAMED and the last note is APPENDED rather
52
+ * than substituted, and both halves of that matter. Naming the state is what separates "the
53
+ * provider refused it" from "something tore it down under the run", which send an operator to
54
+ * different places. Appending rather than substituting is because a bare note reads as the reason
55
+ * the environment ended up here, which nothing here knows: a `torn_down` row's note describes the
56
+ * spin-up it was in the middle of, not who tore it down.
57
+ */
58
+ export function describeTerminalEnvironment(env) {
59
+ const failure = env.lastError?.trim();
60
+ if (failure)
61
+ return failure;
62
+ const note = env.statusNote?.trim();
63
+ return (`Environment provisioning did not complete (status: ${env.status}).` +
64
+ (note ? ` Last provider note: ${note}` : ''));
65
+ }
44
66
  /**
45
67
  * Judge one readiness poll: the environment as the provider just reported it, against how long
46
68
  * the step has been waiting.
@@ -54,23 +76,26 @@ export function describeWaitedFor(ms) {
54
76
  export function judgeEnvironmentReadiness(env, waitedMs, timeoutMs = ENVIRONMENT_READY_TIMEOUT_MS) {
55
77
  if (env.status === 'ready')
56
78
  return { kind: 'ready' };
79
+ const failure = env.lastError?.trim();
80
+ const note = env.statusNote?.trim();
81
+ // `failed` / `expired` / `tearing_down` / `torn_down`: none of these becomes `ready` on its own,
82
+ // so waiting out the deadline would only delay the same answer.
57
83
  if (env.status !== 'provisioning') {
58
- // `failed` / `expired` / `tearing_down` / `torn_down`: none of these becomes `ready` on its
59
- // own, so waiting out the deadline would only delay the same answer. Name the state, because
60
- // "the provider refused it" and "something tore it down under the run" send an operator to
61
- // different places.
62
- return {
63
- kind: 'failed',
64
- error: env.lastError?.trim() ||
65
- `Environment provisioning did not complete (status: ${env.status}).`,
66
- };
84
+ return { kind: 'failed', error: describeTerminalEnvironment(env) };
67
85
  }
68
86
  if (waitedMs >= timeoutMs) {
69
87
  return {
70
88
  kind: 'timed_out',
71
89
  error: `Environment was still provisioning after ${describeWaitedFor(waitedMs)}` +
72
90
  ` (readiness ceiling ${describeWaitedFor(timeoutMs)}).` +
73
- (env.lastError?.trim() ? ` Last provider error: ${env.lastError.trim()}` : ''),
91
+ // BOTH, where a caller carries both, each under its own label and the fault FIRST. A
92
+ // recorded fault outranks a note on every reader (it is the more specific claim, and the
93
+ // only one of the two that is a fault), and dropping either would be the misattribution
94
+ // this pair exists to avoid: the note is the one channel a `provisioning` provider had,
95
+ // since that is exactly the status `lastError` is nulled on, so a caller reaching here
96
+ // with a fault as well carries it from an earlier poll and it is not superseded.
97
+ (failure ? ` Last provider error: ${failure}` : '') +
98
+ (note ? ` Last provider note: ${note}` : ''),
74
99
  };
75
100
  }
76
101
  return { kind: 'waiting', elapsedMs: waitedMs };
@@ -1 +1 @@
1
- {"version":3,"file":"environment-readiness.logic.js","sourceRoot":"","sources":["../../src/domain/environment-readiness.logic.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,2FAA2F;AAC3F,8EAA8E;AAC9E,EAAE;AACF,8FAA8F;AAC9F,6FAA6F;AAC7F,gGAAgG;AAChG,8FAA8F;AAC9F,+FAA+F;AAC/F,6BAA6B;AAC7B,EAAE;AACF,4FAA4F;AAC5F,+FAA+F;AAC/F,6DAA6D;AAC7D,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAqB1D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAA;QACvC,OAAO,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACvD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IAClD,OAAO,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AACvD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAA8B,EAC9B,QAAgB,EAChB,SAAS,GAAW,4BAA4B;IAEhD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IACpD,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAClC,4FAA4F;QAC5F,6FAA6F;QAC7F,2FAA2F;QAC3F,oBAAoB;QACpB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EACH,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE;gBACrB,sDAAsD,GAAG,CAAC,MAAM,IAAI;SACvE,CAAA;IACH,CAAC;IACD,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EACH,4CAA4C,iBAAiB,CAAC,QAAQ,CAAC,EAAE;gBACzE,uBAAuB,iBAAiB,CAAC,SAAS,CAAC,IAAI;gBACvD,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,yBAAyB,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AACjD,CAAC"}
1
+ {"version":3,"file":"environment-readiness.logic.js","sourceRoot":"","sources":["../../src/domain/environment-readiness.logic.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,2FAA2F;AAC3F,8EAA8E;AAC9E,EAAE;AACF,8FAA8F;AAC9F,6FAA6F;AAC7F,gGAAgG;AAChG,8FAA8F;AAC9F,+FAA+F;AAC/F,6BAA6B;AAC7B,EAAE;AACF,4FAA4F;AAC5F,+FAA+F;AAC/F,6DAA6D;AAC7D,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AA4B1D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAA;QACvC,OAAO,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACvD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IAClD,OAAO,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AACvD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAA8B;IACxE,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAA;IACrC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA;IACnC,OAAO,CACL,sDAAsD,GAAG,CAAC,MAAM,IAAI;QACpE,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7C,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAA8B,EAC9B,QAAgB,EAChB,SAAS,GAAW,4BAA4B;IAEhD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IACpD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAA;IACrC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA;IACnC,iGAAiG;IACjG,gEAAgE;IAChE,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAA;IACpE,CAAC;IACD,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EACH,4CAA4C,iBAAiB,CAAC,QAAQ,CAAC,EAAE;gBACzE,uBAAuB,iBAAiB,CAAC,SAAS,CAAC,IAAI;gBACvD,qFAAqF;gBACrF,yFAAyF;gBACzF,wFAAwF;gBACxF,wFAAwF;gBACxF,uFAAuF;gBACvF,iFAAiF;gBACjF,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAA;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AACjD,CAAC"}
@@ -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 two lists `detectContractFormat` branches on, so
55
- * the two cannot drift. The basename half ({@link NON_CONTRACT_BASENAMES}) is definitional
56
- * rather than derived: a candidate may still be rejected on its content, and a non-candidate is
57
- * never a contract we serve.
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,CAW5F;AAuCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAMD,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG1D;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IACvD,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB,CAkBA;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,GACX;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAI3C;AAyBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB,CAoBA;AAsBD,sEAAsE;AACtE,MAAM,MAAM,6BAA6B,GACrC;IAAE,MAAM,EAAE,uBAAuB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,0BAA0B,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC1D;IACE,MAAM,EAAE,iCAAiC,CAAA;IACzC,MAAM,EAAE,iBAAiB,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB,GACD;IAAE,MAAM,EAAE,0BAA0B,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAChC,GAAG,6BAA6B,EAAE,CAgClC;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,CAW1F;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,iBAAiB,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,kBAAkB,CAWrB;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GACtB,4BAA4B,CAyB9B;AAID,8FAA8F;AAC9F,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;CACrC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAA;CAAE;AAC7D;;;;;GAKG;GACD;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAA;AAE7B;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAoC/E;AA0BD,kEAAkE;AAClE,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3F,gFAAgF;IAChF,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAwBjF;AAUD;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,0BAA0B,EAAE,CAAA;IACrC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,wFAAwF;IACxF,aAAa,EAAE,OAAO,CAAA;CACvB,GACD;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAA;AAE7B;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAsC5E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,GACvD,MAAM,EAAE,CAkBV;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAA;IACZ,4FAA4F;IAC5F,WAAW,EAAE,yBAAyB,EAAE,CAAA;CACzC;AAED,kFAAkF;AAClF,MAAM,WAAW,yBAAyB;IACxC,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAA;IACX,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,GAC3C,0BAA0B,EAAE,CAW9B;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD"}
1
+ {"version":3,"file":"foundational-services.d.ts","sourceRoot":"","sources":["../../src/domain/foundational-services.ts"],"names":[],"mappings":"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"}