@arki/dot 0.2.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 (116) 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 +11 -1
  9. package/dist/cli/index.d.ts.map +1 -1
  10. package/dist/cli/index.js +66 -11
  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-openapi.d.ts +38 -0
  24. package/dist/cli/render-openapi.d.ts.map +1 -0
  25. package/dist/cli/render-openapi.js +131 -0
  26. package/dist/cli/render-openapi.js.map +1 -0
  27. package/dist/cli/render-projection.d.ts +29 -0
  28. package/dist/cli/render-projection.d.ts.map +1 -0
  29. package/dist/cli/render-projection.js +202 -0
  30. package/dist/cli/render-projection.js.map +1 -0
  31. package/dist/define-app.d.ts +49 -17
  32. package/dist/define-app.d.ts.map +1 -1
  33. package/dist/define-app.js +16 -9
  34. package/dist/define-app.js.map +1 -1
  35. package/dist/diagnostics.d.ts +19 -15
  36. package/dist/diagnostics.d.ts.map +1 -1
  37. package/dist/diagnostics.js +2 -2
  38. package/dist/index.d.ts +15 -12
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +7 -5
  41. package/dist/index.js.map +1 -1
  42. package/dist/init-pips.d.ts +45 -0
  43. package/dist/init-pips.d.ts.map +1 -0
  44. package/dist/init-pips.js +49 -0
  45. package/dist/init-pips.js.map +1 -0
  46. package/dist/init-plugins.d.ts +45 -0
  47. package/dist/init-plugins.d.ts.map +1 -0
  48. package/dist/init-plugins.js +49 -0
  49. package/dist/init-plugins.js.map +1 -0
  50. package/dist/kernel/app-instance.d.ts +5 -5
  51. package/dist/kernel/app-instance.d.ts.map +1 -1
  52. package/dist/kernel/app-instance.js +375 -244
  53. package/dist/kernel/app-instance.js.map +1 -1
  54. package/dist/kernel/otel.d.ts +19 -19
  55. package/dist/kernel/otel.d.ts.map +1 -1
  56. package/dist/kernel/otel.js +22 -22
  57. package/dist/kernel/otel.js.map +1 -1
  58. package/dist/lifecycle-observer.d.ts +10 -10
  59. package/dist/lifecycle-observer.d.ts.map +1 -1
  60. package/dist/lifecycle-observer.js +1 -1
  61. package/dist/lifecycle.d.ts +18 -14
  62. package/dist/lifecycle.d.ts.map +1 -1
  63. package/dist/lifecycle.js +13 -9
  64. package/dist/lifecycle.js.map +1 -1
  65. package/dist/manifest.d.ts +70 -29
  66. package/dist/manifest.d.ts.map +1 -1
  67. package/dist/manifest.js +74 -5
  68. package/dist/manifest.js.map +1 -1
  69. package/dist/pip-contract.d.ts +40 -10
  70. package/dist/pip-contract.d.ts.map +1 -1
  71. package/dist/pip-contract.js +1 -25
  72. package/dist/pip-contract.js.map +1 -1
  73. package/dist/pip.d.ts +7 -4
  74. package/dist/pip.d.ts.map +1 -1
  75. package/dist/pip.js +2 -0
  76. package/dist/pip.js.map +1 -1
  77. package/dist/plugin-contract.d.ts +335 -143
  78. package/dist/plugin-contract.d.ts.map +1 -1
  79. package/dist/plugin-contract.js +201 -36
  80. package/dist/plugin-contract.js.map +1 -1
  81. package/dist/plugin.d.ts +18 -15
  82. package/dist/plugin.d.ts.map +1 -1
  83. package/dist/plugin.js +11 -11
  84. package/dist/plugin.js.map +1 -1
  85. package/dist/test-harness.d.ts +31 -31
  86. package/dist/test-harness.d.ts.map +1 -1
  87. package/dist/test-harness.js +29 -28
  88. package/dist/test-harness.js.map +1 -1
  89. package/dist/timeline.d.ts +2 -2
  90. package/dist/timeline.js +5 -5
  91. package/dist/timeline.js.map +1 -1
  92. package/package.json +9 -9
  93. package/src/cli/discover.ts +2 -2
  94. package/src/cli/error-codes.ts +12 -0
  95. package/src/cli/index.ts +93 -15
  96. package/src/cli/new.ts +1 -1
  97. package/src/cli/render-doctor.ts +21 -21
  98. package/src/cli/render-explain.ts +37 -19
  99. package/src/cli/render-graph.ts +12 -12
  100. package/src/cli/render-projection.ts +239 -0
  101. package/src/define-app.ts +85 -22
  102. package/src/diagnostics.ts +19 -15
  103. package/src/index.ts +38 -20
  104. package/src/init-plugins.ts +142 -0
  105. package/src/kernel/app-instance.ts +428 -282
  106. package/src/kernel/otel.ts +27 -27
  107. package/src/lifecycle-observer.ts +10 -10
  108. package/src/lifecycle.ts +19 -15
  109. package/src/manifest.ts +128 -31
  110. package/src/{pip-contract.ts → plugin-contract.ts} +83 -44
  111. package/src/{pip.ts → plugin.ts} +38 -18
  112. package/src/test-harness.ts +52 -51
  113. package/src/timeline.ts +6 -6
  114. package/templates/app-minimal/AGENTS.md.tmpl +9 -9
  115. package/templates/app-minimal/README.md.tmpl +1 -1
  116. package/templates/app-minimal/tests/boot.test.ts.tmpl +1 -1
