@namzu/cli 10.0.0 → 12.0.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 (134) hide show
  1. package/README.md +390 -46
  2. package/dist/cli.d.ts +15 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +133 -4
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/acp.d.ts +29 -0
  7. package/dist/commands/acp.d.ts.map +1 -0
  8. package/dist/commands/acp.js +156 -0
  9. package/dist/commands/acp.js.map +1 -0
  10. package/dist/commands/doctor.d.ts +12 -1
  11. package/dist/commands/doctor.d.ts.map +1 -1
  12. package/dist/commands/doctor.js +18 -2
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/drain.d.ts +2 -2
  15. package/dist/commands/drain.d.ts.map +1 -1
  16. package/dist/commands/drain.js +31 -8
  17. package/dist/commands/drain.js.map +1 -1
  18. package/dist/commands/run-flags.d.ts.map +1 -1
  19. package/dist/commands/run-flags.js +33 -0
  20. package/dist/commands/run-flags.js.map +1 -1
  21. package/dist/commands/run-stream.d.ts +3 -3
  22. package/dist/commands/run-stream.d.ts.map +1 -1
  23. package/dist/commands/run-stream.js +27 -10
  24. package/dist/commands/run-stream.js.map +1 -1
  25. package/dist/commands/run.d.ts.map +1 -1
  26. package/dist/commands/run.js +50 -4
  27. package/dist/commands/run.js.map +1 -1
  28. package/dist/commands/types.d.ts +10 -0
  29. package/dist/commands/types.d.ts.map +1 -1
  30. package/dist/config/load.d.ts +64 -0
  31. package/dist/config/load.d.ts.map +1 -1
  32. package/dist/config/load.js +156 -20
  33. package/dist/config/load.js.map +1 -1
  34. package/dist/config/schema.d.ts +88 -0
  35. package/dist/config/schema.d.ts.map +1 -1
  36. package/dist/config/schema.js.map +1 -1
  37. package/dist/context/capabilities.d.ts +88 -0
  38. package/dist/context/capabilities.d.ts.map +1 -0
  39. package/dist/context/capabilities.js +160 -0
  40. package/dist/context/capabilities.js.map +1 -0
  41. package/dist/context/sandbox.d.ts +54 -0
  42. package/dist/context/sandbox.d.ts.map +1 -0
  43. package/dist/context/sandbox.js +61 -0
  44. package/dist/context/sandbox.js.map +1 -0
  45. package/dist/doctor/checks/index.d.ts +6 -1
  46. package/dist/doctor/checks/index.d.ts.map +1 -1
  47. package/dist/doctor/checks/index.js +45 -2
  48. package/dist/doctor/checks/index.js.map +1 -1
  49. package/dist/doctor/checks/invariants.d.ts +23 -0
  50. package/dist/doctor/checks/invariants.d.ts.map +1 -0
  51. package/dist/doctor/checks/invariants.js +79 -0
  52. package/dist/doctor/checks/invariants.js.map +1 -0
  53. package/dist/doctor/checks/logging.d.ts +10 -0
  54. package/dist/doctor/checks/logging.d.ts.map +1 -0
  55. package/dist/doctor/checks/logging.js +69 -0
  56. package/dist/doctor/checks/logging.js.map +1 -0
  57. package/dist/doctor/checks/session-export.d.ts +21 -0
  58. package/dist/doctor/checks/session-export.d.ts.map +1 -0
  59. package/dist/doctor/checks/session-export.js +62 -0
  60. package/dist/doctor/checks/session-export.js.map +1 -0
  61. package/dist/doctor/checks/telemetry.d.ts +15 -28
  62. package/dist/doctor/checks/telemetry.d.ts.map +1 -1
  63. package/dist/doctor/checks/telemetry.js +34 -54
  64. package/dist/doctor/checks/telemetry.js.map +1 -1
  65. package/dist/doctor/checks/vault.d.ts +4 -20
  66. package/dist/doctor/checks/vault.d.ts.map +1 -1
  67. package/dist/doctor/checks/vault.js +58 -19
  68. package/dist/doctor/checks/vault.js.map +1 -1
  69. package/dist/doctor/registry.d.ts.map +1 -1
  70. package/dist/doctor/registry.js +13 -6
  71. package/dist/doctor/registry.js.map +1 -1
  72. package/dist/index.d.ts +3 -2
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +3 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/integrations/files/attachment-store.d.ts +44 -0
  77. package/dist/integrations/files/attachment-store.d.ts.map +1 -0
  78. package/dist/integrations/files/attachment-store.js +86 -0
  79. package/dist/integrations/files/attachment-store.js.map +1 -0
  80. package/dist/integrations/providers/credential-provider.d.ts +39 -0
  81. package/dist/integrations/providers/credential-provider.d.ts.map +1 -0
  82. package/dist/integrations/providers/credential-provider.js +74 -0
  83. package/dist/integrations/providers/credential-provider.js.map +1 -0
  84. package/dist/integrations/providers/discover.d.ts.map +1 -1
  85. package/dist/integrations/providers/discover.js +15 -3
  86. package/dist/integrations/providers/discover.js.map +1 -1
  87. package/dist/integrations/providers/oauth.d.ts.map +1 -1
  88. package/dist/integrations/providers/oauth.js +24 -1
  89. package/dist/integrations/providers/oauth.js.map +1 -1
  90. package/dist/integrations/sessions/store.d.ts +2 -2
  91. package/dist/integrations/sessions/store.d.ts.map +1 -1
  92. package/dist/integrations/sessions/store.js +21 -9
  93. package/dist/integrations/sessions/store.js.map +1 -1
  94. package/dist/integrations/subagents/runtime.d.ts +3 -3
  95. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  96. package/dist/integrations/subagents/runtime.js +11 -11
  97. package/dist/integrations/subagents/runtime.js.map +1 -1
  98. package/dist/integrations/telemetry/session-export.d.ts +99 -0
  99. package/dist/integrations/telemetry/session-export.d.ts.map +1 -0
  100. package/dist/integrations/telemetry/session-export.js +119 -0
  101. package/dist/integrations/telemetry/session-export.js.map +1 -0
  102. package/dist/logging.d.ts +79 -0
  103. package/dist/logging.d.ts.map +1 -0
  104. package/dist/logging.js +67 -0
  105. package/dist/logging.js.map +1 -0
  106. package/dist/permissions/rules.d.ts +3 -3
  107. package/dist/permissions/rules.d.ts.map +1 -1
  108. package/dist/permissions/rules.js +1 -1
  109. package/dist/permissions/rules.js.map +1 -1
  110. package/dist/skills/store.d.ts +1 -1
  111. package/dist/skills/store.js +1 -1
  112. package/dist/tui/App.d.ts.map +1 -1
  113. package/dist/tui/App.js +93 -6
  114. package/dist/tui/App.js.map +1 -1
  115. package/dist/tui/StatusBar.d.ts +1 -1
  116. package/dist/tui/StatusBar.d.ts.map +1 -1
  117. package/dist/tui/agent.d.ts +65 -24
  118. package/dist/tui/agent.d.ts.map +1 -1
  119. package/dist/tui/agent.js +337 -122
  120. package/dist/tui/agent.js.map +1 -1
  121. package/dist/tui/index.d.ts.map +1 -1
  122. package/dist/tui/index.js +17 -6
  123. package/dist/tui/index.js.map +1 -1
  124. package/dist/tui/log-pane.d.ts +48 -0
  125. package/dist/tui/log-pane.d.ts.map +1 -0
  126. package/dist/tui/log-pane.js +106 -0
  127. package/dist/tui/log-pane.js.map +1 -0
  128. package/dist/tui/slashCommands.d.ts +134 -11
  129. package/dist/tui/slashCommands.d.ts.map +1 -1
  130. package/dist/tui/slashCommands.js +169 -15
  131. package/dist/tui/slashCommands.js.map +1 -1
  132. package/dist/tui/types.d.ts +18 -2
  133. package/dist/tui/types.d.ts.map +1 -1
  134. package/package.json +8 -6
