@telora/daemon 0.19.82 → 0.19.91

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 (42) hide show
  1. package/build-info.json +2 -2
  2. package/dist/cli/session-state.d.ts +26 -0
  3. package/dist/cli/session-state.d.ts.map +1 -1
  4. package/dist/cli/session-state.js +53 -2
  5. package/dist/cli/session-state.js.map +1 -1
  6. package/dist/cli/verify-setup-config.d.ts +58 -0
  7. package/dist/cli/verify-setup-config.d.ts.map +1 -0
  8. package/dist/cli/verify-setup-config.js +105 -0
  9. package/dist/cli/verify-setup-config.js.map +1 -0
  10. package/dist/cli/verify-setup.d.ts +96 -0
  11. package/dist/cli/verify-setup.d.ts.map +1 -0
  12. package/dist/cli/verify-setup.js +175 -0
  13. package/dist/cli/verify-setup.js.map +1 -0
  14. package/dist/config.d.ts +29 -1
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +79 -23
  17. package/dist/config.js.map +1 -1
  18. package/dist/heartbeat.d.ts.map +1 -1
  19. package/dist/heartbeat.js +6 -0
  20. package/dist/heartbeat.js.map +1 -1
  21. package/dist/index.js +33 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/types/config.d.ts +35 -1
  24. package/dist/types/config.d.ts.map +1 -1
  25. package/dist/unified-engine-lifecycle.d.ts.map +1 -1
  26. package/dist/unified-engine-lifecycle.js +14 -2
  27. package/dist/unified-engine-lifecycle.js.map +1 -1
  28. package/dist/unified-init.d.ts.map +1 -1
  29. package/dist/unified-init.js +21 -1
  30. package/dist/unified-init.js.map +1 -1
  31. package/dist/unified-shell-status.d.ts +11 -0
  32. package/dist/unified-shell-status.d.ts.map +1 -1
  33. package/dist/unified-shell-status.js +30 -0
  34. package/dist/unified-shell-status.js.map +1 -1
  35. package/dist/unified-shell.d.ts.map +1 -1
  36. package/dist/unified-shell.js +13 -1
  37. package/dist/unified-shell.js.map +1 -1
  38. package/dist/verification-config.d.ts +45 -1
  39. package/dist/verification-config.d.ts.map +1 -1
  40. package/dist/verification-config.js +41 -0
  41. package/dist/verification-config.js.map +1 -1
  42. package/package.json +1 -1
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * @module verification-config
22
22
  */
23
- import type { DaemonConfig } from './types.js';
23
+ import type { DaemonConfig, DefaultVerificationConfig } from './types.js';
24
24
  /** Default timeout for the default-on deterministic run: 30 min (full build+test sweep). */
25
25
  export declare const DEFAULT_VERIFY_TIMEOUT_MS: number;
26
26
  /** Default max concurrent daemon-side verification runs. */
@@ -50,4 +50,48 @@ export interface ResolvedDefaultVerification {
50
50
  * failing the tick.
51
51
  */
52
52
  export declare function resolveDefaultVerification(config: Pick<DaemonConfig, 'defaultVerification'>, env?: NodeJS.ProcessEnv): ResolvedDefaultVerification;
53
+ /**
54
+ * Declarative verification posture, derived at read time from config (never a
55
+ * filed event, so it cannot spam and self-clears once configured):
56
+ * - `configured` -- a non-empty verification command resolves (env or file).
57
+ * - `declined` -- no command resolves AND an explicit review-only decline
58
+ * marker is recorded. Deliveries gate on AI review only,
59
+ * by deliberate decision (not a gap).
60
+ * - `unconfigured` -- no command resolves and no decline recorded. Deliveries
61
+ * gate on AI review only because setup is incomplete.
62
+ */
63
+ export type VerificationPosture = 'configured' | 'declined' | 'unconfigured';
64
+ /**
65
+ * Derive the verification posture for one (product-scoped) config.
66
+ *
67
+ * Pure w.r.t. its inputs (env is injectable for tests) and free of any
68
+ * escalation/side-effect path -- posture is declarative state, surfaced on
69
+ * ambient read surfaces, never a filed escalation. Callers pass a product-scoped
70
+ * config (from `configForProduct`) so `config.defaultVerification` is already the
71
+ * selected per-product-or-global block.
72
+ *
73
+ * An explicitly resolved command wins over the decline marker: an operator who
74
+ * sets a command (via env or file) has configured verification regardless of a
75
+ * stale `declined` flag.
76
+ */
77
+ export declare function deriveVerificationPosture(config: Pick<DaemonConfig, 'defaultVerification'>, env?: NodeJS.ProcessEnv): VerificationPosture;
78
+ /** Structured posture for one product, published for app consumption. */
79
+ export interface ProductVerificationPosture {
80
+ posture: VerificationPosture;
81
+ /** The resolved command; empty string unless posture is `configured`. */
82
+ command: string;
83
+ /** The resolved timeout (ms) for the command; meaningful when `configured`. */
84
+ timeoutMs: number;
85
+ }
86
+ /**
87
+ * Build a `{ [productId]: { posture, command } }` map across products, applying
88
+ * the per-product-override-else-global fallback (mirrors configForProduct) and
89
+ * the global env command. Pure; the structured counterpart of
90
+ * formatVerificationPostureLines, used to PUBLISH posture (e.g. in the daemon
91
+ * heartbeat metadata) for the web app to read. Never files an escalation.
92
+ */
93
+ export declare function buildProductPostureMap(products: ReadonlyArray<{
94
+ id: string;
95
+ defaultVerification?: DefaultVerificationConfig;
96
+ }>, globalBlock: DefaultVerificationConfig | undefined, env?: NodeJS.ProcessEnv): Record<string, ProductVerificationPosture>;
53
97
  //# sourceMappingURL=verification-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification-config.d.ts","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,4DAA4D;AAC5D,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,2DAA2D;AAC3D,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAcD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,EACjD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,2BAA2B,CAyB7B"}
1
+ {"version":3,"file":"verification-config.d.ts","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE1E,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,4DAA4D;AAC5D,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,2DAA2D;AAC3D,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAcD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,EACjD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,2BAA2B,CAyB7B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,EACjD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,mBAAmB,CAKrB;AAED,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,yBAAyB,CAAA;CAAE,CAAC,EACxF,WAAW,EAAE,yBAAyB,GAAG,SAAS,EAClD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAY5C"}
@@ -69,4 +69,45 @@ export function resolveDefaultVerification(config, env = process.env) {
69
69
  enabled: command.trim().length > 0,
70
70
  };
71
71
  }