@@ -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":"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"}
@@ -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
  */
package/dist/index.d.ts CHANGED
@@ -3,25 +3,28 @@
3
3
  *
4
4
  * Public surface:
5
5
  * - `defineApp(name)` — the entry point for composing applications.
6
- * - `pip(config)` — author lifecycle-aware pips with typed needs/provides.
6
+ * - `plugin(config)` — author lifecycle-aware plugins with typed needs/provides.
7
7
  * - `service<T>()` / `token<T>()(key)` — service witnesses for DI wiring.
8
- * - `rename(pip, map)` — mount-time multi-instance primitive.
8
+ * - `rename(plugin, map)` — mount-time multi-instance primitive.
9
9
  * - Lifecycle / manifest / diagnostics types.
10
- * - `testApp` / `bootTestApp` — test harnesses for pip authors.
10
+ * - `testApp` / `bootTestApp` — test harnesses for plugin authors.
11
11
  */
12
12
  export { defineApp } from './define-app.js';
13
- export type { DotApp, DotAppBuilder, DotAppConfigured, UseGuard } from './define-app.js';
14
- export { isLazy, lazy, lazyOf, pip, provide, rename, service, token, DotPipError } from './pip-contract.js';
15
- export type { AnyPip, CtxOf, DotConfigureContext, EmptyShape, KernelCtx, Lazy, LazyService, NeedsShape, Pip, PipNeeds, PipProvides, RenamedProvides, Service, ServiceRecord, Token, WireNeeds, } from './pip-contract.js';
13
+ export type { DotApp, DotAppBuilder, DotAppConfigured, NormalizeProvides, UseAllAvail, UseAllGuard, UseGuard, } from './define-app.js';
14
+ export { isLazy, lazy, lazyOf, plugin, provide, rename, service, token, DotPluginError } from './plugin-contract.js';
15
+ export type { AnyPlugin, ActionSource, CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, Lazy, LazyService, NeedsShape, NoReservedKeys, Plugin, PluginNeeds, PluginProvides, RenamedProvides, Service, ServiceRecord, Token, WireNeeds, } from './plugin-contract.js';
16
+ export { initPlugins } from './init-plugins.js';
17
+ export type { InitPluginsFactory } from './init-plugins.js';
16
18
  export { DotLifecycleError, DotLifecycleErrorCode, DOT_LIFECYCLE_HOOKS, } from './lifecycle.js';
