@dp-pcs/ogp 0.3.2 → 0.4.2

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 (95) hide show
  1. package/README.md +275 -49
  2. package/dist/cli/completion.d.ts +5 -0
  3. package/dist/cli/completion.d.ts.map +1 -0
  4. package/dist/cli/completion.js +148 -0
  5. package/dist/cli/completion.js.map +1 -0
  6. package/dist/cli/config.d.ts +3 -0
  7. package/dist/cli/config.d.ts.map +1 -0
  8. package/dist/cli/config.js +207 -0
  9. package/dist/cli/config.js.map +1 -0
  10. package/dist/cli/expose.d.ts.map +1 -1
  11. package/dist/cli/expose.js +20 -13
  12. package/dist/cli/expose.js.map +1 -1
  13. package/dist/cli/federation.d.ts.map +1 -1
  14. package/dist/cli/federation.js +252 -9
  15. package/dist/cli/federation.js.map +1 -1
  16. package/dist/cli/setup.d.ts +19 -0
  17. package/dist/cli/setup.d.ts.map +1 -1
  18. package/dist/cli/setup.js +507 -32
  19. package/dist/cli/setup.js.map +1 -1
  20. package/dist/cli.js +348 -32
  21. package/dist/cli.js.map +1 -1
  22. package/dist/daemon/agent-comms.d.ts.map +1 -1
  23. package/dist/daemon/agent-comms.js +14 -9
  24. package/dist/daemon/agent-comms.js.map +1 -1
  25. package/dist/daemon/intent-registry.d.ts.map +1 -1
  26. package/dist/daemon/intent-registry.js +7 -4
  27. package/dist/daemon/intent-registry.js.map +1 -1
  28. package/dist/daemon/keypair.d.ts.map +1 -1
  29. package/dist/daemon/keypair.js +34 -13
  30. package/dist/daemon/keypair.js.map +1 -1
  31. package/dist/daemon/message-handler.d.ts.map +1 -1
  32. package/dist/daemon/message-handler.js +7 -0
  33. package/dist/daemon/message-handler.js.map +1 -1
  34. package/dist/daemon/notify.d.ts +19 -0
  35. package/dist/daemon/notify.d.ts.map +1 -1
  36. package/dist/daemon/notify.js +329 -73
  37. package/dist/daemon/notify.js.map +1 -1
  38. package/dist/daemon/openclaw-bridge.d.ts +34 -0
  39. package/dist/daemon/openclaw-bridge.d.ts.map +1 -0
  40. package/dist/daemon/openclaw-bridge.js +261 -0
  41. package/dist/daemon/openclaw-bridge.js.map +1 -0
  42. package/dist/daemon/peers.d.ts +8 -0
  43. package/dist/daemon/peers.d.ts.map +1 -1
  44. package/dist/daemon/peers.js +48 -14
  45. package/dist/daemon/peers.js.map +1 -1
  46. package/dist/daemon/projects.d.ts.map +1 -1
  47. package/dist/daemon/projects.js +7 -4
  48. package/dist/daemon/projects.js.map +1 -1
  49. package/dist/daemon/server.d.ts +16 -0
  50. package/dist/daemon/server.d.ts.map +1 -1
  51. package/dist/daemon/server.js +147 -46
  52. package/dist/daemon/server.js.map +1 -1
  53. package/dist/shared/config.d.ts +52 -1
  54. package/dist/shared/config.d.ts.map +1 -1
  55. package/dist/shared/config.js +18 -11
  56. package/dist/shared/config.js.map +1 -1
  57. package/dist/shared/framework-detection.d.ts +31 -0
  58. package/dist/shared/framework-detection.d.ts.map +1 -0
  59. package/dist/shared/framework-detection.js +91 -0
  60. package/dist/shared/framework-detection.js.map +1 -0
  61. package/dist/shared/help.d.ts +5 -0
  62. package/dist/shared/help.d.ts.map +1 -0
  63. package/dist/shared/help.js +280 -0
  64. package/dist/shared/help.js.map +1 -0
  65. package/dist/shared/meta-config.d.ts +44 -0
  66. package/dist/shared/meta-config.d.ts.map +1 -0
  67. package/dist/shared/meta-config.js +89 -0
  68. package/dist/shared/meta-config.js.map +1 -0
  69. package/dist/shared/migration.d.ts +57 -0
  70. package/dist/shared/migration.d.ts.map +1 -0
  71. package/dist/shared/migration.js +255 -0
  72. package/dist/shared/migration.js.map +1 -0
  73. package/docs/CLI-REFERENCE.md +1360 -0
  74. package/docs/GETTING-STARTED.md +942 -0
  75. package/docs/MIGRATION.md +202 -0
  76. package/docs/MULTI-FRAMEWORK-DEMO.md +352 -0
  77. package/docs/MULTI-FRAMEWORK-DESIGN.md +378 -0
  78. package/docs/MULTI-FRAMEWORK-IMPL.md +197 -0
  79. package/docs/case-studies/CRASH_RESOLUTION_20260407.md +190 -0
  80. package/docs/case-studies/OpenClaw_Hermes_Status_Report_20260407.md +142 -0
  81. package/docs/case-studies/OpenClaw_Stability_Fix_Summary.md +209 -0
  82. package/docs/case-studies/README.md +40 -0
  83. package/docs/case-studies/crash_observations.md +250 -0
  84. package/docs/federation-flow.md +21 -31
  85. package/docs/hermes-implementation-checklist.md +4 -0
  86. package/docs/rendezvous.md +13 -14
  87. package/package.json +9 -3
  88. package/scripts/completion.bash +123 -0
  89. package/scripts/completion.zsh +372 -0
  90. package/scripts/test-migration-execute.js +74 -0
  91. package/scripts/test-migration.js +42 -0
  92. package/skills/ogp/SKILL.md +197 -64
  93. package/skills/ogp-agent-comms/SKILL.md +107 -41
  94. package/skills/ogp-expose/SKILL.md +84 -21
  95. package/skills/ogp-project/SKILL.md +66 -58
