@haaaiawd/second-nature 0.1.18 → 0.1.19

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 (188) hide show
  1. package/index.js +855 -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 +193 -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 +65 -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 +26 -19
  27. package/runtime/cli/ops/ops-router.js +102 -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 +35 -29
  33. package/runtime/cli/read-models/index.js +365 -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 +112 -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/runtime-decision-recorder.d.ts +29 -29
  128. package/runtime/observability/services/runtime-decision-recorder.js +94 -94
  129. package/runtime/storage/bootstrap/native-sqlite-probe.d.ts +7 -7
  130. package/runtime/storage/bootstrap/native-sqlite-probe.js +28 -28
  131. package/runtime/storage/bootstrap/repair-gate.d.ts +17 -17
  132. package/runtime/storage/bootstrap/repair-gate.js +71 -71
  133. package/runtime/storage/bootstrap/storage-mode-smoke.d.ts +38 -38
  134. package/runtime/storage/bootstrap/storage-mode-smoke.js +85 -85
  135. package/runtime/storage/db/index.js +61 -61
  136. package/runtime/storage/db/schema/delivery-attempts.d.ts +199 -199
  137. package/runtime/storage/db/schema/delivery-attempts.js +13 -13
  138. package/runtime/storage/db/schema/index.d.ts +9 -9
  139. package/runtime/storage/db/schema/index.js +9 -9
  140. package/runtime/storage/db/schema/life-evidence-index.d.ts +161 -161
  141. package/runtime/storage/db/schema/life-evidence-index.js +11 -11
  142. package/runtime/storage/db/schema/operator-fallback-artifacts.d.ts +161 -161
  143. package/runtime/storage/db/schema/operator-fallback-artifacts.js +11 -11
  144. package/runtime/storage/db/schema/policies.d.ts +98 -98
  145. package/runtime/storage/db/schema/policies.js +8 -8
  146. package/runtime/storage/delivery/query-delivery-attempts.d.ts +3 -3
  147. package/runtime/storage/delivery/query-delivery-attempts.js +32 -32
  148. package/runtime/storage/delivery/types.d.ts +27 -27
  149. package/runtime/storage/delivery/types.js +1 -1
  150. package/runtime/storage/delivery/write-delivery-attempt.d.ts +6 -6
  151. package/runtime/storage/delivery/write-delivery-attempt.js +36 -36
  152. package/runtime/storage/fallback/load-operator-fallback.d.ts +14 -14
  153. package/runtime/storage/fallback/load-operator-fallback.js +47 -47
  154. package/runtime/storage/fallback/operator-fallback-types.d.ts +9 -9
  155. package/runtime/storage/fallback/operator-fallback-types.js +1 -1
  156. package/runtime/storage/fallback/operator-fallback-view.d.ts +11 -11
  157. package/runtime/storage/fallback/operator-fallback-view.js +1 -1
  158. package/runtime/storage/fallback/write-operator-fallback.d.ts +6 -6
  159. package/runtime/storage/fallback/write-operator-fallback.js +21 -21
  160. package/runtime/storage/index.d.ts +37 -37
  161. package/runtime/storage/index.js +30 -30
  162. package/runtime/storage/life-evidence/append-life-evidence.d.ts +7 -7
  163. package/runtime/storage/life-evidence/append-life-evidence.js +64 -64
  164. package/runtime/storage/life-evidence/types.d.ts +45 -45
  165. package/runtime/storage/life-evidence/types.js +6 -6
  166. package/runtime/storage/quiet/persist-quiet-artifact.d.ts +7 -7
  167. package/runtime/storage/quiet/persist-quiet-artifact.js +22 -22
  168. package/runtime/storage/quiet/quiet-artifact-types.d.ts +18 -18
  169. package/runtime/storage/quiet/quiet-artifact-types.js +1 -1
  170. package/runtime/storage/quiet/quiet-artifact-writer.d.ts +15 -15
  171. package/runtime/storage/quiet/quiet-artifact-writer.js +56 -56
  172. package/runtime/storage/repositories/credential-repository.js +30 -30
  173. package/runtime/storage/rhythm/rhythm-policy-snapshot.d.ts +10 -10
  174. package/runtime/storage/rhythm/rhythm-policy-snapshot.js +34 -34
  175. package/runtime/storage/services/credential-vault.d.ts +13 -13
  176. package/runtime/storage/services/credential-vault.js +116 -116
  177. package/runtime/storage/snapshots/continuity-snapshot.d.ts +9 -9
  178. package/runtime/storage/snapshots/continuity-snapshot.js +41 -41
  179. package/runtime/storage/snapshots/life-evidence-snapshot.d.ts +6 -6
  180. package/runtime/storage/snapshots/life-evidence-snapshot.js +114 -114
  181. package/runtime/storage/snapshots/types.d.ts +58 -58
  182. package/runtime/storage/snapshots/types.js +1 -1
  183. package/runtime/storage/state-api.js +104 -104
  184. package/runtime/storage/user-interest/load-user-interest-snapshot.d.ts +2 -2
  185. package/runtime/storage/user-interest/load-user-interest-snapshot.js +150 -150
  186. package/runtime/storage/user-interest/types.d.ts +25 -25
  187. package/runtime/storage/user-interest/types.js +1 -1
  188. package/workspace-ops-bridge.js +81 -81
