@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,21 +1,21 @@
1
- /**
2
- * Persists operator-visible delivery fallback artifacts (T2.3.2 / state-system v5).
3
- * status is always not_sent per ADR-007.
4
- */
5
- import * as crypto from "node:crypto";
6
- import { operatorFallbackArtifacts } from "../db/schema/operator-fallback-artifacts.js";
7
- export async function writeOperatorFallback(state, input) {
8
- const fallbackRef = `fallback:${crypto.randomUUID()}`;
9
- const createdAt = new Date().toISOString();
10
- await state.db.insert(operatorFallbackArtifacts).values({
11
- fallbackRef,
12
- decisionId: input.decisionId,
13
- status: "not_sent",
14
- reason: input.reason,
15
- sourceRefsJson: JSON.stringify(input.sourceRefs),
16
- candidateMessage: input.candidateMessage ?? null,
17
- nextStep: input.nextStep,
18
- createdAt,
19
- });
20
- return { fallbackRef };
21
- }
1
+ /**
2
+ * Persists operator-visible delivery fallback artifacts (T2.3.2 / state-system v5).
3
+ * status is always not_sent per ADR-007.
4
+ */
5
+ import * as crypto from "node:crypto";
6
+ import { operatorFallbackArtifacts } from "../db/schema/operator-fallback-artifacts.js";
7
+ export async function writeOperatorFallback(state, input) {
8
+ const fallbackRef = `fallback:${crypto.randomUUID()}`;
9
+ const createdAt = new Date().toISOString();
10
+ await state.db.insert(operatorFallbackArtifacts).values({
11
+ fallbackRef,
12
+ decisionId: input.decisionId,
13
+ status: "not_sent",
14
+ reason: input.reason,
15
+ sourceRefsJson: JSON.stringify(input.sourceRefs),
16
+ candidateMessage: input.candidateMessage ?? null,
17
+ nextStep: input.nextStep,
18
+ createdAt,
19
+ });
20
+ return { fallbackRef };
21
+ }
@@ -1,37 +1,37 @@
1
- export { createStateDatabase, type StateDatabase } from "./db/index.js";
2
- export * as storageSchema from "./db/schema/index.js";
3
- export * from "./repositories/index.js";
4
- export { createWorkspaceArtifactStore, type WorkspaceArtifactStore } from "./memory/workspace/store.js";
5
- export * from "./memory/workspace/paths.js";
6
- export * from "./memory/workspace/types.js";
7
- export { createCredentialVault, type CredentialVault } from "./services/credential-vault.js";
8
- export { createEffectCommitStore, type EffectCommitStore } from "./services/effect-commit-store.js";
9
- export { createDailyLogPipeline, type DailyLogPipeline } from "./services/daily-log-pipeline.js";
10
- export { createQuietInputLoader, type QuietInputLoader } from "./services/quiet-input-loader.js";
11
- export { createPersonaCandidateLoader, type PersonaCandidateLoader } from "./services/persona-candidate-loader.js";
12
- export { createGovernanceLayer, type GovernanceLayer, type AnchorWriteProposal, type ProposalAck, type ApplyAck } from "./services/governance-layer.js";
13
- export { createProvenanceService, type ProvenanceService, type ProvenanceTrace, type ProvenanceDetail } from "./services/provenance-service.js";
14
- export { createRepairAndBackupService, type RepairAndBackupService, type RepairAndBackupOptions, type RepairAndBackupResult, } from "./services/repair-and-backup.js";
15
- export { runStartupRepairAndBackup } from "./bootstrap/repair.js";
16
- export { probeNativeSqliteLoad } from "./bootstrap/native-sqlite-probe.js";
17
- export { runStorageModeSmoke, type StorageModeSmokeReport, type RunStorageModeSmokeOptions, } from "./bootstrap/storage-mode-smoke.js";
18
- export { repairStateIndexes, type RepairSummary, type RepairStateIndexesOptions, type RepairGateStatus, } from "./bootstrap/repair-gate.js";
19
- export { createStateAPI, type StateAPI, type MemoryReadPort, type MemoryWritePort, type CredentialContextPort, type IntentCommitPort, type ProvenancePort } from "./state-api.js";
20
- export type { LifeEvidence, LifeEvidenceCandidate, LifeEvidenceType, LifeEvidenceWriteAck, Sensitivity, SourceRef, } from "./life-evidence/types.js";
21
- export { appendLifeEvidence, type AppendLifeEvidenceOptions } from "./life-evidence/append-life-evidence.js";
22
- export { loadRhythmPolicySnapshot, type RhythmPolicySnapshot } from "./rhythm/rhythm-policy-snapshot.js";
23
- export type { LifeEvidenceQuery, LifeEvidenceSnapshot, LifeEvidenceReadModel, ContinuitySnapshot, SourceCoverage, } from "./snapshots/types.js";
24
- export { loadLifeEvidenceSnapshot, type LoadLifeEvidenceSnapshotOptions } from "./snapshots/life-evidence-snapshot.js";
25
- export { loadContinuitySnapshot, type LoadContinuitySnapshotParams } from "./snapshots/continuity-snapshot.js";
26
- export type { UserInterestSnapshot, UserInterestSignal, UserInterestStaleness } from "./user-interest/types.js";
27
- export { loadUserInterestSnapshot } from "./user-interest/load-user-interest-snapshot.js";
28
- export type { DeliveryAttemptWrite, DeliveryAttemptRecord, DeliveryAttemptAck } from "./delivery/types.js";
29
- export { writeDeliveryAttempt } from "./delivery/write-delivery-attempt.js";
30
- export { listDeliveryAttemptsByDecisionId } from "./delivery/query-delivery-attempts.js";
31
- export type { OperatorFallbackWrite, OperatorFallbackReason } from "./fallback/operator-fallback-types.js";
32
- export type { OperatorFallbackView } from "./fallback/operator-fallback-view.js";
33
- export { writeOperatorFallback, type OperatorFallbackAck } from "./fallback/write-operator-fallback.js";
34
- export { loadOperatorFallbackRow, normalizeFallbackRef, toOperatorFallbackView, } from "./fallback/load-operator-fallback.js";
35
- export type { QuietArtifactWrite, QuietClaim, QuietArtifactKind } from "./quiet/quiet-artifact-types.js";
36
- export { writeQuietArtifact, calculateQuietSourceCoverage, evidenceGroundingRatio, type QuietArtifactAck, } from "./quiet/quiet-artifact-writer.js";
37
- export { persistQuietArtifactToWorkspace, type PersistQuietArtifactResult } from "./quiet/persist-quiet-artifact.js";
1
+ export { createStateDatabase, type StateDatabase } from "./db/index.js";
2
+ export * as storageSchema from "./db/schema/index.js";
3
+ export * from "./repositories/index.js";
4
+ export { createWorkspaceArtifactStore, type WorkspaceArtifactStore } from "./memory/workspace/store.js";
5
+ export * from "./memory/workspace/paths.js";
6
+ export * from "./memory/workspace/types.js";
7
+ export { createCredentialVault, type CredentialVault } from "./services/credential-vault.js";
8
+ export { createEffectCommitStore, type EffectCommitStore } from "./services/effect-commit-store.js";
9
+ export { createDailyLogPipeline, type DailyLogPipeline } from "./services/daily-log-pipeline.js";
10
+ export { createQuietInputLoader, type QuietInputLoader } from "./services/quiet-input-loader.js";
11
+ export { createPersonaCandidateLoader, type PersonaCandidateLoader } from "./services/persona-candidate-loader.js";
12
+ export { createGovernanceLayer, type GovernanceLayer, type AnchorWriteProposal, type ProposalAck, type ApplyAck } from "./services/governance-layer.js";
13
+ export { createProvenanceService, type ProvenanceService, type ProvenanceTrace, type ProvenanceDetail } from "./services/provenance-service.js";
14
+ export { createRepairAndBackupService, type RepairAndBackupService, type RepairAndBackupOptions, type RepairAndBackupResult, } from "./services/repair-and-backup.js";
15
+ export { runStartupRepairAndBackup } from "./bootstrap/repair.js";
16
+ export { probeNativeSqliteLoad } from "./bootstrap/native-sqlite-probe.js";
17
+ export { runStorageModeSmoke, type StorageModeSmokeReport, type RunStorageModeSmokeOptions, } from "./bootstrap/storage-mode-smoke.js";
18
+ export { repairStateIndexes, type RepairSummary, type RepairStateIndexesOptions, type RepairGateStatus, } from "./bootstrap/repair-gate.js";
19
+ export { createStateAPI, type StateAPI, type MemoryReadPort, type MemoryWritePort, type CredentialContextPort, type IntentCommitPort, type ProvenancePort } from "./state-api.js";
20
+ export type { LifeEvidence, LifeEvidenceCandidate, LifeEvidenceType, LifeEvidenceWriteAck, Sensitivity, SourceRef, } from "./life-evidence/types.js";
21
+ export { appendLifeEvidence, type AppendLifeEvidenceOptions } from "./life-evidence/append-life-evidence.js";
22
+ export { loadRhythmPolicySnapshot, type RhythmPolicySnapshot } from "./rhythm/rhythm-policy-snapshot.js";
23
+ export type { LifeEvidenceQuery, LifeEvidenceSnapshot, LifeEvidenceReadModel, ContinuitySnapshot, SourceCoverage, } from "./snapshots/types.js";
24
+ export { loadLifeEvidenceSnapshot, type LoadLifeEvidenceSnapshotOptions } from "./snapshots/life-evidence-snapshot.js";
25
+ export { loadContinuitySnapshot, type LoadContinuitySnapshotParams } from "./snapshots/continuity-snapshot.js";
26
+ export type { UserInterestSnapshot, UserInterestSignal, UserInterestStaleness } from "./user-interest/types.js";
27
+ export { loadUserInterestSnapshot } from "./user-interest/load-user-interest-snapshot.js";
28
+ export type { DeliveryAttemptWrite, DeliveryAttemptRecord, DeliveryAttemptAck } from "./delivery/types.js";
29
+ export { writeDeliveryAttempt } from "./delivery/write-delivery-attempt.js";
30
+ export { listDeliveryAttemptsByDecisionId } from "./delivery/query-delivery-attempts.js";
31
+ export type { OperatorFallbackWrite, OperatorFallbackReason } from "./fallback/operator-fallback-types.js";
32
+ export type { OperatorFallbackView } from "./fallback/operator-fallback-view.js";
33
+ export { writeOperatorFallback, type OperatorFallbackAck } from "./fallback/write-operator-fallback.js";
34
+ export { loadOperatorFallbackRow, normalizeFallbackRef, toOperatorFallbackView, } from "./fallback/load-operator-fallback.js";
35
+ export type { QuietArtifactWrite, QuietClaim, QuietArtifactKind } from "./quiet/quiet-artifact-types.js";
36
+ export { writeQuietArtifact, calculateQuietSourceCoverage, evidenceGroundingRatio, type QuietArtifactAck, } from "./quiet/quiet-artifact-writer.js";
37
+ export { persistQuietArtifactToWorkspace, type PersistQuietArtifactResult } from "./quiet/persist-quiet-artifact.js";
@@ -1,30 +1,30 @@
1
- export { createStateDatabase } from "./db/index.js";
2
- export * as storageSchema from "./db/schema/index.js";
3
- export * from "./repositories/index.js";
4
- export { createWorkspaceArtifactStore } from "./memory/workspace/store.js";
5
- export * from "./memory/workspace/paths.js";
6
- export * from "./memory/workspace/types.js";
7
- export { createCredentialVault } from "./services/credential-vault.js";
8
- export { createEffectCommitStore } from "./services/effect-commit-store.js";
9
- export { createDailyLogPipeline } from "./services/daily-log-pipeline.js";
10
- export { createQuietInputLoader } from "./services/quiet-input-loader.js";
11
- export { createPersonaCandidateLoader } from "./services/persona-candidate-loader.js";
12
- export { createGovernanceLayer } from "./services/governance-layer.js";
13
- export { createProvenanceService } from "./services/provenance-service.js";
14
- export { createRepairAndBackupService, } from "./services/repair-and-backup.js";
15
- export { runStartupRepairAndBackup } from "./bootstrap/repair.js";
16
- export { probeNativeSqliteLoad } from "./bootstrap/native-sqlite-probe.js";
17
- export { runStorageModeSmoke, } from "./bootstrap/storage-mode-smoke.js";
18
- export { repairStateIndexes, } from "./bootstrap/repair-gate.js";
19
- export { createStateAPI } from "./state-api.js";
20
- export { appendLifeEvidence } from "./life-evidence/append-life-evidence.js";
21
- export { loadRhythmPolicySnapshot } from "./rhythm/rhythm-policy-snapshot.js";
22
- export { loadLifeEvidenceSnapshot } from "./snapshots/life-evidence-snapshot.js";
23
- export { loadContinuitySnapshot } from "./snapshots/continuity-snapshot.js";
24
- export { loadUserInterestSnapshot } from "./user-interest/load-user-interest-snapshot.js";
25
- export { writeDeliveryAttempt } from "./delivery/write-delivery-attempt.js";
26
- export { listDeliveryAttemptsByDecisionId } from "./delivery/query-delivery-attempts.js";
27
- export { writeOperatorFallback } from "./fallback/write-operator-fallback.js";
28
- export { loadOperatorFallbackRow, normalizeFallbackRef, toOperatorFallbackView, } from "./fallback/load-operator-fallback.js";
29
- export { writeQuietArtifact, calculateQuietSourceCoverage, evidenceGroundingRatio, } from "./quiet/quiet-artifact-writer.js";
30
- export { persistQuietArtifactToWorkspace } from "./quiet/persist-quiet-artifact.js";
1
+ export { createStateDatabase } from "./db/index.js";
2
+ export * as storageSchema from "./db/schema/index.js";
3
+ export * from "./repositories/index.js";
4
+ export { createWorkspaceArtifactStore } from "./memory/workspace/store.js";
5
+ export * from "./memory/workspace/paths.js";
6
+ export * from "./memory/workspace/types.js";
7
+ export { createCredentialVault } from "./services/credential-vault.js";
8
+ export { createEffectCommitStore } from "./services/effect-commit-store.js";
9
+ export { createDailyLogPipeline } from "./services/daily-log-pipeline.js";
10
+ export { createQuietInputLoader } from "./services/quiet-input-loader.js";
11
+ export { createPersonaCandidateLoader } from "./services/persona-candidate-loader.js";
12
+ export { createGovernanceLayer } from "./services/governance-layer.js";
13
+ export { createProvenanceService } from "./services/provenance-service.js";
14
+ export { createRepairAndBackupService, } from "./services/repair-and-backup.js";
15
+ export { runStartupRepairAndBackup } from "./bootstrap/repair.js";
16
+ export { probeNativeSqliteLoad } from "./bootstrap/native-sqlite-probe.js";
17
+ export { runStorageModeSmoke, } from "./bootstrap/storage-mode-smoke.js";
18
+ export { repairStateIndexes, } from "./bootstrap/repair-gate.js";
19
+ export { createStateAPI } from "./state-api.js";
20
+ export { appendLifeEvidence } from "./life-evidence/append-life-evidence.js";
21
+ export { loadRhythmPolicySnapshot } from "./rhythm/rhythm-policy-snapshot.js";
22
+ export { loadLifeEvidenceSnapshot } from "./snapshots/life-evidence-snapshot.js";
23
+ export { loadContinuitySnapshot } from "./snapshots/continuity-snapshot.js";
24
+ export { loadUserInterestSnapshot } from "./user-interest/load-user-interest-snapshot.js";
25
+ export { writeDeliveryAttempt } from "./delivery/write-delivery-attempt.js";
26
+ export { listDeliveryAttemptsByDecisionId } from "./delivery/query-delivery-attempts.js";
27
+ export { writeOperatorFallback } from "./fallback/write-operator-fallback.js";
28
+ export { loadOperatorFallbackRow, normalizeFallbackRef, toOperatorFallbackView, } from "./fallback/load-operator-fallback.js";
29
+ export { writeQuietArtifact, calculateQuietSourceCoverage, evidenceGroundingRatio, } from "./quiet/quiet-artifact-writer.js";
30
+ export { persistQuietArtifactToWorkspace } from "./quiet/persist-quiet-artifact.js";
@@ -1,7 +1,7 @@
1
- import type { StateDatabase } from "../db/index.js";
2
- import type { ProvenanceRepository } from "../repositories/provenance-repository.js";
3
- import type { LifeEvidenceCandidate, LifeEvidenceWriteAck } from "./types.js";
4
- export interface AppendLifeEvidenceOptions {
5
- provenance?: ProvenanceRepository;
6
- }
7
- export declare function appendLifeEvidence(state: StateDatabase, workspaceRoot: string, candidate: LifeEvidenceCandidate, options?: AppendLifeEvidenceOptions): Promise<LifeEvidenceWriteAck>;
1
+ import type { StateDatabase } from "../db/index.js";
2
+ import type { ProvenanceRepository } from "../repositories/provenance-repository.js";
3
+ import type { LifeEvidenceCandidate, LifeEvidenceWriteAck } from "./types.js";
4
+ export interface AppendLifeEvidenceOptions {
5
+ provenance?: ProvenanceRepository;
6
+ }
7
+ export declare function appendLifeEvidence(state: StateDatabase, workspaceRoot: string, candidate: LifeEvidenceCandidate, options?: AppendLifeEvidenceOptions): Promise<LifeEvidenceWriteAck>;
@@ -1,64 +1,64 @@
1
- /**
2
- * Append canonical LifeEvidence artifacts and SQLite index rows (state-system T4.1.1).
3
- *
4
- * Core logic: reject missing source refs and credential sensitivity; write JSON artifact;
5
- * insert life_evidence_index; bump snapshot epoch file for downstream snapshot invalidation.
6
- *
7
- * Dependencies: StateDatabase drizzle + optional ProvenanceRepository for source edges.
8
- *
9
- * Boundaries: does not run connector normalization; caller supplies validated candidates.
10
- *
11
- * Test coverage: tests/unit/storage/life-evidence.test.ts
12
- */
13
- import * as crypto from "node:crypto";
14
- import fs from "node:fs";
15
- import path from "node:path";
16
- import { lifeEvidenceIndex } from "../db/schema/life-evidence-index.js";
17
- export async function appendLifeEvidence(state, workspaceRoot, candidate, options) {
18
- if (!candidate.sourceRefs || candidate.sourceRefs.length === 0) {
19
- throw new Error("life_evidence_missing_source_refs");
20
- }
21
- if (candidate.sensitivity === "credential") {
22
- throw new Error("life_evidence_credential_rejected");
23
- }
24
- const evidenceId = candidate.id ?? `lev_${crypto.randomUUID()}`;
25
- const artifactRel = path.join(".second-nature", "evidence", `${evidenceId}.json`);
26
- const artifactAbs = path.join(workspaceRoot, artifactRel);
27
- const artifactRef = {
28
- id: `artifact:${evidenceId}`,
29
- kind: "workspace_artifact",
30
- uri: artifactRel.replace(/\\/g, "/"),
31
- };
32
- const life = {
33
- id: evidenceId,
34
- timestamp: candidate.timestamp,
35
- evidenceType: candidate.evidenceType,
36
- platformId: candidate.platformId,
37
- summary: candidate.summary,
38
- rawContentRef: candidate.rawContentRef,
39
- sourceRefs: candidate.sourceRefs,
40
- sensitivity: candidate.sensitivity,
41
- confidence: candidate.confidence ?? 1,
42
- tags: candidate.tags ?? [],
43
- producer: candidate.producer,
44
- artifactRef,
45
- };
46
- fs.mkdirSync(path.dirname(artifactAbs), { recursive: true });
47
- fs.writeFileSync(artifactAbs, JSON.stringify(life, null, 2), "utf-8");
48
- const epochPath = path.join(workspaceRoot, ".second-nature", "evidence", ".snapshot_epoch");
49
- fs.writeFileSync(epochPath, `${Date.now()}\n`, "utf-8");
50
- await state.db.insert(lifeEvidenceIndex).values({
51
- id: evidenceId,
52
- timestamp: candidate.timestamp,
53
- evidenceType: candidate.evidenceType,
54
- sensitivity: candidate.sensitivity,
55
- producer: candidate.producer,
56
- artifactPath: artifactRel.replace(/\\/g, "/"),
57
- platformId: candidate.platformId ?? null,
58
- sourceRefsJson: JSON.stringify(candidate.sourceRefs),
59
- });
60
- if (options?.provenance) {
61
- await options.provenance.linkEntrySources(evidenceId, candidate.sourceRefs.map((ref) => ref.id));
62
- }
63
- return { evidenceId, artifactRef };
64
- }
1
+ /**
2
+ * Append canonical LifeEvidence artifacts and SQLite index rows (state-system T4.1.1).
3
+ *
4
+ * Core logic: reject missing source refs and credential sensitivity; write JSON artifact;
5
+ * insert life_evidence_index; bump snapshot epoch file for downstream snapshot invalidation.
6
+ *
7
+ * Dependencies: StateDatabase drizzle + optional ProvenanceRepository for source edges.
8
+ *
9
+ * Boundaries: does not run connector normalization; caller supplies validated candidates.
10
+ *
11
+ * Test coverage: tests/unit/storage/life-evidence.test.ts
12
+ */
13
+ import * as crypto from "node:crypto";
14
+ import fs from "node:fs";
15
+ import path from "node:path";
16
+ import { lifeEvidenceIndex } from "../db/schema/life-evidence-index.js";
17
+ export async function appendLifeEvidence(state, workspaceRoot, candidate, options) {
18
+ if (!candidate.sourceRefs || candidate.sourceRefs.length === 0) {
19
+ throw new Error("life_evidence_missing_source_refs");
20
+ }
21
+ if (candidate.sensitivity === "credential") {
22
+ throw new Error("life_evidence_credential_rejected");
23
+ }
24
+ const evidenceId = candidate.id ?? `lev_${crypto.randomUUID()}`;
25
+ const artifactRel = path.join(".second-nature", "evidence", `${evidenceId}.json`);
26
+ const artifactAbs = path.join(workspaceRoot, artifactRel);
27
+ const artifactRef = {
28
+ id: `artifact:${evidenceId}`,
29
+ kind: "workspace_artifact",
30
+ uri: artifactRel.replace(/\\/g, "/"),
31
+ };
32
+ const life = {
33
+ id: evidenceId,
34
+ timestamp: candidate.timestamp,
35
+ evidenceType: candidate.evidenceType,
36
+ platformId: candidate.platformId,
37
+ summary: candidate.summary,
38
+ rawContentRef: candidate.rawContentRef,
39
+ sourceRefs: candidate.sourceRefs,
40
+ sensitivity: candidate.sensitivity,
41
+ confidence: candidate.confidence ?? 1,
42
+ tags: candidate.tags ?? [],
43
+ producer: candidate.producer,
44
+ artifactRef,
45
+ };
46
+ fs.mkdirSync(path.dirname(artifactAbs), { recursive: true });
47
+ fs.writeFileSync(artifactAbs, JSON.stringify(life, null, 2), "utf-8");
48
+ const epochPath = path.join(workspaceRoot, ".second-nature", "evidence", ".snapshot_epoch");
49
+ fs.writeFileSync(epochPath, `${Date.now()}\n`, "utf-8");
50
+ await state.db.insert(lifeEvidenceIndex).values({
51
+ id: evidenceId,
52
+ timestamp: candidate.timestamp,
53
+ evidenceType: candidate.evidenceType,
54
+ sensitivity: candidate.sensitivity,
55
+ producer: candidate.producer,
56
+ artifactPath: artifactRel.replace(/\\/g, "/"),
57
+ platformId: candidate.platformId ?? null,
58
+ sourceRefsJson: JSON.stringify(candidate.sourceRefs),
59
+ });
60
+ if (options?.provenance) {
61
+ await options.provenance.linkEntrySources(evidenceId, candidate.sourceRefs.map((ref) => ref.id));
62
+ }
63
+ return { evidenceId, artifactRef };
64
+ }
@@ -1,45 +1,45 @@
1
- /**
2
- * Life evidence contract types (state-system v5 subset for ingest port).
3
- *
4
- * Test coverage: tests/unit/storage/life-evidence.test.ts
5
- */
6
- export type LifeEvidenceType = "platform_browse" | "platform_interaction" | "work_progress" | "task_discovery" | "user_interaction" | "quiet_reflection" | "delivery_fallback";
7
- export type Sensitivity = "public" | "private" | "credential" | "sensitive";
8
- export interface SourceRef {
9
- id: string;
10
- kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
11
- uri: string;
12
- excerptHash?: string;
13
- observedAt?: string;
14
- }
15
- export interface LifeEvidenceCandidate {
16
- id?: string;
17
- timestamp: string;
18
- evidenceType: LifeEvidenceType;
19
- platformId?: string;
20
- summary: string;
21
- rawContentRef?: string;
22
- sourceRefs: SourceRef[];
23
- sensitivity: Sensitivity;
24
- confidence?: number;
25
- tags?: string[];
26
- producer: "connector-system" | "control-plane-system" | "observability-system" | "state-system";
27
- }
28
- export interface LifeEvidence {
29
- id: string;
30
- timestamp: string;
31
- evidenceType: LifeEvidenceType;
32
- platformId?: string;
33
- summary: string;
34
- rawContentRef?: string;
35
- sourceRefs: SourceRef[];
36
- sensitivity: Sensitivity;
37
- confidence: number;
38
- tags: string[];
39
- producer: string;
40
- artifactRef: SourceRef;
41
- }
42
- export interface LifeEvidenceWriteAck {
43
- evidenceId: string;
44
- artifactRef: SourceRef;
45
- }
1
+ /**
2
+ * Life evidence contract types (state-system v5 subset for ingest port).
3
+ *
4
+ * Test coverage: tests/unit/storage/life-evidence.test.ts
5
+ */
6
+ export type LifeEvidenceType = "platform_browse" | "platform_interaction" | "work_progress" | "task_discovery" | "user_interaction" | "quiet_reflection" | "delivery_fallback";
7
+ export type Sensitivity = "public" | "private" | "credential" | "sensitive";
8
+ export interface SourceRef {
9
+ id: string;
10
+ kind: "platform_item" | "workspace_artifact" | "decision_record" | "user_anchor" | "connector_result" | "host_report" | "fallback_artifact";
11
+ uri: string;
12
+ excerptHash?: string;
13
+ observedAt?: string;
14
+ }
15
+ export interface LifeEvidenceCandidate {
16
+ id?: string;
17
+ timestamp: string;
18
+ evidenceType: LifeEvidenceType;
19
+ platformId?: string;
20
+ summary: string;
21
+ rawContentRef?: string;
22
+ sourceRefs: SourceRef[];
23
+ sensitivity: Sensitivity;
24
+ confidence?: number;
25
+ tags?: string[];
26
+ producer: "connector-system" | "control-plane-system" | "observability-system" | "state-system";
27
+ }
28
+ export interface LifeEvidence {
29
+ id: string;
30
+ timestamp: string;
31
+ evidenceType: LifeEvidenceType;
32
+ platformId?: string;
33
+ summary: string;
34
+ rawContentRef?: string;
35
+ sourceRefs: SourceRef[];
36
+ sensitivity: Sensitivity;
37
+ confidence: number;
38
+ tags: string[];
39
+ producer: string;
40
+ artifactRef: SourceRef;
41
+ }
42
+ export interface LifeEvidenceWriteAck {
43
+ evidenceId: string;
44
+ artifactRef: SourceRef;
45
+ }
@@ -1,6 +1,6 @@
1
- /**
2
- * Life evidence contract types (state-system v5 subset for ingest port).
3
- *
4
- * Test coverage: tests/unit/storage/life-evidence.test.ts
5
- */
6
- export {};
1
+ /**
2
+ * Life evidence contract types (state-system v5 subset for ingest port).
3
+ *
4
+ * Test coverage: tests/unit/storage/life-evidence.test.ts
5
+ */
6
+ export {};
@@ -1,7 +1,7 @@
1
- import type { QuietArtifactWrite } from "./quiet-artifact-types.js";
2
- import type { QuietArtifactAck } from "./quiet-artifact-writer.js";
3
- export interface PersistQuietArtifactResult {
4
- relativePath: string;
5
- absolutePath: string;
6
- }
7
- export declare function persistQuietArtifactToWorkspace(workspaceRoot: string, ack: QuietArtifactAck, input: QuietArtifactWrite): Promise<PersistQuietArtifactResult>;
1
+ import type { QuietArtifactWrite } from "./quiet-artifact-types.js";
2
+ import type { QuietArtifactAck } from "./quiet-artifact-writer.js";
3
+ export interface PersistQuietArtifactResult {
4
+ relativePath: string;
5
+ absolutePath: string;
6
+ }
7
+ export declare function persistQuietArtifactToWorkspace(workspaceRoot: string, ack: QuietArtifactAck, input: QuietArtifactWrite): Promise<PersistQuietArtifactResult>;
@@ -1,22 +1,22 @@
1
- /**
2
- * Writes validated Quiet artifact JSON under workspace `.second-nature/quiet/{day}/` (CR-M3 / T2.3.3).
3
- */
4
- import * as fs from "node:fs/promises";
5
- import * as path from "node:path";
6
- export async function persistQuietArtifactToWorkspace(workspaceRoot, ack, input) {
7
- const dir = path.join(workspaceRoot, ".second-nature", "quiet", input.day);
8
- await fs.mkdir(dir, { recursive: true });
9
- const file = path.join(dir, `${ack.artifactId}.json`);
10
- const payload = {
11
- artifactId: ack.artifactId,
12
- artifactRef: ack.artifactRef,
13
- sourceCoverage: ack.sourceCoverage,
14
- write: input,
15
- persistedAt: new Date().toISOString(),
16
- };
17
- await fs.writeFile(file, JSON.stringify(payload, null, 2), "utf8");
18
- return {
19
- relativePath: path.relative(workspaceRoot, file),
20
- absolutePath: file,
21
- };
22
- }
1
+ /**
2
+ * Writes validated Quiet artifact JSON under workspace `.second-nature/quiet/{day}/` (CR-M3 / T2.3.3).
3
+ */
4
+ import * as fs from "node:fs/promises";
5
+ import * as path from "node:path";
6
+ export async function persistQuietArtifactToWorkspace(workspaceRoot, ack, input) {
7
+ const dir = path.join(workspaceRoot, ".second-nature", "quiet", input.day);
8
+ await fs.mkdir(dir, { recursive: true });
9
+ const file = path.join(dir, `${ack.artifactId}.json`);
10
+ const payload = {
11
+ artifactId: ack.artifactId,
12
+ artifactRef: ack.artifactRef,
13
+ sourceCoverage: ack.sourceCoverage,
14
+ write: input,
15
+ persistedAt: new Date().toISOString(),
16
+ };
17
+ await fs.writeFile(file, JSON.stringify(payload, null, 2), "utf8");
18
+ return {
19
+ relativePath: path.relative(workspaceRoot, file),
20
+ absolutePath: file,
21
+ };
22
+ }
@@ -1,18 +1,18 @@
1
- import type { SourceRef } from "../life-evidence/types.js";
2
- export type QuietArtifactKind = "daily_report" | "narrative_reflection" | "curated_memory_candidate" | "empty_state";
3
- export type QuietClaimType = "fact" | "emotion" | "interpretation" | "next_step";
4
- export interface QuietClaim {
5
- id: string;
6
- text: string;
7
- sourceRefs: SourceRef[];
8
- claimType: QuietClaimType;
9
- }
10
- export interface QuietArtifactWrite {
11
- day: string;
12
- kind: QuietArtifactKind;
13
- title: string;
14
- body: string;
15
- claims: QuietClaim[];
16
- sourceRefs: SourceRef[];
17
- memoryCandidateRefs?: SourceRef[];
18
- }
1
+ import type { SourceRef } from "../life-evidence/types.js";
2
+ export type QuietArtifactKind = "daily_report" | "narrative_reflection" | "curated_memory_candidate" | "empty_state";
3
+ export type QuietClaimType = "fact" | "emotion" | "interpretation" | "next_step";
4
+ export interface QuietClaim {
5
+ id: string;
6
+ text: string;
7
+ sourceRefs: SourceRef[];
8
+ claimType: QuietClaimType;
9
+ }
10
+ export interface QuietArtifactWrite {
11
+ day: string;
12
+ kind: QuietArtifactKind;
13
+ title: string;
14
+ body: string;
15
+ claims: QuietClaim[];
16
+ sourceRefs: SourceRef[];
17
+ memoryCandidateRefs?: SourceRef[];
18
+ }
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,15 +1,15 @@
1
- import type { SourceRef } from "../life-evidence/types.js";
2
- import type { SourceCoverage } from "../snapshots/types.js";
3
- import type { QuietArtifactWrite } from "./quiet-artifact-types.js";
4
- import type { QuietClaim } from "./quiet-artifact-types.js";
5
- export declare function calculateQuietSourceCoverage(claims: QuietClaim[]): SourceCoverage;
6
- /** Ratio of factual claims whose refs intersect the artifact's evidence bundle (T4.4.1). */
7
- export declare function evidenceGroundingRatio(input: Pick<QuietArtifactWrite, "claims" | "sourceRefs">): number;
8
- export interface QuietArtifactAck {
9
- artifactId: string;
10
- artifactRef: SourceRef;
11
- sourceCoverage: SourceCoverage;
12
- }
13
- export declare function writeQuietArtifact(input: QuietArtifactWrite, opts?: {
14
- minimumCoverageRatio?: number;
15
- }): QuietArtifactAck;
1
+ import type { SourceRef } from "../life-evidence/types.js";
2
+ import type { SourceCoverage } from "../snapshots/types.js";
3
+ import type { QuietArtifactWrite } from "./quiet-artifact-types.js";
4
+ import type { QuietClaim } from "./quiet-artifact-types.js";
5
+ export declare function calculateQuietSourceCoverage(claims: QuietClaim[]): SourceCoverage;
6
+ /** Ratio of factual claims whose refs intersect the artifact's evidence bundle (T4.4.1). */
7
+ export declare function evidenceGroundingRatio(input: Pick<QuietArtifactWrite, "claims" | "sourceRefs">): number;
8
+ export interface QuietArtifactAck {
9
+ artifactId: string;
10
+ artifactRef: SourceRef;
11
+ sourceCoverage: SourceCoverage;
12
+ }
13
+ export declare function writeQuietArtifact(input: QuietArtifactWrite, opts?: {
14
+ minimumCoverageRatio?: number;
15
+ }): QuietArtifactAck;