@haaaiawd/second-nature 0.1.18 → 0.1.20

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 (190) hide show
  1. package/index.js +911 -855
  2. package/openclaw.plugin.json +29 -29
  3. package/package.json +52 -52
  4. package/runtime/cli/commands/index.d.ts +14 -14
  5. package/runtime/cli/commands/index.js +224 -193
  6. package/runtime/cli/explain/explain-surface-subject.d.ts +8 -8
  7. package/runtime/cli/explain/explain-surface-subject.js +9 -9
  8. package/runtime/cli/explain/format-explanation.d.ts +12 -12
  9. package/runtime/cli/explain/format-explanation.js +12 -12
  10. package/runtime/cli/explain/resolve-subject.js +41 -41
  11. package/runtime/cli/host-capability/classify-delivery.d.ts +14 -14
  12. package/runtime/cli/host-capability/classify-delivery.js +20 -20
  13. package/runtime/cli/host-capability/probe-host-capability.d.ts +2 -2
  14. package/runtime/cli/host-capability/probe-host-capability.js +58 -58
  15. package/runtime/cli/host-capability/record-host-capability.d.ts +6 -6
  16. package/runtime/cli/host-capability/record-host-capability.js +14 -14
  17. package/runtime/cli/host-capability/types.d.ts +71 -71
  18. package/runtime/cli/host-capability/types.js +6 -6
  19. package/runtime/cli/host-smoke/run-host-smoke.d.ts +2 -2
  20. package/runtime/cli/host-smoke/run-host-smoke.js +40 -40
  21. package/runtime/cli/host-smoke/types.d.ts +35 -35
  22. package/runtime/cli/host-smoke/types.js +6 -6
  23. package/runtime/cli/index.js +67 -58
  24. package/runtime/cli/ops/heartbeat-surface.d.ts +45 -38
  25. package/runtime/cli/ops/heartbeat-surface.js +79 -73
  26. package/runtime/cli/ops/ops-router.d.ts +32 -19
  27. package/runtime/cli/ops/ops-router.js +188 -89
  28. package/runtime/cli/ops/show-operator-fallback.d.ts +13 -13
  29. package/runtime/cli/ops/show-operator-fallback.js +22 -22
  30. package/runtime/cli/ops/workspace-heartbeat-runner.d.ts +40 -19
  31. package/runtime/cli/ops/workspace-heartbeat-runner.js +93 -39
  32. package/runtime/cli/read-models/index.d.ts +46 -29
  33. package/runtime/cli/read-models/index.js +391 -256
  34. package/runtime/cli/read-models/operator-explain-map.d.ts +6 -6
  35. package/runtime/cli/read-models/operator-explain-map.js +10 -10
  36. package/runtime/cli/read-models/types.d.ts +129 -79
  37. package/runtime/cli/runtime/runtime-artifact-boundary.d.ts +28 -28
  38. package/runtime/cli/runtime/runtime-artifact-boundary.js +94 -94
  39. package/runtime/connectors/base/contract.d.ts +87 -87
  40. package/runtime/connectors/base/execution-policy.d.ts +47 -47
  41. package/runtime/connectors/base/execution-policy.js +82 -82
  42. package/runtime/connectors/base/index.d.ts +8 -8
  43. package/runtime/connectors/base/index.js +8 -8
  44. package/runtime/connectors/base/manifest.d.ts +64 -64
  45. package/runtime/connectors/base/manifest.js +86 -86
  46. package/runtime/connectors/base/map-life-evidence.d.ts +16 -16
  47. package/runtime/connectors/base/map-life-evidence.js +79 -79
  48. package/runtime/connectors/base/policy-layer.d.ts +29 -29
  49. package/runtime/connectors/base/policy-layer.js +198 -198
  50. package/runtime/connectors/base/route-planner.js +99 -99
  51. package/runtime/connectors/index.d.ts +5 -5
  52. package/runtime/connectors/index.js +5 -5
  53. package/runtime/connectors/near-real/near-real-connector-smoke.d.ts +19 -19
  54. package/runtime/connectors/near-real/near-real-connector-smoke.js +152 -152
  55. package/runtime/core/second-nature/heartbeat/heartbeat-executor.js +114 -114
  56. package/runtime/core/second-nature/heartbeat/heartbeat-loop.d.ts +63 -63
  57. package/runtime/core/second-nature/heartbeat/heartbeat-loop.js +162 -139
  58. package/runtime/core/second-nature/heartbeat/index.d.ts +8 -8
  59. package/runtime/core/second-nature/heartbeat/index.js +7 -7
  60. package/runtime/core/second-nature/heartbeat/run-heartbeat-cycle.d.ts +21 -21
  61. package/runtime/core/second-nature/heartbeat/run-heartbeat-cycle.js +35 -35
  62. package/runtime/core/second-nature/heartbeat/runtime-snapshot.d.ts +28 -28
  63. package/runtime/core/second-nature/heartbeat/runtime-snapshot.js +35 -35
  64. package/runtime/core/second-nature/heartbeat/signal.d.ts +42 -42
  65. package/runtime/core/second-nature/heartbeat/snapshot-builder.d.ts +51 -51
  66. package/runtime/core/second-nature/index.d.ts +22 -22
  67. package/runtime/core/second-nature/index.js +22 -22
  68. package/runtime/core/second-nature/orchestrator/effect-dispatcher.d.ts +100 -100
  69. package/runtime/core/second-nature/orchestrator/effect-dispatcher.js +144 -144
  70. package/runtime/core/second-nature/orchestrator/guard-layer.d.ts +8 -8
  71. package/runtime/core/second-nature/orchestrator/guard-layer.js +110 -110
  72. package/runtime/core/second-nature/orchestrator/intent-planner.d.ts +13 -13
  73. package/runtime/core/second-nature/orchestrator/intent-planner.js +199 -199
  74. package/runtime/core/second-nature/orchestrator/lease-manager.d.ts +14 -14
  75. package/runtime/core/second-nature/orchestrator/lease-manager.js +58 -58
  76. package/runtime/core/second-nature/outreach/build-outreach-draft-request.d.ts +6 -6
  77. package/runtime/core/second-nature/outreach/build-outreach-draft-request.js +63 -63
  78. package/runtime/core/second-nature/outreach/delivery-target.d.ts +26 -26
  79. package/runtime/core/second-nature/outreach/delivery-target.js +70 -70
  80. package/runtime/core/second-nature/outreach/dispatch-user-outreach.d.ts +38 -38
  81. package/runtime/core/second-nature/outreach/dispatch-user-outreach.js +119 -119
  82. package/runtime/core/second-nature/outreach/judge-input-from-snapshot.d.ts +7 -7
  83. package/runtime/core/second-nature/outreach/judge-input-from-snapshot.js +45 -45
  84. package/runtime/core/second-nature/outreach/judge-outreach.d.ts +40 -40
  85. package/runtime/core/second-nature/outreach/judge-outreach.js +121 -121
  86. package/runtime/core/second-nature/quiet/run-source-backed-quiet.d.ts +21 -21
  87. package/runtime/core/second-nature/quiet/run-source-backed-quiet.js +123 -123
  88. package/runtime/core/second-nature/rhythm/planner-rhythm-window.d.ts +15 -15
  89. package/runtime/core/second-nature/rhythm/planner-rhythm-window.js +52 -52
  90. package/runtime/core/second-nature/rhythm/policy-bridge.d.ts +19 -19
  91. package/runtime/core/second-nature/rhythm/policy-bridge.js +34 -34
  92. package/runtime/core/second-nature/runtime/service-entry.js +45 -45
  93. package/runtime/core/second-nature/types.d.ts +51 -51
  94. package/runtime/guidance/draft-outreach-message.d.ts +7 -7
  95. package/runtime/guidance/draft-outreach-message.js +42 -42
  96. package/runtime/guidance/evidence-guidance.d.ts +40 -40
  97. package/runtime/guidance/evidence-guidance.js +52 -52
  98. package/runtime/guidance/index.d.ts +11 -11
  99. package/runtime/guidance/index.js +11 -11
  100. package/runtime/guidance/outreach-draft-schema.d.ts +228 -228
  101. package/runtime/guidance/outreach-draft-schema.js +80 -80
  102. package/runtime/observability/audit/append-only-audit-store.d.ts +14 -14
  103. package/runtime/observability/audit/append-only-audit-store.js +21 -21
  104. package/runtime/observability/audit/audit-envelope.d.ts +51 -51
  105. package/runtime/observability/audit/audit-envelope.js +130 -130
  106. package/runtime/observability/audit/verify-audit-hash-chain.d.ts +23 -23
  107. package/runtime/observability/audit/verify-audit-hash-chain.js +83 -83
  108. package/runtime/observability/db/index.js +47 -47
  109. package/runtime/observability/db/schema/host-capability-reports.d.ts +180 -180
  110. package/runtime/observability/db/schema/host-capability-reports.js +12 -12
  111. package/runtime/observability/db/schema/index.d.ts +947 -947
  112. package/runtime/observability/db/schema/index.js +71 -71
  113. package/runtime/observability/index.d.ts +20 -20
  114. package/runtime/observability/index.js +19 -19
  115. package/runtime/observability/query/explain-query.d.ts +48 -48
  116. package/runtime/observability/query/explain-query.js +114 -114
  117. package/runtime/observability/query/export-audit-bundle.d.ts +22 -22
  118. package/runtime/observability/query/export-audit-bundle.js +27 -27
  119. package/runtime/observability/services/decision-ledger.d.ts +46 -46
  120. package/runtime/observability/services/decision-ledger.js +161 -161
  121. package/runtime/observability/services/governance-audit.d.ts +41 -41
  122. package/runtime/observability/services/governance-audit.js +163 -163
  123. package/runtime/observability/services/governance-plane-recorder.d.ts +47 -47
  124. package/runtime/observability/services/governance-plane-recorder.js +55 -55
  125. package/runtime/observability/services/lived-experience-audit.d.ts +97 -97
  126. package/runtime/observability/services/lived-experience-audit.js +162 -162
  127. package/runtime/observability/services/observability-retention.d.ts +10 -0
  128. package/runtime/observability/services/observability-retention.js +37 -0
  129. package/runtime/observability/services/runtime-decision-recorder.d.ts +29 -29
  130. package/runtime/observability/services/runtime-decision-recorder.js +94 -94
  131. package/runtime/storage/bootstrap/native-sqlite-probe.d.ts +7 -7
  132. package/runtime/storage/bootstrap/native-sqlite-probe.js +28 -28
  133. package/runtime/storage/bootstrap/repair-gate.d.ts +17 -17
  134. package/runtime/storage/bootstrap/repair-gate.js +71 -71
  135. package/runtime/storage/bootstrap/storage-mode-smoke.d.ts +38 -38
  136. package/runtime/storage/bootstrap/storage-mode-smoke.js +85 -85
  137. package/runtime/storage/db/index.js +61 -61
  138. package/runtime/storage/db/schema/delivery-attempts.d.ts +199 -199
  139. package/runtime/storage/db/schema/delivery-attempts.js +13 -13
  140. package/runtime/storage/db/schema/index.d.ts +9 -9
  141. package/runtime/storage/db/schema/index.js +9 -9
  142. package/runtime/storage/db/schema/life-evidence-index.d.ts +161 -161
  143. package/runtime/storage/db/schema/life-evidence-index.js +11 -11
  144. package/runtime/storage/db/schema/operator-fallback-artifacts.d.ts +161 -161
  145. package/runtime/storage/db/schema/operator-fallback-artifacts.js +11 -11
  146. package/runtime/storage/db/schema/policies.d.ts +98 -98
  147. package/runtime/storage/db/schema/policies.js +8 -8
  148. package/runtime/storage/delivery/query-delivery-attempts.d.ts +3 -3
  149. package/runtime/storage/delivery/query-delivery-attempts.js +32 -32
  150. package/runtime/storage/delivery/types.d.ts +27 -27
  151. package/runtime/storage/delivery/types.js +1 -1
  152. package/runtime/storage/delivery/write-delivery-attempt.d.ts +6 -6
  153. package/runtime/storage/delivery/write-delivery-attempt.js +36 -36
  154. package/runtime/storage/fallback/load-operator-fallback.d.ts +14 -14
  155. package/runtime/storage/fallback/load-operator-fallback.js +47 -47
  156. package/runtime/storage/fallback/operator-fallback-types.d.ts +9 -9
  157. package/runtime/storage/fallback/operator-fallback-types.js +1 -1
  158. package/runtime/storage/fallback/operator-fallback-view.d.ts +11 -11
  159. package/runtime/storage/fallback/operator-fallback-view.js +1 -1
  160. package/runtime/storage/fallback/write-operator-fallback.d.ts +6 -6
  161. package/runtime/storage/fallback/write-operator-fallback.js +21 -21
  162. package/runtime/storage/index.d.ts +37 -37
  163. package/runtime/storage/index.js +30 -30
  164. package/runtime/storage/life-evidence/append-life-evidence.d.ts +7 -7
  165. package/runtime/storage/life-evidence/append-life-evidence.js +64 -64
  166. package/runtime/storage/life-evidence/types.d.ts +45 -45
  167. package/runtime/storage/life-evidence/types.js +6 -6
  168. package/runtime/storage/quiet/persist-quiet-artifact.d.ts +7 -7
  169. package/runtime/storage/quiet/persist-quiet-artifact.js +22 -22
  170. package/runtime/storage/quiet/quiet-artifact-types.d.ts +18 -18
  171. package/runtime/storage/quiet/quiet-artifact-types.js +1 -1
  172. package/runtime/storage/quiet/quiet-artifact-writer.d.ts +15 -15
  173. package/runtime/storage/quiet/quiet-artifact-writer.js +56 -56
  174. package/runtime/storage/repositories/credential-repository.js +30 -30
  175. package/runtime/storage/rhythm/rhythm-policy-snapshot.d.ts +10 -10
  176. package/runtime/storage/rhythm/rhythm-policy-snapshot.js +34 -34
  177. package/runtime/storage/services/credential-vault.d.ts +13 -13
  178. package/runtime/storage/services/credential-vault.js +116 -116
  179. package/runtime/storage/snapshots/continuity-snapshot.d.ts +9 -9
  180. package/runtime/storage/snapshots/continuity-snapshot.js +41 -41
  181. package/runtime/storage/snapshots/life-evidence-snapshot.d.ts +6 -6
  182. package/runtime/storage/snapshots/life-evidence-snapshot.js +114 -114
  183. package/runtime/storage/snapshots/types.d.ts +58 -58
  184. package/runtime/storage/snapshots/types.js +1 -1
  185. package/runtime/storage/state-api.js +104 -104
  186. package/runtime/storage/user-interest/load-user-interest-snapshot.d.ts +2 -2
  187. package/runtime/storage/user-interest/load-user-interest-snapshot.js +150 -150
  188. package/runtime/storage/user-interest/types.d.ts +25 -25
  189. package/runtime/storage/user-interest/types.js +1 -1
  190. package/workspace-ops-bridge.js +90 -81