@@ -1,228 +1,228 @@
1
- /**
2
- * Outreach draft request contracts + zod validation (T6.1.1 / behavioral-guidance-system v5).
3
- *
4
- * Core logic: strict schema for control-plane → guidance handoff; GuidanceDraftPort documents async seam.
5
- * Test coverage: tests/unit/guidance/outreach-draft-schema.test.ts
6
- */
7
- import { z } from "zod";
8
- export declare const guidanceSourceRefSchema: z.ZodObject<{
9
- id: z.ZodString;
10
- kind: z.ZodEnum<{
11
- platform_item: "platform_item";
12
- workspace_artifact: "workspace_artifact";
13
- decision_record: "decision_record";
14
- user_anchor: "user_anchor";
15
- connector_result: "connector_result";
16
- host_report: "host_report";
17
- fallback_artifact: "fallback_artifact";
18
- }>;
19
- uri: z.ZodString;
20
- excerptHash: z.ZodOptional<z.ZodString>;
21
- observedAt: z.ZodOptional<z.ZodString>;
22
- }, z.core.$strip>;
23
- export type GuidanceSourceRef = z.infer<typeof guidanceSourceRefSchema>;
24
- export declare const deliveryExpressionContextSchema: z.ZodObject<{
25
- deliveryVerdict: z.ZodEnum<{
26
- target_none: "target_none";
27
- channel_missing: "channel_missing";
28
- host_unsupported: "host_unsupported";
29
- delivery_failed: "delivery_failed";
30
- target_available: "target_available";
31
- }>;
32
- fallbackRef: z.ZodOptional<z.ZodString>;
33
- wordingMode: z.ZodEnum<{
34
- sendable: "sendable";
35
- not_sent_fallback_candidate: "not_sent_fallback_candidate";
36
- }>;
37
- }, z.core.$strip>;
38
- export declare const sceneGuidanceRequestSchema: z.ZodObject<{
39
- requestId: z.ZodString;
40
- sceneType: z.ZodEnum<{
41
- outreach: "outreach";
42
- explain: "explain";
43
- social: "social";
44
- quiet_reflection: "quiet_reflection";
45
- user_reply_continuity: "user_reply_continuity";
46
- fallback_candidate: "fallback_candidate";
47
- }>;
48
- runtimeScope: z.ZodEnum<{
49
- rhythm: "rhythm";
50
- user_reply: "user_reply";
51
- user_task: "user_task";
52
- }>;
53
- rhythmWindowKind: z.ZodOptional<z.ZodEnum<{
54
- quiet: "quiet";
55
- social: "social";
56
- work: "work";
57
- exploration: "exploration";
58
- reflection: "reflection";
59
- maintenance: "maintenance";
60
- }>>;
61
- riskLevel: z.ZodEnum<{
62
- medium: "medium";
63
- low: "low";
64
- high: "high";
65
- }>;
66
- sourceRefs: z.ZodArray<z.ZodObject<{
67
- id: z.ZodString;
68
- kind: z.ZodEnum<{
69
- platform_item: "platform_item";
70
- workspace_artifact: "workspace_artifact";
71
- decision_record: "decision_record";
72
- user_anchor: "user_anchor";
73
- connector_result: "connector_result";
74
- host_report: "host_report";
75
- fallback_artifact: "fallback_artifact";
76
- }>;
77
- uri: z.ZodString;
78
- excerptHash: z.ZodOptional<z.ZodString>;
79
- observedAt: z.ZodOptional<z.ZodString>;
80
- }, z.core.$strip>>;
81
- deliveryContext: z.ZodOptional<z.ZodObject<{
82
- deliveryVerdict: z.ZodEnum<{
83
- target_none: "target_none";
84
- channel_missing: "channel_missing";
85
- host_unsupported: "host_unsupported";
86
- delivery_failed: "delivery_failed";
87
- target_available: "target_available";
88
- }>;
89
- fallbackRef: z.ZodOptional<z.ZodString>;
90
- wordingMode: z.ZodEnum<{
91
- sendable: "sendable";
92
- not_sent_fallback_candidate: "not_sent_fallback_candidate";
93
- }>;
94
- }, z.core.$strip>>;
95
- language: z.ZodOptional<z.ZodEnum<{
96
- "en-US": "en-US";
97
- "zh-CN": "zh-CN";
98
- }>>;
99
- }, z.core.$strip>;
100
- export declare const outreachDraftRequestSchema: z.ZodObject<{
101
- requestId: z.ZodString;
102
- runtimeScope: z.ZodEnum<{
103
- rhythm: "rhythm";
104
- user_reply: "user_reply";
105
- user_task: "user_task";
106
- }>;
107
- rhythmWindowKind: z.ZodOptional<z.ZodEnum<{
108
- quiet: "quiet";
109
- social: "social";
110
- work: "work";
111
- exploration: "exploration";
112
- reflection: "reflection";
113
- maintenance: "maintenance";
114
- }>>;
115
- riskLevel: z.ZodEnum<{
116
- medium: "medium";
117
- low: "low";
118
- high: "high";
119
- }>;
120
- sourceRefs: z.ZodArray<z.ZodObject<{
121
- id: z.ZodString;
122
- kind: z.ZodEnum<{
123
- platform_item: "platform_item";
124
- workspace_artifact: "workspace_artifact";
125
- decision_record: "decision_record";
126
- user_anchor: "user_anchor";
127
- connector_result: "connector_result";
128
- host_report: "host_report";
129
- fallback_artifact: "fallback_artifact";
130
- }>;
131
- uri: z.ZodString;
132
- excerptHash: z.ZodOptional<z.ZodString>;
133
- observedAt: z.ZodOptional<z.ZodString>;
134
- }, z.core.$strip>>;
135
- deliveryContext: z.ZodOptional<z.ZodObject<{
136
- deliveryVerdict: z.ZodEnum<{
137
- target_none: "target_none";
138
- channel_missing: "channel_missing";
139
- host_unsupported: "host_unsupported";
140
- delivery_failed: "delivery_failed";
141
- target_available: "target_available";
142
- }>;
143
- fallbackRef: z.ZodOptional<z.ZodString>;
144
- wordingMode: z.ZodEnum<{
145
- sendable: "sendable";
146
- not_sent_fallback_candidate: "not_sent_fallback_candidate";
147
- }>;
148
- }, z.core.$strip>>;
149
- language: z.ZodOptional<z.ZodEnum<{
150
- "en-US": "en-US";
151
- "zh-CN": "zh-CN";
152
- }>>;
153
- sceneType: z.ZodEnum<{
154
- outreach: "outreach";
155
- fallback_candidate: "fallback_candidate";
156
- }>;
157
- decisionId: z.ZodString;
158
- candidateId: z.ZodString;
159
- judgmentVerdict: z.ZodEnum<{
160
- allow: "allow";
161
- deny: "deny";
162
- defer: "defer";
163
- }>;
164
- valueScore: z.ZodNumber;
165
- interestRefs: z.ZodArray<z.ZodObject<{
166
- id: z.ZodString;
167
- kind: z.ZodEnum<{
168
- platform_item: "platform_item";
169
- workspace_artifact: "workspace_artifact";
170
- decision_record: "decision_record";
171
- user_anchor: "user_anchor";
172
- connector_result: "connector_result";
173
- host_report: "host_report";
174
- fallback_artifact: "fallback_artifact";
175
- }>;
176
- uri: z.ZodString;
177
- excerptHash: z.ZodOptional<z.ZodString>;
178
- observedAt: z.ZodOptional<z.ZodString>;
179
- }, z.core.$strip>>;
180
- }, z.core.$strip>;
181
- export type SceneGuidanceRequest = z.infer<typeof sceneGuidanceRequestSchema>;
182
- export type OutreachDraftRequest = z.infer<typeof outreachDraftRequestSchema>;
183
- export type DeliveryExpressionContext = z.infer<typeof deliveryExpressionContextSchema>;
184
- export declare function parseOutreachDraftRequest(input: unknown): OutreachDraftRequest;
185
- export declare function safeParseOutreachDraftRequest(input: unknown): z.ZodSafeParseResult<{
186
- requestId: string;
187
- runtimeScope: "rhythm" | "user_reply" | "user_task";
188
- riskLevel: "medium" | "low" | "high";
189
- sourceRefs: {
190
- id: string;
191
- kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
192
- uri: string;
193
- excerptHash?: string | undefined;
194
- observedAt?: string | undefined;
195
- }[];
196
- sceneType: "outreach" | "fallback_candidate";
197
- decisionId: string;
198
- candidateId: string;
199
- judgmentVerdict: "allow" | "deny" | "defer";
200
- valueScore: number;
201
- interestRefs: {
202
- id: string;
203
- kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
204
- uri: string;
205
- excerptHash?: string | undefined;
206
- observedAt?: string | undefined;
207
- }[];
208
- rhythmWindowKind?: "quiet" | "social" | "work" | "exploration" | "reflection" | "maintenance" | undefined;
209
- deliveryContext?: {
210
- deliveryVerdict: "target_none" | "channel_missing" | "host_unsupported" | "delivery_failed" | "target_available";
211
- wordingMode: "sendable" | "not_sent_fallback_candidate";
212
- fallbackRef?: string | undefined;
213
- } | undefined;
214
- language?: "en-US" | "zh-CN" | undefined;
215
- }>;
216
- /** Async seam for generative outreach copy (implementation lives outside control-plane). */
217
- export interface GuidanceDraftPort {
218
- draftOutreachMessage(request: OutreachDraftRequest): Promise<{
219
- status: "ready";
220
- draft: {
221
- text: string;
222
- deliveryWording: DeliveryExpressionContext["wordingMode"];
223
- };
224
- } | {
225
- status: "unavailable";
226
- reasons: string[];
227
- }>;
228
- }
1
+ /**
2
+ * Outreach draft request contracts + zod validation (T6.1.1 / behavioral-guidance-system v5).
3
+ *
4
+ * Core logic: strict schema for control-plane → guidance handoff; GuidanceDraftPort documents async seam.
5
+ * Test coverage: tests/unit/guidance/outreach-draft-schema.test.ts
6
+ */
7
+ import { z } from "zod";
8
+ export declare const guidanceSourceRefSchema: z.ZodObject<{
9
+ id: z.ZodString;
10
+ kind: z.ZodEnum<{
11
+ platform_item: "platform_item";
12
+ workspace_artifact: "workspace_artifact";
13
+ decision_record: "decision_record";
14
+ user_anchor: "user_anchor";
15
+ connector_result: "connector_result";
16
+ host_report: "host_report";
17
+ fallback_artifact: "fallback_artifact";
18
+ }>;
19
+ uri: z.ZodString;
20
+ excerptHash: z.ZodOptional<z.ZodString>;
21
+ observedAt: z.ZodOptional<z.ZodString>;
22
+ }, z.core.$strip>;
23
+ export type GuidanceSourceRef = z.infer<typeof guidanceSourceRefSchema>;
24
+ export declare const deliveryExpressionContextSchema: z.ZodObject<{
25
+ deliveryVerdict: z.ZodEnum<{
26
+ target_none: "target_none";
27
+ channel_missing: "channel_missing";
28
+ host_unsupported: "host_unsupported";
29
+ delivery_failed: "delivery_failed";
30
+ target_available: "target_available";
31
+ }>;
32
+ fallbackRef: z.ZodOptional<z.ZodString>;
33
+ wordingMode: z.ZodEnum<{
34
+ sendable: "sendable";
35
+ not_sent_fallback_candidate: "not_sent_fallback_candidate";
36
+ }>;
37
+ }, z.core.$strip>;
38
+ export declare const sceneGuidanceRequestSchema: z.ZodObject<{
39
+ requestId: z.ZodString;
40
+ sceneType: z.ZodEnum<{
41
+ outreach: "outreach";
42
+ explain: "explain";
43
+ social: "social";
44
+ quiet_reflection: "quiet_reflection";
45
+ user_reply_continuity: "user_reply_continuity";
46
+ fallback_candidate: "fallback_candidate";
47
+ }>;
48
+ runtimeScope: z.ZodEnum<{
49
+ rhythm: "rhythm";
50
+ user_reply: "user_reply";
51
+ user_task: "user_task";
52
+ }>;
53
+ rhythmWindowKind: z.ZodOptional<z.ZodEnum<{
54
+ quiet: "quiet";
55
+ social: "social";
56
+ work: "work";
57
+ exploration: "exploration";
58
+ reflection: "reflection";
59
+ maintenance: "maintenance";
60
+ }>>;
61
+ riskLevel: z.ZodEnum<{
62
+ medium: "medium";
63
+ low: "low";
64
+ high: "high";
65
+ }>;
66
+ sourceRefs: z.ZodArray<z.ZodObject<{
67
+ id: z.ZodString;
68
+ kind: z.ZodEnum<{
69
+ platform_item: "platform_item";
70
+ workspace_artifact: "workspace_artifact";
71
+ decision_record: "decision_record";
72
+ user_anchor: "user_anchor";
73
+ connector_result: "connector_result";
74
+ host_report: "host_report";
75
+ fallback_artifact: "fallback_artifact";
76
+ }>;
77
+ uri: z.ZodString;
78
+ excerptHash: z.ZodOptional<z.ZodString>;
79
+ observedAt: z.ZodOptional<z.ZodString>;
80
+ }, z.core.$strip>>;
81
+ deliveryContext: z.ZodOptional<z.ZodObject<{
82
+ deliveryVerdict: z.ZodEnum<{
83
+ target_none: "target_none";
84
+ channel_missing: "channel_missing";
85
+ host_unsupported: "host_unsupported";
86
+ delivery_failed: "delivery_failed";
87
+ target_available: "target_available";
88
+ }>;
89
+ fallbackRef: z.ZodOptional<z.ZodString>;
90
+ wordingMode: z.ZodEnum<{
91
+ sendable: "sendable";
92
+ not_sent_fallback_candidate: "not_sent_fallback_candidate";
93
+ }>;
94
+ }, z.core.$strip>>;
95
+ language: z.ZodOptional<z.ZodEnum<{
96
+ "en-US": "en-US";
97
+ "zh-CN": "zh-CN";
98
+ }>>;
99
+ }, z.core.$strip>;
100
+ export declare const outreachDraftRequestSchema: z.ZodObject<{
101
+ requestId: z.ZodString;
102
+ runtimeScope: z.ZodEnum<{
103
+ rhythm: "rhythm";
104
+ user_reply: "user_reply";
105
+ user_task: "user_task";
106
+ }>;
107
+ rhythmWindowKind: z.ZodOptional<z.ZodEnum<{
108
+ quiet: "quiet";
109
+ social: "social";
110
+ work: "work";
111
+ exploration: "exploration";
112
+ reflection: "reflection";
113
+ maintenance: "maintenance";
114
+ }>>;
115
+ riskLevel: z.ZodEnum<{
116
+ medium: "medium";
117
+ low: "low";
118
+ high: "high";
119
+ }>;
120
+ sourceRefs: z.ZodArray<z.ZodObject<{
121
+ id: z.ZodString;
122
+ kind: z.ZodEnum<{
123
+ platform_item: "platform_item";
124
+ workspace_artifact: "workspace_artifact";
125
+ decision_record: "decision_record";
126
+ user_anchor: "user_anchor";
127
+ connector_result: "connector_result";
128
+ host_report: "host_report";
129
+ fallback_artifact: "fallback_artifact";
130
+ }>;
131
+ uri: z.ZodString;
132
+ excerptHash: z.ZodOptional<z.ZodString>;
133
+ observedAt: z.ZodOptional<z.ZodString>;
134
+ }, z.core.$strip>>;
135
+ deliveryContext: z.ZodOptional<z.ZodObject<{
136
+ deliveryVerdict: z.ZodEnum<{
137
+ target_none: "target_none";
138
+ channel_missing: "channel_missing";
139
+ host_unsupported: "host_unsupported";
140
+ delivery_failed: "delivery_failed";
141
+ target_available: "target_available";
142
+ }>;
143
+ fallbackRef: z.ZodOptional<z.ZodString>;
144
+ wordingMode: z.ZodEnum<{
145
+ sendable: "sendable";
146
+ not_sent_fallback_candidate: "not_sent_fallback_candidate";
147
+ }>;
148
+ }, z.core.$strip>>;
149
+ language: z.ZodOptional<z.ZodEnum<{
150
+ "en-US": "en-US";
151
+ "zh-CN": "zh-CN";
152
+ }>>;
153
+ sceneType: z.ZodEnum<{
154
+ outreach: "outreach";
155
+ fallback_candidate: "fallback_candidate";
156
+ }>;
157
+ decisionId: z.ZodString;
158
+ candidateId: z.ZodString;
159
+ judgmentVerdict: z.ZodEnum<{
160
+ allow: "allow";
161
+ deny: "deny";
162
+ defer: "defer";
163
+ }>;
164
+ valueScore: z.ZodNumber;
165
+ interestRefs: z.ZodArray<z.ZodObject<{
166
+ id: z.ZodString;
167
+ kind: z.ZodEnum<{
168
+ platform_item: "platform_item";
169
+ workspace_artifact: "workspace_artifact";
170
+ decision_record: "decision_record";
171
+ user_anchor: "user_anchor";
172
+ connector_result: "connector_result";
173
+ host_report: "host_report";
174
+ fallback_artifact: "fallback_artifact";
175
+ }>;
176
+ uri: z.ZodString;
177
+ excerptHash: z.ZodOptional<z.ZodString>;
178
+ observedAt: z.ZodOptional<z.ZodString>;
179
+ }, z.core.$strip>>;
180
+ }, z.core.$strip>;
181
+ export type SceneGuidanceRequest = z.infer<typeof sceneGuidanceRequestSchema>;
182
+ export type OutreachDraftRequest = z.infer<typeof outreachDraftRequestSchema>;
183
+ export type DeliveryExpressionContext = z.infer<typeof deliveryExpressionContextSchema>;
184
+ export declare function parseOutreachDraftRequest(input: unknown): OutreachDraftRequest;
185
+ export declare function safeParseOutreachDraftRequest(input: unknown): z.ZodSafeParseResult<{
186
+ requestId: string;
187
+ runtimeScope: "rhythm" | "user_reply" | "user_task";
188
+ riskLevel: "medium" | "low" | "high";
189
+ sourceRefs: {
190
+ id: string;
191
+ kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
192
+ uri: string;
193
+ excerptHash?: string | undefined;
194
+ observedAt?: string | undefined;
195
+ }[];
196
+ sceneType: "outreach" | "fallback_candidate";
197
+ decisionId: string;
198
+ candidateId: string;
199
+ judgmentVerdict: "allow" | "deny" | "defer";
200
+ valueScore: number;
201
+ interestRefs: {
202
+ id: string;
203
+ kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
204
+ uri: string;
205
+ excerptHash?: string | undefined;
206
+ observedAt?: string | undefined;
207
+ }[];
208
+ rhythmWindowKind?: "quiet" | "social" | "work" | "exploration" | "reflection" | "maintenance" | undefined;
209
+ deliveryContext?: {
210
+ deliveryVerdict: "target_none" | "channel_missing" | "host_unsupported" | "delivery_failed" | "target_available";
211
+ wordingMode: "sendable" | "not_sent_fallback_candidate";
212
+ fallbackRef?: string | undefined;
213
+ } | undefined;
214
+ language?: "en-US" | "zh-CN" | undefined;
215
+ }>;
216
+ /** Async seam for generative outreach copy (implementation lives outside control-plane). */
217
+ export interface GuidanceDraftPort {
218
+ draftOutreachMessage(request: OutreachDraftRequest): Promise<{
219
+ status: "ready";
220
+ draft: {
221
+ text: string;
222
+ deliveryWording: DeliveryExpressionContext["wordingMode"];
223
+ };
224
+ } | {
225
+ status: "unavailable";
226
+ reasons: string[];
227
+ }>;
228
+ }
@@ -1,80 +1,80 @@
1
- /**
2
- * Outreach draft request contracts + zod validation (T6.1.1 / behavioral-guidance-system v5).
3
- *
4
- * Core logic: strict schema for control-plane → guidance handoff; GuidanceDraftPort documents async seam.
5
- * Test coverage: tests/unit/guidance/outreach-draft-schema.test.ts
6
- */
7
- import { z } from "zod";
8
- const sourceRefKindSchema = z.enum([
9
- "platform_item",
10
- "workspace_artifact",
11
- "decision_record",
12
- "user_anchor",
13
- "connector_result",
14
- "host_report",
15
- "fallback_artifact",
16
- ]);
17
- export const guidanceSourceRefSchema = z.object({
18
- id: z.string().min(1),
19
- kind: sourceRefKindSchema,
20
- uri: z.string().min(1),
21
- excerptHash: z.string().optional(),
22
- observedAt: z.string().optional(),
23
- });
24
- export const deliveryExpressionContextSchema = z.object({
25
- deliveryVerdict: z.enum([
26
- "target_available",
27
- "target_none",
28
- "channel_missing",
29
- "host_unsupported",
30
- "delivery_failed",
31
- ]),
32
- fallbackRef: z.string().optional(),
33
- wordingMode: z.enum(["sendable", "not_sent_fallback_candidate"]),
34
- });
35
- const guidanceSceneTypeSchema = z.enum([
36
- "outreach",
37
- "quiet_reflection",
38
- "social",
39
- "explain",
40
- "user_reply_continuity",
41
- "fallback_candidate",
42
- ]);
43
- const runtimeScopeSchema = z.enum(["rhythm", "user_task", "user_reply"]);
44
- const riskLevelSchema = z.enum(["low", "medium", "high"]);
45
- export const sceneGuidanceRequestSchema = z.object({
46
- requestId: z.string().min(1),
47
- sceneType: guidanceSceneTypeSchema,
48
- runtimeScope: runtimeScopeSchema,
49
- rhythmWindowKind: z
50
- .enum(["work", "exploration", "social", "quiet", "reflection", "maintenance"])
51
- .optional(),
52
- riskLevel: riskLevelSchema,
53
- sourceRefs: z.array(guidanceSourceRefSchema),
54
- deliveryContext: deliveryExpressionContextSchema.optional(),
55
- language: z.enum(["zh-CN", "en-US"]).optional(),
56
- });
57
- export const outreachDraftRequestSchema = sceneGuidanceRequestSchema
58
- .extend({
59
- sceneType: z.enum(["outreach", "fallback_candidate"]),
60
- decisionId: z.string().min(1),
61
- candidateId: z.string().min(1),
62
- judgmentVerdict: z.enum(["allow", "deny", "defer"]),
63
- valueScore: z.number(),
64
- interestRefs: z.array(guidanceSourceRefSchema),
65
- })
66
- .superRefine((val, ctx) => {
67
- if (!val.deliveryContext) {
68
- ctx.addIssue({
69
- code: "custom",
70
- message: "outreach_draft_requires_delivery_context",
71
- path: ["deliveryContext"],
72
- });
73
- }
74
- });
75
- export function parseOutreachDraftRequest(input) {
76
- return outreachDraftRequestSchema.parse(input);
77
- }
78
- export function safeParseOutreachDraftRequest(input) {
79
- return outreachDraftRequestSchema.safeParse(input);
80
- }
1
+ /**
2
+ * Outreach draft request contracts + zod validation (T6.1.1 / behavioral-guidance-system v5).
3
+ *
4
+ * Core logic: strict schema for control-plane → guidance handoff; GuidanceDraftPort documents async seam.
5
+ * Test coverage: tests/unit/guidance/outreach-draft-schema.test.ts
6
+ */
7
+ import { z } from "zod";
8
+ const sourceRefKindSchema = z.enum([
9
+ "platform_item",
10
+ "workspace_artifact",
11
+ "decision_record",
12
+ "user_anchor",
13
+ "connector_result",
14
+ "host_report",
15
+ "fallback_artifact",
16
+ ]);
17
+ export const guidanceSourceRefSchema = z.object({
18
+ id: z.string().min(1),
19
+ kind: sourceRefKindSchema,
20
+ uri: z.string().min(1),
21
+ excerptHash: z.string().optional(),
22
+ observedAt: z.string().optional(),
23
+ });
24
+ export const deliveryExpressionContextSchema = z.object({
25
+ deliveryVerdict: z.enum([
26
+ "target_available",
27
+ "target_none",
28
+ "channel_missing",
29
+ "host_unsupported",
30
+ "delivery_failed",
31
+ ]),
32
+ fallbackRef: z.string().optional(),
33
+ wordingMode: z.enum(["sendable", "not_sent_fallback_candidate"]),
34
+ });
35
+ const guidanceSceneTypeSchema = z.enum([
36
+ "outreach",
37
+ "quiet_reflection",
38
+ "social",
39
+ "explain",
40
+ "user_reply_continuity",
41
+ "fallback_candidate",
42
+ ]);
43
+ const runtimeScopeSchema = z.enum(["rhythm", "user_task", "user_reply"]);
44
+ const riskLevelSchema = z.enum(["low", "medium", "high"]);
45
+ export const sceneGuidanceRequestSchema = z.object({
46
+ requestId: z.string().min(1),
47
+ sceneType: guidanceSceneTypeSchema,
48
+ runtimeScope: runtimeScopeSchema,
49
+ rhythmWindowKind: z
50
+ .enum(["work", "exploration", "social", "quiet", "reflection", "maintenance"])
51
+ .optional(),
52
+ riskLevel: riskLevelSchema,
53
+ sourceRefs: z.array(guidanceSourceRefSchema),
54
+ deliveryContext: deliveryExpressionContextSchema.optional(),
55
+ language: z.enum(["zh-CN", "en-US"]).optional(),
56
+ });
57
+ export const outreachDraftRequestSchema = sceneGuidanceRequestSchema
58
+ .extend({
59
+ sceneType: z.enum(["outreach", "fallback_candidate"]),
60
+ decisionId: z.string().min(1),
61
+ candidateId: z.string().min(1),
62
+ judgmentVerdict: z.enum(["allow", "deny", "defer"]),
63
+ valueScore: z.number(),
64
+ interestRefs: z.array(guidanceSourceRefSchema),
65
+ })
66
+ .superRefine((val, ctx) => {
67
+ if (!val.deliveryContext) {
68
+ ctx.addIssue({
69
+ code: "custom",
70
+ message: "outreach_draft_requires_delivery_context",
71
+ path: ["deliveryContext"],
72
+ });
73
+ }
74
+ });
75
+ export function parseOutreachDraftRequest(input) {
76
+ return outreachDraftRequestSchema.parse(input);
77
+ }
78
+ export function safeParseOutreachDraftRequest(input) {
79
+ return outreachDraftRequestSchema.safeParse(input);
80
+ }
@@ -1,14 +1,14 @@
1
- /**
2
- * In-memory append-only audit store with hash-chain verification hooks.
3
- *
4
- * Core logic: reject broken previousHash links; expose ordered envelopes for tests / local tooling.
5
- *
6
- * Test coverage: tests/unit/observability/audit-envelope.test.ts
7
- */
8
- import type { AuditEnvelope } from "./audit-envelope.js";
9
- export declare class AppendOnlyAuditStore {
10
- private readonly events;
11
- append<T>(envelope: AuditEnvelope<T>): void;
12
- list(): readonly AuditEnvelope<unknown>[];
13
- lastRecordHash(): string | undefined;
14
- }
1
+ /**
2
+ * In-memory append-only audit store with hash-chain verification hooks.
3
+ *
4
+ * Core logic: reject broken previousHash links; expose ordered envelopes for tests / local tooling.
5
+ *
6
+ * Test coverage: tests/unit/observability/audit-envelope.test.ts
7
+ */
8
+ import type { AuditEnvelope } from "./audit-envelope.js";
9
+ export declare class AppendOnlyAuditStore {
10
+ private readonly events;
11
+ append<T>(envelope: AuditEnvelope<T>): void;
12
+ list(): readonly AuditEnvelope<unknown>[];
13
+ lastRecordHash(): string | undefined;
14
+ }