72
+ /**
73
+ * Derive the verification posture for one (product-scoped) config.
74
+ *
75
+ * Pure w.r.t. its inputs (env is injectable for tests) and free of any
76
+ * escalation/side-effect path -- posture is declarative state, surfaced on
77
+ * ambient read surfaces, never a filed escalation. Callers pass a product-scoped
78
+ * config (from `configForProduct`) so `config.defaultVerification` is already the
79
+ * selected per-product-or-global block.
80
+ *
81
+ * An explicitly resolved command wins over the decline marker: an operator who
82
+ * sets a command (via env or file) has configured verification regardless of a
83
+ * stale `declined` flag.
84
+ */
85
+ export function deriveVerificationPosture(config, env = process.env) {
86
+ const resolved = resolveDefaultVerification(config, env);
87
+ if (resolved.enabled)
88
+ return 'configured';
89
+ if (config.defaultVerification?.declined === true)
90
+ return 'declined';
91
+ return 'unconfigured';
92
+ }
93
+ /**
94
+ * Build a `{ [productId]: { posture, command } }` map across products, applying
95
+ * the per-product-override-else-global fallback (mirrors configForProduct) and
96
+ * the global env command. Pure; the structured counterpart of
97
+ * formatVerificationPostureLines, used to PUBLISH posture (e.g. in the daemon
98
+ * heartbeat metadata) for the web app to read. Never files an escalation.
99
+ */
100
+ export function buildProductPostureMap(products, globalBlock, env = process.env) {
101
+ const map = {};
102
+ for (const p of products) {
103
+ const scoped = { defaultVerification: p.defaultVerification ?? globalBlock };
104
+ const resolved = resolveDefaultVerification(scoped, env);
105
+ map[p.id] = {
106
+ posture: deriveVerificationPosture(scoped, env),
107
+ command: resolved.command,
108
+ timeoutMs: resolved.timeoutMs,
109
+ };
110
+ }
111
+ return map;
112
+ }
72
113
  //# sourceMappingURL=verification-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification-config.js","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,4FAA4F;AAC5F,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,+BAA+B;IACxC,UAAU,EAAE,kCAAkC;IAC9C,cAAc,EAAE,sCAAsC;CAC9C,CAAC;AAcX;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAuB;IAC7C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAiD,EACjD,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAExC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,OAAO,GACX,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;QAClD,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9D,MAAM,SAAS,GACb,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;WACvC,CAAC,OAAO,IAAI,EAAE,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;WACxF,yBAAyB,CAAC;IAE/B,MAAM,aAAa,GACjB,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;WAC3C,CAAC,OAAO,IAAI,EAAE,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;WACpG,6BAA6B,CAAC;IAEnC,OAAO;QACL,OAAO;QACP,SAAS;QACT,aAAa;QACb,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"verification-config.js","sourceRoot":"","sources":["../src/verification-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/daemon",
3
- "version": "0.19.82",
3
+ "version": "0.19.91",
4
4
  "description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
5
5
  "type": "module",
6
6
  "bin": {