@@ -1,51 +1,51 @@
1
- export type TopLevelMode = "active" | "quiet" | "maintenance_only" | "paused_for_interrupt";
2
- /** Control-plane candidate kinds; includes `quiet` for quiet-window–biased intents (L0 alignment). */
3
- export type IntentKind = "work" | "exploration" | "social" | "quiet" | "reflection" | "outreach" | "maintenance";
4
- export type DecisionBasis = "rule_only" | "score_based" | "model_assisted";
5
- export type GuardVerdict = "allow" | "defer" | "deny" | "escalate";
6
- /** Minimal source ref for planner / guards (matches state-system `SourceRef` subset). */
7
- export interface ControlPlaneSourceRef {
8
- id: string;
9
- kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
10
- uri: string;
11
- excerptHash?: string;
12
- observedAt?: string;
13
- }
14
- export interface ContinuitySnapshot {
15
- mode: TopLevelMode;
16
- currentWindowId: string;
17
- pendingObligations: string[];
18
- recentOutreachHashes: string[];
19
- deniedIntents: Array<{
20
- intentHash: string;
21
- reason: string;
22
- at: string;
23
- }>;
24
- budgets?: {
25
- socialUsed: number;
26
- socialLimit: number;
27
- };
28
- awaitingUserInput?: boolean;
29
- riskSuppressed?: boolean;
30
- }
31
- export type CandidateEffectClass = "external_platform_action" | "connector_action" | "memory_curation" | "narrative_reflection" | "user_outreach" | "maintenance" | "no_effect";
32
- export interface CandidateIntent {
33
- id: string;
34
- kind: IntentKind;
35
- priority: number;
36
- source: "tick" | "interrupt" | "obligation" | "quiet_plan";
37
- platformId?: string;
38
- summary: string;
39
- effectClass: CandidateEffectClass;
40
- /** Required for source-backed guard; may be empty when planner expects hard-guard deny. */
41
- sourceRefs: ControlPlaneSourceRef[];
42
- /** Dedupe / cooldown key; defaults to stable fingerprint in guard layer when omitted. */
43
- idempotencyKey?: string;
44
- }
45
- export interface GuardEvaluation {
46
- verdict: GuardVerdict;
47
- reasons: string[];
48
- quietSuppressed: boolean;
49
- leaseRequired: boolean;
50
- requiresCheckpoint: boolean;
51
- }
1
+ export type TopLevelMode = "active" | "quiet" | "maintenance_only" | "paused_for_interrupt";
2
+ /** Control-plane candidate kinds; includes `quiet` for quiet-window–biased intents (L0 alignment). */
3
+ export type IntentKind = "work" | "exploration" | "social" | "quiet" | "reflection" | "outreach" | "maintenance";
4
+ export type DecisionBasis = "rule_only" | "score_based" | "model_assisted";
5
+ export type GuardVerdict = "allow" | "defer" | "deny" | "escalate";
6
+ /** Minimal source ref for planner / guards (matches state-system `SourceRef` subset). */
7
+ export interface ControlPlaneSourceRef {
8
+ id: string;
9
+ kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
10
+ uri: string;
11
+ excerptHash?: string;
12
+ observedAt?: string;
13
+ }
14
+ export interface ContinuitySnapshot {
15
+ mode: TopLevelMode;
16
+ currentWindowId: string;
17
+ pendingObligations: string[];
18
+ recentOutreachHashes: string[];
19
+ deniedIntents: Array<{
20
+ intentHash: string;
21
+ reason: string;
22
+ at: string;
23
+ }>;
24
+ budgets?: {
25
+ socialUsed: number;
26
+ socialLimit: number;
27
+ };
28
+ awaitingUserInput?: boolean;
29
+ riskSuppressed?: boolean;
30
+ }
31
+ export type CandidateEffectClass = "external_platform_action" | "connector_action" | "memory_curation" | "narrative_reflection" | "user_outreach" | "maintenance" | "no_effect";
32
+ export interface CandidateIntent {
33
+ id: string;
34
+ kind: IntentKind;
35
+ priority: number;
36
+ source: "tick" | "interrupt" | "obligation" | "quiet_plan";
37
+ platformId?: string;
38
+ summary: string;
39
+ effectClass: CandidateEffectClass;
40
+ /** Required for source-backed guard; may be empty when planner expects hard-guard deny. */
41
+ sourceRefs: ControlPlaneSourceRef[];
42
+ /** Dedupe / cooldown key; defaults to stable fingerprint in guard layer when omitted. */
43
+ idempotencyKey?: string;
44
+ }
45
+ export interface GuardEvaluation {
46
+ verdict: GuardVerdict;
47
+ reasons: string[];
48
+ quietSuppressed: boolean;
49
+ leaseRequired: boolean;
50
+ requiresCheckpoint: boolean;
51
+ }
@@ -1,7 +1,7 @@
1
- /**
2
- * Deterministic GuidanceDraftPort implementation for contract tests and packaged runtime.
3
- * Does not claim user-visible delivery when wordingMode is not_sent_fallback_candidate (T6.2.1 / ADR-004).
4
- */
5
- import { type GuidanceDraftPort, type OutreachDraftRequest } from "./outreach-draft-schema.js";
6
- export declare function draftOutreachMessage(request: OutreachDraftRequest): ReturnType<GuidanceDraftPort["draftOutreachMessage"]>;
7
- export declare function createDraftOutreachMessagePort(): GuidanceDraftPort;
1
+ /**
2
+ * Deterministic GuidanceDraftPort implementation for contract tests and packaged runtime.
3
+ * Does not claim user-visible delivery when wordingMode is not_sent_fallback_candidate (T6.2.1 / ADR-004).
4
+ */
5
+ import { type GuidanceDraftPort, type OutreachDraftRequest } from "./outreach-draft-schema.js";
6
+ export declare function draftOutreachMessage(request: OutreachDraftRequest): ReturnType<GuidanceDraftPort["draftOutreachMessage"]>;
7
+ export declare function createDraftOutreachMessagePort(): GuidanceDraftPort;
@@ -1,42 +1,42 @@
1
- /**
2
- * Deterministic GuidanceDraftPort implementation for contract tests and packaged runtime.
3
- * Does not claim user-visible delivery when wordingMode is not_sent_fallback_candidate (T6.2.1 / ADR-004).
4
- */
5
- import { safeParseOutreachDraftRequest } from "./outreach-draft-schema.js";
6
- function baseDraftText(request) {
7
- const ids = request.sourceRefs.map((s) => s.id).join(",");
8
- return `draft:${request.candidateId}:grounded:${ids}`;
9
- }
10
- export async function draftOutreachMessage(request) {
11
- const parsed = safeParseOutreachDraftRequest(request);
12
- if (!parsed.success) {
13
- return { status: "unavailable", reasons: ["outreach_draft_schema_invalid"] };
14
- }
15
- const r = parsed.data;
16
- if (r.judgmentVerdict !== "allow") {
17
- return { status: "unavailable", reasons: ["hard_decision_not_allow"] };
18
- }
19
- if (r.sourceRefs.length === 0) {
20
- return { status: "unavailable", reasons: ["missing_resolved_source_refs"] };
21
- }
22
- const wording = r.deliveryContext.wordingMode;
23
- if (wording === "sendable") {
24
- return {
25
- status: "ready",
26
- draft: {
27
- text: `${baseDraftText(r)};wording=sendable`,
28
- deliveryWording: "sendable",
29
- },
30
- };
31
- }
32
- return {
33
- status: "ready",
34
- draft: {
35
- text: `Not sent to the user (candidate only). Delivery state: ${r.deliveryContext.deliveryVerdict}. ${baseDraftText(r)}`,
36
- deliveryWording: "not_sent_fallback_candidate",
37
- },
38
- };
39
- }
40
- export function createDraftOutreachMessagePort() {
41
- return { draftOutreachMessage };
42
- }
1
+ /**
2
+ * Deterministic GuidanceDraftPort implementation for contract tests and packaged runtime.
3
+ * Does not claim user-visible delivery when wordingMode is not_sent_fallback_candidate (T6.2.1 / ADR-004).
4
+ */
5
+ import { safeParseOutreachDraftRequest } from "./outreach-draft-schema.js";
6
+ function baseDraftText(request) {
7
+ const ids = request.sourceRefs.map((s) => s.id).join(",");
8
+ return `draft:${request.candidateId}:grounded:${ids}`;
9
+ }
10
+ export async function draftOutreachMessage(request) {
11
+ const parsed = safeParseOutreachDraftRequest(request);
12
+ if (!parsed.success) {
13
+ return { status: "unavailable", reasons: ["outreach_draft_schema_invalid"] };
14
+ }
15
+ const r = parsed.data;
16
+ if (r.judgmentVerdict !== "allow") {
17
+ return { status: "unavailable", reasons: ["hard_decision_not_allow"] };
18
+ }
19
+ if (r.sourceRefs.length === 0) {
20
+ return { status: "unavailable", reasons: ["missing_resolved_source_refs"] };
21
+ }
22
+ const wording = r.deliveryContext.wordingMode;
23
+ if (wording === "sendable") {
24
+ return {
25
+ status: "ready",
26
+ draft: {
27
+ text: `${baseDraftText(r)};wording=sendable`,
28
+ deliveryWording: "sendable",
29
+ },
30
+ };
31
+ }
32
+ return {
33
+ status: "ready",
34
+ draft: {
35
+ text: `Not sent to the user (candidate only). Delivery state: ${r.deliveryContext.deliveryVerdict}. ${baseDraftText(r)}`,
36
+ deliveryWording: "not_sent_fallback_candidate",
37
+ },
38
+ };
39
+ }
40
+ export function createDraftOutreachMessagePort() {
41
+ return { draftOutreachMessage };
42
+ }
@@ -1,40 +1,40 @@
1
- /**
2
- * Evidence pack assembly, interest-basis selection, and Quiet narrative gate (T6.1.2 / ADR-004).
3
- * Guidance does not own delivery or judgment; callers pass already-resolved refs.
4
- */
5
- import type { GuidanceSourceRef } from "./outreach-draft-schema.js";
6
- import type { UserInterestStaleness } from "../storage/user-interest/types.js";
7
- import type { SourceCoverage } from "../storage/snapshots/types.js";
8
- export type SourceCoveragePolicy = "strict" | "lenient";
9
- export interface EvidencePack {
10
- groundedRefs: GuidanceSourceRef[];
11
- unresolvedIds: string[];
12
- sensitiveBlocked: boolean;
13
- policy: SourceCoveragePolicy;
14
- }
15
- export declare function buildEvidencePack(refs: GuidanceSourceRef[], opts?: {
16
- policy?: SourceCoveragePolicy;
17
- }): {
18
- ok: true;
19
- pack: EvidencePack;
20
- } | {
21
- ok: false;
22
- reasons: string[];
23
- };
24
- export type InterestBasisMode = "evidence_only" | "interest_augmented" | "unavailable";
25
- export declare function selectInterestBasis(input: {
26
- staleness: UserInterestStaleness;
27
- confidence: number;
28
- signalCount: number;
29
- }): InterestBasisMode;
30
- export declare function buildQuietNarrativeGuidance(input: {
31
- interestBasis: InterestBasisMode;
32
- sourceCoverage: Pick<SourceCoverage, "coverageRatio" | "unsupportedClaims">;
33
- outline: string[];
34
- }): {
35
- status: "ready";
36
- hints: string[];
37
- } | {
38
- status: "unavailable";
39
- reasons: string[];
40
- };
1
+ /**
2
+ * Evidence pack assembly, interest-basis selection, and Quiet narrative gate (T6.1.2 / ADR-004).
3
+ * Guidance does not own delivery or judgment; callers pass already-resolved refs.
4
+ */
5
+ import type { GuidanceSourceRef } from "./outreach-draft-schema.js";
6
+ import type { UserInterestStaleness } from "../storage/user-interest/types.js";
7
+ import type { SourceCoverage } from "../storage/snapshots/types.js";
8
+ export type SourceCoveragePolicy = "strict" | "lenient";
9
+ export interface EvidencePack {
10
+ groundedRefs: GuidanceSourceRef[];
11
+ unresolvedIds: string[];
12
+ sensitiveBlocked: boolean;
13
+ policy: SourceCoveragePolicy;
14
+ }
15
+ export declare function buildEvidencePack(refs: GuidanceSourceRef[], opts?: {
16
+ policy?: SourceCoveragePolicy;
17
+ }): {
18
+ ok: true;
19
+ pack: EvidencePack;
20
+ } | {
21
+ ok: false;
22
+ reasons: string[];
23
+ };
24
+ export type InterestBasisMode = "evidence_only" | "interest_augmented" | "unavailable";
25
+ export declare function selectInterestBasis(input: {
26
+ staleness: UserInterestStaleness;
27
+ confidence: number;
28
+ signalCount: number;
29
+ }): InterestBasisMode;
30
+ export declare function buildQuietNarrativeGuidance(input: {
31
+ interestBasis: InterestBasisMode;
32
+ sourceCoverage: Pick<SourceCoverage, "coverageRatio" | "unsupportedClaims">;
33
+ outline: string[];
34
+ }): {
35
+ status: "ready";
36
+ hints: string[];
37
+ } | {
38
+ status: "unavailable";
39
+ reasons: string[];
40
+ };
@@ -1,52 +1,52 @@
1
- export function buildEvidencePack(refs, opts) {
2
- const policy = opts?.policy ?? "strict";
3
- const unresolvedIds = [];
4
- let sensitiveBlocked = false;
5
- const grounded = [];
6
- for (const r of refs) {
7
- if (!r.uri?.trim()) {
8
- unresolvedIds.push(r.id);
9
- continue;
10
- }
11
- if (r.uri.includes("credential") || r.uri.includes("secret")) {
12
- sensitiveBlocked = true;
13
- continue;
14
- }
15
- grounded.push(r);
16
- }
17
- if (policy === "strict" && unresolvedIds.length > 0) {
18
- return { ok: false, reasons: ["unresolved_source_refs", ...unresolvedIds.slice(0, 3)] };
19
- }
20
- return {
21
- ok: true,
22
- pack: {
23
- groundedRefs: grounded,
24
- unresolvedIds,
25
- sensitiveBlocked,
26
- policy,
27
- },
28
- };
29
- }
30
- export function selectInterestBasis(input) {
31
- if (input.staleness === "insufficient" || input.confidence < 0.15) {
32
- return input.signalCount > 0 ? "evidence_only" : "unavailable";
33
- }
34
- if (input.staleness === "stale") {
35
- return "evidence_only";
36
- }
37
- return "interest_augmented";
38
- }
39
- export function buildQuietNarrativeGuidance(input) {
40
- if (input.interestBasis === "unavailable" && input.sourceCoverage.coverageRatio < 0.25) {
41
- return { status: "unavailable", reasons: ["quiet_guidance_insufficient_interest_and_coverage"] };
42
- }
43
- if (input.sourceCoverage.unsupportedClaims.length > 0) {
44
- return { status: "unavailable", reasons: ["quiet_guidance_unsupported_claims"] };
45
- }
46
- const hints = [
47
- ...input.outline.slice(0, 3).map((line) => `hint:${line}`),
48
- `basis:${input.interestBasis}`,
49
- `coverage:${input.sourceCoverage.coverageRatio.toFixed(2)}`,
50
- ];
51
- return { status: "ready", hints };
52
- }
1
+ export function buildEvidencePack(refs, opts) {
2
+ const policy = opts?.policy ?? "strict";
3
+ const unresolvedIds = [];
4
+ let sensitiveBlocked = false;
5
+ const grounded = [];
6
+ for (const r of refs) {
7
+ if (!r.uri?.trim()) {
8
+ unresolvedIds.push(r.id);
9
+ continue;
10
+ }
11
+ if (r.uri.includes("credential") || r.uri.includes("secret")) {
12
+ sensitiveBlocked = true;
13
+ continue;
14
+ }
15
+ grounded.push(r);
16
+ }
17
+ if (policy === "strict" && unresolvedIds.length > 0) {
18
+ return { ok: false, reasons: ["unresolved_source_refs", ...unresolvedIds.slice(0, 3)] };
19
+ }
20
+ return {
21
+ ok: true,
22
+ pack: {
23
+ groundedRefs: grounded,
24
+ unresolvedIds,
25
+ sensitiveBlocked,
26
+ policy,
27
+ },
28
+ };
29
+ }
30
+ export function selectInterestBasis(input) {
31
+ if (input.staleness === "insufficient" || input.confidence < 0.15) {
32
+ return input.signalCount > 0 ? "evidence_only" : "unavailable";
33
+ }
34
+ if (input.staleness === "stale") {
35
+ return "evidence_only";
36
+ }
37
+ return "interest_augmented";
38
+ }
39
+ export function buildQuietNarrativeGuidance(input) {
40
+ if (input.interestBasis === "unavailable" && input.sourceCoverage.coverageRatio < 0.25) {
41
+ return { status: "unavailable", reasons: ["quiet_guidance_insufficient_interest_and_coverage"] };
42
+ }
43
+ if (input.sourceCoverage.unsupportedClaims.length > 0) {
44
+ return { status: "unavailable", reasons: ["quiet_guidance_unsupported_claims"] };
45
+ }
46
+ const hints = [
47
+ ...input.outline.slice(0, 3).map((line) => `hint:${line}`),
48
+ `basis:${input.interestBasis}`,
49
+ `coverage:${input.sourceCoverage.coverageRatio.toFixed(2)}`,
50
+ ];
51
+ return { status: "ready", hints };
52
+ }
@@ -1,11 +1,11 @@
1
- export * from "./types.js";
2
- export * from "./contracts.js";
3
- export * from "./persona-selection.js";
4
- export * from "./output-guard.js";
5
- export * from "./fallback.js";
6
- export * from "./template-registry.js";
7
- export * from "./review-workflow.js";
8
- export * from "./guidance-assembler.js";
9
- export * from "./outreach-draft-schema.js";
10
- export * from "./draft-outreach-message.js";
11
- export * from "./evidence-guidance.js";
1
+ export * from "./types.js";
2
+ export * from "./contracts.js";
3
+ export * from "./persona-selection.js";
4
+ export * from "./output-guard.js";
5
+ export * from "./fallback.js";
6
+ export * from "./template-registry.js";
7
+ export * from "./review-workflow.js";
8
+ export * from "./guidance-assembler.js";
9
+ export * from "./outreach-draft-schema.js";
10
+ export * from "./draft-outreach-message.js";
11
+ export * from "./evidence-guidance.js";
@@ -1,11 +1,11 @@
1
- export * from "./types.js";
2
- export * from "./contracts.js";
3
- export * from "./persona-selection.js";
4
- export * from "./output-guard.js";
5
- export * from "./fallback.js";
6
- export * from "./template-registry.js";
7
- export * from "./review-workflow.js";
8
- export * from "./guidance-assembler.js";
9
- export * from "./outreach-draft-schema.js";
10
- export * from "./draft-outreach-message.js";
11
- export * from "./evidence-guidance.js";
1
+ export * from "./types.js";
2
+ export * from "./contracts.js";
3
+ export * from "./persona-selection.js";
4
+ export * from "./output-guard.js";
5
+ export * from "./fallback.js";
6
+ export * from "./template-registry.js";
7
+ export * from "./review-workflow.js";
8
+ export * from "./guidance-assembler.js";
9
+ export * from "./outreach-draft-schema.js";
10
+ export * from "./draft-outreach-message.js";
11
+ export * from "./evidence-guidance.js";