@dp-pcs/ogp 0.6.0 → 0.7.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/README.md +47 -11
- package/dist/cli/agent-targeting.d.ts +21 -0
- package/dist/cli/agent-targeting.d.ts.map +1 -0
- package/dist/cli/agent-targeting.js +44 -0
- package/dist/cli/agent-targeting.js.map +1 -0
- package/dist/cli/config.d.ts +4 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +48 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/federation.d.ts +2 -1
- package/dist/cli/federation.d.ts.map +1 -1
- package/dist/cli/federation.js +162 -92
- package/dist/cli/federation.js.map +1 -1
- package/dist/cli/keychain.d.ts +22 -0
- package/dist/cli/keychain.d.ts.map +1 -0
- package/dist/cli/keychain.js +213 -0
- package/dist/cli/keychain.js.map +1 -0
- package/dist/cli/project.d.ts +1 -0
- package/dist/cli/project.d.ts.map +1 -1
- package/dist/cli/project.js +9 -2
- package/dist/cli/project.js.map +1 -1
- package/dist/cli/setup.d.ts +37 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +130 -0
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli.js +40 -6
- package/dist/cli.js.map +1 -1
- package/dist/daemon/heartbeat.d.ts +37 -0
- package/dist/daemon/heartbeat.d.ts.map +1 -1
- package/dist/daemon/heartbeat.js +195 -21
- package/dist/daemon/heartbeat.js.map +1 -1
- package/dist/daemon/keypair.d.ts.map +1 -1
- package/dist/daemon/keypair.js +144 -22
- package/dist/daemon/keypair.js.map +1 -1
- package/dist/daemon/message-handler.d.ts +8 -0
- package/dist/daemon/message-handler.d.ts.map +1 -1
- package/dist/daemon/message-handler.js +60 -18
- package/dist/daemon/message-handler.js.map +1 -1
- package/dist/daemon/notify.d.ts +6 -0
- package/dist/daemon/notify.d.ts.map +1 -1
- package/dist/daemon/notify.js +9 -2
- package/dist/daemon/notify.js.map +1 -1
- package/dist/daemon/openclaw-bridge.d.ts +6 -0
- package/dist/daemon/openclaw-bridge.d.ts.map +1 -1
- package/dist/daemon/openclaw-bridge.js +10 -2
- package/dist/daemon/openclaw-bridge.js.map +1 -1
- package/dist/daemon/peers.d.ts +31 -0
- package/dist/daemon/peers.d.ts.map +1 -1
- package/dist/daemon/peers.js +66 -4
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/rendezvous.d.ts.map +1 -1
- package/dist/daemon/rendezvous.js +9 -7
- package/dist/daemon/rendezvous.js.map +1 -1
- package/dist/daemon/reply-handler.d.ts.map +1 -1
- package/dist/daemon/reply-handler.js +2 -1
- package/dist/daemon/reply-handler.js.map +1 -1
- package/dist/daemon/scopes.d.ts +8 -0
- package/dist/daemon/scopes.d.ts.map +1 -1
- package/dist/daemon/scopes.js.map +1 -1
- package/dist/daemon/server.d.ts +128 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +260 -57
- package/dist/daemon/server.js.map +1 -1
- package/dist/shared/config.d.ts +93 -0
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +111 -0
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/help.js +1 -0
- package/dist/shared/help.js.map +1 -1
- package/dist/shared/signing.d.ts +49 -0
- package/dist/shared/signing.d.ts.map +1 -1
- package/dist/shared/signing.js +68 -0
- package/dist/shared/signing.js.map +1 -1
- package/dist/shared/tls.d.ts +27 -0
- package/dist/shared/tls.d.ts.map +1 -0
- package/dist/shared/tls.js +37 -0
- package/dist/shared/tls.js.map +1 -0
- package/docs/ARCHITECTURE.md +146 -0
- package/docs/CLI-REFERENCE.md +170 -2
- package/docs/MULTI-AGENT-PERSONAS-DESIGN.md +925 -0
- package/docs/RC1-FEDERATION-TEST-CHECKLIST.md +477 -0
- package/package.json +1 -1
- package/scripts/completion.bash +25 -1
- package/scripts/completion.zsh +9 -4
- package/scripts/render-ogp-overview-video.mjs +417 -0
- package/skills/ogp/SKILL.md +1 -1
- package/skills/ogp-expose/SKILL.md +1 -1
- package/skills/ogp-project/SKILL.md +1 -1
package/dist/daemon/keypair.js
CHANGED
|
@@ -1,11 +1,62 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import crypto from 'node:crypto';
|
|
4
|
-
import {
|
|
5
|
+
import { execFileSync } from 'node:child_process';
|
|
5
6
|
import { generateKeyPair } from '../shared/signing.js';
|
|
6
7
|
import { getConfigDir, ensureConfigDir, loadConfig } from '../shared/config.js';
|
|
7
8
|
const KEYCHAIN_ACCOUNT = 'private-key';
|
|
8
9
|
const KEYPAIR_ENCRYPTION_VERSION = 1;
|
|
10
|
+
function expandHome(p) {
|
|
11
|
+
if (p.startsWith('~/') || p === '~') {
|
|
12
|
+
return path.join(os.homedir(), p.slice(2));
|
|
13
|
+
}
|
|
14
|
+
return p;
|
|
15
|
+
}
|
|
16
|
+
function getKeychainOptions() {
|
|
17
|
+
const envPath = process.env.OGP_KEYCHAIN_PATH?.trim();
|
|
18
|
+
const envPasswordFile = process.env.OGP_KEYCHAIN_PASSWORD_FILE?.trim();
|
|
19
|
+
let configPath;
|
|
20
|
+
let configPasswordFile;
|
|
21
|
+
try {
|
|
22
|
+
const config = loadConfig();
|
|
23
|
+
configPath = config?.keychainPath?.trim() || undefined;
|
|
24
|
+
configPasswordFile = config?.keychainPasswordFile?.trim() || undefined;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// loadConfig may fail before setup completes — env vars only in that case
|
|
28
|
+
}
|
|
29
|
+
const resolvedPath = envPath || configPath;
|
|
30
|
+
const resolvedPasswordFile = envPasswordFile || configPasswordFile;
|
|
31
|
+
return {
|
|
32
|
+
path: resolvedPath ? expandHome(resolvedPath) : undefined,
|
|
33
|
+
passwordFile: resolvedPasswordFile ? expandHome(resolvedPasswordFile) : undefined
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
let keychainUnlockedFor = null;
|
|
37
|
+
function unlockKeychainIfConfigured(opts) {
|
|
38
|
+
if (!opts.path) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (!opts.passwordFile) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (keychainUnlockedFor === opts.path) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!fs.existsSync(opts.passwordFile)) {
|
|
48
|
+
throw new Error(`[OGP] Keychain password file not found: ${opts.passwordFile}`);
|
|
49
|
+
}
|
|
50
|
+
const password = fs.readFileSync(opts.passwordFile, 'utf-8').replace(/\r?\n$/, '');
|
|
51
|
+
try {
|
|
52
|
+
execFileSync('security', ['unlock-keychain', '-p', password, opts.path], { stdio: 'pipe' });
|
|
53
|
+
keychainUnlockedFor = opts.path;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
57
|
+
throw new Error(`[OGP] Failed to unlock keychain at ${opts.path}: ${message}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
9
60
|
function getKeypairFile() {
|
|
10
61
|
return path.join(getConfigDir(), 'keypair.json');
|
|
11
62
|
}
|
|
@@ -20,27 +71,58 @@ function isMacOS() {
|
|
|
20
71
|
return process.platform === 'darwin';
|
|
21
72
|
}
|
|
22
73
|
function keychainStore(privateKey) {
|
|
74
|
+
const opts = getKeychainOptions();
|
|
75
|
+
unlockKeychainIfConfigured(opts);
|
|
76
|
+
// -A allows non-interactive write to non-default keychains; without it macOS
|
|
77
|
+
// exits with "User interaction is not allowed" and any caller relying on a
|
|
78
|
+
// silent fallback will end up with a private-key-less keypair.json.
|
|
79
|
+
const args = [
|
|
80
|
+
'add-generic-password',
|
|
81
|
+
'-U',
|
|
82
|
+
'-A',
|
|
83
|
+
'-s', getKeychainService(),
|
|
84
|
+
'-a', KEYCHAIN_ACCOUNT,
|
|
85
|
+
'-w', privateKey
|
|
86
|
+
];
|
|
87
|
+
if (opts.path) {
|
|
88
|
+
args.push(opts.path);
|
|
89
|
+
}
|
|
23
90
|
try {
|
|
24
|
-
|
|
91
|
+
execFileSync('security', args, { stdio: 'pipe' });
|
|
25
92
|
}
|
|
26
|
-
catch {
|
|
27
|
-
|
|
93
|
+
catch (err) {
|
|
94
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
95
|
+
throw new Error(`[OGP] Failed to store private key in macOS Keychain: ${message}`);
|
|
28
96
|
}
|
|
29
97
|
}
|
|
30
98
|
function keychainLoad() {
|
|
99
|
+
const opts = getKeychainOptions();
|
|
100
|
+
unlockKeychainIfConfigured(opts);
|
|
101
|
+
const buildFindArgs = (service) => {
|
|
102
|
+
const args = ['find-generic-password', '-s', service, '-a', KEYCHAIN_ACCOUNT, '-w'];
|
|
103
|
+
if (opts.path) {
|
|
104
|
+
args.push(opts.path);
|
|
105
|
+
}
|
|
106
|
+
return args;
|
|
107
|
+
};
|
|
31
108
|
try {
|
|
32
|
-
|
|
33
|
-
const result = execSync(`security find-generic-password -s ${getKeychainService()} -a ${KEYCHAIN_ACCOUNT} -w`, { stdio: 'pipe' }).toString().trim();
|
|
109
|
+
const result = execFileSync('security', buildFindArgs(getKeychainService()), { stdio: 'pipe' }).toString().trim();
|
|
34
110
|
return result || null;
|
|
35
111
|
}
|
|
36
112
|
catch {
|
|
37
113
|
// Migration: try old shared service name (pre-v0.3.4)
|
|
38
114
|
try {
|
|
39
|
-
const oldService = 'ogp-federation';
|
|
40
|
-
const oldResult =
|
|
115
|
+
const oldService = 'ogp-federation';
|
|
116
|
+
const oldResult = execFileSync('security', buildFindArgs(oldService), { stdio: 'pipe' }).toString().trim();
|
|
41
117
|
if (oldResult) {
|
|
42
118
|
console.log(`[OGP] Migrating private key from shared keychain (${oldService}) to instance-specific keychain (${getKeychainService()})`);
|
|
43
|
-
|
|
119
|
+
try {
|
|
120
|
+
keychainStore(oldResult);
|
|
121
|
+
}
|
|
122
|
+
catch (storeErr) {
|
|
123
|
+
const message = storeErr instanceof Error ? storeErr.message : String(storeErr);
|
|
124
|
+
console.warn(`[OGP] Could not migrate private key into instance-specific keychain entry: ${message}`);
|
|
125
|
+
}
|
|
44
126
|
return oldResult;
|
|
45
127
|
}
|
|
46
128
|
}
|
|
@@ -49,8 +131,14 @@ function keychainLoad() {
|
|
|
49
131
|
}
|
|
50
132
|
}
|
|
51
133
|
function keychainDelete() {
|
|
134
|
+
const opts = getKeychainOptions();
|
|
135
|
+
unlockKeychainIfConfigured(opts);
|
|
136
|
+
const args = ['delete-generic-password', '-s', getKeychainService(), '-a', KEYCHAIN_ACCOUNT];
|
|
137
|
+
if (opts.path) {
|
|
138
|
+
args.push(opts.path);
|
|
139
|
+
}
|
|
52
140
|
try {
|
|
53
|
-
|
|
141
|
+
execFileSync('security', args, { stdio: 'pipe' });
|
|
54
142
|
}
|
|
55
143
|
catch {
|
|
56
144
|
// ignore — may not exist
|
|
@@ -154,21 +242,46 @@ export function loadOrGenerateKeyPair() {
|
|
|
154
242
|
if (data.privateKey && isMacOS()) {
|
|
155
243
|
const existing = keychainLoad();
|
|
156
244
|
if (!existing) {
|
|
157
|
-
|
|
158
|
-
|
|
245
|
+
try {
|
|
246
|
+
keychainStore(data.privateKey);
|
|
247
|
+
console.log('[OGP] Migrated private key to macOS Keychain');
|
|
248
|
+
const safe = { publicKey: data.publicKey };
|
|
249
|
+
fs.writeFileSync(keypairFile, JSON.stringify(safe, null, 2), 'utf-8');
|
|
250
|
+
}
|
|
251
|
+
catch (keychainErr) {
|
|
252
|
+
const message = keychainErr instanceof Error ? keychainErr.message : String(keychainErr);
|
|
253
|
+
console.warn(`[OGP] Could not migrate private key to macOS Keychain: ${message}`);
|
|
254
|
+
console.warn('[OGP] Leaving private key in keypair.json — set OGP_KEYCHAIN_PATH/OGP_KEYCHAIN_PASSWORD_FILE for headless macOS, or OGP_KEYPAIR_SECRET to encrypt at rest.');
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// Already stored in keychain — safe to scrub the file copy.
|
|
259
|
+
const safe = { publicKey: data.publicKey };
|
|
260
|
+
fs.writeFileSync(keypairFile, JSON.stringify(safe, null, 2), 'utf-8');
|
|
159
261
|
}
|
|
160
|
-
// Scrub private key from file
|
|
161
|
-
const safe = { publicKey: data.publicKey };
|
|
162
|
-
fs.writeFileSync(keypairFile, JSON.stringify(safe, null, 2), 'utf-8');
|
|
163
262
|
}
|
|
164
263
|
// Load private key from Keychain (macOS) or file (other)
|
|
165
264
|
let privateKey;
|
|
166
265
|
if (isMacOS()) {
|
|
167
266
|
const fromKeychain = keychainLoad();
|
|
168
|
-
if (
|
|
169
|
-
|
|
267
|
+
if (fromKeychain) {
|
|
268
|
+
privateKey = fromKeychain;
|
|
269
|
+
}
|
|
270
|
+
else if (isEncryptedKeypairRecord(data)) {
|
|
271
|
+
// macOS keychain unavailable but a previous run wrote an encrypted file fallback — use it.
|
|
272
|
+
const secretConfig = getKeyEncryptionSecret();
|
|
273
|
+
if (!secretConfig) {
|
|
274
|
+
throw new Error('[OGP] Encrypted private key fallback present but no decryption secret is available. Set OGP_KEYPAIR_SECRET before starting OGP.');
|
|
275
|
+
}
|
|
276
|
+
privateKey = decryptPrivateKey(data, secretConfig.secret);
|
|
277
|
+
}
|
|
278
|
+
else if (data.privateKey) {
|
|
279
|
+
// Legacy plaintext fallback left behind by a failed migration.
|
|
280
|
+
privateKey = data.privateKey;
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
throw new Error('[OGP] Private key not found in macOS Keychain. On macOS, keypair.json stores only the public key cache. Run `ogp setup --reset-keypair` to regenerate, or set OGP_KEYCHAIN_PATH/OGP_KEYCHAIN_PASSWORD_FILE to use a dedicated keychain on headless macOS.');
|
|
170
284
|
}
|
|
171
|
-
privateKey = fromKeychain;
|
|
172
285
|
}
|
|
173
286
|
else {
|
|
174
287
|
const secretConfig = getKeyEncryptionSecret();
|
|
@@ -198,11 +311,20 @@ export function loadOrGenerateKeyPair() {
|
|
|
198
311
|
const keypair = generateKeyPair();
|
|
199
312
|
if (isMacOS()) {
|
|
200
313
|
// Store private key in Keychain, public key in file only
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
314
|
+
try {
|
|
315
|
+
keychainStore(keypair.privateKey);
|
|
316
|
+
fs.writeFileSync(keypairFile, JSON.stringify({ publicKey: keypair.publicKey }, null, 2), 'utf-8');
|
|
317
|
+
console.log(`[OGP] Generated new Ed25519 keypair (private key stored in macOS Keychain service ${getKeychainService()}, public key cached in keypair.json)`);
|
|
318
|
+
return keypair;
|
|
319
|
+
}
|
|
320
|
+
catch (keychainErr) {
|
|
321
|
+
const message = keychainErr instanceof Error ? keychainErr.message : String(keychainErr);
|
|
322
|
+
console.warn(`[OGP] Could not store private key in macOS Keychain: ${message}`);
|
|
323
|
+
console.warn('[OGP] Falling back to encrypted-file storage. Set OGP_KEYCHAIN_PATH/OGP_KEYCHAIN_PASSWORD_FILE to use a dedicated keychain on headless macOS.');
|
|
324
|
+
// Fall through to the file-based storage path below.
|
|
325
|
+
}
|
|
204
326
|
}
|
|
205
|
-
|
|
327
|
+
{
|
|
206
328
|
const secretConfig = getKeyEncryptionSecret();
|
|
207
329
|
if (secretConfig) {
|
|
208
330
|
writeEncryptedKeypairFile(keypairFile, keypair, secretConfig.secret, secretConfig.source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keypair.js","sourceRoot":"","sources":["../../src/daemon/keypair.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keypair.js","sourceRoot":"","sources":["../../src/daemon/keypair.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,14 @@ export interface FederationMessage {
|
|
|
2
2
|
intent: string;
|
|
3
3
|
from: string;
|
|
4
4
|
to: string;
|
|
5
|
+
/**
|
|
6
|
+
* B0032 v0.7.0 — Optional persona-targeting field. Routes the message to a
|
|
7
|
+
* specific addressable agent persona within the receiving gateway.
|
|
8
|
+
* Undefined / omitted / empty → route to primary persona (back-compat with
|
|
9
|
+
* pre-v0.7 peers). Mismatching id → P3 returns 404 unknown-agent.
|
|
10
|
+
* Routing logic lives in P3, not yet wired. Wire format only at P2.
|
|
11
|
+
*/
|
|
12
|
+
toAgent?: string;
|
|
5
13
|
nonce: string;
|
|
6
14
|
timestamp: string;
|
|
7
15
|
payload: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../src/daemon/message-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../src/daemon/message-handler.ts"],"names":[],"mappings":"AAwDA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IAEb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAyI1B"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { verifyObject } from '../shared/signing.js';
|
|
2
|
-
import { getPeer } from './peers.js';
|
|
2
|
+
import { getPeer, updatePeer } from './peers.js';
|
|
3
3
|
import { getIntent } from './intent-registry.js';
|
|
4
4
|
import { notifyOpenClaw } from './notify.js';
|
|
5
5
|
import { checkAccess } from './doorman.js';
|
|
6
6
|
import { logActivity, getEffectivePolicy } from './agent-comms.js';
|
|
7
7
|
import { getProject, joinProject, isProjectMember, contributeToProject, getTopicContributions, getAuthorContributions, getProjectStatus, ensureProjectTopic, createProject, addProject } from './projects.js';
|
|
8
|
-
import { loadConfig } from '../shared/config.js';
|
|
8
|
+
import { loadConfig, requireConfig, synthesizePersonas, resolveTargetPersona, effectiveHookAgentId } from '../shared/config.js';
|
|
9
9
|
import { spawn } from 'node:child_process';
|
|
10
10
|
import fs from 'node:fs';
|
|
11
11
|
/**
|
|
@@ -63,6 +63,12 @@ export async function handleMessage(message, signature, messageStr // raw JSON s
|
|
|
63
63
|
statusCode: 401
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
+
// Issue #3: record authenticated inbound contact for directional health diagnostics.
|
|
67
|
+
const inboundAt = new Date().toISOString();
|
|
68
|
+
updatePeer(peer.id, {
|
|
69
|
+
lastInboundContactAt: inboundAt,
|
|
70
|
+
lastSeenAt: inboundAt
|
|
71
|
+
});
|
|
66
72
|
// 3. Doorman scope check (v0.2.0)
|
|
67
73
|
const accessResult = checkAccess(message.from, message.intent, message.payload);
|
|
68
74
|
if (!accessResult.allowed) {
|
|
@@ -88,13 +94,30 @@ export async function handleMessage(message, signature, messageStr // raw JSON s
|
|
|
88
94
|
statusCode: 400
|
|
89
95
|
};
|
|
90
96
|
}
|
|
97
|
+
// 4.5. (B0032 P3) Resolve target persona for multi-agent routing.
|
|
98
|
+
// Pre-v0.7 messages (no toAgent) route to primary; explicit toAgent must
|
|
99
|
+
// match a configured persona, otherwise reject with 404 unknown-agent.
|
|
100
|
+
const cfg = requireConfig();
|
|
101
|
+
const personas = synthesizePersonas(cfg);
|
|
102
|
+
const targetPersona = resolveTargetPersona(message.toAgent, personas);
|
|
103
|
+
if (!targetPersona) {
|
|
104
|
+
const requested = message.toAgent ?? '<unset>';
|
|
105
|
+
console.log(`[OGP] Unknown agent persona '${requested}' from peer ${peer.displayName} (${peer.id})`);
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
nonce: message.nonce,
|
|
109
|
+
error: `Unknown agent: '${requested}' is not a configured persona on this gateway`,
|
|
110
|
+
statusCode: 404
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const hookAgentId = effectiveHookAgentId(targetPersona);
|
|
91
114
|
// 5. Handle agent-comms specially (includes replyTo support)
|
|
92
115
|
if (message.intent === 'agent-comms') {
|
|
93
|
-
return handleAgentComms(message, peer.displayName);
|
|
116
|
+
return handleAgentComms(message, peer.displayName, hookAgentId);
|
|
94
117
|
}
|
|
95
118
|
// 5.1. Handle project intents specially
|
|
96
119
|
if (message.intent.startsWith('project.')) {
|
|
97
|
-
return handleProjectIntent(message, peer.displayName);
|
|
120
|
+
return handleProjectIntent(message, peer.displayName, hookAgentId);
|
|
98
121
|
}
|
|
99
122
|
// 6. Execute intent handler if one is registered
|
|
100
123
|
if (intent.handler) {
|
|
@@ -109,10 +132,11 @@ export async function handleMessage(message, signature, messageStr // raw JSON s
|
|
|
109
132
|
console.error(`[OGP] Handler execution failed: ${error}`);
|
|
110
133
|
}
|
|
111
134
|
}
|
|
112
|
-
// 7. Standard intent handling: Notify OpenClaw
|
|
135
|
+
// 7. Standard intent handling: Notify OpenClaw (B0032 P3: include resolved hookAgentId)
|
|
113
136
|
const notificationText = formatNotification(message, peer.displayName);
|
|
114
137
|
await notifyOpenClaw({
|
|
115
138
|
text: notificationText,
|
|
139
|
+
hookAgentId,
|
|
116
140
|
metadata: {
|
|
117
141
|
ogp: {
|
|
118
142
|
from: message.from,
|
|
@@ -120,7 +144,9 @@ export async function handleMessage(message, signature, messageStr // raw JSON s
|
|
|
120
144
|
nonce: message.nonce,
|
|
121
145
|
payload: message.payload,
|
|
122
146
|
replyTo: message.replyTo,
|
|
123
|
-
conversationId: message.conversationId
|
|
147
|
+
conversationId: message.conversationId,
|
|
148
|
+
toAgent: message.toAgent,
|
|
149
|
+
targetPersonaId: targetPersona.id
|
|
124
150
|
}
|
|
125
151
|
}
|
|
126
152
|
});
|
|
@@ -137,7 +163,8 @@ export async function handleMessage(message, signature, messageStr // raw JSON s
|
|
|
137
163
|
/**
|
|
138
164
|
* Handle federation resync responses (yes/no to restore old config)
|
|
139
165
|
*/
|
|
140
|
-
async function handleFederationResyncResponse(message, displayName, messageText
|
|
166
|
+
async function handleFederationResyncResponse(message, displayName, messageText, hookAgentId // B0032 P3
|
|
167
|
+
) {
|
|
141
168
|
const { getPeer, updatePeer } = await import('./peers.js');
|
|
142
169
|
const { joinProject } = await import('./projects.js');
|
|
143
170
|
const { updatePeerGrantedScopes, updatePeerReceivedScopes, setPeerTopicPolicy } = await import('./peers.js');
|
|
@@ -191,6 +218,7 @@ async function handleFederationResyncResponse(message, displayName, messageText)
|
|
|
191
218
|
console.log(` - Projects: ${snapshot.oldProjects.length}`);
|
|
192
219
|
await notifyOpenClaw({
|
|
193
220
|
text: `✓ Restored previous federation config for ${displayName}`,
|
|
221
|
+
hookAgentId,
|
|
194
222
|
metadata: {
|
|
195
223
|
ogp: {
|
|
196
224
|
from: message.from,
|
|
@@ -215,6 +243,7 @@ async function handleFederationResyncResponse(message, displayName, messageText)
|
|
|
215
243
|
console.log(`[OGP Resync] ${displayName} chose to start fresh - snapshot discarded`);
|
|
216
244
|
await notifyOpenClaw({
|
|
217
245
|
text: `${displayName} chose to start with fresh federation settings (previous config discarded)`,
|
|
246
|
+
hookAgentId,
|
|
218
247
|
metadata: {
|
|
219
248
|
ogp: {
|
|
220
249
|
from: message.from,
|
|
@@ -237,6 +266,7 @@ async function handleFederationResyncResponse(message, displayName, messageText)
|
|
|
237
266
|
// Unrecognized response - keep snapshot and ask again
|
|
238
267
|
await notifyOpenClaw({
|
|
239
268
|
text: `${displayName} sent unclear response to resync offer: "${messageText}"`,
|
|
269
|
+
hookAgentId,
|
|
240
270
|
metadata: {
|
|
241
271
|
ogp: {
|
|
242
272
|
from: message.from,
|
|
@@ -258,14 +288,15 @@ async function handleFederationResyncResponse(message, displayName, messageText)
|
|
|
258
288
|
/**
|
|
259
289
|
* Handle agent-comms intent with topic routing and reply support
|
|
260
290
|
*/
|
|
261
|
-
async function handleAgentComms(message, displayName
|
|
291
|
+
async function handleAgentComms(message, displayName, hookAgentId // B0032 P3: persona-resolved OpenClaw agentId
|
|
292
|
+
) {
|
|
262
293
|
const payload = message.payload || {};
|
|
263
294
|
const topic = payload.topic || 'general';
|
|
264
295
|
const messageText = payload.message || '';
|
|
265
296
|
const priority = payload.priority || 'normal';
|
|
266
297
|
// Handle federation resync responses specially
|
|
267
298
|
if (topic === 'federation-resync') {
|
|
268
|
-
return handleFederationResyncResponse(message, displayName, messageText);
|
|
299
|
+
return handleFederationResyncResponse(message, displayName, messageText, hookAgentId);
|
|
269
300
|
}
|
|
270
301
|
// Get effective response policy for this peer and topic
|
|
271
302
|
const policy = getEffectivePolicy(message.from, topic);
|
|
@@ -298,6 +329,7 @@ async function handleAgentComms(message, displayName) {
|
|
|
298
329
|
const previewClause = preview ? ` They said: "${preview}"` : '';
|
|
299
330
|
await notifyOpenClaw({
|
|
300
331
|
text: `Hey — ${displayName} just tried to send you a message on topic "${topic}" but I blocked it because that topic isn't on your allow-list.${previewClause} If you want to let them through on "${topic}", just say the word and I'll enable it.`,
|
|
332
|
+
hookAgentId,
|
|
301
333
|
metadata: {
|
|
302
334
|
ogp: {
|
|
303
335
|
from: message.from,
|
|
@@ -327,6 +359,7 @@ async function handleAgentComms(message, displayName) {
|
|
|
327
359
|
const notificationText = `[OGP Agent-Comms] ${priorityIndicator}${displayName} → ${topic} ${policyTag}: ${messageText}`;
|
|
328
360
|
await notifyOpenClaw({
|
|
329
361
|
text: notificationText,
|
|
362
|
+
hookAgentId,
|
|
330
363
|
peerId: message.from,
|
|
331
364
|
peerDisplayName: displayName,
|
|
332
365
|
intent: 'agent-comms',
|
|
@@ -454,7 +487,8 @@ async function executeIntentHandler(handlerPath, message, peerDisplayName) {
|
|
|
454
487
|
/**
|
|
455
488
|
* Handle project.* intents with business logic
|
|
456
489
|
*/
|
|
457
|
-
async function handleProjectIntent(message, displayName
|
|
490
|
+
async function handleProjectIntent(message, displayName, hookAgentId // B0032 P3: persona-resolved OpenClaw agentId
|
|
491
|
+
) {
|
|
458
492
|
const config = loadConfig();
|
|
459
493
|
if (!config) {
|
|
460
494
|
return {
|
|
@@ -468,13 +502,13 @@ async function handleProjectIntent(message, displayName) {
|
|
|
468
502
|
try {
|
|
469
503
|
switch (message.intent) {
|
|
470
504
|
case 'project.join':
|
|
471
|
-
return await handleProjectJoin(message, displayName, payload);
|
|
505
|
+
return await handleProjectJoin(message, displayName, payload, hookAgentId);
|
|
472
506
|
case 'project.contribute':
|
|
473
|
-
return await handleProjectContribute(message, displayName, payload);
|
|
507
|
+
return await handleProjectContribute(message, displayName, payload, hookAgentId);
|
|
474
508
|
case 'project.query':
|
|
475
|
-
return await handleProjectQuery(message, displayName, payload);
|
|
509
|
+
return await handleProjectQuery(message, displayName, payload, hookAgentId);
|
|
476
510
|
case 'project.status':
|
|
477
|
-
return await handleProjectStatus(message, displayName, payload);
|
|
511
|
+
return await handleProjectStatus(message, displayName, payload, hookAgentId);
|
|
478
512
|
default:
|
|
479
513
|
return {
|
|
480
514
|
success: false,
|
|
@@ -497,7 +531,8 @@ async function handleProjectIntent(message, displayName) {
|
|
|
497
531
|
/**
|
|
498
532
|
* Handle project.join intent
|
|
499
533
|
*/
|
|
500
|
-
async function handleProjectJoin(message, displayName, payload
|
|
534
|
+
async function handleProjectJoin(message, displayName, payload, hookAgentId // B0032 P3
|
|
535
|
+
) {
|
|
501
536
|
const { projectId, projectName, projectDescription } = payload;
|
|
502
537
|
if (!projectId || !projectName) {
|
|
503
538
|
return {
|
|
@@ -523,6 +558,7 @@ async function handleProjectJoin(message, displayName, payload) {
|
|
|
523
558
|
const notificationText = `[OGP Project] ${displayName} joined project '${projectName}' (${projectId})`;
|
|
524
559
|
await notifyOpenClaw({
|
|
525
560
|
text: notificationText,
|
|
561
|
+
hookAgentId,
|
|
526
562
|
metadata: {
|
|
527
563
|
ogp: {
|
|
528
564
|
from: message.from,
|
|
@@ -557,7 +593,8 @@ async function handleProjectJoin(message, displayName, payload) {
|
|
|
557
593
|
/**
|
|
558
594
|
* Handle project.contribute intent
|
|
559
595
|
*/
|
|
560
|
-
async function handleProjectContribute(message, displayName, payload
|
|
596
|
+
async function handleProjectContribute(message, displayName, payload, hookAgentId // B0032 P3
|
|
597
|
+
) {
|
|
561
598
|
const { projectId, summary, metadata, authorIdentity } = payload;
|
|
562
599
|
const entryType = payload.entryType || payload.topic;
|
|
563
600
|
if (!projectId || !entryType || !summary) {
|
|
@@ -609,6 +646,7 @@ async function handleProjectContribute(message, displayName, payload) {
|
|
|
609
646
|
const notificationText = `[OGP Project] ${displayName} contributed to '${project.name}' entry type '${entryType}': ${summary}`;
|
|
610
647
|
await notifyOpenClaw({
|
|
611
648
|
text: notificationText,
|
|
649
|
+
hookAgentId,
|
|
612
650
|
metadata: {
|
|
613
651
|
ogp: {
|
|
614
652
|
from: message.from,
|
|
@@ -648,7 +686,8 @@ async function handleProjectContribute(message, displayName, payload) {
|
|
|
648
686
|
/**
|
|
649
687
|
* Handle project.query intent
|
|
650
688
|
*/
|
|
651
|
-
async function handleProjectQuery(message, displayName, payload
|
|
689
|
+
async function handleProjectQuery(message, displayName, payload, hookAgentId // B0032 P3
|
|
690
|
+
) {
|
|
652
691
|
const { projectId, authorId, limit = 20 } = payload;
|
|
653
692
|
const entryType = payload.entryType || payload.topic;
|
|
654
693
|
if (!projectId) {
|
|
@@ -701,6 +740,7 @@ async function handleProjectQuery(message, displayName, payload) {
|
|
|
701
740
|
const notificationText = `[OGP Project] ${displayName} queried project '${project.name}' for ${queryDescription} contributions (${contributions.length} found)`;
|
|
702
741
|
await notifyOpenClaw({
|
|
703
742
|
text: notificationText,
|
|
743
|
+
hookAgentId,
|
|
704
744
|
metadata: {
|
|
705
745
|
ogp: {
|
|
706
746
|
from: message.from,
|
|
@@ -735,7 +775,8 @@ async function handleProjectQuery(message, displayName, payload) {
|
|
|
735
775
|
/**
|
|
736
776
|
* Handle project.status intent
|
|
737
777
|
*/
|
|
738
|
-
async function handleProjectStatus(message, displayName, payload
|
|
778
|
+
async function handleProjectStatus(message, displayName, payload, hookAgentId // B0032 P3
|
|
779
|
+
) {
|
|
739
780
|
const { projectId } = payload;
|
|
740
781
|
if (!projectId) {
|
|
741
782
|
return {
|
|
@@ -767,6 +808,7 @@ async function handleProjectStatus(message, displayName, payload) {
|
|
|
767
808
|
const notificationText = `[OGP Project] ${displayName} requested status for project '${project.name}' (${statusData.topics.length} topics)`;
|
|
768
809
|
await notifyOpenClaw({
|
|
769
810
|
text: notificationText,
|
|
811
|
+
hookAgentId,
|
|
770
812
|
metadata: {
|
|
771
813
|
ogp: {
|
|
772
814
|
from: message.from,
|