@dp-pcs/ogp 0.3.3 → 0.4.3
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 +317 -61
- package/dist/cli/completion.d.ts +5 -0
- package/dist/cli/completion.d.ts.map +1 -0
- package/dist/cli/completion.js +148 -0
- package/dist/cli/completion.js.map +1 -0
- package/dist/cli/config.d.ts +3 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +207 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/expose.d.ts.map +1 -1
- package/dist/cli/expose.js +20 -13
- package/dist/cli/expose.js.map +1 -1
- package/dist/cli/federation.d.ts +14 -0
- package/dist/cli/federation.d.ts.map +1 -1
- package/dist/cli/federation.js +347 -23
- package/dist/cli/federation.js.map +1 -1
- package/dist/cli/project.d.ts +4 -3
- package/dist/cli/project.d.ts.map +1 -1
- package/dist/cli/project.js +34 -24
- package/dist/cli/project.js.map +1 -1
- package/dist/cli/setup.d.ts +23 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +560 -32
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli.js +358 -35
- package/dist/cli.js.map +1 -1
- package/dist/daemon/agent-comms.d.ts.map +1 -1
- package/dist/daemon/agent-comms.js +15 -10
- package/dist/daemon/agent-comms.js.map +1 -1
- package/dist/daemon/heartbeat.d.ts +22 -0
- package/dist/daemon/heartbeat.d.ts.map +1 -0
- package/dist/daemon/heartbeat.js +119 -0
- package/dist/daemon/heartbeat.js.map +1 -0
- package/dist/daemon/intent-registry.d.ts.map +1 -1
- package/dist/daemon/intent-registry.js +19 -10
- package/dist/daemon/intent-registry.js.map +1 -1
- package/dist/daemon/keypair.d.ts +1 -0
- package/dist/daemon/keypair.d.ts.map +1 -1
- package/dist/daemon/keypair.js +151 -18
- package/dist/daemon/keypair.js.map +1 -1
- package/dist/daemon/message-handler.d.ts.map +1 -1
- package/dist/daemon/message-handler.js +30 -16
- package/dist/daemon/message-handler.js.map +1 -1
- package/dist/daemon/notify.d.ts +19 -0
- package/dist/daemon/notify.d.ts.map +1 -1
- package/dist/daemon/notify.js +376 -73
- package/dist/daemon/notify.js.map +1 -1
- package/dist/daemon/openclaw-bridge.d.ts +34 -0
- package/dist/daemon/openclaw-bridge.d.ts.map +1 -0
- package/dist/daemon/openclaw-bridge.js +261 -0
- package/dist/daemon/openclaw-bridge.js.map +1 -0
- package/dist/daemon/peers.d.ts +21 -0
- package/dist/daemon/peers.d.ts.map +1 -1
- package/dist/daemon/peers.js +125 -20
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/projects.d.ts +9 -6
- package/dist/daemon/projects.d.ts.map +1 -1
- package/dist/daemon/projects.js +30 -20
- package/dist/daemon/projects.js.map +1 -1
- package/dist/daemon/server.d.ts +17 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +188 -77
- package/dist/daemon/server.js.map +1 -1
- package/dist/shared/config.d.ts +52 -1
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +18 -11
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/framework-detection.d.ts +31 -0
- package/dist/shared/framework-detection.d.ts.map +1 -0
- package/dist/shared/framework-detection.js +91 -0
- package/dist/shared/framework-detection.js.map +1 -0
- package/dist/shared/help.d.ts +5 -0
- package/dist/shared/help.d.ts.map +1 -0
- package/dist/shared/help.js +281 -0
- package/dist/shared/help.js.map +1 -0
- package/dist/shared/meta-config.d.ts +44 -0
- package/dist/shared/meta-config.d.ts.map +1 -0
- package/dist/shared/meta-config.js +89 -0
- package/dist/shared/meta-config.js.map +1 -0
- package/dist/shared/migration.d.ts +57 -0
- package/dist/shared/migration.d.ts.map +1 -0
- package/dist/shared/migration.js +255 -0
- package/dist/shared/migration.js.map +1 -0
- package/docs/CLI-REFERENCE.md +1361 -0
- package/docs/GETTING-STARTED.md +953 -0
- package/docs/MIGRATION.md +202 -0
- package/docs/MULTI-FRAMEWORK-DEMO.md +352 -0
- package/docs/MULTI-FRAMEWORK-DESIGN.md +378 -0
- package/docs/MULTI-FRAMEWORK-IMPL.md +197 -0
- package/docs/case-studies/CRASH_RESOLUTION_20260407.md +190 -0
- package/docs/case-studies/OpenClaw_Hermes_Status_Report_20260407.md +142 -0
- package/docs/case-studies/OpenClaw_Stability_Fix_Summary.md +209 -0
- package/docs/case-studies/README.md +40 -0
- package/docs/case-studies/crash_observations.md +250 -0
- package/docs/cloudflare-named-tunnel-setup.md +126 -0
- package/docs/federation-flow.md +27 -37
- package/docs/hermes-implementation-checklist.md +4 -0
- package/docs/project-intent-testing.md +97 -0
- package/docs/quickstart.md +12 -4
- package/docs/rendezvous.md +13 -14
- package/docs/scopes.md +13 -13
- package/package.json +12 -6
- package/scripts/completion.bash +123 -0
- package/scripts/completion.zsh +372 -0
- package/scripts/install-skills.js +19 -1
- package/scripts/test-migration-execute.js +74 -0
- package/scripts/test-migration.js +42 -0
- package/scripts/test-project-intents.mjs +614 -0
- package/skills/ogp/SKILL.md +197 -64
- package/skills/ogp-agent-comms/SKILL.md +107 -41
- package/skills/ogp-expose/SKILL.md +183 -25
- package/skills/ogp-project/SKILL.md +110 -88
package/dist/shared/config.js
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import os from 'node:os';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return CONFIG_FILE;
|
|
8
|
-
}
|
|
4
|
+
/**
|
|
5
|
+
* Get the config directory (computed dynamically based on OGP_HOME)
|
|
6
|
+
*/
|
|
9
7
|
export function getConfigDir() {
|
|
10
|
-
return
|
|
8
|
+
return process.env.OGP_HOME ?? path.join(os.homedir(), '.ogp');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get the config file path (computed dynamically based on OGP_HOME)
|
|
12
|
+
*/
|
|
13
|
+
export function getConfigPath() {
|
|
14
|
+
return path.join(getConfigDir(), 'config.json');
|
|
11
15
|
}
|
|
12
16
|
export function ensureConfigDir() {
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
const configDir = getConfigDir();
|
|
18
|
+
if (!fs.existsSync(configDir)) {
|
|
19
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
15
20
|
}
|
|
16
21
|
}
|
|
17
22
|
export function loadConfig() {
|
|
18
23
|
try {
|
|
19
|
-
|
|
24
|
+
const configFile = getConfigPath();
|
|
25
|
+
if (!fs.existsSync(configFile)) {
|
|
20
26
|
return null;
|
|
21
27
|
}
|
|
22
|
-
const data = fs.readFileSync(
|
|
28
|
+
const data = fs.readFileSync(configFile, 'utf-8');
|
|
23
29
|
return JSON.parse(data);
|
|
24
30
|
}
|
|
25
31
|
catch (error) {
|
|
@@ -29,7 +35,8 @@ export function loadConfig() {
|
|
|
29
35
|
}
|
|
30
36
|
export function saveConfig(config) {
|
|
31
37
|
ensureConfigDir();
|
|
32
|
-
|
|
38
|
+
const configFile = getConfigPath();
|
|
39
|
+
fs.writeFileSync(configFile, JSON.stringify(config, null, 2), 'utf-8');
|
|
33
40
|
}
|
|
34
41
|
export function requireConfig() {
|
|
35
42
|
const config = loadConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AA4IzB;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,eAAe,EAAE,CAAC;IAClB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detected framework information
|
|
3
|
+
*/
|
|
4
|
+
export interface DetectedFramework {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
detected: boolean;
|
|
8
|
+
suggestedConfigDir: string;
|
|
9
|
+
suggestedPort: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Detect installed AI frameworks
|
|
13
|
+
*
|
|
14
|
+
* @returns Array of detected frameworks with installation status and suggested configuration
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectFrameworks(): DetectedFramework[];
|
|
17
|
+
/**
|
|
18
|
+
* Get the first detected framework (preferred installation)
|
|
19
|
+
* Priority: OpenClaw > Hermes > Standalone
|
|
20
|
+
*
|
|
21
|
+
* @returns The first detected framework, or standalone if none detected
|
|
22
|
+
*/
|
|
23
|
+
export declare function getPreferredFramework(): DetectedFramework;
|
|
24
|
+
/**
|
|
25
|
+
* Get framework by ID
|
|
26
|
+
*
|
|
27
|
+
* @param id Framework ID ('openclaw', 'hermes', or 'standalone')
|
|
28
|
+
* @returns Framework details or null if not found
|
|
29
|
+
*/
|
|
30
|
+
export declare function getFrameworkById(id: string): DetectedFramework | null;
|
|
31
|
+
//# sourceMappingURL=framework-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-detection.d.ts","sourceRoot":"","sources":["../../src/shared/framework-detection.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAgCD;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,iBAAiB,EAAE,CA2BtD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAWzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAGrE"}
|
|
@@ -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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAalD;;;GAGG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACtE,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC;YAC5D,aAAa,EAAE,KAAK;SACrB;QACD;YACE,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,cAAc;YACxB,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC;YAC1D,aAAa,EAAE,KAAK;SACrB;QACD;YACE,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI,EAAE,+BAA+B;YAC/C,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;YACnD,aAAa,EAAE,KAAK;SACrB;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IAEtC,uEAAuE;IACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yBAAyB;IACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAE,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC"}
|
|
@@ -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,281 @@
|
|
|
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 setup --reset-keypair');
|
|
66
|
+
console.log(' ogp start');
|
|
67
|
+
console.log(' ogp --for hermes federation list');
|
|
68
|
+
console.log(' ogp federation ?');
|
|
69
|
+
console.log('');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Federation commands help
|
|
73
|
+
*/
|
|
74
|
+
function showFederationHelp() {
|
|
75
|
+
console.log('\nFederation commands:');
|
|
76
|
+
console.log(' list List all federated peers');
|
|
77
|
+
console.log(' status Show federation status and alias mappings');
|
|
78
|
+
console.log(' request Send federation request to a peer');
|
|
79
|
+
console.log(' connect Connect to a peer via optional rendezvous lookup');
|
|
80
|
+
console.log(' invite Generate optional invite token for a peer');
|
|
81
|
+
console.log(' accept Accept an optional rendezvous invite token');
|
|
82
|
+
console.log(' approve Approve a pending federation request');
|
|
83
|
+
console.log(' reject Reject a pending federation request');
|
|
84
|
+
console.log(' remove Remove a peer from federation list');
|
|
85
|
+
console.log(' alias Set a user-friendly alias for a peer');
|
|
86
|
+
console.log(' ping Test connectivity to a peer');
|
|
87
|
+
console.log(' send Send a message to a federated peer');
|
|
88
|
+
console.log(' agent Send an agent-comms message to a peer');
|
|
89
|
+
console.log(' scopes Show scope grants for a peer');
|
|
90
|
+
console.log(' grant Update scope grants for a peer');
|
|
91
|
+
console.log('');
|
|
92
|
+
console.log('Examples:');
|
|
93
|
+
console.log(' ogp federation list');
|
|
94
|
+
console.log(' ogp federation request https://peer.example.com --alias big-papa');
|
|
95
|
+
console.log(' ogp federation approve <peer-id> --intents message,agent-comms');
|
|
96
|
+
console.log(' ogp federation send ?');
|
|
97
|
+
console.log('');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Federation send command help with available peers
|
|
101
|
+
*/
|
|
102
|
+
function showFederationSendHelp() {
|
|
103
|
+
console.log('\nSend a message to a federated peer');
|
|
104
|
+
console.log('');
|
|
105
|
+
console.log('Usage:');
|
|
106
|
+
console.log(' ogp federation send <peer-id> <intent> <payload>');
|
|
107
|
+
console.log('');
|
|
108
|
+
console.log('Arguments:');
|
|
109
|
+
console.log(' peer-id Peer identifier (alias, ID, or public key)');
|
|
110
|
+
console.log(' intent Intent name (e.g., message, custom-intent)');
|
|
111
|
+
console.log(' payload JSON payload string');
|
|
112
|
+
console.log('');
|
|
113
|
+
// Show available peers
|
|
114
|
+
const peers = loadPeers();
|
|
115
|
+
const approvedPeers = peers.filter(p => p.status === 'approved');
|
|
116
|
+
if (approvedPeers.length > 0) {
|
|
117
|
+
console.log('Available peers:');
|
|
118
|
+
approvedPeers.forEach(peer => {
|
|
119
|
+
const identifier = peer.alias || peer.id;
|
|
120
|
+
const displayInfo = peer.alias ? `${peer.displayName} (${peer.id})` : peer.displayName;
|
|
121
|
+
console.log(` ${identifier.padEnd(20)} ${displayInfo}`);
|
|
122
|
+
});
|
|
123
|
+
console.log('');
|
|
124
|
+
}
|
|
125
|
+
console.log('Examples:');
|
|
126
|
+
console.log(' ogp federation send big-papa message \'{"text":"Hello"}\'');
|
|
127
|
+
console.log(' ogp federation send <peer-id> custom-intent \'{"data":"value"}\'');
|
|
128
|
+
console.log('');
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Federation agent command help with available peers
|
|
132
|
+
*/
|
|
133
|
+
function showFederationAgentHelp() {
|
|
134
|
+
console.log('\nSend an agent-comms message to a peer');
|
|
135
|
+
console.log('');
|
|
136
|
+
console.log('Usage:');
|
|
137
|
+
console.log(' ogp federation agent <peer-id> <topic> <message> [options]');
|
|
138
|
+
console.log('');
|
|
139
|
+
console.log('Arguments:');
|
|
140
|
+
console.log(' peer-id Peer identifier (alias, ID, or public key)');
|
|
141
|
+
console.log(' topic Topic for message routing (e.g., memory-management)');
|
|
142
|
+
console.log(' message Message text content');
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log('Options:');
|
|
145
|
+
console.log(' -p, --priority <level> Priority (low|normal|high), default: normal');
|
|
146
|
+
console.log(' -c, --conversation <id> Conversation ID for threading');
|
|
147
|
+
console.log(' -w, --wait Wait for reply');
|
|
148
|
+
console.log(' -t, --timeout <ms> Reply timeout in milliseconds, default: 30000');
|
|
149
|
+
console.log('');
|
|
150
|
+
// Show available peers
|
|
151
|
+
const peers = loadPeers();
|
|
152
|
+
const approvedPeers = peers.filter(p => p.status === 'approved');
|
|
153
|
+
if (approvedPeers.length > 0) {
|
|
154
|
+
console.log('Available peers:');
|
|
155
|
+
approvedPeers.forEach(peer => {
|
|
156
|
+
const identifier = peer.alias || peer.id;
|
|
157
|
+
const displayInfo = peer.alias ? `${peer.displayName} (${peer.id})` : peer.displayName;
|
|
158
|
+
const topics = peer.responsePolicy?.topics ? Object.keys(peer.responsePolicy.topics).join(', ') : '-';
|
|
159
|
+
console.log(` ${identifier.padEnd(20)} ${displayInfo}`);
|
|
160
|
+
if (topics !== '-') {
|
|
161
|
+
console.log(` Topics: ${topics}`);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
console.log('');
|
|
165
|
+
}
|
|
166
|
+
console.log('Examples:');
|
|
167
|
+
console.log(' ogp federation agent big-papa memory-management "Store this context"');
|
|
168
|
+
console.log(' ogp federation agent <peer-id> task-delegation "Create task X" -w');
|
|
169
|
+
console.log('');
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Agent-comms configuration help
|
|
173
|
+
*/
|
|
174
|
+
function showAgentCommsHelp() {
|
|
175
|
+
console.log('\nAgent-comms policy management:');
|
|
176
|
+
console.log(' interview Run the delegated-authority / human-delivery interview');
|
|
177
|
+
console.log(' policies Show response policies (global and per-peer)');
|
|
178
|
+
console.log(' configure Configure response policies for peers or globally');
|
|
179
|
+
console.log(' add-topic Add a topic to a peer\'s response policy');
|
|
180
|
+
console.log(' set-topic Set a topic policy for a peer (upsert)');
|
|
181
|
+
console.log(' set-default Set per-peer default level');
|
|
182
|
+
console.log(' remove-topic Remove a topic from a peer\'s response policy');
|
|
183
|
+
console.log(' reset Reset a peer\'s policy to global defaults');
|
|
184
|
+
console.log(' activity Show agent-comms activity log');
|
|
185
|
+
console.log(' default Set global default response level');
|
|
186
|
+
console.log(' logging Enable or disable activity logging');
|
|
187
|
+
console.log('');
|
|
188
|
+
console.log('Response levels:');
|
|
189
|
+
console.log(' full Provide full context and detailed responses');
|
|
190
|
+
console.log(' summary Provide summarized responses');
|
|
191
|
+
console.log(' escalate Escalate to human for approval');
|
|
192
|
+
console.log(' deny Deny the request');
|
|
193
|
+
console.log(' off No response (silent)');
|
|
194
|
+
console.log('');
|
|
195
|
+
console.log('Examples:');
|
|
196
|
+
console.log(' ogp agent-comms interview');
|
|
197
|
+
console.log(' ogp agent-comms policies');
|
|
198
|
+
console.log(' ogp agent-comms configure --global --level summary');
|
|
199
|
+
console.log(' ogp agent-comms set-topic <peer-id> memory-management full');
|
|
200
|
+
console.log(' ogp agent-comms activity --last 20');
|
|
201
|
+
console.log('');
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Config commands help
|
|
205
|
+
*/
|
|
206
|
+
function showConfigHelp() {
|
|
207
|
+
console.log('\nConfiguration management:');
|
|
208
|
+
console.log(' list List all configured frameworks');
|
|
209
|
+
console.log(' add Add a new framework');
|
|
210
|
+
console.log(' remove Remove a framework');
|
|
211
|
+
console.log(' enable Enable a framework');
|
|
212
|
+
console.log(' disable Disable a framework');
|
|
213
|
+
console.log(' set-default Set default framework');
|
|
214
|
+
console.log(' set-alias Set an alias for a framework');
|
|
215
|
+
console.log(' show Show configuration for a framework');
|
|
216
|
+
console.log('');
|
|
217
|
+
// Show current frameworks
|
|
218
|
+
try {
|
|
219
|
+
const metaConfig = loadMetaConfig();
|
|
220
|
+
if (metaConfig.frameworks && metaConfig.frameworks.length > 0) {
|
|
221
|
+
console.log('Configured frameworks:');
|
|
222
|
+
metaConfig.frameworks.forEach(f => {
|
|
223
|
+
const status = f.enabled ? '✓' : '✗';
|
|
224
|
+
const isDefault = metaConfig.default === f.id ? ' (default)' : '';
|
|
225
|
+
console.log(` ${status} ${f.id.padEnd(20)} ${f.name}${isDefault}`);
|
|
226
|
+
});
|
|
227
|
+
console.log('');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
// Ignore if meta config not found
|
|
232
|
+
}
|
|
233
|
+
console.log('Examples:');
|
|
234
|
+
console.log(' ogp config list');
|
|
235
|
+
console.log(' ogp config add my-framework "My Framework" ~/.ogp-my-framework');
|
|
236
|
+
console.log(' ogp config set-default my-framework');
|
|
237
|
+
console.log(' ogp config set-alias mf my-framework');
|
|
238
|
+
console.log('');
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Project commands help
|
|
242
|
+
*/
|
|
243
|
+
function showProjectHelp() {
|
|
244
|
+
console.log('\nProject collaboration commands:');
|
|
245
|
+
console.log(' create Create a new project locally');
|
|
246
|
+
console.log(' join Join an existing project');
|
|
247
|
+
console.log(' list List all local projects');
|
|
248
|
+
console.log(' remove Remove a local project');
|
|
249
|
+
console.log(' delete Delete a project and all contributions');
|
|
250
|
+
console.log(' contribute Add a contribution by entry type');
|
|
251
|
+
console.log(' query Query project contributions');
|
|
252
|
+
console.log(' status Show project status overview');
|
|
253
|
+
console.log('');
|
|
254
|
+
console.log('Federation commands:');
|
|
255
|
+
console.log(' request-join Request to join a peer\'s project');
|
|
256
|
+
console.log(' send-contribution Send a contribution to a peer');
|
|
257
|
+
console.log(' query-peer Query a peer\'s project contributions');
|
|
258
|
+
console.log(' status-peer Request project status from a peer');
|
|
259
|
+
console.log('');
|
|
260
|
+
console.log('Examples:');
|
|
261
|
+
console.log(' ogp project create my-project "My Project" --description "..."');
|
|
262
|
+
console.log(' ogp project contribute my-project task "Complete feature X"');
|
|
263
|
+
console.log(' ogp project query my-project --type decision --limit 10');
|
|
264
|
+
console.log('');
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Intent registry help
|
|
268
|
+
*/
|
|
269
|
+
function showIntentHelp() {
|
|
270
|
+
console.log('\nIntent registry management:');
|
|
271
|
+
console.log(' register Register a new intent handler');
|
|
272
|
+
console.log(' list List all registered intents');
|
|
273
|
+
console.log(' remove Remove a registered intent');
|
|
274
|
+
console.log('');
|
|
275
|
+
console.log('Examples:');
|
|
276
|
+
console.log(' ogp intent register my-intent --script ./handler.sh --description "..."');
|
|
277
|
+
console.log(' ogp intent list');
|
|
278
|
+
console.log(' ogp intent remove my-intent');
|
|
279
|
+
console.log('');
|
|
280
|
+
}
|
|
281
|
+
//# 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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"}
|