17
- export type { DotLifecycleHook, DotLifecycleState, DotLifecyclePipFailure, DotLifecycleErrorCodeValue, } from './lifecycle.js';
18
- export type { DotAppManifest, PipManifest, RouteManifest, ServiceManifest, LifecycleManifest, DependencyEdge, DependencyEdgeKind, ServiceKind, RouteTransport, } from './manifest.js';
19
- export type { DotDiagnosticsSnapshot, PipDiagnostic, RouteDiagnostic, ServiceDiagnostic, LifecycleDiagnostic, DiagnosticIssue, DiagnosticSeverity, DiagnosticStatus, } from './diagnostics.js';
20
- export type { DotLifecycleEvent, DotLifecycleEventStatus, DotLifecycleObserver, DotPhaseLifecycleEvent, DotPipHookLifecycleEvent, } from './lifecycle-observer.js';
19
+ export type { DotLifecycleHook, DotLifecycleState, DotLifecyclePluginFailure, DotLifecycleErrorCodeValue, } from './lifecycle.js';
20
+ export type { DotAppManifest, ActionDirection, ActionManifest, JsonObject, JsonValue, PluginManifest, ProjectionManifest, ServiceManifest, LifecycleManifest, DependencyEdge, DependencyEdgeKind, ServiceKind, } from './manifest.js';
21
+ export { toJsonObject } from './manifest.js';
22
+ export type { DotDiagnosticsSnapshot, PluginDiagnostic, ActionDiagnostic, ServiceDiagnostic, LifecycleDiagnostic, DiagnosticIssue, DiagnosticSeverity, DiagnosticStatus, } from './diagnostics.js';
23
+ export type { DotLifecycleEvent, DotLifecycleEventStatus, DotLifecycleObserver, DotPhaseLifecycleEvent, DotPluginHookLifecycleEvent, } from './lifecycle-observer.js';
21
24
  export { renderTimeline } from './timeline.js';
22
25
  export type { RenderTimelineOptions } from './timeline.js';
23
- export { testApp, bootTestApp, testPip } from './test-harness.js';
24
- export type { TestAppOptions, TestPipBuilder } from './test-harness.js';
26
+ export { testApp, bootTestApp, testPlugin } from './test-harness.js';
27
+ export type { TestAppOptions, TestPluginBuilder } from './test-harness.js';
25
28
  export { hookSignals } from './signals.js';
26
29
  export type { HookSignalsOptions, SignalTarget } from './signals.js';
27
30
  export type { DotCliEnvelope, DotCliEnvelopeStatus } from './cli/render-explain.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EACV,MAAM,EACN,KAAK,EACL,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,GAAG,EACH,QAAQ,EACR,WAAW,EACX,eAAe,EACf,OAAO,EACP,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIrE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrH,YAAY,EACV,SAAS,EACT,YAAY,EACZ,KAAK,EACL,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,IAAI,EACJ,WAAW,EACX,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAW,EACX,cAAc,EACd,eAAe,EACf,OAAO,EACP,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIrE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -3,18 +3,20 @@
3
3
  *
4
4
  * Public surface:
5
5
  * - `defineApp(name)` — the entry point for composing applications.
6
- * - `pip(config)` — author lifecycle-aware pips with typed needs/provides.
6
+ * - `plugin(config)` — author lifecycle-aware plugins with typed needs/provides.
7
7
  * - `service<T>()` / `token<T>()(key)` — service witnesses for DI wiring.
8
- * - `rename(pip, map)` — mount-time multi-instance primitive.
8
+ * - `rename(plugin, map)` — mount-time multi-instance primitive.
9
9
  * - Lifecycle / manifest / diagnostics types.
10
- * - `testApp` / `bootTestApp` — test harnesses for pip authors.
10
+ * - `testApp` / `bootTestApp` — test harnesses for plugin authors.
11
11
  */
12
12
  // #region Kernel — public surface
13
13
  export { defineApp } from './define-app.js';
14
- export { isLazy, lazy, lazyOf, pip, provide, rename, service, token, DotPipError } from './pip-contract.js';
14
+ export { isLazy, lazy, lazyOf, plugin, provide, rename, service, token, DotPluginError } from './plugin-contract.js';
15
+ export { initPlugins } from './init-plugins.js';
15
16
  export { DotLifecycleError, DotLifecycleErrorCode, DOT_LIFECYCLE_HOOKS, } from './lifecycle.js';
