@haaaiawd/second-nature 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +855 -851
- 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,79 +1,79 @@
|
|
|
1
|
-
export interface RuntimeSummary {
|
|
2
|
-
host: "openclaw-plugin";
|
|
3
|
-
serviceStatus: "idle" | "running" | "degraded" | "unknown";
|
|
4
|
-
updatedAt: string;
|
|
5
|
-
}
|
|
6
|
-
export interface RhythmSummary {
|
|
7
|
-
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
8
|
-
windowId?: string;
|
|
9
|
-
}
|
|
10
|
-
export interface QuietSummary {
|
|
11
|
-
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
12
|
-
lastEvent?: string;
|
|
13
|
-
interrupted?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface ConnectorSummary {
|
|
16
|
-
platformId: string;
|
|
17
|
-
status: "healthy" | "degraded" | "blocked" | "unknown";
|
|
18
|
-
channel?: string;
|
|
19
|
-
failureClass?: string;
|
|
20
|
-
}
|
|
21
|
-
export interface CredentialSummary {
|
|
22
|
-
platformId: string;
|
|
23
|
-
status: "missing" | "pending_verification" | "active" | "expired" | "revoked" | "failed";
|
|
24
|
-
nextStep?: string;
|
|
25
|
-
}
|
|
26
|
-
export interface RiskSummary {
|
|
27
|
-
level: "low" | "medium" | "high";
|
|
28
|
-
flags: string[];
|
|
29
|
-
}
|
|
30
|
-
export interface StatusReadModel {
|
|
31
|
-
runtime: RuntimeSummary;
|
|
32
|
-
rhythm: RhythmSummary;
|
|
33
|
-
quiet: QuietSummary;
|
|
34
|
-
connectors: ConnectorSummary[];
|
|
35
|
-
credentials: CredentialSummary[];
|
|
36
|
-
risk: RiskSummary;
|
|
37
|
-
}
|
|
38
|
-
export interface DailyReportReadModel {
|
|
39
|
-
day: string;
|
|
40
|
-
summary: string;
|
|
41
|
-
highlights: string[];
|
|
42
|
-
sourceRefs: string[];
|
|
43
|
-
}
|
|
44
|
-
export interface QuietReadModel {
|
|
45
|
-
scope?: string;
|
|
46
|
-
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
47
|
-
sourceCount: number;
|
|
48
|
-
reportCount: number;
|
|
49
|
-
recentJournalCount: number;
|
|
50
|
-
}
|
|
51
|
-
export interface SessionDetailReadModel {
|
|
52
|
-
requestedSessionId: string;
|
|
53
|
-
traceId: string;
|
|
54
|
-
decisionCount: number;
|
|
55
|
-
attemptCount: number;
|
|
56
|
-
governanceCount: number;
|
|
57
|
-
keyFactors: string[];
|
|
58
|
-
evidenceRefs: string[];
|
|
59
|
-
}
|
|
60
|
-
export interface CredentialReadModel {
|
|
61
|
-
platformId: string;
|
|
62
|
-
status: "missing" | "pending_verification" | "active" | "expired" | "revoked" | "failed";
|
|
63
|
-
verificationDeadline?: string;
|
|
64
|
-
attemptsRemaining?: number;
|
|
65
|
-
nextStep?: string;
|
|
66
|
-
}
|
|
67
|
-
export type ExplainSubjectKind = "decision" | "platform-selection" | "outreach" | "soul-change" | "fallback" | "probe" | "delivery" | "report" | "source_ref";
|
|
68
|
-
export interface ExplainReadModel {
|
|
69
|
-
subjectType: ExplainSubjectKind;
|
|
70
|
-
conclusion: string;
|
|
71
|
-
keyFactors: string[];
|
|
72
|
-
evidenceRefs: string[];
|
|
73
|
-
policyRefs?: string[];
|
|
74
|
-
requiredUserInput?: string[];
|
|
75
|
-
nextStep?: string;
|
|
76
|
-
/** Operator / lived-experience audit warnings (e.g. no user-visible contact) */
|
|
77
|
-
warnings?: string[];
|
|
78
|
-
relatedAuditEventIds?: string[];
|
|
79
|
-
}
|
|
1
|
+
export interface RuntimeSummary {
|
|
2
|
+
host: "openclaw-plugin";
|
|
3
|
+
serviceStatus: "idle" | "running" | "degraded" | "unknown";
|
|
4
|
+
updatedAt: string;
|
|
5
|
+
}
|
|
6
|
+
export interface RhythmSummary {
|
|
7
|
+
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
8
|
+
windowId?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface QuietSummary {
|
|
11
|
+
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
12
|
+
lastEvent?: string;
|
|
13
|
+
interrupted?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ConnectorSummary {
|
|
16
|
+
platformId: string;
|
|
17
|
+
status: "healthy" | "degraded" | "blocked" | "unknown";
|
|
18
|
+
channel?: string;
|
|
19
|
+
failureClass?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CredentialSummary {
|
|
22
|
+
platformId: string;
|
|
23
|
+
status: "missing" | "pending_verification" | "active" | "expired" | "revoked" | "failed";
|
|
24
|
+
nextStep?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface RiskSummary {
|
|
27
|
+
level: "low" | "medium" | "high";
|
|
28
|
+
flags: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface StatusReadModel {
|
|
31
|
+
runtime: RuntimeSummary;
|
|
32
|
+
rhythm: RhythmSummary;
|
|
33
|
+
quiet: QuietSummary;
|
|
34
|
+
connectors: ConnectorSummary[];
|
|
35
|
+
credentials: CredentialSummary[];
|
|
36
|
+
risk: RiskSummary;
|
|
37
|
+
}
|
|
38
|
+
export interface DailyReportReadModel {
|
|
39
|
+
day: string;
|
|
40
|
+
summary: string;
|
|
41
|
+
highlights: string[];
|
|
42
|
+
sourceRefs: string[];
|
|
43
|
+
}
|
|
44
|
+
export interface QuietReadModel {
|
|
45
|
+
scope?: string;
|
|
46
|
+
mode: "active" | "quiet" | "maintenance_only" | "paused_for_interrupt" | "unknown";
|
|
47
|
+
sourceCount: number;
|
|
48
|
+
reportCount: number;
|
|
49
|
+
recentJournalCount: number;
|
|
50
|
+
}
|
|
51
|
+
export interface SessionDetailReadModel {
|
|
52
|
+
requestedSessionId: string;
|
|
53
|
+
traceId: string;
|
|
54
|
+
decisionCount: number;
|
|
55
|
+
attemptCount: number;
|
|
56
|
+
governanceCount: number;
|
|
57
|
+
keyFactors: string[];
|
|
58
|
+
evidenceRefs: string[];
|
|
59
|
+
}
|
|
60
|
+
export interface CredentialReadModel {
|
|
61
|
+
platformId: string;
|
|
62
|
+
status: "missing" | "pending_verification" | "active" | "expired" | "revoked" | "failed";
|
|
63
|
+
verificationDeadline?: string;
|
|
64
|
+
attemptsRemaining?: number;
|
|
65
|
+
nextStep?: string;
|
|
66
|
+
}
|
|
67
|
+
export type ExplainSubjectKind = "decision" | "platform-selection" | "outreach" | "soul-change" | "fallback" | "probe" | "delivery" | "report" | "source_ref";
|
|
68
|
+
export interface ExplainReadModel {
|
|
69
|
+
subjectType: ExplainSubjectKind;
|
|
70
|
+
conclusion: string;
|
|
71
|
+
keyFactors: string[];
|
|
72
|
+
evidenceRefs: string[];
|
|
73
|
+
policyRefs?: string[];
|
|
74
|
+
requiredUserInput?: string[];
|
|
75
|
+
nextStep?: string;
|
|
76
|
+
/** Operator / lived-experience audit warnings (e.g. no user-visible contact) */
|
|
77
|
+
warnings?: string[];
|
|
78
|
+
relatedAuditEventIds?: string[];
|
|
79
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import type { CredentialContext, CredentialState } from "../../shared/types/credential.js";
|
|
2
|
-
import { type FailureClass } from "./failure-taxonomy.js";
|
|
3
|
-
export declare const CHANNEL_TYPES: readonly ["api_rest", "api_rpc", "a2a", "mcp", "cli", "skill", "browser"];
|
|
4
|
-
export type ChannelType = (typeof CHANNEL_TYPES)[number];
|
|
5
|
-
export declare const CAPABILITY_INTENTS: readonly ["feed.read", "post.publish", "comment.reply", "notification.list", "message.send", "agent.register", "agent.heartbeat", "work.discover", "task.claim"];
|
|
6
|
-
export type CapabilityIntent = (typeof CAPABILITY_INTENTS)[number];
|
|
7
|
-
export interface ConnectorRequest {
|
|
8
|
-
platformId: string;
|
|
9
|
-
intent: CapabilityIntent;
|
|
10
|
-
payload: Record<string, unknown>;
|
|
11
|
-
preferredChannel?: ChannelType;
|
|
12
|
-
timeoutMs?: number;
|
|
13
|
-
idempotencyKey?: string;
|
|
14
|
-
decisionId?: string;
|
|
15
|
-
intentId?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface ExecutionPlan {
|
|
18
|
-
platformId: string;
|
|
19
|
-
intent: CapabilityIntent;
|
|
20
|
-
channel: ChannelType;
|
|
21
|
-
endpointMode: "rest_json" | "a2a_envelope" | "cli_stdout" | "skill_call";
|
|
22
|
-
idempotencyKey?: string;
|
|
23
|
-
/** True when selected channel is manifest-marked degraded (cli/skill/browser). */
|
|
24
|
-
degraded?: boolean;
|
|
25
|
-
}
|
|
26
|
-
export interface ConnectorResult<T> {
|
|
27
|
-
status: "success" | "retryable_failure" | "terminal_failure";
|
|
28
|
-
data?: T;
|
|
29
|
-
failureClass?: FailureClass;
|
|
30
|
-
retryAfterMs?: number;
|
|
31
|
-
metadata: {
|
|
32
|
-
platformId: string;
|
|
33
|
-
channel: ChannelType;
|
|
34
|
-
latencyMs: number;
|
|
35
|
-
degraded?: boolean;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export interface RawAttempt {
|
|
39
|
-
platformId: string;
|
|
40
|
-
channel: ChannelType;
|
|
41
|
-
latencyMs: number;
|
|
42
|
-
degraded?: boolean;
|
|
43
|
-
success: boolean;
|
|
44
|
-
payload?: unknown;
|
|
45
|
-
error?: unknown;
|
|
46
|
-
}
|
|
47
|
-
export interface CredentialContextPort {
|
|
48
|
-
loadCredentialState(platformId: string): Promise<CredentialContext>;
|
|
49
|
-
}
|
|
50
|
-
export interface CooldownLedgerPort {
|
|
51
|
-
loadCooldownState(platformId: string, intent: CapabilityIntent): Promise<{
|
|
52
|
-
blocked: boolean;
|
|
53
|
-
retryAfterMs?: number;
|
|
54
|
-
}>;
|
|
55
|
-
}
|
|
56
|
-
export interface RouteContextPort extends CredentialContextPort, CooldownLedgerPort {
|
|
57
|
-
}
|
|
58
|
-
export interface ConnectorManifestLike {
|
|
59
|
-
platformId: string;
|
|
60
|
-
supportedCapabilities: CapabilityIntent[];
|
|
61
|
-
channelPriority: ChannelType[];
|
|
62
|
-
credentialTypes: string[];
|
|
63
|
-
degradedChannels?: ChannelType[];
|
|
64
|
-
sourceRefPolicy?: {
|
|
65
|
-
minSourceRefs?: number;
|
|
66
|
-
rejectInlineSensitivePayload?: boolean;
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
export interface ConnectorManifestLoader {
|
|
70
|
-
loadManifest(platformId: string): ConnectorManifestLike;
|
|
71
|
-
}
|
|
72
|
-
export interface RoutePlanner {
|
|
73
|
-
planRoute(intent: CapabilityIntent, request: ConnectorRequest): Promise<ExecutionPlan>;
|
|
74
|
-
}
|
|
75
|
-
export interface ExecutionRunner {
|
|
76
|
-
run(plan: ExecutionPlan, request: ConnectorRequest): Promise<RawAttempt>;
|
|
77
|
-
}
|
|
78
|
-
export interface ConnectorExecutionPort {
|
|
79
|
-
executeCapability(intent: CapabilityIntent, request: ConnectorRequest): Promise<ConnectorResult<unknown>>;
|
|
80
|
-
}
|
|
81
|
-
export declare function normalizeOutcome(attempt: RawAttempt): ConnectorResult<unknown>;
|
|
82
|
-
export declare function createConnectorContractCore(input: {
|
|
83
|
-
manifestLoader: ConnectorManifestLoader;
|
|
84
|
-
routePlanner: RoutePlanner;
|
|
85
|
-
executionRunner: ExecutionRunner;
|
|
86
|
-
}): ConnectorExecutionPort;
|
|
87
|
-
export declare function isCredentialActive(state: CredentialState): boolean;
|
|
1
|
+
import type { CredentialContext, CredentialState } from "../../shared/types/credential.js";
|
|
2
|
+
import { type FailureClass } from "./failure-taxonomy.js";
|
|
3
|
+
export declare const CHANNEL_TYPES: readonly ["api_rest", "api_rpc", "a2a", "mcp", "cli", "skill", "browser"];
|
|
4
|
+
export type ChannelType = (typeof CHANNEL_TYPES)[number];
|
|
5
|
+
export declare const CAPABILITY_INTENTS: readonly ["feed.read", "post.publish", "comment.reply", "notification.list", "message.send", "agent.register", "agent.heartbeat", "work.discover", "task.claim"];
|
|
6
|
+
export type CapabilityIntent = (typeof CAPABILITY_INTENTS)[number];
|
|
7
|
+
export interface ConnectorRequest {
|
|
8
|
+
platformId: string;
|
|
9
|
+
intent: CapabilityIntent;
|
|
10
|
+
payload: Record<string, unknown>;
|
|
11
|
+
preferredChannel?: ChannelType;
|
|
12
|
+
timeoutMs?: number;
|
|
13
|
+
idempotencyKey?: string;
|
|
14
|
+
decisionId?: string;
|
|
15
|
+
intentId?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ExecutionPlan {
|
|
18
|
+
platformId: string;
|
|
19
|
+
intent: CapabilityIntent;
|
|
20
|
+
channel: ChannelType;
|
|
21
|
+
endpointMode: "rest_json" | "a2a_envelope" | "cli_stdout" | "skill_call";
|
|
22
|
+
idempotencyKey?: string;
|
|
23
|
+
/** True when selected channel is manifest-marked degraded (cli/skill/browser). */
|
|
24
|
+
degraded?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface ConnectorResult<T> {
|
|
27
|
+
status: "success" | "retryable_failure" | "terminal_failure";
|
|
28
|
+
data?: T;
|
|
29
|
+
failureClass?: FailureClass;
|
|
30
|
+
retryAfterMs?: number;
|
|
31
|
+
metadata: {
|
|
32
|
+
platformId: string;
|
|
33
|
+
channel: ChannelType;
|
|
34
|
+
latencyMs: number;
|
|
35
|
+
degraded?: boolean;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export interface RawAttempt {
|
|
39
|
+
platformId: string;
|
|
40
|
+
channel: ChannelType;
|
|
41
|
+
latencyMs: number;
|
|
42
|
+
degraded?: boolean;
|
|
43
|
+
success: boolean;
|
|
44
|
+
payload?: unknown;
|
|
45
|
+
error?: unknown;
|
|
46
|
+
}
|
|
47
|
+
export interface CredentialContextPort {
|
|
48
|
+
loadCredentialState(platformId: string): Promise<CredentialContext>;
|
|
49
|
+
}
|
|
50
|
+
export interface CooldownLedgerPort {
|
|
51
|
+
loadCooldownState(platformId: string, intent: CapabilityIntent): Promise<{
|
|
52
|
+
blocked: boolean;
|
|
53
|
+
retryAfterMs?: number;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
export interface RouteContextPort extends CredentialContextPort, CooldownLedgerPort {
|
|
57
|
+
}
|
|
58
|
+
export interface ConnectorManifestLike {
|
|
59
|
+
platformId: string;
|
|
60
|
+
supportedCapabilities: CapabilityIntent[];
|
|
61
|
+
channelPriority: ChannelType[];
|
|
62
|
+
credentialTypes: string[];
|
|
63
|
+
degradedChannels?: ChannelType[];
|
|
64
|
+
sourceRefPolicy?: {
|
|
65
|
+
minSourceRefs?: number;
|
|
66
|
+
rejectInlineSensitivePayload?: boolean;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface ConnectorManifestLoader {
|
|
70
|
+
loadManifest(platformId: string): ConnectorManifestLike;
|
|
71
|
+
}
|
|
72
|
+
export interface RoutePlanner {
|
|
73
|
+
planRoute(intent: CapabilityIntent, request: ConnectorRequest): Promise<ExecutionPlan>;
|
|
74
|
+
}
|
|
75
|
+
export interface ExecutionRunner {
|
|
76
|
+
run(plan: ExecutionPlan, request: ConnectorRequest): Promise<RawAttempt>;
|
|
77
|
+
}
|
|
78
|
+
export interface ConnectorExecutionPort {
|
|
79
|
+
executeCapability(intent: CapabilityIntent, request: ConnectorRequest): Promise<ConnectorResult<unknown>>;
|
|
80
|
+
}
|
|
81
|
+
export declare function normalizeOutcome(attempt: RawAttempt): ConnectorResult<unknown>;
|
|
82
|
+
export declare function createConnectorContractCore(input: {
|
|
83
|
+
manifestLoader: ConnectorManifestLoader;
|
|
84
|
+
routePlanner: RoutePlanner;
|
|
85
|
+
executionRunner: ExecutionRunner;
|
|
86
|
+
}): ConnectorExecutionPort;
|
|
87
|
+
export declare function isCredentialActive(state: CredentialState): boolean;
|