@@ -1,5 +1,4 @@
1
- import { createRequire } from 'node:module';
2
- import { pathToFileURL } from 'node:url';
1
+ import { probeOptionalPackage } from '../../context/capabilities.js';
3
2
  const TELEMETRY = '@namzu/telemetry';
4
3
  /**
5
4
  * Telemetry presence probe.
@@ -10,64 +9,45 @@ const TELEMETRY = '@namzu/telemetry';
10
9
  * deferred to a follow-up check that the consumer can register
11
10
  * themselves once their telemetry config is known.
12
11
  *
13
- * ## Resolving and loading are asked separately, on purpose
14
- *
15
- * This used to be one `import()` in a `try`, and every rejection was reported
16
- * as `not installed (optional package)`. A package that IS installed and throws
17
- * on load — a broken build, a native binding that will not open, a dependency
18
- * of its own that cannot resolve — was reported as absent. One word, two facts,
19
- * and the reader is told the reassuring one.
20
- *
21
- * Splitting the question is what makes each answer honest, and a code check on
22
- * the thrown error is not enough to do it: a transitive dependency that cannot
23
- * resolve raises `ERR_MODULE_NOT_FOUND` exactly as a missing `@namzu/telemetry`
24
- * does, so matching on the code would report a broken installation as no
25
- * installation. `resolve` asks only about THIS specifier, so it separates the
26
- * two by construction rather than by reading a message that may be reworded.
27
- *
28
- * - cannot resolve → the package is not here → `skipped`
29
- * - resolves, import throws → it is here and unusable → `fail`
12
+ * The three-state resolve-then-import probe this used to do inline now
13
+ * lives at `context/capabilities.ts` as `probeOptionalPackage` (NZ-BOOT-02),
14
+ * extracted so the boot path can report the SAME answer about
15
+ * `@namzu/sandbox`, `@namzu/files` and `@namzu/computer-use` that this file
16
+ * has always given about telemetry, instead of inventing its own. What
17
+ * stays here is the one thing the doctor still owns: turning that answer
18
+ * into the prose and remediation a `DoctorCheckResult` carries.
30
19
  */
31
20
  /**
32
- * Whether `specifier` is installed, and whether it loads.
21
+ * `specifier`'s `CapabilityProbe`, read as a `DoctorCheckResult`.
33
22
  *
34
23
  * Exported separately from the `DoctorCheck` so all three outcomes can be
35
- * driven with a specifier the test controls — there is no way to uninstall or
36
- * break the real optional package from inside a test run. The check itself is
37
- * still exercised through `telemetryInstalledCheck.run`, because a helper
38
- * proven in isolation says nothing about whether the check reaches it. Same
39
- * arrangement, and the same reason, as `describeProviderChain`.
40
- *
41
- * The import goes through the RESOLVED path rather than the specifier, so one
42
- * code path serves a package name and a file, which is what lets the
43
- * present-but-broken case be reached at all. Resolution has already applied the
44
- * package's export map by that point.
24
+ * asserted directly — there is no way to uninstall or break a real optional
25
+ * package from inside a test run, so `capabilities.test.ts` drives
26
+ * `probeOptionalPackage` with fixtures and this function's own tests only
27
+ * need to check the mapping. The check itself is still exercised through
28
+ * `telemetryInstalledCheck.run`, because a helper proven in isolation says
29
+ * nothing about whether the check reaches it. Same arrangement, and the
30
+ * same reason, as `describeProviderChain`.
45
31
  */
