@arki/dot 0.3.0 → 0.4.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 (113) hide show
  1. package/README.md +86 -86
  2. package/dist/cli/discover.js +2 -2
  3. package/dist/cli/discover.js.map +1 -1
  4. package/dist/cli/error-codes.d.ts +8 -0
  5. package/dist/cli/error-codes.d.ts.map +1 -1
  6. package/dist/cli/error-codes.js +12 -0
  7. package/dist/cli/error-codes.js.map +1 -1
  8. package/dist/cli/index.d.ts +9 -2
  9. package/dist/cli/index.d.ts.map +1 -1
  10. package/dist/cli/index.js +54 -23
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/new.d.ts +1 -1
  13. package/dist/cli/new.js +1 -1
  14. package/dist/cli/render-doctor.d.ts +1 -1
  15. package/dist/cli/render-doctor.js +23 -23
  16. package/dist/cli/render-doctor.js.map +1 -1
  17. package/dist/cli/render-explain.d.ts.map +1 -1
  18. package/dist/cli/render-explain.js +33 -19
  19. package/dist/cli/render-explain.js.map +1 -1
  20. package/dist/cli/render-graph.d.ts +3 -3
  21. package/dist/cli/render-graph.js +12 -12
  22. package/dist/cli/render-graph.js.map +1 -1
  23. package/dist/cli/render-projection.d.ts +29 -0
  24. package/dist/cli/render-projection.d.ts.map +1 -0
  25. package/dist/cli/render-projection.js +202 -0
  26. package/dist/cli/render-projection.js.map +1 -0
  27. package/dist/define-app.d.ts +49 -17
  28. package/dist/define-app.d.ts.map +1 -1
  29. package/dist/define-app.js +16 -9
  30. package/dist/define-app.js.map +1 -1
  31. package/dist/diagnostics.d.ts +19 -15
  32. package/dist/diagnostics.d.ts.map +1 -1
  33. package/dist/diagnostics.js +2 -2
  34. package/dist/index.d.ts +15 -12
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +7 -5
  37. package/dist/index.js.map +1 -1
  38. package/dist/init-pips.d.ts +45 -0
  39. package/dist/init-pips.d.ts.map +1 -0
  40. package/dist/init-pips.js +49 -0
  41. package/dist/init-pips.js.map +1 -0
  42. package/dist/init-plugins.d.ts +45 -0
  43. package/dist/init-plugins.d.ts.map +1 -0
  44. package/dist/init-plugins.js +49 -0
  45. package/dist/init-plugins.js.map +1 -0
  46. package/dist/kernel/app-instance.d.ts +5 -5
  47. package/dist/kernel/app-instance.d.ts.map +1 -1
  48. package/dist/kernel/app-instance.js +375 -244
  49. package/dist/kernel/app-instance.js.map +1 -1
  50. package/dist/kernel/otel.d.ts +19 -19
  51. package/dist/kernel/otel.d.ts.map +1 -1
  52. package/dist/kernel/otel.js +22 -22
  53. package/dist/kernel/otel.js.map +1 -1
  54. package/dist/lifecycle-observer.d.ts +10 -10
  55. package/dist/lifecycle-observer.d.ts.map +1 -1
  56. package/dist/lifecycle-observer.js +1 -1
  57. package/dist/lifecycle.d.ts +18 -14
  58. package/dist/lifecycle.d.ts.map +1 -1
  59. package/dist/lifecycle.js +13 -9
  60. package/dist/lifecycle.js.map +1 -1
  61. package/dist/manifest.d.ts +70 -48
  62. package/dist/manifest.d.ts.map +1 -1
  63. package/dist/manifest.js +74 -5
  64. package/dist/manifest.js.map +1 -1
  65. package/dist/pip-contract.d.ts +29 -21
  66. package/dist/pip-contract.d.ts.map +1 -1
  67. package/dist/pip-contract.js +1 -0
  68. package/dist/pip-contract.js.map +1 -1
  69. package/dist/pip.d.ts +7 -4
  70. package/dist/pip.d.ts.map +1 -1
  71. package/dist/pip.js +2 -0
  72. package/dist/pip.js.map +1 -1
  73. package/dist/plugin-contract.d.ts +335 -143
  74. package/dist/plugin-contract.d.ts.map +1 -1
  75. package/dist/plugin-contract.js +201 -36
  76. package/dist/plugin-contract.js.map +1 -1
  77. package/dist/plugin.d.ts +18 -15
  78. package/dist/plugin.d.ts.map +1 -1
  79. package/dist/plugin.js +11 -11
  80. package/dist/plugin.js.map +1 -1
  81. package/dist/test-harness.d.ts +31 -31
  82. package/dist/test-harness.d.ts.map +1 -1
  83. package/dist/test-harness.js +29 -28
  84. package/dist/test-harness.js.map +1 -1
  85. package/dist/timeline.d.ts +2 -2
  86. package/dist/timeline.js +5 -5
  87. package/dist/timeline.js.map +1 -1
  88. package/package.json +9 -9
  89. package/src/cli/discover.ts +2 -2
  90. package/src/cli/error-codes.ts +12 -0
  91. package/src/cli/index.ts +76 -29
  92. package/src/cli/new.ts +1 -1
  93. package/src/cli/render-doctor.ts +21 -21
  94. package/src/cli/render-explain.ts +37 -19
  95. package/src/cli/render-graph.ts +12 -12
  96. package/src/cli/render-projection.ts +239 -0
  97. package/src/define-app.ts +85 -22
  98. package/src/diagnostics.ts +19 -15
  99. package/src/index.ts +37 -20
  100. package/src/init-plugins.ts +142 -0
  101. package/src/kernel/app-instance.ts +428 -282
  102. package/src/kernel/otel.ts +27 -27
  103. package/src/lifecycle-observer.ts +10 -10
  104. package/src/lifecycle.ts +19 -15
  105. package/src/manifest.ts +128 -50
  106. package/src/{pip-contract.ts → plugin-contract.ts} +73 -62
  107. package/src/{pip.ts → plugin.ts} +37 -18
  108. package/src/test-harness.ts +52 -51
  109. package/src/timeline.ts +6 -6
  110. package/templates/app-minimal/AGENTS.md.tmpl +9 -9
  111. package/templates/app-minimal/README.md.tmpl +1 -1
  112. package/templates/app-minimal/tests/boot.test.ts.tmpl +1 -1
  113. package/src/cli/render-openapi.ts +0 -147
