# @acomo/cli

acomo ワークフロー管理プラットフォームの公式 CLI ツールです。

## 📦 インストール

```bash
npm install -g @acomo/cli
```

## 🚀 クイックスタート

### 1. ログイン

アクセストークンはブラウザで acomo にログインした後に入手し、CLI で指定して保存します。

```bash
# オプションで指定
acomo login --tenant-id <your-tenant-id> --access-token <your-access-token>

# または対話形式（baseUrl / tenantId / accessToken をプロンプトで入力。既存設定はデフォルト表示され Enter でそのまま採用）
acomo login
```

### 2. API を呼び出す

```bash
# 現在のユーザー情報を取得
acomo getCurrentUser

# ワークフローモデル一覧を取得
acomo listWorkflowModels

# JSON パラメータを指定して呼び出す
acomo listWorkflowModels '{"filter":"published","take":10}'
```

## 📖 使い方

### ログイン

#### アクセストークンでログイン

アクセストークンはブラウザで acomo にログインした後に取得できます。取得したトークンを CLI で指定して保存します。

```bash
acomo login --tenant-id <tenant-id> --access-token <access-token>
```

#### baseUrl を指定する

```bash
acomo login --base-url https://custom.acomo.app --tenant-id <tenant-id> --access-token <access-token>
```

### API 呼び出し

全ての acomo API がコマンドとして利用可能です。

#### 基本的な使い方

```bash
acomo <operationId> [JSON引数]
```

#### 引数なしの API

```bash
acomo getCurrentUser
acomo getCurrentTenant
acomo getAccount
```

#### JSON 引数を渡す

```bash
# コマンドライン引数として渡す
acomo getWorkflowModel '{"modelId":"wf_xxx"}'

# stdin から渡す
echo '{"modelId":"wf_xxx"}' | acomo getWorkflowModel

# ファイルから渡す
acomo createWorkflowModel < model-data.json
```

### 出力形式

```bash
# テキスト形式（デフォルト）
acomo listWorkflowModels

# JSON 形式
acomo listWorkflowModels --format json
```

### 設定管理

```bash
# 現在の設定を表示（トークンはマスク表示）
acomo config show

# 設定を更新
acomo config set baseUrl https://custom.acomo.app

# ログアウト（設定をクリア）
acomo logout
```

## 🎯 主要なコマンド例

### ワークフローモデル

```bash
# モデル一覧を取得
acomo listWorkflowModels

# フィルタ付きで取得
acomo listWorkflowModels '{"filter":"published","take":10}'

# 特定のモデルを取得
acomo getWorkflowModel '{"modelId":"wf_xxx"}'

# モデルを作成
acomo createWorkflowModel '{"body":{"name":"新しいワークフロー","description":"説明"}}'

# モデルを削除
acomo deleteWorkflowModel '{"modelId":"wf_xxx"}'
```

### ワークフロープロセス

```bash
# プロセス一覧を取得
acomo listWorkflowProcesses

# フィルタ付きで取得
acomo listWorkflowProcesses '{"filter":"running","take":20}'

# 特定のプロセスを取得
acomo getWorkflowProcess '{"processId":"proc_xxx"}'

# プロセス履歴を取得
acomo listWorkflowProcessHistories '{"processId":"proc_xxx"}'
```

### プロフィール・アカウント

```bash
# 現在のユーザー情報
acomo getCurrentUser

# 現在のテナント情報
acomo getCurrentTenant

# アカウント情報
acomo getAccount

# 組織情報
acomo getMyOrganization
```

## ⚙️ 設定

### 環境変数

以下の環境変数で API 呼び出しに必要な情報を設定できます。

| 環境変数             | 説明             | 必須 | デフォルト          |
| -------------------- | ---------------- | ---- | ------------------- |
| `ACOMO_ACCESS_TOKEN` | アクセストークン | Yes  | -                   |
| `ACOMO_TENANT_ID`    | テナント ID      | Yes  | -                   |
| `ACOMO_BASE_URL`     | API の Base URL  | No   | `https://acomo.app` |

環境変数を設定しておけば、`acomo login` なしで直接 API を呼び出せます。

```bash
export ACOMO_TENANT_ID="your-tenant-id"
export ACOMO_ACCESS_TOKEN="your-access-token"

acomo getCurrentUser
```

### 優先順位

CLI オプション > 環境変数 > 設定ファイル（`~/.acomo/config.json`）

CLI オプションや環境変数が指定されている場合、設定ファイルの値より優先されます。

### 設定ファイル

`acomo login` を実行すると `~/.acomo/config.json` に認証情報が保存されます。

```json
{
  "baseUrl": "https://acomo.app",
  "tenantId": "your-tenant-id",
  "accessToken": "your-access-token"
}
```

ファイルのパーミッションは `0600` に設定され、本人のみがアクセス可能です。

## 🔧 開発者向け

### ビルド

```bash
npm run build
```

### 開発モード

```bash
npm run dev
```

### クリーンビルド

```bash
npm run clean && npm run build
```

## 📝 ライセンス

ISC

## 🔗 関連リンク

- [acomo 公式サイト](https://acomo.app)
- [@acomo/client NPM パッケージ](https://www.npmjs.com/package/@acomo/client)
- [@acomo/cli NPM パッケージ](https://www.npmjs.com/package/@acomo/cli)
