@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
package/README.md CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  > TypeScript-first application composition framework for the ARKI package family.
4
4
 
5
- `@arki/dot` is the kernel that wires **pips**, lifecycle hooks, dependency
5
+ `@arki/dot` is the kernel that wires **plugins**, lifecycle hooks, dependency
6
6
  injection, and diagnostics into a deterministic application boot. It gives
7
7
  library authors a stable contract for declaring how their package
8
8
  participates in an app, and gives app developers a single place to wire
9
9
  those packages together — with the type checker verifying the wiring before
10
10
  anything runs.
11
11
 
12
- ## What is a pip?
12
+ ## What is a plugin?
13
13
 
14
- A **pip** is the unit a DOT app is built from — one self-describing,
15
- lifecycle-aware piece of an application. Each pip:
14
+ A **plugin** is the unit a DOT app is built from — one self-describing,
15
+ lifecycle-aware piece of an application. Each plugin:
16
16
 
17
17
  - declares a **name**, **version**, and the services it **needs** as a shape
18
18
  of type witnesses;
@@ -20,38 +20,38 @@ lifecycle-aware piece of an application. Each pip:
20
20
  are *inferred from the return type*, never declared separately;
21
21
  - runs a **5-hook lifecycle** — `configure` → `boot` → `start` → `stop` → `dispose`;
22
22
  - **publishes typed services** to a shared, type-safe registry that later
23
- pips can read from;
24
- - **composes deterministically** — pips boot in declaration order and
23
+ plugins can read from;
24
+ - **composes deterministically** — plugins boot in declaration order and
25
25
  dispose in reverse.
26
26
 
27
27
  The name comes from the small dots on dice, dominoes, and music notation:
28
- each pip is one small mark, and the *combination* of pips is what gives the
29
- app its value. Two pips on a die make a value of two; six pips make six. The
30
- pips **are** the app — not optional add-ons to a hidden core.
28
+ each plugin is one small mark, and the *combination* of plugins is what gives the
29
+ app its value. Two plugins on a die make a value of two; six plugins make six. The
30
+ plugins **are** the app — not optional add-ons to a hidden core.
31
31
 
32
32
  ```ts
33
33
  import { defineApp } from '@arki/dot';
34
- import { env } from '@arki/env/dot'; // env pip
35
- import { db } from '@arki/db/dot'; // db pip
36
- import { kv } from '@arki/kv/dot'; // kv pip
34
+ import { env } from '@arki/env/dot'; // env plugin
35
+ import { db } from '@arki/db/dot'; // db plugin
36
+ import { kv } from '@arki/kv/dot'; // kv plugin
37
37
 
38
38
  const app = await defineApp('orders')
39
- .use(env({ schema: { /* ... */ } })) // 1st pip — provides services.env
40
- .use(db({ relations })) // 2nd pip — provides services.db
41
- .use(kv({ url: process.env.KV_URL! })) // 3rd pip — provides services.kv
42
- .boot(); // pips boot in declaration order
39
+ .use(env({ schema: { /* ... */ } })) // 1st plugin — provides services.env
40
+ .use(db({ relations })) // 2nd plugin — provides services.db
41
+ .use(kv({ url: process.env.KV_URL! })) // 3rd plugin — provides services.kv
42
+ .boot(); // plugins boot in declaration order
43
43
 
44
44
  await app.services.db.query(/* ... */);
45
- await app.dispose(); // pips dispose in REVERSE order
45
+ await app.dispose(); // plugins dispose in REVERSE order
46
46
  ```
47
47
 
48
- Each `/dot` subpath exports a **pip** for that package. The subpath names
49
- the framework the adapter targets (DOT), not the unit (which is a pip).
48
+ Each `/dot` subpath exports a **plugin** for that package. The subpath names
49
+ the framework the adapter targets (DOT), not the unit (which is a plugin).
50
50
 
51
51
  > **Why not "plugin"?** Plugins suggest *optional add-ons* to a core. DOT's
52
- > reality is the opposite: there is no hidden core — the pips *are* the app.
53
- > "Pip" names that truth, and ties the framework to the DOT name etymologically
54
- > (a dot, a pip, a small mark that gains meaning by combining with others).
52
+ > reality is the opposite: there is no hidden core — the plugins *are* the app.
53
+ > "Plugin" names that truth, and ties the framework to the DOT name etymologically
54
+ > (a dot, a plugin, a small mark that gains meaning by combining with others).
55
55
 
