@perkos/perkos-a2a 0.12.27 → 0.12.29

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 CHANGED
@@ -168,25 +168,34 @@ openclaw plugins install @perkos/perkos-a2a
168
168
  openclaw gateway restart
169
169
  ```
170
170
 
171
- #### Official idempotent repair
171
+ #### Official idempotent connection
172
172
 
173
- Version 0.12.27+ ships the machine-readable `perkos-a2a repair` CLI. The
173
+ Version 0.12.29+ ships the machine-readable `perkos-a2a connect` CLI. The
174
174
  official PerkOS invitation supplies the artifact URL, SHA-256, agent name, and
175
- agent id; it invokes the CLI from that verified artifact with `npm exec` so the
176
- repair remains available even when an invalid legacy plugin config prevents
177
- OpenClaw from loading the installed plugin.
175
+ agent id; it invokes the exact npm version with `npx`. The same command performs
176
+ a first install or repairs the matching existing identity, even when an invalid
177
+ legacy plugin config prevents OpenClaw from loading the installed plugin.
178
178
 
179
179
  The command selects OpenClaw's recorded `npm-pack:` installation path (including
180
180
  the `npm/node_modules` layout used by OpenClaw 2026.5.x), quarantines a competing
181
181
  `extensions/perkos-a2a` source, normalizes config against the packaged manifest
182
182
  schema, and protects identity, relay/chat credentials, endpoints, runtime kind,
183
- and session key. It then validates config and plugin health, performs a safe
184
- gateway restart, proves the PID/start identity changed, and accepts only fresh
185
- post-restart relay/chat/heartbeat logs. Success or failure is emitted as one JSON
186
- object; secret values are never printed.
183
+ and session key. Bind-mounted `openclaw.json` files are updated in place when an
184
+ atomic rename is unavailable, while a persistent backup and the quarantined
185
+ legacy extension remain recoverable. A process lock prevents two simultaneous
186
+ repairs from registering the same agent.
187
+
188
+ It then validates config and plugin health and performs a verifiable restart. A
189
+ normal service must return a new PID/start identity; a containerized PID 1
190
+ gateway restarts in-process through OpenClaw's authorized `SIGUSR1` path and must
191
+ emit fresh restart logs. Relay, registration, heartbeat, and chat authentication
192
+ must remain healthy—with no duplicate plugin or registration messages—for two
193
+ continuous minutes. Success or failure is emitted as one JSON object; secret
194
+ values are never printed.
187
195
 
188
196
  ```bash
189
- npm exec --yes --package ./perkos-a2a.tgz -- perkos-a2a repair \
197
+ A2A_RELAY_API_KEY='<credential-from-invitation>' \
198
+ npx --yes @perkos/perkos-a2a@0.12.29 connect \
190
199
  --artifact ./perkos-a2a.tgz \
191
200
  --sha256 '<sha256-from-the-official-invitation>' \
192
201
  --agent-name '<agent-name>' \
@@ -0,0 +1,9 @@
1
+ import { type CommandRunner, type RepairOptions, type RepairResult } from "./repair.js";
2
+ export interface ConnectOptions extends Omit<RepairOptions, "initialConfig"> {
3
+ relayApiKey: string;
4
+ }
5
+ /** Canonical first-install config. External runtimes retain model ownership. */
6
+ export declare function invitationConfig(options: Pick<ConnectOptions, "expectedAgentName" | "expectedAgentId" | "relayApiKey">): Record<string, unknown>;
7
+ /** Install a new identity or repair the same existing identity idempotently. */
8
+ export declare function connectOpenClaw(options: ConnectOptions, run?: CommandRunner): Promise<RepairResult>;
9
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAMrB,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAC3D,mBAAmB,GAAG,iBAAiB,GAAG,aAAa,CACxD,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgB1B;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,GAAG,CAAC,EAAE,aAAa,GAClB,OAAO,CAAC,YAAY,CAAC,CAMvB"}
@@ -0,0 +1,31 @@
1
+ import { repairOpenClaw, } from "./repair.js";
2
+ const RELAY_URL = "wss://transport.perkos.xyz/a2a";
3
+ const CHAT_URL = "wss://chat.perkos.xyz/chat";
4
+ const API_URL = "https://api.perkos.xyz";
5
+ /** Canonical first-install config. External runtimes retain model ownership. */
6
+ export function invitationConfig(options) {
7
+ return {
8
+ agentName: options.expectedAgentName,
9
+ port: 5050,
10
+ skills: [],
11
+ peers: {},
12
+ mode: "client-only",
13
+ relay: { enabled: true, url: RELAY_URL, apiKey: options.relayApiKey },
14
+ runtime: { kind: "openclaw", sessionKey: "agent:main" },
15
+ chat: { enabled: true, url: CHAT_URL },
16
+ platform: {
17
+ agentId: options.expectedAgentId,
18
+ heartbeatUrl: `${API_URL}/agents/${options.expectedAgentId}/heartbeat`,
19
+ heartbeatIntervalMs: 60_000,
20
+ },
21
+ };
22
+ }
23
+ /** Install a new identity or repair the same existing identity idempotently. */
24
+ export function connectOpenClaw(options, run) {
25
+ const repairOptions = {
26
+ ...options,
27
+ initialConfig: invitationConfig(options),
28
+ };
29
+ return repairOpenClaw(repairOptions, run);
30
+ }
31
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAIf,MAAM,aAAa,CAAC;AAErB,MAAM,SAAS,GAAG,gCAAgC,CAAC;AACnD,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAC9C,MAAM,OAAO,GAAG,wBAAwB,CAAC;AAMzC,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,OAEhC;IACC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,iBAAiB;QACpC,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE;QACrE,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE;QACvD,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;QACtC,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC,eAAe;YAChC,YAAY,EAAE,GAAG,OAAO,WAAW,OAAO,CAAC,eAAe,YAAY;YACtE,mBAAmB,EAAE,MAAM;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAC7B,OAAuB,EACvB,GAAmB;IAEnB,MAAM,aAAa,GAAkB;QACnC,GAAG,OAAO;QACV,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC;KACzC,CAAC;IACF,OAAO,cAAc,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import { connectOpenClaw } from "./connect.js";
2
3
  import { repairOpenClaw } from "./repair.js";
