@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.
- package/index.js +855 -855
- package/openclaw.plugin.json +29 -29
- package/package.json +52 -52
- package/runtime/cli/commands/index.d.ts +14 -14
- package/runtime/cli/commands/index.js +193 -193
- package/runtime/cli/explain/explain-surface-subject.d.ts +8 -8
- package/runtime/cli/explain/explain-surface-subject.js +9 -9
- package/runtime/cli/explain/format-explanation.d.ts +12 -12
- package/runtime/cli/explain/format-explanation.js +12 -12
- package/runtime/cli/explain/resolve-subject.js +41 -41
- package/runtime/cli/host-capability/classify-delivery.d.ts +14 -14
- package/runtime/cli/host-capability/classify-delivery.js +20 -20
- package/runtime/cli/host-capability/probe-host-capability.d.ts +2 -2
- package/runtime/cli/host-capability/probe-host-capability.js +58 -58
- package/runtime/cli/host-capability/record-host-capability.d.ts +6 -6
- package/runtime/cli/host-capability/record-host-capability.js +14 -14
- package/runtime/cli/host-capability/types.d.ts +71 -71
- package/runtime/cli/host-capability/types.js +6 -6
- package/runtime/cli/host-smoke/run-host-smoke.d.ts +2 -2
- package/runtime/cli/host-smoke/run-host-smoke.js +40 -40
- package/runtime/cli/host-smoke/types.d.ts +35 -35
- package/runtime/cli/host-smoke/types.js +6 -6
- package/runtime/cli/index.js +58 -54
- package/runtime/cli/ops/heartbeat-surface.d.ts +38 -35
- package/runtime/cli/ops/heartbeat-surface.js +73 -71
- package/runtime/cli/ops/ops-router.d.ts +19 -16
- package/runtime/cli/ops/ops-router.js +89 -87
- package/runtime/cli/ops/show-operator-fallback.d.ts +13 -13
- package/runtime/cli/ops/show-operator-fallback.js +22 -22
- package/runtime/cli/ops/workspace-heartbeat-runner.d.ts +19 -10
- package/runtime/cli/ops/workspace-heartbeat-runner.js +39 -26
- package/runtime/cli/read-models/index.d.ts +29 -29
- package/runtime/cli/read-models/index.js +256 -256
- package/runtime/cli/read-models/operator-explain-map.d.ts +6 -6
- package/runtime/cli/read-models/operator-explain-map.js +10 -10
- package/runtime/cli/read-models/types.d.ts +79 -79
- package/runtime/cli/runtime/runtime-artifact-boundary.d.ts +28 -28
- package/runtime/cli/runtime/runtime-artifact-boundary.js +94 -94
- package/runtime/connectors/base/contract.d.ts +87 -87
- package/runtime/connectors/base/execution-policy.d.ts +47 -47
- package/runtime/connectors/base/execution-policy.js +82 -82
- package/runtime/connectors/base/index.d.ts +8 -8
- package/runtime/connectors/base/index.js +8 -8
- package/runtime/connectors/base/manifest.d.ts +64 -64
- package/runtime/connectors/base/manifest.js +86 -86
- package/runtime/connectors/base/map-life-evidence.d.ts +16 -16
- package/runtime/connectors/base/map-life-evidence.js +79 -79
- package/runtime/connectors/base/policy-layer.d.ts +29 -29
- package/runtime/connectors/base/policy-layer.js +198 -198
- package/runtime/connectors/base/route-planner.js +99 -99
- package/runtime/connectors/index.d.ts +5 -5
- package/runtime/connectors/index.js +5 -5
- package/runtime/connectors/near-real/near-real-connector-smoke.d.ts +19 -19
- package/runtime/connectors/near-real/near-real-connector-smoke.js +152 -152
- package/runtime/core/second-nature/heartbeat/heartbeat-executor.js +114 -114
- package/runtime/core/second-nature/heartbeat/heartbeat-loop.d.ts +63 -63
- package/runtime/core/second-nature/heartbeat/heartbeat-loop.js +139 -139
- package/runtime/core/second-nature/heartbeat/index.d.ts +8 -8
- package/runtime/core/second-nature/heartbeat/index.js +7 -7
- package/runtime/core/second-nature/heartbeat/run-heartbeat-cycle.d.ts +21 -21
- package/runtime/core/second-nature/heartbeat/run-heartbeat-cycle.js +35 -35
- package/runtime/core/second-nature/heartbeat/runtime-snapshot.d.ts +28 -28
- package/runtime/core/second-nature/heartbeat/runtime-snapshot.js +35 -35
- package/runtime/core/second-nature/heartbeat/signal.d.ts +42 -42
- package/runtime/core/second-nature/heartbeat/snapshot-builder.d.ts +51 -51
- package/runtime/core/second-nature/index.d.ts +22 -22
- package/runtime/core/second-nature/index.js +22 -22
- package/runtime/core/second-nature/orchestrator/effect-dispatcher.d.ts +100 -100
- package/runtime/core/second-nature/orchestrator/effect-dispatcher.js +144 -144
- package/runtime/core/second-nature/orchestrator/guard-layer.d.ts +8 -8
- package/runtime/core/second-nature/orchestrator/guard-layer.js +110 -110
- package/runtime/core/second-nature/orchestrator/intent-planner.d.ts +13 -13
- package/runtime/core/second-nature/orchestrator/intent-planner.js +199 -199
- package/runtime/core/second-nature/orchestrator/lease-manager.d.ts +14 -14
- package/runtime/core/second-nature/orchestrator/lease-manager.js +58 -58
- package/runtime/core/second-nature/outreach/build-outreach-draft-request.d.ts +6 -6
- package/runtime/core/second-nature/outreach/build-outreach-draft-request.js +63 -63
- package/runtime/core/second-nature/outreach/delivery-target.d.ts +26 -26
- package/runtime/core/second-nature/outreach/delivery-target.js +70 -70
- package/runtime/core/second-nature/outreach/dispatch-user-outreach.d.ts +38 -38
- package/runtime/core/second-nature/outreach/dispatch-user-outreach.js +119 -119
- package/runtime/core/second-nature/outreach/judge-input-from-snapshot.d.ts +7 -7
- package/runtime/core/second-nature/outreach/judge-input-from-snapshot.js +45 -45
- package/runtime/core/second-nature/outreach/judge-outreach.d.ts +40 -40
- package/runtime/core/second-nature/outreach/judge-outreach.js +121 -121
- package/runtime/core/second-nature/quiet/run-source-backed-quiet.d.ts +21 -21
- package/runtime/core/second-nature/quiet/run-source-backed-quiet.js +123 -123
- package/runtime/core/second-nature/rhythm/planner-rhythm-window.d.ts +15 -15
- package/runtime/core/second-nature/rhythm/planner-rhythm-window.js +52 -52
- package/runtime/core/second-nature/rhythm/policy-bridge.d.ts +19 -19
- package/runtime/core/second-nature/rhythm/policy-bridge.js +34 -34
- package/runtime/core/second-nature/runtime/service-entry.js +45 -45
- package/runtime/core/second-nature/types.d.ts +51 -51
- package/runtime/guidance/draft-outreach-message.d.ts +7 -7
- package/runtime/guidance/draft-outreach-message.js +42 -42
- package/runtime/guidance/evidence-guidance.d.ts +40 -40
- package/runtime/guidance/evidence-guidance.js +52 -52
- package/runtime/guidance/index.d.ts +11 -11
- package/runtime/guidance/index.js +11 -11
- package/runtime/guidance/outreach-draft-schema.d.ts +228 -228
- package/runtime/guidance/outreach-draft-schema.js +80 -80
- package/runtime/observability/audit/append-only-audit-store.d.ts +14 -14
- package/runtime/observability/audit/append-only-audit-store.js +21 -21
- package/runtime/observability/audit/audit-envelope.d.ts +51 -51
- package/runtime/observability/audit/audit-envelope.js +130 -130
- package/runtime/observability/audit/verify-audit-hash-chain.d.ts +23 -23
- package/runtime/observability/audit/verify-audit-hash-chain.js +83 -83
- package/runtime/observability/db/index.js +124 -124
- package/runtime/observability/db/schema/host-capability-reports.d.ts +180 -180
- package/runtime/observability/db/schema/host-capability-reports.js +12 -12
- package/runtime/observability/db/schema/index.d.ts +947 -947
- package/runtime/observability/db/schema/index.js +71 -71
- package/runtime/observability/index.d.ts +20 -19
- package/runtime/observability/index.js +19 -18
- package/runtime/observability/query/explain-query.d.ts +48 -48
- package/runtime/observability/query/explain-query.js +114 -114
- package/runtime/observability/query/export-audit-bundle.d.ts +22 -22
- package/runtime/observability/query/export-audit-bundle.js +27 -27
- package/runtime/observability/services/decision-ledger.d.ts +46 -46
- package/runtime/observability/services/decision-ledger.js +161 -161
- package/runtime/observability/services/governance-audit.d.ts +41 -41
- package/runtime/observability/services/governance-audit.js +163 -163
- package/runtime/observability/services/governance-plane-recorder.d.ts +47 -47
- package/runtime/observability/services/governance-plane-recorder.js +55 -55
- package/runtime/observability/services/lived-experience-audit.d.ts +97 -97
- package/runtime/observability/services/lived-experience-audit.js +162 -162
- package/runtime/observability/services/runtime-decision-recorder.d.ts +29 -0
- package/runtime/observability/services/runtime-decision-recorder.js +94 -0
- package/runtime/storage/bootstrap/native-sqlite-probe.d.ts +7 -7
- package/runtime/storage/bootstrap/native-sqlite-probe.js +28 -28
- package/runtime/storage/bootstrap/repair-gate.d.ts +17 -17
- package/runtime/storage/bootstrap/repair-gate.js +71 -71
- package/runtime/storage/bootstrap/storage-mode-smoke.d.ts +38 -38
- package/runtime/storage/bootstrap/storage-mode-smoke.js +85 -85
- package/runtime/storage/db/index.js +154 -154
- package/runtime/storage/db/schema/delivery-attempts.d.ts +199 -199
- package/runtime/storage/db/schema/delivery-attempts.js +13 -13
- package/runtime/storage/db/schema/index.d.ts +9 -9
- package/runtime/storage/db/schema/index.js +9 -9
- package/runtime/storage/db/schema/life-evidence-index.d.ts +161 -161
- package/runtime/storage/db/schema/life-evidence-index.js +11 -11
- package/runtime/storage/db/schema/operator-fallback-artifacts.d.ts +161 -161
- package/runtime/storage/db/schema/operator-fallback-artifacts.js +11 -11
- package/runtime/storage/db/schema/policies.d.ts +98 -98
- package/runtime/storage/db/schema/policies.js +8 -8
- package/runtime/storage/delivery/query-delivery-attempts.d.ts +3 -3
- package/runtime/storage/delivery/query-delivery-attempts.js +32 -32
- package/runtime/storage/delivery/types.d.ts +27 -27
- package/runtime/storage/delivery/types.js +1 -1
- package/runtime/storage/delivery/write-delivery-attempt.d.ts +6 -6
- package/runtime/storage/delivery/write-delivery-attempt.js +36 -36
- package/runtime/storage/fallback/load-operator-fallback.d.ts +14 -14
- package/runtime/storage/fallback/load-operator-fallback.js +47 -47
- package/runtime/storage/fallback/operator-fallback-types.d.ts +9 -9
- package/runtime/storage/fallback/operator-fallback-types.js +1 -1
- package/runtime/storage/fallback/operator-fallback-view.d.ts +11 -11
- package/runtime/storage/fallback/operator-fallback-view.js +1 -1
- package/runtime/storage/fallback/write-operator-fallback.d.ts +6 -6
- package/runtime/storage/fallback/write-operator-fallback.js +21 -21
- package/runtime/storage/index.d.ts +37 -37
- package/runtime/storage/index.js +30 -30
- package/runtime/storage/life-evidence/append-life-evidence.d.ts +7 -7
- package/runtime/storage/life-evidence/append-life-evidence.js +64 -64
- package/runtime/storage/life-evidence/types.d.ts +45 -45
- package/runtime/storage/life-evidence/types.js +6 -6
- package/runtime/storage/quiet/persist-quiet-artifact.d.ts +7 -7
- package/runtime/storage/quiet/persist-quiet-artifact.js +22 -22
- package/runtime/storage/quiet/quiet-artifact-types.d.ts +18 -18
- package/runtime/storage/quiet/quiet-artifact-types.js +1 -1
- package/runtime/storage/quiet/quiet-artifact-writer.d.ts +15 -15
- package/runtime/storage/quiet/quiet-artifact-writer.js +56 -56
- package/runtime/storage/repositories/credential-repository.js +30 -30
- package/runtime/storage/rhythm/rhythm-policy-snapshot.d.ts +10 -10
- package/runtime/storage/rhythm/rhythm-policy-snapshot.js +34 -34
- package/runtime/storage/services/credential-vault.d.ts +13 -13
- package/runtime/storage/services/credential-vault.js +116 -116
- package/runtime/storage/snapshots/continuity-snapshot.d.ts +9 -9
- package/runtime/storage/snapshots/continuity-snapshot.js +41 -41
- package/runtime/storage/snapshots/life-evidence-snapshot.d.ts +6 -6
- package/runtime/storage/snapshots/life-evidence-snapshot.js +114 -114
- package/runtime/storage/snapshots/types.d.ts +58 -58
- package/runtime/storage/snapshots/types.js +1 -1
- package/runtime/storage/state-api.js +104 -104
- package/runtime/storage/user-interest/load-user-interest-snapshot.d.ts +2 -2
- package/runtime/storage/user-interest/load-user-interest-snapshot.js +150 -150
- package/runtime/storage/user-interest/types.d.ts +25 -25
- package/runtime/storage/user-interest/types.js +1 -1
- 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";
|
package/runtime/storage/index.js
CHANGED
|
@@ -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;
|