@clappstore/connect 0.6.1 → 0.7.1
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/clapps/settings/README.md +74 -0
- package/clapps/settings/clapp.json +25 -0
- package/clapps/settings/components/ProviderEditor.tsx +512 -0
- package/clapps/settings/components/ProviderList.tsx +300 -0
- package/clapps/settings/components/SessionList.tsx +189 -0
- package/clapps/settings/handlers/settings-handler.js +760 -0
- package/clapps/settings/views/default.settings.view.md +38 -0
- package/clapps/settings/views/settings.app.md +12 -0
- package/dist/clapp-handler.d.ts +16 -0
- package/dist/clapp-handler.d.ts.map +1 -0
- package/dist/clapp-handler.js +2 -0
- package/dist/clapp-handler.js.map +1 -0
- package/dist/clapp-loader.d.ts +3 -0
- package/dist/clapp-loader.d.ts.map +1 -0
- package/dist/clapp-loader.js +61 -0
- package/dist/clapp-loader.js.map +1 -0
- package/dist/defaults.d.ts +9 -5
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +130 -79
- package/dist/defaults.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -89
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +14 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +204 -0
- package/dist/server.js.map +1 -0
- package/package.json +13 -5
- package/web-app/assets/index-BYIO2GGA.css +1 -0
- package/web-app/assets/index-kbnfuSZC.js +128 -0
- package/web-app/index.html +13 -0
- package/dist/agent-client.d.ts +0 -28
- package/dist/agent-client.d.ts.map +0 -1
- package/dist/agent-client.js +0 -159
- package/dist/agent-client.js.map +0 -1
- package/dist/agent-handler.d.ts +0 -18
- package/dist/agent-handler.d.ts.map +0 -1
- package/dist/agent-handler.js +0 -17
- package/dist/agent-handler.js.map +0 -1
- package/dist/credentials.d.ts +0 -5
- package/dist/credentials.d.ts.map +0 -1
- package/dist/credentials.js +0 -32
- package/dist/credentials.js.map +0 -1
- package/dist/intent-poller.d.ts +0 -22
- package/dist/intent-poller.d.ts.map +0 -1
- package/dist/intent-poller.js +0 -51
- package/dist/intent-poller.js.map +0 -1
- package/dist/relay-client.d.ts +0 -16
- package/dist/relay-client.d.ts.map +0 -1
- package/dist/relay-client.js +0 -121
- package/dist/relay-client.js.map +0 -1
- package/dist/settings-handler.d.ts +0 -26
- package/dist/settings-handler.d.ts.map +0 -1
- package/dist/settings-handler.js +0 -149
- package/dist/settings-handler.js.map +0 -1
- package/dist/state-watcher.d.ts +0 -23
- package/dist/state-watcher.d.ts.map +0 -1
- package/dist/state-watcher.js +0 -121
- package/dist/state-watcher.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Clapps</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-kbnfuSZC.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BYIO2GGA.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
package/dist/agent-client.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { IntentMessage } from "@clapps/core";
|
|
2
|
-
export interface AgentClientOptions {
|
|
3
|
-
session: string;
|
|
4
|
-
agentToken?: string;
|
|
5
|
-
onError?: (error: Error) => void;
|
|
6
|
-
}
|
|
7
|
-
/** Communicate with the local OpenClaw agent via ACP (Agent Client Protocol) subprocess */
|
|
8
|
-
export declare class AgentClient {
|
|
9
|
-
private session;
|
|
10
|
-
private agentToken;
|
|
11
|
-
private onError;
|
|
12
|
-
private proc;
|
|
13
|
-
private rl;
|
|
14
|
-
private nextId;
|
|
15
|
-
private pending;
|
|
16
|
-
private started;
|
|
17
|
-
constructor(options: AgentClientOptions);
|
|
18
|
-
/** Spawn the ACP subprocess and run the initialize + session/load handshake */
|
|
19
|
-
start(): Promise<void>;
|
|
20
|
-
/** Send an intent to the agent via ACP session/prompt */
|
|
21
|
-
sendIntent(intent: IntentMessage): Promise<string>;
|
|
22
|
-
/** Kill the ACP subprocess */
|
|
23
|
-
stop(): void;
|
|
24
|
-
private spawnProcess;
|
|
25
|
-
private handleLine;
|
|
26
|
-
private rpc;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=agent-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-client.d.ts","sourceRoot":"","sources":["../src/agent-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAOD,2FAA2F;AAC3F,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,kBAAkB;IAMvC,+EAA+E;IACzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B,yDAAyD;IACnD,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBxD,8BAA8B;IAC9B,IAAI,IAAI,IAAI;IAiBZ,OAAO,CAAC,YAAY;IA+CpB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,GAAG;CAyBZ"}
|
package/dist/agent-client.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { createInterface } from "node:readline";
|
|
3
|
-
/** Communicate with the local OpenClaw agent via ACP (Agent Client Protocol) subprocess */
|
|
4
|
-
export class AgentClient {
|
|
5
|
-
session;
|
|
6
|
-
agentToken;
|
|
7
|
-
onError;
|
|
8
|
-
proc = null;
|
|
9
|
-
rl = null;
|
|
10
|
-
nextId = 1;
|
|
11
|
-
pending = new Map();
|
|
12
|
-
started = false;
|
|
13
|
-
constructor(options) {
|
|
14
|
-
this.session = options.session;
|
|
15
|
-
this.agentToken = options.agentToken;
|
|
16
|
-
this.onError = options.onError;
|
|
17
|
-
}
|
|
18
|
-
/** Spawn the ACP subprocess and run the initialize + session/load handshake */
|
|
19
|
-
async start() {
|
|
20
|
-
if (this.started)
|
|
21
|
-
return;
|
|
22
|
-
this.spawnProcess();
|
|
23
|
-
// ACP handshake (must be sequential)
|
|
24
|
-
await this.rpc("initialize", {
|
|
25
|
-
protocolVersion: 1,
|
|
26
|
-
clientInfo: { name: "clapps-connect", version: "1.0.0" },
|
|
27
|
-
clientCapabilities: {},
|
|
28
|
-
});
|
|
29
|
-
await this.rpc("session/load", {
|
|
30
|
-
sessionId: this.session,
|
|
31
|
-
cwd: "/root",
|
|
32
|
-
mcpServers: [],
|
|
33
|
-
});
|
|
34
|
-
this.started = true;
|
|
35
|
-
console.log(`🔌 ACP connected (session: ${this.session})`);
|
|
36
|
-
}
|
|
37
|
-
/** Send an intent to the agent via ACP session/prompt */
|
|
38
|
-
async sendIntent(intent) {
|
|
39
|
-
if (!this.proc) {
|
|
40
|
-
throw new Error("AgentClient not started — call start() first");
|
|
41
|
-
}
|
|
42
|
-
const prompt = `[CLAPP_INTENT] ${intent.intent} ${JSON.stringify(intent.payload)}`;
|
|
43
|
-
const result = (await this.rpc("session/prompt", {
|
|
44
|
-
sessionId: this.session,
|
|
45
|
-
prompt: [{ type: "text", text: prompt }],
|
|
46
|
-
}));
|
|
47
|
-
// Extract text from the response
|
|
48
|
-
if (result && typeof result === "object" && "content" in result) {
|
|
49
|
-
const texts = (result.content ?? [])
|
|
50
|
-
.map((c) => c.text)
|
|
51
|
-
.filter(Boolean);
|
|
52
|
-
return texts.join("\n");
|
|
53
|
-
}
|
|
54
|
-
return "";
|
|
55
|
-
}
|
|
56
|
-
/** Kill the ACP subprocess */
|
|
57
|
-
stop() {
|
|
58
|
-
this.started = false;
|
|
59
|
-
this.rl?.close();
|
|
60
|
-
this.rl = null;
|
|
61
|
-
if (this.proc) {
|
|
62
|
-
this.proc.kill("SIGTERM");
|
|
63
|
-
this.proc = null;
|
|
64
|
-
}
|
|
65
|
-
// Reject any pending requests
|
|
66
|
-
for (const [, pending] of this.pending) {
|
|
67
|
-
pending.reject(new Error("AgentClient stopped"));
|
|
68
|
-
}
|
|
69
|
-
this.pending.clear();
|
|
70
|
-
}
|
|
71
|
-
// ---- internals ----
|
|
72
|
-
spawnProcess() {
|
|
73
|
-
const args = ["acp", "--session", this.session];
|
|
74
|
-
if (this.agentToken) {
|
|
75
|
-
args.push("--token", this.agentToken);
|
|
76
|
-
}
|
|
77
|
-
this.proc = spawn("openclaw", args, {
|
|
78
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
79
|
-
});
|
|
80
|
-
this.rl = createInterface({ input: this.proc.stdout });
|
|
81
|
-
this.rl.on("line", (line) => this.handleLine(line));
|
|
82
|
-
this.proc.stderr?.on("data", (chunk) => {
|
|
83
|
-
const msg = chunk.toString().trim();
|
|
84
|
-
if (msg) {
|
|
85
|
-
console.error(`[acp stderr] ${msg}`);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
this.proc.on("exit", (code) => {
|
|
89
|
-
if (this.started) {
|
|
90
|
-
const err = new Error(`ACP process exited unexpectedly (code ${code})`);
|
|
91
|
-
this.onError?.(err);
|
|
92
|
-
// Auto-restart
|
|
93
|
-
this.proc = null;
|
|
94
|
-
this.rl = null;
|
|
95
|
-
// Reject pending requests
|
|
96
|
-
for (const [, pending] of this.pending) {
|
|
97
|
-
pending.reject(err);
|
|
98
|
-
}
|
|
99
|
-
this.pending.clear();
|
|
100
|
-
// Attempt restart after a short delay
|
|
101
|
-
setTimeout(() => {
|
|
102
|
-
if (this.started) {
|
|
103
|
-
console.log("🔄 Restarting ACP subprocess...");
|
|
104
|
-
this.start().catch((e) => this.onError?.(e));
|
|
105
|
-
}
|
|
106
|
-
}, 2000);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
this.proc.on("error", (err) => {
|
|
110
|
-
this.onError?.(err);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
handleLine(line) {
|
|
114
|
-
let msg;
|
|
115
|
-
try {
|
|
116
|
-
msg = JSON.parse(line);
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
// Not JSON — ignore
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
// Ignore notifications (no id field — like session/update)
|
|
123
|
-
if (msg.id == null)
|
|
124
|
-
return;
|
|
125
|
-
const pending = this.pending.get(msg.id);
|
|
126
|
-
if (!pending)
|
|
127
|
-
return;
|
|
128
|
-
this.pending.delete(msg.id);
|
|
129
|
-
if (msg.error) {
|
|
130
|
-
pending.reject(new Error(msg.error.message));
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
pending.resolve(msg.result);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
rpc(method, params) {
|
|
137
|
-
return new Promise((resolve, reject) => {
|
|
138
|
-
if (!this.proc?.stdin?.writable) {
|
|
139
|
-
reject(new Error("ACP process not running"));
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
const id = this.nextId++;
|
|
143
|
-
this.pending.set(id, { resolve, reject });
|
|
144
|
-
const request = JSON.stringify({
|
|
145
|
-
jsonrpc: "2.0",
|
|
146
|
-
id,
|
|
147
|
-
method,
|
|
148
|
-
params,
|
|
149
|
-
});
|
|
150
|
-
this.proc.stdin.write(request + "\n", (err) => {
|
|
151
|
-
if (err) {
|
|
152
|
-
this.pending.delete(id);
|
|
153
|
-
reject(err);
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=agent-client.js.map
|
package/dist/agent-client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-client.js","sourceRoot":"","sources":["../src/agent-client.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-handler.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { IntentMessage } from "@clapps/core";
|
|
2
|
-
import type { AgentClient } from "./agent-client.js";
|
|
3
|
-
import type { RelayClient } from "./relay-client.js";
|
|
4
|
-
export interface AgentHandlerOptions {
|
|
5
|
-
agentClient: AgentClient;
|
|
6
|
-
relay: RelayClient;
|
|
7
|
-
stateDir: string;
|
|
8
|
-
viewsDir?: string;
|
|
9
|
-
}
|
|
10
|
-
export declare class AgentHandler {
|
|
11
|
-
private agentClient;
|
|
12
|
-
private relay;
|
|
13
|
-
private stateDir;
|
|
14
|
-
private viewsDir;
|
|
15
|
-
constructor(options: AgentHandlerOptions);
|
|
16
|
-
handleIntent(intent: IntentMessage): Promise<void>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=agent-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-handler.d.ts","sourceRoot":"","sources":["../src/agent-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,OAAO,EAAE,mBAAmB;IAOlC,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzD"}
|
package/dist/agent-handler.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export class AgentHandler {
|
|
2
|
-
agentClient;
|
|
3
|
-
relay;
|
|
4
|
-
stateDir;
|
|
5
|
-
viewsDir;
|
|
6
|
-
constructor(options) {
|
|
7
|
-
this.agentClient = options.agentClient;
|
|
8
|
-
this.relay = options.relay;
|
|
9
|
-
this.stateDir = options.stateDir;
|
|
10
|
-
this.viewsDir = options.viewsDir;
|
|
11
|
-
}
|
|
12
|
-
async handleIntent(intent) {
|
|
13
|
-
await this.agentClient.sendIntent(intent);
|
|
14
|
-
await this.relay.syncDir(this.stateDir, this.viewsDir);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=agent-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-handler.js","sourceRoot":"","sources":["../src/agent-handler.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,YAAY;IACf,WAAW,CAAc;IACzB,KAAK,CAAc;IACnB,QAAQ,CAAS;IACjB,QAAQ,CAAqB;IAErC,YAAY,OAA4B;QACtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAqB;QACtC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;CACF"}
|
package/dist/credentials.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
declare const CREDENTIALS_PATH: string;
|
|
2
|
-
export declare function loadToken(relay: string, agentId: string): string | null;
|
|
3
|
-
export declare function saveToken(relay: string, agentId: string, token: string): void;
|
|
4
|
-
export { CREDENTIALS_PATH };
|
|
5
|
-
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,gBAAgB,QAIrB,CAAC;AAsBF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ7E;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/credentials.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
2
|
-
import { resolve, dirname } from "node:path";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
const CREDENTIALS_PATH = resolve(homedir(), ".openclaw", "clapps-credentials.json");
|
|
5
|
-
function credentialKey(relay, agentId) {
|
|
6
|
-
return `${relay}:${agentId}`;
|
|
7
|
-
}
|
|
8
|
-
function readCredentials() {
|
|
9
|
-
try {
|
|
10
|
-
const raw = readFileSync(CREDENTIALS_PATH, "utf-8");
|
|
11
|
-
return JSON.parse(raw);
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return {};
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export function loadToken(relay, agentId) {
|
|
18
|
-
const creds = readCredentials();
|
|
19
|
-
const entry = creds[credentialKey(relay, agentId)];
|
|
20
|
-
return entry?.token ?? null;
|
|
21
|
-
}
|
|
22
|
-
export function saveToken(relay, agentId, token) {
|
|
23
|
-
const creds = readCredentials();
|
|
24
|
-
creds[credentialKey(relay, agentId)] = {
|
|
25
|
-
token,
|
|
26
|
-
createdAt: new Date().toISOString(),
|
|
27
|
-
};
|
|
28
|
-
mkdirSync(dirname(CREDENTIALS_PATH), { recursive: true });
|
|
29
|
-
writeFileSync(CREDENTIALS_PATH, JSON.stringify(creds, null, 2) + "\n");
|
|
30
|
-
}
|
|
31
|
-
export { CREDENTIALS_PATH };
|
|
32
|
-
//# sourceMappingURL=credentials.js.map
|
package/dist/credentials.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,gBAAgB,GAAG,OAAO,CAC9B,OAAO,EAAE,EACT,WAAW,EACX,yBAAyB,CAC1B,CAAC;AASF,SAAS,aAAa,CAAC,KAAa,EAAE,OAAe;IACnD,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe;IACtD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;IACrE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG;QACrC,KAAK;QACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/intent-poller.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { IntentMessage } from "@clapps/core";
|
|
2
|
-
import type { AgentHandler } from "./agent-handler.js";
|
|
3
|
-
export interface IntentPollerOptions {
|
|
4
|
-
relayUrl: string;
|
|
5
|
-
token: string;
|
|
6
|
-
agentId: string;
|
|
7
|
-
agentHandler: AgentHandler;
|
|
8
|
-
intervalMs?: number;
|
|
9
|
-
onIntent?: (intent: IntentMessage) => boolean;
|
|
10
|
-
onError?: (error: Error) => void;
|
|
11
|
-
}
|
|
12
|
-
/** Poll the relay for pending intents and forward them to the agent */
|
|
13
|
-
export declare class IntentPoller {
|
|
14
|
-
private options;
|
|
15
|
-
private timer;
|
|
16
|
-
private lastSeen;
|
|
17
|
-
constructor(options: IntentPollerOptions);
|
|
18
|
-
start(): void;
|
|
19
|
-
stop(): void;
|
|
20
|
-
private poll;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=intent-poller.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent-poller.d.ts","sourceRoot":"","sources":["../src/intent-poller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,uEAAuE;AACvE,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAAM;gBAEV,OAAO,EAAE,mBAAmB;IAIxC,KAAK,IAAI,IAAI;IASb,IAAI,IAAI,IAAI;YAOE,IAAI;CA2BnB"}
|
package/dist/intent-poller.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/** Poll the relay for pending intents and forward them to the agent */
|
|
2
|
-
export class IntentPoller {
|
|
3
|
-
options;
|
|
4
|
-
timer = null;
|
|
5
|
-
lastSeen = "";
|
|
6
|
-
constructor(options) {
|
|
7
|
-
this.options = options;
|
|
8
|
-
}
|
|
9
|
-
start() {
|
|
10
|
-
if (this.timer)
|
|
11
|
-
return;
|
|
12
|
-
this.poll();
|
|
13
|
-
this.timer = setInterval(() => this.poll(), this.options.intervalMs ?? 1500);
|
|
14
|
-
}
|
|
15
|
-
stop() {
|
|
16
|
-
if (this.timer) {
|
|
17
|
-
clearInterval(this.timer);
|
|
18
|
-
this.timer = null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
async poll() {
|
|
22
|
-
try {
|
|
23
|
-
const url = new URL("/api/agent/intents", this.options.relayUrl);
|
|
24
|
-
url.searchParams.set("token", this.options.token);
|
|
25
|
-
url.searchParams.set("agentId", this.options.agentId);
|
|
26
|
-
if (this.lastSeen) {
|
|
27
|
-
url.searchParams.set("since", this.lastSeen);
|
|
28
|
-
}
|
|
29
|
-
const res = await fetch(url.toString());
|
|
30
|
-
if (!res.ok)
|
|
31
|
-
return;
|
|
32
|
-
const data = (await res.json());
|
|
33
|
-
for (const intent of data.intents) {
|
|
34
|
-
this.lastSeen = intent.id;
|
|
35
|
-
try {
|
|
36
|
-
// Let onIntent handle it locally; skip ACP if it returns true
|
|
37
|
-
if (this.options.onIntent?.(intent))
|
|
38
|
-
continue;
|
|
39
|
-
await this.options.agentHandler.handleIntent(intent);
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
this.options.onError?.(err);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
this.options.onError?.(err);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=intent-poller.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intent-poller.js","sourceRoot":"","sources":["../src/intent-poller.ts"],"names":[],"mappings":"AAaA,uEAAuE;AACvE,MAAM,OAAO,YAAY;IACf,OAAO,CAAsB;IAC7B,KAAK,GAA0C,IAAI,CAAC;IACpD,QAAQ,GAAG,EAAE,CAAC;IAEtB,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,WAAW,CACtB,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EACjB,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAChC,CAAC;IACJ,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAClD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO;YAEpB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiC,CAAC;YAChE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,8DAA8D;oBAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;wBAAE,SAAS;oBAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAY,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAY,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
|
package/dist/relay-client.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface RelayClientOptions {
|
|
2
|
-
relayUrl: string;
|
|
3
|
-
token: string;
|
|
4
|
-
agentId: string;
|
|
5
|
-
}
|
|
6
|
-
export declare class RelayClient {
|
|
7
|
-
private relayUrl;
|
|
8
|
-
private token;
|
|
9
|
-
private agentId;
|
|
10
|
-
constructor(options: RelayClientOptions);
|
|
11
|
-
pushState(clappId: string, state: object): Promise<void>;
|
|
12
|
-
pushApps(apps: unknown[]): Promise<void>;
|
|
13
|
-
pushView(viewId: string, content: string): Promise<void>;
|
|
14
|
-
syncDir(stateDir: string, viewsDir?: string): Promise<void>;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=relay-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAwCD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,kBAAkB;IAMjC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxD,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmClE"}
|
package/dist/relay-client.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { readdir } from "node:fs/promises";
|
|
3
|
-
import { basename, resolve } from "node:path";
|
|
4
|
-
const MAX_RETRIES = 4;
|
|
5
|
-
const BASE_DELAY_MS = 500;
|
|
6
|
-
async function retryFetch(url, init, label) {
|
|
7
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
8
|
-
try {
|
|
9
|
-
const res = await fetch(url, init);
|
|
10
|
-
if (res.ok)
|
|
11
|
-
return res;
|
|
12
|
-
if (attempt < MAX_RETRIES - 1 && res.status >= 500) {
|
|
13
|
-
const delay = BASE_DELAY_MS * 2 ** attempt + Math.random() * BASE_DELAY_MS;
|
|
14
|
-
console.warn(`[relay] Retry ${attempt + 1} for ${label}: HTTP ${res.status}`);
|
|
15
|
-
await new Promise((r) => setTimeout(r, delay));
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
throw new Error(`Failed to push ${label}: HTTP ${res.status}`);
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
if (attempt < MAX_RETRIES - 1 && err.code) {
|
|
22
|
-
const delay = BASE_DELAY_MS * 2 ** attempt + Math.random() * BASE_DELAY_MS;
|
|
23
|
-
console.warn(`[relay] Retry ${attempt + 1} for ${label}: ${err.message}`);
|
|
24
|
-
await new Promise((r) => setTimeout(r, delay));
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
throw err;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
throw new Error(`Failed to push ${label} after ${MAX_RETRIES} attempts`);
|
|
31
|
-
}
|
|
32
|
-
export class RelayClient {
|
|
33
|
-
relayUrl;
|
|
34
|
-
token;
|
|
35
|
-
agentId;
|
|
36
|
-
constructor(options) {
|
|
37
|
-
this.relayUrl = options.relayUrl;
|
|
38
|
-
this.token = options.token;
|
|
39
|
-
this.agentId = options.agentId;
|
|
40
|
-
}
|
|
41
|
-
async pushState(clappId, state) {
|
|
42
|
-
await retryFetch(`${this.relayUrl}/api/agent/state`, {
|
|
43
|
-
method: "POST",
|
|
44
|
-
headers: {
|
|
45
|
-
"Content-Type": "application/json",
|
|
46
|
-
Authorization: `Bearer ${this.token}`,
|
|
47
|
-
},
|
|
48
|
-
body: JSON.stringify({
|
|
49
|
-
agentId: this.agentId,
|
|
50
|
-
clappId,
|
|
51
|
-
...state,
|
|
52
|
-
}),
|
|
53
|
-
}, `state/${clappId}`);
|
|
54
|
-
}
|
|
55
|
-
async pushApps(apps) {
|
|
56
|
-
await retryFetch(`${this.relayUrl}/api/agent/apps`, {
|
|
57
|
-
method: "POST",
|
|
58
|
-
headers: {
|
|
59
|
-
"Content-Type": "application/json",
|
|
60
|
-
Authorization: `Bearer ${this.token}`,
|
|
61
|
-
},
|
|
62
|
-
body: JSON.stringify({
|
|
63
|
-
agentId: this.agentId,
|
|
64
|
-
apps,
|
|
65
|
-
}),
|
|
66
|
-
}, "apps");
|
|
67
|
-
}
|
|
68
|
-
async pushView(viewId, content) {
|
|
69
|
-
await retryFetch(`${this.relayUrl}/api/agent/views`, {
|
|
70
|
-
method: "POST",
|
|
71
|
-
headers: {
|
|
72
|
-
"Content-Type": "application/json",
|
|
73
|
-
Authorization: `Bearer ${this.token}`,
|
|
74
|
-
},
|
|
75
|
-
body: JSON.stringify({
|
|
76
|
-
agentId: this.agentId,
|
|
77
|
-
viewId,
|
|
78
|
-
content,
|
|
79
|
-
}),
|
|
80
|
-
}, `view/${viewId}`);
|
|
81
|
-
}
|
|
82
|
-
async syncDir(stateDir, viewsDir) {
|
|
83
|
-
// Push all .json files from stateDir
|
|
84
|
-
const stateFiles = await readdir(stateDir);
|
|
85
|
-
for (const file of stateFiles) {
|
|
86
|
-
if (!file.endsWith(".json"))
|
|
87
|
-
continue;
|
|
88
|
-
try {
|
|
89
|
-
const content = await readFile(resolve(stateDir, file), "utf-8");
|
|
90
|
-
const parsed = JSON.parse(content);
|
|
91
|
-
const name = basename(file, ".json");
|
|
92
|
-
if (name === "_apps") {
|
|
93
|
-
await this.pushApps(parsed);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
await this.pushState(name, parsed);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (err) {
|
|
100
|
-
console.warn(`[relay] Failed to push ${file}: ${err.message}`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// Push all .md files from viewsDir
|
|
104
|
-
if (viewsDir) {
|
|
105
|
-
const viewFiles = await readdir(viewsDir);
|
|
106
|
-
for (const file of viewFiles) {
|
|
107
|
-
if (!file.endsWith(".md"))
|
|
108
|
-
continue;
|
|
109
|
-
try {
|
|
110
|
-
const content = await readFile(resolve(viewsDir, file), "utf-8");
|
|
111
|
-
const viewId = basename(file, ".md");
|
|
112
|
-
await this.pushView(viewId, content);
|
|
113
|
-
}
|
|
114
|
-
catch (err) {
|
|
115
|
-
console.warn(`[relay] Failed to push view ${file}: ${err.message}`);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=relay-client.js.map
|
package/dist/relay-client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { IntentMessage } from "@clapps/core";
|
|
2
|
-
import type { RelayClient } from "./relay-client.js";
|
|
3
|
-
export interface SettingsHandlerOptions {
|
|
4
|
-
stateDir: string;
|
|
5
|
-
relay: RelayClient;
|
|
6
|
-
authPath?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class SettingsHandler {
|
|
9
|
-
private stateDir;
|
|
10
|
-
private relay;
|
|
11
|
-
private authPath;
|
|
12
|
-
constructor(options: SettingsHandlerOptions);
|
|
13
|
-
/** Returns true if the intent was handled locally (should not be forwarded to ACP) */
|
|
14
|
-
handleIntent: (intent: IntentMessage) => boolean;
|
|
15
|
-
/** Write auth.json with the Anthropic API key */
|
|
16
|
-
private setAnthropicKey;
|
|
17
|
-
/** Set Claude subscription token via openclaw CLI */
|
|
18
|
-
private setClaudeToken;
|
|
19
|
-
/** Write settings.json state with provider status (masked keys) */
|
|
20
|
-
writeSettingsState(): void;
|
|
21
|
-
/** Push settings.json state to relay */
|
|
22
|
-
pushSettingsState(): Promise<void>;
|
|
23
|
-
/** Push _status.json state to relay */
|
|
24
|
-
pushStatusState(): Promise<void>;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=settings-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings-handler.d.ts","sourceRoot":"","sources":["../src/settings-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,sBAAsB;IAQ3C,sFAAsF;IACtF,YAAY,GAAI,QAAQ,aAAa,KAAG,OAAO,CA0B7C;IAEF,iDAAiD;IACjD,OAAO,CAAC,eAAe;IA+BvB,qDAAqD;IACrD,OAAO,CAAC,cAAc;IA4BtB,mEAAmE;IACnE,kBAAkB,IAAI,IAAI;IA4D1B,wCAAwC;IAClC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxC,uCAAuC;IACjC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAKvC"}
|