56
56
  ## Installation
57
57
 
@@ -64,11 +64,11 @@ bun add @arki/dot
64
64
  ## Quick start
65
65
 
66
66
  ```ts
67
- import { defineApp, pip, service } from '@arki/dot';
67
+ import { defineApp, plugin, service } from '@arki/dot';
68
68
 
69
69
  type Db = { query(sql: string): Promise<unknown[]> };
70
70
 
71
- const dbPip = pip({
71
+ const dbPlugin = plugin({
72
72
  name: 'database',
73
73
  async boot() {
74
74
  const db = await openDb(process.env.DATABASE_URL);
@@ -79,7 +79,7 @@ const dbPip = pip({
79
79
  },
80
80
  });
81
81
 
82
- const billingPip = pip({
82
+ const billingPlugin = plugin({
83
83
  name: 'billing',
84
84
  version: '1.0.0',
85
85
  needs: { db: service<Db>() }, // typed injection — destructure in hooks
@@ -87,7 +87,7 @@ const billingPip = pip({
87
87
  // Validate config, register schemas, no I/O.
88
88
  },
89
89
  async boot({ db }) {
90
- // Open connections. The return value IS what this pip provides.
90
+ // Open connections. The return value IS what this plugin provides.
91
91
  return { stripe: makeStripeClient(db) };
92
92
  },
93
93
  async start({ stripe }) {
@@ -102,8 +102,8 @@ const billingPip = pip({
102
102
  });
103
103
 
104
104
  const app = await defineApp('acme')
105
- .use(dbPip) // providers before consumers — enforced at compile time
106
- .use(billingPip)
105
+ .use(dbPlugin) // providers before consumers — enforced at compile time
106
+ .use(billingPlugin)
107
107
  .start();
108
108
 
109
109
  // app.manifest, app.diagnostics — agent-friendly envelopes.
@@ -125,21 +125,21 @@ carries `T` at the type level. The property name you give it is your local
125
125
  alias *and* (for anonymous witnesses) the wire key:
126
126
 
127
127
  ```ts
