@haaaiawd/second-nature 0.1.16 → 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 -851
  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,71 +1,71 @@
1
- import { integer, sqliteTable, text, uniqueIndex, index } from "drizzle-orm/sqlite-core";
2
- export const decisionLedger = sqliteTable("decision_ledger", {
3
- id: text("id").primaryKey(),
4
- tickId: text("tick_id").notNull(),
5
- traceId: text("trace_id").notNull(),
6
- intentId: text("intent_id"),
7
- platformId: text("platform_id"),
8
- verdict: text("verdict").notNull(),
9
- mode: text("mode").notNull(),
10
- reasons: text("reasons").notNull(),
11
- reasonCodes: text("reason_codes").notNull(),
12
- decisionBasis: text("decision_basis").notNull(),
13
- evidenceRefs: text("evidence_refs").notNull(),
14
- modelEvalRef: text("model_eval_ref"),
15
- createdAt: text("created_at").notNull(),
16
- }, (table) => [
17
- index("decision_tick_idx").on(table.tickId),
18
- uniqueIndex("decision_trace_idx").on(table.traceId),
19
- ]);
20
- export const executionAttempts = sqliteTable("execution_attempts", {
21
- id: text("id").primaryKey(),
22
- traceId: text("trace_id").notNull(),
23
- decisionId: text("decision_id").notNull(),
24
- intentId: text("intent_id").notNull(),
25
- platformId: text("platform_id").notNull(),
26
- capability: text("capability").notNull(),
27
- channel: text("channel").notNull(),
28
- status: text("status").notNull(),
29
- commitState: text("commit_state"),
30
- failureClass: text("failure_class"),
31
- retryPolicy: text("retry_policy"),
32
- idempotencyKey: text("idempotency_key"),
33
- startedAt: text("started_at"),
34
- finishedAt: text("finished_at"),
35
- }, (table) => [
36
- uniqueIndex("attempt_trace_idx").on(table.traceId),
37
- index("attempt_decision_idx").on(table.decisionId),
38
- index("attempt_platform_idx").on(table.platformId),
39
- ]);
40
- export const governanceAudit = sqliteTable("governance_audit", {
41
- id: text("id").primaryKey(),
42
- eventType: text("event_type").notNull(),
43
- proposalId: text("proposal_id"),
44
- targetAssetId: text("target_asset_id"),
45
- assetPath: text("asset_path"),
46
- statusFrom: text("status_from"),
47
- statusTo: text("status_to").notNull(),
48
- beforeHash: text("before_hash"),
49
- afterHash: text("after_hash"),
50
- supportingSources: text("supporting_sources"),
51
- reason: text("reason"),
52
- verificationDeadline: text("verification_deadline"),
53
- attemptsRemaining: integer("attempts_remaining"),
54
- createdAt: text("created_at").notNull(),
55
- }, (table) => [
56
- index("audit_proposal_idx").on(table.proposalId),
57
- index("audit_asset_idx").on(table.targetAssetId),
58
- index("audit_event_idx").on(table.eventType),
59
- ]);
60
- export const redactionManifest = sqliteTable("redaction_manifest", {
61
- id: text("id").primaryKey(),
62
- eventId: text("event_id").notNull(),
63
- eventType: text("event_type").notNull(),
64
- fieldName: text("field_name").notNull(),
65
- action: text("action").notNull(),
66
- originalValueHash: text("original_value_hash"),
67
- createdAt: text("created_at").notNull(),
68
- }, (table) => [
69
- index("redact_event_idx").on(table.eventId),
70
- ]);
71
- export { hostCapabilityReports, } from "./host-capability-reports.js";
1
+ import { integer, sqliteTable, text, uniqueIndex, index } from "drizzle-orm/sqlite-core";
2
+ export const decisionLedger = sqliteTable("decision_ledger", {
3
+ id: text("id").primaryKey(),
4
+ tickId: text("tick_id").notNull(),
5
+ traceId: text("trace_id").notNull(),
6
+ intentId: text("intent_id"),
7
+ platformId: text("platform_id"),
8
+ verdict: text("verdict").notNull(),
9
+ mode: text("mode").notNull(),
10
+ reasons: text("reasons").notNull(),
11
+ reasonCodes: text("reason_codes").notNull(),
12
+ decisionBasis: text("decision_basis").notNull(),
13
+ evidenceRefs: text("evidence_refs").notNull(),
14
+ modelEvalRef: text("model_eval_ref"),
15
+ createdAt: text("created_at").notNull(),
16
+ }, (table) => [
17
+ index("decision_tick_idx").on(table.tickId),
18
+ uniqueIndex("decision_trace_idx").on(table.traceId),
19
+ ]);
20
+ export const executionAttempts = sqliteTable("execution_attempts", {
21
+ id: text("id").primaryKey(),
22
+ traceId: text("trace_id").notNull(),
23
+ decisionId: text("decision_id").notNull(),
24
+ intentId: text("intent_id").notNull(),
25
+ platformId: text("platform_id").notNull(),
26
+ capability: text("capability").notNull(),
27
+ channel: text("channel").notNull(),
28
+ status: text("status").notNull(),
29
+ commitState: text("commit_state"),
30
+ failureClass: text("failure_class"),
31
+ retryPolicy: text("retry_policy"),
32
+ idempotencyKey: text("idempotency_key"),
33
+ startedAt: text("started_at"),
34
+ finishedAt: text("finished_at"),
35
+ }, (table) => [
36
+ uniqueIndex("attempt_trace_idx").on(table.traceId),
37
+ index("attempt_decision_idx").on(table.decisionId),
38
+ index("attempt_platform_idx").on(table.platformId),
39
+ ]);
40
+ export const governanceAudit = sqliteTable("governance_audit", {
41
+ id: text("id").primaryKey(),
42
+ eventType: text("event_type").notNull(),
43
+ proposalId: text("proposal_id"),
44
+ targetAssetId: text("target_asset_id"),
45
+ assetPath: text("asset_path"),
46
+ statusFrom: text("status_from"),
47
+ statusTo: text("status_to").notNull(),
48
+ beforeHash: text("before_hash"),
49
+ afterHash: text("after_hash"),
50
+ supportingSources: text("supporting_sources"),
51
+ reason: text("reason"),
52
+ verificationDeadline: text("verification_deadline"),
53
+ attemptsRemaining: integer("attempts_remaining"),
54
+ createdAt: text("created_at").notNull(),
55
+ }, (table) => [
56
+ index("audit_proposal_idx").on(table.proposalId),
57
+ index("audit_asset_idx").on(table.targetAssetId),
58
+ index("audit_event_idx").on(table.eventType),
59
+ ]);
60
+ export const redactionManifest = sqliteTable("redaction_manifest", {
61
+ id: text("id").primaryKey(),
62
+ eventId: text("event_id").notNull(),
63
+ eventType: text("event_type").notNull(),
64
+ fieldName: text("field_name").notNull(),
65
+ action: text("action").notNull(),
66
+ originalValueHash: text("original_value_hash"),
67
+ createdAt: text("created_at").notNull(),
68
+ }, (table) => [
69
+ index("redact_event_idx").on(table.eventId),
70
+ ]);
71
+ export { hostCapabilityReports, } from "./host-capability-reports.js";
@@ -1,19 +1,20 @@
1
- export { createObservabilityDatabase, type ObservabilityDatabase } from "./db/index.js";
2
- export * as obsSchema from "./db/schema/index.js";
3
- export { buildAuditEnvelope, computeAuditRecordHash, redactAuditEvent, auditManifestFromFieldManifest, type AuditEnvelope, type AuditEnvelopeSensitivity, type AuditEventFamily, type AuditPlane, type AuditRedactionManifest, type AuditIntegrity, type BuildAuditEnvelopeInput, type RedactAuditEventResult, } from "./audit/audit-envelope.js";
4
- export { AppendOnlyAuditStore } from "./audit/append-only-audit-store.js";
5
- export { verifyAuditHashChain, createAppendOnlyAuditStoreRangeLoader, type AuditExportRange, type AuditHashChainVerificationReport, type AuditHashChainVerificationStatus, type VerifyAuditHashChainDeps, } from "./audit/verify-audit-hash-chain.js";
6
- export { REDACTION_CONFIG, DEFAULT_REDACTION_POLICY, getFieldRedactionRule, type RedactionPolicy, type RedactionRule, type SensitivityLevel, } from "./redaction/policy.js";
7
- export { redactEvent, createEmptyManifest, mergeManifests, type RedactionManifest, type RedactionResult, } from "./redaction/manifest.js";
8
- export { DecisionLedger, type QuietLifecycleEvent, type OutreachDecision, type HeartbeatDecisionEvent } from "./services/decision-ledger.js";
9
- export { GovernanceAudit, type CredentialLifecycleAudit } from "./services/governance-audit.js";
10
- export { ExecutionTelemetry, type ExecutionAttemptInput } from "./services/execution-telemetry.js";
11
- export { LivedExperienceAuditRecorder, createLivedExperienceAuditRecorder, type DecisionTracePayload, type DeliveryAuditPayload, type DeliveryAuditStatus, type ExplainLinkageSummary, type GuidanceGroundingAuditPayload, type SourceCoverageAuditPayload, } from "./services/lived-experience-audit.js";
12
- export { GovernancePlaneRecorder, createGovernancePlaneRecorder, type AuditAppendAck, type ConnectorAttemptAudit, type ConnectorAttemptOutcome, type StateGovernanceAudit, type StateGovernanceKind, } from "./services/governance-plane-recorder.js";
13
- export { queryExplain, type ExplainQuery, type OperatorExplainReadModel, type RedactedExplainEvent, } from "./query/explain-query.js";
14
- export { exportAuditBundle, type AuditBundle, type AuditBundleExportRange, type AuditRedactionSummary, type ExportAuditBundleDeps } from "./query/export-audit-bundle.js";
15
- export { EvidenceQueryEngine, } from "./query/evidence-query-engine.js";
16
- export type { EvidenceQuery, EvidenceBundle, EvidenceResolutionPlan, GovernanceEvidenceRecord, ResolvedContentRef, ExplanationCapsule, } from "./query/compose-evidence.js";
17
- export { projectReflectionAudit, type ReflectionAudit, type ReflectionAuditProjection, } from "./projections/reflection-audit.js";
18
- export { projectOutreachQualityAudit, type OutreachQualityAudit, type OutreachQualityProjection, } from "./projections/outreach-quality-audit.js";
19
- export { projectGuidanceParticipationAudit, type GuidanceParticipationAudit, type GuidanceParticipationProjection, } from "./projections/guidance-audit.js";
1
+ export { createObservabilityDatabase, type ObservabilityDatabase } from "./db/index.js";
2
+ export * as obsSchema from "./db/schema/index.js";
3
+ export { buildAuditEnvelope, computeAuditRecordHash, redactAuditEvent, auditManifestFromFieldManifest, type AuditEnvelope, type AuditEnvelopeSensitivity, type AuditEventFamily, type AuditPlane, type AuditRedactionManifest, type AuditIntegrity, type BuildAuditEnvelopeInput, type RedactAuditEventResult, } from "./audit/audit-envelope.js";
4
+ export { AppendOnlyAuditStore } from "./audit/append-only-audit-store.js";
5
+ export { verifyAuditHashChain, createAppendOnlyAuditStoreRangeLoader, type AuditExportRange, type AuditHashChainVerificationReport, type AuditHashChainVerificationStatus, type VerifyAuditHashChainDeps, } from "./audit/verify-audit-hash-chain.js";
6
+ export { REDACTION_CONFIG, DEFAULT_REDACTION_POLICY, getFieldRedactionRule, type RedactionPolicy, type RedactionRule, type SensitivityLevel, } from "./redaction/policy.js";
7
+ export { redactEvent, createEmptyManifest, mergeManifests, type RedactionManifest, type RedactionResult, } from "./redaction/manifest.js";
8
+ export { DecisionLedger, type QuietLifecycleEvent, type OutreachDecision, type HeartbeatDecisionEvent } from "./services/decision-ledger.js";
9
+ export { GovernanceAudit, type CredentialLifecycleAudit } from "./services/governance-audit.js";
10
+ export { ExecutionTelemetry, type ExecutionAttemptInput } from "./services/execution-telemetry.js";
11
+ export { createRuntimeDecisionRecorder, RUNTIME_DECISION_TRACE_PREFIX, RUNTIME_INTERNAL_PLATFORM_ID, type RuntimeDecisionRecorder, type RecordHeartbeatCycleInput, type RecordHeartbeatCycleOutput, } from "./services/runtime-decision-recorder.js";
12
+ export { LivedExperienceAuditRecorder, createLivedExperienceAuditRecorder, type DecisionTracePayload, type DeliveryAuditPayload, type DeliveryAuditStatus, type ExplainLinkageSummary, type GuidanceGroundingAuditPayload, type SourceCoverageAuditPayload, } from "./services/lived-experience-audit.js";
13
+ export { GovernancePlaneRecorder, createGovernancePlaneRecorder, type AuditAppendAck, type ConnectorAttemptAudit, type ConnectorAttemptOutcome, type StateGovernanceAudit, type StateGovernanceKind, } from "./services/governance-plane-recorder.js";
14
+ export { queryExplain, type ExplainQuery, type OperatorExplainReadModel, type RedactedExplainEvent, } from "./query/explain-query.js";
15
+ export { exportAuditBundle, type AuditBundle, type AuditBundleExportRange, type AuditRedactionSummary, type ExportAuditBundleDeps } from "./query/export-audit-bundle.js";
16
+ export { EvidenceQueryEngine, } from "./query/evidence-query-engine.js";
17
+ export type { EvidenceQuery, EvidenceBundle, EvidenceResolutionPlan, GovernanceEvidenceRecord, ResolvedContentRef, ExplanationCapsule, } from "./query/compose-evidence.js";
18
+ export { projectReflectionAudit, type ReflectionAudit, type ReflectionAuditProjection, } from "./projections/reflection-audit.js";
19
+ export { projectOutreachQualityAudit, type OutreachQualityAudit, type OutreachQualityProjection, } from "./projections/outreach-quality-audit.js";
20
+ export { projectGuidanceParticipationAudit, type GuidanceParticipationAudit, type GuidanceParticipationProjection, } from "./projections/guidance-audit.js";
@@ -1,18 +1,19 @@
1
- export { createObservabilityDatabase } from "./db/index.js";
2
- export * as obsSchema from "./db/schema/index.js";
3
- export { buildAuditEnvelope, computeAuditRecordHash, redactAuditEvent, auditManifestFromFieldManifest, } from "./audit/audit-envelope.js";
4
- export { AppendOnlyAuditStore } from "./audit/append-only-audit-store.js";
5
- export { verifyAuditHashChain, createAppendOnlyAuditStoreRangeLoader, } from "./audit/verify-audit-hash-chain.js";
6
- export { REDACTION_CONFIG, DEFAULT_REDACTION_POLICY, getFieldRedactionRule, } from "./redaction/policy.js";
7
- export { redactEvent, createEmptyManifest, mergeManifests, } from "./redaction/manifest.js";
8
- export { DecisionLedger } from "./services/decision-ledger.js";
9
- export { GovernanceAudit } from "./services/governance-audit.js";
10
- export { ExecutionTelemetry } from "./services/execution-telemetry.js";
11
- export { LivedExperienceAuditRecorder, createLivedExperienceAuditRecorder, } from "./services/lived-experience-audit.js";
12
- export { GovernancePlaneRecorder, createGovernancePlaneRecorder, } from "./services/governance-plane-recorder.js";
13
- export { queryExplain, } from "./query/explain-query.js";
14
- export { exportAuditBundle } from "./query/export-audit-bundle.js";
15
- export { EvidenceQueryEngine, } from "./query/evidence-query-engine.js";
16
- export { projectReflectionAudit, } from "./projections/reflection-audit.js";
17
- export { projectOutreachQualityAudit, } from "./projections/outreach-quality-audit.js";
18
- export { projectGuidanceParticipationAudit, } from "./projections/guidance-audit.js";
1
+ export { createObservabilityDatabase } from "./db/index.js";
2
+ export * as obsSchema from "./db/schema/index.js";
3
+ export { buildAuditEnvelope, computeAuditRecordHash, redactAuditEvent, auditManifestFromFieldManifest, } from "./audit/audit-envelope.js";
4
+ export { AppendOnlyAuditStore } from "./audit/append-only-audit-store.js";
5
+ export { verifyAuditHashChain, createAppendOnlyAuditStoreRangeLoader, } from "./audit/verify-audit-hash-chain.js";
6
+ export { REDACTION_CONFIG, DEFAULT_REDACTION_POLICY, getFieldRedactionRule, } from "./redaction/policy.js";
7
+ export { redactEvent, createEmptyManifest, mergeManifests, } from "./redaction/manifest.js";
8
+ export { DecisionLedger } from "./services/decision-ledger.js";
9
+ export { GovernanceAudit } from "./services/governance-audit.js";
10
+ export { ExecutionTelemetry } from "./services/execution-telemetry.js";
11
+ export { createRuntimeDecisionRecorder, RUNTIME_DECISION_TRACE_PREFIX, RUNTIME_INTERNAL_PLATFORM_ID, } from "./services/runtime-decision-recorder.js";
12
+ export { LivedExperienceAuditRecorder, createLivedExperienceAuditRecorder, } from "./services/lived-experience-audit.js";
13
+ export { GovernancePlaneRecorder, createGovernancePlaneRecorder, } from "./services/governance-plane-recorder.js";
14
+ export { queryExplain, } from "./query/explain-query.js";
15
+ export { exportAuditBundle } from "./query/export-audit-bundle.js";
16
+ export { EvidenceQueryEngine, } from "./query/evidence-query-engine.js";
17
+ export { projectReflectionAudit, } from "./projections/reflection-audit.js";
18
+ export { projectOutreachQualityAudit, } from "./projections/outreach-quality-audit.js";
19
+ export { projectGuidanceParticipationAudit, } from "./projections/guidance-audit.js";
@@ -1,48 +1,48 @@
1
- /**
2
- * Operator explain query over append-only audit envelopes (T5.3.1).
3
- *
4
- * Core logic: resolve subject to matching envelopes, compose summary + no-user-visible-contact warnings,
5
- * expose minimal redacted event list for JSON-first read models.
6
- *
7
- * Dependencies: AppendOnlyAuditStore list; audit-envelope types; delivery audit payload shape from lived-experience-audit.
8
- *
9
- * Test coverage: tests/integration/observability/explain-query-export.test.ts
10
- */
11
- import type { AppendOnlyAuditStore } from "../audit/append-only-audit-store.js";
12
- import type { DeliveryAuditPayload } from "../services/lived-experience-audit.js";
13
- export type ExplainQuery = {
14
- kind: "decision";
15
- decisionId: string;
16
- } | {
17
- kind: "fallback";
18
- fallbackRef: string;
19
- } | {
20
- kind: "report";
21
- reportId: string;
22
- } | {
23
- kind: "delivery";
24
- auditId: string;
25
- } | {
26
- kind: "source_ref";
27
- sourceRefId: string;
28
- };
29
- export interface RedactedExplainEvent {
30
- eventId: string;
31
- family: string;
32
- plane: string;
33
- createdAt: string;
34
- /** Minimal safe summary — no raw recipient / tokens */
35
- summary: string;
36
- }
37
- export interface OperatorExplainReadModel {
38
- query: ExplainQuery;
39
- summary: string;
40
- warnings: string[];
41
- deliveryStatus?: DeliveryAuditPayload["status"];
42
- relatedEventIds: string[];
43
- events: RedactedExplainEvent[];
44
- }
45
- /**
46
- * Query explain read model from an in-memory append-only audit slice (tests / local tooling).
47
- */
48
- export declare function queryExplain(query: ExplainQuery, store: AppendOnlyAuditStore): OperatorExplainReadModel;
1
+ /**
2
+ * Operator explain query over append-only audit envelopes (T5.3.1).
3
+ *
4
+ * Core logic: resolve subject to matching envelopes, compose summary + no-user-visible-contact warnings,
5
+ * expose minimal redacted event list for JSON-first read models.
6
+ *
7
+ * Dependencies: AppendOnlyAuditStore list; audit-envelope types; delivery audit payload shape from lived-experience-audit.
8
+ *
9
+ * Test coverage: tests/integration/observability/explain-query-export.test.ts
10
+ */
11
+ import type { AppendOnlyAuditStore } from "../audit/append-only-audit-store.js";
12
+ import type { DeliveryAuditPayload } from "../services/lived-experience-audit.js";
13
+ export type ExplainQuery = {
14
+ kind: "decision";
15
+ decisionId: string;
16
+ } | {
17
+ kind: "fallback";
18
+ fallbackRef: string;
19
+ } | {
20
+ kind: "report";
21
+ reportId: string;
22
+ } | {
23
+ kind: "delivery";
24
+ auditId: string;
25
+ } | {
26
+ kind: "source_ref";
27
+ sourceRefId: string;
28
+ };
29
+ export interface RedactedExplainEvent {
30
+ eventId: string;
31
+ family: string;
32
+ plane: string;
33
+ createdAt: string;
34
+ /** Minimal safe summary — no raw recipient / tokens */
35
+ summary: string;
36
+ }
37
+ export interface OperatorExplainReadModel {
38
+ query: ExplainQuery;
39
+ summary: string;
40
+ warnings: string[];
41
+ deliveryStatus?: DeliveryAuditPayload["status"];
42
+ relatedEventIds: string[];
43
+ events: RedactedExplainEvent[];
44
+ }
45
+ /**
46
+ * Query explain read model from an in-memory append-only audit slice (tests / local tooling).
47
+ */
48
+ export declare function queryExplain(query: ExplainQuery, store: AppendOnlyAuditStore): OperatorExplainReadModel;
@@ -1,114 +1,114 @@
1
- const NO_USER_VISIBLE = "no_user_visible_contact_claim_prohibited";
2
- function isNoUserVisibleDelivery(status) {
3
- if (!status)
4
- return false;
5
- return (status === "target_none" ||
6
- status === "not_sent_fallback" ||
7
- status === "channel_missing" ||
8
- status === "host_unsupported" ||
9
- status === "failed" ||
10
- status === "ack_dropped");
11
- }
12
- function payloadDecisionId(payload) {
13
- if (!payload || typeof payload !== "object")
14
- return undefined;
15
- const p = payload;
16
- const v = p.decisionId;
17
- return typeof v === "string" ? v : undefined;
18
- }
19
- function payloadFallbackRef(payload) {
20
- if (!payload || typeof payload !== "object")
21
- return undefined;
22
- const p = payload;
23
- const v = p.fallbackRef;
24
- return typeof v === "string" ? v : undefined;
25
- }
26
- function payloadAuditId(payload) {
27
- if (!payload || typeof payload !== "object")
28
- return undefined;
29
- const p = payload;
30
- const a = p.auditId;
31
- if (typeof a === "string")
32
- return a;
33
- return undefined;
34
- }
35
- function deliveryStatusFrom(payload) {
36
- if (!payload || typeof payload !== "object")
37
- return undefined;
38
- const p = payload;
39
- const s = p.status;
40
- return typeof s === "string" ? s : undefined;
41
- }
42
- function eventMatchesQuery(envelope, query) {
43
- const payload = envelope.payload;
44
- switch (query.kind) {
45
- case "decision":
46
- return payloadDecisionId(payload) === query.decisionId;
47
- case "fallback":
48
- return payloadFallbackRef(payload) === query.fallbackRef;
49
- case "report":
50
- return envelope.eventId === query.reportId || payloadAuditId(payload) === query.reportId;
51
- case "delivery":
52
- return (envelope.family === "delivery" &&
53
- (envelope.eventId === query.auditId || payloadAuditId(payload) === query.auditId));
54
- case "source_ref": {
55
- const needle = query.sourceRefId;
56
- try {
57
- return JSON.stringify(payload).includes(needle);
58
- }
59
- catch {
60
- return false;
61
- }
62
- }
63
- }
64
- }
65
- function summarizeEnvelope(e) {
66
- const fam = e.family;
67
- if (fam === "delivery") {
68
- const st = deliveryStatusFrom(e.payload);
69
- return `delivery_audit:${st ?? "unknown"}`;
70
- }
71
- if (fam === "heartbeat.decision") {
72
- const outcome = e.payload?.outcome;
73
- return `decision:${typeof outcome === "string" ? outcome : "unknown"}`;
74
- }
75
- return `${fam}`;
76
- }
77
- /**
78
- * Query explain read model from an in-memory append-only audit slice (tests / local tooling).
79
- */
80
- export function queryExplain(query, store) {
81
- const matched = store.list().filter((e) => eventMatchesQuery(e, query));
82
- const relatedEventIds = matched.map((e) => e.eventId);
83
- const warnings = [];
84
- let deliveryStatus;
85
- for (const e of matched) {
86
- if (e.family === "delivery") {
87
- const st = deliveryStatusFrom(e.payload);
88
- if (st)
89
- deliveryStatus = st;
90
- if (isNoUserVisibleDelivery(st)) {
91
- warnings.push(NO_USER_VISIBLE);
92
- }
93
- }
94
- }
95
- const uniqueWarnings = [...new Set(warnings)];
96
- const summary = matched.length === 0
97
- ? "no_matching_audit_events"
98
- : `matched_events=${matched.length};subject=${query.kind}`;
99
- const events = matched.map((e) => ({
100
- eventId: e.eventId,
101
- family: e.family,
102
- plane: e.plane,
103
- createdAt: e.createdAt,
104
- summary: summarizeEnvelope(e),
105
- }));
106
- return {
107
- query,
108
- summary,
109
- warnings: uniqueWarnings,
110
- deliveryStatus,
111
- relatedEventIds,
112
- events,
113
- };
114
- }
1
+ const NO_USER_VISIBLE = "no_user_visible_contact_claim_prohibited";
2
+ function isNoUserVisibleDelivery(status) {
3
+ if (!status)
4
+ return false;
5
+ return (status === "target_none" ||
6
+ status === "not_sent_fallback" ||
7
+ status === "channel_missing" ||
8
+ status === "host_unsupported" ||
9
+ status === "failed" ||
10
+ status === "ack_dropped");
11
+ }
12
+ function payloadDecisionId(payload) {
13
+ if (!payload || typeof payload !== "object")
14
+ return undefined;
15
+ const p = payload;
16
+ const v = p.decisionId;
17
+ return typeof v === "string" ? v : undefined;
18
+ }
19
+ function payloadFallbackRef(payload) {
20
+ if (!payload || typeof payload !== "object")
21
+ return undefined;
22
+ const p = payload;
23
+ const v = p.fallbackRef;
24
+ return typeof v === "string" ? v : undefined;
25
+ }
26
+ function payloadAuditId(payload) {
27
+ if (!payload || typeof payload !== "object")
28
+ return undefined;
29
+ const p = payload;
30
+ const a = p.auditId;
31
+ if (typeof a === "string")
32
+ return a;
33
+ return undefined;
34
+ }
35
+ function deliveryStatusFrom(payload) {
36
+ if (!payload || typeof payload !== "object")
37
+ return undefined;
38
+ const p = payload;
39
+ const s = p.status;
40
+ return typeof s === "string" ? s : undefined;
41
+ }
42
+ function eventMatchesQuery(envelope, query) {
43
+ const payload = envelope.payload;
44
+ switch (query.kind) {
45
+ case "decision":
46
+ return payloadDecisionId(payload) === query.decisionId;
47
+ case "fallback":
48
+ return payloadFallbackRef(payload) === query.fallbackRef;
49
+ case "report":
50
+ return envelope.eventId === query.reportId || payloadAuditId(payload) === query.reportId;
51
+ case "delivery":
52
+ return (envelope.family === "delivery" &&
53
+ (envelope.eventId === query.auditId || payloadAuditId(payload) === query.auditId));
54
+ case "source_ref": {
55
+ const needle = query.sourceRefId;
56
+ try {
57
+ return JSON.stringify(payload).includes(needle);
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ }
64
+ }
65
+ function summarizeEnvelope(e) {
66
+ const fam = e.family;
67
+ if (fam === "delivery") {
68
+ const st = deliveryStatusFrom(e.payload);
69
+ return `delivery_audit:${st ?? "unknown"}`;
70
+ }
71
+ if (fam === "heartbeat.decision") {
72
+ const outcome = e.payload?.outcome;
73
+ return `decision:${typeof outcome === "string" ? outcome : "unknown"}`;
74
+ }
75
+ return `${fam}`;
76
+ }
77
+ /**
78
+ * Query explain read model from an in-memory append-only audit slice (tests / local tooling).
79
+ */
80
+ export function queryExplain(query, store) {
81
+ const matched = store.list().filter((e) => eventMatchesQuery(e, query));
82
+ const relatedEventIds = matched.map((e) => e.eventId);
83
+ const warnings = [];
84
+ let deliveryStatus;
85
+ for (const e of matched) {
86
+ if (e.family === "delivery") {
87
+ const st = deliveryStatusFrom(e.payload);
88
+ if (st)
89
+ deliveryStatus = st;
90
+ if (isNoUserVisibleDelivery(st)) {
91
+ warnings.push(NO_USER_VISIBLE);
92
+ }
93
+ }
94
+ }
95
+ const uniqueWarnings = [...new Set(warnings)];
96
+ const summary = matched.length === 0
97
+ ? "no_matching_audit_events"
98
+ : `matched_events=${matched.length};subject=${query.kind}`;
99
+ const events = matched.map((e) => ({
100
+ eventId: e.eventId,
101
+ family: e.family,
102
+ plane: e.plane,
103
+ createdAt: e.createdAt,
104
+ summary: summarizeEnvelope(e),
105
+ }));
106
+ return {
107
+ query,
108
+ summary,
109
+ warnings: uniqueWarnings,
110
+ deliveryStatus,
111
+ relatedEventIds,
112
+ events,
113
+ };
114
+ }
@@ -1,22 +1,22 @@
1
- import type { AuditEnvelope } from "../audit/audit-envelope.js";
2
- import type { AuditEventFamily } from "../audit/audit-envelope.js";
3
- import type { AuditExportRange } from "../audit/verify-audit-hash-chain.js";
4
- export interface AuditBundleExportRange extends AuditExportRange {
5
- /** Reserved for otel_projection / future formats */
6
- format?: "json_v1";
7
- }
8
- export interface AuditRedactionSummary {
9
- eventCount: number;
10
- manifestIds: string[];
11
- }
12
- export interface AuditBundle {
13
- bundleId: string;
14
- generatedAt: string;
15
- range: AuditBundleExportRange;
16
- events: readonly AuditEnvelope<unknown>[];
17
- redactionSummary: AuditRedactionSummary;
18
- }
19
- export interface ExportAuditBundleDeps {
20
- loadRange(from: string, to: string, families?: AuditEventFamily[]): Promise<readonly AuditEnvelope<unknown>[]>;
21
- }
22
- export declare function exportAuditBundle(range: AuditBundleExportRange, deps: ExportAuditBundleDeps): Promise<AuditBundle>;
1
+ import type { AuditEnvelope } from "../audit/audit-envelope.js";
2
+ import type { AuditEventFamily } from "../audit/audit-envelope.js";
3
+ import type { AuditExportRange } from "../audit/verify-audit-hash-chain.js";
4
+ export interface AuditBundleExportRange extends AuditExportRange {
5
+ /** Reserved for otel_projection / future formats */
6
+ format?: "json_v1";
7
+ }
8
+ export interface AuditRedactionSummary {
9
+ eventCount: number;
10
+ manifestIds: string[];
11
+ }
12
+ export interface AuditBundle {
13
+ bundleId: string;
14
+ generatedAt: string;
15
+ range: AuditBundleExportRange;
16
+ events: readonly AuditEnvelope<unknown>[];
17
+ redactionSummary: AuditRedactionSummary;
18
+ }
19
+ export interface ExportAuditBundleDeps {
20
+ loadRange(from: string, to: string, families?: AuditEventFamily[]): Promise<readonly AuditEnvelope<unknown>[]>;
21
+ }
22
+ export declare function exportAuditBundle(range: AuditBundleExportRange, deps: ExportAuditBundleDeps): Promise<AuditBundle>;