@mebular/fleet 0.0.0-stage → 0.1.0
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/dist/agentdir.d.ts +43 -0
- package/dist/agentdir.d.ts.map +1 -0
- package/dist/agentdir.js +107 -0
- package/dist/agentdir.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1135 -0
- package/dist/cli.js.map +1 -0
- package/dist/collab/chatter.d.ts +54 -0
- package/dist/collab/chatter.d.ts.map +1 -0
- package/dist/collab/chatter.js +94 -0
- package/dist/collab/chatter.js.map +1 -0
- package/dist/collab/dag.d.ts +27 -0
- package/dist/collab/dag.d.ts.map +1 -0
- package/dist/collab/dag.js +107 -0
- package/dist/collab/dag.js.map +1 -0
- package/dist/collab/negotiation.d.ts +60 -0
- package/dist/collab/negotiation.d.ts.map +1 -0
- package/dist/collab/negotiation.js +90 -0
- package/dist/collab/negotiation.js.map +1 -0
- package/dist/collab/tree.d.ts +39 -0
- package/dist/collab/tree.d.ts.map +1 -0
- package/dist/collab/tree.js +177 -0
- package/dist/collab/tree.js.map +1 -0
- package/dist/config.d.ts +123 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +206 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/join.d.ts +50 -0
- package/dist/join.d.ts.map +1 -0
- package/dist/join.js +167 -0
- package/dist/join.js.map +1 -0
- package/dist/jointoken.d.ts +144 -0
- package/dist/jointoken.d.ts.map +1 -0
- package/dist/jointoken.js +472 -0
- package/dist/jointoken.js.map +1 -0
- package/dist/model.d.ts +64 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +158 -0
- package/dist/model.js.map +1 -0
- package/dist/onboard.d.ts +90 -0
- package/dist/onboard.d.ts.map +1 -0
- package/dist/onboard.js +510 -0
- package/dist/onboard.js.map +1 -0
- package/dist/protocol/envelope.d.ts +94 -0
- package/dist/protocol/envelope.d.ts.map +1 -0
- package/dist/protocol/envelope.js +169 -0
- package/dist/protocol/envelope.js.map +1 -0
- package/dist/protocol/events.d.ts +51 -0
- package/dist/protocol/events.d.ts.map +1 -0
- package/dist/protocol/events.js +87 -0
- package/dist/protocol/events.js.map +1 -0
- package/dist/qr.d.ts +15 -0
- package/dist/qr.d.ts.map +1 -0
- package/dist/qr.js +52 -0
- package/dist/qr.js.map +1 -0
- package/dist/quickstart.d.ts +167 -0
- package/dist/quickstart.d.ts.map +1 -0
- package/dist/quickstart.js +482 -0
- package/dist/quickstart.js.map +1 -0
- package/dist/quota.d.ts +41 -0
- package/dist/quota.d.ts.map +1 -0
- package/dist/quota.js +84 -0
- package/dist/quota.js.map +1 -0
- package/dist/runtime/agent.d.ts +100 -0
- package/dist/runtime/agent.d.ts.map +1 -0
- package/dist/runtime/agent.js +260 -0
- package/dist/runtime/agent.js.map +1 -0
- package/dist/runtime/executor.d.ts +42 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +87 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/runtime/fairness.d.ts +25 -0
- package/dist/runtime/fairness.d.ts.map +1 -0
- package/dist/runtime/fairness.js +79 -0
- package/dist/runtime/fairness.js.map +1 -0
- package/dist/runtime/node.d.ts +91 -0
- package/dist/runtime/node.d.ts.map +1 -0
- package/dist/runtime/node.js +203 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/runtime/openchamber-http.d.ts +27 -0
- package/dist/runtime/openchamber-http.d.ts.map +1 -0
- package/dist/runtime/openchamber-http.js +118 -0
- package/dist/runtime/openchamber-http.js.map +1 -0
- package/dist/runtime/openchamber.d.ts +38 -0
- package/dist/runtime/openchamber.d.ts.map +1 -0
- package/dist/runtime/openchamber.js +43 -0
- package/dist/runtime/openchamber.js.map +1 -0
- package/dist/runtime/planner.d.ts +23 -0
- package/dist/runtime/planner.d.ts.map +1 -0
- package/dist/runtime/planner.js +17 -0
- package/dist/runtime/planner.js.map +1 -0
- package/dist/runtime/worker.d.ts +96 -0
- package/dist/runtime/worker.d.ts.map +1 -0
- package/dist/runtime/worker.js +296 -0
- package/dist/runtime/worker.js.map +1 -0
- package/dist/security.d.ts +462 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +1197 -0
- package/dist/security.js.map +1 -0
- package/dist/store/daemon-store.d.ts +33 -0
- package/dist/store/daemon-store.d.ts.map +1 -0
- package/dist/store/daemon-store.js +115 -0
- package/dist/store/daemon-store.js.map +1 -0
- package/dist/store/file-store.d.ts +22 -0
- package/dist/store/file-store.d.ts.map +1 -0
- package/dist/store/file-store.js +63 -0
- package/dist/store/file-store.js.map +1 -0
- package/dist/store/mebular-store.d.ts +22 -0
- package/dist/store/mebular-store.d.ts.map +1 -0
- package/dist/store/mebular-store.js +53 -0
- package/dist/store/mebular-store.js.map +1 -0
- package/dist/store/message-store.d.ts +26 -0
- package/dist/store/message-store.d.ts.map +1 -0
- package/dist/store/message-store.js +51 -0
- package/dist/store/message-store.js.map +1 -0
- package/dist/surface.d.ts +43 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +515 -0
- package/dist/surface.js.map +1 -0
- package/dist/transport/null.d.ts +7 -0
- package/dist/transport/null.d.ts.map +1 -0
- package/dist/transport/null.js +16 -0
- package/dist/transport/null.js.map +1 -0
- package/dist/transport/spool.d.ts +12 -0
- package/dist/transport/spool.d.ts.map +1 -0
- package/dist/transport/spool.js +54 -0
- package/dist/transport/spool.js.map +1 -0
- package/dist/transport/types.d.ts +21 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +6 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/version.json +6 -0
- package/package.json +37 -4
- package/protocol/collab.example.json +23 -0
- package/protocol/daemon-home.example.json +66 -0
- package/protocol/envelope.example.json +12 -0
- package/protocol/state-machine.json +14 -0
- package/protocol/task-tree.example.json +72 -0
- package/src/agentdir.ts +138 -0
- package/src/cli.ts +1192 -0
- package/src/collab/chatter.ts +116 -0
- package/src/collab/dag.ts +124 -0
- package/src/collab/negotiation.ts +130 -0
- package/src/collab/tree.ts +184 -0
- package/src/config.ts +286 -0
- package/src/index.ts +39 -0
- package/src/join.ts +227 -0
- package/src/jointoken.ts +609 -0
- package/src/model.ts +203 -0
- package/src/onboard.ts +601 -0
- package/src/protocol/envelope.ts +228 -0
- package/src/protocol/events.ts +135 -0
- package/src/qr.ts +68 -0
- package/src/quickstart.ts +632 -0
- package/src/quota.ts +112 -0
- package/src/runtime/agent.ts +313 -0
- package/src/runtime/executor.ts +114 -0
- package/src/runtime/fairness.ts +90 -0
- package/src/runtime/node.ts +250 -0
- package/src/runtime/openchamber-http.ts +137 -0
- package/src/runtime/openchamber.ts +66 -0
- package/src/runtime/planner.ts +36 -0
- package/src/runtime/worker.ts +354 -0
- package/src/security.ts +1660 -0
- package/src/store/daemon-store.ts +144 -0
- package/src/store/file-store.ts +75 -0
- package/src/store/mebular-store.ts +66 -0
- package/src/store/message-store.ts +62 -0
- package/src/surface.ts +535 -0
- package/src/transport/null.ts +20 -0
- package/src/transport/spool.ts +62 -0
- package/src/transport/types.ts +27 -0
- package/README.md +0 -3
package/dist/model.js
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// Fleet 任务模型(M1):由**显式状态事件**确定性推导权威 `TaskState`。
|
|
2
|
+
//
|
|
3
|
+
// 关键性质(见 PROTOCOL-INVARIANTS.md):
|
|
4
|
+
// - **顺序无关收敛**:输入事件数组任意排列、任意重复,结果一致;
|
|
5
|
+
// - **至少一次 + 幂等应用**:按 `eventId` 去重,重复投递不改变状态、不重复执行;
|
|
6
|
+
// - **墙钟无关**:`at` / `expiresAt` 不参与权威判定(只做本机展示)。
|
|
7
|
+
import { STATUS_RANK, TERMINAL_PRECEDENCE, isTerminal, canTransition, } from './protocol/envelope.js';
|
|
8
|
+
/** 状态迁移是否合法(显式迁移表;`from === to` 视为幂等自迁移)。 */
|
|
9
|
+
export function validateTaskTransition(from, to) {
|
|
10
|
+
return canTransition(from, to);
|
|
11
|
+
}
|
|
12
|
+
/** 非法迁移则抛错(本地发起侧用;负例测试)。 */
|
|
13
|
+
export function assertTaskTransition(from, to) {
|
|
14
|
+
if (!validateTaskTransition(from, to)) {
|
|
15
|
+
throw new Error(`非法任务状态迁移:${from} → ${to}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** 事件“更权威”判定(确定性全序):状态秩 ↑,再终态平局裁决 ↑,再 `eventId` 字典序 ↑。 */
|
|
19
|
+
function isStronger(a, b) {
|
|
20
|
+
const rankA = STATUS_RANK[a.toStatus];
|
|
21
|
+
const rankB = STATUS_RANK[b.toStatus];
|
|
22
|
+
if (rankA !== rankB)
|
|
23
|
+
return rankA > rankB;
|
|
24
|
+
const precA = TERMINAL_PRECEDENCE[a.toStatus];
|
|
25
|
+
const precB = TERMINAL_PRECEDENCE[b.toStatus];
|
|
26
|
+
if (precA !== precB)
|
|
27
|
+
return precA > precB;
|
|
28
|
+
return a.eventId > b.eventId;
|
|
29
|
+
}
|
|
30
|
+
/** 确定性序列化:对象键递归排序,保证结果与对象构造/解析顺序无关。 */
|
|
31
|
+
function stableStringify(value) {
|
|
32
|
+
if (value === undefined)
|
|
33
|
+
return 'null';
|
|
34
|
+
if (value === null || typeof value !== 'object')
|
|
35
|
+
return JSON.stringify(value);
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
return `[${value.map((item) => stableStringify(item)).join(',')}]`;
|
|
38
|
+
}
|
|
39
|
+
const record = value;
|
|
40
|
+
const keys = Object.keys(record).sort();
|
|
41
|
+
return `{${keys.map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`).join(',')}}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 去重(按 `eventId`)。同一 `eventId` 对应**不同内容**时(违约/对抗输入),
|
|
45
|
+
* 按稳定序列化取字典序较大者做**确定性裁决**——使「去重后的集合」本身与输入
|
|
46
|
+
* 顺序无关,堵住同一 id 不同内容造成的顺序相关分叉(§2.1 顺序无关收敛)。
|
|
47
|
+
* 契约上 `eventId` 仍应内容寻址或全局唯一;本裁决只是兜底,不改变正常路径。
|
|
48
|
+
*/
|
|
49
|
+
export function dedupeEvents(events) {
|
|
50
|
+
const byId = new Map();
|
|
51
|
+
for (const event of events) {
|
|
52
|
+
const existing = byId.get(event.eventId);
|
|
53
|
+
if (existing === undefined) {
|
|
54
|
+
byId.set(event.eventId, event);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (stableStringify(event) > stableStringify(existing)) {
|
|
58
|
+
byId.set(event.eventId, event);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return [...byId.values()];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 由事件集合推导权威状态(**顺序无关、幂等**)。无 `created` 事件 → 返回 `null`(任务未知)。
|
|
65
|
+
* 不读取 `at` / `now`(墙钟无关)。
|
|
66
|
+
*/
|
|
67
|
+
export function reduceTaskEvents(events) {
|
|
68
|
+
const unique = dedupeEvents(events);
|
|
69
|
+
if (unique.length === 0)
|
|
70
|
+
return null;
|
|
71
|
+
let created = null;
|
|
72
|
+
for (const event of unique) {
|
|
73
|
+
if (event.type !== 'created')
|
|
74
|
+
continue;
|
|
75
|
+
if (created === null || event.eventId < created.eventId)
|
|
76
|
+
created = event;
|
|
77
|
+
}
|
|
78
|
+
if (created === null)
|
|
79
|
+
return null;
|
|
80
|
+
let winner = unique[0];
|
|
81
|
+
for (const event of unique)
|
|
82
|
+
if (isStronger(event, winner))
|
|
83
|
+
winner = event;
|
|
84
|
+
const attempts = unique.reduce((n, e) => (e.type === 'claimed' ? n + 1 : n), 0);
|
|
85
|
+
const chainSet = new Set();
|
|
86
|
+
for (const event of unique)
|
|
87
|
+
for (const id of event.trace.chain)
|
|
88
|
+
chainSet.add(id);
|
|
89
|
+
if (created.trace.causedBy !== undefined)
|
|
90
|
+
chainSet.add(created.trace.causedBy);
|
|
91
|
+
const chain = [...chainSet].sort();
|
|
92
|
+
const status = winner.toStatus;
|
|
93
|
+
const state = {
|
|
94
|
+
taskId: created.taskId,
|
|
95
|
+
from: created.actor,
|
|
96
|
+
to: created.to ?? created.actor,
|
|
97
|
+
intent: created.intent ?? '',
|
|
98
|
+
status,
|
|
99
|
+
attempts,
|
|
100
|
+
trace: {
|
|
101
|
+
...(created.trace.causedBy !== undefined ? { causedBy: created.trace.causedBy } : {}),
|
|
102
|
+
chain,
|
|
103
|
+
},
|
|
104
|
+
terminal: isTerminal(status),
|
|
105
|
+
lastEventId: winner.eventId,
|
|
106
|
+
};
|
|
107
|
+
if (created.payloadRef !== undefined)
|
|
108
|
+
state.payloadRef = created.payloadRef;
|
|
109
|
+
if (created.expiresAt !== undefined)
|
|
110
|
+
state.expiresAt = created.expiresAt;
|
|
111
|
+
if (winner.type === 'done' && winner.payloadRef !== undefined)
|
|
112
|
+
state.resultRef = winner.payloadRef;
|
|
113
|
+
if (winner.type === 'failed' && winner.reason !== undefined)
|
|
114
|
+
state.reason = winner.reason;
|
|
115
|
+
if (created.budget !== undefined)
|
|
116
|
+
state.budget = created.budget;
|
|
117
|
+
if (created.dispatch !== undefined)
|
|
118
|
+
state.dispatch = created.dispatch;
|
|
119
|
+
return state;
|
|
120
|
+
}
|
|
121
|
+
export class IdempotentTaskApplier {
|
|
122
|
+
byTask = new Map();
|
|
123
|
+
/** 应用一个事件(首次返回 applied=true;重复返回 applied=false)。 */
|
|
124
|
+
apply(event) {
|
|
125
|
+
let map = this.byTask.get(event.taskId);
|
|
126
|
+
if (map === undefined) {
|
|
127
|
+
map = new Map();
|
|
128
|
+
this.byTask.set(event.taskId, map);
|
|
129
|
+
}
|
|
130
|
+
if (map.has(event.eventId)) {
|
|
131
|
+
return { applied: false, state: reduceTaskEvents([...map.values()]) };
|
|
132
|
+
}
|
|
133
|
+
map.set(event.eventId, event);
|
|
134
|
+
return { applied: true, state: reduceTaskEvents([...map.values()]) };
|
|
135
|
+
}
|
|
136
|
+
hasApplied(taskId, eventId) {
|
|
137
|
+
return this.byTask.get(taskId)?.has(eventId) ?? false;
|
|
138
|
+
}
|
|
139
|
+
/** 是否应执行该事件对应的工作(非 `created` 且未应用过)——保证「重复投递不重复执行」。 */
|
|
140
|
+
shouldExecute(event) {
|
|
141
|
+
return event.type !== 'created' && !this.hasApplied(event.taskId, event.eventId);
|
|
142
|
+
}
|
|
143
|
+
eventsOf(taskId) {
|
|
144
|
+
return [...(this.byTask.get(taskId)?.values() ?? [])];
|
|
145
|
+
}
|
|
146
|
+
state(taskId) {
|
|
147
|
+
const events = this.byTask.get(taskId);
|
|
148
|
+
return events === undefined ? null : reduceTaskEvents([...events.values()]);
|
|
149
|
+
}
|
|
150
|
+
taskIds() {
|
|
151
|
+
return [...this.byTask.keys()].sort();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/** 本机展示用:是否已过期(**advisory**,不参与权威判定)。 */
|
|
155
|
+
export function isExpiredLocally(expiresAt, now) {
|
|
156
|
+
return expiresAt !== undefined && now >= expiresAt;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Mebular, type NamespaceHandoffPlan, type NamespaceHandoffResult, type NamespaceRejoinResult } from '@mebular/core';
|
|
2
|
+
import { type FleetAgentConfig, type FleetConfig, type FleetEncryption, type OnboardInput, type OnboardResult } from './config.js';
|
|
3
|
+
import { ExecutorRegistry } from './runtime/agent.js';
|
|
4
|
+
/** 由 agent 配置构建执行器注册表(未知 kind 已在校验期拒绝)。 */
|
|
5
|
+
export declare function buildRegistry(agents: readonly FleetAgentConfig[]): ExecutorRegistry;
|
|
6
|
+
/** 由配置 + 加密材料构造 core `Mebular` 选项(订阅自主;对端自行声明)。 */
|
|
7
|
+
export declare function mebularOptions(config: FleetConfig, encryption: FleetEncryption): Record<string, unknown>;
|
|
8
|
+
/** 离线(不启网络)`Mebular` 选项:onboard/doctor/subscribe 用,只读写本地存储。 */
|
|
9
|
+
export declare function offlineMebularOptions(config: FleetConfig, encryption: FleetEncryption): Record<string, unknown>;
|
|
10
|
+
/** 生成/导入主密钥并写配置;幂等(重复执行不损坏身份)。 */
|
|
11
|
+
export declare function onboardDevice(input: OnboardInput): Promise<OnboardResult>;
|
|
12
|
+
/**
|
|
13
|
+
* 本机订阅/退订某记忆域(**只能改自己**;写 `namespace_subscription` 到 `__policy__`)。
|
|
14
|
+
* `active=false` 只退订,不清本地数据;退出并交接走 `leaveNamespace`。
|
|
15
|
+
*
|
|
16
|
+
* `mebular`:运行中 daemon 的 live app(可选);提供时写入同一 EventLog,不另开离线实例。
|
|
17
|
+
*/
|
|
18
|
+
export declare function subscribeNamespace(dir: string, input: {
|
|
19
|
+
namespace?: string;
|
|
20
|
+
active?: boolean;
|
|
21
|
+
note?: string;
|
|
22
|
+
mebular?: Mebular;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
member: string;
|
|
25
|
+
namespace: string;
|
|
26
|
+
active: boolean;
|
|
27
|
+
eventId: string;
|
|
28
|
+
}>;
|
|
29
|
+
/** 某分区的 active 订阅者(只读)。 */
|
|
30
|
+
export declare function namespaceSubscribers(dir: string, namespace?: string): Promise<string[]>;
|
|
31
|
+
/** 某分区订阅视图(只读)。 */
|
|
32
|
+
export declare function namespaceSubscriptions(dir: string, namespace?: string): Promise<{
|
|
33
|
+
active: boolean;
|
|
34
|
+
subscribers: string[];
|
|
35
|
+
}>;
|
|
36
|
+
/** 建域(零门槛):写 `namespace_declare`;不自动订阅。`mebular` 为运行中 daemon 的 live app(可选)。 */
|
|
37
|
+
export declare function declareNamespace(dir: string, input: {
|
|
38
|
+
namespace: string;
|
|
39
|
+
note?: string;
|
|
40
|
+
mebular?: Mebular;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
namespace: string;
|
|
43
|
+
eventId: string;
|
|
44
|
+
}>;
|
|
45
|
+
/** 恢复被移出的设备(写 `device_restore`;high 档证明由调用方给出)。 */
|
|
46
|
+
export declare function restoreDevice(dir: string, input: {
|
|
47
|
+
subject: string;
|
|
48
|
+
note?: string;
|
|
49
|
+
nonce?: string;
|
|
50
|
+
cosign?: unknown;
|
|
51
|
+
breakGlass?: unknown;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
subject: string;
|
|
54
|
+
eventId: string;
|
|
55
|
+
}>;
|
|
56
|
+
/** 重订阅恢复(准入:曾订阅 ∧ 未被移出;写图外 reset 标记)。 */
|
|
57
|
+
export declare function rejoinNamespace(dir: string, input?: {
|
|
58
|
+
namespace?: string;
|
|
59
|
+
}): Promise<NamespaceRejoinResult>;
|
|
60
|
+
/** 本机是否已声明某分区重置(读图外标记)。只读。 */
|
|
61
|
+
export declare function rejoinReset(dir: string, namespace?: string): Promise<boolean>;
|
|
62
|
+
/** 交接前置校验(只读)——继任者是否订阅且已 ack 本机在该分区的全部事件。 */
|
|
63
|
+
export declare function planHandoff(dir: string, input: {
|
|
64
|
+
namespace?: string;
|
|
65
|
+
successor: string;
|
|
66
|
+
}): Promise<NamespaceHandoffPlan>;
|
|
67
|
+
/** 退出并交接(默认要求继任者全量 ack;`force` 仅本地 CLI,仍如实记录)。 */
|
|
68
|
+
export declare function leaveNamespace(dir: string, input: {
|
|
69
|
+
namespace?: string;
|
|
70
|
+
successor: string;
|
|
71
|
+
force?: boolean;
|
|
72
|
+
note?: string;
|
|
73
|
+
}): Promise<NamespaceHandoffResult>;
|
|
74
|
+
/** `WARN` = 非致命告警(不使 `ok=false`),用于暴露加固/运维风险。 */
|
|
75
|
+
export type DoctorStatus = 'PASS' | 'FAIL' | 'SKIP' | 'WARN';
|
|
76
|
+
export interface DoctorCheck {
|
|
77
|
+
name: string;
|
|
78
|
+
status: DoctorStatus;
|
|
79
|
+
detail: string;
|
|
80
|
+
hint?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface DoctorReport {
|
|
83
|
+
ok: boolean;
|
|
84
|
+
device: string;
|
|
85
|
+
checks: DoctorCheck[];
|
|
86
|
+
skipped: string[];
|
|
87
|
+
}
|
|
88
|
+
/** 逐项自检;默认脱敏(不含任何密钥材料)。 */
|
|
89
|
+
export declare function doctor(dir: string): Promise<DoctorReport>;
|
|
90
|
+
//# sourceMappingURL=onboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"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"}
|