128
- const search = pip({
128
+ const search = plugin({
129
129
  name: 'search',
130
130
  needs: {
131
131
  db: service<Db>(), // wire key 'db', local alias 'db'
132
132
  log: service<Logger>(), // wire key 'log'
133
133
  },
134
- async boot({ db, log, $app }) { // $app/$pip/$config: kernel context
134
+ async boot({ db, log, $app }) { // $app/$plugin/$config: kernel context
135
135
  log.info(`indexing for ${$app}`);
136
136
  return { search: await buildIndex(db) };
137
137
  },
138
138
  });
139
139
  ```
140
140
 
141
- `start`, `stop`, and `dispose` additionally receive the pip's **own
142
- provides** — and because teardown runs in reverse declaration order, a pip's
141
+ `start`, `stop`, and `dispose` additionally receive the plugin's **own
142
+ provides** — and because teardown runs in reverse declaration order, a plugin's
143
143
  needs are still alive in its `dispose`:
144
144
 
145
145
  ```ts
@@ -166,12 +166,12 @@ defineApp('shop')
166
166
  Reordering the first example — or `rename`-ing one provider in the second —
167
167
  makes both compile. The kernel re-validates at runtime with coded errors
168
168
  (`E012` unsatisfied need, `E013` collision, `E014` reserved key) for
169
- erased/dynamic composition, with full rollback of already-booted pips.
169
+ erased/dynamic composition, with full rollback of already-booted plugins.
170
170
 
171
171
  There is no dependency graph to debug and **cycles are unrepresentable**:
172
- services flow strictly forward through the `.use()` chain. If two pips need
172
+ services flow strictly forward through the `.use()` chain. If two plugins need
173
173
  each other's services, that's a design smell the type system surfaces
174
- immediately — merge them, or extract the shared piece into a third pip both
174
+ immediately — merge them, or extract the shared piece into a third plugin both
175
175
  consume.
176
176
 
177
177
  ### Tokens — cross-package service contracts
@@ -185,7 +185,7 @@ alias becomes free choice:
185
185
  export const Db = token<NodePgDatabase<Schema>>()('arki.db');
186
186
 
187
187
  // A provider publishes under the token's key:
188
- const database = pip({
188
+ const database = plugin({
189
189
  name: 'database',
190
190
  async boot() {
191
191
  return provide(Db, await connect()); // → { 'arki.db': NodePgDatabase }
@@ -193,7 +193,7 @@ const database = pip({
193
193
  });
194
194
 
195
195
  // Any consumer, any package, any local alias:
196
- const reports = pip({
196
+ const reports = plugin({
197
197
  name: 'reports',
198
198
  needs: { warehouse: Db }, // wire key 'arki.db', alias yours
199
199
  async boot({ warehouse }) { /* ... */ },
@@ -214,9 +214,9 @@ const app = await defineApp('shop')
214
214
  .use(rename(
215
215
  database({ url: REPLICA_URL }),
216
216
  { 'arki.db': ReportsDb.key }, // republish under the derived key
217
- 'reports-db', // distinct pip name
217
+ 'reports-db', // distinct plugin name
218
218
  ))
219
- .use(pip({
219
+ .use(plugin({
220
220
  name: 'analytics',
221
221
  needs: { primary: Db, replica: ReportsDb },
222
222
  async boot({ primary, replica }) { /* two live instances, both typed */ },
@@ -233,10 +233,10 @@ checks see the final keys.
233
233
  resource. Initialization runs on first `get()` (memoized, single-flight;
234
234
  failed attempts retry). Never-touched handles never initialize — and the
235
235
  kernel auto-disposes initialized ones during teardown, *after* the
236
- publishing pip's own `dispose` hook, even if that pip has none:
236
+ publishing plugin's own `dispose` hook, even if that plugin has none:
237
237
 
238
238
  ```ts
239
- const search = pip({
239
+ const search = plugin({
240
240
  name: 'search',
241
241
  async boot() {
242
242
  return {
@@ -253,7 +253,7 @@ Consumers that shouldn't care whether a provider is eager or lazy declare a
253
253
  handle, wrapping eager provides and passing lazy ones through by identity:
254
254
 
255
255
  ```ts
256
- const suggestions = pip({
256
+ const suggestions = plugin({
257
257
  name: 'suggestions',
258
258
  needs: { search: service.lazy<SearchClient>() },
259
259
  async start({ search }) {
@@ -268,20 +268,20 @@ consumer — the wiring guard accepts both shapes against the same witness.
268
268
 
269
269
  ### Kernel context — the reserved `$` namespace
270
270
 
271
- Every service-carrying hook context includes `$app` (app name), `$pip` (pip
271
+ Every service-carrying hook context includes `$app` (app name), `$plugin` (plugin
272
272
  name), and `$config` (the `defineApp(name, { config })` bag). The `$` prefix
273
- is enforced as reserved: `pip()` rejects `$`-prefixed needs aliases and
273
+ is enforced as reserved: `plugin()` rejects `$`-prefixed needs aliases and
274
274
  publish keys at compile time, and the kernel re-validates at runtime
275
275
  (`DOT_LIFECYCLE_E014`) — kernel keys can never be shadowed.
276
276
 
277
277
  ## A complex setup
278
278
 
279
279
  A distilled commerce platform showing everything above working together.
280
- (The package's stress-test suite boots a 28-pip version of this and asserts
280
+ (The package's stress-test suite boots a 28-plugin version of this and asserts
281
281
  exact boot/teardown ordering.)
282
282
 
283
283
  ```ts
284
- import { defineApp, lazy, pip, provide, rename, service, token } from '@arki/dot';
284
+ import { defineApp, lazy, plugin, provide, rename, service, token } from '@arki/dot';
285
285
 
286
286
  // ── contracts.ts — tokens owned by their respective packages ─────────
287
287
  export const Env = token<AppEnv>()('shop.env');
@@ -290,13 +290,13 @@ export const ReportsDb = Db.instance('reports');
290
290
  export const Cache = token<CacheHandle>()('shop.cache');
291
291
  export const Bus = token<MessageBus>()('shop.bus');
292
292
 
293
- // ── infrastructure pips ───────────────────────────────────────────────
294
- const env = pip({
293
+ // ── infrastructure plugins ───────────────────────────────────────────────
294
+ const env = plugin({
295
295
  name: 'env',
296
296
  boot: ({ $config }) => provide(Env, parseEnv($config)),
297
297
  });
298
298
 
299
- const telemetry = pip({
299
+ const telemetry = plugin({
300
300
  name: 'telemetry',
301
301
  needs: { env: Env },
302
302
  boot: ({ env }) => ({ metrics: makeMetrics(env.OTEL_ENDPOINT) }),
@@ -304,7 +304,7 @@ const telemetry = pip({
304
304
  });
305
305
 
306
306
  const database = (url: string) =>
307
- pip({
307
+ plugin({
308
308
  name: 'database',
309
309
  needs: { metrics: service<Metrics>() },
310
310
  async boot({ metrics }) {
@@ -315,14 +315,14 @@ const database = (url: string) =>
315
315
  },
316
316
  });
317
317
 
318
- const cache = pip({
318
+ const cache = plugin({
319
319
  name: 'cache',
320
320
  needs: { env: Env },
321
321
  boot: ({ env }) => provide(Cache, connectRedis(env.REDIS_URL)),
322
322
  dispose: async ctx => ctx[Cache.key].quit(),
323
323
  });
324
324
 
325
- const searchCluster = pip({
325
+ const searchCluster = plugin({
326
326
  name: 'search-cluster',
327
327
  needs: { env: Env },
328
328
  boot: ({ env }) => ({
@@ -333,13 +333,13 @@ const searchCluster = pip({
333
333
  }),
334
334
  });
335
335
 
336
- const bus = pip({
336
+ const bus = plugin({
337
337
  name: 'bus',
338
338
  boot: () => provide(Bus, makeInMemoryBus()),
339
339
  });
340
340
 
341
- // ── domain pips ───────────────────────────────────────────────────────
342
- const catalog = pip({
341
+ // ── domain plugins ───────────────────────────────────────────────────────
342
+ const catalog = plugin({
343
343
  name: 'catalog',
344
344
  needs: {
345
345
  db: Db,
@@ -351,7 +351,7 @@ const catalog = pip({
351
351
  }),
352
352
  });
353
353
 
354
- const checkout = pip({
354
+ const checkout = plugin({
355
355
  name: 'checkout',
356
356
  needs: { db: Db, bus: Bus, catalog: service<Catalog>() },
357
357
  boot: ({ db, bus, catalog }) => ({
@@ -359,14 +359,14 @@ const checkout = pip({
359
359
  }),
360
360
  });
361
361
 
362
- const reporting = pip({
362
+ const reporting = plugin({
363
363
  name: 'reporting',
364
364
  needs: { replica: ReportsDb, catalog: service<Catalog>() },
365
365
  boot: ({ replica, catalog }) => ({ reporting: makeReporting(replica, catalog) }),
366
366
  });
367
367
 
368
- // ── process pips — real work happens in start/stop ───────────────────
369
- const outboxWorker = pip({
368
+ // ── process plugins — real work happens in start/stop ───────────────────
369
+ const outboxWorker = plugin({
370
370
  name: 'outbox-worker',
371
371
  needs: { db: Db, bus: Bus },
372
372
  boot: ({ db, bus }) => ({ outbox: makeOutbox(db, bus) }),
@@ -374,7 +374,7 @@ const outboxWorker = pip({
374
374
  stop: ({ outbox }) => outbox.drain(), // stop processing, keep resources
375
375
  });
376
376
 
377
- const http = pip({
377
+ const http = plugin({
378
378
  name: 'http',
379
379
  needs: {
380
380
  env: Env,
@@ -425,18 +425,18 @@ queue, same-phase calls coalesce onto one in-flight promise, and a
425
425
  `dispose()` racing a slow `start()` always runs after it — the app ends
426
426
  `disposed`, never resurrected.
427
427
 
428
- ## Testing pips
428
+ ## Testing plugins
429
429
 
430
- `testPip` is the typed unit-test builder: satisfy a pip's needs directly
430
+ `testPlugin` is the typed unit-test builder: satisfy a plugin's needs directly
431
431
  with fakes — no real providers, no dependency chain — and the compiler
432
432
  holds the same line it holds in production. A missing fake means `boot()`
433
433
  does not compile; a fake of the wrong shape fails at the `.provide()`
434
434
  call site:
435
435
 
436
436
  ```ts
437
- import { testPip } from '@arki/dot/test-harness';
437
+ import { testPlugin } from '@arki/dot/test-harness';
438
438
 
439
- const app = await testPip(catalog)
439
+ const app = await testPlugin(catalog)
440
440
  .provide(Db, fakeDb) // token need
441
441
  .provide('cache', fakeKv) // anonymous need — wire key is the alias
442
442
  .boot();
@@ -445,13 +445,13 @@ expect(app.services.catalog.list()).toEqual([]);
445
445
  await app.dispose();
446
446
  ```
447
447
 
448
- The fakes are published by a synthetic first pip, so lifecycle semantics
448
+ The fakes are published by a synthetic first plugin, so lifecycle semantics
449
449
  are the real kernel's — reverse-order teardown, lazy auto-dispose, and
450
450
  `$config` all behave exactly as in production. `service.lazy<T>()` needs
451
451
  accept a plain `T` fake (lifted automatically) or `lazyOf(value)`.
452
452
 
453
- For integration tests across several real pips, `testApp([...pips])`
454
- builds an app from an erased pip array (runtime validation only), and
453
+ For integration tests across several real plugins, `testApp([...plugins])`
454
+ builds an app from an erased plugin array (runtime validation only), and
455
455
  `bootTestApp` is the one-line boot-and-return variant.
456
456
 
457
457
  ## Operations
@@ -474,26 +474,26 @@ hookSignals(app); // SIGTERM/SIGINT → stop() + dispose() → re-raise
474
474
  Returns an unhook function.
475
475
  - **`hookTimeoutMs`** — a per-hook watchdog. Any `boot`/`start`/`stop`/
476
476
  `dispose` hook exceeding the budget fails with `DOT_LIFECYCLE_E015`
477
- naming the pip and hook, and the kernel applies its normal rollback or
477
+ naming the plugin and hook, and the kernel applies its normal rollback or
478
478
  aggregation rules. Your app cannot hang silently at boot.
479
479
 
480
- ## Pip authoring
480
+ ## Plugin authoring
481
481
 
482
- `pip(config)` accepts a `needs` shape plus five lifecycle hooks. Hook
482
+ `plugin(config)` accepts a `needs` shape plus five lifecycle hooks. Hook
483
483
  contexts carry the needed services (typed, under your local aliases) and
484
- `$`-prefixed kernel keys (`$app`, `$pip`, `$config`):
484
+ `$`-prefixed kernel keys (`$app`, `$plugin`, `$config`):
485
485
 
486
486
  | Hook | Purpose |
487
487
  | ----------- | ------------------------------------------------------------------- |
488
488
  | `configure` | Validate static config; declare schemas, routes, services. No I/O. |
489
- | `boot` | Open connections; the returned record is what the pip provides. |
489
+ | `boot` | Open connections; the returned record is what the plugin provides. |
490
490
  | `start` | Begin processing (workers, subscribers, schedulers). |
491
491
  | `stop` | Stop processing in reverse declaration order. |
492
492
  | `dispose` | Free resources after `stop`; lazy handles auto-clean afterwards. |
493
493
 
494
- Wiring is compile-time checked: `.use(pip)` fails to typecheck when the
495
- pip's needs aren't satisfied by earlier `.use()` calls, or when its
496
- provides collide with an existing wire key. `rename(pip, { db: 'reportsDb' })`
494
+ Wiring is compile-time checked: `.use(plugin)` fails to typecheck when the
495
+ plugin's needs aren't satisfied by earlier `.use()` calls, or when its
496
+ provides collide with an existing wire key. `rename(plugin, { db: 'reportsDb' })`
497
497
  mounts a second instance of an adapter without collision; `token<T>()('key')`
498
498
  shares a service contract across packages; `lazy(() => open(), { dispose })`
499
499
  defers an expensive open until first `get()` — never-touched services never
@@ -502,8 +502,8 @@ order is boot order — same input, same order, every time.
502
502
 
503
503
  ## Lifecycle
504
504
 
505
- `defineApp(name)` returns a builder. Calling `.use(pip)` accumulates
506
- pips. The lifecycle then flows:
505
+ `defineApp(name)` returns a builder. Calling `.use(plugin)` accumulates
506
+ plugins. The lifecycle then flows:
507
507
 
508
508
  ```text
509
509
  defined ──configure()──▶ configured ──boot()──▶ booted ──start()──▶ started
@@ -514,15 +514,15 @@ defined ──configure()──▶ configured ──boot()──▶ booted ─
514
514
  `boot()` runs `configure()` implicitly if you skipped it. `start()` runs
515
515
  `boot()` implicitly. `stop()` and `dispose()` always run in reverse
516
516
  declaration order, even when an earlier hook failed — failure isolation is
517
- part of the contract. A boot failure rolls back every already-booted pip
517
+ part of the contract. A boot failure rolls back every already-booted plugin
518
518
  before throwing.
519
519
 
520
520
  Runtime failures carry stable codes (`DotLifecycleError.code`):
521
521
 
522
522
  | Code | Meaning |
523
523
  | -------------------- | ---------------------------------------------------- |
524
- | `DOT_LIFECYCLE_E011` | Pip registered twice. |
525
- | `DOT_LIFECYCLE_E012` | A need has no provider among earlier pips. |
524
+ | `DOT_LIFECYCLE_E011` | Plugin registered twice. |
525
+ | `DOT_LIFECYCLE_E012` | A need has no provider among earlier plugins. |
526
526
  | `DOT_LIFECYCLE_E013` | A published wire key collides with an earlier one. |
527
527
  | `DOT_LIFECYCLE_E014` | A service key uses the reserved `$` (kernel) prefix. |
528
528
  | `DOT_LIFECYCLE_E015` | A hook exceeded the `hookTimeoutMs` watchdog. |
@@ -547,18 +547,18 @@ dot explain --app ./my-app.ts
547
547
  # Run boot-time diagnostics; non-zero exit if any check fails.
548
548
  dot doctor --app ./my-app.ts
549
549
 
550
- # Render the pip graph as Mermaid flowchart source. explain shows
550
+ # Render the plugin graph as Mermaid flowchart source. explain shows
551
551
  # declaration (= boot) order; doctor boots and shows the OBSERVED wiring.
552
552
  dot doctor --app ./my-app.ts --graph
553
553
 
554
554
  # Every command supports --json for agent-friendly output.
555
- dot explain --app ./my-app.ts --json | jq '.data.pips'
555
+ dot explain --app ./my-app.ts --json | jq '.data.plugins'
556
556
  ```
557
557
 
558
558
  The CLI emits the same envelope shape as the in-process diagnostics snapshot
559
559
  (`app.diagnostics`), so the same downstream tools can consume either. The
560
560
  manifest's dependency edges are **observed, not declared** — the kernel
561
- records which pip's published service satisfied which need during boot.
561
+ records which plugin's published service satisfied which need during boot.
562
562
 
563
563
  ### `dot new <app-name>`
564
564
 
@@ -576,7 +576,7 @@ ship with the published tarball.
576
576
 
577
577
  ## Architecture
578
578
 
579
- `@arki/dot` is intentionally small: it defines the contracts (pip shape,
579
+ `@arki/dot` is intentionally small: it defines the contracts (plugin shape,
580
580
  lifecycle hooks, manifest schema, diagnostics envelope) and runs them. Adapters
581
581
  that bridge databases, queues, auth providers, and HTTP routers live in their
582
582
  own packages and consume `@arki/dot` as a peer dependency:
@@ -598,12 +598,12 @@ The full docs live in [`docs/`](./docs):
598
598
  - [Principles](./docs/principles.md) — **read first.** The five rules every
599
599
  API, error, and PR is measured against. Slightly playful, very precise.
600
600
  - [Quickstart](./docs/quickstart.md) — boot your first app in five minutes.
601
- - [Pip authoring](./docs/pip-authoring.md) — write your own pip.
601
+ - [Plugin authoring](./docs/plugin-authoring.md) — write your own plugin.
602
602
  - [Lifecycle](./docs/lifecycle.md) — the 5-hook contract, idempotency, error codes.
603
603
  - [Diagnostics](./docs/diagnostics.md) — `app.manifest`, `app.diagnostics`,
604
604
  `dot explain`, `dot doctor`.
605
605
  - [Adapter authoring](./docs/adapter-authoring.md) — expose your package as
606
- a DOT pip.
606
+ a DOT plugin.
607
607
  - [Agent guide](./docs/agent-guide.md) — how coding agents inspect, modify,
608
608
  and verify DOT apps.
609
609
  - [Release policy](./docs/release-policy.md) — SemVer and deprecation.
@@ -151,7 +151,7 @@ export async function loadAppFromFile(filePath) {
151
151
  throw new DotCliError({
152
152
  code: DotCliErrorCode.AppInvalidExport,
153
153
  message: `Default export from ${filePath} is not a DotApp or DotAppBuilder.`,
154
- remediation: 'Export a DotApp or DotAppBuilder as the default. Example: `export default defineApp("my-app").use(pip);`',
154
+ remediation: 'Export a DotApp or DotAppBuilder as the default. Example: `export default defineApp("my-app").use(plugin);`',
155
155
  metadata: { filePath },
156
156
  });
157
157
  }
@@ -166,7 +166,7 @@ export async function discoverApp(options = {}) {
166
166
  throw new DotCliError({
167
167
  code: DotCliErrorCode.AppNotFound,
168
168
  message: `No DOT app file found in ${cwd}.`,
169
- remediation: 'Create `dot.config.ts` exporting your app (e.g. `export default defineApp("my-app").use(pip)`), or pass `--app <path>` to point at an existing file.',
169
+ remediation: 'Create `dot.config.ts` exporting your app (e.g. `export default defineApp("my-app").use(plugin)`), or pass `--app <path>` to point at an existing file.',
170
170
  metadata: { cwd, searched: DEFAULT_APP_PATHS },
171
171
  });
172
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/cli/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/cli/discover.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,14 @@ export declare const DotCliErrorCode: {
20
20
  readonly AppLifecycleFailed: "DOT_CLI_E006";
21
21
  /** `dot doctor --observability` ran but no OTel SDK is registered. */
22
22
  readonly ObservabilityNoSdk: "DOT_CLI_E007";
23
+ /** Requested projection format is not registered by the app. */
24
+ readonly ProjectionNotFound: "DOT_CLI_E008";
25
+ /** Projection module import failed or did not export `project`. */
26
+ readonly ProjectionImportFailed: "DOT_CLI_E009";
27
+ /** Projection execution failed or returned non-JSON output. */
28
+ readonly ProjectionExecutionFailed: "DOT_CLI_E010";
29
+ /** Multiple modules claim the same projection format. */
30
+ readonly ProjectionConflict: "DOT_CLI_E011";
23
31
  };
24
32
  export type DotCliErrorCodeValue = (typeof DotCliErrorCode)[keyof typeof DotCliErrorCode];
25
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/cli/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,eAAe;IAC1B,+EAA+E;;IAE/E,iFAAiF;;IAEjF,iDAAiD;;IAEjD,2BAA2B;;IAE3B,+BAA+B;;IAE/B,sEAAsE;;IAEtE,sEAAsE;;CAE9D,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAI1F;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAQjE,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,SAAkB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEtB,IAAI,EAAE;QAChB,IAAI,EAAE,oBAAoB,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CASF"}
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/cli/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,eAAe;IAC1B,+EAA+E;;IAE/E,iFAAiF;;IAEjF,iDAAiD;;IAEjD,2BAA2B;;IAE3B,+BAA+B;;IAE/B,sEAAsE;;IAEtE,sEAAsE;;IAEtE,gEAAgE;;IAEhE,mEAAmE;;IAEnE,+DAA+D;;IAE/D,yDAAyD;;CAEjD,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAI1F;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAYjE,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,SAAkB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEtB,IAAI,EAAE;QAChB,IAAI,EAAE,oBAAoB,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CASF"}
@@ -20,6 +20,14 @@ export const DotCliErrorCode = {
20
20
  AppLifecycleFailed: 'DOT_CLI_E006',
21
21
  /** `dot doctor --observability` ran but no OTel SDK is registered. */
22
22
  ObservabilityNoSdk: 'DOT_CLI_E007',
23
+ /** Requested projection format is not registered by the app. */
24
+ ProjectionNotFound: 'DOT_CLI_E008',
25
+ /** Projection module import failed or did not export `project`. */
26
+ ProjectionImportFailed: 'DOT_CLI_E009',
27
+ /** Projection execution failed or returned non-JSON output. */
28
+ ProjectionExecutionFailed: 'DOT_CLI_E010',
29
+ /** Multiple modules claim the same projection format. */
30
+ ProjectionConflict: 'DOT_CLI_E011',
23
31
  };
24
32
  const DOCS_BASE = 'https://docs.arki.dev/dot/cli';
25
33
  /**
@@ -34,6 +42,10 @@ export const DotCliDocsAnchor = {
34
42
  [DotCliErrorCode.InvalidArgs]: 'invalid-args',
35
43
  [DotCliErrorCode.AppLifecycleFailed]: 'app-lifecycle-failed',
36
44
  [DotCliErrorCode.ObservabilityNoSdk]: 'observability-no-sdk',
45
+ [DotCliErrorCode.ProjectionNotFound]: 'projection-not-found',
46
+ [DotCliErrorCode.ProjectionImportFailed]: 'projection-import-failed',
47
+ [DotCliErrorCode.ProjectionExecutionFailed]: 'projection-execution-failed',
48
+ [DotCliErrorCode.ProjectionConflict]: 'projection-conflict',
37
49
  };
38
50
  export function dotCliDocsUrl(code) {
39
51
  return `${DOCS_BASE}#${DotCliDocsAnchor[code]}`;
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../src/cli/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,+EAA+E;IAC/E,WAAW,EAAE,cAAc;IAC3B,iFAAiF;IACjF,gBAAgB,EAAE,cAAc;IAChC,iDAAiD;IACjD,eAAe,EAAE,cAAc;IAC/B,2BAA2B;IAC3B,cAAc,EAAE,cAAc;IAC9B,+BAA+B;IAC/B,WAAW,EAAE,cAAc;IAC3B,sEAAsE;IACtE,kBAAkB,EAAE,cAAc;IAClC,sEAAsE;IACtE,kBAAkB,EAAE,cAAc;CAC1B,CAAC;AAIX,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAyC;IACpE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,eAAe;IAC9C,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,oBAAoB;IACxD,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,mBAAmB;IACtD,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,iBAAiB;IACnD,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc;IAC7C,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;IAC5D,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;CAC7D,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,OAAO,GAAG,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAuB;IAC3B,WAAW,CAAS;IACpB,OAAO,CAAS;IAChB,QAAQ,CAA2B;IAC1B,KAAK,CAAW;IAElC,YAAY,IAMX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../src/cli/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,+EAA+E;IAC/E,WAAW,EAAE,cAAc;IAC3B,iFAAiF;IACjF,gBAAgB,EAAE,cAAc;IAChC,iDAAiD;IACjD,eAAe,EAAE,cAAc;IAC/B,2BAA2B;IAC3B,cAAc,EAAE,cAAc;IAC9B,+BAA+B;IAC/B,WAAW,EAAE,cAAc;IAC3B,sEAAsE;IACtE,kBAAkB,EAAE,cAAc;IAClC,sEAAsE;IACtE,kBAAkB,EAAE,cAAc;IAClC,gEAAgE;IAChE,kBAAkB,EAAE,cAAc;IAClC,mEAAmE;IACnE,sBAAsB,EAAE,cAAc;IACtC,+DAA+D;IAC/D,yBAAyB,EAAE,cAAc;IACzC,yDAAyD;IACzD,kBAAkB,EAAE,cAAc;CAC1B,CAAC;AAIX,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAyC;IACpE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,eAAe;IAC9C,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,oBAAoB;IACxD,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,mBAAmB;IACtD,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,iBAAiB;IACnD,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc;IAC7C,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;IAC5D,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;IAC5D,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;IAC5D,CAAC,eAAe,CAAC,sBAAsB,CAAC,EAAE,0BAA0B;IACpE,CAAC,eAAe,CAAC,yBAAyB,CAAC,EAAE,6BAA6B;IAC1E,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,qBAAqB;CAC5D,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,OAAO,GAAG,SAAS,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAuB;IAC3B,WAAW,CAAS;IACpB,OAAO,CAAS;IAChB,QAAQ,CAA2B;IAC1B,KAAK,CAAW;IAElC,YAAY,IAMX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF"}
@@ -39,7 +39,11 @@ export type CliArgs = {
39
39
  observability?: boolean;
40
40
  /** `--graph` (honored by `explain` and `doctor`). */
41
41
  graph?: boolean;
42
- /** `--openapi` (honored by `explain` only). */
42
+ /** `--as` projection format (honored by `explain` only). */
43
+ as?: string;
44
+ /** `--module` projection override (honored by `explain --as` only). */
45
+ module?: string;
46
+ /** Deprecated `--openapi` alias for `--as openapi`. */
43
47
  openapi?: boolean;
44
48
  };
45
49
  /**
@@ -54,6 +58,9 @@ export declare function parseArgs(argv: readonly string[]): CliArgs;
54
58
  export declare function runExplain(discovered: DiscoveredApp, opts: {
55
59
  json: boolean;
56
60
  graph?: boolean;
61
+ as?: string;
62
+ module?: string;
63
+ appFilePath?: string;
57
64
  openapi?: boolean;
58
65
  out?: (line: string) => void;
59
66
  now?: () => Date;
@@ -68,7 +75,7 @@ type DoctorRunOptions = {
68
75
  * present. Default `false`.
69
76
  */
70
77
  observability?: boolean;
71
- /** When `true`, emit the pip graph (Mermaid) instead of diagnostics. */
78
+ /** When `true`, emit the plugin graph (Mermaid) instead of diagnostics. */
72
79
  graph?: boolean;
73
80
  };
74
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}