open-index/open-npm huggingface dataset:
npm package: @freehold/bot
Description: Freehold bot framework — platform adapters for AI chatbots
Latest version: 0.0.5

# @freehold/bot

Multi-platform bot framework built on [`@freehold/ai`](../ai). Create AI chatbots for Telegram, Discord, Slack, and WhatsApp with a unified interface.

## Installation

```bash
pnpm add @freehold/bot @freehold/ai
# or
npm install @freehold/bot @freehold/ai
```

Install at least one AI provider and one platform SDK:

```bash
# AI provider
pnpm add @ai-sdk/openai

# Platform SDK (pick one or more)
pnpm add grammy          # Telegram
pnpm add discord.js      # Discord
pnpm add @slack/bolt     # Slack
```

## Entry Points

| Import | Purpose |
|--------|---------|
| `@freehold/bot` | Core — `generateBotResponse`, shared types |
| `@freehold/bot/telegram` | Telegram adapter via grammy |
| `@freehold/bot/discord` | Discord adapter via discord.js |
| `@freehold/bot/slack` | Slack adapter via @slack/bolt |
| `@freehold/bot/whatsapp` | WhatsApp adapter |

## Quick Start — Telegram

```ts
import { createTelegramBot } from '@freehold/bot/telegram'
import { defineTool } from '@freehold/ai'
import { z } from 'zod'

const weatherTool = defineTool({
  name: 'getWeather',
  description: 'Get weather for a city',
  parameters: z.object({
    city: z.string().describe('City name'),
  }),
  execute: async ({ city }) => ({ city, temp: 72, condition: 'Sunny' }),
})

const bot = createTelegramBot({
  token: process.env.TELEGRAM_BOT_TOKEN!,
  provider: {
    provider: 'openai',
    model: 'gpt-4o-mini',
    apiKey: process.env.OPENAI_API_KEY,
  },
  tools: [weatherTool],
  systemPrompt: 'You are a helpful weather assistant.',
})

await bot.start()
```

## API Reference

### `generateBotResponse(config, messages)`

Generate a complete (non-streaming) bot response. Used internally by platform adapters, but also available for custom integrations.

```ts
import { generateBotResponse } from '@freehold/bot'

const response = await generateBotResponse(
  {
    provider: { provider: 'openai', model: 'gpt-4o-mini', apiKey: '...' },
    tools: [weatherTool],
    systemPrompt: 'You are helpful.',
  },
  [{ role: 'user', content: 'What is the weather in SF?' }]
)
// response is a string
```

### `createTelegramBot(config)`

Create a Telegram bot. Returns a `PlatformAdapter` with `start()` and `stop()`.

```ts
interface TelegramBotConfig {
  token: string                // Telegram bot token from @BotFather
  provider: ProviderConfig     // AI provider config
  tools?: FreeholdToolDefinition[]
  systemPrompt?: string
  maxSteps?: number            // default: 5
}
```

Features:
- Per-chat message history (in-memory, last 20 messages)
- Typing indicator while generating
- Markdown response formatting

### Types

```ts
interface BotConfig {
  provider: ProviderConfig
  tools?: FreeholdToolDefinition[]
  systemPrompt?: string
  maxSteps?: number
}

interface BotMessage {
  role: 'user' | 'assistant'
  content: string
}

interface PlatformAdapter {
  start(): Promise<void>
  stop(): void
}
```

## License

