@dp-pcs/ogp 0.5.0 → 0.7.0-rc.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.
Files changed (91) hide show
  1. package/README.md +47 -11
  2. package/dist/cli/agent-targeting.d.ts +21 -0
  3. package/dist/cli/agent-targeting.d.ts.map +1 -0
  4. package/dist/cli/agent-targeting.js +44 -0
  5. package/dist/cli/agent-targeting.js.map +1 -0
  6. package/dist/cli/config.d.ts +4 -0
  7. package/dist/cli/config.d.ts.map +1 -1
  8. package/dist/cli/config.js +48 -0
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/federation.d.ts +6 -1
  11. package/dist/cli/federation.d.ts.map +1 -1
  12. package/dist/cli/federation.js +222 -92
  13. package/dist/cli/federation.js.map +1 -1
  14. package/dist/cli/keychain.d.ts +22 -0
  15. package/dist/cli/keychain.d.ts.map +1 -0
  16. package/dist/cli/keychain.js +213 -0
  17. package/dist/cli/keychain.js.map +1 -0
  18. package/dist/cli/project.d.ts +1 -0
  19. package/dist/cli/project.d.ts.map +1 -1
  20. package/dist/cli/project.js +87 -7
  21. package/dist/cli/project.js.map +1 -1
  22. package/dist/cli/setup.d.ts +37 -0
  23. package/dist/cli/setup.d.ts.map +1 -1
  24. package/dist/cli/setup.js +130 -0
  25. package/dist/cli/setup.js.map +1 -1
  26. package/dist/cli.js +48 -7
  27. package/dist/cli.js.map +1 -1
  28. package/dist/daemon/heartbeat.d.ts +37 -0
  29. package/dist/daemon/heartbeat.d.ts.map +1 -1
  30. package/dist/daemon/heartbeat.js +195 -21
  31. package/dist/daemon/heartbeat.js.map +1 -1
  32. package/dist/daemon/keypair.d.ts.map +1 -1
  33. package/dist/daemon/keypair.js +144 -22
  34. package/dist/daemon/keypair.js.map +1 -1
  35. package/dist/daemon/message-handler.d.ts +8 -0
  36. package/dist/daemon/message-handler.d.ts.map +1 -1
  37. package/dist/daemon/message-handler.js +77 -20
  38. package/dist/daemon/message-handler.js.map +1 -1
  39. package/dist/daemon/notify.d.ts +6 -0
  40. package/dist/daemon/notify.d.ts.map +1 -1
  41. package/dist/daemon/notify.js +9 -2
  42. package/dist/daemon/notify.js.map +1 -1
  43. package/dist/daemon/openclaw-bridge.d.ts +6 -0
  44. package/dist/daemon/openclaw-bridge.d.ts.map +1 -1
  45. package/dist/daemon/openclaw-bridge.js +10 -2
  46. package/dist/daemon/openclaw-bridge.js.map +1 -1
  47. package/dist/daemon/peers.d.ts +31 -0
  48. package/dist/daemon/peers.d.ts.map +1 -1
  49. package/dist/daemon/peers.js +66 -4
  50. package/dist/daemon/peers.js.map +1 -1
  51. package/dist/daemon/projects.d.ts +9 -1
  52. package/dist/daemon/projects.d.ts.map +1 -1
  53. package/dist/daemon/projects.js +2 -1
  54. package/dist/daemon/projects.js.map +1 -1
  55. package/dist/daemon/rendezvous.d.ts.map +1 -1
  56. package/dist/daemon/rendezvous.js +9 -7
  57. package/dist/daemon/rendezvous.js.map +1 -1
  58. package/dist/daemon/reply-handler.d.ts.map +1 -1
  59. package/dist/daemon/reply-handler.js +2 -1
  60. package/dist/daemon/reply-handler.js.map +1 -1
  61. package/dist/daemon/scopes.d.ts +8 -0
  62. package/dist/daemon/scopes.d.ts.map +1 -1
  63. package/dist/daemon/scopes.js.map +1 -1
  64. package/dist/daemon/server.d.ts +128 -1
  65. package/dist/daemon/server.d.ts.map +1 -1
  66. package/dist/daemon/server.js +304 -57
  67. package/dist/daemon/server.js.map +1 -1
  68. package/dist/shared/config.d.ts +93 -0
  69. package/dist/shared/config.d.ts.map +1 -1
  70. package/dist/shared/config.js +111 -0
  71. package/dist/shared/config.js.map +1 -1
  72. package/dist/shared/help.js +2 -0
  73. package/dist/shared/help.js.map +1 -1
  74. package/dist/shared/signing.d.ts +49 -0
  75. package/dist/shared/signing.d.ts.map +1 -1
  76. package/dist/shared/signing.js +68 -0
  77. package/dist/shared/signing.js.map +1 -1
  78. package/dist/shared/tls.d.ts +27 -0
  79. package/dist/shared/tls.d.ts.map +1 -0
  80. package/dist/shared/tls.js +37 -0
  81. package/dist/shared/tls.js.map +1 -0
  82. package/docs/ARCHITECTURE.md +146 -0
  83. package/docs/CLI-REFERENCE.md +170 -2
  84. package/docs/MULTI-AGENT-PERSONAS-DESIGN.md +925 -0
  85. package/package.json +1 -1
  86. package/scripts/completion.bash +26 -2
  87. package/scripts/completion.zsh +10 -4
  88. package/scripts/render-ogp-overview-video.mjs +417 -0
  89. package/skills/ogp/SKILL.md +1 -1
  90. package/skills/ogp-expose/SKILL.md +1 -1
  91. package/skills/ogp-project/SKILL.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/daemon/heartbeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/daemon/heartbeat.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"keypair.d.ts","sourceRoot":"","sources":["../../src/daemon/keypair.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AA8KrE,wBAAgB,YAAY,IAAI,OAAO,CAatC;AAID,wBAAgB,qBAAqB,IAAI,OAAO,CA+E/C;AAED,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAGtC"}
