69 lines
2.0 KiB
Markdown
69 lines
2.0 KiB
Markdown
## @janhq/core
|
|
|
|
> This module includes functions for communicating with core APIs, registering app extensions, and exporting type definitions.
|
|
|
|
## Usage
|
|
|
|
### Import the package
|
|
|
|
```js
|
|
// Web / extension runtime
|
|
import * as core from '@janhq/core'
|
|
```
|
|
|
|
## Build an Extension
|
|
|
|
1. Download an extension template, for example, [https://github.com/janhq/extension-template](https://github.com/janhq/extension-template).
|
|
|
|
2. Update the source code:
|
|
|
|
1. Open `index.ts` in your code editor.
|
|
2. Rename the extension class from `SampleExtension` to your preferred extension name.
|
|
3. Import modules from the core package.
|
|
```ts
|
|
import * as core from '@janhq/core'
|
|
```
|
|
4. In the `onLoad()` method, add your code:
|
|
|
|
```ts
|
|
// Example of listening to app events and providing customized inference logic:
|
|
import * as core from '@janhq/core'
|
|
|
|
export default class MyExtension extends BaseExtension {
|
|
// On extension load
|
|
onLoad() {
|
|
core.events.on(MessageEvent.OnMessageSent, (data) => MyExtension.inference(data, this))
|
|
}
|
|
|
|
// Customized inference logic
|
|
private static inference(incomingMessage: MessageRequestData) {
|
|
// Prepare customized message content
|
|
const content: ThreadContent = {
|
|
type: ContentType.Text,
|
|
text: {
|
|
value: "I'm Jan Assistant!",
|
|
annotations: [],
|
|
},
|
|
}
|
|
|
|
// Modify message and send out
|
|
const outGoingMessage: ThreadMessage = {
|
|
...incomingMessage,
|
|
content,
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
3. Build the extension:
|
|
1. Navigate to the extension directory.
|
|
2. Install dependencies.
|
|
```bash
|
|
yarn install
|
|
```
|
|
3. Compile the source code. The following command keeps running in the terminal and rebuilds the extension when you modify the source code.
|
|
```bash
|
|
yarn build
|
|
```
|
|
4. Select the generated .tgz from Jan > Settings > Extension > Manual Installation.
|