3
4
  function value(flag) {
4
5
  const index = process.argv.indexOf(flag);
@@ -12,15 +13,23 @@ function required(flag) {
12
13
  }
13
14
  async function main() {
14
15
  const command = process.argv[2];
15
- if (command !== "repair")
16
- throw new Error("usage: perkos-a2a repair --artifact <plugin.tgz> --sha256 <digest> --agent-name <name> --agent-id <id> [--json]");
17
- const result = await repairOpenClaw({
16
+ if (command !== "repair" && command !== "connect") {
17
+ throw new Error("usage: perkos-a2a <connect|repair> --artifact <plugin.tgz> --sha256 <digest> --agent-name <name> --agent-id <id> [--relay-api-key <key>] [--json]");
18
+ }
19
+ const common = {
18
20
  artifactPath: required("--artifact"),
19
21
  artifactSha256: required("--sha256"),
20
22
  expectedAgentName: required("--agent-name"),
21
23
  expectedAgentId: required("--agent-id"),
22
24
  timeoutMs: value("--timeout-ms") ? Number(value("--timeout-ms")) : undefined,
23
- });
25
+ };
26
+ const relayApiKey = value("--relay-api-key") ?? process.env.A2A_RELAY_API_KEY;
27
+ if (command === "connect" && !relayApiKey) {
28
+ throw new Error("missing relay credential: set A2A_RELAY_API_KEY or pass --relay-api-key");
29
+ }
30
+ const result = command === "connect"
31
+ ? await connectOpenClaw({ ...common, relayApiKey: relayApiKey })
32
+ : await repairOpenClaw(common);
24
33
  process.stdout.write(`${JSON.stringify(result)}\n`);
25
34
  }
26
35
  main().catch((error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"repair-cli.js","sourceRoot":"","sources":["../src/repair-cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,iHAAiH,CAAC,CAAC;IAC7J,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QAClC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC;QACpC,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC;QACpC,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC;QAC3C,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC;QACvC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KAC7E,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
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;AAE7C,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,mJAAmJ,CAAC,CAAC;IACvK,CAAC;IACD,MAAM,MAAM,GAAG;QACb,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC;QACpC,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC;QACpC,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAAC;QAC3C,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC;QACvC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KAC7E,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9E,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS;QAClC,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,WAAY,EAAE,CAAC;QACjE,CAAC,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
package/dist/repair.d.ts CHANGED
@@ -1,13 +1,18 @@
1
+ type JsonObject = Record<string, unknown>;
1
2
  export interface RepairOptions {
2
3
  artifactPath: string;
3
4
  artifactSha256: string;
4
5
  expectedAgentName: string;
5
6
  expectedAgentId: string;
7
+ /** Used only when this identity has no existing PerkOS plugin config. */
8
+ initialConfig?: JsonObject;
6
9
  openclawBin?: string;
7
10
  stateDir?: string;
8
11
  configPath?: string;
9
12
  timeoutMs?: number;
10
13
  pollIntervalMs?: number;
14
+ /** Continuous healthy transport window required after restart. Default: 2 minutes. */
15
+ stabilityWindowMs?: number;
11
16
  skipRestart?: boolean;
12
17
  }
13
18
  export interface CommandResult {
@@ -19,6 +24,7 @@ export type CommandRunner = (command: string, args: string[]) => Promise<Command
19
24
  export interface RepairResult {
20
25
  ok: boolean;
21
26
  version: string;
27
+ mode: "installed" | "repaired";
22
28
  artifactVerified: boolean;
23
29
  source: "managed-npm";
24
30
  normalized: boolean;
@@ -29,6 +35,8 @@ export interface RepairResult {
29
35
  restart: {
30
36
  requested: boolean;
31
37
  verified: boolean;
38
+ method?: "service" | "in-process-sigusr1";
39
+ verifiedBy?: "process-identity" | "fresh-restart-logs";
32
40
  beforePid?: number;
33
41
  afterPid?: number;
34
42
  beforeStartTime?: string;
@@ -47,7 +55,16 @@ export declare function normalizeToSchema(value: unknown, schema: unknown, at?:
47
55
  value: unknown;
48
56
  removed: string[];
49
57
  };
58
+ type RenameFile = (oldPath: string, newPath: string) => Promise<void>;
59
+ /**
60
+ * Atomically replace normal config files, but preserve the inode for Docker/
61
+ * Kubernetes bind-mounted files where rename(2) fails with EBUSY/EXDEV/EPERM.
62
+ * A caller-owned backup is always written before this function is used.
63
+ */
64
+ export declare function writeJsonConfig(path: string, value: unknown, renameFile?: RenameFile): Promise<void>;
65
+ export declare function acquireRepairLock(stateDir: string): Promise<() => Promise<void>>;
50
66
  export declare function postRestartStateFromLogs(output: string, agentName: string, startedAt: number): RepairResult["postRestart"];
51
67
  export declare const defaultCommandRunner: CommandRunner;
52
68
  export declare function repairOpenClaw(options: RepairOptions, run?: CommandRunner): Promise<RepairResult>;
69
+ export {};
53
70
  //# sourceMappingURL=repair.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAExF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,0BAA0B,EAAE,OAAO,CAAC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE;QACP,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QACX,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,eAAe,EAAE,OAAO,CAAC;QACzB,qBAAqB,EAAE,OAAO,CAAC;KAChC,CAAC;CACH;AA0BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,SAAK,GAAG;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAyBA;AA4FD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAE1H;AAaD,eAAO,MAAM,oBAAoB,EAAE,aAQjC,CAAC;AA8CH,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,GAAE,aAAoC,GAAG,OAAO,CAAC,YAAY,CAAC,CAgI7H"}
1
+ {"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"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"}
package/dist/repair.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { createHash } from "node:crypto";
3
- import { mkdtemp, mkdir, readFile, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
4
- import { homedir, tmpdir } from "node:os";
3
+ import { mkdir, open, readFile, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
4
+ import { homedir } from "node:os";
5
5
  import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  const PROTECTED_PATHS = [
@@ -67,10 +67,81 @@ async function pathExists(path) {
67
67
  return false;
68
68
  }
69
69
  }
70
- async function atomicWriteJson(path, value) {
70
+ function errorCode(error) {
71
+ return typeof error === "object" && error !== null && "code" in error
72
+ ? String(error.code ?? "")
73
+ : undefined;
74
+ }
75
+ /**
76
+ * Atomically replace normal config files, but preserve the inode for Docker/
77
+ * Kubernetes bind-mounted files where rename(2) fails with EBUSY/EXDEV/EPERM.
78
+ * A caller-owned backup is always written before this function is used.
79
+ */
80
+ export async function writeJsonConfig(path, value, renameFile = rename) {
81
+ const serialized = `${JSON.stringify(value, null, 2)}\n`;
71
82
  const temporary = `${path}.perkos-repair-${process.pid}.tmp`;
72
- await writeFile(temporary, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
73
- await rename(temporary, path);
83
+ await writeFile(temporary, serialized, { mode: 0o600 });
84
+ try {
85
+ await renameFile(temporary, path);
86
+ }
87
+ catch (error) {
88
+ const code = errorCode(error);
89
+ if (code !== "EBUSY" && code !== "EXDEV" && code !== "EPERM")
90
+ throw error;
91
+ await rm(temporary, { force: true });
92
+ const handle = await open(path, "r+");
93
+ try {
94
+ await handle.truncate(0);
95
+ await handle.writeFile(serialized, "utf8");
96
+ await handle.sync();
97
+ }
98
+ finally {
99
+ await handle.close();
100
+ }
101
+ }
102
+ finally {
103
+ await rm(temporary, { force: true });
104
+ }
105
+ }
106
+ export async function acquireRepairLock(stateDir) {
107
+ await mkdir(stateDir, { recursive: true, mode: 0o700 });
108
+ const lockPath = join(stateDir, "perkos-a2a-connect.lock");
109
+ const attempt = async () => open(lockPath, "wx", 0o600);
110
+ let handle;
111
+ try {
112
+ handle = await attempt();
113
+ }
114
+ catch (error) {
115
+ if (errorCode(error) !== "EEXIST")
116
+ throw error;
117
+ let stale = false;
118
+ try {
119
+ const lock = JSON.parse(await readFile(lockPath, "utf8"));
120
+ const pid = typeof lock.pid === "number" ? lock.pid : Number.NaN;
121
+ const createdAt = typeof lock.createdAt === "string" ? Date.parse(lock.createdAt) : Number.NaN;
122
+ if (Number.isFinite(pid)) {
123
+ try {
124
+ process.kill(pid, 0);
125
+ }
126
+ catch (probeError) {
127
+ stale = errorCode(probeError) === "ESRCH";
128
+ }
129
+ }
130
+ if (!Number.isFinite(pid) && Number.isFinite(createdAt) && Date.now() - createdAt > 10 * 60_000)
131
+ stale = true;
132
+ }
133
+ catch { /* malformed locks are not removed unless old enough */ }
134
+ if (!stale)
135
+ throw new Error("another perkos-a2a connect/repair is already in progress");
136
+ await rm(lockPath, { force: true });
137
+ handle = await attempt();
138
+ }
139
+ await handle.writeFile(`${JSON.stringify({ pid: process.pid, createdAt: new Date().toISOString() })}\n`, "utf8");
140
+ await handle.sync();
141
+ return async () => {
142
+ await handle.close();
143
+ await rm(lockPath, { force: true });
144
+ };
74
145
  }
75
146
  function parseJsonOutput(output) {
76
147
  const trimmed = output.trim();
@@ -121,8 +192,8 @@ async function processIdentityWithStart(run, status) {
121
192
  return startTime ? { ...identity, startTime } : identity;
122
193
  }
123
194
  function processChanged(before, after) {
124
- if (before.pid !== undefined && after.pid !== undefined)
125
- return before.pid !== after.pid;
195
+ if (before.pid !== undefined && after.pid !== undefined && before.pid !== after.pid)
196
+ return true;
126
197
  if (before.startTime && after.startTime)
127
198
  return before.startTime !== after.startTime;
128
199
  return false;
@@ -179,9 +250,7 @@ function openClawConfig(document) {
179
250
  const entries = isObject(plugins) ? plugins.entries : undefined;
180
251
  const entry = isObject(entries) ? entries["perkos-a2a"] : undefined;
181
252
  const config = isObject(entry) ? entry.config : undefined;
182
- if (!isObject(config))
183
- throw new Error("existing PerkOS plugin config is missing");
184
- return config;
253
+ return isObject(config) ? config : undefined;
185
254
  }
186
255
  function replacePluginEntry(document, config, enabled) {
187
256
  if (!isObject(document.plugins))
@@ -193,6 +262,23 @@ function replacePluginEntry(document, config, enabled) {
193
262
  const previous = isObject(entries["perkos-a2a"]) ? entries["perkos-a2a"] : {};
194
263
  entries["perkos-a2a"] = { ...previous, enabled, config };
195
264
  }
265
+ function enableExternalRestart(document) {
266
+ const previous = structuredClone(document.commands);
267
+ if (!isObject(document.commands))
268
+ document.commands = {};
269
+ document.commands.restart = true;
270
+ return previous;
271
+ }
272
+ function restoreExternalRestart(document, previous) {
273
+ if (previous === undefined)
274
+ delete document.commands;
275
+ else
276
+ document.commands = previous;
277
+ }
278
+ function restartObservedInLogs(output, startedAt) {
279
+ const text = logTextSince(output, startedAt).toLowerCase();
280
+ return text.includes("signal sigusr1 received") || text.includes("gateway restarting");
281
+ }
196
282
  function assertIdentity(config, expectedName, expectedId) {
197
283
  if (config.agentName !== expectedName)
198
284
  throw new Error("configured agentName does not match this invitation");
@@ -229,129 +315,188 @@ export async function repairOpenClaw(options, run = defaultCommandRunner) {
229
315
  const artifactDigest = createHash("sha256").update(await readFile(artifactPath)).digest("hex");
230
316
  if (artifactDigest !== options.artifactSha256.toLowerCase())
231
317
  throw new Error(`plugin artifact checksum mismatch: ${artifactDigest}`);
232
- const migrationDir = await mkdtemp(join(tmpdir(), "perkos-a2a-repair-"));
233
- const backupRoot = join(stateDir, "perkos-migration-backups");
234
- await mkdir(backupRoot, { recursive: true, mode: 0o700 });
235
- const backupPath = join(migrationDir, "openclaw.before.json");
236
- const legacyExtension = join(stateDir, "extensions", "perkos-a2a");
237
- const quarantinePath = join(backupRoot, `perkos-a2a-extension-${Date.now()}`);
238
- const originalRaw = await readFile(configPath, "utf8");
239
- let document;
240
- try {
241
- document = JSON.parse(originalRaw);
242
- }
243
- catch {
244
- throw new Error("OpenClaw config must be strict JSON for safe automatic repair");
245
- }
246
- const before = structuredClone(openClawConfig(document));
247
- await writeFile(backupPath, originalRaw, { mode: 0o600 });
248
- const normalized = normalizeToSchema(before, manifest.configSchema);
249
- if (!isObject(normalized.value))
250
- throw new Error("normalized PerkOS config is invalid");
251
- assertProtected(before, normalized.value);
252
- assertIdentity(normalized.value, options.expectedAgentName, options.expectedAgentId);
253
- let quarantined = false;
254
- let committed = false;
318
+ const releaseRepairLock = await acquireRepairLock(stateDir);
255
319
  try {
256
- replacePluginEntry(document, {}, false);
257
- await atomicWriteJson(configPath, document);
258
- if (await pathExists(legacyExtension)) {
259
- const legacyManifest = JSON.parse(await readFile(join(legacyExtension, "openclaw.plugin.json"), "utf8"));
260
- if (legacyManifest.id !== "perkos-a2a")
261
- throw new Error("refusing to quarantine a non-PerkOS extension");
262
- await rename(legacyExtension, quarantinePath);
263
- quarantined = true;
320
+ const backupRoot = join(stateDir, "perkos-migration-backups");
321
+ await mkdir(backupRoot, { recursive: true, mode: 0o700 });
322
+ const backupPath = join(backupRoot, `openclaw-${Date.now()}.before.json`);
323
+ const legacyExtension = join(stateDir, "extensions", "perkos-a2a");
324
+ const quarantinePath = join(backupRoot, `perkos-a2a-extension-${Date.now()}`);
325
+ const originalRaw = await readFile(configPath, "utf8");
326
+ let document;
327
+ try {
328
+ document = JSON.parse(originalRaw);
264
329
  }
265
- await mustRun(run, openclaw, ["plugins", "install", `npm-pack:${artifactPath}`, "--force"], "managed plugin install");
266
- const inspectResult = await mustRun(run, openclaw, ["plugins", "inspect", "perkos-a2a", "--json"], "plugin inspection");
267
- const inspect = parseJsonOutput(inspectResult.stdout);
268
- if (!isObject(inspect))
269
- throw new Error("plugin inspection result is invalid");
270
- const plugin = isObject(inspect.plugin) ? inspect.plugin : {};
271
- const install = isObject(inspect.install) ? inspect.install : {};
272
- if (plugin.id !== "perkos-a2a" || install.artifactKind !== "npm-pack" || typeof install.installPath !== "string" || typeof plugin.rootDir !== "string") {
273
- throw new Error("managed npm install was not recorded");
330
+ catch {
331
+ throw new Error("OpenClaw config must be strict JSON for safe automatic repair");
274
332
  }
275
- const npmRoot = await realpath(join(stateDir, "npm"));
276
- const managedPath = await realpath(install.installPath);
277
- const activeRoot = await realpath(plugin.rootDir);
278
- assertUnder(npmRoot, managedPath);
279
- if (activeRoot !== managedPath)
280
- throw new Error("PerkOS is still loading from a non-managed plugin source");
281
- const installedManifest = JSON.parse(await readFile(join(managedPath, "openclaw.plugin.json"), "utf8"));
282
- if (installedManifest.id !== "perkos-a2a" || installedManifest.version !== version)
283
- throw new Error("installed plugin version does not match repair CLI");
284
- const currentRaw = await readFile(configPath, "utf8");
285
- const currentDocument = JSON.parse(currentRaw);
286
- replacePluginEntry(currentDocument, normalized.value, true);
287
- await atomicWriteJson(configPath, currentDocument);
288
- await mustRun(run, openclaw, ["config", "validate"], "config validation");
289
- const doctor = await mustRun(run, openclaw, ["plugins", "doctor"], "plugin doctor");
290
- const doctorText = `${doctor.stdout}\n${doctor.stderr}`.toLowerCase();
291
- if (doctorText.includes("duplicate plugin id detected"))
292
- throw new Error("duplicate plugin source remains after migration");
293
- committed = true;
294
- const emptyPostRestart = verifyLogState("", options.expectedAgentName);
295
- const restartResult = { requested: false, verified: false };
296
- let postRestart = emptyPostRestart;
297
- if (!options.skipRestart) {
298
- const beforeStatusResult = await mustRun(run, openclaw, ["gateway", "status", "--json"], "pre-restart gateway status");
299
- const beforeStatus = await processIdentityWithStart(run, parseJsonOutput(beforeStatusResult.stdout));
300
- restartResult.beforePid = beforeStatus.pid;
301
- restartResult.beforeStartTime = beforeStatus.startTime;
302
- const restartStartedAt = Date.now();
303
- await mustRun(run, openclaw, ["gateway", "restart", "--safe", "--skip-deferral", "--json"], "gateway restart");
304
- restartResult.requested = true;
305
- const deadline = Date.now() + (options.timeoutMs ?? 90_000);
306
- let recentLogs = "";
307
- while (Date.now() < deadline) {
308
- await wait(options.pollIntervalMs ?? 2_000);
309
- const status = await run(openclaw, ["gateway", "status", "--json", "--require-rpc"]);
310
- if (status.code !== 0)
311
- continue;
312
- const afterStatus = await processIdentityWithStart(run, parseJsonOutput(status.stdout));
313
- restartResult.afterPid = afterStatus.pid;
314
- restartResult.afterStartTime = afterStatus.startTime;
315
- restartResult.verified = processChanged(beforeStatus, afterStatus);
316
- const logs = await run(openclaw, ["logs", "--json", "--limit", "1000", "--max-bytes", "2000000"]);
317
- if (logs.code === 0)
318
- recentLogs = logs.stdout;
319
- postRestart = postRestartStateFromLogs(recentLogs, options.expectedAgentName, restartStartedAt);
320
- if (restartResult.verified && postRestart.connected && postRestart.registered && postRestart.heartbeat200 && postRestart.chatAuthed && !postRestart.duplicatePlugin && !postRestart.duplicateRegistration)
321
- break;
333
+ const existingConfig = openClawConfig(document);
334
+ const before = structuredClone(existingConfig ?? options.initialConfig);
335
+ if (!isObject(before))
336
+ throw new Error("existing PerkOS plugin config is missing");
337
+ await writeFile(backupPath, originalRaw, { mode: 0o600 });
338
+ const normalized = normalizeToSchema(before, manifest.configSchema);
339
+ if (!isObject(normalized.value))
340
+ throw new Error("normalized PerkOS config is invalid");
341
+ assertProtected(before, normalized.value);
342
+ assertIdentity(normalized.value, options.expectedAgentName, options.expectedAgentId);
343
+ let quarantined = false;
344
+ let committed = false;
345
+ try {
346
+ replacePluginEntry(document, {}, false);
347
+ await writeJsonConfig(configPath, document);
348
+ if (await pathExists(legacyExtension)) {
349
+ const legacyManifest = JSON.parse(await readFile(join(legacyExtension, "openclaw.plugin.json"), "utf8"));
350
+ if (legacyManifest.id !== "perkos-a2a")
351
+ throw new Error("refusing to quarantine a non-PerkOS extension");
352
+ await rename(legacyExtension, quarantinePath);
353
+ quarantined = true;
322
354
  }
323
- if (!restartResult.verified)
324
- throw new Error("gateway restart was not verified by a new PID/start time");
325
- if (!postRestart.connected || !postRestart.registered || !postRestart.heartbeat200 || !postRestart.chatAuthed || postRestart.duplicatePlugin || postRestart.duplicateRegistration) {
326
- throw new Error(`post-restart verification failed: ${JSON.stringify(postRestart)}`);
355
+ const installResult = await run(openclaw, ["plugins", "install", `npm-pack:${artifactPath}`, "--force"]);
356
+ const installError = `${installResult.stderr}\n${installResult.stdout}`;
357
+ if (installResult.code !== 0 && !/EBUSY|resource busy|rename/iu.test(installError)) {
358
+ throw new Error(`managed plugin install failed: ${installError.trim().slice(0, 500)}`);
327
359
  }
360
+ const inspectResult = await mustRun(run, openclaw, ["plugins", "inspect", "perkos-a2a", "--json"], "plugin inspection");
361
+ const inspect = parseJsonOutput(inspectResult.stdout);
362
+ if (!isObject(inspect))
363
+ throw new Error("plugin inspection result is invalid");
364
+ const plugin = isObject(inspect.plugin) ? inspect.plugin : {};
365
+ const install = isObject(inspect.install) ? inspect.install : {};
366
+ if (plugin.id !== "perkos-a2a" || install.artifactKind !== "npm-pack" || typeof install.installPath !== "string" || typeof plugin.rootDir !== "string") {
367
+ throw new Error("managed npm install was not recorded");
368
+ }
369
+ const npmRoot = await realpath(join(stateDir, "npm"));
370
+ const managedPath = await realpath(install.installPath);
371
+ const activeRoot = await realpath(plugin.rootDir);
372
+ assertUnder(npmRoot, managedPath);
373
+ if (activeRoot !== managedPath)
374
+ throw new Error("PerkOS is still loading from a non-managed plugin source");
375
+ const installedManifest = JSON.parse(await readFile(join(managedPath, "openclaw.plugin.json"), "utf8"));
376
+ if (installedManifest.id !== "perkos-a2a" || installedManifest.version !== version)
377
+ throw new Error("installed plugin version does not match repair CLI");
378
+ const currentRaw = await readFile(configPath, "utf8");
379
+ const currentDocument = JSON.parse(currentRaw);
380
+ replacePluginEntry(currentDocument, normalized.value, true);
381
+ await writeJsonConfig(configPath, currentDocument);
382
+ await mustRun(run, openclaw, ["config", "validate"], "config validation");
383
+ const doctor = await mustRun(run, openclaw, ["plugins", "doctor"], "plugin doctor");
384
+ const doctorText = `${doctor.stdout}\n${doctor.stderr}`.toLowerCase();
385
+ if (doctorText.includes("duplicate plugin id detected"))
386
+ throw new Error("duplicate plugin source remains after migration");
387
+ committed = true;
388
+ const emptyPostRestart = verifyLogState("", options.expectedAgentName);
389
+ const restartResult = { requested: false, verified: false };
390
+ let postRestart = emptyPostRestart;
391
+ if (!options.skipRestart) {
392
+ const beforeStatusResult = await mustRun(run, openclaw, ["gateway", "status", "--json"], "pre-restart gateway status");
393
+ const beforeStatus = await processIdentityWithStart(run, parseJsonOutput(beforeStatusResult.stdout));
394
+ restartResult.beforePid = beforeStatus.pid;
395
+ restartResult.beforeStartTime = beforeStatus.startTime;
396
+ const restartStartedAt = Date.now();
397
+ let restoreRestartPermission;
398
+ try {
399
+ if (beforeStatus.pid === 1) {
400
+ const permissionRaw = await readFile(configPath, "utf8");
401
+ const permissionDocument = JSON.parse(permissionRaw);
402
+ const previousPermission = enableExternalRestart(permissionDocument);
403
+ await writeJsonConfig(configPath, permissionDocument);
404
+ restoreRestartPermission = async () => {
405
+ const latest = JSON.parse(await readFile(configPath, "utf8"));
406
+ restoreExternalRestart(latest, previousPermission);
407
+ await writeJsonConfig(configPath, latest);
408
+ };
409
+ await wait(options.pollIntervalMs ?? 2_000);
410
+ await mustRun(run, "kill", ["-USR1", "1"], "PID 1 in-process gateway restart");
411
+ restartResult.method = "in-process-sigusr1";
412
+ }
413
+ else {
414
+ await mustRun(run, openclaw, ["gateway", "restart", "--safe", "--skip-deferral", "--json"], "gateway restart");
415
+ restartResult.method = "service";
416
+ }
417
+ restartResult.requested = true;
418
+ const stabilityWindowMs = options.stabilityWindowMs ?? 120_000;
419
+ const deadline = Date.now() + (options.timeoutMs ?? stabilityWindowMs + 90_000);
420
+ let healthySince;
421
+ let recentLogs = "";
422
+ while (Date.now() < deadline) {
423
+ await wait(options.pollIntervalMs ?? 2_000);
424
+ const status = await run(openclaw, ["gateway", "status", "--json", "--require-rpc"]);
425
+ if (status.code !== 0) {
426
+ healthySince = undefined;
427
+ continue;
428
+ }
429
+ const afterStatus = await processIdentityWithStart(run, parseJsonOutput(status.stdout));
430
+ restartResult.afterPid = afterStatus.pid;
431
+ restartResult.afterStartTime = afterStatus.startTime;
432
+ const logs = await run(openclaw, ["logs", "--json", "--limit", "1000", "--max-bytes", "2000000"]);
433
+ if (logs.code === 0)
434
+ recentLogs = logs.stdout;
435
+ postRestart = postRestartStateFromLogs(recentLogs, options.expectedAgentName, restartStartedAt);
436
+ const processIdentityChanged = processChanged(beforeStatus, afterStatus);
437
+ const freshRestartLogs = restartObservedInLogs(recentLogs, restartStartedAt);
438
+ restartResult.verified = processIdentityChanged || (restartResult.method === "in-process-sigusr1" && freshRestartLogs);
439
+ restartResult.verifiedBy = processIdentityChanged
440
+ ? "process-identity"
441
+ : restartResult.verified
442
+ ? "fresh-restart-logs"
443
+ : undefined;
444
+ const healthy = restartResult.verified
445
+ && postRestart.connected
446
+ && postRestart.registered
447
+ && postRestart.heartbeat200
448
+ && postRestart.chatAuthed
449
+ && !postRestart.duplicatePlugin
450
+ && !postRestart.duplicateRegistration;
451
+ if (!healthy) {
452
+ healthySince = undefined;
453
+ continue;
454
+ }
455
+ healthySince ??= Date.now();
456
+ if (Date.now() - healthySince >= stabilityWindowMs)
457
+ break;
458
+ }
459
+ if (!restartResult.verified)
460
+ throw new Error("gateway restart was not verified by process identity or fresh in-process restart logs");
461
+ if (!postRestart.connected || !postRestart.registered || !postRestart.heartbeat200 || !postRestart.chatAuthed || postRestart.duplicatePlugin || postRestart.duplicateRegistration) {
462
+ throw new Error(`post-restart verification failed: ${JSON.stringify(postRestart)}`);
463
+ }
464
+ if (healthySince === undefined || Date.now() - healthySince < stabilityWindowMs) {
465
+ throw new Error(`post-restart transport did not remain healthy for ${stabilityWindowMs}ms`);
466
+ }
467
+ }
468
+ finally {
469
+ await restoreRestartPermission?.();
470
+ }
471
+ }
472
+ return {
473
+ ok: true,
474
+ version,
475
+ mode: existingConfig ? "repaired" : "installed",
476
+ artifactVerified: true,
477
+ source: "managed-npm",
478
+ normalized: true,
479
+ removedUnsupportedPaths: normalized.removed,
480
+ quarantinedLegacyExtension: quarantined,
481
+ configValid: true,
482
+ pluginDoctorClean: true,
483
+ restart: restartResult,
484
+ postRestart,
485
+ };
328
486
  }
329
- return {
330
- ok: true,
331
- version,
332
- artifactVerified: true,
333
- source: "managed-npm",
334
- normalized: true,
335
- removedUnsupportedPaths: normalized.removed,
336
- quarantinedLegacyExtension: quarantined,
337
- configValid: true,
338
- pluginDoctorClean: true,
339
- restart: restartResult,
340
- postRestart,
341
- };
342
- }
343
- catch (error) {
344
- if (!committed) {
345
- await writeFile(configPath, originalRaw, { mode: 0o600 });
346
- if (quarantined && await pathExists(quarantinePath) && !await pathExists(legacyExtension)) {
347
- await mkdir(dirname(legacyExtension), { recursive: true });
348
- await rename(quarantinePath, legacyExtension);
487
+ catch (error) {
488
+ if (!committed) {
489
+ await writeFile(configPath, originalRaw, { mode: 0o600 });
490
+ if (quarantined && await pathExists(quarantinePath) && !await pathExists(legacyExtension)) {
491
+ await mkdir(dirname(legacyExtension), { recursive: true });
492
+ await rename(quarantinePath, legacyExtension);
493
+ }
349
494
  }
495
+ throw error;
350
496
  }
351
- throw error;
352
497
  }
353
498
  finally {
354
- await rm(migrationDir, { recursive: true, force: true });
499
+ await releaseRepairLock();
355
500
  }
356
501
  }
357
502
  //# sourceMappingURL=repair.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repair.js","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repair.js","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "perkos-a2a",
3
3
  "name": "PerkOS A2A",
4
- "version": "0.12.27",
4
+ "version": "0.12.29",
5
5
  "description": "Agent-to-Agent (A2A) protocol communication for OpenClaw agents",
6
6
  "author": "PerkOS",
7
7
  "configSchema": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perkos/perkos-a2a",
3
- "version": "0.12.27",
3
+ "version": "0.12.29",
4
4
  "description": "A2A Protocol communication plugin for OpenClaw — Agent-to-Agent protocol implementation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",