---
title: Package とバージョン
description: Bundle の形式、バージョン、アップロード。
---

## Bundle

Package は gzip で圧縮した tar としてアップロードします。tar の最上位には次のものだけを置きます。

<FileTree>
  - subako-package.json
  - module.wasm
  - assets/
    - templates/
      - report.typ
    - logo.png
</FileTree>

| エントリー | |
| --- | --- |
| `subako-package.json` | Manifest。必須で、最大 256 KiB。 |
| `module.wasm` | WASI preview 1 向けにビルドした Module。必須。[ABI](/ja/functions/abi) を参照してください。 |
| `assets/` | 任意。Module が `/package/<path>` から読み取り専用で読むファイルです。通常のファイル (シンボリックリンクは不可) を最大 10,000 個まで置けます。各 Path は最大 1,024 バイトです。 |

Bundle 全体のサイズは、圧縮した状態でも展開した状態でも最大 64 MiB です。最上位にこれ以外のエントリー (README、`.DS_Store`、macOS の `._` ファイルなど) があると拒否されます。テンプレートの `package.sh` が `COPYFILE_DISABLE=1 tar --format=ustar` でまとめるのはそのためです。

### Manifest

```json subako-package.json
{
  "abi": 1,
  "name": "orders",
  "description": "Looks orders up, and cancels them."
}
```

| フィールド | |
| --- | --- |
| `abi` | `1`。Subako が実行する唯一の ABI です。 |
| `name` | Package の名前。小文字の英字、数字、`-` からなる 1 から 32 文字です。Grant では、別の名前を指定しない限りこれが Grant の名前になります。 |
| `description` | 最大 1,024 文字。Package を選ぶ人に表示されます。 |

Manifest には Tool を書きません。Package のアップロード時に Subako が Module に問い合わせるので、Tool の一覧は常に Module が実際に提供しているものと一致します。

## バージョン

アップロードするたびに新しいバージョンができます。番号は 1 から順に振られ、一度できたバージョンの中身は変わりません。修正をアップロードすると次の番号のバージョンが追加され、それをどこで使うかは Grant の設定で決まります。

- Package の**最新**バージョンを Grant している Agent のバージョンでは、これから開始する Session で新しいバージョンが使われます。
- 特定のバージョンに**固定**している Agent のバージョンでは、新しい Agent のバージョンで別のバージョンを指定するまで、そのバージョンのままです。
- どちらの場合も、すでに実行中の Session は開始時のバージョンを使い続けます。

コンソールの Package のページでは、各バージョンについて、追加日時、Module のサイズと SHA-256、Asset、Tool とその Parameter や Schema を確認できます。

![Package のページ: anydoc のバージョン 1、そのビルドと Tool](/blume-assets/content/docs/_images/ja/function-package.webp)

**その他の操作**からは、Package の名前の代わりに表示する表示名を付けたり、Package をすべてのバージョンごと削除したりできます。公開済みの Agent のバージョンが Package を Grant している間や、Session が Package を使っている間は削除できません。

## アップロード

**コンソール**

**Function** › **Package をアップロード**から、**Archive** をアップロードするか、**Manifest と Module** (と Asset) を別々のファイルとして選びます。別々のファイルは、ブラウザーが 1 つにまとめます。次のバージョンは、Package のページの **新しいバージョンをアップロード** から追加します。

![Function ページ: Workspace の Package とその最新バージョン](/blume-assets/content/docs/_images/ja/functions.webp)

**CLI**

```bash
subako function create dist/orders.tar.gz             # バージョン 1
subako function push <function-id> dist/orders.tar.gz # 次のバージョン
subako function list
```

どちらのコマンドも、Archive の代わりにディレクトリを渡すと、その中身をすべてまとめてアップロードします。そのため、ディレクトリには Bundle のエントリーだけを置いてください。

**API**

```bash
curl -X POST https://api.us.cloud.subako.ai/v1/functions \
  -H "Authorization: Bearer $SUBAKO_API_KEY" \
  -H "Content-Type: application/gzip" \
  --data-binary @dist/orders.tar.gz

curl -X POST https://api.us.cloud.subako.ai/v1/functions/$FUNCTION_ID/versions \
  -H "Authorization: Bearer $SUBAKO_API_KEY" \
  -H "Content-Type: application/gzip" \
  --data-binary @dist/orders.tar.gz
```

API key には **Function** › **管理** の権限が必要です。どちらも、作成したバージョンを Module が列挙した Tool とともに返します。詳細は [API リファレンス](/api)を参照してください。

アップロードが拒否された場合は、その理由が示されます。たとえば、Bundle に置けないエントリーがある、Subako が提供しない import を Module が必要としている、Module が `tools/list` に応答しない、Tool の名前や Schema が[決まり](/ja/functions/abi#package-をアップロードしたとき)に違反している、などです。

Organization が持てる Package の数には、Plan ごとに上限があります。バージョンの数は数えません。詳しくは [Plan と使用量](/ja/console/plan-and-usage#plan)を参照してください。