package/dist/cli/setup.js CHANGED
@@ -3,8 +3,13 @@ import { stdin as input, stdout as output } from 'node:process';
3
3
  import * as fs from 'node:fs';
4
4
  import * as path from 'node:path';
5
5
  import * as os from 'node:os';
6
- import { saveConfig } from '../shared/config.js';
6
+ import { requireConfig, saveConfig } from '../shared/config.js';
7
7
  import { loadOrGenerateKeyPair } from '../daemon/keypair.js';
8
+ import { detectFrameworks } from '../shared/framework-detection.js';
9
+ import { loadMetaConfig, saveMetaConfig } from '../shared/meta-config.js';
10
+ import { detectExistingInstallations, executeMigration } from '../shared/migration.js';
11
+ const DEFAULT_HERMES_WEBHOOK_URL = 'http://localhost:8644/webhooks/ogp_federation';
12
+ const DEFAULT_HERMES_WEBHOOK_SECRET = 'ogp-test-secret-hermes-2026';
8
13
  function loadOpenClawConfig() {
9
14
  try {
10
15
  const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json');
@@ -66,38 +71,508 @@ async function promptForAgentId(rl, agents) {
66
71
  }
67
72
  return agents[0].id;
68
73
  }
69
- export async function runSetup() {
70
- console.log('=== OGP Setup ===\n');
71
- const rl = readline.createInterface({ input, output });
72
- // Load agents from OpenClaw config
73
- const openclawConfig = loadOpenClawConfig();
74
- const agents = openclawConfig ? getAgentsFromConfig(openclawConfig) : [];
75
- const agentId = await promptForAgentId(rl, agents);
76
- const daemonPort = await rl.question('Daemon port [18790]: ');
77
- const openclawUrl = await rl.question('OpenClaw URL [http://localhost:18789]: ');
78
- const openclawToken = await rl.question('OpenClaw API token: ');
79
- const gatewayUrl = await rl.question('Gateway URL (your public URL — run "ogp expose" first to get this, or leave blank to set later): ');
80
- const displayName = await rl.question('Display name: ');
74
+ async function promptYesNo(rl, question, defaultYes = true) {
75
+ const suffix = defaultYes ? ' [Y/n]: ' : ' [y/N]: ';
76
+ const answer = await rl.question(question + suffix);
77
+ const trimmed = answer.trim().toLowerCase();
78
+ if (!trimmed) {
79
+ return defaultYes;
80
+ }
81
+ return trimmed === 'y' || trimmed === 'yes';
82
+ }
83
+ function getHumanSurfacingDefault(mode) {
84
+ if (mode === 'forward') {
85
+ return 'always';
86
+ }
87
+ if (mode === 'approval-required') {
88
+ return 'important-only';
89
+ }
90
+ return 'summary-only';
91
+ }
92
+ function getRelayHandlingDefault(mode) {
93
+ if (mode === 'approval-required') {
94
+ return 'approval-required';
95
+ }
96
+ if (mode === 'summarize') {
97
+ return 'summarize';
98
+ }
99
+ return 'deliver';
100
+ }
101
+ async function promptInboundFederationMode(rl, currentMode = 'summarize') {
102
+ console.log('\nHow should this agent handle inbound federated requests by default?');
103
+ console.log(' 1. forward Tell me everything');
104
+ console.log(' 2. summarize Tell me only the important/actionable parts');
105
+ console.log(' 3. autonomous Act on your own unless blocked or asked to relay something');
106
+ console.log(' 4. approval-required Do not act or reply without my approval');
107
+ const defaultChoice = currentMode === 'forward'
108
+ ? '1'
109
+ : currentMode === 'autonomous'
110
+ ? '3'
111
+ : currentMode === 'approval-required'
112
+ ? '4'
113
+ : '2';
114
+ const answer = await rl.question(`\nChoose handling mode [${defaultChoice}]: `);
115
+ const trimmed = answer.trim().toLowerCase();
116
+ switch (trimmed) {
117
+ case '1':
118
+ case 'forward':
119
+ return 'forward';
120
+ case '3':
121
+ case 'autonomous':
122
+ return 'autonomous';
123
+ case '4':
124
+ case 'approval-required':
125
+ case 'approval':
126
+ return 'approval-required';
127
+ case '':
128
+ return currentMode;
129
+ case '2':
130
+ case 'summarize':
131
+ default:
132
+ return 'summarize';
133
+ }
134
+ }
135
+ async function promptHumanSurfacingMode(rl, defaultMode, currentMode = getHumanSurfacingDefault(defaultMode)) {
136
+ console.log('\nHow much of inbound federated work should be surfaced to the human by default?');
137
+ console.log(' 1. always Forward or surface every inbound item');
138
+ console.log(' 2. summary-only Surface a concise summary');
139
+ console.log(' 3. important-only Surface only important, uncertain, or actionable items');
140
+ console.log(' 4. never Do not proactively surface unless another rule requires it');
141
+ const defaultChoice = currentMode === 'always'
142
+ ? '1'
143
+ : currentMode === 'important-only'
144
+ ? '3'
145
+ : currentMode === 'never'
146
+ ? '4'
147
+ : '2';
148
+ const answer = await rl.question(`\nChoose human surfacing mode [${defaultChoice}]: `);
149
+ const trimmed = answer.trim().toLowerCase();
150
+ switch (trimmed) {
151
+ case '1':
152
+ case 'always':
153
+ return 'always';
154
+ case '3':
155
+ case 'important':
156
+ case 'important-only':
157
+ return 'important-only';
158
+ case '4':
159
+ case 'never':
160
+ return 'never';
161
+ case '':
162
+ return currentMode;
163
+ case '2':
164
+ case 'summary':
165
+ case 'summary-only':
166
+ default:
167
+ return 'summary-only';
168
+ }
169
+ }
170
+ async function promptRelayHandlingMode(rl, defaultMode, currentMode = getRelayHandlingDefault(defaultMode)) {
171
+ console.log('\nIf a peer explicitly asks your agent to tell the human something, what should happen?');
172
+ console.log(' 1. deliver Treat it as a delivery obligation');
173
+ console.log(' 2. summarize Summarize it for the human instead of relaying verbatim');
174
+ console.log(' 3. approval-required Hold it for approval before treating it as delivered');
175
+ const defaultChoice = currentMode === 'summarize'
176
+ ? '2'
177
+ : currentMode === 'approval-required'
178
+ ? '3'
179
+ : '1';
180
+ const answer = await rl.question(`\nChoose relay handling [${defaultChoice}]: `);
181
+ const trimmed = answer.trim().toLowerCase();
182
+ switch (trimmed) {
183
+ case '2':
184
+ case 'summarize':
185
+ return 'summarize';
186
+ case '3':
187
+ case 'approval':
188
+ case 'approval-required':
189
+ return 'approval-required';
190
+ case '':
191
+ return currentMode;
192
+ case '1':
193
+ case 'deliver':
194
+ default:
195
+ return 'deliver';
196
+ }
197
+ }
198
+ async function promptApprovalTopics(rl, currentTopics = []) {
199
+ const currentDisplay = currentTopics.join(', ');
200
+ const answer = await rl.question(`\nTopics that should always require approval before the agent acts or replies (comma-separated${currentDisplay ? `, blank to keep ${currentDisplay}` : ', blank for none'}): `);
201
+ if (!answer.trim()) {
202
+ return currentTopics;
203
+ }
204
+ return answer
205
+ .split(',')
206
+ .map(topic => topic.trim())
207
+ .filter(Boolean);
208
+ }
209
+ async function promptTrustedPeerAutonomy(rl, currentValue = true) {
210
+ return promptYesNo(rl, 'Should trusted peers be eligible for more autonomy than the default policy later?', currentValue);
211
+ }
212
+ export function buildDelegatedAuthorityConfig(options) {
213
+ const { inboundMode, humanSurfacingMode, relayHandlingMode, approvalTopics, trustedPeerAutonomy } = options;
214
+ const topicRules = approvalTopics.reduce((rules, topic) => {
215
+ rules[topic] = {
216
+ mode: 'approval-required',
217
+ relayMode: 'approval-required',
218
+ surfaceToHuman: 'always',
219
+ allowDirectPeerReply: false,
220
+ notes: 'Approval-required topic from setup interview.'
221
+ };
222
+ return rules;
223
+ }, {});
224
+ return {
225
+ global: {
226
+ defaultRule: {
227
+ mode: inboundMode,
228
+ relayMode: relayHandlingMode,
229
+ surfaceToHuman: humanSurfacingMode,
230
+ allowDirectPeerReply: inboundMode !== 'approval-required',
231
+ notes: trustedPeerAutonomy
232
+ ? 'Trusted peers may receive more autonomy through future per-peer overrides.'
233
+ : 'Trusted peers should not receive more autonomy than the default policy without an explicit future change.'
234
+ },
235
+ classRules: {
236
+ 'agent-work': {
237
+ mode: inboundMode,
238
+ surfaceToHuman: humanSurfacingMode,
239
+ allowDirectPeerReply: inboundMode !== 'approval-required'
240
+ },
241
+ 'human-relay': {
242
+ mode: inboundMode === 'approval-required' ? 'approval-required' : 'forward',
243
+ relayMode: relayHandlingMode,
244
+ surfaceToHuman: relayHandlingMode === 'deliver' ? 'always' : humanSurfacingMode,
245
+ allowDirectPeerReply: false
246
+ },
247
+ 'approval-request': {
248
+ mode: 'approval-required',
249
+ relayMode: 'approval-required',
250
+ surfaceToHuman: 'always',
251
+ allowDirectPeerReply: false
252
+ },
253
+ 'status-update': {
254
+ mode: 'summarize',
255
+ surfaceToHuman: humanSurfacingMode === 'never' ? 'never' : 'summary-only',
256
+ allowDirectPeerReply: false
257
+ }
258
+ },
259
+ ...(Object.keys(topicRules).length > 0 ? { topicRules } : {})
260
+ },
261
+ peers: {}
262
+ };
263
+ }
264
+ export function deriveDelegatedAuthorityInterviewAnswers(config) {
265
+ const inboundFederationMode = config.delegatedAuthority?.global.defaultRule.mode ??
266
+ config.inboundFederationPolicy?.mode ??
267
+ 'summarize';
268
+ const humanSurfacingMode = config.delegatedAuthority?.global.defaultRule.surfaceToHuman ??
269
+ getHumanSurfacingDefault(inboundFederationMode);
270
+ const relayHandlingMode = config.delegatedAuthority?.global.classRules?.['human-relay']?.relayMode ??
271
+ config.delegatedAuthority?.global.defaultRule.relayMode ??
272
+ getRelayHandlingDefault(inboundFederationMode);
273
+ const approvalTopics = Object.entries(config.delegatedAuthority?.global.topicRules ?? {})
274
+ .filter(([, rule]) => rule.mode === 'approval-required')
275
+ .map(([topic]) => topic)
276
+ .sort();
277
+ const notes = config.delegatedAuthority?.global.defaultRule.notes?.toLowerCase() ?? '';
278
+ const trustedPeerAutonomy = notes
279
+ ? !notes.includes('should not receive more autonomy')
280
+ : true;
281
+ return {
282
+ humanDeliveryTarget: config.humanDeliveryTarget,
283
+ inboundFederationMode,
284
+ humanSurfacingMode,
285
+ relayHandlingMode,
286
+ approvalTopics,
287
+ trustedPeerAutonomy
288
+ };
289
+ }
290
+ export function applyDelegatedAuthorityInterviewAnswers(config, answers) {
291
+ return {
292
+ ...config,
293
+ humanDeliveryTarget: answers.humanDeliveryTarget?.trim() || undefined,
294
+ delegatedAuthority: buildDelegatedAuthorityConfig({
295
+ inboundMode: answers.inboundFederationMode,
296
+ humanSurfacingMode: answers.humanSurfacingMode,
297
+ relayHandlingMode: answers.relayHandlingMode,
298
+ approvalTopics: answers.approvalTopics,
299
+ trustedPeerAutonomy: answers.trustedPeerAutonomy
300
+ }),
301
+ inboundFederationPolicy: {
302
+ mode: answers.inboundFederationMode
303
+ }
304
+ };
305
+ }
306
+ async function promptMultiSelect(rl, frameworks) {
307
+ console.log('\nAvailable frameworks:');
308
+ frameworks.forEach((fw, idx) => {
309
+ const status = fw.detected ? '(detected)' : '(not detected)';
310
+ console.log(` ${idx + 1}. ${fw.name} ${status}`);
311
+ });
312
+ const answer = await rl.question('\nSelect frameworks (comma-separated numbers or "all") [all detected]: ');
313
+ const trimmed = answer.trim().toLowerCase();
314
+ if (!trimmed || trimmed === 'all') {
315
+ // Select all detected frameworks
316
+ const detected = frameworks.filter(f => f.detected);
317
+ return detected.length > 0 ? detected : [frameworks[frameworks.length - 1]]; // Fallback to standalone
318
+ }
319
+ // Parse comma-separated numbers
320
+ const selected = [];
321
+ const parts = trimmed.split(',').map(s => s.trim());
322
+ for (const part of parts) {
323
+ const num = parseInt(part, 10);
324
+ if (!isNaN(num) && num >= 1 && num <= frameworks.length) {
325
+ selected.push(frameworks[num - 1]);
326
+ }
327
+ }
328
+ return selected.length > 0 ? selected : frameworks.filter(f => f.detected);
329
+ }
330
+ async function setupFramework(rl, framework, agents) {
331
+ console.log(`\n--- Setting up ${framework.name} ---`);
332
+ // Prompt for gateway URL
333
+ const gatewayUrl = await rl.question('Gateway URL (your public URL — run "ogp expose" first, or leave blank to set later): ');
334
+ // Prompt for display name
335
+ const displayName = await rl.question(`Display name [${framework.name} Gateway]: `);
336
+ // Prompt for email
81
337
  const email = await rl.question('Email: ');
82
- const stateDir = await rl.question('State directory [~/.ogp]: ');
83
- rl.close();
84
- const config = {
85
- daemonPort: parseInt(daemonPort) || 18790,
86
- openclawUrl: openclawUrl || 'http://localhost:18789',
87
- openclawToken,
88
- gatewayUrl,
89
- displayName,
90
- email,
91
- stateDir: stateDir || '~/.ogp',
92
- agentId
338
+ // Framework-specific configuration
339
+ let openclawUrl = '';
340
+ let openclawToken = '';
341
+ let hermesWebhookUrl = '';
342
+ let hermesWebhookSecret = '';
343
+ if (framework.id === 'openclaw') {
344
+ openclawUrl = await rl.question('OpenClaw URL [http://localhost:18789]: ');
345
+ openclawToken = await rl.question('OpenClaw API token: ');
346
+ }
347
+ else if (framework.id === 'hermes') {
348
+ const useDefaults = await promptYesNo(rl, 'Use default Hermes webhook settings?', true);
349
+ if (useDefaults) {
350
+ hermesWebhookUrl = DEFAULT_HERMES_WEBHOOK_URL;
351
+ hermesWebhookSecret = DEFAULT_HERMES_WEBHOOK_SECRET;
352
+ }
353
+ else {
354
+ hermesWebhookUrl = await rl.question('Hermes webhook URL: ');
355
+ hermesWebhookSecret = await rl.question('Hermes webhook secret: ');
356
+ }
357
+ }
358
+ // Prompt for agent ID
359
+ const agentId = await promptForAgentId(rl, agents);
360
+ let humanDeliveryTarget = '';
361
+ if (framework.id !== 'hermes') {
362
+ humanDeliveryTarget = await rl.question('Primary human delivery target for OGP followups (e.g. telegram:123456789, or leave blank to use notifyTarget/default): ');
363
+ }
364
+ else {
365
+ console.log(' Hermes uses webhook delivery for OGP followups; skipping human delivery target prompt.');
366
+ }
367
+ const inboundFederationMode = await promptInboundFederationMode(rl);
368
+ const humanSurfacingMode = await promptHumanSurfacingMode(rl, inboundFederationMode);
369
+ const relayHandlingMode = await promptRelayHandlingMode(rl, inboundFederationMode);
370
+ const approvalTopics = await promptApprovalTopics(rl);
371
+ const trustedPeerAutonomy = await promptTrustedPeerAutonomy(rl);
372
+ const delegatedAuthority = buildDelegatedAuthorityConfig({
373
+ inboundMode: inboundFederationMode,
374
+ humanSurfacingMode,
375
+ relayHandlingMode,
376
+ approvalTopics,
377
+ trustedPeerAutonomy
378
+ });
379
+ // Create framework configuration
380
+ const frameworkConfig = {
381
+ id: framework.id,
382
+ name: framework.name,
383
+ enabled: true,
384
+ configDir: framework.suggestedConfigDir,
385
+ daemonPort: framework.suggestedPort,
386
+ gatewayUrl: gatewayUrl.trim() || undefined,
387
+ displayName: displayName.trim() || `${framework.name} Gateway`,
388
+ platform: framework.id === 'standalone' ? undefined : framework.id,
389
+ };
390
+ // Save individual OGP config for this framework
391
+ const ogpConfig = {
392
+ daemonPort: framework.suggestedPort,
393
+ openclawUrl: openclawUrl.trim() || 'http://localhost:18789',
394
+ openclawToken: openclawToken.trim() || '',
395
+ gatewayUrl: gatewayUrl.trim() || '',
396
+ displayName: displayName.trim() || `${framework.name} Gateway`,
397
+ email: email.trim() || '',
398
+ stateDir: framework.suggestedConfigDir,
399
+ agentId,
400
+ humanDeliveryTarget: humanDeliveryTarget.trim() || undefined,
401
+ delegatedAuthority,
402
+ inboundFederationPolicy: {
403
+ mode: inboundFederationMode
404
+ },
405
+ platform: framework.id === 'standalone' ? undefined : framework.id,
406
+ hermesWebhookUrl: hermesWebhookUrl.trim() || undefined,
407
+ hermesWebhookSecret: hermesWebhookSecret.trim() || undefined,
93
408
  };
94
- saveConfig(config);
95
- console.log('\n✓ Configuration saved');
96
- // Generate keypair
97
- const keypair = loadOrGenerateKeyPair();
98
- console.log(`✓ Ed25519 keypair generated`);
99
- console.log(` Public key: ${keypair.publicKey.substring(0, 16)}...`);
100
- console.log(` Agent: ${agentId}`);
101
- console.log('\nSetup complete! Run "ogp start" to start the daemon.');
409
+ // Ensure config directory exists
410
+ const expandedConfigDir = framework.suggestedConfigDir.replace(/^~/, os.homedir());
411
+ if (!fs.existsSync(expandedConfigDir)) {
412
+ fs.mkdirSync(expandedConfigDir, { recursive: true });
413
+ }
414
+ // Save OGP config
415
+ const configPath = path.join(expandedConfigDir, 'config.json');
416
+ fs.writeFileSync(configPath, JSON.stringify(ogpConfig, null, 2), 'utf-8');
417
+ // Generate keypair for this framework
418
+ // We need to temporarily set OGP_HOME to this framework's config dir
419
+ const originalOgpHome = process.env.OGP_HOME;
420
+ process.env.OGP_HOME = expandedConfigDir;
421
+ try {
422
+ const keypair = loadOrGenerateKeyPair();
423
+ console.log(` ✓ Configuration saved to ${expandedConfigDir}`);
424
+ console.log(` ✓ Ed25519 keypair generated`);
425
+ console.log(` ✓ Public key: ${keypair.publicKey.substring(0, 16)}...`);
426
+ console.log(` ✓ Agent: ${agentId}`);
427
+ if (humanDeliveryTarget.trim()) {
428
+ console.log(` ✓ Human delivery target: ${humanDeliveryTarget.trim()}`);
429
+ }
430
+ console.log(` ✓ Inbound federation mode: ${inboundFederationMode}`);
431
+ console.log(` ✓ Human surfacing mode: ${humanSurfacingMode}`);
432
+ console.log(` ✓ Relay handling mode: ${relayHandlingMode}`);
433
+ if (approvalTopics.length > 0) {
434
+ console.log(` ✓ Approval-required topics: ${approvalTopics.join(', ')}`);
435
+ }
436
+ console.log(` ✓ Trusted peers may receive extra autonomy later: ${trustedPeerAutonomy ? 'yes' : 'no'}`);
437
+ }
438
+ finally {
439
+ // Restore original OGP_HOME
440
+ if (originalOgpHome) {
441
+ process.env.OGP_HOME = originalOgpHome;
442
+ }
443
+ else {
444
+ delete process.env.OGP_HOME;
445
+ }
446
+ }
447
+ return frameworkConfig;
448
+ }
449
+ export async function runSetup() {
450
+ console.log('=== OGP Multi-Framework Setup ===\n');
451
+ const rl = readline.createInterface({ input, output });
452
+ try {
453
+ // Step 1: Check for existing installations and migrate if needed
454
+ const migrationPlan = detectExistingInstallations();
455
+ if (migrationPlan.needed) {
456
+ console.log('Found existing OGP installation(s):');
457
+ migrationPlan.existingInstalls.forEach(install => {
458
+ console.log(` - ${install.path} (${install.framework})`);
459
+ });
460
+ console.log('\nMigration plan:');
461
+ migrationPlan.actions.forEach(action => {
462
+ console.log(` - ${action.description}`);
463
+ });
464
+ const shouldMigrate = await promptYesNo(rl, '\nMigrate to new multi-framework setup?', true);
465
+ if (shouldMigrate) {
466
+ console.log('\nExecuting migration...');
467
+ await executeMigration(migrationPlan);
468
+ console.log('\n✓ Migration complete!');
469
+ console.log('\nRun "ogp setup" again to configure additional frameworks if needed.');
470
+ rl.close();
471
+ return;
472
+ }
473
+ else {
474
+ console.log('\nSkipping migration. Proceeding with fresh setup...');
475
+ }
476
+ }
477
+ // Step 2: Detect available frameworks
478
+ const availableFrameworks = detectFrameworks();
479
+ // Step 3: Show framework selection
480
+ const selectedFrameworks = await promptMultiSelect(rl, availableFrameworks);
481
+ if (selectedFrameworks.length === 0) {
482
+ console.log('\nNo frameworks selected. Exiting setup.');
483
+ rl.close();
484
+ return;
485
+ }
486
+ console.log(`\nSelected frameworks: ${selectedFrameworks.map(f => f.name).join(', ')}`);
487
+ // Step 4: Load agents from OpenClaw config (if available)
488
+ const openclawConfig = loadOpenClawConfig();
489
+ const openclawAgents = openclawConfig ? getAgentsFromConfig(openclawConfig) : [];
490
+ // Step 5: Setup each selected framework
491
+ const metaConfig = loadMetaConfig();
492
+ for (const framework of selectedFrameworks) {
493
+ // Only OpenClaw currently supports agent auto-discovery from local config.
494
+ // Other frameworks should not inherit the OpenClaw agent list.
495
+ const frameworkAgents = framework.id === 'openclaw' ? openclawAgents : [];
496
+ const frameworkConfig = await setupFramework(rl, framework, frameworkAgents);
497
+ // Remove existing framework config if present
498
+ const existingIndex = metaConfig.frameworks.findIndex(f => f.id === framework.id);
499
+ if (existingIndex !== -1) {
500
+ metaConfig.frameworks.splice(existingIndex, 1);
501
+ }
502
+ metaConfig.frameworks.push(frameworkConfig);
503
+ }
504
+ // Step 6: Set default framework (first selected)
505
+ if (!metaConfig.default && metaConfig.frameworks.length > 0) {
506
+ metaConfig.default = selectedFrameworks[0].id;
507
+ }
508
+ // Step 7: Save meta config
509
+ saveMetaConfig(metaConfig);
510
+ console.log(`\n✓ Meta configuration saved`);
511
+ console.log(` Default framework: ${metaConfig.default}`);
512
+ // Step 8: Show success message with next steps
513
+ console.log('\n=== Setup Complete! ===');
514
+ console.log('\nNext steps:');
515
+ console.log(' 1. Start the daemon(s):');
516
+ metaConfig.frameworks.forEach(fw => {
517
+ if (fw.enabled) {
518
+ console.log(` ogp start --framework ${fw.id}`);
519
+ }
520
+ });
521
+ console.log(' 2. Expose your gateway (if needed):');
522
+ console.log(` ogp expose --framework ${metaConfig.default}`);
523
+ console.log(' 3. Start federating with peers:');
524
+ console.log(' ogp peers add <peer-gateway-url>');
525
+ rl.close();
526
+ }
527
+ catch (error) {
528
+ rl.close();
529
+ throw error;
530
+ }
531
+ }
532
+ export async function runAgentCommsInterview() {
533
+ const config = requireConfig();
534
+ const defaults = deriveDelegatedAuthorityInterviewAnswers(config);
535
+ console.log('=== OGP Agent-Comms Interview ===\n');
536
+ console.log('This updates delegated-authority and human-delivery behavior for the active framework.');
537
+ const rl = readline.createInterface({ input, output });
538
+ try {
539
+ let humanDeliveryTarget = defaults.humanDeliveryTarget ?? '';
540
+ if (config.platform !== 'hermes') {
541
+ const humanDeliveryPrompt = defaults.humanDeliveryTarget?.trim()
542
+ ? `Primary human delivery target for OGP followups [${defaults.humanDeliveryTarget.trim()}]: `
543
+ : 'Primary human delivery target for OGP followups (e.g. telegram:123456789, or leave blank to use notifyTarget/default): ';
544
+ const answer = await rl.question(humanDeliveryPrompt);
545
+ humanDeliveryTarget = answer.trim() || humanDeliveryTarget;
546
+ }
547
+ else {
548
+ console.log(' Hermes uses webhook delivery for OGP followups; skipping human delivery target prompt.');
549
+ }
550
+ const inboundFederationMode = await promptInboundFederationMode(rl, defaults.inboundFederationMode);
551
+ const humanSurfacingMode = await promptHumanSurfacingMode(rl, inboundFederationMode, defaults.humanSurfacingMode);
552
+ const relayHandlingMode = await promptRelayHandlingMode(rl, inboundFederationMode, defaults.relayHandlingMode);
553
+ const approvalTopics = await promptApprovalTopics(rl, defaults.approvalTopics);
554
+ const trustedPeerAutonomy = await promptTrustedPeerAutonomy(rl, defaults.trustedPeerAutonomy);
555
+ const updatedConfig = applyDelegatedAuthorityInterviewAnswers(config, {
556
+ humanDeliveryTarget,
557
+ inboundFederationMode,
558
+ humanSurfacingMode,
559
+ relayHandlingMode,
560
+ approvalTopics,
561
+ trustedPeerAutonomy
562
+ });
563
+ saveConfig(updatedConfig);
564
+ console.log('\n✓ Agent-comms interview saved');
565
+ if (updatedConfig.humanDeliveryTarget) {
566
+ console.log(` ✓ Human delivery target: ${updatedConfig.humanDeliveryTarget}`);
567
+ }
568
+ console.log(` ✓ Inbound federation mode: ${inboundFederationMode}`);
569
+ console.log(` ✓ Human surfacing mode: ${humanSurfacingMode}`);
570
+ console.log(` ✓ Relay handling mode: ${relayHandlingMode}`);
571
+ console.log(` ✓ Approval-required topics: ${approvalTopics.length > 0 ? approvalTopics.join(', ') : '(none)'}`);
572
+ console.log(` ✓ Trusted peers may receive extra autonomy later: ${trustedPeerAutonomy ? 'yes' : 'no'}`);
573
+ }
574
+ finally {
575
+ rl.close();
576
+ }
102
577
  }
103
578
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}