17
+ export { toJsonObject } from './manifest.js';
16
18
  export { renderTimeline } from './timeline.js';
17
- export { testApp, bootTestApp, testPip } from './test-harness.js';
19
+ export { testApp, bootTestApp, testPlugin } from './test-harness.js';
18
20
  export { hookSignals } from './signals.js';
19
21
  // #endregion
20
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAoB5G,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAuCxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,aAAa"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAuBrH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAsBxB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAqB7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,aAAa"}
@@ -0,0 +1,45 @@
1
+ import type { CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, NeedsShape, NoReservedKeys, Pip, ActionSource, Service, ServiceRecord, WireNeeds } from './pip-contract.js';
2
+ type MaybePromise<T> = T | Promise<T>;
3
+ type ServiceKey<TServices extends object> = Extract<keyof TServices, string>;
4
+ type ServiceKeys<TServices extends object> = readonly ServiceKey<TServices>[];
5
+ type PickServices<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
6
+ readonly [K in TKeys[number]]: TServices[K];
7
+ };
8
+ type WitnessesFor<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
9
+ readonly [K in TKeys[number]]: Service<TServices[K]>;
10
+ };
11
+ type SchemaCheckedProvides<TServices extends object, TProvides extends ServiceRecord> = {
12
+ readonly [K in keyof TProvides]: K extends keyof TServices ? TProvides[K] extends TServices[K] ? TProvides[K] : never : TProvides[K];
13
+ };
14
+ type CommonPipDefinition = {
15
+ readonly name: string;
16
+ readonly version?: string;
17
+ readonly actions?: readonly ActionSource[];
18
+ readonly configure?: (ctx: DotConfigureContext) => void;
19
+ };
20
+ type KeyArrayPipDefinition<TServices extends object, TKeys extends ServiceKeys<TServices>, TProvides extends ServiceRecord & NoReservedKeys> = CommonPipDefinition & {
21
+ readonly needs?: TKeys;
22
+ readonly boot?: (ctx: PickServices<TServices, TKeys> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
23
+ readonly start?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
24
+ readonly stop?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
25
+ readonly dispose?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
26
+ };
27
+ type WitnessPipDefinition<TServices extends object, TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys> = CommonPipDefinition & {
28
+ readonly needs: TShape;
29
+ readonly boot?: (ctx: CtxOf<TShape> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
30
+ readonly start?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
31
+ readonly stop?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
32
+ readonly dispose?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
33
+ };
34
+ export type InitPipsFactory<TServices extends object> = {
35
+ pip<const TKeys extends ServiceKeys<TServices> = readonly [], TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: KeyArrayPipDefinition<TServices, TKeys, TProvides>): Pip<PickServices<TServices, TKeys>, InferredProvides<TProvides>>;
36
+ pip<TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: WitnessPipDefinition<TServices, TShape, TProvides>): Pip<WireNeeds<TShape>, InferredProvides<TProvides>>;
37
+ needs<const TKeys extends ServiceKeys<TServices>>(...keys: TKeys): WitnessesFor<TServices, TKeys>;
38
+ };
39
+ export declare const initPips: {
40
+ context<TServices extends object>(): {
41
+ create(): InitPipsFactory<TServices>;
42
+ };
43
+ };
44
+ export {};
45
+ //# sourceMappingURL=init-pips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-pips.d.ts","sourceRoot":"","sources":["../src/init-pips.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { pip as definePip, service } from './pip-contract.js';
2
+ function needsFor(keys) {
3
+ const needs = {};
4
+ for (const key of keys) {
5
+ needs[key] = service();
6
+ }
7
+ return needs;
8
+ }
9
+ function isServiceKeyArray(needs) {
10
+ return Array.isArray(needs);
11
+ }
12
+ function createPipFactory() {
13
+ const factory = {
14
+ pip(def) {
15
+ const rawNeeds = def.needs;
16
+ const needs = isServiceKeyArray(rawNeeds)
17
+ ? needsFor(rawNeeds)
18
+ : rawNeeds;
19
+ // Factory seam: key-array authoring is runtime-compiled to the same
20
+ // witness record that the kernel already understands.
21
+ const kernelDef = {
22
+ name: def.name,
23
+ ...(def.version === undefined ? {} : { version: def.version }),
24
+ ...(needs === undefined ? {} : { needs }),
25
+ ...(def.actions === undefined ? {} : { actions: def.actions }),
26
+ ...(def.configure === undefined ? {} : { configure: def.configure }),
27
+ ...(def.boot === undefined ? {} : { boot: def.boot }),
28
+ ...(def.start === undefined ? {} : { start: def.start }),
29
+ ...(def.stop === undefined ? {} : { stop: def.stop }),
30
+ ...(def.dispose === undefined ? {} : { dispose: def.dispose }),
31
+ };
32
+ return definePip(kernelDef);
33
+ },
34
+ needs(...keys) {
35
+ return needsFor(keys);
36
+ },
37
+ };
38
+ return factory;
39
+ }
40
+ export const initPips = {
41
+ context() {
42
+ return {
43
+ create() {
44
+ return createPipFactory();
45
+ },
46
+ };
47
+ },
48
+ };
49
+ //# sourceMappingURL=init-pips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-pips.js","sourceRoot":"","sources":["../src/init-pips.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA0E9D,SAAS,QAAQ,CACf,IAAW;IAEX,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,EAAyB,CAAC;IAChD,CAAC;IACD,OAAO,KAAuC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CACxB,KAA8C;IAE9C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,GAAmC;YACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;YAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAY,QAAQ,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAoC,QAAQ,CAAC;gBACvD,CAAC,CAAC,QAAQ,CAAC;YACb,oEAAoE;YACpE,sDAAsD;YACtD,MAAM,SAAS,GAAwB;gBACrC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACzC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;gBACpE,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAmC,EAAE,CAAC;gBACpF,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAqC,EAAE,CAAC;gBACxF,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAmC,EAAE,CAAC;gBACpF,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAyC,EAAE,CAAC;aACjG,CAAC;YACF,OAAO,SAAS,CAAC,SAAS,CAAiD,CAAC;QAC9E,CAAC;QACD,KAAK,CAA6C,GAAG,IAAW;YAC9D,OAAO,QAAQ,CAAyB,IAAI,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;IACF,OAAO,OAAqC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO;QACL,OAAO;YACL,MAAM;gBACJ,OAAO,gBAAgB,EAAa,CAAC;YACvC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { CtxOf, DotConfigureContext, EmptyShape, InferredProvides, KernelCtx, NeedsShape, NoReservedKeys, Plugin, ActionSource, Service, ServiceRecord, WireNeeds } from './plugin-contract.js';
2
+ type MaybePromise<T> = T | Promise<T>;
3
+ type ServiceKey<TServices extends object> = Extract<keyof TServices, string>;
4
+ type ServiceKeys<TServices extends object> = readonly ServiceKey<TServices>[];
5
+ type PickServices<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
6
+ readonly [K in TKeys[number]]: TServices[K];
7
+ };
8
+ type WitnessesFor<TServices extends object, TKeys extends ServiceKeys<TServices>> = {
9
+ readonly [K in TKeys[number]]: Service<TServices[K]>;
10
+ };
11
+ type SchemaCheckedProvides<TServices extends object, TProvides extends ServiceRecord> = {
12
+ readonly [K in keyof TProvides]: K extends keyof TServices ? TProvides[K] extends TServices[K] ? TProvides[K] : never : TProvides[K];
13
+ };
14
+ type CommonPluginDefinition = {
15
+ readonly name: string;
16
+ readonly version?: string;
17
+ readonly actions?: readonly ActionSource[];
18
+ readonly configure?: (ctx: DotConfigureContext) => void;
19
+ };
20
+ type KeyArrayPluginDefinition<TServices extends object, TKeys extends ServiceKeys<TServices>, TProvides extends ServiceRecord & NoReservedKeys> = CommonPluginDefinition & {
21
+ readonly needs?: TKeys;
22
+ readonly boot?: (ctx: PickServices<TServices, TKeys> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
23
+ readonly start?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
24
+ readonly stop?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
25
+ readonly dispose?: (ctx: PickServices<TServices, TKeys> & TProvides & KernelCtx) => MaybePromise<void>;
26
+ };
27
+ type WitnessPluginDefinition<TServices extends object, TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys> = CommonPluginDefinition & {
28
+ readonly needs: TShape;
29
+ readonly boot?: (ctx: CtxOf<TShape> & KernelCtx) => MaybePromise<SchemaCheckedProvides<TServices, TProvides> | void>;
30
+ readonly start?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
31
+ readonly stop?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
32
+ readonly dispose?: (ctx: CtxOf<TShape> & TProvides & KernelCtx) => MaybePromise<void>;
33
+ };
34
+ export type InitPluginsFactory<TServices extends object> = {
35
+ plugin<const TKeys extends ServiceKeys<TServices> = readonly [], TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: KeyArrayPluginDefinition<TServices, TKeys, TProvides>): Plugin<PickServices<TServices, TKeys>, InferredProvides<TProvides>>;
36
+ plugin<TShape extends NeedsShape & NoReservedKeys, TProvides extends ServiceRecord & NoReservedKeys = EmptyShape>(def: WitnessPluginDefinition<TServices, TShape, TProvides>): Plugin<WireNeeds<TShape>, InferredProvides<TProvides>>;
37
+ needs<const TKeys extends ServiceKeys<TServices>>(...keys: TKeys): WitnessesFor<TServices, TKeys>;
38
+ };
39
+ export declare const initPlugins: {
40
+ context<TServices extends object>(): {
41
+ create(): InitPluginsFactory<TServices>;
42
+ };
43
+ };
44
+ export {};
45
+ //# sourceMappingURL=init-plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-plugins.d.ts","sourceRoot":"","sources":["../src/init-plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { plugin as definePlugin, service } from './plugin-contract.js';
2
+ function needsFor(keys) {
3
+ const needs = {};
4
+ for (const key of keys) {
5
+ needs[key] = service();
6
+ }
7
+ return needs;
8
+ }
9
+ function isServiceKeyArray(needs) {
10
+ return Array.isArray(needs);
11
+ }
12
+ function createPluginFactory() {
13
+ const factory = {
14
+ plugin(def) {
15
+ const rawNeeds = def.needs;
16
+ const needs = isServiceKeyArray(rawNeeds)
17
+ ? needsFor(rawNeeds)
18
+ : rawNeeds;
19
+ // Factory seam: key-array authoring is runtime-compiled to the same
20
+ // witness record that the kernel already understands.
21
+ const kernelDef = {
22
+ name: def.name,
23
+ ...(def.version === undefined ? {} : { version: def.version }),
24
+ ...(needs === undefined ? {} : { needs }),
25
+ ...(def.actions === undefined ? {} : { actions: def.actions }),
26
+ ...(def.configure === undefined ? {} : { configure: def.configure }),
27
+ ...(def.boot === undefined ? {} : { boot: def.boot }),
28
+ ...(def.start === undefined ? {} : { start: def.start }),
29
+ ...(def.stop === undefined ? {} : { stop: def.stop }),
30
+ ...(def.dispose === undefined ? {} : { dispose: def.dispose }),
31
+ };
32
+ return definePlugin(kernelDef);
33
+ },
34
+ needs(...keys) {
35
+ return needsFor(keys);
36
+ },
37
+ };
38
+ return factory;
39
+ }
40
+ export const initPlugins = {
41
+ context() {
42
+ return {
43
+ create() {
44
+ return createPluginFactory();
45
+ },
46
+ };
47
+ },
48
+ };
49
+ //# sourceMappingURL=init-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-plugins.js","sourceRoot":"","sources":["../src/init-plugins.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AA0EvE,SAAS,QAAQ,CACf,IAAW;IAEX,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,EAAyB,CAAC;IAChD,CAAC;IACD,OAAO,KAAuC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAiD;IAEjD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG;QACd,MAAM,CAAC,GAAsC;YAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;YAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAY,QAAQ,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAoC,QAAQ,CAAC;gBACvD,CAAC,CAAC,QAAQ,CAAC;YACb,oEAAoE;YACpE,sDAAsD;YACtD,MAAM,SAAS,GAA2B;gBACxC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACzC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;gBACpE,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAsC,EAAE,CAAC;gBACvF,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAwC,EAAE,CAAC;gBAC3F,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAsC,EAAE,CAAC;gBACvF,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAA4C,EAAE,CAAC;aACpG,CAAC;YACF,OAAO,YAAY,CAAC,SAAS,CAAoD,CAAC;QACpF,CAAC;QACD,KAAK,CAA6C,GAAG,IAAW;YAC9D,OAAO,QAAQ,CAAyB,IAAI,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;IACF,OAAO,OAAwC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO;QACL,OAAO;YACL,MAAM;gBACJ,OAAO,mBAAmB,EAAa,CAAC;YAC1C,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -8,11 +8,11 @@ import type { DotDiagnosticsSnapshot } from '../diagnostics.js';
8
8
  import type { DotLifecycleObserver } from '../lifecycle-observer.js';
