@haaaiawd/second-nature 0.1.18 → 0.1.20
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 +911 -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 +224 -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 +67 -58
- package/runtime/cli/ops/heartbeat-surface.d.ts +45 -38
- package/runtime/cli/ops/heartbeat-surface.js +79 -73
- package/runtime/cli/ops/ops-router.d.ts +32 -19
- package/runtime/cli/ops/ops-router.js +188 -89
- 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 +40 -19
- package/runtime/cli/ops/workspace-heartbeat-runner.js +93 -39
- package/runtime/cli/read-models/index.d.ts +46 -29
- package/runtime/cli/read-models/index.js +391 -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 +129 -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 +162 -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 +47 -47
- 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 -20
- package/runtime/observability/index.js +19 -19
- 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/observability-retention.d.ts +10 -0
- package/runtime/observability/services/observability-retention.js +37 -0
- package/runtime/observability/services/runtime-decision-recorder.d.ts +29 -29
- package/runtime/observability/services/runtime-decision-recorder.js +94 -94
- 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 +61 -61
- 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 +90 -81
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Maps T5.3.1 operator explain query results into CLI ExplainReadModel (T1.2.1).
|
|
3
|
-
*/
|
|
4
|
-
import type { OperatorExplainReadModel } from "../../observability/query/explain-query.js";
|
|
5
|
-
import type { ExplainReadModel, ExplainSubjectKind } from "./types.js";
|
|
6
|
-
export declare function mapOperatorExplainToReadModel(op: OperatorExplainReadModel, subjectKind: ExplainSubjectKind): ExplainReadModel;
|
|
1
|
+
/**
|
|
2
|
+
* Maps T5.3.1 operator explain query results into CLI ExplainReadModel (T1.2.1).
|
|
3
|
+
*/
|
|
4
|
+
import type { OperatorExplainReadModel } from "../../observability/query/explain-query.js";
|
|
5
|
+
import type { ExplainReadModel, ExplainSubjectKind } from "./types.js";
|
|
6
|
+
export declare function mapOperatorExplainToReadModel(op: OperatorExplainReadModel, subjectKind: ExplainSubjectKind): ExplainReadModel;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export function mapOperatorExplainToReadModel(op, subjectKind) {
|
|
2
|
-
return {
|
|
3
|
-
subjectType: subjectKind,
|
|
4
|
-
conclusion: op.summary,
|
|
5
|
-
keyFactors: op.events.map((e) => `${e.eventId}:${e.summary}`),
|
|
6
|
-
evidenceRefs: op.relatedEventIds.map((id) => `audit_event:${id}`),
|
|
7
|
-
warnings: op.warnings.length ? op.warnings : undefined,
|
|
8
|
-
relatedAuditEventIds: op.relatedEventIds.length ? op.relatedEventIds : undefined,
|
|
9
|
-
};
|
|
10
|
-
}
|
|
1
|
+
export function mapOperatorExplainToReadModel(op, subjectKind) {
|
|
2
|
+
return {
|
|
3
|
+
subjectType: subjectKind,
|
|
4
|
+
conclusion: op.summary,
|
|
5
|
+
keyFactors: op.events.map((e) => `${e.eventId}:${e.summary}`),
|
|
6
|
+
evidenceRefs: op.relatedEventIds.map((id) => `audit_event:${id}`),
|
|
7
|
+
warnings: op.warnings.length ? op.warnings : undefined,
|
|
8
|
+
relatedAuditEventIds: op.relatedEventIds.length ? op.relatedEventIds : undefined,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -1,79 +1,129 @@
|
|
|
1
|
-
export interface RuntimeSummary {
|
|
2
|
-
host: "openclaw-plugin";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
export interface
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
export interface
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
1
|
+
export interface RuntimeSummary {
|
|
2
|
+
host: "openclaw-plugin";
|
|
3
|
+
/**
|
|
4
|
+
* T1.2.9 (SN-CODE-04): `awaiting_sources` signals that the last runtime cycle was
|
|
5
|
+
* control-plane denied (decision_denied) — no eligible intent found, NOT a delivery
|
|
6
|
+
* or execution fault. Operators must not interpret this as a runtime crash.
|
|
7
|
+
*/
|
|
8
|
+
serviceStatus: "idle" | "running" | "degraded" | "awaiting_sources" | "unknown";
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
}
|
|
11
|
+
export interface RhythmSummary {
|
|
12
|
+
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
13
|
+
windowId?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface QuietSummary {
|
|
16
|
+
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
17
|
+
lastEvent?: string;
|
|
18
|
+
interrupted?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ConnectorSummary {
|
|
21
|
+
platformId: string;
|
|
22
|
+
status: "healthy" | "degraded" | "blocked" | "unknown";
|
|
23
|
+
channel?: string;
|
|
24
|
+
failureClass?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface CredentialSummary {
|
|
27
|
+
platformId: string;
|
|
28
|
+
status: "missing" | "pending_verification" | "active" | "expired" | "revoked" | "failed";
|
|
29
|
+
nextStep?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface RiskSummary {
|
|
32
|
+
level: "low" | "medium" | "high";
|
|
33
|
+
flags: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* T1.2.5 (CH-14-04): delivery posture summarises why `deliveryCapability.target` is `none`
|
|
37
|
+
* and which layer set it — workspace heartbeat default vs OpenClaw cron config vs host probe.
|
|
38
|
+
*
|
|
39
|
+
* CH-15-02 implementation note: `loadStatus` currently always emits `workspace_default_none`
|
|
40
|
+
* because the workspace heartbeat hardcodes `target: none` and no T1.1.2 HostCapabilityReport
|
|
41
|
+
* probe is wired into the read model path yet. The other two `source` values are reserved for
|
|
42
|
+
* future integration:
|
|
43
|
+
* - `openclaw_cron_delivery_none`: when the OpenClaw cron layer exposes `delivery.mode: none`
|
|
44
|
+
* in the host config and that value is surfaced via a new probe or bridge field.
|
|
45
|
+
* - `host_capability_probe`: when `HostCapabilityReport.deliveryTarget` is read from the DB
|
|
46
|
+
* (T1.1.2) and routed into `loadStatus`.
|
|
47
|
+
* Do NOT infer either value without a real observation — see ADR-007 "no proof, not sent".
|
|
48
|
+
*/
|
|
49
|
+
export interface DeliveryPosture {
|
|
50
|
+
/** Current effective verdict: none = no delivery channel; available = a valid target exists. */
|
|
51
|
+
verdict: "none" | "available";
|
|
52
|
+
/**
|
|
53
|
+
* Stable source discriminator for operator tooling (CH-15-02: only workspace_default_none
|
|
54
|
+
* is emitted today; cron/probe values require additional host-side wiring):
|
|
55
|
+
* workspace_default_none — workspace heartbeat hardcodes target:none (no host probe ran).
|
|
56
|
+
* openclaw_cron_delivery_none — cron layer has delivery.mode:none (host config decision).
|
|
57
|
+
* host_capability_probe — a HostCapabilityReport probe determined the posture.
|
|
58
|
+
*/
|
|
59
|
+
source: "workspace_default_none" | "openclaw_cron_delivery_none" | "host_capability_probe";
|
|
60
|
+
/** Human-readable reason code included in explain surfaces. */
|
|
61
|
+
reasonCode: string;
|
|
62
|
+
}
|
|
63
|
+
export interface StatusReadModel {
|
|
64
|
+
runtime: RuntimeSummary;
|
|
65
|
+
rhythm: RhythmSummary;
|
|
66
|
+
quiet: QuietSummary;
|
|
67
|
+
connectors: ConnectorSummary[];
|
|
68
|
+
credentials: CredentialSummary[];
|
|
69
|
+
risk: RiskSummary;
|
|
70
|
+
/**
|
|
71
|
+
* T1.2.5: structured delivery posture so operators can distinguish workspace default "none"
|
|
72
|
+
* from cron-layer "none" without inspecting raw heartbeat JSON.
|
|
73
|
+
*/
|
|
74
|
+
deliveryPosture?: DeliveryPosture;
|
|
75
|
+
}
|
|
76
|
+
export interface DailyReportReadModel {
|
|
77
|
+
day: string;
|
|
78
|
+
summary: string;
|
|
79
|
+
highlights: string[];
|
|
80
|
+
sourceRefs: string[];
|
|
81
|
+
}
|
|
82
|
+
export interface QuietReadModel {
|
|
83
|
+
scope?: string;
|
|
84
|
+
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
85
|
+
sourceCount: number;
|
|
86
|
+
reportCount: number;
|
|
87
|
+
recentJournalCount: number;
|
|
88
|
+
}
|
|
89
|
+
export interface SessionDetailReadModel {
|
|
90
|
+
requestedSessionId: string;
|
|
91
|
+
traceId: string;
|
|
92
|
+
decisionCount: number;
|
|
93
|
+
attemptCount: number;
|
|
94
|
+
governanceCount: number;
|
|
95
|
+
keyFactors: string[];
|
|
96
|
+
evidenceRefs: string[];
|
|
97
|
+
}
|
|
98
|
+
export interface CredentialReadModel {
|
|
99
|
+
platformId: string;
|
|
100
|
+
status: "missing" | "pending_verification" | "active" | "expired" | "revoked" | "failed";
|
|
101
|
+
verificationDeadline?: string;
|
|
102
|
+
attemptsRemaining?: number;
|
|
103
|
+
nextStep?: string;
|
|
104
|
+
}
|
|
105
|
+
export type ExplainSubjectKind = "decision" | "platform-selection" | "outreach" | "soul-change" | "fallback" | "probe" | "delivery" | "report" | "source_ref";
|
|
106
|
+
export interface ExplainReadModel {
|
|
107
|
+
subjectType: ExplainSubjectKind;
|
|
108
|
+
conclusion: string;
|
|
109
|
+
keyFactors: string[];
|
|
110
|
+
evidenceRefs: string[];
|
|
111
|
+
policyRefs?: string[];
|
|
112
|
+
requiredUserInput?: string[];
|
|
113
|
+
nextStep?: string;
|
|
114
|
+
/** Operator / lived-experience audit warnings (e.g. no user-visible contact) */
|
|
115
|
+
warnings?: string[];
|
|
116
|
+
relatedAuditEventIds?: string[];
|
|
117
|
+
}
|
|
118
|
+
/** T1.2.7 (SN-CODE-02) — minimal audit read-side summary for operator `audit` command. */
|
|
119
|
+
export interface AuditEventSummaryEntry {
|
|
120
|
+
eventId: string;
|
|
121
|
+
family: string;
|
|
122
|
+
plane: string;
|
|
123
|
+
createdAt: string;
|
|
124
|
+
sensitivity: string;
|
|
125
|
+
}
|
|
126
|
+
export interface AuditSummaryReadModel {
|
|
127
|
+
totalEvents: number;
|
|
128
|
+
events: AuditEventSummaryEntry[];
|
|
129
|
+
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
export type SurfaceMode = "host_safe_carrier" | "workspace_full_runtime" | "capability_probe";
|
|
2
|
-
export type RuntimeArtifactModule = "runtime_registration" | "ops_router" | "heartbeat_bridge_adapter" | "host_capability_adapter" | "probe_runner" | "read_model_adapter" | "fallback_shell";
|
|
3
|
-
export interface RuntimeArtifactBoundary {
|
|
4
|
-
surfaceMode: SurfaceMode;
|
|
5
|
-
includes: RuntimeArtifactModule[];
|
|
6
|
-
fallbackAllowed: boolean;
|
|
7
|
-
sourcePathDependencyAllowed: false;
|
|
8
|
-
}
|
|
9
|
-
export type ResolvePackagedRuntimeResult = {
|
|
10
|
-
ok: true;
|
|
11
|
-
runtimeRoot: string;
|
|
12
|
-
boundary: RuntimeArtifactBoundary;
|
|
13
|
-
resolvedModules: Partial<Record<RuntimeArtifactModule, string>>;
|
|
14
|
-
} | {
|
|
15
|
-
ok: false;
|
|
16
|
-
code: "runtime_artifact_missing" | "runtime_layout_incomplete";
|
|
17
|
-
message: string;
|
|
18
|
-
runtimeRoot: string;
|
|
19
|
-
missingPaths: string[];
|
|
20
|
-
};
|
|
21
|
-
/** Relative paths under `plugin/runtime/` that the packaging script must copy. */
|
|
22
|
-
export declare const PACKAGED_RUNTIME_REQUIRED_ENTRIES: readonly string[];
|
|
23
|
-
export declare function detectForbiddenSourcePathDependencies(sourceText: string): string[];
|
|
24
|
-
export declare function defaultRuntimeArtifactBoundary(surfaceMode?: SurfaceMode): RuntimeArtifactBoundary;
|
|
25
|
-
/**
|
|
26
|
-
* Verify packaged plugin `runtime/` tree and entrypoints required for ADR-006 closure.
|
|
27
|
-
*/
|
|
28
|
-
export declare function resolvePackagedRuntime(packageRoot: string): ResolvePackagedRuntimeResult;
|
|
1
|
+
export type SurfaceMode = "host_safe_carrier" | "workspace_full_runtime" | "capability_probe";
|
|
2
|
+
export type RuntimeArtifactModule = "runtime_registration" | "ops_router" | "heartbeat_bridge_adapter" | "host_capability_adapter" | "probe_runner" | "read_model_adapter" | "fallback_shell";
|
|
3
|
+
export interface RuntimeArtifactBoundary {
|
|
4
|
+
surfaceMode: SurfaceMode;
|
|
5
|
+
includes: RuntimeArtifactModule[];
|
|
6
|
+
fallbackAllowed: boolean;
|
|
7
|
+
sourcePathDependencyAllowed: false;
|
|
8
|
+
}
|
|
9
|
+
export type ResolvePackagedRuntimeResult = {
|
|
10
|
+
ok: true;
|
|
11
|
+
runtimeRoot: string;
|
|
12
|
+
boundary: RuntimeArtifactBoundary;
|
|
13
|
+
resolvedModules: Partial<Record<RuntimeArtifactModule, string>>;
|
|
14
|
+
} | {
|
|
15
|
+
ok: false;
|
|
16
|
+
code: "runtime_artifact_missing" | "runtime_layout_incomplete";
|
|
17
|
+
message: string;
|
|
18
|
+
runtimeRoot: string;
|
|
19
|
+
missingPaths: string[];
|
|
20
|
+
};
|
|
21
|
+
/** Relative paths under `plugin/runtime/` that the packaging script must copy. */
|
|
22
|
+
export declare const PACKAGED_RUNTIME_REQUIRED_ENTRIES: readonly string[];
|
|
23
|
+
export declare function detectForbiddenSourcePathDependencies(sourceText: string): string[];
|
|
24
|
+
export declare function defaultRuntimeArtifactBoundary(surfaceMode?: SurfaceMode): RuntimeArtifactBoundary;
|
|
25
|
+
/**
|
|
26
|
+
* Verify packaged plugin `runtime/` tree and entrypoints required for ADR-006 closure.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolvePackagedRuntime(packageRoot: string): ResolvePackagedRuntimeResult;
|
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Packaged runtime artifact boundary (cli-system / ADR-006).
|
|
3
|
-
*
|
|
4
|
-
* Core logic: resolve plugin-local `runtime/` layout produced by build-plugin-package;
|
|
5
|
-
* forbid dev-only imports that reach repo `src/` from published surfaces.
|
|
6
|
-
*
|
|
7
|
-
* Boundaries: filesystem checks only; does not execute host loaders.
|
|
8
|
-
*
|
|
9
|
-
* Test coverage: tests/unit/cli/runtime-artifact-boundary.test.ts
|
|
10
|
-
*/
|
|
11
|
-
import fs from "node:fs";
|
|
12
|
-
import path from "node:path";
|
|
13
|
-
/** Relative paths under `plugin/runtime/` that the packaging script must copy. */
|
|
14
|
-
export const PACKAGED_RUNTIME_REQUIRED_ENTRIES = [
|
|
15
|
-
"cli/index.js",
|
|
16
|
-
"storage/index.js",
|
|
17
|
-
"observability/index.js",
|
|
18
|
-
"core/second-nature/index.js",
|
|
19
|
-
"core/second-nature/runtime/service-entry.js",
|
|
20
|
-
"guidance/index.js",
|
|
21
|
-
"connectors/index.js",
|
|
22
|
-
"shared/types/index.js",
|
|
23
|
-
];
|
|
24
|
-
const DEFAULT_INCLUDES = [
|
|
25
|
-
"runtime_registration",
|
|
26
|
-
"ops_router",
|
|
27
|
-
"heartbeat_bridge_adapter",
|
|
28
|
-
"read_model_adapter",
|
|
29
|
-
"fallback_shell",
|
|
30
|
-
];
|
|
31
|
-
const SOURCE_REPO_PATH_PATTERN = /(?:from\s+["']|import\s+["']|require\s*\(\s*["'])(?:\.\.\/)+src\//i;
|
|
32
|
-
export function detectForbiddenSourcePathDependencies(sourceText) {
|
|
33
|
-
const hits = [];
|
|
34
|
-
const lines = sourceText.split(/\r?\n/);
|
|
35
|
-
for (let i = 0; i < lines.length; i += 1) {
|
|
36
|
-
const line = lines[i];
|
|
37
|
-
if (SOURCE_REPO_PATH_PATTERN.test(line)) {
|
|
38
|
-
hits.push(`line ${i + 1}: ${line.trim()}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return hits;
|
|
42
|
-
}
|
|
43
|
-
export function defaultRuntimeArtifactBoundary(surfaceMode = "workspace_full_runtime") {
|
|
44
|
-
return {
|
|
45
|
-
surfaceMode,
|
|
46
|
-
includes: [...DEFAULT_INCLUDES],
|
|
47
|
-
fallbackAllowed: true,
|
|
48
|
-
sourcePathDependencyAllowed: false,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Verify packaged plugin `runtime/` tree and entrypoints required for ADR-006 closure.
|
|
53
|
-
*/
|
|
54
|
-
export function resolvePackagedRuntime(packageRoot) {
|
|
55
|
-
const runtimeRoot = path.join(packageRoot, "runtime");
|
|
56
|
-
if (!fs.existsSync(runtimeRoot) || !fs.statSync(runtimeRoot).isDirectory()) {
|
|
57
|
-
return {
|
|
58
|
-
ok: false,
|
|
59
|
-
code: "runtime_artifact_missing",
|
|
60
|
-
message: `runtime directory missing under ${packageRoot}`,
|
|
61
|
-
runtimeRoot,
|
|
62
|
-
missingPaths: [runtimeRoot],
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
const missingPaths = [];
|
|
66
|
-
for (const rel of PACKAGED_RUNTIME_REQUIRED_ENTRIES) {
|
|
67
|
-
const abs = path.join(runtimeRoot, rel);
|
|
68
|
-
if (!fs.existsSync(abs)) {
|
|
69
|
-
missingPaths.push(abs);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
if (missingPaths.length > 0) {
|
|
73
|
-
return {
|
|
74
|
-
ok: false,
|
|
75
|
-
code: "runtime_layout_incomplete",
|
|
76
|
-
message: "packaged runtime is missing one or more required compiled modules",
|
|
77
|
-
runtimeRoot,
|
|
78
|
-
missingPaths,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
const resolvedModules = {
|
|
82
|
-
ops_router: path.join(runtimeRoot, "cli/index.js"),
|
|
83
|
-
runtime_registration: path.join(runtimeRoot, "core/second-nature/runtime/service-entry.js"),
|
|
84
|
-
heartbeat_bridge_adapter: path.join(runtimeRoot, "core/second-nature/heartbeat/index.js"),
|
|
85
|
-
read_model_adapter: path.join(runtimeRoot, "cli/read-models/index.js"),
|
|
86
|
-
fallback_shell: path.join(runtimeRoot, "cli/index.js"),
|
|
87
|
-
};
|
|
88
|
-
return {
|
|
89
|
-
ok: true,
|
|
90
|
-
runtimeRoot,
|
|
91
|
-
boundary: defaultRuntimeArtifactBoundary(),
|
|
92
|
-
resolvedModules,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Packaged runtime artifact boundary (cli-system / ADR-006).
|
|
3
|
+
*
|
|
4
|
+
* Core logic: resolve plugin-local `runtime/` layout produced by build-plugin-package;
|
|
5
|
+
* forbid dev-only imports that reach repo `src/` from published surfaces.
|
|
6
|
+
*
|
|
7
|
+
* Boundaries: filesystem checks only; does not execute host loaders.
|
|
8
|
+
*
|
|
9
|
+
* Test coverage: tests/unit/cli/runtime-artifact-boundary.test.ts
|
|
10
|
+
*/
|
|
11
|
+
import fs from "node:fs";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
/** Relative paths under `plugin/runtime/` that the packaging script must copy. */
|
|
14
|
+
export const PACKAGED_RUNTIME_REQUIRED_ENTRIES = [
|
|
15
|
+
"cli/index.js",
|
|
16
|
+
"storage/index.js",
|
|
17
|
+
"observability/index.js",
|
|
18
|
+
"core/second-nature/index.js",
|
|
19
|
+
"core/second-nature/runtime/service-entry.js",
|
|
20
|
+
"guidance/index.js",
|
|
21
|
+
"connectors/index.js",
|
|
22
|
+
"shared/types/index.js",
|
|
23
|
+
];
|
|
24
|
+
const DEFAULT_INCLUDES = [
|
|
25
|
+
"runtime_registration",
|
|
26
|
+
"ops_router",
|
|
27
|
+
"heartbeat_bridge_adapter",
|
|
28
|
+
"read_model_adapter",
|
|
29
|
+
"fallback_shell",
|
|
30
|
+
];
|
|
31
|
+
const SOURCE_REPO_PATH_PATTERN = /(?:from\s+["']|import\s+["']|require\s*\(\s*["'])(?:\.\.\/)+src\//i;
|
|
32
|
+
export function detectForbiddenSourcePathDependencies(sourceText) {
|
|
33
|
+
const hits = [];
|
|
34
|
+
const lines = sourceText.split(/\r?\n/);
|
|
35
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
36
|
+
const line = lines[i];
|
|
37
|
+
if (SOURCE_REPO_PATH_PATTERN.test(line)) {
|
|
38
|
+
hits.push(`line ${i + 1}: ${line.trim()}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return hits;
|
|
42
|
+
}
|
|
43
|
+
export function defaultRuntimeArtifactBoundary(surfaceMode = "workspace_full_runtime") {
|
|
44
|
+
return {
|
|
45
|
+
surfaceMode,
|
|
46
|
+
includes: [...DEFAULT_INCLUDES],
|
|
47
|
+
fallbackAllowed: true,
|
|
48
|
+
sourcePathDependencyAllowed: false,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Verify packaged plugin `runtime/` tree and entrypoints required for ADR-006 closure.
|
|
53
|
+
*/
|
|
54
|
+
export function resolvePackagedRuntime(packageRoot) {
|
|
55
|
+
const runtimeRoot = path.join(packageRoot, "runtime");
|
|
56
|
+
if (!fs.existsSync(runtimeRoot) || !fs.statSync(runtimeRoot).isDirectory()) {
|
|
57
|
+
return {
|
|
58
|
+
ok: false,
|
|
59
|
+
code: "runtime_artifact_missing",
|
|
60
|
+
message: `runtime directory missing under ${packageRoot}`,
|
|
61
|
+
runtimeRoot,
|
|
62
|
+
missingPaths: [runtimeRoot],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const missingPaths = [];
|
|
66
|
+
for (const rel of PACKAGED_RUNTIME_REQUIRED_ENTRIES) {
|
|
67
|
+
const abs = path.join(runtimeRoot, rel);
|
|
68
|
+
if (!fs.existsSync(abs)) {
|
|
69
|
+
missingPaths.push(abs);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (missingPaths.length > 0) {
|
|
73
|
+
return {
|
|
74
|
+
ok: false,
|
|
75
|
+
code: "runtime_layout_incomplete",
|
|
76
|
+
message: "packaged runtime is missing one or more required compiled modules",
|
|
77
|
+
runtimeRoot,
|
|
78
|
+
missingPaths,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const resolvedModules = {
|
|
82
|
+
ops_router: path.join(runtimeRoot, "cli/index.js"),
|
|
83
|
+
runtime_registration: path.join(runtimeRoot, "core/second-nature/runtime/service-entry.js"),
|
|
84
|
+
heartbeat_bridge_adapter: path.join(runtimeRoot, "core/second-nature/heartbeat/index.js"),
|
|
85
|
+
read_model_adapter: path.join(runtimeRoot, "cli/read-models/index.js"),
|
|
86
|
+
fallback_shell: path.join(runtimeRoot, "cli/index.js"),
|
|
87
|
+
};
|
|
88
|
+
return {
|
|
89
|
+
ok: true,
|
|
90
|
+
runtimeRoot,
|
|
91
|
+
boundary: defaultRuntimeArtifactBoundary(),
|
|
92
|
+
resolvedModules,
|
|
93
|
+
};
|
|
94
|
+
}
|