@perkos/perkos-a2a 0.12.28 → 0.12.30
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/README.md +22 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +128 -33
- package/dist/index.js.map +4 -4
- package/dist/repair-cli.js +31 -2
- package/dist/repair-cli.js.map +1 -1
- package/dist/repair.d.ts +40 -0
- package/dist/repair.d.ts.map +1 -1
- package/dist/repair.js +530 -127
- package/dist/repair.js.map +1 -1
- package/dist/runtime-evidence.d.ts +42 -0
- package/dist/runtime-evidence.d.ts.map +1 -0
- package/dist/runtime-evidence.js +81 -0
- package/dist/runtime-evidence.js.map +1 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/repair-cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { connectOpenClaw } from "./connect.js";
|
|
3
|
-
import { repairOpenClaw } from "./repair.js";
|
|
3
|
+
import { RepairFailure, repairOpenClaw } from "./repair.js";
|
|
4
4
|
function value(flag) {
|
|
5
5
|
const index = process.argv.indexOf(flag);
|
|
6
6
|
return index >= 0 ? process.argv[index + 1] : undefined;
|
|
@@ -34,7 +34,36 @@ async function main() {
|
|
|
34
34
|
}
|
|
35
35
|
main().catch((error) => {
|
|
36
36
|
const message = error instanceof Error ? error.message : String(error);
|
|
37
|
-
|
|
37
|
+
const failure = error instanceof RepairFailure
|
|
38
|
+
? {
|
|
39
|
+
schemaVersion: 1,
|
|
40
|
+
ok: false,
|
|
41
|
+
phase: error.phase,
|
|
42
|
+
acceptanceBlockedReason: error.code,
|
|
43
|
+
errors: [{
|
|
44
|
+
code: error.code,
|
|
45
|
+
message,
|
|
46
|
+
phase: error.phase,
|
|
47
|
+
retryable: error.retryable,
|
|
48
|
+
requiresProductFix: error.requiresProductFix,
|
|
49
|
+
safeForUser: true,
|
|
50
|
+
}],
|
|
51
|
+
}
|
|
52
|
+
: {
|
|
53
|
+
schemaVersion: 1,
|
|
54
|
+
ok: false,
|
|
55
|
+
phase: "detect",
|
|
56
|
+
acceptanceBlockedReason: "UNEXPECTED_ERROR",
|
|
57
|
+
errors: [{
|
|
58
|
+
code: "UNEXPECTED_ERROR",
|
|
59
|
+
message,
|
|
60
|
+
phase: "detect",
|
|
61
|
+
retryable: false,
|
|
62
|
+
requiresProductFix: false,
|
|
63
|
+
safeForUser: true,
|
|
64
|
+
}],
|
|
65
|
+
};
|
|
66
|
+
process.stdout.write(`${JSON.stringify(failure)}\n`);
|
|
38
67
|
process.exitCode = 1;
|
|
39
68
|
});
|
|
40
69
|
//# sourceMappingURL=repair-cli.js.map
|
package/dist/repair-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-cli.js","sourceRoot":"","sources":["../src/repair-cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"repair-cli.js","sourceRoot":"","sources":["../src/repair-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/repair.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export interface RepairOptions {
|
|
|
11
11
|
configPath?: string;
|
|
12
12
|
timeoutMs?: number;
|
|
13
13
|
pollIntervalMs?: number;
|
|
14
|
+
/** Continuous healthy transport window required after restart. Default: 3 minutes. */
|
|
15
|
+
stabilityWindowMs?: number;
|
|
16
|
+
/** Fresh successful heartbeats required after restart. Default: 3. */
|
|
17
|
+
requiredHeartbeatCount?: number;
|
|
14
18
|
skipRestart?: boolean;
|
|
15
19
|
}
|
|
16
20
|
export interface CommandResult {
|
|
@@ -19,12 +23,35 @@ export interface CommandResult {
|
|
|
19
23
|
stderr: string;
|
|
20
24
|
}
|
|
21
25
|
export type CommandRunner = (command: string, args: string[]) => Promise<CommandResult>;
|
|
26
|
+
export type RepairPhase = "detect" | "snapshot" | "install" | "migrate-config" | "validate-config" | "restart" | "runtime-checks" | "done";
|
|
27
|
+
export type ConfigWriteMode = "atomic" | "inplace-ebusy-fallback";
|
|
28
|
+
export declare class RepairFailure extends Error {
|
|
29
|
+
readonly code: string;
|
|
30
|
+
readonly phase: RepairPhase;
|
|
31
|
+
readonly retryable: boolean;
|
|
32
|
+
readonly requiresProductFix: boolean;
|
|
33
|
+
constructor(code: string, phase: RepairPhase, message: string, retryable: boolean, requiresProductFix: boolean);
|
|
34
|
+
}
|
|
22
35
|
export interface RepairResult {
|
|
36
|
+
schemaVersion: 1;
|
|
23
37
|
ok: boolean;
|
|
38
|
+
phase: "done";
|
|
24
39
|
version: string;
|
|
25
40
|
mode: "installed" | "repaired";
|
|
41
|
+
trustLevel: "trusted";
|
|
42
|
+
strictMode: true;
|
|
43
|
+
resumedFromPhase?: RepairPhase;
|
|
26
44
|
artifactVerified: boolean;
|
|
27
45
|
source: "managed-npm";
|
|
46
|
+
installEvidence: {
|
|
47
|
+
artifactKind?: string;
|
|
48
|
+
source?: string;
|
|
49
|
+
spec?: string;
|
|
50
|
+
receiptUsed: boolean;
|
|
51
|
+
receiptCreated: boolean;
|
|
52
|
+
installRoot: string;
|
|
53
|
+
};
|
|
54
|
+
configWriteMode: ConfigWriteMode;
|
|
28
55
|
normalized: boolean;
|
|
29
56
|
removedUnsupportedPaths: string[];
|
|
30
57
|
quarantinedLegacyExtension: boolean;
|
|
@@ -33,24 +60,37 @@ export interface RepairResult {
|
|
|
33
60
|
restart: {
|
|
34
61
|
requested: boolean;
|
|
35
62
|
verified: boolean;
|
|
63
|
+
method?: "service" | "in-process-sigusr1";
|
|
64
|
+
verifiedBy?: "process-identity" | "fresh-restart-logs";
|
|
36
65
|
beforePid?: number;
|
|
37
66
|
afterPid?: number;
|
|
38
67
|
beforeStartTime?: string;
|
|
39
68
|
afterStartTime?: string;
|
|
40
69
|
};
|
|
41
70
|
postRestart: {
|
|
71
|
+
configLoaded: boolean;
|
|
42
72
|
connected: boolean;
|
|
43
73
|
registered: boolean;
|
|
44
74
|
heartbeat200: boolean;
|
|
75
|
+
heartbeatCount: number;
|
|
45
76
|
chatAuthed: boolean;
|
|
46
77
|
duplicatePlugin: boolean;
|
|
47
78
|
duplicateRegistration: boolean;
|
|
79
|
+
stableSeconds: number;
|
|
48
80
|
};
|
|
49
81
|
}
|
|
50
82
|
export declare function normalizeToSchema(value: unknown, schema: unknown, at?: string): {
|
|
51
83
|
value: unknown;
|
|
52
84
|
removed: string[];
|
|
53
85
|
};
|
|
86
|
+
type RenameFile = (oldPath: string, newPath: string) => Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Atomically replace normal config files, but preserve the inode for Docker/
|
|
89
|
+
* Kubernetes bind-mounted files where rename(2) fails with EBUSY/EXDEV/EPERM.
|
|
90
|
+
* A caller-owned backup is always written before this function is used.
|
|
91
|
+
*/
|
|
92
|
+
export declare function writeJsonConfig(path: string, value: unknown, renameFile?: RenameFile): Promise<ConfigWriteMode>;
|
|
93
|
+
export declare function acquireRepairLock(stateDir: string): Promise<() => Promise<void>>;
|
|
54
94
|
export declare function postRestartStateFromLogs(output: string, agentName: string, startedAt: number): RepairResult["postRestart"];
|
|
55
95
|
export declare const defaultCommandRunner: CommandRunner;
|
|
56
96
|
export declare function repairOpenClaw(options: RepairOptions, run?: CommandRunner): Promise<RepairResult>;
|
package/dist/repair.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"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"}
|