9
9
  import type { DotLifecycleState } from '../lifecycle.js';
10
10
  import type { DotAppManifest } from '../manifest.js';
11
- import type { AnyPip } from '../pip-contract.js';
11
+ import type { AnyPlugin } from '../plugin-contract.js';
12
12
  export type DotAppInternalConfig = {
13
13
  appName: string;
14
14
  appVersion?: string;
15
- pips: readonly AnyPip[];
15
+ plugins: readonly AnyPlugin[];
16
16
  /** Runtime config bag passed to every `boot` hook. */
17
17
  config?: Readonly<Record<string, unknown>>;
18
18
  /**
@@ -58,7 +58,7 @@ export declare class DotAppImpl {
58
58
  /** Public dispose(). Idempotent + concurrent-safe. */
59
59
  dispose(): Promise<void>;
60
60
  }
61
- /** Re-export `ServiceKind` and `RouteTransport` for the kernel's internal use. */
62
- export { type RouteTransport, type ServiceKind } from '../manifest.js';
63
- export { type Pip } from '../pip-contract.js';
61
+ /** Re-export `ServiceKind` for the kernel's internal use. */
62
+ export { type ServiceKind } from '../manifest.js';
63
+ export { type Plugin } from '../plugin-contract.js';
64
64
  //# sourceMappingURL=app-instance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-instance.d.ts","sourceRoot":"","sources":["../../src/kernel/app-instance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAEV,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,KAAK,EAA4C,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,KAAK,EAEV,cAAc,EAKf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAA4C,MAAM,oBAAoB,CAAC;AAkE3F,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU;;gBAsET,MAAM,EAAE,oBAAoB;IAqExC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAuIrD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtC;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,IAAI,WAAW,IAAI,sBAAsB,CAExC;IAED;;;;OAIG;IACH,YAAY,IAAI,IAAI;IA8KpB,oDAAoD;IAC9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8T3B,2EAA2E;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsI5B,mDAAmD;IAC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsH3B,sDAAsD;IAChD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA6T/B;AA0BD,kFAAkF;AAElF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"app-instance.d.ts","sourceRoot":"","sources":["../../src/kernel/app-instance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAGV,sBAAsB,EAIvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,KAAK,EAA+C,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,KAAK,EAGV,cAAc,EAMf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAA4C,MAAM,uBAAuB,CAAC;AAqEjG,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IAC9B,sDAAsD;IACtD,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAU;;gBAsET,MAAM,EAAE,oBAAoB;IAsExC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAiOrD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtC;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,IAAI,WAAW,IAAI,sBAAsB,CAExC;IAED;;;;OAIG;IACH,YAAY,IAAI,IAAI;IA+MpB,oDAAoD;IAC9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8T3B,2EAA2E;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsI5B,mDAAmD;IAC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsH3B,sDAAsD;IAChD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAmU/B;AAqCD,6DAA6D;AAE7D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC"}