MIT
npm package: @freehzw/simple-image-editor
Description: Fork自[vue-image-annotation](https://github.com/wawjqyh/vue-image-annotation), 基于`fabric.js`, 支持vue3，增加了裁切图片，取色器，滚轮缩放等功能。
Latest version: 1.1.0

# 简单的图像编辑器

Fork自[vue-image-annotation](https://github.com/wawjqyh/vue-image-annotation), 基于`fabric.js`, 支持vue3，增加了裁切图片，取色器，滚轮缩放等功能。

![截图](https://github.com/freehzw/simple-image-editor/raw/master/screen.jpg)

## 安装
```bash
npm install @freehzw/simple-image-editor
或
yarn add @freehzw/simple-image-editor
```

## 使用
```vue
<template>
  <div>
    <button @click="open">打开图片</button>
    <SimpleImageEditor ref="imageDrawerRef" @onSave="onSave" />
  </div>
</template>

<script setup>
import { ref } from 'vue';
import { SimpleImageEditor } from '@freehzw/simple-image-editor';
import '@freehzw/simple-image-editor/style.css';

const imageDrawerRef = ref(null);

function open() {
  imageDrawerRef.value.openUrl('./demo.jpg');
}

function onSave(base64, file) {
  console.log(base64);
  console.log(file);
}
</script>
```
npm package: @freejak5520/use-calendar
Description: An open-source library that provides only the **minimal features** needed to implement a calendar in React environments.
Author: freejak5520
Latest version: 0.0.2

# use-calendar

An open-source library that provides only the **minimal features** needed to implement a calendar in React environments.

## Installation

```bash
npm install use-calendar
```

## Usage Example

```tsx
import { useCalendar } from "use-calendar";

function Calendar() {
  const { calendarWeeks, weekdays } = useCalendar({
    year: 2025,
    month: 5,
    options: {
      usePreviousMonth: false,
      useNextMonth: false,
    },
  });

  return (
    <table>
      <thead>
        <tr>
          {weekdays.map((day) => (
            <th key={day}>{day}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {calendarWeeks.map((week, i) => (
          <tr key={i}>
            {week.map((day, j) =>
              day ? <td key={j}>{day.getDate()}</td> : <td key={j}></td>
            )}
          </tr>
        ))}
      </tbody>
    </table>
  );
}
```

## API

### `useCalendar({ year, month, options })`

- `year`: Year (e.g., 2025)
- `month`: Month (1~12)
- `options` _(optional)_
  - `locale`: Locale string (currently only "ko" and "en_US" are supported)
  - `weekStartsOn`: Start day of the week (0: Sunday, 1: Monday, ...)
  - `usePreviousMonth`: Show previous month's dates (default: true)
  - `useNextMonth`: Show next month's dates (default: true)

#### Returns

- `calendarWeeks`: 2D array (array of weeks, each element is a Date or null)
- `weekdays`: Array of weekday strings

### `useWeekdays({ locale, weekStartsOn })`

- A hook that returns an array of weekday strings

## Development Environment & Scripts

- **Local development**:
  ```bash
  npm install
  npm run dev
  ```
- **Build**:
  ```bash
  npm run build
  ```
- **Test**:
  ```bash
  npm run test
  ```
- **Lint**:
  ```bash
  npm run lint
  ```

## Development Rules

- TypeScript based
- Uses React 19, date-fns 4
- Support for React 18 and other versions is planned
- PRs and issues are welcome
npm package: @freekawa/ikawa-home-web-bluetooth
Description: Web Bluetooth transport for IKAWA Home protocol clients
Latest version: 0.1.0

# @freekawa/ikawa-home-web-bluetooth

Web Bluetooth transport for IKAWA Home.

This package is intentionally scoped to IKAWA Home behavior for now. IKAWA Pro compatibility is not implied.

## Example

```ts
import { IkawaClient } from "@freekawa/ikawa-home-protocol";
import { IkawaBleTransport } from "@freekawa/ikawa-home-web-bluetooth";

const transport = new IkawaBleTransport();
const client = new IkawaClient(transport);
```

See:

- `examples/browser-connect.ts`
- `tests/smoke.mjs`
npm package: @freelancercom/blue-harvest
Description: protractor helpers
Author: Craig Nishina
Latest version: 0.3.1-fork.41

# blue-harvest

## Install
You can npm to install the package:
`npm install blue-harvest --save-dev`,
or if you are using Yarn,
`yarn add blue-harvest -D`

## Writing Tests
### Configurations
In order for you to use `async await` in the tests, the following line
```javascript
SELENIUM_PROMISE_MANAGER: false;
```
 should be added to the `protractor.conf.js` file.

To regulate the resolution of the screenshots, add 
```javascript
onPrepare() {
    browser.driver.manage().window().setSize(1366, 1024);
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
```
in `protractor.conf.js`, inside the `config` block.
### Comparing Screenshots
To test if a page has changed from a previous screenshot:
```
let result =  await blueharvest.compareScreenshot(
                   await browser.takeScreenShot(), pathToGolden);
```
The difference between the two screenshots will be highlighted in pink.

### Updating Reference Screenshots
When a change in a page is expected and not a regression, you can update the reference screenshots by
setting `UPDATE_GOLDENS=1` when you run the tests. In this case, if any test fails,
blue-harvest will update the reference image with the new one. Only tests involving the 
reference screenshots (goldens) are required. You can edit the `specs` in `protractor.conf.js` so only necessary tests are run in an update. 

In a Linux system, you can simply run `UPDATE_GOLDENS=1 npm run e2e` to update the reference screenshots. 
In a windows environment where the command cannot be directly run, you can put it in a shell file and
add a npm script that runs `bash ./filename.sh` to update the reference screenshots.

### Adding Masks
If there is a part on a page that should be ignored in the screenshot tests, 
you can add a coloured mask to a certain element before you take the screenshot so it will not be compared each time the tests run.
`addMask()` returns the mask element, which can be passed to `removeMask()` to be removed.
```
const e = element(by.css('element_to_ignore'));
const mask = await blueharvest.addMask(e, 'gray', 99999, 10, 20, 1.1);
const screenshot = await browser.takeScreenShot();
blueharvest.removeMask(mask);
```
The default z-index for the mask element is 10000. An optional `zIndex` argument can be passed to `addMask()`
 if you would like to increase the value of a mask's z-index. If the mask appears to be off the desired place, 
 you can pass optional `xOffset`, `yOffset` and `sizeMultiplier` arguments to `addMask()` to move/shape the mask manually.
npm package: @freelancercom/protractor
Description: Webdriver E2E test wrapper for Angular.
Author: Julie Ralph
Latest version: 6.0.0-fork.4

Protractor [![Build Status](https://travis-ci.org/angular/protractor.svg?branch=master)](https://travis-ci.org/angular/protractor) [![CircleCI Status](https://circleci.com/gh/angular/protractor.svg?style=shield)](https://circleci.com/gh/angular/protractor) [![Join the chat at https://gitter.im/angular/protractor](https://badges.gitter.im/angular/protractor.svg)](https://gitter.im/angular/protractor)
==========

[Protractor](http://angular.github.io/protractor) is an end-to-end test framework for [Angular](http://angular.io/) and [AngularJS](http://angularjs.org) applications. Protractor is a [Node.js](http://nodejs.org/) program built on top of [WebDriverJS](https://github.com/SeleniumHQ/selenium/wiki/WebDriverJs). Protractor runs tests against your application running in a real browser, interacting with it as a user would.

Compatibility
-------------

Protractor 5 is compatible with nodejs v6 and newer.

Protractor works with AngularJS versions greater than 1.0.6/1.1.4, and is compatible with Angular applications. Note that for Angular apps, the `binding` and `model` locators are not supported. We recommend using `by.css`.


Getting Started
---------------
See the [Protractor Website](http://www.protractortest.org) for most documentation.

To get set up and running quickly:
 - Work through the [Tutorial](http://www.protractortest.org/#/tutorial)
 - See the [API](http://www.protractortest.org/#/api)

Once you are familiar with the tutorial, you’re ready to move on. To modify your environment, see the Protractor Setup docs. To start writing tests, see the Protractor Tests docs.

To better understand how Protractor works with the Selenium WebDriver and Selenium Server see the reference materials.


Getting Help
------------

Check the [Protractor FAQ](https://github.com/angular/protractor/blob/master/docs/faq.md) and read through the [Top 20 questions on StackOverflow](http://stackoverflow.com/questions/tagged/protractor?sort=votes&pageSize=20).

Please ask usage and debugging questions on [StackOverflow](http://stackoverflow.com/questions/tagged/protractor) (use the ["protractor"](http://stackoverflow.com/questions/ask?tags=protractor) tag), the [Gitter](https://gitter.im/angular/protractor) chat room, or in the [Angular discussion group](https://groups.google.com/forum/?fromgroups#!forum/angular). (Please do not ask support questions here on Github.)


For Contributors
----------------
See [DEVELOPER.md](https://github.com/angular/protractor/blob/master/DEVELOPER.md)
npm package: @freelang/lsp
Description: FreeLang LSP Server - Language Server Protocol support for editors
Author: Claude AI
Latest version: 2.9.1

# @freelang/lsp

FreeLang LSP (Language Server Protocol) 서버

## 설치

```bash
npm install @freelang/lsp
```

## 사용법

### VSCode 연동

`.vscode/settings.json`:
```json
{
  "[freelang]": {
    "editor.defaultFormatter": "freelang.freelang",
    "editor.formatOnSave": true
  }
}
```

### 직접 실행

```bash
freelang-lsp
```

## 기능

- 코드 자동완성 (Autocomplete)
- 호버 정보 (Hover)
- 함수 정의로 이동 (Go to Definition)
- 문제 진단 (Diagnostics)
- 문서 포매팅 (Formatting)

## 지원 에디터

- Visual Studio Code
- Neovim
- Emacs
- Sublime Text

자세한 정보: https://github.com/freelang-io/freelang-compiler
npm package: @freelang/stdlib
Description: FreeLang Standard Library - 1,500+ built-in functions
Author: Claude AI
Latest version: 2.9.1

# @freelang/stdlib

FreeLang 표준 라이브러리 - 1,500+ 빌트인 함수

## 설치

```bash
npm install @freelang/stdlib
```

## 포함된 모듈

### 문자열 처리
- `string_upper()` - 대문자 변환
- `string_lower()` - 소문자 변환
- `string_split()` - 문자열 분할
- `string_replace()` - 문자열 치환

### 수학 함수
- `math_sin()`, `math_cos()` - 삼각 함수
- `math_sqrt()` - 제곱근
- `math_abs()` - 절댓값

### 파일 I/O
- `file_read()` - 파일 읽기
- `file_write()` - 파일 쓰기
- `file_delete()` - 파일 삭제

### 네트워크
- `http_get()` - HTTP GET 요청
- `http_post()` - HTTP POST 요청
- `http_server()` - HTTP 서버 생성

### 데이터베이스
- `db_open()` - 데이터베이스 열기
- `db_query()` - SQL 쿼리 실행
- `db_insert()` - 데이터 삽입

### 비동기
- `async_sleep()` - 비동기 대기
- `async_parallel()` - 병렬 실행
- `async_map()` - 비동기 맵

## 사용 예제

```freelang
import { string_upper, http_get } from @freelang/stdlib

fn main() {
    let msg = "hello"
    println(string_upper(msg))  // "HELLO"

    let response = http_get("https://api.example.com/data")
    println(response)
}
```

## 함수 목록

전체 함수 목록은 [API 문서](https://github.com/freelang-io/freelang-compiler/wiki/stdlib-api)를 참고하세요.

자세한 정보: https://github.com/freelang-io/freelang-compiler
npm package: @freelang/vm
Description: FreeLang VM - Virtual Machine runtime executor
Author: Claude AI
Latest version: 2.9.1

# @freelang/vm

FreeLang 가상 머신 (Virtual Machine) 런타임

## 설치

```bash
npm install @freelang/vm
```

## 사용법

```javascript
const { VMExecutor } = require('@freelang/vm');

const vm = new VMExecutor();
const result = vm.execute(bytecode);
console.log(result);
```

## 특징

- 고성능 바이트코드 실행
- 메모리 안전성
- JIT 컴파일 지원
- 디버깅 기능

## 지원 아키텍처

- x86-64
- ARM64
- WASM

자세한 정보: https://github.com/freelang-io/freelang-compiler