[**@s4ai/core Documentation v0.3.23**](../../README.md)

***

[@s4ai/core Documentation](../../modules.md) / [services](../README.md) / github

# Class: github

Defined in: services/github-service.js:10

## Constructors

### Constructor

> **new github**(): `GitHubService`

Defined in: services/github-service.js:11

#### Returns

`GitHubService`

## Properties

### initialized

> **initialized**: `boolean`

Defined in: services/github-service.js:13

***

### octokit

> **octokit**: `Octokit` & `RestEndpointMethods` & `Api` & `object` \| `null`

Defined in: services/github-service.js:12

***

### rateLimitRemaining

> **rateLimitRemaining**: `number`

Defined in: services/github-service.js:14

***

### rateLimitReset

> **rateLimitReset**: `Date` \| `null`

Defined in: services/github-service.js:15

## Methods

### ensureInitialized()

> **ensureInitialized**(): `Promise`\<`boolean`\>

Defined in: services/github-service.js:61

Ensure service is initialized before use

#### Returns

`Promise`\<`boolean`\>

***

### getFileContent()

> **getFileContent**(`owner`, `repo`, `path`, `ref?`): `Promise`\<\{ `content`: `any`; `error?`: `undefined`; `path`: `any`; `sha`: `any`; `size`: `any`; `success`: `boolean`; \} \| \{ `content?`: `undefined`; `error`: `any`; `path?`: `undefined`; `sha?`: `undefined`; `size?`: `undefined`; `success`: `boolean`; \}\>

Defined in: services/github-service.js:142

Get specific file content

#### Parameters

##### owner

`string`

Repository owner

##### repo

`string`

Repository name

##### path

`string`

File path

##### ref?

`string` = `"main"`

Branch/tag reference

#### Returns

`Promise`\<\{ `content`: `any`; `error?`: `undefined`; `path`: `any`; `sha`: `any`; `size`: `any`; `success`: `boolean`; \} \| \{ `content?`: `undefined`; `error`: `any`; `path?`: `undefined`; `sha?`: `undefined`; `size?`: `undefined`; `success`: `boolean`; \}\>

***

### getRateLimitStatus()

> **getRateLimitStatus**(): `Promise`\<\{ `initialized`: `boolean`; `limit?`: `undefined`; `remaining`: `number`; `reset`: `null`; \} \| \{ `initialized`: `boolean`; `limit`: `number`; `remaining`: `number`; `reset`: `Date` \| `null`; \}\>

Defined in: services/github-service.js:285

Get current rate limit status

#### Returns

`Promise`\<\{ `initialized`: `boolean`; `limit?`: `undefined`; `remaining`: `number`; `reset`: `null`; \} \| \{ `initialized`: `boolean`; `limit`: `number`; `remaining`: `number`; `reset`: `Date` \| `null`; \}\>

***

### getRepoInfo()

> **getRepoInfo**(`owner`, `repo`): `Promise`\<\{ `created_at`: `string`; `default_branch`: `string`; `description`: `string` \| `null`; `error?`: `undefined`; `full_name`: `string`; `language`: `string` \| `null`; `name`: `string`; `size`: `number`; `success`: `boolean`; `topics`: `string`[] \| `undefined`; `updated_at`: `string`; \} \| \{ `created_at?`: `undefined`; `default_branch?`: `undefined`; `description?`: `undefined`; `error`: `any`; `full_name?`: `undefined`; `language?`: `undefined`; `name?`: `undefined`; `size?`: `undefined`; `success`: `boolean`; `topics?`: `undefined`; `updated_at?`: `undefined`; \}\>

Defined in: services/github-service.js:235

Get repository information

#### Parameters

##### owner

`string`

Repository owner

##### repo

`string`

Repository name

#### Returns

