@haaaiawd/second-nature 0.1.17 → 0.1.18

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 +58 -54
  24. package/runtime/cli/ops/heartbeat-surface.d.ts +38 -35
  25. package/runtime/cli/ops/heartbeat-surface.js +73 -71
  26. package/runtime/cli/ops/ops-router.d.ts +19 -16
  27. package/runtime/cli/ops/ops-router.js +89 -87
  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 +19 -10
  31. package/runtime/cli/ops/workspace-heartbeat-runner.js +39 -26
  32. package/runtime/cli/read-models/index.d.ts +29 -29
  33. package/runtime/cli/read-models/index.js +256 -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 +79 -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 +139 -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 +124 -124
  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 -19
  114. package/runtime/observability/index.js +19 -18
  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 -0
  128. package/runtime/observability/services/runtime-decision-recorder.js +94 -0
  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 +154 -154
  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 -80
@@ -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";
@@ -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
+ }