@tocca-systems/twp-cli 0.77.1 → 0.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +16 -0
- package/README.md +26 -6
- package/dist/{agent-76W4NFZE.js → agent-WTDLGRNM.js} +3 -3
- package/dist/{agent-loop-ZNQJSXQV.js → agent-loop-6Q5QQC5H.js} +18 -15
- package/dist/{ai-dispatch-NFFEUL6K.js → ai-dispatch-U2MEAOHY.js} +2 -2
- package/dist/{analysis-7PNFFLPQ.js → analysis-SZWW5N5I.js} +2 -2
- package/dist/{announcement-HYMSN6ZR.js → announcement-RTTVGW4K.js} +2 -2
- package/dist/{api-command-5CMXCFGZ.js → api-command-WM6TWH3Q.js} +3 -3
- package/dist/{app-CTMOK4SI.js → app-M6FLPNQT.js} +4 -4
- package/dist/{attendance-correct-7IKTSZ6I.js → attendance-correct-OLWRCDP4.js} +2 -2
- package/dist/{attendance-lists-7SOG6G4N.js → attendance-lists-TBUZCRKK.js} +2 -2
- package/dist/{auto-update-YMI3F44R.js → auto-update-FXXQHBV5.js} +1 -1
- package/dist/{auto-update-worker-VG77U4UA.js → auto-update-worker-6K24JYLQ.js} +2 -2
- package/dist/{backlog-IJTBHL3Z.js → backlog-HDDV2NTC.js} +37 -31
- package/dist/{budget-ZWB346BP.js → budget-Z4TZDYFC.js} +2 -2
- package/dist/{capacity-report-command-QSV3A6EX.js → capacity-report-command-BUCAQ2P4.js} +1 -1
- package/dist/{chunk-6TSP4IP5.js → chunk-2UYVICTQ.js} +2 -2
- package/dist/{chunk-J2NRDFCR.js → chunk-47C3XM23.js} +1 -1
- package/dist/{chunk-436IBRP4.js → chunk-6JAOPRD5.js} +1 -1
- package/dist/{chunk-GAXJPIKO.js → chunk-6SAHK3OR.js} +1 -1
- package/dist/{chunk-DYNNGNXR.js → chunk-7PTFN3H7.js} +1 -1
- package/dist/{chunk-MZVXEYOV.js → chunk-B3466RC6.js} +1 -1
- package/dist/{chunk-AITUAHWK.js → chunk-CADCERVL.js} +1 -1
- package/dist/{chunk-NWI2TBO6.js → chunk-CH6QU76P.js} +1 -1
- package/dist/{chunk-HZYP3BMS.js → chunk-D2OMWITR.js} +2 -2
- package/dist/{chunk-H7MIIYRN.js → chunk-DDW53EFR.js} +1 -1
- package/dist/{chunk-4VAWX7TW.js → chunk-DLJQE2B5.js} +1 -1
- package/dist/{chunk-GQEXST5N.js → chunk-DLT7DYWR.js} +1 -1
- package/dist/{chunk-4VZKNEVN.js → chunk-EDF4U5BT.js} +2 -1
- package/dist/chunk-G7QVPGEN.js +11 -0
- package/dist/{chunk-XG2JN66A.js → chunk-HKEW6XIC.js} +2 -2
- package/dist/{chunk-AVFQ2LM5.js → chunk-HYBXFEHH.js} +1 -1
- package/dist/{chunk-DLDDMXZT.js → chunk-IBZ5UL4H.js} +1 -1
- package/dist/{chunk-BYUV3D5Z.js → chunk-IIK77LSC.js} +1 -1
- package/dist/{chunk-5WTFZJT7.js → chunk-JQBXLZTJ.js} +1 -1
- package/dist/{chunk-QQCWGMZN.js → chunk-JRZ2Q5UZ.js} +26 -23
- package/dist/chunk-K5VUWKZK.js +44 -0
- package/dist/{chunk-YM4U6A4Y.js → chunk-KJH35N3L.js} +1 -1
- package/dist/{chunk-RQEX2WC5.js → chunk-KZQGIM2C.js} +1 -1
- package/dist/{chunk-3WFZOOXZ.js → chunk-MO2UEAWW.js} +1 -1
- package/dist/{chunk-L7T2CQ3M.js → chunk-NLCJXS5S.js} +2 -2
- package/dist/{chunk-5KAWCLYN.js → chunk-O52RKZCC.js} +1 -1
- package/dist/{chunk-3WPHZXST.js → chunk-OF5JPNLD.js} +1 -1
- package/dist/{chunk-DLD736A2.js → chunk-OW23MAVO.js} +1 -1
- package/dist/{chunk-WK2ZFPCH.js → chunk-QA53SS3M.js} +18 -18
- package/dist/{chunk-OG7FD7SR.js → chunk-QGJYT4NH.js} +1 -1
- package/dist/{chunk-DPIJF3EN.js → chunk-QGRBZ2C2.js} +1 -1
- package/dist/{chunk-GY7KI5E5.js → chunk-RMFLTSOV.js} +1 -1
- package/dist/{chunk-F6LEGFID.js → chunk-RMOBVFPJ.js} +1 -1
- package/dist/{chunk-GHE6X45G.js → chunk-RSSPNFSK.js} +7 -7
- package/dist/{chunk-SAH5WS3K.js → chunk-RZVNPLKX.js} +1 -1
- package/dist/{chunk-HFZGBHTB.js → chunk-SDSQXDBB.js} +1 -1
- package/dist/{chunk-AM7Y4QRF.js → chunk-T2XHX32P.js} +2 -2
- package/dist/{chunk-4OJD5FKD.js → chunk-TFH4FMN2.js} +2 -2
- package/dist/{chunk-4URNOAMG.js → chunk-UAW4FEOU.js} +2 -2
- package/dist/{chunk-5KJ5OIKI.js → chunk-WTYIFLVB.js} +1 -1
- package/dist/cli.js +19 -12
- package/dist/{commands-U52UBWSU.js → commands-22YEUKS2.js} +2 -2
- package/dist/{commands-UMSNPM4D.js → commands-3XRXO47T.js} +25 -36
- package/dist/{company-WLPLQINW.js → company-OSKBPHNA.js} +3 -3
- package/dist/{completion-YBKZ3GXD.js → completion-6E2TSIU5.js} +4 -4
- package/dist/config-XYWRBIC6.js +3 -0
- package/dist/{configure-3H3CGGBI.js → configure-3JID6MQ5.js} +7 -3
- package/dist/{contract-MC6HSQER.js → contract-USUYPZGJ.js} +2 -2
- package/dist/{department-3YEKQJ6I.js → department-GPVHVFFP.js} +2 -2
- package/dist/{deposit-RFTXWS5D.js → deposit-4KSD4HRJ.js} +2 -2
- package/dist/{domain-knowledge-EXMD2NMI.js → domain-knowledge-5SCZLCPF.js} +2 -2
- package/dist/{estimate-BPY7AFDK.js → estimate-HLPOQAII.js} +4 -4
- package/dist/{evaluation-ESIPIC3K.js → evaluation-VP7OFTBS.js} +1 -1
- package/dist/{expense-ISK4RPCY.js → expense-KCDGJ4Y7.js} +2 -2
- package/dist/{fiscal-year-F2DVA2GB.js → fiscal-year-ZTCSF46U.js} +2 -2
- package/dist/{holiday-5ZAH6U6Z.js → holiday-FMELHZIS.js} +2 -2
- package/dist/{inquiry-3KEU4MAN.js → inquiry-5SSB25FA.js} +2 -2
- package/dist/{invoice-BTVMPVKS.js → invoice-ME4FODCA.js} +3 -3
- package/dist/{job-title-NO5VRM5J.js → job-title-NCFHCA4M.js} +1 -1
- package/dist/{knowledge-TXUSVHRG.js → knowledge-43PQDFAG.js} +2 -2
- package/dist/{leave-VZCKDT73.js → leave-3RP6CFUY.js} +3 -3
- package/dist/{license-JVYLYTSV.js → license-XSWDXSJE.js} +2 -2
- package/dist/{logout-guard-IWHF33DM.js → logout-guard-T3IAROLQ.js} +1 -1
- package/dist/{media-FZCGPPMD.js → media-4IGTXKOP.js} +3 -3
- package/dist/{notification-TSLB2ZHF.js → notification-WP7CH734.js} +2 -2
- package/dist/{onedrive-ZY3GTU26.js → onedrive-KWVOUGG6.js} +1 -1
- package/dist/{oneshot-GF6TO7AH.js → oneshot-EAXT2LLB.js} +2 -2
- package/dist/{outlook-YG7GFF44.js → outlook-GYRF5TXA.js} +1 -1
- package/dist/{plan-submit-2FSRRNIV.js → plan-submit-7KDB74QH.js} +2 -2
- package/dist/{position-IREP6O4N.js → position-H3NSDVKQ.js} +1 -1
- package/dist/{project-XIBLUUAR.js → project-AIAD2RJL.js} +2 -2
- package/dist/{prospect-IXEACPLB.js → prospect-OOQMGJ6Q.js} +3 -3
- package/dist/{purchase-ADUT2XJU.js → purchase-MOLAGXZ7.js} +4 -4
- package/dist/receivable-ZO7DA6ZR.js +4 -0
- package/dist/{redmine-WOVVB7SU.js → redmine-644RTL42.js} +2 -2
- package/dist/{registry-VUO4OMUK.js → registry-UWYM2UPG.js} +1 -1
- package/dist/{report-52ZHE57K.js → report-P74LSHTE.js} +2 -2
- package/dist/{run-DHX4JQYP.js → run-SYMKOV3Z.js} +2 -2
- package/dist/runner-command-N5IRCOQ4.js +3 -0
- package/dist/{sales-ai-review-JBDTSY67.js → sales-ai-review-QBBRTX3F.js} +2 -2
- package/dist/{sales-master-HQTY3C24.js → sales-master-DKC5TCSG.js} +3 -3
- package/dist/{sales-numbering-NZW2RNOS.js → sales-numbering-SJOO6NZP.js} +2 -2
- package/dist/{schedule-command-RVKP6QQS.js → schedule-command-ZOE3NYAA.js} +1 -1
- package/dist/{search-FOUZEY5X.js → search-BLMSVPIL.js} +2 -2
- package/dist/{segment-3CMYFOFP.js → segment-G4IPD43F.js} +1 -1
- package/dist/{server-settings-WH4F2SLC.js → server-settings-CRH7UU45.js} +1 -1
- package/dist/{server-skills-EEPBSOPO.js → server-skills-FVYYZ54O.js} +1 -1
- package/dist/{setup-H22WRMPN.js → setup-VPHP4HDM.js} +1 -1
- package/dist/{skill-U6757V7A.js → skill-4TSTVUXY.js} +2 -2
- package/dist/{skill-check-YVIMYT2H.js → skill-check-CKLMW2AJ.js} +2 -2
- package/dist/status-command-CGKICLTJ.js +17 -0
- package/dist/{supplier-payment-NG3PYZAH.js → supplier-payment-ARH5FZTA.js} +3 -3
- package/dist/{support-AWWCS7HX.js → support-EDIJC36M.js} +2 -2
- package/dist/{task-3OK44YBT.js → task-PEXVSFM4.js} +33 -30
- package/dist/{teams-RLMFGND2.js → teams-MZR3256V.js} +1 -1
- package/dist/{update-NCAVUXSX.js → update-7GYGZEK3.js} +1 -1
- package/dist/{user-4BL2ILYK.js → user-NI4LZ7Y2.js} +3 -3
- package/dist/{user-contract-type-XHCKC6T7.js → user-contract-type-HDA5TITL.js} +2 -2
- package/dist/{worker-agent-XTDV36WT.js → worker-agent-52PXQO4N.js} +2 -2
- package/dist/{workflow-Q7XCMDRH.js → workflow-GJK7QETS.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-SLWD5CES.js +0 -11
- package/dist/config-3CNEQ7KN.js +0 -3
- package/dist/receivable-JNXWOLJN.js +0 -4
package/CHANGELOG.public.md
CHANGED
|
@@ -11,6 +11,22 @@
|
|
|
11
11
|
`CHANGELOG.md` に残してあります。顧客向けの履歴は public 公開以降を対象とします。
|
|
12
12
|
-->
|
|
13
13
|
|
|
14
|
+
## 0.78.0
|
|
15
|
+
|
|
16
|
+
`twp task-loop runner list` / `twp task-loop runner remove` を追加しました。置き換え・廃止した実行機のランナー登録を、一覧から外せます(稼働中の登録は外せません)。`twp task-loop status` も外し方を案内します。
|
|
17
|
+
|
|
18
|
+
`twp configure` で既定の Backlog スペースを設定できるようになりました。複数のスペースを連携していても、毎回 `--space` を付ける必要がなくなります。また `twp backlog comment list` で `--limit` と `--all`(全件取得)が使えるようになりました。
|
|
19
|
+
|
|
20
|
+
## 0.77.2
|
|
21
|
+
|
|
22
|
+
個人タスク(`--project __private__`)でも `twp task comment` でコメントの一覧・投稿・更新・削除ができるようになりました。質問(`--ask-question`)と回答(`--answer-to` / `--select`)も使えます。
|
|
23
|
+
|
|
24
|
+
`twp agent-loop history list` と `twp agent-loop plan-history list` で `--project __private__` を指定すると、個人タスクのループの実行履歴を引けるようになりました。
|
|
25
|
+
|
|
26
|
+
`twp task-loop status` に各ランナーの最終ハートビート時刻と経過時間が表示されるようになりました。`--output json` / `--query` で同じ内容を JSON で取得できます。
|
|
27
|
+
|
|
28
|
+
`twp --help` の記述を修正しました。個人タスクのキュー(`--project __private__`)でも定期スケジュールを登録でき、ループが発火させます。
|
|
29
|
+
|
|
14
30
|
## 0.77.1
|
|
15
31
|
|
|
16
32
|
`twp support list --status` で `awaiting_requester`(ご回答・ご確認待ち)を指定できるようになりました。一覧・詳細には、依頼者に求めている内容(回答/承認/画面での確認)も表示されます。
|
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ TWP(Tocca Working Platform)を、ターミナルから使うための CLI
|
|
|
74
74
|
| **できる** | `twp outlook` / `twp teams` / `twp onedrive` による Microsoft 365 の読み取り(メール・添付・予定、Teams のチーム・チャネル・チャット・メッセージ・スレッド返信・自分宛てメンション、OneDrive のファイルの一覧・情報・ダウンロード)。TWP に Microsoft アカウントでログインしたことがあるユーザーが対象です。書き込みはメールの送信・返信・全員返信・転送(`twp outlook mail send` / `reply` / `reply-all` / `forward`)、Teams のチャット送信・チャネル投稿・スレッド返信(`twp teams message send` / `reply send`)、予定の作成・更新・削除(`twp outlook event create` / `update` / `delete`)、共有リンクの作成(`twp onedrive link create`)ができ(いずれも `--yes` が必要)、OneDrive へのアップロード(`twp onedrive item upload`)もできます |
|
|
75
75
|
| **できる** | `twp task-loop` による、TWP のタスクキューを手元の AI CLI に実行させる常駐ループ |
|
|
76
76
|
| **できる** | `twp agent-loop` による、エージェントループのキューの一覧・投入・更新・先頭への移動・削除と、期間を指定した実行履歴の参照。更新・移動・削除はテナントの管理者の権限が要ります |
|
|
77
|
-
| **できる** | `twp completion bash` / `zsh` / `fish` / `powershell` によるシェル補完(コマンド名・操作名・フラグ名。プロジェクトやステータスの値は補完しません)と、`twp configure`
|
|
77
|
+
| **できる** | `twp completion bash` / `zsh` / `fish` / `powershell` によるシェル補完(コマンド名・操作名・フラグ名。プロジェクトやステータスの値は補完しません)と、`twp configure` による既定のプロジェクト・出力形式・Backlog スペース・既定プロファイルの対話設定 |
|
|
78
78
|
| **できる** | スラッシュコマンド: `/help` `/mode` `/model` `/clear` `/context` `/doctor` `/exit` `/demo`(動作デモ) `/tasks` `/task` `/projects`。`/tasks` などの TWP 系は `twp task list` と同じ結果を画面に出すだけで、AI は動かしません(クレジットも消費しません)。スラッシュコマンドは TUI の中だけで使えます(`twp -p` では解釈しません) |
|
|
79
79
|
| **できる** | 自分用のスラッシュコマンドを markdown で追加すること(`.twp/commands/*.md` / `~/.twp/commands/*.md`・[下記](#スラッシュコマンドを自分で足す))。入力中の `@パス` でファイルを、`#ABC-123` でタスクの内容を AI へ添付できます |
|
|
80
80
|
| **できる** | 会話中の AI が TWP のデータを調べて使うこと。AI は必要な操作を検索し、内容を確かめてから実行します(TWP のデータを読む・書く操作は実行前に確認が表示され、削除は毎回確認します)。特定のタスクを確実に読ませたいときは `#ABC-123` と書いて添付できます |
|
|
@@ -165,7 +165,7 @@ twp task status update <ステータス> [--name <名前>] [--color <色>] [--is
|
|
|
165
165
|
twp task status delete <ステータス> --yes [--project <コード>]
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
-
- **個人タスク(プロジェクトに属さない自分だけのタスク)は `--project __private__` で操作します**(`twp task list --project __private__`)。キーは `PRIVATE-<番号>` です。担当者(`--assignee
|
|
168
|
+
- **個人タスク(プロジェクトに属さない自分だけのタスク)は `--project __private__` で操作します**(`twp task list --project __private__`)。キーは `PRIVATE-<番号>` です。担当者(`--assignee`)は個人タスクにはありません。コメント(`twp task comment`)は質問・回答を含めて `--project __private__` で使えます(`twp task comment list PRIVATE-<番号> --project __private__`)
|
|
169
169
|
- **`--status` / `--type` / `--assignee` は名前で指定できます**(`--assignee me` は自分)。候補が絞れないときは候補を出して止まります
|
|
170
170
|
- **渡せる名前は `twp task status list` / `type list` / `category list` / `milestone list` / `label list` で確認できます**(`name` 列の値をそのまま `--status` 等へ渡せます)。`is_default` が立っているものが、`twp task create` で省略したときに使われる値です。結果は名前解決と同じキャッシュ(既定10分)から返るので続けて打っても往復は増えません(最新にするなら `--refresh`)。個人タスク(`--project __private__`)にマイルストーンはありません。ステータスを作成・更新・削除すると手元の一覧キャッシュを捨てます(サーバ側の反映に時間がかかり新しい名前が見つからないときは、少し置いて `--refresh`)。標準ステータス(`default:*`)と、タスクが使っているステータスは削除できません
|
|
171
171
|
- **設定時応答メッセージ**: ステータスに `--response-message "<案内文>"`(500字まで・`""` で解除)を設定すると、`twp task create` / `update` でタスクがそのステータスに変わったとき、結果の先頭に `⚠ 設定時メッセージ(status=<値>): <案内文>` が出ます(`--output json` ではキー `notices`)。種別・カテゴリ・マイルストーン・ラベルの案内文は TWP の画面のタスク設定から設定でき、設定されていれば同じように出ます
|
|
@@ -1513,7 +1513,7 @@ twp backlog issue list [--project <キー>] [--status <名前>] [--assignee <
|
|
|
1513
1513
|
[--count <件数>] [--offset <件数>]
|
|
1514
1514
|
[--sort <項目>] [--order <asc|desc>] [--description-max <文字数>]
|
|
1515
1515
|
twp backlog issue get <課題キー> # 例: twp backlog issue get ACME-123
|
|
1516
|
-
twp backlog comment list <課題キー>
|
|
1516
|
+
twp backlog comment list <課題キー> [--limit <件数>] [--all] [--order <asc|desc>]
|
|
1517
1517
|
|
|
1518
1518
|
twp backlog attachment list <課題キー> # id / name / size / contentType
|
|
1519
1519
|
twp backlog attachment download <課題キー> <添付ID> --out <パス> # 実体をファイルへ書き出す
|
|
@@ -1523,13 +1523,14 @@ twp backlog issue update <課題キー> [--assignee <名前|ID>] [--status <
|
|
|
1523
1523
|
[--comment-file <パス>] [--project <キー|名称|ID>] --yes
|
|
1524
1524
|
```
|
|
1525
1525
|
|
|
1526
|
-
-
|
|
1526
|
+
- **`--space` を省略すると、`twp configure` で設定した既定の Backlog スペース、無ければ登録が1件だけのときのそのスペースを使います**(どちらの場合も、どのスペースを使ったかを必ず表示します)。登録が2件以上で既定も無ければ `--space` で指定してください。設定した既定が登録に見つからないときは、別のスペースへ落とさずに止まります
|
|
1527
1527
|
- `--space` には ID のほか、スペースURL(`https://example.backlog.jp`)とサブドメイン(`example`)が使えます
|
|
1528
1528
|
- **`--project` / `--status` / `--assignee` / `--created-user` は名前でも数値 ID でも指定できます。** 複数指定はカンマ区切りです(`--status 未対応,処理中`)。名前で指定するときは、候補が Backlog プロジェクト配下にしかないため `--project` が要ります
|
|
1529
1529
|
- ⚠ **`twp backlog issue list` の本文は既定で 1000 文字に切られます**(切られた課題には `descriptionTruncated: true` が付き、何件切られたかを実行のたびにお知らせします)。全文が要るときは `--description-max 0` か `twp backlog issue get`(常に全文)を使ってください
|
|
1530
1530
|
- `twp backlog comment list` の出力には担当・ステータスの変更履歴(`changeLog`)が含まれます
|
|
1531
1531
|
- `twp backlog attachment download` は **`--out` のパスへ実体をそのまま書き出します**(標準出力には書いた場所・バイト数・種別だけが出ます)。既存ファイルは上書きしません(`--force` を付けたときだけ上書きします)。書き出し先のディレクトリは自動で作りません。添付ID は `twp backlog attachment list` の `id` で、ファイル名では指定できません。落とす前の大きさは同じ一覧の `size` で分かります
|
|
1532
|
-
- **この API はカーソルを返さないため `--
|
|
1532
|
+
- **この API はカーソルを返さないため `--cursor` はありません。** 課題の続きは `--offset` で取得します(`--all` もありません)。`--count` の上限は 100 です
|
|
1533
|
+
- `twp backlog comment list` は `--limit`(`--count` と同じ意味・上限 100)と `--all`(コメント ID を辿って全件)が使えます。途中から辿るときは `--min-id` / `--max-id` を使います
|
|
1533
1534
|
- `--parent` には親課題の**数値 ID** を渡します(課題キーは使えません)。`--sort` の既定は `updated`、`--order` の既定は `desc` です
|
|
1534
1535
|
- `twp backlog status list` / `user list` の `--project` は **プロジェクトキー**(`ACME`)か数値 ID です(プロジェクト名では引けません)
|
|
1535
1536
|
|
|
@@ -1756,7 +1757,7 @@ source <(twp completion zsh) # zsh: ~/.zshrc の compinit より後に
|
|
|
1756
1757
|
twp completion fish > ~/.config/fish/completions/twp.fish
|
|
1757
1758
|
twp completion powershell | Out-String | Invoke-Expression # PowerShell: $PROFILE に書く
|
|
1758
1759
|
|
|
1759
|
-
#
|
|
1760
|
+
# 既定のプロジェクト・出力形式・Backlog スペース・既定プロファイルを対話で設定する(~/.twp/config.json に保存)
|
|
1760
1761
|
twp configure # いま解決されるプロファイルを設定
|
|
1761
1762
|
twp configure --profile dev # プロファイルを指定して設定
|
|
1762
1763
|
```
|
|
@@ -1965,6 +1966,8 @@ twp task-loop status --project <キー|UUID>
|
|
|
1965
1966
|
twp task-loop stop # このマシンで動いているループを止める
|
|
1966
1967
|
```
|
|
1967
1968
|
|
|
1969
|
+
`status` はランナーごとに最終ハートビート時刻と経過時間(`last=2026-10-11 11:58:37(2秒前)`)を出します。1サイクルごとに終了して外側で再起動する運用では、合間は `stale` と表示されるので、経過時間で平常の合間か停止かを見分けてください。`--output json`(`--query` で絞り込み可)で同じ内容を機械可読に取れます(`runners.items[].seconds_since_last_seen` 等)。パイプしても自動では json にならないので、スクリプトからは `--output json` を付けてください。取得に失敗した項目は `ok: false` と理由で返し、終了コードは 0 のままです(`runners.ok` 等を見てください)。経過時間は実行した端末の時計を基準にしています。
|
|
1970
|
+
|
|
1968
1971
|
### ⚠️ 実行する前に理解しておくこと(信頼境界)
|
|
1969
1972
|
|
|
1970
1973
|
**このループは、キューに入っている指示を、承認ゲートとサンドボックスを外した AI CLI として実行します。** つまりファイルの読み書きもコマンド実行も、都度の確認なしに走ります(`claude --dangerously-skip-permissions` / `codex -s danger-full-access` / `gemini --yolo` / `copilot --allow-all` 相当)。ループを無人で回すための設計であり、TUI の権限モデルはここには適用されません。
|
|
@@ -2121,6 +2124,23 @@ twp task-loop plan submit --file plan.json --check # 検査だけ(提出し
|
|
|
2121
2124
|
- **提出しただけではキューに積まれません。** 計画AIの終了後にループが一度に登録します(計画AIが走る間に状態が変わるので、上の検査はこのとき改めて行います)。提出が無いときは、従来どおり応答の文章から計画を取り出します
|
|
2122
2125
|
- 計画1回ごとに、ループのログと計画のログ(`plan-<時刻>-<サイクル>.log`)の末尾へ `PLAN_RESULT: {...}` の1行を残します。`source`(`submit`=提出 / `text`=文章から取り出し / `none`)・`planned`・`enqueued`・`dropped`(積まなかった step とその理由)・`unchecked`(提出時に効いていなかった検査)・`rejected_submissions`(`plan submit` で棄却された提出と理由。新しい順に最大5件)が読めます。計画AIが失敗した・中断したサイクルには出ません
|
|
2123
2126
|
|
|
2127
|
+
### 置換・廃止した機のランナー登録を一覧から外す(`runner list` / `runner remove`)
|
|
2128
|
+
|
|
2129
|
+
実行機を置き換える・廃止すると、新しい機は別の runner_id で登録され、古い機の登録は `stale` のまま一覧に残ります(応答が途絶えてから一定日数で自動的に非表示になります)。日数を待たずに外すときに使います。
|
|
2130
|
+
|
|
2131
|
+
```bash
|
|
2132
|
+
twp task-loop runner list --project <キー|UUID> [--output json|table|tsv] [--query <式>]
|
|
2133
|
+
twp task-loop runner remove --project <キー|UUID> <runner_id> [--output json]
|
|
2134
|
+
```
|
|
2135
|
+
|
|
2136
|
+
- **list** は登録ごとの状態(ループ実行機は `live` / `stale`、枠報告専用機は `reporting` / `stale`)・ホスト名・最終応答・版と、一覧から外れている台数(応答なしで自動的に非表示になった台数/手動で外した台数)を表示します。`--output json` は台数の内訳ごと1つのオブジェクトで出します
|
|
2137
|
+
- **remove は `--yes` なしでは外しません。** 対象(runner_id・ホスト名・最終応答)を表示し、確定用のコマンド(`--yes`)を案内します
|
|
2138
|
+
- **稼働中(`live`)の登録と、報告が続いている枠報告専用機は外せません**(サーバが拒否します)。機体を止め、応答が途絶えて `stale` になってから実行してください。強制的に外す手段はありません
|
|
2139
|
+
- 外した登録は削除されず非表示になるだけです。同じ runner_id が再び応答すれば一覧に戻ります
|
|
2140
|
+
- プロジェクトのキューで外すにはプロジェクトの管理者権限が必要です(個人タスクのキュー `--project __private__` は本人が外せます)
|
|
2141
|
+
- `twp task-loop status` も `stale` の登録があるときにこのコマンドを案内します
|
|
2142
|
+
- 終了コード: `0` 表示した/外した / `1` 対象が一覧に無い・`live` のため外せない(`--yes` なしの表示時) / `2` 引数の誤り・`--yes` なし / `3` サーバが 4xx を返した(`live` の 409・権限不足の 403 等) / `4` 5xx・通信失敗 / `5` 認証失敗
|
|
2143
|
+
|
|
2124
2144
|
### ループを回さない機から枠情報だけを送る(`capacity report`)
|
|
2125
2145
|
|
|
2126
2146
|
```bash
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{SCHEDULE_HELP,parseSchedule}from"./chunk-
|
|
4
|
-
import"./chunk-
|
|
5
|
-
import"./chunk-
|
|
3
|
+
import{SCHEDULE_HELP,parseSchedule}from"./chunk-6JAOPRD5.js";import"./chunk-WVCEKC7V.js";import"./chunk-RX5HWI4L.js";import{charCount,readBody}from"./chunk-6LSQCOCJ.js";import{AGENT_REPOSITORIES_PATH,AGENT_SCHEDULES_PATH,AGENT_SESSIONS_PATH}from"./chunk-RSSPNFSK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";
|
|
4
|
+
import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,NetworkError,UsageError,WaitTimeoutError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";
|
|
5
|
+
import"./chunk-VSJBJXZO.js";var LABEL="\u5B9A\u671F\u5B9F\u884C";var LIST_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","next_run_at","last_run_at","disabled_reason","owner_user_id"];var GET_COLUMNS=["schedule_id","name","enabled","schedule","repository_full_name","base_branch","ai_provider","ai_model","next_run_at","last_run_at","last_session_id","consecutive_failures","disabled_reason","owner_user_id","can_edit","can_disable","created_at","updated_at"];var RUN_COLUMNS=["run_id","created_at","t\
|
|
6
6
|
rigger","result","skip_reason","session_id","pr_url","error_message"];var NAME_MAX_CHARS=100;var INSTRUCTION_MAX_CHARS=1e4;var RUNS_MAX_LIMIT=100;var FORBIDDEN="AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u6A5F\u80FD\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\uFF08agent\uFF09\u304C\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u304B\u3001\u4ED6\u30E6\u30FC\u30B6\u30FC\u306E\u5B9A\u671F\u5B9F\u884C\u3092\u5909\u66F4\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059\u3002\u7DE8\u96C6\u30FB\u524A\u9664\u30FB\u6709\u52B9\u5316\u30FB\u4ECA\u3059\u3050\u5B9F\u884C\u306F\u30AA\u30FC\u30CA\u30FC\u672C\u4EBA\u3060\u3051\u3001\u7121\u52B9\u5316\u306F\u30AA\u30FC\u30CA\u30FC\u3068\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u7BA1\u7406\u8005\u304C\u3067\u304D\u307E\u3059\u3002";
|
|
7
7
|
var SCHEDULE_REF_HELP="<\u5B9A\u671F\u5B9F\u884C> \u306F\u5B9A\u671F\u5B9F\u884C ID\uFF08twp agent schedule list \u306E schedule_id \u5217\uFF09\u3067\u3059\u3002";var CREDIT_CONFIRMATION="AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C";function usageOf(op){return`twp agent schedule ${op} help`}function noArgs(input,op){if(input.args.length>0)throw new UsageError(`schedule ${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,
|
|
8
8
|
usageOf(op))}function scheduleId(input,op){const values=input.args.map(arg=>arg.trim());if(values.length>1)throw new UsageError(`schedule ${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u5F15\u6570\u306F <\u5B9A\u671F\u5B9F\u884C> \u3060\u3051\u3067\u3059: ${values.slice(1).join(" ")}`,usageOf(op));const value=values[0]??"";if(value==="")throw new UsageError("<\u5B9A\u671F\u5B9F\u884C>\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(op));if(!isSafePathSegment(value))throw new UsageError(
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{stepToItem}from"./chunk-
|
|
4
|
-
import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";
|
|
5
|
-
import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
|
|
3
|
+
import{stepToItem}from"./chunk-QGJYT4NH.js";import"./chunk-JUJSF5ZG.js";import{loadLocalConfig}from"./chunk-6SAHK3OR.js";import"./chunk-VYDPW2YO.js";import{loadAiConfig}from"./chunk-FABDZBDZ.js";import{parseOperations}from"./chunk-XMPHGOW4.js";import"./chunk-TTST7UDR.js";import{SKILL_PREFIX_RE,setSkillPrefix}from"./chunk-6CS5L24D.js";import"./chunk-N2UVRM3Z.js";import"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import{PRIVATE_PROJECT_PREFIX,
|
|
4
|
+
PRIVATE_PROJECT_REF,isPrivateProjectRef}from"./chunk-RMFLTSOV.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{acknowledgement,isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";import"./chunk-5WGOHFAS.js";
|
|
5
|
+
import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30A2\u30A4\u30C6\u30E0";var STATUSES=["pending","processing","completed","failed"];var AI_TYPES=["claude","gemini","codex","copilot"];var EFFORTS=["low","medium","high","xhigh","max"];var PRIORITIES=["P0","P1","P2","P3"];var LIST_COLUMNS=["item_id","status","task_key","label","ai_type","ai_effort","runner_id","created_at"];var GET_COLUMNS=["item_id","status","task_key","label","prompt","ai_type","ai_model","ai_effort","runn\
|
|
6
6
|
er_id","attempt_count","reclaim_count","error_message","created_by_name","created_at","started_at","completed_at"];var HISTORY_COLUMNS=["item_id","status","task_key","skill","ai_type","runner_id","duration_ms","cost_usd","created_at"];var PLAN_RESULTS=["enqueued","empty","json_not_found","ai_failed","error","skipped","gated","locked","abandoned"];var PLAN_HISTORY_COLUMNS=["plan_run_id","result","runner_id","ai_type","duration_ms","cost_usd","step_count","started_at"];var PROJECT_FLAG={name:"--pr\
|
|
7
7
|
oject",summary:"\u30AD\u30E5\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u307E\u305F\u306F ID\u3002\u7701\u7565\u6642\u306F TWP_PROJECT / .twp/config.json / ~/.twp/config.json\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var ITEM_FLAG={name:"--item",summary:"\u30A2\u30A4\u30C6\u30E0\u306E ID\uFF08item_id\uFF09\u3002\u4F4D\u7F6E\u5F15\u6570\u3068\u540C\u3058\u610F\u5473\uFF08\u4E21\u65B9\u6307\u5B9A\u306F\u30A8\u30E9\u30FC\uFF09",takesValue:true,placeholder:"\
|
|
8
8
|
<\u30A2\u30A4\u30C6\u30E0ID>"};var FORBIDDEN_CORE="\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\uFF08admin \u30ED\u30FC\u30EB\uFF09\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u500B\u4EBA\u30AD\u30E5\u30FC\u3092\u9664\u304F\uFF09";var CREATE_HINT="\u30A2\u30A4\u30C6\u30E0\u306E\u6295\u5165\uFF08twp agent-loop create\uFF09\u306F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u306A\u3089\u7BA1\u7406\u8005\u3067\u306A\u304F\u3066\u3082\u884C\u3048\u307E\u3059";var FORBIDDEN_UPDATE=`\
|
|
@@ -57,31 +57,34 @@ r["item_id"])} \u306F ${String(r["status"])} \u306E\u305F\u3081\u3001\u4E26\u307
|
|
|
57
57
|
|
|
58
58
|
\u524A\u9664\u306B\u306F\u66F8\u304D\u8FBC\u307F\u30B2\u30FC\u30C8\u304C\u639B\u304B\u308A\u307E\u3059: ${FORBIDDEN_DELETE}\u3002
|
|
59
59
|
|
|
60
|
-
`+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_DELETE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp agent-loop delete help"),plan:input=>({method:"DELETE",path:itemPath(input)}),summarize:body=>acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),raw:body=>({...acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),schedule_window_released:isRecord(body)?body["schedule_window_released"]??null:null})};
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
`+PROJECT_HELP,destructive:true,forbidden:FORBIDDEN_DELETE,flags:[ITEM_FLAG,PROJECT_FLAG],prepare:(input,ctx)=>prepareItem(input,ctx,"twp agent-loop delete help"),plan:input=>({method:"DELETE",path:itemPath(input)}),summarize:body=>acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),raw:body=>({...acknowledgement(body,"\u30A2\u30A4\u30C6\u30E0\u524A\u9664"),schedule_window_released:isRecord(body)?body["schedule_window_released"]??null:null})};var PRIVATE_QUEUE_PATH="/api/v2/tasks/privat\
|
|
61
|
+
e/agent-loop";var HISTORY_PROJECT_FLAG={...PROJECT_FLAG,summary:`${PROJECT_FLAG.summary}\u3002\u500B\u4EBA\u30AD\u30E5\u30FC\u306F ${PRIVATE_PROJECT_REF}`,placeholder:`<\u30B3\u30FC\u30C9|ID|${PRIVATE_PROJECT_REF}>`};var HISTORY_PROJECT_HELP=`${PROJECT_HELP}
|
|
62
|
+
\u500B\u4EBA\u30AD\u30E5\u30FC\uFF08\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u30EB\u30FC\u30D7\uFF09\u306E\u53F0\u5E33\u306F --project ${PRIVATE_PROJECT_REF} \u3067\u5F15\u3051\u307E\u3059\uFF08\u81EA\u5206\u306E\u500B\u4EBA\u30AD\u30E5\u30FC\u3060\u3051\u304C\u5BFE\u8C61\u3067\u3059\uFF09\u3002`;async function prepareHistoryQueue(input,ctx){const project=input.flags.get("--project");if(project!==void 0&&isPrivateProjectRef(project)){return withResolved(input,{queuePath:PRIVATE_QUEUE_PATH})}if(project!==
|
|
63
|
+
void 0&&project.trim().toLowerCase().startsWith(PRIVATE_PROJECT_PREFIX)){throw new UsageError(`--project ${project.trim()} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`,`\u500B\u4EBA\u30AD\u30E5\u30FC\u306F --project ${PRIVATE_PROJECT_REF} \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5BFE\u8C61\u306F\u5E38\u306B\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u672C\u4EBA\u306E\u500B\u4EBA\u30AD\u30E5\u30FC\u3067\u3059\uFF09\u3002`)}const resolved=await prepareProject(input,ctx);return withResolved(
|
|
64
|
+
resolved,{queuePath:basePath(resolved)})}function historyBound(raw){return/^\d{4}-\d{2}-\d{2}$/.test(raw.trim())?`${raw.trim()}T00:00:00Z`:raw.trim()}var historyResource={name:"history",summary:"\u5B9F\u884C\u5C65\u6B74\uFF08\u671F\u9593\u6307\u5B9A\u30FB\u53F0\u5E33\u306E\u6B63\u672C\uFF09",operations:[{name:"list",summary:"\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B",usage:"twp agent-loop history list --since <\u65E5\u4ED8|\u65E5\u6642> [--until <\u65E5\u4ED8|\u65E5\u6642>] [--sta\
|
|
65
|
+
tus <\u72B6\u614B>] [--task-key <\u30AD\u30FC>] [--runner <ID>] [--skill <\u30B9\u30AD\u30EB>] [--full] [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u4F5C\u6210\u6642\u523B\uFF08sort_order\uFF09\u3067\u671F\u9593\u3092\u5207\u308A\u307E\u3059\u3002--since \u306F\u305D\u306E\u6642\u523B\u3092\u542B\u307F\u3001--until \u306F\u542B\u307F\u307E\u305B\u3093\uFF08\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09\u3002
|
|
63
66
|
YYYY-MM-DD \u306F UTC \u306E 0 \u6642\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002ISO8601\uFF082026-09-01T09:00:00+09:00\uFF09\u3082\u6E21\u305B\u307E\u3059\u3002
|
|
64
67
|
\u65E2\u5B9A\u3067\u306F result / prompt \u3092\u8FD4\u3057\u307E\u305B\u3093\uFF08--full \u3067\u8FD4\u3057\u307E\u3059\u3002\u5FDC\u7B54\u304C\u6570\u5341\u500D\u306B\u306A\u308A\u307E\u3059\uFF09\u3002
|
|
65
68
|
|
|
66
|
-
${
|
|
69
|
+
${HISTORY_PROJECT_HELP}
|
|
67
70
|
|
|
68
71
|
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--since",summary:"\u671F\u9593\u306E\u958B\u59CB\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u3080\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--until",summary:"\u671F\u9593\u306E\u7D42\u4E86\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u307E\u306A\u3044\u30FB\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--status",summary:`\u72B6\u614B\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${STATUSES.
|
|
69
72
|
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u72B6\u614B>"},{name:"--task-key",summary:"\u30BF\u30B9\u30AF\u30AD\u30FC\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u5B8C\u5168\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u30AD\u30FC>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--skill",summary:"\u30B9\u30AD\u30EB\uFF08\u63A5\u982D\u8F9E\u7121\u3057\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,
|
|
70
|
-
placeholder:"<\u30B9\u30AD\u30EB>"},{name:"--ai-type",summary:"AI \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<AI>"},{name:"--full",summary:"result / prompt \u3082\u8FD4\u3059",takesValue:false},
|
|
71
|
-
"--status",STATUSES);return
|
|
72
|
-
input.flags,"--ai-type"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>historyPaging.items(body).map(row=>pick(row,HISTORY_COLUMNS)),raw:body=>historyPaging.items(body)}]};var planHistoryResource={name:"plan-history",summary:"\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u5B9F\u884C\u8A18\u9332\uFF08\u671F\u9593\u6307\u5B9A\uFF09",operations:[{name:"list",summary:"\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\u3092\u4E00\u89A7\u3059\u308B",
|
|
73
|
-
usage:"twp agent-loop plan-history list --since <\u65E5\u4ED8|\u65E5\u6642> [--until <\u65E5\u4ED8|\u65E5\u6642>] [--result <\u7D50\u679C>] [--runner <ID>] [--full]",description:`\u8A08\u753B\u306E\u958B\u59CB\u6642\u523B\u3067\u671F\u9593\u3092\u5207\u308A\u307E\u3059\u3002--since \u306F\u305D\u306E\u6642\u523B\u3092\u542B\u307F\u3001--until \u306F\u542B\u307F\u307E\u305B\u3093\uFF08\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09\u3002
|
|
73
|
+
placeholder:"<\u30B9\u30AD\u30EB>"},{name:"--ai-type",summary:"AI \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<AI>"},{name:"--full",summary:"result / prompt \u3082\u8FD4\u3059",takesValue:false},HISTORY_PROJECT_FLAG],paging:historyPaging,async prepare(input,ctx){rejectArgs(input,"history list");if(nonEmpty(input.flags,"--since")===void 0){throw new UsageError("--since \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp agent-loop history list --since 2026-09-01")}oneOf(
|
|
74
|
+
input.flags,"--status",STATUSES);return prepareHistoryQueue(input,ctx)},plan(input){const until=nonEmpty(input.flags,"--until");return{method:"GET",path:`${requireResolved(input,"queuePath")}/history`,query:{from:historyBound(nonEmpty(input.flags,"--since")),to:until===void 0?void 0:historyBound(until),fields:input.flags.has("--full")?"full":void 0,status:oneOf(input.flags,"--status",STATUSES),task_key:nonEmpty(input.flags,"--task-key"),runner_id:nonEmpty(input.flags,"--runner"),skill:nonEmpty(input.
|
|
75
|
+
flags,"--skill"),ai_type:nonEmpty(input.flags,"--ai-type"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>historyPaging.items(body).map(row=>pick(row,HISTORY_COLUMNS)),raw:body=>historyPaging.items(body)}]};var planHistoryResource={name:"plan-history",summary:"\u8A08\u753B\u30D5\u30A7\u30FC\u30BA\u306E\u5B9F\u884C\u8A18\u9332\uFF08\u671F\u9593\u6307\u5B9A\uFF09",operations:[{name:"list",summary:"\u671F\u9593\u3092\u6307\u5B9A\u3057\u3066\u8A08\u753B\u306E\u5B9F\u884C\u8A18\u9332\u3092\u4E00\u89A7\u3059\u308B",
|
|
76
|
+
usage:"twp agent-loop plan-history list --since <\u65E5\u4ED8|\u65E5\u6642> [--until <\u65E5\u4ED8|\u65E5\u6642>] [--result <\u7D50\u679C>] [--runner <ID>] [--full] [--project <\u30B3\u30FC\u30C9|ID|__private__>]",description:`\u8A08\u753B\u306E\u958B\u59CB\u6642\u523B\u3067\u671F\u9593\u3092\u5207\u308A\u307E\u3059\u3002--since \u306F\u305D\u306E\u6642\u523B\u3092\u542B\u307F\u3001--until \u306F\u542B\u307F\u307E\u305B\u3093\uFF08\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09\u3002
|
|
74
77
|
YYYY-MM-DD \u306F UTC \u306E 0 \u6642\u3068\u3057\u3066\u6271\u3044\u307E\u3059\u3002ISO8601\uFF082026-09-01T09:00:00+09:00\uFF09\u3082\u6E21\u305B\u307E\u3059\u3002
|
|
75
78
|
--result \u306F ${PLAN_RESULTS.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3002
|
|
76
79
|
\u65E2\u5B9A\u3067\u306F\u6700\u7D42\u5831\u544A\u3068 steps \u306E\u672C\u6587\u3092\u8FD4\u3057\u307E\u305B\u3093\uFF08--full \u3067\u8FD4\u3057\u307E\u3059\uFF09\u3002
|
|
77
80
|
AI \u306E\u6570\u5024\uFF08cost_usd \u7B49\uFF09\u306F claude \u4EE5\u5916\u3067\u306F null \u3067\u3059\u3002\u5408\u8A08\u3059\u308B\u3068\u304D\u306F 0 \u3068\u3057\u3066\u8DB3\u3055\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
|
|
78
81
|
|
|
79
|
-
${
|
|
82
|
+
${HISTORY_PROJECT_HELP}
|
|
80
83
|
|
|
81
84
|
`+LIST_PAGING_HELP,flags:[...LIST_FLAGS,{name:"--since",summary:"\u671F\u9593\u306E\u958B\u59CB\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u3080\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--until",summary:"\u671F\u9593\u306E\u7D42\u4E86\uFF08\u3053\u306E\u6642\u523B\u3092\u542B\u307E\u306A\u3044\u30FB\u7701\u7565\u6642\u306F\u73FE\u5728\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8|\u65E5\u6642>"},{name:"--result",summary:`\u7D50\u679C\u3067\u7D5E\u308A\u8FBC\u3080\uFF08${PLAN_RESULTS.
|
|
82
|
-
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u7D50\u679C>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--full",summary:"\u6700\u7D42\u5831\u544A\u3068 steps \u306E\u672C\u6587\u3082\u8FD4\u3059",takesValue:false},
|
|
83
|
-
\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp agent-loop plan-history list --since 2026-10-01")}oneOf(input.flags,"--result",PLAN_RESULTS);return
|
|
84
|
-
runner_id:nonEmpty(input.flags,"--runner"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>planHistoryPaging.items(body).map(row=>pick(row,PLAN_HISTORY_COLUMNS)),raw:body=>planHistoryPaging.items(body)}]};var agentLoopDomain={name:"agent-loop",summary:"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30AD\u30E5\u30FC\uFF08\u30A2\u30A4\u30C6\u30E0\u306E\u4E00\u89A7\u30FB\u6295\u5165\u30FB\u66F4\u65B0\u30FB\u4E26\u3073\u66FF\u3048\u30FB\u524A\u9664\u30FB\u5B9F\u884C\u5C65\u6B74\uFF09",
|
|
85
|
+
join(" / ")}\uFF09`,takesValue:true,placeholder:"<\u7D50\u679C>"},{name:"--runner",summary:"\u5B9F\u884C\u6A5F\uFF08runner_id\uFF09\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<runner_id>"},{name:"--full",summary:"\u6700\u7D42\u5831\u544A\u3068 steps \u306E\u672C\u6587\u3082\u8FD4\u3059",takesValue:false},HISTORY_PROJECT_FLAG],paging:planHistoryPaging,async prepare(input,ctx){rejectArgs(input,"plan-history list");if(nonEmpty(input.flags,"--since")===void 0){throw new UsageError("\
|
|
86
|
+
--since \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp agent-loop plan-history list --since 2026-10-01")}oneOf(input.flags,"--result",PLAN_RESULTS);return prepareHistoryQueue(input,ctx)},plan(input){const until=nonEmpty(input.flags,"--until");return{method:"GET",path:`${requireResolved(input,"queuePath")}/plan/history`,query:{from:historyBound(nonEmpty(input.flags,"--since")),to:until===void 0?void 0:historyBound(until),fields:input.flags.has("--full")?"full":void 0,result:oneOf(input.
|
|
87
|
+
flags,"--result",PLAN_RESULTS),runner_id:nonEmpty(input.flags,"--runner"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}},summarize:body=>planHistoryPaging.items(body).map(row=>pick(row,PLAN_HISTORY_COLUMNS)),raw:body=>planHistoryPaging.items(body)}]};var agentLoopDomain={name:"agent-loop",summary:"\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30EB\u30FC\u30D7\u306E\u30AD\u30E5\u30FC\uFF08\u30A2\u30A4\u30C6\u30E0\u306E\u4E00\u89A7\u30FB\u6295\u5165\u30FB\u66F4\u65B0\u30FB\u4E26\u3073\u66FF\u3048\u30FB\u524A\u9664\u30FB\u5B9F\u884C\u5C65\u6B74\uFF09",
|
|
85
88
|
operations:[{name:"list",summary:"\u30AD\u30E5\u30FC\u306E\u30A2\u30A4\u30C6\u30E0\u3092\u4E00\u89A7\u3059\u308B\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:"twp agent-loop list [--status <\u72B6\u614B>] [--limit <\u4EF6\u6570>] [--all] [--project <\u30B3\u30FC\u30C9|ID>]",description:`--status \u306F ${STATUSES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3002\u7701\u7565\u3059\u308B\u3068\u5168\u72B6\u614B\u3092\u65B0\u3057\u3044\u9806\u306B\u8FD4\u3057\u307E\u3059\u3002
|
|
86
89
|
\u671F\u9593\u3067\u5207\u3063\u305F\u5B9F\u884C\u5C65\u6B74\u306F twp agent-loop history list \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\uFF08\u3053\u3061\u3089\u306F\u5B8C\u4E86\u6E08\u307F\u3092\u5927\u91CF\u306B\u6301\u3064\u3068\u9045\u304F\u306A\u308A\u307E\u3059\uFF09\u3002
|
|
87
90
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-
|
|
4
|
-
detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-
|
|
3
|
+
import{failureHint,isAuthError,isCliFatalText,isRateLimited,isServerAiType,isUntrusted,maxTurnsReached,rateLimitWaitSeconds,tailForScan}from"./chunk-ZOOEH7ZE.js";import{detectAiClis}from"./chunk-5SONMN6K.js";import{expandServerSkills,prepareSkillOverlay}from"./chunk-QGRBZ2C2.js";import"./chunk-MYBIPHZ7.js";import"./chunk-A4LFG7MW.js";import"./chunk-VRBI2NPI.js";import{ClaudeStreamRenderer}from"./chunk-JUJSF5ZG.js";import{DEFAULT_CLAUDE_LAUNCHER,activeSlotPath,
|
|
4
|
+
detectClaudeAutoSwitch,isClaudeAi,isUsableModelId,modelFitsRoute,resolveSpawnTarget,usesBedrock,wrapWithAutoSwitch}from"./chunk-FABDZBDZ.js";import"./chunk-6CS5L24D.js";import{isForceOnly,killProcessTree,system32}from"./chunk-N2UVRM3Z.js";import"./chunk-O52RKZCC.js";import"./chunk-LDBYJPRD.js";import"./chunk-RMFLTSOV.js";import"./chunk-VFPY2A23.js";import{findExecutable,isWindowsDriveAbsolute}from"./chunk-PMOUHEJQ.js";import"./chunk-J7QYPKVK.js";
|
|
5
5
|
import"./chunk-5WGOHFAS.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{spawnSync}from"child_process";import fs2 from"fs";import path2 from"path";import{spawn}from"child_process";import fs from"fs";import path from"path";var DEFAULT_AI_TIMING={abortGraceMs:5e3,abortReapMs:2e3,pollIntervalMs:5e3};function resolveTiming(over){return{abortGraceMs:over?.abortGraceMs??DEFAULT_AI_TIMING.abortGraceMs,abortReapMs:over?.abortReapMs??DEFAULT_AI_TIMING.abortReapMs,pollIntervalMs:over?.pollIntervalMs??DEFAULT_AI_TIMING.pollIntervalMs}}var MAX_RETAINED_BYTES=4*1024*1024;function closeStream(stream){return new Promise(resolve=>{if(stream===null)return resolve();stream.once("error",()=>resolve());stream.end(()=>resolve())})}function buildArgs(req,cfg,env,workspace){
|
|
6
6
|
const warnings=[];const requested=(req.model??"").trim();const usable=requested!==""&&isUsableModelId(requested);if(requested!==""&&!usable){warnings.push(`ai_model '${requested}' \u306F\u4F7F\u3048\u306A\u3044\u5F62\u3067\u3059 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fitsRoute=!usable||!isClaudeAi(req.ai)||modelFitsRoute(requested,env);if(usable&&!fitsRoute){warnings.push(`ai_model '${requested}' \u306F\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\uFF08\u3053\u306E\u6A5F\u4F53\u306F ${usesBedrock(
|
|
7
7
|
env)?"Bedrock":"Anthropic \u76F4"}\uFF09 \u2192 \u30AB\u30C6\u30B4\u30EA\u65E2\u5B9A\u306E\u30E2\u30C7\u30EB\u3092\u4F7F\u3044\u307E\u3059`)}const fallback=cfg.modelFor(req.ai,req.category,env);const safeFallback=fallback===""||!isClaudeAi(req.ai)||modelFitsRoute(fallback,env)?fallback:"";if(fallback!==""&&safeFallback===""){warnings.push(`CLAUDE_MODEL '${fallback}' \u3082\u73FE\u5728\u306E\u5B9F\u884C\u7D4C\u8DEF\u3067\u306F\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093 \u2192 \u30E2\u30C7\u30EB\u3092\u6307\u5B9A\u3057\u307E\u305B\u3093`)}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-
|
|
4
|
-
import"./chunk-
|
|
3
|
+
import{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows}from"./chunk-OF5JPNLD.js";import"./chunk-HKEW6XIC.js";import"./chunk-EXT4AIDF.js";import"./chunk-CADCERVL.js";import"./chunk-JJSBBWJ5.js";import"./chunk-RX5HWI4L.js";
|
|
4
|
+
import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";
|
|
5
5
|
import"./chunk-VSJBJXZO.js";export{FROM_FLAG,MANHOUR_DESCRIPTION,MANHOUR_FROM_FLAG,MANHOUR_TO_FLAG,MONTH_FLAG,TO_FLAG,analysisDomain,analysisForbidden,currentMonth,dataOf,listIn,manhourNotes,manhourQuery,manhourRows,monthRange,monthsBetween,noArgs,profitRows,rangeNotes,recordOf,staffKpiRows,workloadDistributionNotes,workloadDistributionRows};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{composeDocument,htmlToText,metaLine}from"./chunk-C7MO3RHJ.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{
|
|
4
|
-
withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-
|
|
3
|
+
import{composeDocument,htmlToText,metaLine}from"./chunk-C7MO3RHJ.js";import{boundedText}from"./chunk-JJSBBWJ5.js";import{readBody}from"./chunk-6LSQCOCJ.js";import{ANNOUNCEMENTS_PATH}from"./chunk-RSSPNFSK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,positiveInteger}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import{requireResolved,
|
|
4
|
+
withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var LABEL="\u304A\u77E5\u3089\u305B";var LIST_COLUMNS=["id","publish_start_at","sender_name","category_name","title","is_read","require_confirmation","is_confirmed"];var UNCONFIRMED_COLUMNS=["id","publish_start_at","publish_end_at","importance","title"];var GET_COLUMNS=["id","title","sender_name","category_name","importance_name","publish_start_at","publish_end_at","is_organization","is_read","require_confirmation","is_confirmed","allow_replies","link_url"];var REPLY_COLUMNS=["id","created_at","\
|
|
5
5
|
user_name","is_mine","content"];var REPLY_MAX_CHARS=2e3;function noArgs(input,op){if(input.args.length>0){throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp announcement ${op} help`)}}function checkId(raw,help){const id=raw.trim();if(id==="")throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);if(!isSafePathSegment(id)){throw new UsageError(`\u304A\u77E5\u3089\u305B\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\
|
|
6
6
|
\u5024\u3067\u3059: ${id}`,"\u304A\u77E5\u3089\u305B\u306E ID \u306F twp announcement list \u306E id \u5217\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002")}return id}function announcementId(input,op){const help=`twp announcement ${op} help`;const[raw,...rest]=input.args;if(rest.length>0)throw new UsageError(`${op} \u304C\u53D7\u3051\u53D6\u308C\u308B\u304A\u77E5\u3089\u305B ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,help);return checkId(raw??"",help)}function announcementIds(input){
|
|
7
7
|
const help="twp announcement read help";if(input.args.length===0)throw new UsageError("\u304A\u77E5\u3089\u305B\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",help);return[...new Set(input.args.map(raw=>checkId(raw,help)))]}function itemPath(id,suffix=""){return`${ANNOUNCEMENTS_PATH}/${encodeURIComponent(id)}${suffix}`}function envelope(body,what){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-
|
|
4
|
-
import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{
|
|
5
|
-
|
|
3
|
+
import{CommandModelMissingError,MAX_REPORTED_VIOLATIONS,loadCommandModelDomain,loadCommandModelRoutes,validateBody,validateQuery}from"./chunk-NZ7WI4RZ.js";import{NO_REDACT_FLAG,NO_REDACT_NOTICE,exitCodeFor,fetchAllPages,reportError}from"./chunk-QA53SS3M.js";import"./chunk-G7QVPGEN.js";import"./chunk-Q3B65OFC.js";import{evaluateQuery}from"./chunk-GFLGXGWE.js";import{renderOutput}from"./chunk-PO35MCYP.js";import{describeWaitResult,parseWaitOptions,waitUntilTerminal}from"./chunk-WVCEKC7V.js";
|
|
4
|
+
import{redactSecretValues,redactSecrets,withDebug}from"./chunk-LDBYJPRD.js";import{parseOperationArgs,repeatedValues}from"./chunk-RX5HWI4L.js";import{readBody}from"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import{ApiError,TwpApiClient,appendQuery}from"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import{DEFAULT_MAX_ITEMS,DEFAULT_MAX_PAGES,envelopePaging,isPageNumberEnvelope,pageRangeNotes,positiveInteger,readEnvelopeCursor,
|
|
5
|
+
readPageNumberCursor,shellQuote}from"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-3ZRMMBP5.js";import{ApiResponseError,EXIT_OK,EXIT_WAIT_TIMEOUT,NetworkError,UsageError}from"./chunk-VFPY2A23.js";import{GLOBAL_OPTIONS_HELP}from"./chunk-PECIBNFD.js";import{AuthSession,NotLoggedInError,SessionExpiredError,loadCredentials}from"./chunk-XNLIEUAW.js";import{httpFetch}from"./chunk-J7QYPKVK.js";import{effectiveApiUrl,resolveConfiguredOutput,resolveProfile}from"./chunk-EDF4U5BT.js";
|
|
6
6
|
import"./chunk-RZVI6PMW.js";import{HELP_TOKEN}from"./chunk-W4E4F2ZA.js";import"./chunk-QQRJLH6B.js";import{OUTPUT_FORMATS,resolveOutputFormat}from"./chunk-74BPZOKU.js";import"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MIN_SEGMENT_CHARS=3;var parsedCache=new WeakMap;function splitSegments(path){return path.split("/").filter(segment=>segment!=="")}function parseRoutes(routes){const cached=parsedCache.get(routes);if(cached!==void 0)return cached;const parsed=[];for(const[key,domain]of Object.entries(routes.routes)){const space=key.indexOf(" ");if(space<=0)continue;const template=key.slice(space+1);parsed.push({method:key.slice(0,space),template,domain,segments:splitSegments(template).map(segment=>/^\{[^/{}]+\}$/.
|
|
7
7
|
test(segment)?null:segment)})}parsedCache.set(routes,parsed);return parsed}function matches(route,segments){if(route.segments.length!==segments.length)return false;return route.segments.every((literal,i)=>literal===null||literal===segments[i])}function compareSpecificity(a,b){const literals=route=>route.segments.filter(segment=>segment!==null).length;const diff=literals(b)-literals(a);if(diff!==0)return diff;for(let i=0;i<a.segments.length;i+=1){const aLiteral=a.segments[i]!==null;const bLiteral=b.
|
|
8
8
|
segments[i]!==null;if(aLiteral!==bLiteral)return aLiteral?-1:1}return 0}function lookupRoute(routes,method,path){const segments=splitSegments(path);const hits=parseRoutes(routes).filter(route=>matches(route,segments));const sameMethod=hits.filter(route=>route.method===method).sort(compareSpecificity);const best=sameMethod[0];if(best!==void 0)return{kind:"matched",domain:best.domain,template:best.template};if(hits.length>0){const[top]=[...hits].sort(compareSpecificity);const template=top.template;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-
|
|
4
|
-
diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-N2UVRM3Z.js";import"./chunk-LDBYJPRD.js";import"./chunk-
|
|
5
|
-
import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-
|
|
3
|
+
import{RESIDENT_TOKEN_CAP,activateModeFiles,activatePermissionSettings,buildResidentSet,buildSystemPrompt,createAuditLogger,createTwpToolkit,currentBranch,describeAuditLog,describeToolCatalog,displayCwd,executeTool,findProjectTwpSubdir,localTools,lstatOrNull,parseFrontMatter,parseRule,persistProjectAllow,projectPermissionsPath,projectRootFor,readFileTool,residentInputs,resolveGitExecutable,runTurn,secretReason}from"./chunk-DLJQE2B5.js";import"./chunk-NZ7WI4RZ.js";import{buildDiffLines,
|
|
4
|
+
diffStat}from"./chunk-VRBI2NPI.js";import"./chunk-N2UVRM3Z.js";import"./chunk-LDBYJPRD.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-II5RVJQN.js";import"./chunk-VFPY2A23.js";import{RelayError,builtinCatalog,createRuntime,loadCachedCatalog,modelLabel,pickModel,toModelInfos}from"./chunk-JQBXLZTJ.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";
|
|
5
|
+
import"./chunk-XNLIEUAW.js";import{proxyDiagnostics}from"./chunk-J7QYPKVK.js";import{checkMinSupportedVersion,isBelowMinSupported,minSupportedBlockMessage}from"./chunk-DXXFUNYN.js";import"./chunk-EDF4U5BT.js";import{configReadDirs,twpHomeDir}from"./chunk-RZVI6PMW.js";import{parseArgv}from"./chunk-JRZ2Q5UZ.js";import{applyPermissionMode,checkPermission,describePermissionMode,getMode,isModeId,modeSource,nextMode}from"./chunk-2LOT54OO.js";import"./chunk-W4E4F2ZA.js";
|
|
6
6
|
import"./chunk-QQRJLH6B.js";import{isFullWidth,isWide,stringWidth,stripAnsi}from"./chunk-UREA4ZIG.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import{require_fuzzysort}from"./chunk-DIMZRTLE.js";import{__commonJS,__export,__require,__toESM}from"./chunk-VSJBJXZO.js";var require_react_production=__commonJS({"node_modules/react/cjs/react.production.js"(exports){"use strict";var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element");var REACT_PORTAL_TYPE=Symbol.for("react.portal");var REACT_FRAGMENT_TYPE=Symbol.for("react.fragment");var REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode");var REACT_PROFILER_TYPE=Symbol.for("react.profiler");var REACT_CONSUMER_TYPE=Symbol.for("react.consumer");var REACT_CONTEXT_TYPE=Symbol.for("react.context");var REACT_FORWARD_REF_TYPE=Symbol.
|
|
7
7
|
for("react.forward_ref");var REACT_SUSPENSE_TYPE=Symbol.for("react.suspense");var REACT_MEMO_TYPE=Symbol.for("react.memo");var REACT_LAZY_TYPE=Symbol.for("react.lazy");var REACT_ACTIVITY_TYPE=Symbol.for("react.activity");var REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition");var MAYBE_ITERATOR_SYMBOL=Symbol.iterator;function getIteratorFn(maybeIterable){if(null===maybeIterable||"object"!==typeof maybeIterable)return null;maybeIterable=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||
|
|
8
8
|
maybeIterable["@@iterator"];return"function"===typeof maybeIterable?maybeIterable:null}var ReactNoopUpdateQueue={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}};var assign=Object.assign;var emptyObject={};function Component(props,context,updater){this.props=props;this.context=context;this.refs=emptyObject;this.updater=updater||ReactNoopUpdateQueue}Component.prototype.isReactComponent={};Component.prototype.setState=
|
|
@@ -1212,7 +1212,7 @@ cwd()){const listed=await gitListFiles(cwd2);const raw=listed??await walkFiles(c
|
|
|
1212
1212
|
1;const after=/^[^\s]*/.exec(text.slice(cursor))?.[0]??"";return{query,start,end:cursor+after.length}}var TWP_SLASH_ROUTES={"/tasks":{domain:"task",operation:"list"},"/task":{domain:"task",operation:"get"},"/projects":{domain:"project",operation:"list"}};function isTwpSlashCommand(name){return Object.hasOwn(TWP_SLASH_ROUTES,name)}async function runTwpSlashCommand(name,args,deps){const route=TWP_SLASH_ROUTES[name];if(!Object.hasOwn(TWP_SLASH_ROUTES,name)||route===void 0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: ${name}
|
|
1213
1213
|
`}}const parsed=parseArgv([route.domain,route.operation,...args]);if(parsed.command!=="domain"||parsed.domain!==route.domain){return{code:2,out:"",err:`${name}: \u3053\u306E\u5F15\u6570\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF08${args.join(" ")}\uFF09
|
|
1214
1214
|
`}}if(parsed.unknown.length>0){return{code:2,out:"",err:`\u4E0D\u660E\u306A\u5F15\u6570: ${parsed.unknown.join(" ")}
|
|
1215
|
-
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-
|
|
1215
|
+
`}}let out="";let err="";const io={out:text=>void(out+=text),err:text=>void(err+=text),isTty:true};const globals={profile:parsed.profile??deps.profile,...parsed.output!==void 0?{output:parsed.output}:{},...parsed.query!==void 0?{query:parsed.query}:{},dryRun:parsed.dryRun,debug:parsed.debug,yes:parsed.yes,refresh:parsed.refresh};const{runDomain}=await import("./run-SYMKOV3Z.js");try{const code=await runDomain({domain:route.domain,...parsed.operation!==void 0?{operation:parsed.operation}:
|
|
1216
1216
|
{},argv:parsed.domainArgv,help:parsed.domainHelp,globals,version:deps.version,io,...deps.fetchImpl!==void 0?{fetchImpl:deps.fetchImpl}:{}});return{code,out,err}}catch(e){return{code:1,out,err:`${err}${e.message}
|
|
1217
1217
|
`}}}var GIT_LOG_OUTPUT=["9f3c1a2 feat(ui): \u4E00\u89A7\u306E\u30D5\u30A3\u30EB\u30BF\u3092 URL \u30AF\u30A8\u30EA\u3068\u540C\u671F\u3059\u308B","4b8e0d7 fix(ui): \u4EEE\u60F3\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u884C\u9AD8\u3055\u3092\u5B9F\u6E2C\u5024\u306B\u5408\u308F\u305B\u308B","c15a99e refactor(api): \u4E00\u89A7\u53D6\u5F97\u306E\u30DA\u30FC\u30B8\u30F3\u30B0\u51E6\u7406\u3092\u5171\u901A\u5316\u3059\u308B","2d70f4b test: \u4E00\u89A7\u30D5\u30A3\u30EB\u30BF\u306E\u56DE\u5E30\u30C6\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B",
|
|
1218
1218
|
"a6e2b38 fix(api): \u7A7A\u306E\u691C\u7D22\u6761\u4EF6\u3067\u5168\u4EF6\u8FD4\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B","7c40d51 chore(deps): \u958B\u767A\u4F9D\u5B58\u3092\u6700\u65B0\u3078\u66F4\u65B0\u3059\u308B","e83b1c6 docs: \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u624B\u9806\u306B Node 22 \u306E\u524D\u63D0\u3092\u8FFD\u8A18\u3059\u308B","b91f7a4 fix(ui): \u30E2\u30FC\u30C0\u30EB\u306E\u91CD\u306A\u308A\u9806\u3092\u6307\u5B9A\u3059\u308B","5a2c8e0 perf(api): \u4E00\u89A7\u306E N+1 \u3092\u89E3\u6D88\u3059\u308B",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-
|
|
4
|
-
import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-
|
|
3
|
+
import{PUNCH_TYPES,assertMonthOpen,attendanceDomain}from"./chunk-HKEW6XIC.js";import{dateFlag,monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-CADCERVL.js";import"./chunk-JJSBBWJ5.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import{isSafePathSegment}from"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";
|
|
4
|
+
import{requireResolved,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var CREATE_USAGE="twp attendance record create --date <YYYY-MM-DD> --time <HH:MM> --type <clock-in|clock-out|break-start|break-end|switch> [--project <\u30B3\u30FC\u30C9|ID>] [--task <\u30BF\u30B9\u30AFID>] [--memo <\u30E1\u30E2>]";var UPDATE_USAGE="twp attendance record update <\u8A18\u9332ID> --memo <\u30E1\u30E2> [--month <YYYY-MM>]";var DELETE_USAGE="twp attendance record delete <\u8A18\u9332ID> --reason <\u7406\u7531> --yes [--month <YYYY-MM>]";var MOVE_USAGE="twp attendance record move <\u8A18\u9332\
|
|
5
5
|
ID> --project <\u30B3\u30FC\u30C9|ID> [--month <YYYY-MM>]";var TEXT_MAX=500;var UUID_PATTERN=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;var TIME_PATTERN=/^(\d{2}):(\d{2})(?::(\d{2}))?$/;var CLOSED_REASON="\u30B5\u30FC\u30D0\u306F\u7DE0\u3081\u6E08\u307F\u306E\u6708\u3078\u306E\u4FEE\u6B63\u3092\u62D2\u5426\u305B\u305A\u7DE0\u3081\u306E\u96C6\u8A08\u3092\u6D17\u3044\u66FF\u3048\u308B\u306E\u3067\u3001CLI \u304C\u9001\u308B\u524D\u306B\u6B62\u3081\u3066\u3044\u307E\u3059\u3002";
|
|
6
6
|
var FORBIDDEN="\u81EA\u5206\u306E\u6253\u523B\u306E\u4FEE\u6B63\u306B\u306F\u6253\u523B\u4FEE\u6B63\u306E\u6A29\u9650\uFF08\u30E6\u30FC\u30B6\u30FC\u8A2D\u5B9A\u306E\u300C\u6253\u523B\u4FEE\u6B63\u300D\uFF09\u3068\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";var RECORD_COLUMNS=["id","type","type_label","recorded_at","year_month","project_id","t\
|
|
7
7
|
ask_id","memo","is_manual","deleted_at"];var LABELS={clock_in:"\u51FA\u52E4",clock_out:"\u9000\u52E4",break_start:"\u4F11\u61A9\u958B\u59CB",break_end:"\u4F11\u61A9\u7D42\u4E86",switch:"\u5207\u66FF"};var TYPE_ORDER={break_start:1,break_end:2,switch:3,clock_out:4,clock_in:5};function zonedParts(epochMs,timeZone){const parts=new Intl.DateTimeFormat("en-US",{timeZone,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}).formatToParts(new Date(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{hoursMinutes}from"./chunk-
|
|
4
|
-
import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-
|
|
3
|
+
import{hoursMinutes}from"./chunk-HKEW6XIC.js";import{monthFlag}from"./chunk-EXT4AIDF.js";import"./chunk-CADCERVL.js";import"./chunk-JJSBBWJ5.js";import"./chunk-RX5HWI4L.js";import"./chunk-6LSQCOCJ.js";import"./chunk-RSSPNFSK.js";import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-H4CDX4TX.js";import"./chunk-MI6HVYR2.js";import"./chunk-II5RVJQN.js";import"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";
|
|
4
|
+
import{ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";var MONTH_FLAG={name:"--month",summary:"\u5BFE\u8C61\u306E\u5E74\u6708\uFF08YYYY-MM\uFF09",takesValue:true,placeholder:"<YYYY-MM>"};var ME_FLAG={name:"--me",summary:"\u81EA\u5206\u306E\u5206\u3060\u3051\u3092\u8868\u793A\u3059\u308B\uFF08\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\u30FB\u7BA1\u7406\u8005\uFF09",takesValue:false};var FORBIDDEN_ADMIN="\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\u3002\u5168\u54E1\u5206\uFF08--me \u306A\u3057\uFF09\u306F\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\uFF08\u52E4\u6020: \u7BA1\u7406\u8005\uFF09\u3001\u81EA\u5206\u306E\u5206\uFF08--me\uFF09\u306F\u52E4\u6020\u306E\u5229\u7528\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u306E\u7BA1\u7406\u8005\u306B\u6A29\u9650\u306E\u4ED8\u4E0E\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044";
|
|
5
5
|
function listBody(spec,body){if(!isRecord(body)||!Array.isArray(body[spec.key])){throw new ApiResponseError(`${spec.label}\u306E\u5FDC\u7B54\u306B ${spec.key} \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function monthListOperation(spec){const usage=`twp ${spec.domain} list [--month <YYYY-MM>] [--me]`;return{name:"list",summary:`\u6708\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B\uFF08--me \u3067\u81EA\u5206\u306E\u5206\u30FB\u7121\u3051\u308C\u3070\u5168\u54E1\u5206\uFF1D\u7BA1\u7406\u8005\uFF09`,
|
|
6
6
|
usage,description:`GET ${spec.path} \u3092\u8868\u793A\u3057\u307E\u3059\uFF08\u5168\u54E1\u5206\u30FB\u52E4\u6020\u306E\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\uFF09\u3002--me \u3092\u4ED8\u3051\u308B\u3068 GET ${spec.path}/me\uFF08\u81EA\u5206\u306E\u5206\uFF09\u3067\u3059\u3002
|
|
7
7
|
--month \u304C\u7121\u3051\u308C\u3070\u4ECA\u6708\u3067\u3059\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u696D\u52D9\u65E5\u306E\u533A\u5207\u308A\u3067\u30B5\u30FC\u30D0\u304C\u6C7A\u3081\u307E\u3059\uFF09\u3002
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{CHECK_INTERVAL_MS,DISABLE_ENV,PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,describeAutoUpdate,isCheckDue,listRegisteredPids,lockFilePath,onStartup,pickNotice,readUpdateState,registerRunning,resolveCliPath,runDirPath,sameNpmPath,stateFilePath,workerEnv,writeUpdateState}from"./chunk-
|
|
3
|
+
import{CHECK_INTERVAL_MS,DISABLE_ENV,PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,describeAutoUpdate,isCheckDue,listRegisteredPids,lockFilePath,onStartup,pickNotice,readUpdateState,registerRunning,resolveCliPath,runDirPath,sameNpmPath,stateFilePath,workerEnv,writeUpdateState}from"./chunk-CH6QU76P.js";import"./chunk-DXXFUNYN.js";import"./chunk-5WGOHFAS.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-NHYMHCAT.js";
|
|
4
4
|
import"./chunk-VSJBJXZO.js";export{CHECK_INTERVAL_MS,DISABLE_ENV,PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,describeAutoUpdate,isCheckDue,listRegisteredPids,lockFilePath,onStartup,pickNotice,readUpdateState,registerRunning,resolveCliPath,runDirPath,sameNpmPath,stateFilePath,workerEnv,writeUpdateState};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-
|
|
4
|
-
import"./chunk-5WGOHFAS.js";import"./chunk-
|
|
3
|
+
import{fetchLatestVersion,isBehindLatest,resolveNpmCommand}from"./chunk-KZQGIM2C.js";import"./chunk-JQBXLZTJ.js";import"./chunk-D233KKXW.js";import"./chunk-PMOUHEJQ.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import{PARENT_PID_ENV,WORKER_ENV,autoUpdateDisabledReason,classifyInstall,isCheckDue,listRegisteredPids,lockFilePath,readUpdateState,resolveCliPath,runDirPath,writeUpdateState}from"./chunk-CH6QU76P.js";import{PACKAGE_NAME,parseVersionCore}from"./chunk-DXXFUNYN.js";
|
|
4
|
+
import"./chunk-5WGOHFAS.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import{stripTerminalControls}from"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";import{execFile}from"child_process";import fs from"fs";import path from"path";var PARENT_WAIT_MAX_MS=12*60*60*1e3;var PARENT_POLL_MS=1e3;var LOCK_STALE_MS=PARENT_WAIT_MAX_MS+60*60*1e3;var INSTALL_TIMEOUT_MS=0;function childEnv(env){const next={...env};delete next[WORKER_ENV];delete next[PARENT_PID_ENV];return next}function createNpmRunner(env=process.env){const cmd=resolveNpmCommand({env});if(cmd===null)return null;return(args,timeoutMs)=>new Promise(resolve=>{execFile(cmd.file,[...cmd.prefix,...args],{timeout:timeoutMs,windowsHide:true,maxBuffer:8*1024*1024,cwd:path.dirname(lockFilePath(env)),env:childEnv(env)},(error,stdout,stderr)=>{if(error===null){resolve({ok:true,stdout:String(stdout),stderr:String(
|
|
5
5
|
stderr)});return}const e=error;resolve({ok:false,stdout:String(stdout??""),stderr:String(stderr??""),...e.killed?{error:"\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F"}:typeof e.code==="string"?{error:e.code}:{}})})})}function summarizeNpmFailure(result){const text=`${result.stderr}
|
|
6
6
|
${result.stdout}`;const code=/npm (?:ERR!|error) code (\S+)/.exec(text)?.[1]??result.error;let reason;if(code==="EACCES"||code==="EPERM"){reason=`\u30B0\u30ED\u30FC\u30D0\u30EB\u306E\u5C0E\u5165\u5148\u306B\u66F8\u304D\u8FBC\u3080\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${code}\uFF09`}else if(code!==void 0&&/^(ENOTFOUND|ETIMEDOUT|ECONNREFUSED|ECONNRESET|EAI_AGAIN|ENETUNREACH)$/.test(code)){reason=`npm registry \u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08${code}\
|
|
7
7
|
\uFF09`}else if(code!==void 0){reason=`npm \u304C\u5931\u6557\u3057\u307E\u3057\u305F\uFF08${code}\uFF09`}else{const line=text.split("\n").map(l=>l.trim()).find(l=>l!=="")??"\u4E0D\u660E\u306A\u30A8\u30E9\u30FC";reason=`npm \u304C\u5931\u6557\u3057\u307E\u3057\u305F: ${line}`}return stripTerminalControls(reason).slice(0,200)}function readInstalledVersion(cliPath){try{const pkgRoot=path.dirname(path.dirname(cliPath));const pkg=JSON.parse(fs.readFileSync(path.join(pkgRoot,"package.json"),"utf8"));
|