1
+ {"version":3,"file":"keypair.d.ts","sourceRoot":"","sources":["../../src/daemon/keypair.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAmQrE,wBAAgB,YAAY,IAAI,OAAO,CAatC;AAID,wBAAgB,qBAAqB,IAAI,OAAO,CA6G/C;AAED,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAGtC"}
@@ -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 { execSync } from 'node:child_process';
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
- execSync(`security add-generic-password -U -s ${getKeychainService()} -a ${KEYCHAIN_ACCOUNT} -w ${JSON.stringify(privateKey)}`, { stdio: 'pipe' });
91
+ execFileSync('security', args, { stdio: 'pipe' });
25
92
  }
26
- catch {
27
- // ignore falls back to file
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
- // Try new instance-specific service name first
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'; // Old hardcoded service name
40
- const oldResult = execSync(`security find-generic-password -s ${oldService} -a ${KEYCHAIN_ACCOUNT} -w`, { stdio: 'pipe' }).toString().trim();
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
- keychainStore(oldResult);
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
- execSync(`security delete-generic-password -s ${getKeychainService()} -a ${KEYCHAIN_ACCOUNT}`, { stdio: 'pipe' });
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
- keychainStore(data.privateKey);
158
- console.log('[OGP] Migrated private key to macOS Keychain');
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 (!fromKeychain) {
169
- 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.');
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
- keychainStore(keypair.privateKey);
202
- fs.writeFileSync(keypairFile, JSON.stringify({ publicKey: keypair.publicKey }, null, 2), 'utf-8');
203
- console.log(`[OGP] Generated new Ed25519 keypair (private key stored in macOS Keychain service ${getKeychainService()}, public key cached in keypair.json)`);
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
- else {
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":"AAkDA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,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,CA6G1B"}
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,8 +593,9 @@ async function handleProjectJoin(message, displayName, payload) {
557
593
  /**
558
594
  * Handle project.contribute intent
559
595
  */
560
- async function handleProjectContribute(message, displayName, payload) {
561
- const { projectId, summary, metadata } = payload;
596
+ async function handleProjectContribute(message, displayName, payload, hookAgentId // B0032 P3
597
+ ) {
598
+ const { projectId, summary, metadata, authorIdentity } = payload;
562
599
  const entryType = payload.entryType || payload.topic;
563
600
  if (!projectId || !entryType || !summary) {
564
601
  return {
@@ -588,12 +625,28 @@ async function handleProjectContribute(message, displayName, payload) {
588
625
  }
589
626
  // Keep the existing topic bucket structure on disk; user-facing terminology is "entry type".
590
627
  ensureProjectTopic(projectId, entryType);
628
+ // Build authorIdentity with 3-tier fallback: payload → peer lookup → undefined
629
+ let identity = authorIdentity;
630
+ if (!identity) {
631
+ // Fall back to peer lookup
632
+ const peer = getPeer(message.from);
633
+ if (peer) {
634
+ identity = {
635
+ displayName: peer.displayName,
636
+ humanName: peer.humanName,
637
+ agentName: peer.agentName,
638
+ organization: peer.organization,
639
+ tags: peer.tags
640
+ };
641
+ }
642
+ }
591
643
  // Add the contribution
592
- const contributionId = contributeToProject(projectId, entryType, message.from, summary, metadata);
644
+ const contributionId = contributeToProject(projectId, entryType, message.from, summary, metadata, identity);
593
645
  if (contributionId) {
594
646
  const notificationText = `[OGP Project] ${displayName} contributed to '${project.name}' entry type '${entryType}': ${summary}`;
595
647
  await notifyOpenClaw({
596
648
  text: notificationText,
649
+ hookAgentId,
597
650
  metadata: {
598
651
  ogp: {
599
652
  from: message.from,
@@ -633,7 +686,8 @@ async function handleProjectContribute(message, displayName, payload) {
633
686
  /**
634
687
  * Handle project.query intent
635
688
  */
636
- async function handleProjectQuery(message, displayName, payload) {
689
+ async function handleProjectQuery(message, displayName, payload, hookAgentId // B0032 P3
690
+ ) {
637
691
  const { projectId, authorId, limit = 20 } = payload;
638
692
  const entryType = payload.entryType || payload.topic;
639
693
  if (!projectId) {
@@ -686,6 +740,7 @@ async function handleProjectQuery(message, displayName, payload) {
686
740
  const notificationText = `[OGP Project] ${displayName} queried project '${project.name}' for ${queryDescription} contributions (${contributions.length} found)`;
687
741
  await notifyOpenClaw({
688
742
  text: notificationText,
743
+ hookAgentId,
689
744
  metadata: {
690
745
  ogp: {
691
746
  from: message.from,
@@ -720,7 +775,8 @@ async function handleProjectQuery(message, displayName, payload) {
720
775
  /**
721
776
  * Handle project.status intent
722
777
  */
723
- async function handleProjectStatus(message, displayName, payload) {
778
+ async function handleProjectStatus(message, displayName, payload, hookAgentId // B0032 P3
779
+ ) {
724
780
  const { projectId } = payload;
725
781
  if (!projectId) {
726
782
  return {
@@ -752,6 +808,7 @@ async function handleProjectStatus(message, displayName, payload) {
752
808
  const notificationText = `[OGP Project] ${displayName} requested status for project '${project.name}' (${statusData.topics.length} topics)`;
753
809
  await notifyOpenClaw({
754
810
  text: notificationText,
811
+ hookAgentId,
755
812
  metadata: {
756
813
  ogp: {
757
814
  from: message.from,