46
32
  export async function describeInstalledPackage(specifier) {
47
- const require = createRequire(import.meta.url);
48
- let resolved;
49
- try {
50
- resolved = require.resolve(specifier);
51
- }
52
- catch {
53
- return {
54
- status: 'skipped',
55
- message: `${specifier} not installed (optional package)`,
56
- };
57
- }
58
- try {
59
- await import(pathToFileURL(resolved).href);
60
- return { status: 'pass', message: `${specifier} is installed` };
61
- }
62
- catch (err) {
63
- return {
64
- status: 'fail',
65
- // The reason is the whole value of separating these: "installed but
66
- // will not load" sends the reader somewhere, and "not installed" would
67
- // have sent them to install what is already there.
68
- message: `${specifier} is installed but failed to load: ${err instanceof Error ? err.message : String(err)}`,
69
- remediation: `Reinstall ${specifier}, or remove it if you are not using telemetry — it is optional and namzu runs without it.`,
70
- };
33
+ const probe = await probeOptionalPackage(specifier);
34
+ switch (probe.state) {
35
+ case 'absent':
36
+ return {
37
+ status: 'skipped',
38
+ message: `${specifier} not installed (optional package)`,
39
+ };
40
+ case 'present':
41
+ return { status: 'pass', message: `${specifier} is installed` };
42
+ case 'broken':
43
+ return {
44
+ status: 'fail',
45
+ // The reason is the whole value of separating these: "installed but
46
+ // will not load" sends the reader somewhere, and "not installed" would
47
+ // have sent them to install what is already there.
48
+ message: `${specifier} is installed but failed to load: ${probe.error.message}`,
49
+ remediation: `Reinstall ${specifier}, or remove it if you are not using it — it is optional and namzu runs without it.`,
50
+ };
71
51
  }
72
52
  }
73
53
  export const telemetryInstalledCheck = {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/doctor/checks/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAIxC,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,SAAiB;IAC/D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9C,IAAI,QAAgB,CAAA;IACpB,IAAI,CAAC;QACJ,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;YACN,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,GAAG,SAAS,mCAAmC;SACxD,CAAA;IACF,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAA;QAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,eAAe,EAAE,CAAA;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO;YACN,MAAM,EAAE,MAAM;YACd,oEAAoE;YACpE,uEAAuE;YACvE,mDAAmD;YACnD,OAAO,EAAE,GAAG,SAAS,qCACpB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAChD,EAAE;YACF,WAAW,EAAE,aAAa,SAAS,2FAA2F;SAC9H,CAAA;IACF,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAgB;IACnD,EAAE,EAAE,qBAAqB;IACzB,QAAQ,EAAE,WAAW;IACrB,GAAG,EAAE,GAA+B,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC;CAC1E,CAAA"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/doctor/checks/telemetry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,SAAiB;IAC/D,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACnD,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACZ,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,GAAG,SAAS,mCAAmC;aACxD,CAAA;QACF,KAAK,SAAS;YACb,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,eAAe,EAAE,CAAA;QAChE,KAAK,QAAQ;YACZ,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,oEAAoE;gBACpE,uEAAuE;gBACvE,mDAAmD;gBACnD,OAAO,EAAE,GAAG,SAAS,qCAAqC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC/E,WAAW,EAAE,aAAa,SAAS,oFAAoF;aACvH,CAAA;IACH,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAgB;IACnD,EAAE,EAAE,qBAAqB;IACzB,QAAQ,EAAE,WAAW;IACrB,GAAG,EAAE,GAA+B,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC;CAC1E,CAAA"}
@@ -1,22 +1,6 @@
1
- import type { DoctorCheck } from '@namzu/sdk';
2
- /**
3
- * Built-in vault probe is intentionally `skipped`.
4
- *
5
- * `CredentialVault` is an interface, not a globally-discoverable
6
- * registry — consumers instantiate their own (`InMemoryCredentialVault`,
7
- * file-backed, env-backed, KMS-backed, …). The doctor cannot enumerate
8
- * vaults it doesn't know about. To get a real vault healthcheck, the
9
- * consumer registers a custom check via `registerDoctorCheck` that
10
- * exercises their specific vault wiring.
11
- *
12
- * `skipped`, not `inconclusive`, and the difference is the whole point of the
13
- * split: `inconclusive` means a check tried and could not answer, which is a
14
- * gap in the report and now carries a non-zero exit code. This check has no
15
- * subject to answer about — there is no discovery mechanism to fail — and that
16
- * is true on every machine, permanently, by design. Reporting a permanent
17
- * design decision as an unanswered question would make `namzu doctor` non-zero
18
- * on every healthy machine, and a diagnostic that always complains is one
19
- * nobody reads.
20
- */
1
+ import type { CredentialProvider, DoctorCheck } from '@namzu/sdk';
2
+ export declare function registerCredentialProvider(provider: CredentialProvider, label: string, refs: readonly string[]): () => void;
3
+ /** For tests, and for a host rebuilding its wiring. */
4
+ export declare function clearRegisteredCredentialProviders(): void;
21
5
  export declare const vaultRegisteredCheck: DoctorCheck;
22
6
  //# sourceMappingURL=vault.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/vault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAA;AAEhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAQlC,CAAA"}
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/doctor/checks/vault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAA;AAmBpF,wBAAgB,0BAA0B,CACzC,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,MAAM,EAAE,GACrB,MAAM,IAAI,CAOZ;AAED,uDAAuD;AACvD,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED,eAAO,MAAM,oBAAoB,EAAE,WA0ClC,CAAA"}
@@ -1,28 +1,67 @@
1
1
  /**
2
- * Built-in vault probe is intentionally `skipped`.
2
+ * What this machine can answer about its credentials.
3
3
  *
4
- * `CredentialVault` is an interface, not a globally-discoverable
5
- * registry — consumers instantiate their own (`InMemoryCredentialVault`,
6
- * file-backed, env-backed, KMS-backed, …). The doctor cannot enumerate
7
- * vaults it doesn't know about. To get a real vault healthcheck, the
8
- * consumer registers a custom check via `registerDoctorCheck` that
9
- * exercises their specific vault wiring.
4
+ * This check used to return `skipped` unconditionally, with the message
5
+ * "no vault auto-discovery in v1" — an answer that was the same on every
6
+ * machine, forever, which is the shape `a-check-that-cannot-fail` warns
7
+ * about. It was honest about the world at the time: `CredentialVault` was
8
+ * an interface nobody registered, so there was nothing to enumerate.
10
9
  *
11
- * `skipped`, not `inconclusive`, and the difference is the whole point of the
12
- * split: `inconclusive` means a check tried and could not answer, which is a
13
- * gap in the report and now carries a non-zero exit code. This check has no
14
- * subject to answer about — there is no discovery mechanism to fail — and that
15
- * is true on every machine, permanently, by design. Reporting a permanent
16
- * design decision as an unanswered question would make `namzu doctor` non-zero
17
- * on every healthy machine, and a diagnostic that always complains is one
18
- * nobody reads.
10
+ * There is now. The check reads what the registered providers report and
11
+ * returns `skipped` only when NONE is registered — which is a real state a
12
+ * host can be in, and now the only one that produces it.
19
13
  */
14
+ /** Providers this process knows about. Registered by whoever builds them. */
15
+ const registered = [];
16
+ export function registerCredentialProvider(provider, label, refs) {
17
+ const entry = { provider, label, refs };
18
+ registered.push(entry);
19
+ return () => {
20
+ const i = registered.indexOf(entry);
21
+ if (i >= 0)
22
+ registered.splice(i, 1);
23
+ };
24
+ }
25
+ /** For tests, and for a host rebuilding its wiring. */
26
+ export function clearRegisteredCredentialProviders() {
27
+ registered.length = 0;
28
+ }
20
29
  export const vaultRegisteredCheck = {
21
30
  id: 'vault.registered',
22
31
  category: 'vault',
23
- run: async () => ({
24
- status: 'skipped',
25
- message: 'no vault auto-discovery in v1; register a vault check via registerDoctorCheck for your specific vault setup',
26
- }),
32
+ run: async () => {
33
+ if (registered.length === 0) {
34
+ // `skipped`, not `inconclusive`, and the difference is the whole
35
+ // point of the split: `inconclusive` means a check tried and could
36
+ // not answer, which is a gap in the report and carries a non-zero
37
+ // exit. A host that registered no provider has no subject here,
38
+ // and reporting that as an unanswered question would make
39
+ // `namzu doctor` non-zero on a perfectly healthy machine.
40
+ return {
41
+ status: 'skipped',
42
+ message: 'No credential provider is registered, so there is nothing to report on.',
43
+ };
44
+ }
45
+ const lines = [];
46
+ let anyConfigured = false;
47
+ for (const entry of registered) {
48
+ for (const ref of entry.refs) {
49
+ // `describe`, never `resolve`. This runs in a diagnostic whose
50
+ // output an operator pastes into an issue, and a check that
51
+ // read the value to report on it would be the leak.
52
+ const described = await entry.provider.describe(ref);
53
+ if (described.configured)
54
+ anyConfigured = true;
55
+ lines.push(`${entry.label}: ${ref} — ${described.configured ? 'configured' : 'not set'}${described.source ? ` (${described.source})` : ''}, ${described.writable ? 'writable' : 'read-only'}`);
56
+ }
57
+ }
58
+ return {
59
+ // A provider registered and nothing configured is a real answer,
60
+ // not a failure: an operator who has not logged in yet is in a
61
+ // state the doctor should describe rather than complain about.
62
+ status: anyConfigured ? 'pass' : 'warn',
63
+ message: lines.join('\n'),
64
+ };
65
+ },
27
66
  };
28
67
  //# sourceMappingURL=vault.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/doctor/checks/vault.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAChD,EAAE,EAAE,kBAAkB;IACtB,QAAQ,EAAE,OAAO;IACjB,GAAG,EAAE,KAAK,IAAgC,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,SAAS;QACjB,OAAO,EACN,6GAA6G;KAC9G,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/doctor/checks/vault.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,6EAA6E;AAC7E,MAAM,UAAU,GAA+E,EAAE,CAAA;AAEjG,MAAM,UAAU,0BAA0B,CACzC,QAA4B,EAC5B,KAAa,EACb,IAAuB;IAEvB,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACvC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,OAAO,GAAG,EAAE;QACX,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC,CAAA;AACF,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,kCAAkC;IACjD,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAChD,EAAE,EAAE,kBAAkB;IACtB,QAAQ,EAAE,OAAO;IACjB,GAAG,EAAE,KAAK,IAAgC,EAAE;QAC3C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,iEAAiE;YACjE,mEAAmE;YACnE,kEAAkE;YAClE,gEAAgE;YAChE,0DAA0D;YAC1D,0DAA0D;YAC1D,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,yEAAyE;aAClF,CAAA;QACF,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,aAAa,GAAG,KAAK,CAAA;QACzB,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC9B,+DAA+D;gBAC/D,4DAA4D;gBAC5D,oDAAoD;gBACpD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;gBACpD,IAAI,SAAS,CAAC,UAAU;oBAAE,aAAa,GAAG,IAAI,CAAA;gBAC9C,KAAK,CAAC,IAAI,CACT,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,GAC1E,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAC/C,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CACpD,CAAA;YACF,CAAC;QACF,CAAC;QAED,OAAO;YACN,iEAAiE;YACjE,+DAA+D;YAC/D,+DAA+D;YAC/D,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACvC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACzB,CAAA;IACF,CAAC;CACD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doctor/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EAEX,iBAAiB,EAEjB,YAAY,EAEZ,MAAM,EACN,MAAM,YAAY,CAAA;AAKnB,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,WAAW,CAAC,UAAU,CAAC,EAAE,CAAA;IACxD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACpD;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC9D;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,GAAG,CAAC,CAAQ;IAEpB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IASlC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,SAAS,WAAW,EAAE;IAIxB,GAAG,CAAC,IAAI,GAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAyH/E;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CAQtB;AAED,eAAO,MAAM,MAAM,EAAE,cAAqC,CAAA;AAE1D,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE5D;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAc5E"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doctor/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EAEX,iBAAiB,EAEjB,YAAY,EAEZ,MAAM,EACN,MAAM,YAAY,CAAA;AAMnB,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,WAAW,CAAC,UAAU,CAAC,EAAE,CAAA;IACxD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACpD;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC9D;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,GAAG,CAAC,CAAQ;IAEpB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IASlC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,SAAS,WAAW,EAAE;IAIxB,GAAG,CAAC,IAAI,GAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA4H/E;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CAWtB;AAED,eAAO,MAAM,MAAM,EAAE,cAAqC,CAAA;AAE1D,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAE5D;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAc5E"}
@@ -1,10 +1,11 @@
1
+ import { SCOPE_ATTRIBUTE } from '@namzu/sdk';
1
2
  const DEFAULT_PER_CHECK_TIMEOUT_MS = 5_000;
2
3
  const DEFAULT_WALL_CLOCK_TIMEOUT_MS = 10_000;
3
4
  export class DoctorRegistry {
4
5
  checks = new Map();
5
6
  log;
6
7
  setLogger(log) {
7
- this.log = log.child({ component: 'DoctorRegistry' });
8
+ this.log = log.child({ [SCOPE_ATTRIBUTE]: 'doctor' });
8
9
  }
9
10
  register(check) {
10
11
  if (this.checks.has(check.id)) {
@@ -66,7 +67,10 @@ export class DoctorRegistry {
66
67
  }
67
68
  catch (error) {
68
69
  const message = error instanceof Error ? error.message : String(error);
69
- this.log?.warn('doctor check threw', { id: check.id, message });
70
+ this.log?.warn('doctor check threw', {
71
+ 'namzu.doctor.id': check.id,
72
+ 'namzu.doctor.message': message,
73
+ });
70
74
  result = { status: 'fail', message: `check threw: ${message}` };
71
75
  }
72
76
  recordCompletion({
@@ -87,9 +91,9 @@ export class DoctorRegistry {
87
91
  : `wall-clock timeout (${wall}ms) reached before this check completed`;
88
92
  const unfinished = filteredChecks.filter((c) => !completed.has(c.id));
89
93
  this.log?.warn(raceWinner === 'aborted' ? 'doctor aborted by signal' : 'doctor wall-clock timeout', {
90
- wall,
91
- total: filteredChecks.length,
92
- unfinished: unfinished.length,
94
+ 'namzu.doctor.wall': wall,
95
+ 'namzu.doctor.total': filteredChecks.length,
96
+ 'namzu.doctor.unfinished': unfinished.length,
93
97
  });
94
98
  records = filteredChecks.map((check) => {
95
99
  const existing = completed.get(check.id);
@@ -143,7 +147,10 @@ export class DoctorRegistry {
143
147
  }
144
148
  catch (error) {
145
149
  const message = error instanceof Error ? error.message : String(error);
146
- this.log?.warn('doctor callback threw', { phase, message });
150
+ this.log?.warn('doctor callback threw', {
151
+ 'namzu.doctor.phase': phase,
152
+ 'namzu.doctor.message': message,
153
+ });
147
154
  }
148
155
  }
149
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/doctor/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/doctor/registry.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,4BAA4B,GAAG,KAAK,CAAA;AAC1C,MAAM,6BAA6B,GAAG,MAAM,CAAA;AAmC5C,MAAM,OAAO,cAAc;IACT,MAAM,GAA6B,IAAI,GAAG,EAAE,CAAA;IACrD,GAAG,CAAS;IAEpB,SAAS,CAAC,GAAW;QACpB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,QAAQ,CAAC,KAAkB;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACd,yBAAyB,KAAK,CAAC,EAAE,qEAAqE,CACtG,CAAA;QACF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,UAAU,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,IAAI;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAA2C,EAAE;QACtD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,IAAI,4BAA4B,CAAA;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,IAAI,6BAA6B,CAAA;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAE1B,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU;YACrC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAEd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,SAAS,GAAmC,IAAI,GAAG,EAAE,CAAA;QAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,cAAuB,CAAC,CAAA;QAEjE,sDAAsD;QACtD,MAAM,YAAY,GAAuB,MAAM;YAC9C,CAAC,CAAC,MAAM,CAAC,OAAO;gBACf,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC5B,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACxB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;wBAC1D,IAAI,EAAE,IAAI;qBACV,CAAC,CAAA;gBACH,CAAC,CAAC;YACJ,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA,CAAC,iBAAiB;QAE1C,MAAM,gBAAgB,GAAG,CAAC,MAAyB,EAAQ,EAAE;YAC5D,kEAAkE;YAClE,oEAAoE;YACpE,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,OAAM;YACpC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAChC,mEAAmE;YACnE,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7E,CAAC,CAAA;QAED,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAiB,EAAE;YAClE,oEAAoE;YACpE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAErE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACrB,MAAM,YAAY,GAAG,CAAC,KAAK,IAAgC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;YAC/E,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC1C,GAAsB,EAAE,CAAC,CAAC;gBACzB,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,+BAA+B,QAAQ,IAAI;aACpD,CAAC,CACF,CAAA;YACD,IAAI,MAAyB,CAAA;YAC7B,IAAI,CAAC;gBACJ,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAA;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACtE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE;oBACpC,iBAAiB,EAAE,KAAK,CAAC,EAAE;oBAC3B,sBAAsB,EAAE,OAAO;iBAC/B,CAAC,CAAA;gBACF,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,OAAO,EAAE,EAAE,CAAA;YAChE,CAAC;YACD,gBAAgB,CAAC;gBAChB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;aAChD,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;QAE3E,IAAI,OAA4B,CAAA;QAChC,IAAI,UAAU,KAAK,cAAc,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/D,MAAM,MAAM,GACX,UAAU,KAAK,SAAS;gBACvB,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,uBAAuB,IAAI,yCAAyC,CAAA;YACxE,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACrE,IAAI,CAAC,GAAG,EAAE,IAAI,CACb,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,2BAA2B,EACnF;gBACC,mBAAmB,EAAE,IAAI;gBACzB,oBAAoB,EAAE,cAAc,CAAC,MAAM;gBAC3C,yBAAyB,EAAE,UAAU,CAAC,MAAM;aAC5C,CACD,CAAA;YACD,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAqB,EAAE;gBACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACxC,IAAI,QAAQ;oBAAE,OAAO,QAAQ,CAAA;gBAC7B,MAAM,MAAM,GAAsB;oBACjC,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM,EAAE,cAA8B;oBACtC,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBAClC,CAAA;gBACD,4DAA4D;gBAC5D,2DAA2D;gBAC3D,6DAA6D;gBAC7D,wCAAwC;gBACxC,gBAAgB,CAAC,MAAM,CAAC,CAAA;gBACxB,OAAO,MAAM,CAAA;YACd,CAAC,CAAC,CAAA;QACH,CAAC;aAAM,CAAC;YACP,sEAAsE;YACtE,+DAA+D;YAC/D,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAqB,EAAE;gBACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACxC,IAAI,QAAQ;oBAAE,OAAO,QAAQ,CAAA;gBAC7B,8DAA8D;gBAC9D,gEAAgE;gBAChE,qCAAqC;gBACrC,OAAO;oBACN,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM,EAAE,cAA8B;oBACtC,OAAO,EAAE,sDAAsD;oBAC/D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBAClC,CAAA;YACF,CAAC,CAAC,CAAA;QACH,CAAC;QAED,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,CAAA;IACvD,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,KAAyC,EAAE,EAAc;QAC/E,IAAI,CAAC;YACJ,EAAE,EAAE,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,EAAE;gBACvC,oBAAoB,EAAE,KAAK;gBAC3B,sBAAsB,EAAE,OAAO;aAC/B,CAAC,CAAA;QACH,CAAC;IACF,CAAC;CACD;AAED,MAAM,CAAC,MAAM,MAAM,GAAmB,IAAI,cAAc,EAAE,CAAA;AAE1D,MAAM,UAAU,oBAAoB;IACnC,OAAO,IAAI,cAAc,EAAE,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IACrD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAyB,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAA;IACxC,OAAO,QAAQ,CAAC,GAAG,CAAC;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAwC;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QAC9B,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAC5B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;KACrC,CAAC,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAqC,EAAE,OAAe;IAC1E,MAAM,OAAO,GAAG;QACf,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;QACvD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;QACvD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM;QACvE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;QACvD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QAC7D,KAAK,EAAE,OAAO,CAAC,MAAM;KACrB,CAAA;IACD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,IAAI,GACT,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACnF,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,OAAO;QACf,OAAO;QACP,IAAI;KACJ,CAAC,CAAA;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAC7E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,12 +5,13 @@
5
5
  */
6
6
  export { createDoctorRegistry, doctor, DoctorRegistry, registerDoctorCheck, runDoctor, } from './doctor/registry.js';
7
7
  export type { RunDoctorOptions } from './doctor/registry.js';
8
- export { builtInDoctorChecks, credentialSourcesCheck, cwdWritableCheck, providerChainCheck, providersRegisteredCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
8
+ export { builtInDoctorChecks, computerUseInstalledCheck, credentialSourcesCheck, cwdWritableCheck, filesInstalledCheck, providerChainCheck, providersRegisteredCheck, sandboxInstalledCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
9
+ export { type CapabilityProbe, NAMZU_OPTIONAL_CAPABILITIES, probeCapabilities, probeOptionalPackage, } from './context/capabilities.js';
9
10
  export { runDoctorCommand } from './commands/doctor.js';
10
11
  export { runCli, type RunCliOptions } from './cli.js';
11
12
  export type { CommandContext, CommandDef, CommandHandler, CommandHandlerArgs, } from './commands/types.js';
12
13
  export { registerAll, registerCommand, type RegisterOptions, } from './commands/registry.js';
13
14
  export { createFormatter, type FormatName, type Formatter, type FormatterOptions, isFormatName, } from './output/index.js';
14
- export { ConfigLoadError, loadConfig, type LoadConfigOptions } from './config/load.js';
15
+ export { ConfigLoadError, loadConfig, loadConfigWithProvenance, type ConfigProvenance, type ConfigSource, type LoadConfigOptions, } from './config/load.js';
15
16
  export { DEFAULT_CONFIG, type NamzuCliConfig } from './config/schema.js';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,EACN,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AACrD,YAAY,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACN,WAAW,EACX,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACN,KAAK,eAAe,EACpB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AACrD,YAAY,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACN,WAAW,EACX,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,UAAU,EACV,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -5,12 +5,13 @@
5
5
  */
6
6
  // Doctor library API (pre-M0; preserved for embedded consumers).
7
7
  export { createDoctorRegistry, doctor, DoctorRegistry, registerDoctorCheck, runDoctor, } from './doctor/registry.js';
8
- export { builtInDoctorChecks, credentialSourcesCheck, cwdWritableCheck, providerChainCheck, providersRegisteredCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
8
+ export { builtInDoctorChecks, computerUseInstalledCheck, credentialSourcesCheck, cwdWritableCheck, filesInstalledCheck, providerChainCheck, providersRegisteredCheck, sandboxInstalledCheck, sandboxPlatformCheck, telemetryInstalledCheck, tmpdirWritableCheck, vaultRegisteredCheck, } from './doctor/checks/index.js';
9
+ export { NAMZU_OPTIONAL_CAPABILITIES, probeCapabilities, probeOptionalPackage, } from './context/capabilities.js';
9
10
  export { runDoctorCommand } from './commands/doctor.js';
10
11
  // Shell + extension surface for the CLI.
11
12
  export { runCli } from './cli.js';
12
13
  export { registerAll, registerCommand, } from './commands/registry.js';
13
14
  export { createFormatter, isFormatName, } from './output/index.js';
14
- export { ConfigLoadError, loadConfig } from './config/load.js';
15
+ export { ConfigLoadError, loadConfig, loadConfigWithProvenance, } from './config/load.js';
15
16
  export { DEFAULT_CONFIG } from './config/schema.js';
16
17
  //# 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;;;;GAIG;AAEH,iEAAiE;AACjE,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACN,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,yCAAyC;AACzC,OAAO,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAA;AAOrD,OAAO,EACN,WAAW,EACX,eAAe,GAEf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EAIf,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,eAAe,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iEAAiE;AACjE,OAAO,EACN,oBAAoB,EACpB,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,SAAS,GACT,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAEN,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,yCAAyC;AACzC,OAAO,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAA;AAOrD,OAAO,EACN,WAAW,EACX,eAAe,GAEf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,eAAe,EAIf,YAAY,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,eAAe,EACf,UAAU,EACV,wBAAwB,GAIxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,44 @@
1
+ import type { BlobStore } from '@namzu/files';
2
+ import type { AttachmentStore, StoredBytes } from '@namzu/sdk';
3
+ /**
4
+ * The CLI's attachment store, content-addressed, over a real blob driver.
5
+ *
6
+ * `@namzu/files` shipped six drivers and had no consumer in this repo — a
7
+ * package the estate could import and nothing here could point at. This is
8
+ * the pointing: the local driver, wired to the seam the SDK added for
9
+ * attachments, in the one host that actually attaches things.
10
+ *
11
+ * **Addressed by content AND media type**, not by content alone. The same
12
+ * bytes declared `image/png` once and `application/pdf` later are two
13
+ * different claims about what they are, and the SDK's resolver refuses a
14
+ * ref whose stored media type disagrees with the message. Keying on bytes
15
+ * alone would make the second `put` return the first ref, and every message
16
+ * using it would then be refused — a dedup that manufactures the exact
17
+ * mismatch the resolver exists to catch. Folding the media type into the
18
+ * digest keeps dedup for the common case (the same file attached twice) and
19
+ * gives an honest ref for the uncommon one.
20
+ */
21
+ /** `<home>/.namzu/attachments`, beside the credential store. */
22
+ export declare function attachmentsDir(home?: string): string;
23
+ export interface BlobAttachmentStoreOptions {
24
+ /** Injectable for tests; defaults to the local driver under `~/.namzu`. */
25
+ readonly blobs?: BlobStore;
26
+ readonly home?: string;
27
+ }
28
+ export declare class BlobAttachmentStore implements AttachmentStore {
29
+ private readonly blobs;
30
+ constructor(options?: BlobAttachmentStoreOptions);
31
+ /**
32
+ * The key for these bytes under this media type.
33
+ *
34
+ * Two files rather than one: the bytes, and a sibling holding the media
35
+ * type. The blob store stores bytes and nothing else, and the SDK's
36
+ * resolver needs the store to be able to REPORT what it holds — a store
37
+ * that could only echo back what the caller claimed could never catch a
38
+ * mismatch, which is the check that keeps a PDF from being sent as a PNG.
39
+ */
40
+ private key;
41
+ put(bytes: StoredBytes): Promise<string>;
42
+ get(ref: string): Promise<StoredBytes | undefined>;
43
+ }
44
+ //# sourceMappingURL=attachment-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-store.d.ts","sourceRoot":"","sources":["../../../src/integrations/files/attachment-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE9D;;;;;;;;;;;;;;;;;GAiBG;AAEH,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE/D;AAED,MAAM,WAAW,0BAA0B;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,mBAAoB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;gBAErB,OAAO,GAAE,0BAA+B;IAIpD;;;;;;;;OAQG;IACH,OAAO,CAAC,GAAG;IAOL,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAoBxD"}
@@ -0,0 +1,86 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { LocalFsBlobStore } from '@namzu/files/local';
5
+ /**
6
+ * The CLI's attachment store, content-addressed, over a real blob driver.
7
+ *
8
+ * `@namzu/files` shipped six drivers and had no consumer in this repo — a
9
+ * package the estate could import and nothing here could point at. This is
10
+ * the pointing: the local driver, wired to the seam the SDK added for
11
+ * attachments, in the one host that actually attaches things.
12
+ *
13
+ * **Addressed by content AND media type**, not by content alone. The same
14
+ * bytes declared `image/png` once and `application/pdf` later are two
15
+ * different claims about what they are, and the SDK's resolver refuses a
16
+ * ref whose stored media type disagrees with the message. Keying on bytes
17
+ * alone would make the second `put` return the first ref, and every message
18
+ * using it would then be refused — a dedup that manufactures the exact
19
+ * mismatch the resolver exists to catch. Folding the media type into the
20
+ * digest keeps dedup for the common case (the same file attached twice) and
21
+ * gives an honest ref for the uncommon one.
22
+ */
23
+ /** `<home>/.namzu/attachments`, beside the credential store. */
24
+ export function attachmentsDir(home = homedir()) {
25
+ return join(home, '.namzu', 'attachments');
26
+ }
27
+ export class BlobAttachmentStore {
28
+ blobs;
29
+ constructor(options = {}) {
30
+ this.blobs = options.blobs ?? new LocalFsBlobStore({ root: attachmentsDir(options.home) });
31
+ }
32
+ /**
33
+ * The key for these bytes under this media type.
34
+ *
35
+ * Two files rather than one: the bytes, and a sibling holding the media
36
+ * type. The blob store stores bytes and nothing else, and the SDK's
37
+ * resolver needs the store to be able to REPORT what it holds — a store
38
+ * that could only echo back what the caller claimed could never catch a
39
+ * mismatch, which is the check that keeps a PDF from being sent as a PNG.
40
+ */
41
+ key(mediaType, data) {
42
+ const digest = createHash('sha256').update(mediaType).update('\0').update(data).digest('hex');
43
+ // Two levels, because a flat directory of every attachment a machine
44
+ // has ever seen is a directory nothing enumerates twice.
45
+ return `${digest.slice(0, 2)}/${digest.slice(2)}`;
46
+ }
47
+ async put(bytes) {
48
+ const key = this.key(bytes.mediaType, bytes.data);
49
+ // Written every time rather than checked first. A `get` before every
50
+ // `put` doubles the syscalls to avoid rewriting identical bytes to an
51
+ // identical path, and the write is what makes the ref valid — skipping
52
+ // it on a stale "exists" answer is how a ref points at nothing.
53
+ await this.blobs.put({
54
+ key: `${key}.bin`,
55
+ bytes: Buffer.from(bytes.data, 'base64'),
56
+ mimeType: bytes.mediaType,
57
+ });
58
+ await this.blobs.put({
59
+ key: `${key}.type`,
60
+ bytes: Buffer.from(bytes.mediaType, 'utf-8'),
61
+ mimeType: 'text/plain',
62
+ });
63
+ return key;
64
+ }
65
+ async get(ref) {
66
+ // The blob store validates the key against path traversal, and this
67
+ // passes the caller's ref through unchanged so that check is the one
68
+ // that runs. Sanitising here as well would mean two rules that can
69
+ // disagree, and the weaker one would be the one nobody reads.
70
+ const [blob, type] = await Promise.all([
71
+ this.blobs.get({ provider: 'local-fs', key: `${ref}.bin` }),
72
+ this.blobs.get({ provider: 'local-fs', key: `${ref}.type` }),
73
+ ]);
74
+ if (!blob || !type) {
75
+ // BOTH, or nothing. A ref with bytes and no media type is a
76
+ // half-written attachment, and answering with a guessed type is how
77
+ // a PDF reaches a provider labelled as an image.
78
+ return undefined;
79
+ }
80
+ return {
81
+ data: Buffer.from(blob.bytes).toString('base64'),
82
+ mediaType: Buffer.from(type.bytes).toString('utf-8'),
83
+ };
84
+ }
85
+ }
86
+ //# sourceMappingURL=attachment-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-store.js","sourceRoot":"","sources":["../../../src/integrations/files/attachment-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { CredentialDescription, CredentialProvider, ResolvedCredential } from '@namzu/sdk';
2
+ /**
3
+ * The CLI's hardened credential file, as a writable `CredentialProvider`.
4
+ *
5
+ * The seam had no writable implementation, so `describe()` reported
6
+ * `writable: false` everywhere and nothing could rotate a credential
7
+ * through it — the OAuth refresh wrote straight into this store, invisibly
8
+ * to the kernel.
9
+ *
10
+ * **This adapter adds no file logic of its own.** The store already owns
11
+ * the `wx` open, the `0600`, the read-back that proves the mode landed and
12
+ * the refusal that leaves no file when it did not. Reimplementing any of
13
+ * that here would be a second, weaker copy of a guarantee this repo has a
14
+ * ratified rule about, and the copy is the one that would drift.
15
+ */
16
+ /**
17
+ * The one credential this store holds.
18
+ *
19
+ * A single ref rather than a namespace, because the file has exactly one
20
+ * subscription credential in it. A provider that accepted any name would
21
+ * report `configured: false` for every other one — indistinguishable from
22
+ * "this name is not set here" — while quietly answering only for this one.
23
+ */
24
+ export declare const SUBSCRIPTION_CREDENTIAL_REF = "namzu.subscription.accessToken";
25
+ export interface FileCredentialProviderOptions {
26
+ /** Home directory the store resolves its path under. Injectable for tests. */
27
+ readonly home?: string;
28
+ }
29
+ export declare class FileCredentialProvider implements CredentialProvider {
30
+ private readonly options;
31
+ constructor(options?: FileCredentialProviderOptions);
32
+ private get source();
33
+ private refused;
34
+ resolve(ref: string): Promise<ResolvedCredential | undefined>;
35
+ describe(ref: string): Promise<CredentialDescription>;
36
+ set(ref: string, value: string): Promise<void>;
37
+ unset(ref: string): Promise<void>;
38
+ }
39
+ //# sourceMappingURL=credential-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-provider.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/credential-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAU/F;;;;;;;;;;;;;GAaG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,mCAAmC,CAAA;AAE3E,MAAM,WAAW,6BAA6B;IAC7C,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,sBAAuB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,GAAE,6BAAkC;IAExE,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,CAAC,OAAO;IAST,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAQ7D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAYrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9C,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMvC"}