@@ -1 +1 @@
1
- {"version":3,"file":"render-graph.js","sourceRoot":"","sources":["../../src/cli/render-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,oEAAoE;AACpE,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACxD,MAAM,KAAK,GAAa,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,qEAAqE;QACrE,6BAA6B;QAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,SAAS;QACrD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,MAAmE,EACnE,IAAmB;IAEnB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAA8B;QAC1C,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,UAAU,EAAE,CAAC,WAAW,EAAE;QACvC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;QAC5C,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,GAAG,GACP,IAAI,CAAC,GAAG;QACR,CAAC,CAAC,IAAY,EAAE,EAAE;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"render-graph.js","sourceRoot":"","sources":["../../src/cli/render-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,uEAAuE;AACvE,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACxD,MAAM,KAAK,GAAa,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,wEAAwE;QACxE,6BAA6B;QAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,SAAS;QACrD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,MAAmE,EACnE,IAAmB;IAEnB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAA8B;QAC1C,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,UAAU,EAAE,CAAC,WAAW,EAAE;QACvC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;QAC5C,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,GAAG,GACP,IAAI,CAAC,GAAG;QACR,CAAC,CAAC,IAAY,EAAE,EAAE;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Renderer for `dot explain --as <format>`.
3
+ *
4
+ * The kernel owns selection, app-file-relative module resolution, import, and
5
+ * envelope printing. The adapter owns the projection module and document
6
+ * vocabulary.
7
+ */
8
+ import type { DotAppManifest, JsonValue } from '../manifest.js';
9
+ import type { DotCliEnvelope, RenderOptions } from './render-explain.js';
10
+ export type ProjectionData = {
11
+ format: string;
12
+ document: JsonValue;
13
+ };
14
+ export type ProjectionSource = {
15
+ manifest: DotAppManifest;
16
+ command: 'explain';
17
+ format: string;
18
+ /** Absolute app file path; projection specifiers resolve relative to it. */
19
+ appFilePath: string;
20
+ /** Per-invocation debug override for the selected projection module. */
21
+ module?: string;
22
+ };
23
+ /**
24
+ * Render an adapter-owned projection. Plain mode prints strings verbatim and
25
+ * JSON values as pretty JSON; JSON mode wraps the document in the standard
26
+ * CLI envelope.
27
+ */
28
+ export declare function renderProjection(source: ProjectionSource, opts: RenderOptions): Promise<DotCliEnvelope<ProjectionData>>;
29
+ //# sourceMappingURL=render-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-projection.d.ts","sourceRoot":"","sources":["../../src/cli/render-projection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzE,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAMF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAgKF;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAqCzC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Renderer for `dot explain --as <format>`.
3
+ *
4
+ * The kernel owns selection, app-file-relative module resolution, import, and
5
+ * envelope printing. The adapter owns the projection module and document
6
+ * vocabulary.
7
+ */
8
+ import { createRequire } from 'node:module';
9
+ import { dirname, isAbsolute } from 'node:path';
10
+ import { pathToFileURL } from 'node:url';
11
+ import { DotCliError, DotCliErrorCode } from './error-codes.js';
12
+ const defaultOut = (line) => {
13
+ process.stdout.write(line);
14
+ };
15
+ function nowIso(opts) {
16
+ const factory = opts.now ?? (() => new Date());
17
+ return factory().toISOString();
18
+ }
19
+ function isJsonPrimitive(value) {
20
+ return value === null || typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number';
21
+ }
22
+ function isPlainObject(value) {
23
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
24
+ return false;
25
+ const prototype = Object.getPrototypeOf(value);
26
+ return prototype === Object.prototype || prototype === null;
27
+ }
28
+ function isJsonValue(value) {
29
+ if (isJsonPrimitive(value))
30
+ return typeof value !== 'number' || Number.isFinite(value);
31
+ if (Array.isArray(value))
32
+ return value.every(isJsonValue);
33
+ if (!isPlainObject(value))
34
+ return false;
35
+ return Object.values(value).every(isJsonValue);
36
+ }
37
+ function jsonDeepEqual(left, right) {
38
+ if (isJsonPrimitive(left) || isJsonPrimitive(right))
39
+ return Object.is(left, right);
40
+ if (Array.isArray(left) || Array.isArray(right)) {
41
+ if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length)
42
+ return false;
43
+ return left.every((value, index) => jsonDeepEqual(value, right[index]));
44
+ }
45
+ if (!isPlainObject(left) || !isPlainObject(right))
46
+ return false;
47
+ const leftEntries = Object.entries(left);
48
+ const rightEntries = Object.entries(right);
49
+ if (leftEntries.length !== rightEntries.length)
50
+ return false;
51
+ for (const [key, value] of leftEntries) {
52
+ if (!Object.hasOwn(right, key) || !jsonDeepEqual(value, right[key]))
53
+ return false;
54
+ }
55
+ return true;
56
+ }
57
+ function toProjectionJsonValue(value) {
58
+ let serialized;
59
+ try {
60
+ serialized = JSON.stringify(value);
61
+ }
62
+ catch (error) {
63
+ throw new TypeError('Projection output must be JSON-serializable.', { cause: error });
64
+ }
65
+ if (serialized === undefined) {
66
+ throw new TypeError('Projection output must be JSON-serializable.');
67
+ }
68
+ const parsed = JSON.parse(serialized);
69
+ if (!isJsonValue(parsed) || !jsonDeepEqual(value, parsed)) {
70
+ throw new TypeError('Projection output must survive a JSON round trip without lossy coercions.');
71
+ }
72
+ return parsed;
73
+ }
74
+ function selectProjection(manifest, format) {
75
+ const projections = manifest.projections.filter(projection => projection.format === format);
76
+ if (projections.length === 0) {
77
+ const formats = [...new Set(manifest.projections.map(projection => projection.format))];
78
+ throw new DotCliError({
79
+ code: DotCliErrorCode.ProjectionNotFound,
80
+ message: `No projection is registered for format "${format}".`,
81
+ remediation: formats.length === 0
82
+ ? 'Register an adapter that contributes this projection format, or remove --as.'
83
+ : `Use one of the registered formats (${formats.join(', ')}), or mount the adapter that provides "${format}".`,
84
+ metadata: { format, registeredFormats: formats },
85
+ });
86
+ }
87
+ const modules = new Set(projections.map(projection => projection.module));
88
+ if (modules.size > 1) {
89
+ throw new DotCliError({
90
+ code: DotCliErrorCode.ProjectionConflict,
91
+ message: `Multiple projection modules are registered for format "${format}".`,
92
+ remediation: 'Only one module may own a projection format. Remove one registration, or make both plugins register the same module specifier.',
93
+ metadata: {
94
+ format,
95
+ projections: projections.map(projection => ({ plugin: projection.plugin, module: projection.module })),
96
+ },
97
+ });
98
+ }
99
+ return projections[0];
100
+ }
101
+ function getBunResolver() {
102
+ const candidate = globalThis.Bun;
103
+ if (typeof candidate !== 'object' || candidate === null)
104
+ return undefined;
105
+ const resolveSync = candidate.resolveSync;
106
+ if (typeof resolveSync !== 'function')
107
+ return undefined;
108
+ return { resolveSync: (specifier, from) => resolveSync.call(candidate, specifier, from) };
109
+ }
110
+ function importSpecifierFor(resolved) {
111
+ if (resolved.startsWith('file:'))
112
+ return resolved;
113
+ if (isAbsolute(resolved))
114
+ return pathToFileURL(resolved).href;
115
+ return resolved;
116
+ }
117
+ function resolveProjectionSpecifier(specifier, appFilePath) {
118
+ const fromDir = dirname(appFilePath);
119
+ const bun = getBunResolver();
120
+ if (bun !== undefined)
121
+ return bun.resolveSync(specifier, fromDir);
122
+ return createRequire(appFilePath).resolve(specifier);
123
+ }
124
+ async function loadProjectionModule(specifier, appFilePath, registeringPlugin) {
125
+ let resolved;
126
+ try {
127
+ resolved = resolveProjectionSpecifier(specifier, appFilePath);
128
+ }
129
+ catch (error) {
130
+ throw new DotCliError({
131
+ code: DotCliErrorCode.ProjectionImportFailed,
132
+ message: `Failed to resolve projection module "${specifier}".`,
133
+ remediation: 'Check that the projection module is installed and that package subpath exports include a default condition. Use --module <specifier> to debug with a replacement module.',
134
+ metadata: { specifier, appFilePath, registeringPlugin },
135
+ cause: error,
136
+ });
137
+ }
138
+ let imported;
139
+ try {
140
+ imported = await import(importSpecifierFor(resolved));
141
+ }
142
+ catch (error) {
143
+ throw new DotCliError({
144
+ code: DotCliErrorCode.ProjectionImportFailed,
145
+ message: `Failed to import projection module "${specifier}".`,
146
+ remediation: 'Fix the projection module export, or use --module <specifier> to debug with a replacement module.',
147
+ metadata: { specifier, resolved, registeringPlugin },
148
+ cause: error,
149
+ });
150
+ }
151
+ if (typeof imported !== 'object' || imported === null || typeof imported.project !== 'function') {
152
+ throw new DotCliError({
153
+ code: DotCliErrorCode.ProjectionImportFailed,
154
+ message: `Projection module "${specifier}" does not export project(manifest).`,
155
+ remediation: 'Export a named `project(manifest)` function from the projection module. Use --module <specifier> to test a corrected module.',
156
+ metadata: { specifier, resolved, registeringPlugin },
157
+ });
158
+ }
159
+ return { module: imported, resolved };
160
+ }
161
+ /**
162
+ * Render an adapter-owned projection. Plain mode prints strings verbatim and
163
+ * JSON values as pretty JSON; JSON mode wraps the document in the standard
164
+ * CLI envelope.
165
+ */
166
+ export async function renderProjection(source, opts) {
167
+ const projection = selectProjection(source.manifest, source.format);
168
+ const specifier = source.module ?? projection.module;
169
+ const { module } = await loadProjectionModule(specifier, source.appFilePath, projection.plugin);
170
+ let document;
171
+ try {
172
+ document = toProjectionJsonValue(await module.project(source.manifest));
173
+ }
174
+ catch (error) {
175
+ throw new DotCliError({
176
+ code: DotCliErrorCode.ProjectionExecutionFailed,
177
+ message: `Projection "${source.format}" failed while rendering.`,
178
+ remediation: 'Fix the projection project(manifest) function so it is pure and returns JSON-round-trip-safe output.',
179
+ metadata: { format: source.format, specifier, registeringPlugin: projection.plugin },
180
+ cause: error,
181
+ });
182
+ }
183
+ const envelope = {
184
+ status: 'success',
185
+ command: source.command,
186
+ generatedAt: nowIso(opts),
187
+ data: { format: source.format, document },
188
+ errors: [],
189
+ };
190
+ const out = opts.out ?? defaultOut;
191
+ if (opts.json) {
192
+ out(`${JSON.stringify(envelope, null, 2)}\n`);
193
+ }
194
+ else if (typeof document === 'string') {
195
+ out(`${document}\n`);
196
+ }
197
+ else {
198
+ out(`${JSON.stringify(document, null, 2)}\n`);
199
+ }
200
+ return envelope;
201
+ }
202
+ //# sourceMappingURL=render-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-projection.js","sourceRoot":"","sources":["../../src/cli/render-projection.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Public entry point for the DOT kernel (v2).
3
3
  *
4
- * `defineApp(name)` returns a `DotAppBuilder` that accumulates pips via
5
- * `.use(pip)`, then transitions through the 5-hook lifecycle:
4
+ * `defineApp(name)` returns a `DotAppBuilder` that accumulates plugins via
5
+ * `.use(plugin)`, then transitions through the 5-hook lifecycle:
6
6
  *
7
7
  * defineApp -> use* -> configure() -> boot() -> start() -> stop() -> dispose()
8
8
  *
9
- * `.use()` is compile-time guarded: a pip whose `needs` are not satisfied
9
+ * `.use()` is compile-time guarded: a plugin whose `needs` are not satisfied
10
10
  * by services provided so far — or whose provides collide with existing
11
11
  * wire keys — fails to typecheck at the call site ("Expected 2 arguments,
12
12
  * but got 1", with the diagnostic embedded in the expected second
@@ -22,7 +22,7 @@ import type { DotDiagnosticsSnapshot } from './diagnostics.js';
22
22
  import type { DotLifecycleObserver } from './lifecycle-observer.js';
23
23
  import type { DotLifecycleState } from './lifecycle.js';
24
24
  import type { DotAppManifest } from './manifest.js';
25
- import type { EmptyShape, Pip, ServiceRecord } from './pip-contract.js';
25
+ import type { AnyPlugin, EmptyShape, Plugin, ServiceRecord } from './plugin-contract.js';
26
26
  type MissingKeys<TAvail, TNeeds> = {
27
27
  readonly [K in Exclude<keyof TNeeds, keyof TAvail>]: TNeeds[K];
28
28
  };
@@ -33,27 +33,53 @@ type MismatchedKeys<TAvail, TNeeds> = {
33
33
  };
34
34
  };
35
35
  type NeedsError<TAvail extends ServiceRecord, TNeeds extends ServiceRecord> = {
36
- readonly 'DOT: pip needs services no earlier .use() provides': {
36
+ readonly 'DOT: plugin needs services no earlier .use() provides': {
37
37
  readonly missing: MissingKeys<TAvail, TNeeds>;
38
38
  readonly mismatched: MismatchedKeys<TAvail, TNeeds>;
39
39
  };
40
40
  };
41
41
  type CollisionError<TAvail, TProvides> = {
42
- readonly 'DOT: pip provides wire keys already provided (use rename())': keyof TAvail & keyof TProvides;
42
+ readonly 'DOT: plugin provides wire keys already provided (use rename())': keyof TAvail & keyof TProvides;
43
43
  };
44
44
  /**
45
- * A pip whose `boot` always throws infers `TProvides = never`, which would
45
+ * A plugin whose `boot` always throws infers `TProvides = never`, which would
46
46
  * poison both the collision check (`keyof never` matches everything) and
47
- * the accumulated record (`TAvail & never` = `never`). Such a pip provides
47
+ * the accumulated record (`TAvail & never` = `never`). Such a plugin provides
48
48
  * nothing — normalize to the empty shape.
49
49
  */
50
- type NormalizeProvides<TP extends ServiceRecord> = [TP] extends [never] ? EmptyShape : TP;
50
+ export type NormalizeProvides<TP extends ServiceRecord> = [TP] extends [never] ? EmptyShape : TP;
51
51
  /**
52
- * Rest-tuple guard. Satisfied → `[]` (call `.use(pip)` with one argument).
52
+ * Rest-tuple guard. Satisfied → `[]` (call `.use(plugin)` with one argument).
53
53
  * Violated → a required second argument of an unconstructible error type,
54
54
  * so the call site fails with the diagnostic embedded in the expected type.
55
55
  */
56
56
  export type UseGuard<TAvail extends ServiceRecord, TNeeds extends ServiceRecord, TProvides extends ServiceRecord> = [TAvail] extends [TNeeds] ? [keyof TAvail & keyof TProvides] extends [never] ? [] : [error: CollisionError<TAvail, TProvides>] : [error: NeedsError<TAvail, TNeeds>];
57
+ type UseAllState<TAvail extends ServiceRecord, TPlugins extends readonly AnyPlugin[]> = TPlugins extends readonly [
58
+ infer Head,
59
+ ...infer Tail
60
+ ] ? Head extends Plugin<infer TNeeds, infer TProvides> ? UseGuard<TAvail, TNeeds, NormalizeProvides<TProvides>> extends [] ? UseAllState<TAvail & NormalizeProvides<TProvides>, Extract<Tail, readonly AnyPlugin[]>> : {
61
+ readonly avail: TAvail;
62
+ readonly error: {
63
+ readonly 'DOT: useAll tuple contains a plugin that cannot be used at this position': UseGuard<TAvail, TNeeds, NormalizeProvides<TProvides>>[0];
64
+ };
65
+ } : {
66
+ readonly avail: TAvail;
67
+ readonly error: {
68
+ readonly 'DOT: useAll accepts only plugins': Head;
69
+ };
70
+ } : {
71
+ readonly avail: TAvail;
72
+ readonly error: never;
73
+ };
74
+ export type UseAllAvail<TAvail extends ServiceRecord, TPlugins extends readonly AnyPlugin[]> = UseAllState<TAvail, TPlugins>['avail'];
75
+ type UseAllTupleGuard<TPlugins extends readonly AnyPlugin[]> = number extends TPlugins['length'] ? [
76
+ error: {
77
+ readonly 'DOT: useAll requires a tuple; add `as const` or pass plugins directly in declaration order': TPlugins;
78
+ }
79
+ ] : [];
80
+ export type UseAllGuard<TAvail extends ServiceRecord, TPlugins extends readonly AnyPlugin[]> = [
81
+ UseAllState<TAvail, TPlugins>['error']
82
+ ] extends [never] ? UseAllTupleGuard<TPlugins> : [error: UseAllState<TAvail, TPlugins>['error']];
57
83
  /**
58
84
  * Public DotApp surface. The internal `DotAppImpl` implements this; consumers
59
85
  * see only these members.
@@ -64,7 +90,7 @@ export type DotApp<TServices extends ServiceRecord> = {
64
90
  /** Current lifecycle state. */
65
91
  readonly state: DotLifecycleState;
66
92
  /**
67
- * Services published by booted pips, keyed by wire key.
93
+ * Services published by booted plugins, keyed by wire key.
68
94
  * Empty before `boot()` succeeds.
69
95
  */
70
96
  readonly services: TServices;
@@ -121,16 +147,22 @@ export type DotAppConfigured<TServices extends ServiceRecord> = {
121
147
  /**
122
148
  * Builder produced by `defineApp(name)`.
123
149
  *
124
- * `.use(pip)` is type-tracking in both directions: the pip's `needs` must
150
+ * `.use(plugin)` is type-tracking in both directions: the plugin's `needs` must
125
151
  * be satisfied by the services accumulated so far, and its `provides`
126
152
  * merge into the accumulated record for the next `.use()`.
127
153
  */
128
154
  export type DotAppBuilder<TAvail extends ServiceRecord> = {
129
155
  /**
130
- * Register a pip. Compile error when the pip's needs are unsatisfied
156
+ * Register a plugin. Compile error when the plugin's needs are unsatisfied
131
157
  * or its provides collide with existing wire keys.
132
158
  */
133
- use<TNeeds extends ServiceRecord, TProvides extends ServiceRecord>(pip: Pip<TNeeds, TProvides>, ...guard: UseGuard<TAvail, TNeeds, NormalizeProvides<TProvides>>): DotAppBuilder<TAvail & NormalizeProvides<TProvides>>;
159
+ use<TNeeds extends ServiceRecord, TProvides extends ServiceRecord>(plugin: Plugin<TNeeds, TProvides>, ...guard: UseGuard<TAvail, TNeeds, NormalizeProvides<TProvides>>): DotAppBuilder<TAvail & NormalizeProvides<TProvides>>;
160
+ /**
161
+ * Register a tuple of plugins in declaration order. This is type-equivalent
162
+ * to calling `.use()` for each item and keeps the same ordering/collision
163
+ * guard across the whole tuple.
164
+ */
165
+ useAll<const TPlugins extends readonly AnyPlugin[]>(plugins: TPlugins, ...guard: UseAllGuard<TAvail, TPlugins>): DotAppBuilder<UseAllAvail<TAvail, TPlugins>>;
134
166
  /** Run the configure phase synchronously. Throws on configure failure. */
135
167
  configure(): DotAppConfigured<TAvail>;
136
168
  /** Run configure + boot. Throws on configure or boot failure. */
@@ -143,8 +175,8 @@ export type DotAppBuilder<TAvail extends ServiceRecord> = {
143
175
  *
144
176
  * @example
145
177
  * const app = await defineApp('my-app')
146
- * .use(dbPip)
147
- * .use(billingPip) // billing's needs must be satisfied by now
178
+ * .use(dbPlugin)
179
+ * .use(billingPlugin) // billing's needs must be satisfied by now
148
180
  * .boot();
149
181
  *
150
182
  * await app.start();
@@ -165,7 +197,7 @@ export declare function defineApp(name: string, options?: {
165
197
  /**
166
198
  * Watchdog budget (ms) for each async hook invocation (`boot`, `start`,
167
199
  * `stop`, `dispose` — `configure` is sync). A hook exceeding the budget
168
- * fails with `DOT_LIFECYCLE_E015` naming the pip and hook, and the
200
+ * fails with `DOT_LIFECYCLE_E015` naming the plugin and hook, and the
169
201
  * kernel applies its normal failure rules (boot rollback, teardown
170
202
  * aggregation). The hook's promise itself cannot be cancelled — the
171
203
  * watchdog makes the hang *visible*, it does not kill it. Default:
@@ -1 +1 @@
1
- {"version":3,"file":"define-app.d.ts","sourceRoot":"","sources":["../src/define-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-app.d.ts","sourceRoot":"","sources":["../src/define-app.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Public entry point for the DOT kernel (v2).
3
3
  *
4
- * `defineApp(name)` returns a `DotAppBuilder` that accumulates pips via
5
- * `.use(pip)`, then transitions through the 5-hook lifecycle:
4
+ * `defineApp(name)` returns a `DotAppBuilder` that accumulates plugins via
5
+ * `.use(plugin)`, then transitions through the 5-hook lifecycle:
6
6
  *
7
7
  * defineApp -> use* -> configure() -> boot() -> start() -> stop() -> dispose()
8
8
  *
9
- * `.use()` is compile-time guarded: a pip whose `needs` are not satisfied
9
+ * `.use()` is compile-time guarded: a plugin whose `needs` are not satisfied
10
10
  * by services provided so far — or whose provides collide with existing
11
11
  * wire keys — fails to typecheck at the call site ("Expected 2 arguments,
12
12
  * but got 1", with the diagnostic embedded in the expected second
@@ -25,8 +25,8 @@ import { renderTimeline } from './timeline.js';
25
25
  *
26
26
  * @example
27
27
  * const app = await defineApp('my-app')
28
- * .use(dbPip)
29
- * .use(billingPip) // billing's needs must be satisfied by now
28
+ * .use(dbPlugin)
29
+ * .use(billingPlugin) // billing's needs must be satisfied by now
30
30
  * .boot();
31
31
  *
32
32
  * await app.start();
@@ -38,7 +38,7 @@ export function defineApp(name, options = {}) {
38
38
  const state = {
39
39
  appName: name,
40
40
  appVersion: options.version,
41
- pips: [],
41
+ plugins: [],
42
42
  config: options.config,
43
43
  observers: options.observers,
44
44
  hookTimeoutMs: options.hookTimeoutMs,
@@ -49,7 +49,7 @@ function buildImpl(state) {
49
49
  return new DotAppImpl({
50
50
  appName: state.appName,
51
51
  appVersion: state.appVersion,
52
- pips: state.pips,
52
+ plugins: state.plugins,
53
53
  config: state.config,
54
54
  observers: state.observers,
55
55
  hookTimeoutMs: state.hookTimeoutMs,
@@ -60,10 +60,17 @@ function makeBuilder(state) {
60
60
  // at the type level); the single cast below is the same kernel boundary
61
61
  // v1 crossed in its wrapApp helper.
62
62
  const impl = {
63
- use(pip, ..._guard) {
63
+ use(plugin, ..._guard) {
64
64
  const nextState = {
65
65
  ...state,
66
- pips: [...state.pips, pip],
66
+ plugins: [...state.plugins, plugin],
67
+ };
68
+ return makeBuilder(nextState);
69
+ },
70
+ useAll(plugins, ..._guard) {
71
+ const nextState = {
72
+ ...state,
73
+ plugins: [...state.plugins, ...plugins],
67
74
  };
68
75
  return makeBuilder(nextState);
69
76
  },
@@ -1 +1 @@
1
- {"version":3,"file":"define-app.js","sourceRoot":"","sources":["../src/define-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-app.js","sourceRoot":"","sources":["../src/define-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAkN/C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,UAoBI,EAAE;IAEN,MAAM,KAAK,GAAiB;QAC1B,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC;IACF,OAAO,WAAW,CAAa,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,KAAmB;IACpC,OAAO,IAAI,UAAU,CAAC;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAA+B,KAAmB;IACpE,wEAAwE;IACxE,wEAAwE;IACxE,oCAAoC;IACpC,MAAM,IAAI,GAAG;QACX,GAAG,CAAC,MAAiB,EAAE,GAAG,MAA0B;YAClD,MAAM,SAAS,GAAiB;gBAC9B,GAAG,KAAK;gBACR,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;aACpC,CAAC;YACF,OAAO,WAAW,CAAgB,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,OAA6B,EAAE,GAAG,MAA0B;YACjE,MAAM,SAAS,GAAiB;gBAC9B,GAAG,KAAK;gBACR,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC;aACxC,CAAC;YACF,OAAO,WAAW,CAAgB,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,SAAS;YACP,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,cAAc,CAAgB,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,OAAO,CAAgB,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,OAAO,CAAgB,OAAO,CAAC,CAAC;QACzC,CAAC;KACF,CAAC;IACF,OAAO,IAA6B,CAAC;AACvC,CAAC;AAED,SAAS,OAAO,CAAkC,IAAgB;IAChE,OAAO;QACL,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,QAAqB,CAAC;QACpC,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QACD,IAAI,WAAW;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;QAC7B,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/C,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAkC,IAAgB;IACvE,OAAO;QACL,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QACD,IAAI,WAAW;YACb,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAY,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,OAAO,CAAY,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/C,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -3,67 +3,71 @@
3
3
  *
4
4
  * Where the manifest describes the static shape of an app, a
5
5
  * `DotDiagnosticsSnapshot` is a point-in-time observability record: the
6
- * lifecycle state of the app and every pip, plus structured issues with
6
+ * lifecycle state of the app and every plugin, plus structured issues with
7
7
  * remediation guidance.
8
8
  *
9
9
  * CONTRACT: `DotDiagnosticsSnapshot` always exposes the same five arrays
10
- * (`pips`, `routes`, `services`, `lifecycle`, `issues`). Consumers must
10
+ * (`plugins`, `actions`, `services`, `lifecycle`, `issues`). Consumers must
11
11
  * never see an omitted array — empty is empty, but never missing.
12
12
  * This is the "5 arrays" contract referenced by the kernel spec.
13
13
  */
14
14
  import type { DotLifecycleHook, DotLifecycleState } from './lifecycle.js';
15
15
  /** Severity of a single diagnostic issue. */
16
16
  export type DiagnosticSeverity = 'info' | 'warning' | 'error';
17
- /** Status of a pip/route/service/lifecycle entry. */
17
+ /** Status of a plugin/action/service/lifecycle entry. */
18
18
  export type DiagnosticStatus = 'ok' | 'degraded' | 'failed' | 'skipped' | 'missing';
19
19
  /**
20
20
  * Single point-in-time diagnostic snapshot of a DotApp.
21
21
  *
22
- * Five top-level arrays — pips, routes, services, lifecycle, issues —
22
+ * Five top-level arrays — plugins, actions, services, lifecycle, issues —
23
23
  * are guaranteed to be present even when empty.
24
24
  */
25
25
  export type DotDiagnosticsSnapshot = {
26
+ /** Diagnostic snapshot schema version. 2 = actions/projections era. */
27
+ snapshotVersion: 2;
26
28
  /** ISO-8601 timestamp at which the snapshot was generated. */
27
29
  generatedAt: string;
28
30
  app: {
29
31
  name: string;
30
32
  state: DotLifecycleState;
31
33
  };
32
- pips: PipDiagnostic[];
33
- routes: RouteDiagnostic[];
34
+ plugins: PluginDiagnostic[];
35
+ actions: ActionDiagnostic[];
34
36
  services: ServiceDiagnostic[];
35
37
  lifecycle: LifecycleDiagnostic[];
36
38
  issues: DiagnosticIssue[];
37
39
  };
38
- export type PipDiagnostic = {
39
- pip: string;
40
+ export type PluginDiagnostic = {
41
+ plugin: string;
40
42
  status: Extract<DiagnosticStatus, 'ok' | 'degraded' | 'failed' | 'skipped'>;
41
43
  issues: DiagnosticIssue[];
42
44
  };
43
- export type RouteDiagnostic = {
45
+ export type ActionDiagnostic = {
44
46
  id: string;
45
- pip: string;
47
+ plugin: string;
48
+ binding: string;
49
+ /** Structural configure-phase health only; not runtime liveness. */
46
50
  status: Extract<DiagnosticStatus, 'ok' | 'degraded' | 'failed'>;
47
51
  issues: DiagnosticIssue[];
48
52
  };
49
53
  export type ServiceDiagnostic = {
50
54
  service: string;
51
- pip: string;
55
+ plugin: string;
52
56
  status: Extract<DiagnosticStatus, 'ok' | 'degraded' | 'failed' | 'missing'>;
53
57
  issues: DiagnosticIssue[];
54
58
  };
55
59
  export type LifecycleDiagnostic = {
56
- pip: string;
60
+ plugin: string;
57
61
  hook: DotLifecycleHook;
58
62
  state: DotLifecycleState;
59
- /** 0-based topological order of this pip within the hook pass. */
63
+ /** 0-based topological order of this plugin within the hook pass. */
60
64
  order: number;
61
65
  /** Wall-clock duration of the hook call, in milliseconds. */
62
66
  durationMs?: number;
63
67
  issues: DiagnosticIssue[];
64
68
  };
65
69
  /**
66
- * Single structured issue surfaced by the kernel or by a pip.
70
+ * Single structured issue surfaced by the kernel or by a plugin.
67
71
  *
68
72
  * `code`, `message`, `remediation` and `docsUrl` are required so that issues
69
73
  * are always actionable — never just "something went wrong".
@@ -72,7 +76,7 @@ export type DiagnosticIssue = {
72
76
  /** Stable machine-readable code, e.g. `DOT_LIFECYCLE_E003`. */
73
77
  code: string;
74
78
  severity: DiagnosticSeverity;
75
- pip?: string;
79
+ plugin?: string;
76
80
  message: string;
77
81
  /** Human-readable remediation: what the developer should do. */
78
82
  remediation: string;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,6CAA6C;AAC7C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,qDAAqD;AACrD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,iBAAiB,CAAC;KAC1B,CAAC;IACF,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC5E,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;IAChE,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC5E,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,iBAAiB,CAAC;IACzB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,6CAA6C;AAC7C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9D,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,uEAAuE;IACvE,eAAe,EAAE,CAAC,CAAC;IACnB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,iBAAiB,CAAC;KAC1B,CAAC;IACF,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC5E,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;IAChE,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC5E,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,iBAAiB,CAAC;IACzB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC"}
@@ -3,11 +3,11 @@
3
3
  *
4
4
  * Where the manifest describes the static shape of an app, a
5
5
  * `DotDiagnosticsSnapshot` is a point-in-time observability record: the
6
- * lifecycle state of the app and every pip, plus structured issues with
6
+ * lifecycle state of the app and every plugin, plus structured issues with
7
7
  * remediation guidance.
8
8
  *
9
9
  * CONTRACT: `DotDiagnosticsSnapshot` always exposes the same five arrays
10
- * (`pips`, `routes`, `services`, `lifecycle`, `issues`). Consumers must
10
+ * (`plugins`, `actions`, `services`, `lifecycle`, `issues`). Consumers must
11
11
  * never see an omitted array — empty is empty, but never missing.
12
12
  * This is the "5 arrays" contract referenced by the kernel spec.
13
13
  */