@generacy-ai/generacy 0.0.0-preview-20260304013206
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/LICENSE +191 -0
- package/README.md +207 -0
- package/bin/generacy.js +11 -0
- package/dist/agency/index.d.ts +68 -0
- package/dist/agency/index.d.ts.map +1 -0
- package/dist/agency/index.js +28 -0
- package/dist/agency/index.js.map +1 -0
- package/dist/agency/network.d.ts +41 -0
- package/dist/agency/network.d.ts.map +1 -0
- package/dist/agency/network.js +133 -0
- package/dist/agency/network.js.map +1 -0
- package/dist/agency/subprocess.d.ts +58 -0
- package/dist/agency/subprocess.d.ts.map +1 -0
- package/dist/agency/subprocess.js +216 -0
- package/dist/agency/subprocess.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +10 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +216 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/doctor/checks/agency-mcp.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/agency-mcp.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/agency-mcp.js +51 -0
- package/dist/cli/commands/doctor/checks/agency-mcp.js.map +1 -0
- package/dist/cli/commands/doctor/checks/anthropic-key.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/anthropic-key.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/anthropic-key.js +68 -0
- package/dist/cli/commands/doctor/checks/anthropic-key.js.map +1 -0
- package/dist/cli/commands/doctor/checks/config.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/config.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/config.js +81 -0
- package/dist/cli/commands/doctor/checks/config.js.map +1 -0
- package/dist/cli/commands/doctor/checks/devcontainer.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/devcontainer.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/devcontainer.js +58 -0
- package/dist/cli/commands/doctor/checks/devcontainer.js.map +1 -0
- package/dist/cli/commands/doctor/checks/docker.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/docker.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/docker.js +71 -0
- package/dist/cli/commands/doctor/checks/docker.js.map +1 -0
- package/dist/cli/commands/doctor/checks/env-file.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/env-file.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/env-file.js +56 -0
- package/dist/cli/commands/doctor/checks/env-file.js.map +1 -0
- package/dist/cli/commands/doctor/checks/github-token.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/github-token.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/github-token.js +99 -0
- package/dist/cli/commands/doctor/checks/github-token.js.map +1 -0
- package/dist/cli/commands/doctor/checks/npm-packages.d.ts +3 -0
- package/dist/cli/commands/doctor/checks/npm-packages.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/npm-packages.js +117 -0
- package/dist/cli/commands/doctor/checks/npm-packages.js.map +1 -0
- package/dist/cli/commands/doctor/formatter.d.ts +27 -0
- package/dist/cli/commands/doctor/formatter.d.ts.map +1 -0
- package/dist/cli/commands/doctor/formatter.js +162 -0
- package/dist/cli/commands/doctor/formatter.js.map +1 -0
- package/dist/cli/commands/doctor/index.d.ts +5 -0
- package/dist/cli/commands/doctor/index.d.ts.map +1 -0
- package/dist/cli/commands/doctor/index.js +8 -0
- package/dist/cli/commands/doctor/index.js.map +1 -0
- package/dist/cli/commands/doctor/registry.d.ts +48 -0
- package/dist/cli/commands/doctor/registry.d.ts.map +1 -0
- package/dist/cli/commands/doctor/registry.js +166 -0
- package/dist/cli/commands/doctor/registry.js.map +1 -0
- package/dist/cli/commands/doctor/runner.d.ts +14 -0
- package/dist/cli/commands/doctor/runner.d.ts.map +1 -0
- package/dist/cli/commands/doctor/runner.js +257 -0
- package/dist/cli/commands/doctor/runner.js.map +1 -0
- package/dist/cli/commands/doctor/types.d.ts +87 -0
- package/dist/cli/commands/doctor/types.d.ts.map +1 -0
- package/dist/cli/commands/doctor/types.js +2 -0
- package/dist/cli/commands/doctor/types.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +12 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +97 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init/conflicts.d.ts +36 -0
- package/dist/cli/commands/init/conflicts.d.ts.map +1 -0
- package/dist/cli/commands/init/conflicts.js +165 -0
- package/dist/cli/commands/init/conflicts.js.map +1 -0
- package/dist/cli/commands/init/github.d.ts +32 -0
- package/dist/cli/commands/init/github.d.ts.map +1 -0
- package/dist/cli/commands/init/github.js +161 -0
- package/dist/cli/commands/init/github.js.map +1 -0
- package/dist/cli/commands/init/index.d.ts +21 -0
- package/dist/cli/commands/init/index.d.ts.map +1 -0
- package/dist/cli/commands/init/index.js +175 -0
- package/dist/cli/commands/init/index.js.map +1 -0
- package/dist/cli/commands/init/prompts.d.ts +15 -0
- package/dist/cli/commands/init/prompts.d.ts.map +1 -0
- package/dist/cli/commands/init/prompts.js +281 -0
- package/dist/cli/commands/init/prompts.js.map +1 -0
- package/dist/cli/commands/init/repo-utils.d.ts +32 -0
- package/dist/cli/commands/init/repo-utils.d.ts.map +1 -0
- package/dist/cli/commands/init/repo-utils.js +112 -0
- package/dist/cli/commands/init/repo-utils.js.map +1 -0
- package/dist/cli/commands/init/resolver.d.ts +20 -0
- package/dist/cli/commands/init/resolver.d.ts.map +1 -0
- package/dist/cli/commands/init/resolver.js +273 -0
- package/dist/cli/commands/init/resolver.js.map +1 -0
- package/dist/cli/commands/init/summary.d.ts +21 -0
- package/dist/cli/commands/init/summary.d.ts.map +1 -0
- package/dist/cli/commands/init/summary.js +100 -0
- package/dist/cli/commands/init/summary.js.map +1 -0
- package/dist/cli/commands/init/types.d.ts +53 -0
- package/dist/cli/commands/init/types.d.ts.map +1 -0
- package/dist/cli/commands/init/types.js +2 -0
- package/dist/cli/commands/init/types.js.map +1 -0
- package/dist/cli/commands/init/writer.d.ts +22 -0
- package/dist/cli/commands/init/writer.d.ts.map +1 -0
- package/dist/cli/commands/init/writer.js +96 -0
- package/dist/cli/commands/init/writer.js.map +1 -0
- package/dist/cli/commands/orchestrator.d.ts +11 -0
- package/dist/cli/commands/orchestrator.d.ts.map +1 -0
- package/dist/cli/commands/orchestrator.js +291 -0
- package/dist/cli/commands/orchestrator.js.map +1 -0
- package/dist/cli/commands/run.d.ts +10 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +167 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup/auth.d.ts +11 -0
- package/dist/cli/commands/setup/auth.d.ts.map +1 -0
- package/dist/cli/commands/setup/auth.js +108 -0
- package/dist/cli/commands/setup/auth.js.map +1 -0
- package/dist/cli/commands/setup/build.d.ts +11 -0
- package/dist/cli/commands/setup/build.d.ts.map +1 -0
- package/dist/cli/commands/setup/build.js +212 -0
- package/dist/cli/commands/setup/build.js.map +1 -0
- package/dist/cli/commands/setup/services.d.ts +11 -0
- package/dist/cli/commands/setup/services.d.ts.map +1 -0
- package/dist/cli/commands/setup/services.js +294 -0
- package/dist/cli/commands/setup/services.js.map +1 -0
- package/dist/cli/commands/setup/workspace.d.ts +11 -0
- package/dist/cli/commands/setup/workspace.d.ts.map +1 -0
- package/dist/cli/commands/setup/workspace.js +215 -0
- package/dist/cli/commands/setup/workspace.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +7 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +19 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +10 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +164 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/worker.d.ts +10 -0
- package/dist/cli/commands/worker.d.ts.map +1 -0
- package/dist/cli/commands/worker.js +224 -0
- package/dist/cli/commands/worker.js.map +1 -0
- package/dist/cli/index.d.ts +14 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +68 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/config.d.ts +49 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +110 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/cli/utils/exec.d.ts +39 -0
- package/dist/cli/utils/exec.d.ts.map +1 -0
- package/dist/cli/utils/exec.js +68 -0
- package/dist/cli/utils/exec.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +47 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +97 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +13 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +104 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +266 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +304 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +160 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/validator.d.ts +60 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +112 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/health/server.d.ts +47 -0
- package/dist/health/server.d.ts.map +1 -0
- package/dist/health/server.js +92 -0
- package/dist/health/server.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/async-event-queue.d.ts +28 -0
- package/dist/orchestrator/async-event-queue.d.ts.map +1 -0
- package/dist/orchestrator/async-event-queue.js +57 -0
- package/dist/orchestrator/async-event-queue.js.map +1 -0
- package/dist/orchestrator/client.d.ts +110 -0
- package/dist/orchestrator/client.d.ts.map +1 -0
- package/dist/orchestrator/client.js +288 -0
- package/dist/orchestrator/client.js.map +1 -0
- package/dist/orchestrator/event-bus.d.ts +195 -0
- package/dist/orchestrator/event-bus.d.ts.map +1 -0
- package/dist/orchestrator/event-bus.js +557 -0
- package/dist/orchestrator/event-bus.js.map +1 -0
- package/dist/orchestrator/heartbeat.d.ts +71 -0
- package/dist/orchestrator/heartbeat.d.ts.map +1 -0
- package/dist/orchestrator/heartbeat.js +116 -0
- package/dist/orchestrator/heartbeat.js.map +1 -0
- package/dist/orchestrator/index.d.ts +25 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +15 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/job-handler.d.ts +109 -0
- package/dist/orchestrator/job-handler.d.ts.map +1 -0
- package/dist/orchestrator/job-handler.js +612 -0
- package/dist/orchestrator/job-handler.js.map +1 -0
- package/dist/orchestrator/job-queue.d.ts +81 -0
- package/dist/orchestrator/job-queue.d.ts.map +1 -0
- package/dist/orchestrator/job-queue.js +206 -0
- package/dist/orchestrator/job-queue.js.map +1 -0
- package/dist/orchestrator/label-monitor-bridge.d.ts +25 -0
- package/dist/orchestrator/label-monitor-bridge.d.ts.map +1 -0
- package/dist/orchestrator/label-monitor-bridge.js +57 -0
- package/dist/orchestrator/label-monitor-bridge.js.map +1 -0
- package/dist/orchestrator/log-buffer.d.ts +74 -0
- package/dist/orchestrator/log-buffer.d.ts.map +1 -0
- package/dist/orchestrator/log-buffer.js +104 -0
- package/dist/orchestrator/log-buffer.js.map +1 -0
- package/dist/orchestrator/redis-job-queue.d.ts +44 -0
- package/dist/orchestrator/redis-job-queue.d.ts.map +1 -0
- package/dist/orchestrator/redis-job-queue.js +300 -0
- package/dist/orchestrator/redis-job-queue.js.map +1 -0
- package/dist/orchestrator/router.d.ts +125 -0
- package/dist/orchestrator/router.d.ts.map +1 -0
- package/dist/orchestrator/router.js +143 -0
- package/dist/orchestrator/router.js.map +1 -0
- package/dist/orchestrator/server.d.ts +62 -0
- package/dist/orchestrator/server.d.ts.map +1 -0
- package/dist/orchestrator/server.js +711 -0
- package/dist/orchestrator/server.js.map +1 -0
- package/dist/orchestrator/types.d.ts +184 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +6 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/orchestrator/worker-registry.d.ts +110 -0
- package/dist/orchestrator/worker-registry.d.ts.map +1 -0
- package/dist/orchestrator/worker-registry.js +191 -0
- package/dist/orchestrator/worker-registry.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agency-mcp.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/agency-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,eAyD5B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export const agencyMcpCheck = {
|
|
2
|
+
id: 'agency-mcp',
|
|
3
|
+
label: 'Agency MCP',
|
|
4
|
+
category: 'services',
|
|
5
|
+
dependencies: [],
|
|
6
|
+
priority: 'P2',
|
|
7
|
+
async run() {
|
|
8
|
+
const agencyUrl = process.env['AGENCY_URL'];
|
|
9
|
+
if (!agencyUrl || agencyUrl.trim() === '') {
|
|
10
|
+
return {
|
|
11
|
+
status: 'skip',
|
|
12
|
+
message: 'Agency MCP check skipped — AGENCY_URL not set (only needed for network mode)',
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const healthUrl = `${agencyUrl.replace(/\/+$/, '')}/health`;
|
|
16
|
+
let response;
|
|
17
|
+
try {
|
|
18
|
+
response = await fetch(healthUrl, {
|
|
19
|
+
signal: AbortSignal.timeout(5_000),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof DOMException && error.name === 'TimeoutError') {
|
|
24
|
+
return {
|
|
25
|
+
status: 'fail',
|
|
26
|
+
message: 'Agency MCP server request timed out',
|
|
27
|
+
suggestion: `Verify the Agency MCP server is running at ${agencyUrl} and responsive.`,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
status: 'fail',
|
|
32
|
+
message: 'Failed to connect to Agency MCP server',
|
|
33
|
+
suggestion: `Check that the Agency MCP server is running at ${agencyUrl}. If using Docker, ensure the container is up.`,
|
|
34
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
return {
|
|
39
|
+
status: 'fail',
|
|
40
|
+
message: `Agency MCP server returned HTTP ${response.status}`,
|
|
41
|
+
suggestion: `The server at ${agencyUrl} is reachable but returned an error. Check server logs for details.`,
|
|
42
|
+
detail: await response.text().catch(() => ''),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
status: 'pass',
|
|
47
|
+
message: `Agency MCP server is reachable (${agencyUrl})`,
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=agency-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agency-mcp.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/agency-mcp.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,IAAI;IAEd,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE5C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1C,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EACL,8EAA8E;aACjF,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;QAE5D,IAAI,QAAkB,CAAC;QAEvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;gBAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnE,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,qCAAqC;oBAC9C,UAAU,EAAE,8CAA8C,SAAS,kBAAkB;iBACtF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,wCAAwC;gBACjD,UAAU,EAAE,kDAAkD,SAAS,gDAAgD;gBACvH,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mCAAmC,QAAQ,CAAC,MAAM,EAAE;gBAC7D,UAAU,EAAE,iBAAiB,SAAS,qEAAqE;gBAC3G,MAAM,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;aAC9C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mCAAmC,SAAS,GAAG;SACzD,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-key.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/anthropic-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAO,MAAM,iBAAiB,EAAE,eA8E/B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export const anthropicKeyCheck = {
|
|
2
|
+
id: 'anthropic-key',
|
|
3
|
+
label: 'Anthropic API Key',
|
|
4
|
+
category: 'credentials',
|
|
5
|
+
dependencies: ['env-file'],
|
|
6
|
+
priority: 'P1',
|
|
7
|
+
async run(context) {
|
|
8
|
+
if (!context.envVars) {
|
|
9
|
+
return {
|
|
10
|
+
status: 'skip',
|
|
11
|
+
message: 'Skipped — env vars not available',
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const apiKey = context.envVars.ANTHROPIC_API_KEY;
|
|
15
|
+
if (!apiKey || apiKey.trim() === '') {
|
|
16
|
+
return {
|
|
17
|
+
status: 'fail',
|
|
18
|
+
message: 'ANTHROPIC_API_KEY is not set',
|
|
19
|
+
suggestion: 'Add a valid Anthropic API key to `.generacy/generacy.env`. Get one at https://console.anthropic.com/settings/keys',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
let response;
|
|
23
|
+
try {
|
|
24
|
+
response = await fetch('https://api.anthropic.com/v1/models', {
|
|
25
|
+
headers: {
|
|
26
|
+
'x-api-key': apiKey,
|
|
27
|
+
'anthropic-version': '2023-06-01',
|
|
28
|
+
},
|
|
29
|
+
signal: AbortSignal.timeout(5_000),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (error instanceof DOMException && error.name === 'TimeoutError') {
|
|
34
|
+
return {
|
|
35
|
+
status: 'fail',
|
|
36
|
+
message: 'Anthropic API request timed out',
|
|
37
|
+
suggestion: 'Check your network connection or try again later.',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
status: 'fail',
|
|
42
|
+
message: 'Failed to connect to Anthropic API',
|
|
43
|
+
suggestion: 'Check your network connection. If behind a proxy, ensure HTTPS_PROXY is set.',
|
|
44
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (response.status === 401) {
|
|
48
|
+
return {
|
|
49
|
+
status: 'fail',
|
|
50
|
+
message: 'Anthropic API key is invalid',
|
|
51
|
+
suggestion: 'Generate a new API key at https://console.anthropic.com/settings/keys and update `.generacy/generacy.env`.',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
return {
|
|
56
|
+
status: 'fail',
|
|
57
|
+
message: `Anthropic API returned HTTP ${response.status}`,
|
|
58
|
+
suggestion: 'Verify your Anthropic API key is valid and try again.',
|
|
59
|
+
detail: await response.text().catch(() => ''),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
status: 'pass',
|
|
64
|
+
message: 'Anthropic API key is valid',
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=anthropic-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-key.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/anthropic-key.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,aAAa;IACvB,YAAY,EAAE,CAAC,UAAU,CAAC;IAC1B,QAAQ,EAAE,IAAI;IAEd,KAAK,CAAC,GAAG,CAAC,OAAO;QACf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,kCAAkC;aAC5C,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAEjD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,8BAA8B;gBACvC,UAAU,EACR,mHAAmH;aACtH,CAAC;QACJ,CAAC;QAED,IAAI,QAAkB,CAAC;QAEvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;gBAC5D,OAAO,EAAE;oBACP,WAAW,EAAE,MAAM;oBACnB,mBAAmB,EAAE,YAAY;iBAClC;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnE,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,iCAAiC;oBAC1C,UAAU,EACR,mDAAmD;iBACtD,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,oCAAoC;gBAC7C,UAAU,EACR,8EAA8E;gBAChF,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/D,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,8BAA8B;gBACvC,UAAU,EACR,4GAA4G;aAC/G,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,+BAA+B,QAAQ,CAAC,MAAM,EAAE;gBACzD,UAAU,EAAE,uDAAuD;gBACnE,MAAM,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;aAC9C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,4BAA4B;SACtC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/config.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAO,MAAM,WAAW,EAAE,eAyFzB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { dirname } from 'node:path';
|
|
2
|
+
import { findConfigFile, loadConfig, ConfigNotFoundError, ConfigParseError, ConfigSchemaError, ConfigValidationError, } from '../../../../config/index.js';
|
|
3
|
+
export const configCheck = {
|
|
4
|
+
id: 'config',
|
|
5
|
+
label: 'Config File',
|
|
6
|
+
category: 'config',
|
|
7
|
+
dependencies: [],
|
|
8
|
+
priority: 'P1',
|
|
9
|
+
async run() {
|
|
10
|
+
// Locate the config file
|
|
11
|
+
const configPath = findConfigFile();
|
|
12
|
+
if (!configPath) {
|
|
13
|
+
return {
|
|
14
|
+
status: 'fail',
|
|
15
|
+
message: 'Config file not found',
|
|
16
|
+
suggestion: 'Create .generacy/config.yaml in your project root, or run `generacy init` to generate one',
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// Load and validate the config
|
|
20
|
+
try {
|
|
21
|
+
const config = loadConfig({ configPath });
|
|
22
|
+
// .generacy/config.yaml → .generacy/ → project root
|
|
23
|
+
const projectRoot = dirname(dirname(configPath));
|
|
24
|
+
return {
|
|
25
|
+
status: 'pass',
|
|
26
|
+
message: `Config file is valid (${configPath})`,
|
|
27
|
+
detail: `Project: ${config.project.name} (${config.project.id})`,
|
|
28
|
+
data: {
|
|
29
|
+
configPath,
|
|
30
|
+
projectRoot,
|
|
31
|
+
config,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof ConfigNotFoundError) {
|
|
37
|
+
return {
|
|
38
|
+
status: 'fail',
|
|
39
|
+
message: 'Config file not found',
|
|
40
|
+
suggestion: 'Create .generacy/config.yaml in your project root, or run `generacy init` to generate one',
|
|
41
|
+
detail: error.message,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (error instanceof ConfigParseError) {
|
|
45
|
+
return {
|
|
46
|
+
status: 'fail',
|
|
47
|
+
message: `Config file has invalid YAML syntax (${configPath})`,
|
|
48
|
+
suggestion: 'Fix the YAML syntax errors in .generacy/config.yaml — check for incorrect indentation or missing colons',
|
|
49
|
+
detail: error.message,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (error instanceof ConfigSchemaError) {
|
|
53
|
+
const fieldErrors = error.errors.errors
|
|
54
|
+
.map((e) => {
|
|
55
|
+
const path = e.path.length > 0 ? e.path.join('.') : 'root';
|
|
56
|
+
return `${path}: ${e.message}`;
|
|
57
|
+
})
|
|
58
|
+
.join('; ');
|
|
59
|
+
return {
|
|
60
|
+
status: 'fail',
|
|
61
|
+
message: `Config file fails schema validation (${configPath})`,
|
|
62
|
+
suggestion: `Fix validation errors: ${fieldErrors}`,
|
|
63
|
+
detail: error.message,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (error instanceof ConfigValidationError) {
|
|
67
|
+
return {
|
|
68
|
+
status: 'fail',
|
|
69
|
+
message: `Config file has semantic errors (${configPath})`,
|
|
70
|
+
suggestion: error.message,
|
|
71
|
+
detail: error.conflictingRepos
|
|
72
|
+
? `Conflicting repos: ${error.conflictingRepos.join(', ')}`
|
|
73
|
+
: undefined,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// Unexpected error
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devcontainer.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/devcontainer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,eAAO,MAAM,iBAAiB,EAAE,eAiE/B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
const GENERACY_FEATURE_PREFIX = 'ghcr.io/generacy-ai/generacy/generacy';
|
|
4
|
+
export const devcontainerCheck = {
|
|
5
|
+
id: 'devcontainer',
|
|
6
|
+
label: 'Dev Container',
|
|
7
|
+
category: 'system',
|
|
8
|
+
dependencies: [],
|
|
9
|
+
priority: 'P2',
|
|
10
|
+
async run(context) {
|
|
11
|
+
// Resolve project root from context or fall back to CWD
|
|
12
|
+
const root = context.projectRoot ?? process.cwd();
|
|
13
|
+
const devcontainerPath = join(root, '.devcontainer', 'devcontainer.json');
|
|
14
|
+
if (!existsSync(devcontainerPath)) {
|
|
15
|
+
return {
|
|
16
|
+
status: 'fail',
|
|
17
|
+
message: '.devcontainer/devcontainer.json not found',
|
|
18
|
+
suggestion: 'Run `generacy init` to generate dev container configuration',
|
|
19
|
+
detail: `Expected at ${devcontainerPath}`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
// Read and parse JSON
|
|
23
|
+
let config;
|
|
24
|
+
try {
|
|
25
|
+
const raw = readFileSync(devcontainerPath, 'utf-8');
|
|
26
|
+
config = JSON.parse(raw);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const message = error instanceof Error ? error.message : 'Unknown parse error';
|
|
30
|
+
return {
|
|
31
|
+
status: 'fail',
|
|
32
|
+
message: 'Failed to parse devcontainer.json',
|
|
33
|
+
suggestion: 'Fix JSON syntax errors in .devcontainer/devcontainer.json',
|
|
34
|
+
detail: message,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Check for Generacy feature
|
|
38
|
+
const features = config.features;
|
|
39
|
+
if (features != null && typeof features === 'object') {
|
|
40
|
+
const featureKeys = Object.keys(features);
|
|
41
|
+
const hasGeneracyFeature = featureKeys.some((key) => key.startsWith(GENERACY_FEATURE_PREFIX));
|
|
42
|
+
if (hasGeneracyFeature) {
|
|
43
|
+
return {
|
|
44
|
+
status: 'pass',
|
|
45
|
+
message: '.devcontainer/devcontainer.json present with Generacy feature',
|
|
46
|
+
detail: `File: ${devcontainerPath}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
status: 'warn',
|
|
52
|
+
message: '.devcontainer/devcontainer.json exists but missing Generacy feature',
|
|
53
|
+
suggestion: `Add the Generacy dev container feature to .devcontainer/devcontainer.json: "features": { "${GENERACY_FEATURE_PREFIX}": {} }`,
|
|
54
|
+
detail: `File: ${devcontainerPath}`,
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=devcontainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/devcontainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,IAAI;IAEd,KAAK,CAAC,GAAG,CAAC,OAAO;QACf,wDAAwD;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;QAE1E,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,2CAA2C;gBACpD,UAAU,EACR,6DAA6D;gBAC/D,MAAM,EAAE,eAAe,gBAAgB,EAAE;aAC1C,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;YACjE,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mCAAmC;gBAC5C,UAAU,EACR,2DAA2D;gBAC7D,MAAM,EAAE,OAAO;aAChB,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAmC,CAAC,CAAC;YACrE,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAClD,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,CACxC,CAAC;YAEF,IAAI,kBAAkB,EAAE,CAAC;gBACvB,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EACL,+DAA+D;oBACjE,MAAM,EAAE,SAAS,gBAAgB,EAAE;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EACL,qEAAqE;YACvE,UAAU,EAAE,6FAA6F,uBAAuB,SAAS;YACzI,MAAM,EAAE,SAAS,gBAAgB,EAAE;SACpC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/docker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAanD,eAAO,MAAM,WAAW,EAAE,eAqEzB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { execSafe } from '../../../utils/exec.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract the Docker version string from `docker info` stdout.
|
|
4
|
+
*
|
|
5
|
+
* Looks for a line like "Server Version: 27.0.3" and returns the version,
|
|
6
|
+
* or `null` if not found.
|
|
7
|
+
*/
|
|
8
|
+
function parseDockerVersion(stdout) {
|
|
9
|
+
const match = /Server Version:\s*(.+)/i.exec(stdout);
|
|
10
|
+
return match?.[1]?.trim() ?? null;
|
|
11
|
+
}
|
|
12
|
+
export const dockerCheck = {
|
|
13
|
+
id: 'docker',
|
|
14
|
+
label: 'Docker',
|
|
15
|
+
category: 'system',
|
|
16
|
+
dependencies: [],
|
|
17
|
+
priority: 'P1',
|
|
18
|
+
async run() {
|
|
19
|
+
const result = execSafe('docker info');
|
|
20
|
+
if (!result.ok) {
|
|
21
|
+
const combined = `${result.stdout}\n${result.stderr}`.toLowerCase();
|
|
22
|
+
// Docker binary not found
|
|
23
|
+
if (combined.includes('not found') ||
|
|
24
|
+
combined.includes('is not recognized') ||
|
|
25
|
+
combined.includes('no such file')) {
|
|
26
|
+
return {
|
|
27
|
+
status: 'fail',
|
|
28
|
+
message: 'Docker is not installed',
|
|
29
|
+
suggestion: 'Install Docker Desktop from https://docker.com',
|
|
30
|
+
detail: result.stderr || result.stdout,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Daemon not running
|
|
34
|
+
if (combined.includes('cannot connect to the docker daemon')) {
|
|
35
|
+
return {
|
|
36
|
+
status: 'fail',
|
|
37
|
+
message: 'Docker daemon is not running',
|
|
38
|
+
suggestion: 'Start Docker Desktop',
|
|
39
|
+
detail: result.stderr || result.stdout,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Permission denied
|
|
43
|
+
if (combined.includes('permission denied')) {
|
|
44
|
+
return {
|
|
45
|
+
status: 'fail',
|
|
46
|
+
message: 'Insufficient permissions to access Docker',
|
|
47
|
+
suggestion: 'Add your user to the docker group: sudo usermod -aG docker $USER (then log out and back in)',
|
|
48
|
+
detail: result.stderr || result.stdout,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// Unknown failure
|
|
52
|
+
return {
|
|
53
|
+
status: 'fail',
|
|
54
|
+
message: 'Docker check failed',
|
|
55
|
+
suggestion: 'Run `docker info` manually to diagnose the issue',
|
|
56
|
+
detail: result.stderr || result.stdout,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// Success — extract version
|
|
60
|
+
const version = parseDockerVersion(result.stdout);
|
|
61
|
+
const message = version
|
|
62
|
+
? `Docker daemon is running (v${version})`
|
|
63
|
+
: 'Docker daemon is running';
|
|
64
|
+
return {
|
|
65
|
+
status: 'pass',
|
|
66
|
+
message,
|
|
67
|
+
detail: version ? `Server Version: ${version}` : undefined,
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,IAAI;IAEd,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEvC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;YAEpE,0BAA0B;YAC1B,IACE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC9B,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACtC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EACjC,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,yBAAyB;oBAClC,UAAU,EAAE,gDAAgD;oBAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;iBACvC,CAAC;YACJ,CAAC;YAED,qBAAqB;YACrB,IAAI,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;gBAC7D,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,8BAA8B;oBACvC,UAAU,EAAE,sBAAsB;oBAClC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;iBACvC,CAAC;YACJ,CAAC;YAED,oBAAoB;YACpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,2CAA2C;oBACpD,UAAU,EACR,6FAA6F;oBAC/F,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;iBACvC,CAAC;YACJ,CAAC;YAED,kBAAkB;YAClB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,qBAAqB;gBAC9B,UAAU,EAAE,kDAAkD;gBAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;aACvC,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,OAAO;YACrB,CAAC,CAAC,8BAA8B,OAAO,GAAG;YAC1C,CAAC,CAAC,0BAA0B,CAAC;QAE/B,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;SAC3D,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-file.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/env-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,eAAO,MAAM,YAAY,EAAE,eA+D1B,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { parse as parseDotenv } from 'dotenv';
|
|
4
|
+
const REQUIRED_KEYS = ['GITHUB_TOKEN', 'ANTHROPIC_API_KEY'];
|
|
5
|
+
export const envFileCheck = {
|
|
6
|
+
id: 'env-file',
|
|
7
|
+
label: 'Env File',
|
|
8
|
+
category: 'config',
|
|
9
|
+
dependencies: ['config'],
|
|
10
|
+
priority: 'P1',
|
|
11
|
+
async run(context) {
|
|
12
|
+
if (!context.configPath) {
|
|
13
|
+
return {
|
|
14
|
+
status: 'skip',
|
|
15
|
+
message: 'Skipped — config path not available',
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const envPath = join(dirname(context.configPath), 'generacy.env');
|
|
19
|
+
if (!existsSync(envPath)) {
|
|
20
|
+
return {
|
|
21
|
+
status: 'fail',
|
|
22
|
+
message: `Env file not found (${envPath})`,
|
|
23
|
+
suggestion: 'Run `generacy init` to generate the env file, or create `.generacy/generacy.env` manually with required keys: GITHUB_TOKEN, ANTHROPIC_API_KEY',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const raw = readFileSync(envPath, 'utf-8');
|
|
27
|
+
const envVars = parseDotenv(Buffer.from(raw));
|
|
28
|
+
const missingKeys = REQUIRED_KEYS.filter((key) => !(key in envVars));
|
|
29
|
+
if (missingKeys.length > 0) {
|
|
30
|
+
return {
|
|
31
|
+
status: 'fail',
|
|
32
|
+
message: `Env file is missing required keys: ${missingKeys.join(', ')}`,
|
|
33
|
+
suggestion: 'Run `generacy init` to generate the env file, or create `.generacy/generacy.env` manually with required keys: GITHUB_TOKEN, ANTHROPIC_API_KEY',
|
|
34
|
+
detail: `File: ${envPath}`,
|
|
35
|
+
data: { envVars },
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const emptyKeys = REQUIRED_KEYS.filter((key) => key in envVars && envVars[key].trim() === '');
|
|
39
|
+
if (emptyKeys.length > 0) {
|
|
40
|
+
return {
|
|
41
|
+
status: 'warn',
|
|
42
|
+
message: `Env file has empty values for: ${emptyKeys.join(', ')}`,
|
|
43
|
+
suggestion: `Set values for ${emptyKeys.join(', ')} in ${envPath}`,
|
|
44
|
+
detail: `File: ${envPath}`,
|
|
45
|
+
data: { envVars },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
status: 'pass',
|
|
50
|
+
message: `.generacy/generacy.env present with required keys`,
|
|
51
|
+
detail: `File: ${envPath}`,
|
|
52
|
+
data: { envVars },
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=env-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/env-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG9C,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,mBAAmB,CAAU,CAAC;AAErE,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,QAAQ,EAAE,IAAI;IAEd,KAAK,CAAC,GAAG,CAAC,OAAO;QACf,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,qCAAqC;aAC/C,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,uBAAuB,OAAO,GAAG;gBAC1C,UAAU,EACR,+IAA+I;aAClJ,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;QAErE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,sCAAsC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvE,UAAU,EACR,+IAA+I;gBACjJ,MAAM,EAAE,SAAS,OAAO,EAAE;gBAC1B,IAAI,EAAE,EAAE,OAAO,EAAE;aAClB,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CACvD,CAAC;QAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,kCAAkC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjE,UAAU,EAAE,kBAAkB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE;gBAClE,MAAM,EAAE,SAAS,OAAO,EAAE;gBAC1B,IAAI,EAAE,EAAE,OAAO,EAAE;aAClB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mDAAmD;YAC5D,MAAM,EAAE,SAAS,OAAO,EAAE;YAC1B,IAAI,EAAE,EAAE,OAAO,EAAE;SAClB,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-token.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/github-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,eAAO,MAAM,gBAAgB,EAAE,eAiH9B,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
const REQUIRED_SCOPES = ['repo', 'workflow'];
|
|
2
|
+
export const githubTokenCheck = {
|
|
3
|
+
id: 'github-token',
|
|
4
|
+
label: 'GitHub Token',
|
|
5
|
+
category: 'credentials',
|
|
6
|
+
dependencies: ['env-file'],
|
|
7
|
+
priority: 'P1',
|
|
8
|
+
async run(context) {
|
|
9
|
+
if (!context.envVars) {
|
|
10
|
+
return {
|
|
11
|
+
status: 'skip',
|
|
12
|
+
message: 'Skipped — env vars not available',
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const token = context.envVars.GITHUB_TOKEN;
|
|
16
|
+
if (!token || token.trim() === '') {
|
|
17
|
+
return {
|
|
18
|
+
status: 'fail',
|
|
19
|
+
message: 'GITHUB_TOKEN is not set',
|
|
20
|
+
suggestion: 'Add a valid GitHub personal access token to `.generacy/generacy.env`. Generate one at https://github.com/settings/tokens with `repo` and `workflow` scopes.',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
let response;
|
|
24
|
+
try {
|
|
25
|
+
response = await fetch('https://api.github.com/user', {
|
|
26
|
+
headers: {
|
|
27
|
+
Authorization: `Bearer ${token}`,
|
|
28
|
+
Accept: 'application/vnd.github+json',
|
|
29
|
+
'User-Agent': 'generacy-doctor',
|
|
30
|
+
},
|
|
31
|
+
signal: AbortSignal.timeout(5_000),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (error instanceof DOMException && error.name === 'TimeoutError') {
|
|
36
|
+
return {
|
|
37
|
+
status: 'fail',
|
|
38
|
+
message: 'GitHub API request timed out',
|
|
39
|
+
suggestion: 'Check your network connection or try again later.',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
status: 'fail',
|
|
44
|
+
message: 'Failed to connect to GitHub API',
|
|
45
|
+
suggestion: 'Check your network connection. If behind a proxy, ensure HTTPS_PROXY is set.',
|
|
46
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (response.status === 401) {
|
|
50
|
+
return {
|
|
51
|
+
status: 'fail',
|
|
52
|
+
message: 'GitHub token is invalid',
|
|
53
|
+
suggestion: 'Generate a new personal access token at https://github.com/settings/tokens with `repo` and `workflow` scopes, then update `.generacy/generacy.env`.',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (!response.ok) {
|
|
57
|
+
return {
|
|
58
|
+
status: 'fail',
|
|
59
|
+
message: `GitHub API returned HTTP ${response.status}`,
|
|
60
|
+
suggestion: 'Verify your GitHub token is valid and try again.',
|
|
61
|
+
detail: await response.text().catch(() => ''),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Check required scopes from X-OAuth-Scopes header
|
|
65
|
+
const scopesHeader = response.headers.get('x-oauth-scopes');
|
|
66
|
+
const grantedScopes = scopesHeader
|
|
67
|
+
? scopesHeader.split(',').map((s) => s.trim()).filter(Boolean)
|
|
68
|
+
: [];
|
|
69
|
+
const missingScopes = REQUIRED_SCOPES.filter((scope) => !grantedScopes.includes(scope));
|
|
70
|
+
// Fine-grained tokens don't return X-OAuth-Scopes — treat missing header as acceptable
|
|
71
|
+
if (scopesHeader !== null && missingScopes.length > 0) {
|
|
72
|
+
return {
|
|
73
|
+
status: 'warn',
|
|
74
|
+
message: `GitHub token is missing scopes: ${missingScopes.join(', ')}`,
|
|
75
|
+
suggestion: `Update your token at https://github.com/settings/tokens to include: ${missingScopes.join(', ')}`,
|
|
76
|
+
detail: `Granted scopes: ${grantedScopes.join(', ') || '(none)'}`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Extract username for display
|
|
80
|
+
let username = '';
|
|
81
|
+
try {
|
|
82
|
+
const body = (await response.json());
|
|
83
|
+
if (body.login) {
|
|
84
|
+
username = ` (${body.login})`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Non-critical — skip username display
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
status: 'pass',
|
|
92
|
+
message: `GitHub token is valid${username}`,
|
|
93
|
+
detail: scopesHeader !== null
|
|
94
|
+
? `Scopes: ${grantedScopes.join(', ') || '(none)'}`
|
|
95
|
+
: 'Fine-grained token (no classic scopes header)',
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=github-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-token.js","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/github-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-packages.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/doctor/checks/npm-packages.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAwCnD,eAAO,MAAM,gBAAgB,EAAE,eA0F9B,CAAC"}
|