polylinedb
polylinedbv0.5.2MIT
Polyline database: project memory and task tracking for local tools and cloud agents
インストール
npm install polylinedb- GitHub のソースコード
- 使っているツール: archstrict, solarsql, stryker-agent-reporter
polylinedb は、ローカルのツールとクラウドのエージェント向けの個人用課題ストアで、コマンド名は pd です。
CLI は、作業リポジトリの外にある SQLite ファイル 1 つか、認証付きのクラウド接続を使います。
Cloudflare Worker は、D1 をデータベースにして、同じ操作を HTTP とリモート MCP で提供します。
この 2 つは独立したストアで、polylinedb は両者を同期しません。
ローカルのエージェントが事実と未完了の作業を記録し、クラウドのエージェントがその両方を MCP で読んで作業を引き継げます。
- フィールドごとのバージョン。
pd showは、フィールドごとのバージョンを返します。pd update ISSUE_ID --status deferred --expect status=1は、別の書き手が先にそのフィールドを変更していた場合、更新全体が失敗します。 polylinedb が新しいバージョンで勝手に再試行することはありません。 - 所有権の取得。
pd claim acquire、pd claim renew、pd claim releaseで、課題を 1 つのエージェントセッションに割り当てます。in_progressにするには、エピックを除き、有効な--claim-proofが必要です。 - プロジェクトメモリ。
pd memory create、pd memory search、pd memory context --project NAMEで、課題をクローズした後も役立つ知識を残します。 - 前提条件と作業リスト。
pd dependency add --dependent ID --blocker IDで、どの課題がどの課題をブロックしているかを記録します。pd readyは、有効なブロッカーのないオープンな課題を一覧表示し、pd blockedはそれ以外を一覧表示します。 - 変更フィード。
pd changes --since 0は、課題の変更をコミット順に一覧表示します。pd wait --since SEQ --timeout SECONDSは、条件に合うイベントが届いた時点で終了するので、エージェントはすべての課題を読み直さずに、ほかのエージェントの作業を追えます。 - JSON 出力と安全な再試行。
どのコマンドも JSON を出力し、
--humanを付けるとshow、list、searchがプレーンテキストを出力します。 同じ--request-id UUIDでcreateを再試行すると、2 つ目の課題を作らずに既存の課題を返します。
エージェントでの使い方
Section titled “エージェントでの使い方”パッケージには、polylinedb と polylinedb-queue の 2 つのスキルが含まれています。
これらを、エージェントのホストごとにスキルのディレクトリへコピーします。
- エージェントは、
pd contextで選択中の接続とプロジェクトを確認し、pd memory context --project PROJECTでプロジェクトメモリを読みます。 - 作業を選んで所有権を取得し、書き込みの前に毎回
pd showでフィールドのバージョンを読みます。 - 書き込みが衝突したら、読み直して、その編集がまだ有効かを判断します。
- 確認した事実をメモリに、結果をコメントに残すので、後続のローカルやクラウドのセッションがストアから作業を再開できます。
polylinedb-queue スキルは、完了したコミットを共有の queue ブランチに積みます。
queue を main に取り込むのはオーナーで、エージェントは main に push しません。
polylinedb には、Node.js 24.20 以降の 24.x か 26.7 以降と、PATH 上の Git が必要です。
npm install --global polylinedbpd init --tool compiler --project parser --actor local:ownerpd --actor local:owner create --tool compiler --project parser --body 'Handle empty input'pd listpolylinedb は、SQLite と D1 のどちらでも、読み取りのクエリを solarsql で実行します。