`Promise`\<\{ `created_at`: `string`; `default_branch`: `string`; `description`: `string` \| `null`; `error?`: `undefined`; `full_name`: `string`; `language`: `string` \| `null`; `name`: `string`; `size`: `number`; `success`: `boolean`; `topics`: `string`[] \| `undefined`; `updated_at`: `string`; \} \| \{ `created_at?`: `undefined`; `default_branch?`: `undefined`; `description?`: `undefined`; `error`: `any`; `full_name?`: `undefined`; `language?`: `undefined`; `name?`: `undefined`; `size?`: `undefined`; `success`: `boolean`; `topics?`: `undefined`; `updated_at?`: `undefined`; \}\>

***

### getRepoTree()

> **getRepoTree**(`owner`, `repo`, `sha?`, `recursive?`): `Promise`\<\{ `error?`: `undefined`; `metadata`: \{ `branch`: `string`; `owner`: `string`; `repo`: `string`; `timestamp`: `string`; \}; `sha`: `string`; `success`: `boolean`; `tree`: `object`[]; `truncated`: `boolean`; \} \| \{ `error`: `any`; `metadata?`: `undefined`; `sha?`: `undefined`; `success`: `boolean`; `tree`: `never`[]; `truncated?`: `undefined`; \}\>

Defined in: services/github-service.js:75

Get repository tree using GitHub API

#### Parameters

##### owner

`string`

Repository owner

##### repo

`string`

Repository name

##### sha?

`string` = `"main"`

Branch/commit SHA (default: 'main')

##### recursive?

`boolean` = `true`

Get recursive tree

#### Returns

`Promise`\<\{ `error?`: `undefined`; `metadata`: \{ `branch`: `string`; `owner`: `string`; `repo`: `string`; `timestamp`: `string`; \}; `sha`: `string`; `success`: `boolean`; `tree`: `object`[]; `truncated`: `boolean`; \} \| \{ `error`: `any`; `metadata?`: `undefined`; `sha?`: `undefined`; `success`: `boolean`; `tree`: `never`[]; `truncated?`: `undefined`; \}\>

***

### getStatus()

> **getStatus**(): `object`

Defined in: services/github-service.js:307

Get service status

#### Returns

`object`

##### hardcodedRequirement

> **hardcodedRequirement**: `string` = `"GH_PAT env var for multi-repo scope"`

##### hasToken

> **hasToken**: `boolean`

##### initialized

> **initialized**: `boolean`

##### rateLimitRemaining

> **rateLimitRemaining**: `number`

##### rateLimitReset

> **rateLimitReset**: `Date` \| `null`

##### tokenPriority

> **tokenPriority**: `string`

***

### initialize()

> **initialize**(): `Promise`\<`boolean`\>

Defined in: services/github-service.js:24

Initialize GitHub client with token
HARDCODED REQUIREMENT: GH_PAT (GitHub Personal Access Token)
Required for multi-repo scope in unified S4Ai Railway project
User confirmed: "always monitoring with manual override"

#### Returns

`Promise`\<`boolean`\>

***

### searchCode()

> **searchCode**(`query`, `repos?`): `Promise`\<\{ `error?`: `undefined`; `items`: `object`[]; `success`: `boolean`; `total_count`: `number`; \} \| \{ `error`: `any`; `items`: `never`[]; `success`: `boolean`; `total_count?`: `undefined`; \}\>

Defined in: services/github-service.js:188

Search code across repositories

#### Parameters

##### query

`string`

Search query

##### repos?

`string`[] = `[]`

Repository filters (e.g., ['Onedot2/pwai-api-service'])

#### Returns

`Promise`\<\{ `error?`: `undefined`; `items`: `object`[]; `success`: `boolean`; `total_count`: `number`; \} \| \{ `error`: `any`; `items`: `never`[]; `success`: `boolean`; `total_count?`: `undefined`; \}\>

***

### updateRateLimitInfo()

> **updateRateLimitInfo**(): `Promise`\<`void`\>

Defined in: services/github-service.js:272

Update rate limit information

#### Returns

`Promise`\<`void`\>
