@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
@@ -0,0 +1,91 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ import { execFileSync } from 'node:child_process';
5
+ /**
6
+ * Check if a command exists in PATH
7
+ * Uses which/where command (safe, no shell injection risk)
8
+ */
9
+ function commandExists(command) {
10
+ try {
11
+ const whichCommand = process.platform === 'win32' ? 'where' : 'which';
12
+ execFileSync(whichCommand, [command], { stdio: 'ignore' });
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ /**
20
+ * Check if OpenClaw is installed
21
+ */
22
+ function isOpenClawInstalled() {
23
+ const openclawDir = path.join(os.homedir(), '.openclaw');
24
+ return fs.existsSync(openclawDir) || commandExists('openclaw');
25
+ }
26
+ /**
27
+ * Check if Hermes is installed
28
+ */
29
+ function isHermesInstalled() {
30
+ const hermesDir = path.join(os.homedir(), '.hermes');
31
+ return fs.existsSync(hermesDir) || commandExists('hermes');
32
+ }
33
+ /**
34
+ * Detect installed AI frameworks
35
+ *
36
+ * @returns Array of detected frameworks with installation status and suggested configuration
37
+ */
38
+ export function detectFrameworks() {
39
+ const openclawDetected = isOpenClawInstalled();
40
+ const hermesDetected = isHermesInstalled();
41
+ return [
42
+ {
43
+ id: 'openclaw',
44
+ name: 'OpenClaw',
45
+ detected: openclawDetected,
46
+ suggestedConfigDir: path.join(os.homedir(), '.ogp-openclaw'),
47
+ suggestedPort: 18790,
48
+ },
49
+ {
50
+ id: 'hermes',
51
+ name: 'Hermes',
52
+ detected: hermesDetected,
53
+ suggestedConfigDir: path.join(os.homedir(), '.ogp-hermes'),
54
+ suggestedPort: 18793,
55
+ },
56
+ {
57
+ id: 'standalone',
58
+ name: 'Standalone',
59
+ detected: true, // Always available as fallback
60
+ suggestedConfigDir: path.join(os.homedir(), '.ogp'),
61
+ suggestedPort: 18790,
62
+ },
63
+ ];
64
+ }
65
+ /**
66
+ * Get the first detected framework (preferred installation)
67
+ * Priority: OpenClaw > Hermes > Standalone
68
+ *
69
+ * @returns The first detected framework, or standalone if none detected
70
+ */
71
+ export function getPreferredFramework() {
72
+ const frameworks = detectFrameworks();
73
+ // Return first detected framework (OpenClaw has priority, then Hermes)
74
+ const detected = frameworks.find(f => f.id !== 'standalone' && f.detected);
75
+ if (detected) {
76
+ return detected;
77
+ }
78
+ // Fallback to standalone
79
+ return frameworks.find(f => f.id === 'standalone');
80
+ }
81
+ /**
82
+ * Get framework by ID
83
+ *
84
+ * @param id Framework ID ('openclaw', 'hermes', or 'standalone')
85
+ * @returns Framework details or null if not found
86
+ */
87
+ export function getFrameworkById(id) {
88
+ const frameworks = detectFrameworks();
89
+ return frameworks.find(f => f.id === id) || null;
90
+ }
91
+ //# sourceMappingURL=framework-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-detection.js","sourceRoot":"","sources":["../../src/shared/framework-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Show context-sensitive help based on command chain
3
+ */
4
+ export declare function showContextHelp(commandChain: string[]): void;
5
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/shared/help.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAwB5D"}
@@ -0,0 +1,280 @@
1
+ import { loadPeers } from '../daemon/peers.js';
2
+ import { loadMetaConfig } from './meta-config.js';
3
+ /**
4
+ * Show context-sensitive help based on command chain
5
+ */
6
+ export function showContextHelp(commandChain) {
7
+ const context = commandChain.join(' ').trim();
8
+ if (!context) {
9
+ showTopLevelHelp();
10
+ }
11
+ else if (context === 'federation') {
12
+ showFederationHelp();
13
+ }
14
+ else if (context.startsWith('federation send')) {
15
+ showFederationSendHelp();
16
+ }
17
+ else if (context.startsWith('federation agent')) {
18
+ showFederationAgentHelp();
19
+ }
20
+ else if (context === 'agent-comms') {
21
+ showAgentCommsHelp();
22
+ }
23
+ else if (context === 'config') {
24
+ showConfigHelp();
25
+ }
26
+ else if (context === 'project') {
27
+ showProjectHelp();
28
+ }
29
+ else if (context === 'intent') {
30
+ showIntentHelp();
31
+ }
32
+ else {
33
+ // Fallback to generic help
34
+ console.log(`No specific help available for: ${context}`);
35
+ console.log('Try: ogp --help or ogp <command> --help');
36
+ }
37
+ }
38
+ /**
39
+ * Top-level commands help
40
+ */
41
+ function showTopLevelHelp() {
42
+ console.log('\nAvailable commands:');
43
+ console.log(' setup Initialize OGP configuration');
44
+ console.log(' start Start OGP daemon');
45
+ console.log(' stop Stop OGP daemon');
46
+ console.log(' status Show daemon status');
47
+ console.log(' federation Manage federation with peers');
48
+ console.log(' agent-comms Configure agent-to-agent communication policies');
49
+ console.log(' project Manage project contexts for collaboration');
50
+ console.log(' intent Manage custom intent handlers');
51
+ console.log(' config Manage framework configuration');
52
+ console.log(' expose Expose daemon via tunnel (cloudflared/ngrok)');
53
+ console.log(' expose-stop Stop background tunnel');
54
+ console.log(' shutdown Stop both daemon and tunnel');
55
+ console.log(' install Install LaunchAgent (macOS)');
56
+ console.log(' uninstall Uninstall LaunchAgent (macOS)');
57
+ console.log('');
58
+ console.log('Global options:');
59
+ console.log(' --for <framework> Select framework to use');
60
+ console.log(' --help Show help');
61
+ console.log(' --version Show version');
62
+ console.log('');
63
+ console.log('Examples:');
64
+ console.log(' ogp setup');
65
+ console.log(' ogp start');
66
+ console.log(' ogp --for hermes federation list');
67
+ console.log(' ogp federation ?');
68
+ console.log('');
69
+ }
70
+ /**
71
+ * Federation commands help
72
+ */
73
+ function showFederationHelp() {
74
+ console.log('\nFederation commands:');
75
+ console.log(' list List all federated peers');
76
+ console.log(' status Show federation status and alias mappings');
77
+ console.log(' request Send federation request to a peer');
78
+ console.log(' connect Connect to a peer via optional rendezvous lookup');
79
+ console.log(' invite Generate optional invite token for a peer');
80
+ console.log(' accept Accept an optional rendezvous invite token');
81
+ console.log(' approve Approve a pending federation request');
82
+ console.log(' reject Reject a pending federation request');
83
+ console.log(' remove Remove a peer from federation list');
84
+ console.log(' alias Set a user-friendly alias for a peer');
85
+ console.log(' ping Test connectivity to a peer');
86
+ console.log(' send Send a message to a federated peer');
87
+ console.log(' agent Send an agent-comms message to a peer');
88
+ console.log(' scopes Show scope grants for a peer');
89
+ console.log(' grant Update scope grants for a peer');
90
+ console.log('');
91
+ console.log('Examples:');
92
+ console.log(' ogp federation list');
93
+ console.log(' ogp federation request https://peer.example.com --alias big-papa');
94
+ console.log(' ogp federation approve <peer-id> --intents message,agent-comms');
95
+ console.log(' ogp federation send ?');
96
+ console.log('');
97
+ }
98
+ /**
99
+ * Federation send command help with available peers
100
+ */
101
+ function showFederationSendHelp() {
102
+ console.log('\nSend a message to a federated peer');
103
+ console.log('');
104
+ console.log('Usage:');
105
+ console.log(' ogp federation send <peer-id> <intent> <payload>');
106
+ console.log('');
107
+ console.log('Arguments:');
108
+ console.log(' peer-id Peer identifier (alias, ID, or public key)');
109
+ console.log(' intent Intent name (e.g., message, custom-intent)');
110
+ console.log(' payload JSON payload string');
111
+ console.log('');
112
+ // Show available peers
113
+ const peers = loadPeers();
114
+ const approvedPeers = peers.filter(p => p.status === 'approved');
115
+ if (approvedPeers.length > 0) {
116
+ console.log('Available peers:');
117
+ approvedPeers.forEach(peer => {
118
+ const identifier = peer.alias || peer.id;
119
+ const displayInfo = peer.alias ? `${peer.displayName} (${peer.id})` : peer.displayName;
120
+ console.log(` ${identifier.padEnd(20)} ${displayInfo}`);
121
+ });
122
+ console.log('');
123
+ }
124
+ console.log('Examples:');
125
+ console.log(' ogp federation send big-papa message \'{"text":"Hello"}\'');
126
+ console.log(' ogp federation send <peer-id> custom-intent \'{"data":"value"}\'');
127
+ console.log('');
128
+ }
129
+ /**
130
+ * Federation agent command help with available peers
131
+ */
132
+ function showFederationAgentHelp() {
133
+ console.log('\nSend an agent-comms message to a peer');
134
+ console.log('');
135
+ console.log('Usage:');
136
+ console.log(' ogp federation agent <peer-id> <topic> <message> [options]');
137
+ console.log('');
138
+ console.log('Arguments:');
139
+ console.log(' peer-id Peer identifier (alias, ID, or public key)');
140
+ console.log(' topic Topic for message routing (e.g., memory-management)');
141
+ console.log(' message Message text content');
142
+ console.log('');
143
+ console.log('Options:');
144
+ console.log(' -p, --priority <level> Priority (low|normal|high), default: normal');
145
+ console.log(' -c, --conversation <id> Conversation ID for threading');
146
+ console.log(' -w, --wait Wait for reply');
147
+ console.log(' -t, --timeout <ms> Reply timeout in milliseconds, default: 30000');
148
+ console.log('');
149
+ // Show available peers
150
+ const peers = loadPeers();
151
+ const approvedPeers = peers.filter(p => p.status === 'approved');
152
+ if (approvedPeers.length > 0) {
153
+ console.log('Available peers:');
154
+ approvedPeers.forEach(peer => {
155
+ const identifier = peer.alias || peer.id;
156
+ const displayInfo = peer.alias ? `${peer.displayName} (${peer.id})` : peer.displayName;
157
+ const topics = peer.responsePolicy?.topics ? Object.keys(peer.responsePolicy.topics).join(', ') : '-';
158
+ console.log(` ${identifier.padEnd(20)} ${displayInfo}`);
159
+ if (topics !== '-') {
160
+ console.log(` Topics: ${topics}`);
161
+ }
162
+ });
163
+ console.log('');
164
+ }
165
+ console.log('Examples:');
166
+ console.log(' ogp federation agent big-papa memory-management "Store this context"');
167
+ console.log(' ogp federation agent <peer-id> task-delegation "Create task X" -w');
168
+ console.log('');
169
+ }
170
+ /**
171
+ * Agent-comms configuration help
172
+ */
173
+ function showAgentCommsHelp() {
174
+ console.log('\nAgent-comms policy management:');
175
+ console.log(' interview Run the delegated-authority / human-delivery interview');
176
+ console.log(' policies Show response policies (global and per-peer)');
177
+ console.log(' configure Configure response policies for peers or globally');
178
+ console.log(' add-topic Add a topic to a peer\'s response policy');
179
+ console.log(' set-topic Set a topic policy for a peer (upsert)');
180
+ console.log(' set-default Set per-peer default level');
181
+ console.log(' remove-topic Remove a topic from a peer\'s response policy');
182
+ console.log(' reset Reset a peer\'s policy to global defaults');
183
+ console.log(' activity Show agent-comms activity log');
184
+ console.log(' default Set global default response level');
185
+ console.log(' logging Enable or disable activity logging');
186
+ console.log('');
187
+ console.log('Response levels:');
188
+ console.log(' full Provide full context and detailed responses');
189
+ console.log(' summary Provide summarized responses');
190
+ console.log(' escalate Escalate to human for approval');
191
+ console.log(' deny Deny the request');
192
+ console.log(' off No response (silent)');
193
+ console.log('');
194
+ console.log('Examples:');
195
+ console.log(' ogp agent-comms interview');
196
+ console.log(' ogp agent-comms policies');
197
+ console.log(' ogp agent-comms configure --global --level summary');
198
+ console.log(' ogp agent-comms set-topic <peer-id> memory-management full');
199
+ console.log(' ogp agent-comms activity --last 20');
200
+ console.log('');
201
+ }
202
+ /**
203
+ * Config commands help
204
+ */
205
+ function showConfigHelp() {
206
+ console.log('\nConfiguration management:');
207
+ console.log(' list List all configured frameworks');
208
+ console.log(' add Add a new framework');
209
+ console.log(' remove Remove a framework');
210
+ console.log(' enable Enable a framework');
211
+ console.log(' disable Disable a framework');
212
+ console.log(' set-default Set default framework');
213
+ console.log(' set-alias Set an alias for a framework');
214
+ console.log(' show Show configuration for a framework');
215
+ console.log('');
216
+ // Show current frameworks
217
+ try {
218
+ const metaConfig = loadMetaConfig();
219
+ if (metaConfig.frameworks && metaConfig.frameworks.length > 0) {
220
+ console.log('Configured frameworks:');
221
+ metaConfig.frameworks.forEach(f => {
222
+ const status = f.enabled ? '✓' : '✗';
223
+ const isDefault = metaConfig.default === f.id ? ' (default)' : '';
224
+ console.log(` ${status} ${f.id.padEnd(20)} ${f.name}${isDefault}`);
225
+ });
226
+ console.log('');
227
+ }
228
+ }
229
+ catch (err) {
230
+ // Ignore if meta config not found
231
+ }
232
+ console.log('Examples:');
233
+ console.log(' ogp config list');
234
+ console.log(' ogp config add my-framework "My Framework" ~/.ogp-my-framework');
235
+ console.log(' ogp config set-default my-framework');
236
+ console.log(' ogp config set-alias mf my-framework');
237
+ console.log('');
238
+ }
239
+ /**
240
+ * Project commands help
241
+ */
242
+ function showProjectHelp() {
243
+ console.log('\nProject collaboration commands:');
244
+ console.log(' create Create a new project locally');
245
+ console.log(' join Join an existing project');
246
+ console.log(' list List all local projects');
247
+ console.log(' remove Remove a local project');
248
+ console.log(' delete Delete a project and all contributions');
249
+ console.log(' contribute Add a contribution to a project');
250
+ console.log(' query Query project contributions');
251
+ console.log(' status Show project status overview');
252
+ console.log('');
253
+ console.log('Federation commands:');
254
+ console.log(' request-join Request to join a peer\'s project');
255
+ console.log(' send-contribution Send a contribution to a peer');
256
+ console.log(' query-peer Query a peer\'s project contributions');
257
+ console.log(' status-peer Request project status from a peer');
258
+ console.log('');
259
+ console.log('Examples:');
260
+ console.log(' ogp project create my-project "My Project" --description "..."');
261
+ console.log(' ogp project contribute my-project task "Complete feature X"');
262
+ console.log(' ogp project query my-project --type decision --limit 10');
263
+ console.log('');
264
+ }
265
+ /**
266
+ * Intent registry help
267
+ */
268
+ function showIntentHelp() {
269
+ console.log('\nIntent registry management:');
270
+ console.log(' register Register a new intent handler');
271
+ console.log(' list List all registered intents');
272
+ console.log(' remove Remove a registered intent');
273
+ console.log('');
274
+ console.log('Examples:');
275
+ console.log(' ogp intent register my-intent --script ./handler.sh --description "..."');
276
+ console.log(' ogp intent list');
277
+ console.log(' ogp intent remove my-intent');
278
+ console.log('');
279
+ }
280
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/shared/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Framework configuration entry
3
+ */
4
+ export interface Framework {
5
+ id: string;
6
+ name: string;
7
+ enabled: boolean;
8
+ configDir: string;
9
+ daemonPort: number;
10
+ gatewayUrl?: string;
11
+ displayName?: string;
12
+ platform?: string;
13
+ }
14
+ /**
15
+ * Meta configuration for managing multiple OGP framework installations
16
+ */
17
+ export interface MetaConfig {
18
+ version: string;
19
+ frameworks: Framework[];
20
+ default?: string;
21
+ aliases?: Record<string, string>;
22
+ }
23
+ /**
24
+ * Get the path to the meta config file
25
+ */
26
+ export declare function getMetaConfigPath(): string;
27
+ /**
28
+ * Get the meta config directory path
29
+ */
30
+ export declare function getMetaConfigDir(): string;
31
+ /**
32
+ * Ensure the meta config directory exists
33
+ */
34
+ export declare function ensureMetaConfigDir(): void;
35
+ /**
36
+ * Load the meta configuration
37
+ * Returns sensible defaults if the file doesn't exist
38
+ */
39
+ export declare function loadMetaConfig(): MetaConfig;
40
+ /**
41
+ * Save the meta configuration
42
+ */
43
+ export declare function saveMetaConfig(config: MetaConfig): void;
44
+ //# sourceMappingURL=meta-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-config.d.ts","sourceRoot":"","sources":["../../src/shared/meta-config.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAKD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,CA+C3C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAYvD"}
@@ -0,0 +1,89 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ const DEFAULT_META_CONFIG_DIR = path.join(os.homedir(), '.ogp-meta');
5
+ const META_CONFIG_FILE = path.join(DEFAULT_META_CONFIG_DIR, 'config.json');
6
+ /**
7
+ * Get the path to the meta config file
8
+ */
9
+ export function getMetaConfigPath() {
10
+ return META_CONFIG_FILE;
11
+ }
12
+ /**
13
+ * Get the meta config directory path
14
+ */
15
+ export function getMetaConfigDir() {
16
+ return DEFAULT_META_CONFIG_DIR;
17
+ }
18
+ /**
19
+ * Ensure the meta config directory exists
20
+ */
21
+ export function ensureMetaConfigDir() {
22
+ if (!fs.existsSync(DEFAULT_META_CONFIG_DIR)) {
23
+ fs.mkdirSync(DEFAULT_META_CONFIG_DIR, { recursive: true });
24
+ }
25
+ }
26
+ /**
27
+ * Load the meta configuration
28
+ * Returns sensible defaults if the file doesn't exist
29
+ */
30
+ export function loadMetaConfig() {
31
+ try {
32
+ if (!fs.existsSync(META_CONFIG_FILE)) {
33
+ // Return default configuration
34
+ return {
35
+ version: '1.0.0',
36
+ frameworks: [],
37
+ };
38
+ }
39
+ const data = fs.readFileSync(META_CONFIG_FILE, 'utf-8');
40
+ const config = JSON.parse(data);
41
+ // Validate schema
42
+ if (!config.version) {
43
+ throw new Error('Meta config missing required field: version');
44
+ }
45
+ if (!Array.isArray(config.frameworks)) {
46
+ throw new Error('Meta config missing or invalid field: frameworks');
47
+ }
48
+ // Validate each framework
49
+ for (const framework of config.frameworks) {
50
+ if (!framework.id || typeof framework.id !== 'string') {
51
+ throw new Error('Framework missing required field: id');
52
+ }
53
+ if (!framework.name || typeof framework.name !== 'string') {
54
+ throw new Error(`Framework ${framework.id} missing required field: name`);
55
+ }
56
+ if (typeof framework.enabled !== 'boolean') {
57
+ throw new Error(`Framework ${framework.id} missing required field: enabled`);
58
+ }
59
+ if (!framework.configDir || typeof framework.configDir !== 'string') {
60
+ throw new Error(`Framework ${framework.id} missing required field: configDir`);
61
+ }
62
+ if (typeof framework.daemonPort !== 'number') {
63
+ throw new Error(`Framework ${framework.id} missing required field: daemonPort`);
64
+ }
65
+ }
66
+ return config;
67
+ }
68
+ catch (error) {
69
+ if (error instanceof SyntaxError) {
70
+ throw new Error(`Failed to parse meta config: ${error.message}`);
71
+ }
72
+ throw error;
73
+ }
74
+ }
75
+ /**
76
+ * Save the meta configuration
77
+ */
78
+ export function saveMetaConfig(config) {
79
+ ensureMetaConfigDir();
80
+ // Validate before saving
81
+ if (!config.version) {
82
+ throw new Error('Cannot save meta config: missing version');
83
+ }
84
+ if (!Array.isArray(config.frameworks)) {
85
+ throw new Error('Cannot save meta config: frameworks must be an array');
86
+ }
87
+ fs.writeFileSync(META_CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');
88
+ }
89
+ //# sourceMappingURL=meta-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-config.js","sourceRoot":"","sources":["../../src/shared/meta-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { OGPConfig } from './config.js';
2
+ /**
3
+ * Type of framework installation
4
+ */
5
+ export type FrameworkType = 'openclaw' | 'hermes' | 'standalone';
6
+ /**
7
+ * Existing installation detected
8
+ */
9
+ export interface ExistingInstallation {
10
+ path: string;
11
+ framework: FrameworkType;
12
+ config: OGPConfig;
13
+ }
14
+ /**
15
+ * Migration action types
16
+ */
17
+ export type MigrationActionType = 'rename' | 'create-meta' | 'register';
18
+ /**
19
+ * Individual migration action
20
+ */
21
+ export interface MigrationAction {
22
+ type: MigrationActionType;
23
+ from?: string;
24
+ to?: string;
25
+ framework?: FrameworkType;
26
+ description: string;
27
+ }
28
+ /**
29
+ * Complete migration plan
30
+ */
31
+ export interface MigrationPlan {
32
+ needed: boolean;
33
+ existingInstalls: ExistingInstallation[];
34
+ actions: MigrationAction[];
35
+ }
36
+ /**
37
+ * Detect all existing OGP installations
38
+ * Returns a migration plan describing what needs to be done
39
+ */
40
+ export declare function detectExistingInstallations(): MigrationPlan;
41
+ /**
42
+ * Execute the migration plan
43
+ * This will:
44
+ * - Rename directories as needed
45
+ * - Create the meta config
46
+ * - Register all frameworks
47
+ */
48
+ export declare function executeMigration(plan: MigrationPlan): Promise<void>;
49
+ /**
50
+ * Check if migration is needed and return a summary
51
+ */
52
+ export declare function checkMigrationStatus(): {
53
+ migrationNeeded: boolean;
54
+ summary: string;
55
+ plan?: MigrationPlan;
56
+ };
57
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/shared/migration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzC,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAsDD;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,aAAa,CA2F3D;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGzE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI;IACtC,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAoBA"}